% \DoNotIndex{\bibpreamble,\bibpunct,\bibsep}
% \DoNotIndex{\begin}
% \DoNotIndex{\bfseries}
+% \DoNotIndex{\bgroup}
% \DoNotIndex{\c@enumiv}
% \DoNotIndex{\catcode}
% \DoNotIndex{\centering}
% \DoNotIndex{\ifcase}
% \DoNotIndex{\ifmlastyle@bibstyle}
% \DoNotIndex{\ifmlastyle@format}
+% \DoNotIndex{\ifmlastyle@pages}
% \DoNotIndex{\ifmlastyle@papersize}
% \DoNotIndex{\ifmlastyle@style}
% \DoNotIndex{\ifmlastyle@times}
% \DoNotIndex{\mlastyle@formattrue}
% \DoNotIndex{\mlastyle@instructor}
% \DoNotIndex{\mlastyle@intbib}
+% \DoNotIndex{\mlastyle@pagesfalse}
+% \DoNotIndex{\mlastyle@pagestrue}
% \DoNotIndex{\mlastyle@papersizefalse}
% \DoNotIndex{\mlastyle@papersizetrue}
% \DoNotIndex{\mlastyle@qspread}
% \DoNotIndex{\parindent}
% \DoNotIndex{\parsep}
% \DoNotIndex{\penalty}
+% \DoNotIndex{\protected@xdef}
% \DoNotIndex{\relax}
% \DoNotIndex{\renewcommand}
% \DoNotIndex{\renewenvironment}
-% \DoNotIndex{\reset@font}
% \DoNotIndex{\rhead}
% \DoNotIndex{\selectfont}
% \DoNotIndex{\setlength}
% \DoNotIndex{\thepage}
% \DoNotIndex{\topsep}
% \DoNotIndex{\usecounter}
+% \DoNotIndex{\unskip}
% \DoNotIndex{\vskip}
% \DoNotIndex{\write}
% \DoNotIndex{\year}
% |\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
% 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}
\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
% \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}
% \end{macro}
% \subsubsection{Macros}
% \begin{macro}{\maketitle}
+% \begin{macro}{\and}
% |\maketitle| generates a heading in MLA format.
% \begin{macrocode}
\renewcommand{\maketitle}{\begin{flushleft}
\@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}
\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}
% 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}
% \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}
-\newcommand{\bibstyle@mlastyle}{\bibpunct[ ]{(}{)}{;}{a}{,}{;}
-\@ifundefined{chapter}
-{\gdef\refname{Works Cited}}
-{\gdef\bibname{Works Cited}}}
+\newcommand{\bibstyle@mlastyle}{%
+ \bibpunct[\mlastyle@space]{\mlastyle@brack(}{\mlastyle@brack)}%
+ {\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
+ \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}{\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}
% 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}
% 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}
-% \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\citealt{\def\@cite##1##2{##1\if@tempswa{}
- ##2\fi}\mlastyle@intcite}
- \let\citeN\citealt
- \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
- \newcommand\citepage[2][]{\citetext{#2}}
- \newcommand\citepageM[2][]{ \citetext{#2}}
- \newcommand\citeindirect[2][]{\citep[#1][qtd. in]{#2}}
- \newcommand\citeindirectM[2][]{ \citep[#1][qtd. in]{#2}}
+ \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][]{\unskip{} \citeyearpar[#1]{#2}}
+ \newcommand\citeindirect[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}
% 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}}