X-Git-Url: http://git.tpope.net/?p=latex-mlastyle.git;a=blobdiff_plain;f=mlastyle.dtx;h=dd60132c8bffee67a25d97bd19271409772644f5;hp=44a745eebd6d0039c4bbc7b74556a1d2e0c6b461;hb=b73d3016e6c6aad770d1d76e83628a6542b4b507;hpb=57a9b3a1169fcca83e2e33c902021272bc02b499 diff --git a/mlastyle.dtx b/mlastyle.dtx index 44a745e..dd60132 100644 --- a/mlastyle.dtx +++ b/mlastyle.dtx @@ -262,10 +262,10 @@ Schlegl", % \DoNotIndex{\parindent} % \DoNotIndex{\parsep} % \DoNotIndex{\penalty} +% \DoNotIndex{\protected@xdef} % \DoNotIndex{\relax} % \DoNotIndex{\renewcommand} % \DoNotIndex{\renewenvironment} -% \DoNotIndex{\reset@font} % \DoNotIndex{\rhead} % \DoNotIndex{\selectfont} % \DoNotIndex{\setlength} @@ -581,16 +581,6 @@ Schlegl", \fi \fi % \ifmlastyle@papersize % \end{macrocode} -% If the \Lopt{bibstyle} option is set, specify the bibliography style. -% \begin{macrocode} -\ifmlastyle@bibstyle - \ifmlastyle@style - \bibliographystyle{mlastyle} - \else - \bibliographystyle{plain} - \fi -\fi % \ifmlastyle@bibstyle -% \end{macrocode} % \begin{macro}{\UL@onin} % Load the \package{ulem} package if the \Lopt{underline} option is set. % By default, \package{ulem} does multiple underlining for nested @@ -629,7 +619,7 @@ Schlegl", % \begin{macrocode} \def\surname#1{\gdef\mlastyle@surname{#1}} \def\mlastyle@surname{\def\ml@##1 ##2,##3@@{##2}% - \expandafter\ml@\@author, ,@@} + \def\and##1 {\unskip, }\expandafter\ml@\@author, ,@@} \let\lastname\surname % \end{macrocode} % \end{macro} @@ -646,6 +636,7 @@ Schlegl", % \end{macro} % \subsubsection{Macros} % \begin{macro}{\maketitle} +% \begin{macro}{\and} % |\maketitle| generates a heading in MLA format. % \begin{macrocode} \renewcommand{\maketitle}{\begin{flushleft} @@ -655,8 +646,10 @@ Schlegl", \@date\end{flushleft} \begin{center}\@title\end{center}\par } + \let\and\par % \end{macrocode} % \end{macro} +% \end{macro} % \begin{macro}{\today} % |\today| is redefined to DD~Mon.~YYYY format. % \begin{macrocode} @@ -887,29 +880,35 @@ Schlegl", % \subsection{Style} % \begin{macro}{\bibstyle@mlastyle} % This first block is the beginnings of an implementation for -% \package{natbib}. +% \package{natbib}. (Surely there is a better way.) % \begin{macrocode} -\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}{,} + {\unskip;}{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} + \ifnum\NAT@ctype=1{} \fi\else{} \fi} +% \ifNAT@par\ifNAT@swa{} \fi\else{} \fi\fi\else{} \fi} + \gdef\citetext##1{(##1)} \@ifundefined{chapter} {\gdef\refname{Works Cited}} {\gdef\bibname{Works Cited}}} % \end{macrocode} +% \end{macro} +% \begin{macro}{\mlastyle@notitle} +% This hack represents an empty title in the MLA bibliography style. +% \begin{macrocode} +\def\mlastyle@notitle + { \ \ \ \ \unskip\unskip\unskip\unskip\unskip} +\RequirePackage{natbib} +\newif\ifmlastyle@pages +\renewcommand\NAT@citetp +{\@ifnextchar[{\mlastyle@pagestrue\NAT@@citetp}% + {\mlastyle@pagesfalse\NAT@@citetp[]}} +% \end{macrocode} %\end{macro} % \begin{macro}{\cite} % \begin{macro}{\citealp} @@ -924,7 +923,7 @@ Schlegl", % The original |\cite| is stored % in |\mlastyle@intcite|. % \begin{macrocode} -\let\mlastyle@intcite\cite +%\let\mlastyle@intcite\cite % \end{macrocode} % \end{macro} % \begin{macro}{\mlastyle@relax} @@ -935,92 +934,49 @@ Schlegl", % \end{macrocode} % \end{macro} % \subsubsection{MLA Style} -% \begin{macro}{\@cite} % \begin{macro}{\citeM} % If the \Lopt{mla} or \Lopt{style} options are used, the following is % executed. % \begin{macrocode} \ifmlastyle@style -\ifx\@undefined\citet - \def\@cite#1#2{(#1\if@tempswa{} #2\fi)} - \def\cite{\def\@cite##1##2{(##1\if@tempswa{} - ##2\fi)}\mlastyle@intcite} - \def\citealp{\def\@cite##1##2{##1\if@tempswa{} - ##2\fi}\mlastyle@intcite} - \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} - \def\citepageM{\def\@cite##1##2{\if@tempswa{} - (##2)\fi}\mlastyle@intcite} - \def\citeindirect{\def\@cite##1##2% - {(qtd. in ##1\if@tempswa{} ##2\fi)}\mlastyle@intcite} - \def\citeindirectM{\def\@cite##1##2% - { (qtd. in ##1\if@tempswa{} ##2\fi)}\mlastyle@intcite} - \let\citeC\mlastyle@relax % \end{macrocode} -% \end{macro} -% \end{macro} -% \iffalse -% Place commas in-between citations in the same |\citeyear|, |\citeyearNP|, -% |\citeN|, or |\shortciteN| command. -% Use something like |\citeN{ref1,ref2,ref3}| and |\citeN{ref4}| for a list. -% -% \@citedata and \@citedatax: -% \def\@citedata{% -% \@ifnextchar [{\@tempswatrue\@citedatax}% -% {\@tempswafalse\@citedatax[]}% -% } -% \def\@citedatax[#1]#2{% -% \let\@citea\@empty -% \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi% -% \def\@citea{}\@cite{\@for\@citeb:=#2\do% -% {\@citea\def\@citea{; }\@ifundefined% by Young -% {b@\@citeb}{{\bf ?}% -% \@warning{Citation `\@citeb' on page \thepage \space undefined}}% -% {\csname b@\@citeb\endcsname}}}{#1}}% -% \fi -% \begin{macro}{\@citex} -% This is the original |\@citex| from \LaTeX{} modified to use semicolons. -% \begin{macrocode} -\def\@citex[#1]#2{% - \let\@citea\@empty - \@cite{\@for\@citeb:=#2\do - {\@citea\def\@citea{;\penalty-1\ }% - \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% - \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi - \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}% - \G@refundefinedtrue - \@latex@warning - {Citation `\@citeb' on page \thepage \space undefined}}% - {{\csname b@\@citeb\endcsname}}}}{#1}} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@biblabel} -% No labels in the bibliography. +% If the \Lopt{bibstyle} option is set, specify the bibliography style. % \begin{macrocode} - \def\@biblabel#1{#1} - \labelsep\z@ - \let\mlastyle@intbib\thebibliography - \def\thebibliography#1{\mlastyle@intbib{#1} - \itemindent-\leftmargin\def\@biblabel##1{}} + \ifmlastyle@bibstyle + \bibliographystyle{mlastyle} + \fi % \end{macrocode} % \end{macro} -% Title either the bibliography or the references ``Works Cited,'' -% depending on the document class. % \begin{macrocode} - \@ifundefined{chapter} - {\renewcommand\refname{Works Cited}} - {\renewcommand\bibname{Works Cited}} -\else \let\cite\citep + \let\mlastyle@citequeue\empty + \def\mlastyle@cite#1#2#3{\csname#1\endcsname[#2]{#3}} + \newcommand\citeflush{\ifhmode\unskip\fi + \ifx\mlastyle@citequeue\@empty\else{} \let\@citea\relax + \citetext{\@for\@citeb:=\mlastyle@citequeue\do{\@citea + \expandafter\mlastyle@cite\@citeb\def\@citea{\NAT@sep\ }}}% + \global\let\mlastyle@citequeue\@empty\fi} + \newcommand\mlastyle@citeadd[3]{\ifx\mlastyle@citequeue\@empty + \xdef\mlastyle@citequeue{{#1}{#2}{#3}}\else + \xdef\mlastyle@citequeue{\mlastyle@citequeue,% + {#1}{#2}{#3}}\fi} + \newcommand\citeadd[2][]{\mlastyle@citeadd{citealp}{#1}{#2}} + \newcommand\citea{\@ifstar + {\let\mlastyle@star*\mlastyle@citea} + {\let\mlastyle@star\empty\mlastyle@citea}} + \newcommand\mlastyle@citea[2][]{\expandafter\citeauthor + \mlastyle@star{#2}\mlastyle@citeadd{citeyear}{#1}{#2}} + \newcommand\Citea{\@ifstar + {\let\mlastyle@star*\mlastyle@Citea} + {\let\mlastyle@star\empty\mlastyle@Citea}} + \newcommand\mlastyle@Citea[2][]{\expandafter\Citeauthor + \mlastyle@star{#2}\mlastyle@citeadd{citeyear}{#1}{#2}} \newcommand\citepage[2][]{\citeyearpar[#1]{#2}} - \newcommand\citepageM[2][]{ \citetext{#2}} + \newcommand\citepageM[2][]{\unskip{} \citeyearpar[#1]{#2}} \newcommand\citeindirect[2][]{\citep[qtd.\ in][#1]{#2}} - \newcommand\citeindirectM[2][]{ \citep[qtd.\ in][#1]{#2}} + \newcommand\citeindirectM[2][]{\unskip{} \citep[qtd.\ in][#1]{#2}} \let\citeN\citealp \let\citeC\mlastyle@relax -\fi % \end{macrocode} % % ^^A% Define the command \workscited{bib}{style}{nocite} @@ -1043,6 +999,12 @@ Schlegl", % set. % \begin{macrocode} \else +% \end{macrocode} +% If the \Lopt{bibstyle} option is set, specify the bibliography style. +% \begin{macrocode} + \ifmlastyle@bibstyle + \bibliographystyle{plain} + \fi \ifx\@undefined\citet \newcommand{\mlastyle@cite}[2][]{\@tempswafalse\@citex[]{#2}} \newcommand{\citeC}[2][]{~\@tempswafalse\@citex[]{#2}}