From: Tim Pope Date: Wed, 19 Nov 2003 06:56:18 +0000 (+0000) Subject: MAJOR modifications to accomodate natbib X-Git-Url: http://git.tpope.net/?p=latex-mlastyle.git;a=commitdiff_plain;h=57a9b3a1169fcca83e2e33c902021272bc02b499 MAJOR modifications to accomodate natbib --- diff --git a/mlastyle.bst b/mlastyle.bst index d0c322d..aedb136 100644 --- a/mlastyle.bst +++ b/mlastyle.bst @@ -41,7 +41,7 @@ ENTRY { author.duplicate author.shared } { label } -INTEGERS { output.state before.all mid.sentence after.sentence after.block after.title author.different author.last author.flast citealt.used url.used } +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.title author.different author.last author.flast citealp.used url.used } % Rearranged such that true values require capital letters FUNCTION {init.consts} @@ -56,7 +56,7 @@ FUNCTION {init.consts} #2 'author.flast := %#3 'author.firstlast := - #0 'citealt.used := + #0 'citealp.used := #0 'url.used := } @@ -217,7 +217,7 @@ FUNCTION {field.or.null} FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } - { "{\em " swap$ * "}" * } + { "\emph{" swap$ * "}" * } if$ } @@ -641,7 +641,7 @@ FUNCTION {format.article.crossref} %} %{ "In " key * } %if$ - pages empty$ { " \citealt" } { " \citealt[" format.chapter.pages * "]" * } if$ + pages empty$ { " \citealp" } { " \citealp[" format.chapter.pages * "]" * } if$ "{" * crossref * "}" * } @@ -687,7 +687,7 @@ FUNCTION {format.book.crossref} % } % { format.crossref.editor * } % if$ - pages empty$ { " \citealt" } { " \citealt[" format.chapter.pages * "]" * } if$ + pages empty$ { " \citealp" } { " \citealp[" format.chapter.pages * "]" * } if$ "{" * crossref * "}" * } @@ -709,7 +709,7 @@ FUNCTION {format.incoll.inproc.crossref} % } % { "In " format.crossref.editor * } % if$ - pages empty$ { " \citealt" } { " \citealt[" format.chapter.pages * "]" * } if$ + pages empty$ { " \citealp" } { " \citealp[" format.chapter.pages * "]" * } if$ "{" * crossref * "}" * } @@ -762,21 +762,24 @@ FUNCTION {cite.label} { author } if$ duplicate$ empty$ - { pop$ cite.title } + { cite.title * "( \ \ \ \ \unskip\unskip\unskip\unskip\unskip \unskip)" * } { author.shared author.different = - { "{vv~}{ll}" format.names.custom } + { "{vv~}{ll}" format.names.custom 's := } { author.shared author.last = - { "{f.~}{vv~}{ll}{, jj}" format.names.custom } + { "{f.~}{vv~}{ll}{, jj}" format.names.custom 's := } { author.shared author.flast = - { "{ff~}{vv~}{ll}{, jj}" format.names.custom } - { "{vv~}{ll}" format.names.custom ", " * cite.title * } + { "{ff~}{vv~}{ll}{, jj}" format.names.custom 's := } + { "{vv~}{ll}" format.names.custom ", " * cite.title * 's := "WTF" warning$ } if$ } if$ } if$ - author.duplicate { "(" * cite.title * ")" }{ "( )" * } if$ + s + "( \ \ \ \ \unskip\unskip\unskip\unskip\unskip " * + author.duplicate { cite.title * }{ "\unskip" * } if$ + ")" * s * } if$ %} @@ -1367,7 +1370,7 @@ FUNCTION {init.vars} FUNCTION {forward.author.dup.check} { url empty$ 'skip$ { url.used #1 + 'url.used := } if$ - crossref empty$ 'skip$ { citealt.used #1 + 'citealt.used := } if$ + crossref empty$ 'skip$ { citealp.used #1 + 'citealp.used := } if$ author empty$ { editor empty$ { organization field.or.null 'a := }{ editor 'a :=} if$} { author 'a := } @@ -1461,8 +1464,8 @@ REVERSE {reverse.author} FUNCTION {begin.bib} { - citealt.used - { "\ifx\undefined\citealt\let\citealt\cite\fi" write$ newline$ } + citealp.used + { "\ifx\undefined\citealp\let\citealp\cite\fi" write$ newline$ } 'skip$ if$ url.used diff --git a/mlastyle.dtx b/mlastyle.dtx index 7033be8..44a745e 100644 --- a/mlastyle.dtx +++ b/mlastyle.dtx @@ -162,6 +162,7 @@ Schlegl", % \DoNotIndex{\bibpreamble,\bibpunct,\bibsep} % \DoNotIndex{\begin} % \DoNotIndex{\bfseries} +% \DoNotIndex{\bgroup} % \DoNotIndex{\c@enumiv} % \DoNotIndex{\catcode} % \DoNotIndex{\centering} @@ -196,6 +197,7 @@ Schlegl", % \DoNotIndex{\ifcase} % \DoNotIndex{\ifmlastyle@bibstyle} % \DoNotIndex{\ifmlastyle@format} +% \DoNotIndex{\ifmlastyle@pages} % \DoNotIndex{\ifmlastyle@papersize} % \DoNotIndex{\ifmlastyle@style} % \DoNotIndex{\ifmlastyle@times} @@ -226,6 +228,8 @@ Schlegl", % \DoNotIndex{\mlastyle@formattrue} % \DoNotIndex{\mlastyle@instructor} % \DoNotIndex{\mlastyle@intbib} +% \DoNotIndex{\mlastyle@pagesfalse} +% \DoNotIndex{\mlastyle@pagestrue} % \DoNotIndex{\mlastyle@papersizefalse} % \DoNotIndex{\mlastyle@papersizetrue} % \DoNotIndex{\mlastyle@qspread} @@ -276,6 +280,7 @@ Schlegl", % \DoNotIndex{\thepage} % \DoNotIndex{\topsep} % \DoNotIndex{\usecounter} +% \DoNotIndex{\unskip} % \DoNotIndex{\vskip} % \DoNotIndex{\write} % \DoNotIndex{\year} @@ -460,7 +465,7 @@ Schlegl", % |\cite|\oarg{pages}|{|\meta{marker % 1}\texttt{,}\penalty\exhyphenpenalty\meta{marker 2}\ldots|}|; however, page % numbers can currently be specified only for the last referenced source. -% To work around this limitation, use |\citealt|, explained below. +% To work around this limitation, use |\citealp|, explained below. % % Three additional citation commands are provided, all of which take the % same arguments as |\cite|. To omit the author information from the @@ -468,10 +473,10 @@ Schlegl", % citations---those of the format \examp{(qtd. in Pope % \pageref{sec:italics})}---can be % created with \DescribeMacro{\citeindirect}|\citeindirect|. Finally, the -% parentheses are omitted by \DescribeMacro{\citealt}|\citealt|. This was +% parentheses are omitted by \DescribeMacro{\citealp}|\citealp|. This was % intended for use in cross references, but it can also help in citing % multiple works. The result of -% |(\citealt[42]{texbook}|\texttt{; }|\citealt[69]{latexdps})| +% |(\citealp[42]{texbook}|\texttt{; }|\citealp[69]{latexdps})| % would be something like \examp[.]{(Knuth 42; Lamport 69)} % % \subsubsection{Using {\rm \BibTeX}} \label{sec:bibtex} @@ -783,6 +788,12 @@ Schlegl", \def\@listvi{\leftmargin\leftmarginvi \parsep\z@\itemsep\z@\topsep -3\p@\relax} % \end{macrocode} +% Only one space after colons. +% \begin{macrocode} +\ifnum\the\sfcode`\:=2000 + \sfcode`\:=1999 +\fi +% \end{macrocode} % \subsubsection{Header} % The last name and page number appear on every page, including the first. % \begin{macrocode} @@ -826,9 +837,12 @@ Schlegl", % The definition of |\thebibliography| varies depending on the document % class. % \begin{macrocode} -\ifx\@undefined\url - \def\url#1{{\catcode`/=13\let/=\mlastyle@slash#1}} -\fi +\ifx\@undefined\url{ + \catcode`/=13 + \gdef\url{\bgroup\catcode`/=13 + \let/\slash\mlastyle@url} + \gdef\mlastyle@url#1{#1\egroup} +}\fi \ifx\@undefined\citet \@ifundefined{chapter} % \end{macrocode} @@ -875,21 +889,35 @@ Schlegl", % This first block is the beginnings of an implementation for % \package{natbib}. % \begin{macrocode} -\newcommand{\bibstyle@mlastyle}% -{\bibpunct[ ]{(}{)}{;}{a}{\mlastyle@comma}{,} -\gdef\mlastyle@comma{\ifx\NAT@date\space\def\NAT@date{\unskip}\else,\fi} -\@ifundefined{chapter} -{\gdef\refname{Works Cited}} -{\gdef\bibname{Works Cited}}} +\def\mlastyle@notitle + { \ \ \ \ \unskip\unskip\unskip\unskip\unskip\unskip} +\newif\ifmlastyle@pages +\renewcommand\NAT@citetp +{\@ifnextchar[{\mlastyle@pagestrue\NAT@@citetp}% + {\mlastyle@pagesfalse\NAT@@citetp[]}} +\newcommand{\bibstyle@mlastyle}{% + \bibpunct[\mlastyle@space]{\mlastyle@brack(}{\mlastyle@brack)}% + {;}{a}{\mlastyle@comma}{,} + \gdef\mlastyle@brack##1{\ifx\NAT@date\mlastyle@notitle + \ifmlastyle@pages ##1\else\ifNAT@swa\ifnum + \NAT@ctype=0 ##1\else\unskip\fi\else\unskip\fi\fi\else ##1\fi} + \gdef\mlastyle@comma{\ifx\NAT@date\mlastyle@notitle\else,\fi} + \gdef\mlastyle@space{\ifx\NAT@date\mlastyle@notitle{}\else{} \fi} + \gdef\mlastyle@space{\ifx\NAT@date\mlastyle@notitle + \ifnum\NAT@ctype<2 + \ifNAT@par\ifNAT@swa{} \fi\else{} \fi\fi\else{} \fi} + \@ifundefined{chapter} + {\gdef\refname{Works Cited}} + {\gdef\bibname{Works Cited}}} % \end{macrocode} %\end{macro} % \begin{macro}{\cite} -% \begin{macro}{\citealt} +% \begin{macro}{\citealp} % ^^A\begin{macro}{\citepage} % ^^A\begin{macro}{\citequote} % The following macros, combined with \file{mlastyle.bst}, provide % for a bibliography in MLA style. Note that the definition of |\cite|, -% |\citealt|, etc.\ vary depending on the options passed to +% |\citealp|, etc.\ vary depending on the options passed to % \package{mlastyle}. % % \begin{macro}{\mlastyle@intcite} @@ -903,7 +931,7 @@ Schlegl", % This macro does nothing. Depending on the options, either |\citeC| or % |\citeM| and its ilk will utilize it. % \begin{macrocode} -\newcommand{\mlastyle@relax}[2][]{} +\newcommand{\mlastyle@relax}[2][]{\unskip} % \end{macrocode} % \end{macro} % \subsubsection{MLA Style} @@ -917,9 +945,9 @@ Schlegl", \def\@cite#1#2{(#1\if@tempswa{} #2\fi)} \def\cite{\def\@cite##1##2{(##1\if@tempswa{} ##2\fi)}\mlastyle@intcite} - \def\citealt{\def\@cite##1##2{##1\if@tempswa{} + \def\citealp{\def\@cite##1##2{##1\if@tempswa{} ##2\fi}\mlastyle@intcite} - \let\citeN\citealt + \let\citeN\citealp \def\citeM{\def\@cite##1##2{ (##1\if@tempswa{} ##2\fi)}\mlastyle@intcite} \def\citepage{\def\@cite##1##2{\if@tempswa(##2)\fi}\mlastyle@intcite} @@ -986,10 +1014,11 @@ Schlegl", {\renewcommand\bibname{Works Cited}} \else \let\cite\citep - \newcommand\citepage[2][]{\citeyearpar[\unskip #1]{#2}} + \newcommand\citepage[2][]{\citeyearpar[#1]{#2}} \newcommand\citepageM[2][]{ \citetext{#2}} - \newcommand\citeindirect[2][]{\citep[#1][qtd. in]{#2}} - \newcommand\citeindirectM[2][]{ \citep[#1][qtd. in]{#2}} + \newcommand\citeindirect[2][]{\citep[qtd.\ in][#1]{#2}} + \newcommand\citeindirectM[2][]{ \citep[qtd.\ in][#1]{#2}} + \let\citeN\citealp \let\citeC\mlastyle@relax \fi % \end{macrocode}