X-Git-Url: http://git.tpope.net/?p=latex-mlastyle.git;a=blobdiff_plain;f=mlastyle.dtx;h=3b84a1c3f3c331a8ec436a977d8081bb12b61479;hp=44a745eebd6d0039c4bbc7b74556a1d2e0c6b461;hb=2ad77387b5fe38fa970037a791995fad800cb848;hpb=57a9b3a1169fcca83e2e33c902021272bc02b499 diff --git a/mlastyle.dtx b/mlastyle.dtx index 44a745e..3b84a1c 100644 --- a/mlastyle.dtx +++ b/mlastyle.dtx @@ -88,7 +88,7 @@ Schlegl", {\newcommand{\examp}[2][]{``##2##1''}} {\makeatletter\gdef\NAT@MLA#1{#1}\gdef\NAT@idxtxt -{\expandafter\NAT@MLA\NAT@name\ \NAT@open\NAT@num\NAT@close}} +{\expandafter\NAT@MLA\NAT@name{} \NAT@open\NAT@num\NAT@close}} \EnableCrossrefs \CodelineIndex \RecordChanges @@ -123,46 +123,63 @@ Schlegl", % % \GetFileInfo{mlastyle.sty} % -% \DoNotIndex{\ } -% \DoNotIndex{\.} -% \DoNotIndex{\@afterindentfalse} -% \DoNotIndex{\@afterindenttrue} +% \makeatletter ^^A Get |\ | out of my index, damn it! +% \def\DoNotIndex{\begingroup \MakePrivateLetters +% \catcode`\\12 +% \catcode`\ 12 +% \do@not@index} +% \index@excludelist{\ } +% \makeatother +% \DoNotIndex{\ ,\:,\/,\.} +% \DoNotIndex{\@afterindentfalse,\@afterindenttrue} % \DoNotIndex{\@arabic} % \DoNotIndex{\@author} % \DoNotIndex{\@auxout} -% \DoNotIndex{\@citea} -% \DoNotIndex{\@citeb} +% \DoNotIndex{\@biblabel,\@citea,\@citeb,\@citex} % \DoNotIndex{\@date} % \DoNotIndex{\@empty} -% \DoNotIndex{\@firstofone} % \DoNotIndex{\@for} -% \DoNotIndex{\@ifundefined} +% \DoNotIndex{\@ifnextchar,\@ifstar,\@ifundefined} % \DoNotIndex{\@latex@warning} % \DoNotIndex{\@listI} -% \DoNotIndex{\@listi} -% \DoNotIndex{\@listii} -% \DoNotIndex{\@listiii} -% \DoNotIndex{\@listiv} -% \DoNotIndex{\@listv} -% \DoNotIndex{\@listvi} +% \DoNotIndex{\@listi,\@listii,\@listiii} +% \DoNotIndex{\@listiv,\@listv,\@listvi} % \DoNotIndex{\@m} +% \DoNotIndex{\@noitemerr} +% \DoNotIndex{\@setfontsize} % \DoNotIndex{\@startsection} % \DoNotIndex{\@tempswafalse} % \DoNotIndex{\@title} % \DoNotIndex{\@undefined} +% \DoNotIndex{\@xiipt} +% \DoNotIndex{\@width,\@height,\@depth} +% \DoNotIndex{\@minus,\@plus} % \DoNotIndex{\DeclareOption} % \DoNotIndex{\ExecuteOptions} % \DoNotIndex{\G@refundefinedtrue} +% \DoNotIndex{\NAT@@citetp,\NAT@citetp,\NAT@ctype,\NAT@date,\NAT@sep} +% \DoNotIndex{\hyper@natlinkbreak,\hyper@natlinkend,\hyper@natlinkstart} +% \DoNotIndex{\@citec,\@extra@b@citeb,\@firstofone,\@namedef} +% \DoNotIndex{\NAT@@close,\NAT@@open,\NAT@alias,\NAT@all@names,\NAT@aysep} +% \DoNotIndex{\NAT@cite@list,\NAT@citeundefined,\NAT@cmt,\NAT@exlab} +% \DoNotIndex{\NAT@last@nm,\NAT@last@yr,\NAT@name,\NAT@nm,\NAT@nmfmt} +% \DoNotIndex{\NAT@parse,\NAT@sort@cites,\NAT@temp,\NAT@year,\NAT@yrsep} +% \DoNotIndex{\ifNAT@par,\ifNAT@swa,\ifNAT@full,\ifNAT@longnames} +% \DoNotIndex{\PackageWarning,\PackageWarningNoLine,\MessageBreak} % \DoNotIndex{\ProcessOptions} % \DoNotIndex{\RequirePackage} % \DoNotIndex{\UL@start,\UL@stop} +% \DoNotIndex{\url@samestyle,\urlstyle,\UrlBigBreaks,\UrlBreakPenalty} +% \DoNotIndex{\do@url@hyp} +% \DoNotIndex{\abovedisplayskip,\abovedisplayshortskip} +% \DoNotIndex{\belowdisplayshortskip,\belowdisplayskip} % \DoNotIndex{\addtolength} % \DoNotIndex{\advance} % \DoNotIndex{\baselineskip} % \DoNotIndex{\bibpreamble,\bibpunct,\bibsep} % \DoNotIndex{\begin} % \DoNotIndex{\bfseries} -% \DoNotIndex{\bgroup} +% \DoNotIndex{\bgroup,\egroup,\begingroup,\endgroup} % \DoNotIndex{\c@enumiv} % \DoNotIndex{\catcode} % \DoNotIndex{\centering} @@ -171,14 +188,15 @@ Schlegl", % \DoNotIndex{\citation} % \DoNotIndex{\citet,\citep} % \DoNotIndex{\clearpage} +% \DoNotIndex{\color@begingroup,\color@endgroup} % \DoNotIndex{\csname} % \DoNotIndex{\day} % \DoNotIndex{\def} % \DoNotIndex{\do} % \DoNotIndex{\edef} -% \DoNotIndex{\egroup} % \DoNotIndex{\else} % \DoNotIndex{\end} +% \DoNotIndex{\endnote,\footnote} % \DoNotIndex{\endcsname} % \DoNotIndex{\endlist} % \DoNotIndex{\exhyphenpenalty} @@ -190,11 +208,13 @@ Schlegl", % \DoNotIndex{\futurelet} % \DoNotIndex{\gdef} % \DoNotIndex{\global} +% \DoNotIndex{\hbox,\hfill,\hrule} % \DoNotIndex{\hangindent} -% \DoNotIndex{\headrulewidth} +% \DoNotIndex{\headrulewidth,\footrulewidth} +% \DoNotIndex{\ignorespaces} % \DoNotIndex{\if@filesw} % \DoNotIndex{\if@tempswa} -% \DoNotIndex{\ifcase} +% \DoNotIndex{\if,\ifcase,\ifcat,\ifdim,\ifhmode,\ifnum,\ifx} % \DoNotIndex{\ifmlastyle@bibstyle} % \DoNotIndex{\ifmlastyle@format} % \DoNotIndex{\ifmlastyle@pages} @@ -202,21 +222,24 @@ Schlegl", % \DoNotIndex{\ifmlastyle@style} % \DoNotIndex{\ifmlastyle@times} % \DoNotIndex{\ifmlastyle@underline} -% \DoNotIndex{\ifx} % \DoNotIndex{\immediate} +% \DoNotIndex{\insert,\insertpenalties} % \DoNotIndex{\item} % \DoNotIndex{\itemindent} % \DoNotIndex{\itemsep} -% \DoNotIndex{\labelsep} -% \DoNotIndex{\labelwidth} +% \DoNotIndex{\kern} +% \DoNotIndex{\labelsep,\labelwidth} +% \DoNotIndex{\lastname,\citeN} +% \DoNotIndex{\leaders} % \DoNotIndex{\leavevmode} % \DoNotIndex{\leftmargin} % \DoNotIndex{\leftmargini,\leftmarginii,\leftmarginiii} % \DoNotIndex{\leftmarginiv,\leftmarginv,\leftmarginvi} -% \DoNotIndex{\let} +% \DoNotIndex{\let,\long} % \DoNotIndex{\linespread} % \DoNotIndex{\list} % \DoNotIndex{\listparindent} +% \DoNotIndex{\mathchardef} % \DoNotIndex{\makeenmark} % \DoNotIndex{\mbox} % \DoNotIndex{\ml@} @@ -228,15 +251,18 @@ Schlegl", % \DoNotIndex{\mlastyle@formattrue} % \DoNotIndex{\mlastyle@instructor} % \DoNotIndex{\mlastyle@intbib} +% \DoNotIndex{\mlastyle@intnfs} % \DoNotIndex{\mlastyle@pagesfalse} % \DoNotIndex{\mlastyle@pagestrue} % \DoNotIndex{\mlastyle@papersizefalse} % \DoNotIndex{\mlastyle@papersizetrue} +% \DoNotIndex{\mlastyle@prevsplit} % \DoNotIndex{\mlastyle@qspread} % \DoNotIndex{\mlastyle@sl@sh} % \DoNotIndex{\mlastyle@slash} % \DoNotIndex{\mlastyle@slashnext} % \DoNotIndex{\mlastyle@slashx} +% \DoNotIndex{\mlastyle@star} % \DoNotIndex{\mlastyle@stylefalse} % \DoNotIndex{\mlastyle@styletrue} % \DoNotIndex{\mlastyle@surname} @@ -244,6 +270,7 @@ Schlegl", % \DoNotIndex{\mlastyle@timestrue} % \DoNotIndex{\mlastyle@underlinefalse} % \DoNotIndex{\mlastyle@underlinetrue} +% \DoNotIndex{\mlastyle@urldate} % \DoNotIndex{\month} % \DoNotIndex{\newblock} % \DoNotIndex{\newcommand} @@ -262,12 +289,15 @@ Schlegl", % \DoNotIndex{\parindent} % \DoNotIndex{\parsep} % \DoNotIndex{\penalty} +% \DoNotIndex{\protected@xdef} % \DoNotIndex{\relax} +% \DoNotIndex{\relpenalty} % \DoNotIndex{\renewcommand} % \DoNotIndex{\renewenvironment} -% \DoNotIndex{\reset@font} % \DoNotIndex{\rhead} -% \DoNotIndex{\selectfont} +% \DoNotIndex{\reset@font,\selectfont} +% \DoNotIndex{\rule,\strut,\strutbox} +% \DoNotIndex{\splittopskip} % \DoNotIndex{\setlength} % \DoNotIndex{\settowidth} % \DoNotIndex{\sfcode} @@ -281,14 +311,16 @@ Schlegl", % \DoNotIndex{\topsep} % \DoNotIndex{\usecounter} % \DoNotIndex{\unskip} -% \DoNotIndex{\vskip} +% \DoNotIndex{\vbox,\vskip,\vss} +% \DoNotIndex{\xdef} % \DoNotIndex{\write} % \DoNotIndex{\year} % \DoNotIndex{\z@} +% \DoNotIndex{\footnotesep,\footins,\@finalstrut,\@makefnmark} % \DoNotIndex{\bibhang} % \DoNotIndex{\evensidemargin} % \DoNotIndex{\headheight} -% \DoNotIndex{\headsep} +% \DoNotIndex{\headsep,\footskip} % \DoNotIndex{\hoffset} % \DoNotIndex{\marginparwidth} % \DoNotIndex{\oddsidemargin} @@ -581,16 +613,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,23 +651,300 @@ 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} +% \begin{macro}{\urldate} +% \begin{macro}{\theurldate} +% These next two respectively set and get the default access date for URLs +% in the works cited. +% \begin{macrocode} +\def\urldate#1{\gdef\mlastyle@urldate{#1}} +\def\theurldate{\mlastyle@urldate} +\let\mlastyle@urldate\@date +% \end{macrocode} +% \end{macro} +% \end{macro} +% \subsection{Style} +% \begin{macro}{\bibstyle@mlastyle} +% This first block is the beginnings of an implementation for +% \package{natbib}. (Surely there is a better way to do this.) +% \begin{macrocode} +\newcommand{\bibstyle@mlastyle}{% + \bibpunct[ ]{(}{)}{;}{a}{,}{,} + \@ifundefined{chapter} + {\gdef\refname{Works Cited}} + {\gdef\bibname{Works Cited}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\NAT@citex} +% The year field is normally empty but contains the title field if it is +% needed. This is handled inconsistantly by \package{natbib}, so it is +% fixed up here. +% \begin{macrocode} +\RequirePackage{natbib} +\def\NAT@citex + [#1][#2]#3{% + \NAT@sort@cites{#3}% + \let\@citea\@empty + \let\@citec\@empty + \ifNAT@swa + \if*#1*\if*#2*\def\@citea{\def\@citec{\NAT@@close}\NAT@@open}\else + \NAT@@open\def\@citea{\def\@citec + {\NAT@cmt#2\NAT@@close}}\def\@citec{#2\NAT@@close}\fi\else + \NAT@@open#1\ \if*#2*\def\@citec{\unskip\NAT@@close}\else + \def\@citec{#2\NAT@@close}\def\@citea{\def\@citec + {\NAT@cmt#2\NAT@@close}}\fi\fi + \fi + \let\NAT@nm\@empty\let\NAT@year\@empty + \@for\@citeb:=\NAT@cite@list\do + {\edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea% + {\reset@font\bfseries ?}\NAT@citeundefined + \PackageWarning{natbib}% + {Citation `\@citeb' on page \thepage \space undefined}% + \def\NAT@date{}}% + {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year + \NAT@parse{\@citeb}% + \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% + \let\NAT@name=\NAT@all@names + \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% + \fi + \ifNAT@full\let\NAT@nm\NAT@all@names\else + \let\NAT@nm\NAT@name\fi + \ifNAT@swa\ifcase\NAT@ctype + \if*\NAT@date* + \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}\NAT@date\hyper@natlinkend + \else + \ifx\NAT@last@nm\NAT@nm\NAT@yrsep + \ifx\NAT@last@yr\@empty\let\NAT@last@yr\relax\fi + \ifx\NAT@last@yr\NAT@year + \def\NAT@temp{{?}}% + \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% + {Multiple citation on page \thepage: same authors and + year\MessageBreak without distinguishing extra + letter,\MessageBreak appears as question mark}\fi + \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@exlab + \hyper@natlinkend + \else\unskip + \ \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@date + \hyper@natlinkend + \fi + \else\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{\NAT@aysep\ }{\@citeb\@extra@b@citeb}% + \NAT@date\hyper@natlinkend + \fi + \fi + \def\@citea{\NAT@sep\ }% + \or\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}\hyper@natlinkend + \def\@citea{\NAT@sep\ }% + \or\if*\NAT@date*\else + \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@date\hyper@natlinkend + \def\@citea{\NAT@sep\ }\fi + \or\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@alias\hyper@natlinkend + \def\@citea{\NAT@sep\ }% + \fi + \else\ifcase\NAT@ctype + \if*\NAT@date* + \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}\hyper@natlinkend + \if*#1*\def\@citea{\NAT@sep\ }% + \if*#2*\let\@citec\@empty\else + \def\@citec{\ \NAT@@open#2\NAT@@close}\fi + \else\ \NAT@@open\def\@citea{\NAT@@close\NAT@sep\ } + \if*#2*\def\@citec{\NAT@@close}\else + \def\@citec{\ #2\NAT@@close}\fi\fi + \else + \ifx\NAT@last@nm\NAT@nm\NAT@yrsep + \ifx\NAT@last@yr\NAT@year + \def\NAT@temp{{?}}% + \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% + {Multiple citation on page \thepage: same authors and + year\MessageBreak without distinguishing extra + letter,\MessageBreak appears as question mark}\fi + \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@exlab + \hyper@natlinkend + \else\unskip + \ \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@date + \hyper@natlinkend + \fi + \else\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{\ \NAT@@open\if*#1*\else#1\ \fi}% + {\@citeb\@extra@b@citeb}% + \NAT@date\hyper@natlinkend\fi + \if*#2*\def\@citec{\NAT@@close}\else + \def\@citec{\NAT@cmt#2\NAT@@close}\fi + \def\@citea{\NAT@@close\NAT@sep\ }% + \fi + \or\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}\hyper@natlinkend + \if*#2*\let\@citec\@empty\else + \def\@citec{ \NAT@@open#2\NAT@@close}\fi + \def\@citea{\NAT@sep\ }% + \or\if*\NAT@date*\else\@citea + \NAT@@open + \def\@citea{\NAT@@close\NAT@sep\ }% + \if*#2*\def\@citec{\NAT@@close}\else + \def\@citec{\NAT@cmt#2\NAT@@close}\fi + \hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@date\hyper@natlinkend\fi + \or\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@alias\hyper@natlinkend + \def\@citea{\NAT@sep\ }% + \fi + \fi + }}% + \@citec\ifhmode\unskip\fi\endgroup} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\NAT@parse@date} +% |\NAT@parse@date| fails if the date contains a control sequence, so it +% is also redefined. +% \begin{macrocode} +\def\NAT@parse@date#1#2#3#4#5#6@@{% + \ifcat\relax#1\def\NAT@year{}\def\NAT@exlab{}\else + \ifcat a#1\def\NAT@year{}\def\NAT@exlab{#1}\else + \ifcat a#2\def\NAT@year{#1}\def\NAT@exlab{#2}\else + \ifcat a#3\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else + \ifcat a#4\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else + \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi\fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\cite} +% \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|, +% |\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 +% \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][]{\unskip} +% \end{macrocode} +% \end{macro} +% \subsubsection{MLA Style} +% \begin{macro}{\citeM} +% If the \Lopt{mla} or \Lopt{style} options are used, the following is +% executed. +% \begin{macrocode} +\ifmlastyle@style +% \end{macrocode} +% If the \Lopt{bibstyle} option is set, specify the bibliography style. +% \begin{macrocode} + \ifmlastyle@bibstyle + \bibliographystyle{mlastyle} + \fi +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + \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][]{\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 +% \end{macrocode} +% \subsubsection{Plain Style} +% \begin{macro}{\citeC} +% This next block is used if the \Lopt{compat} or \Lopt{format} option is +% 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}} + \else + \newcommand{\mlastyle@cite}[2][]{\citep[]{#2}} + \def\citeC{ \citep} + \fi + \let\cite\mlastyle@cite + \let\citepage\mlastyle@cite + \let\citeindirect\mlastyle@cite + \let\citeM\mlastyle@relax + \let\citepageM\mlastyle@relax + \let\citeindirectM\mlastyle@relax +\fi +% \end{macrocode} +% \end{macro} +% +% ^^A\end{macro} +% ^^A\end{macro} +% \end{macro} +% \end{macro} % \subsection{Formatting} -% Formatting is done if the \Lopt{mla} or \Lopt{format} option is set. +% \begin{macro}{\urlstyle@mlastyle} +% This first bit is always done, even if formatting is disabled. % \begin{macrocode} -\ifmlastyle@format +\RequirePackage{url} +\def\url@mlastyle{\url@samestyle + \mathchardef\UrlBreakPenalty 0 + \relpenalty\UrlBreakPenalty + \def\UrlBigBreaks{\do\/\do@url@hyp} +} % \end{macrocode} +% \end{macro} % \begin{macro}{\mlastyle@i} % This is the standard MLA format indent. % \begin{macrocode} \newdimen\mlastyle@i \mlastyle@i=.5in % \end{macrocode} % \end{macro} +% Everything else is done only if the \Lopt{mla} or \Lopt{format} option +% is set. +% \begin{macrocode} +\ifmlastyle@format +% \end{macrocode} % \subsubsection{Macros} % \begin{macro}{\maketitle} +% \begin{macro}{\and} % |\maketitle| generates a heading in MLA format. % \begin{macrocode} \renewcommand{\maketitle}{\begin{flushleft} @@ -655,8 +954,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} @@ -666,14 +967,14 @@ Schlegl", % \end{macrocode} % \end{macro} % \begin{macro}{\slash} -% No penalty for |\slash|, and plain /'s permit line breaks if necessary. +% No penalty for |\slash|. % ^^A\let\mlastyle@sl@sh=/ % \begin{macrocode} - \def\slash{/\penalty\z@} - \def\mlastyle@slash{/\futurelet\mlastyle@slashnext\mlastyle@slashx} - \def\mlastyle@slashx{\ifx\mlastyle@slashnext/\else - \penalty\exhyphenpenalty\fi} + \edef\slash{/\penalty\z@} % \end{macrocode} +% ^^A \def\mlastyle@slash{/\futurelet\mlastyle@slashnext\mlastyle@slashx} +% ^^A \def\mlastyle@slashx{\ifx\mlastyle@slashnext/\else +% ^^A \penalty\exhyphenpenalty\fi} % \end{macro} % \begin{macro}{\section} % \begin{macro}{\subsection} @@ -722,18 +1023,18 @@ Schlegl", % \end{macrocode} % \end{environment} % \begin{environment}{workscited} +% \begin{macro}{\bibent} % Works cited environment, for compatibility with \package{mla-paper}. % \begin{macrocode} \newenvironment{workscited}% {\newpage{\centerline{Works Cited}}}{\newpage} - \newcommand{\bibent}{\noindent \hangindent\mlastyle@i} + \newcommand{\bibent}{\noindent\hangindent\mlastyle@i} % \end{macrocode} +% \end{macro} % \end{environment} % \subsubsection{Margins} % Top and bottom margins are 1 inch each. The header is flush with the -% right margin at .5 inches from the top of the page. -% ^^A\addtolength{\headheight}{-1pt} -% ^^A\setlength{\headheight}{1.4\headheight}% kludge +% right margin, .5 inches from the top of the page. % \begin{macrocode} \addtolength{\voffset}{-.5in} \setlength{\textheight}{\paperheight} @@ -768,10 +1069,21 @@ Schlegl", \let\@afterindentfalse\@afterindenttrue \@afterindenttrue % \end{macrocode} -% Double space {\em everywhere}. +% Double space {\em everywhere}. In a 12pt font, the default +% |\baselineskip| is changed from 14.5pt to 14.4pt. % ^^A\RequirePackage{doublespace} % \begin{macrocode} - \linespread{2.0} + \normalsize + \ifdim\baselineskip=14.5pt + \renewcommand\normalsize{% + \@setfontsize\normalsize\@xiipt{14.4}% + \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI}\normalsize + \fi + \linespread{2} \leftmargini\parindent \def\@listi{\leftmargin\leftmargini \parsep\z@\itemsep\z@\topsep -3\p@\relax} @@ -788,12 +1100,16 @@ Schlegl", \def\@listvi{\leftmargin\leftmarginvi \parsep\z@\itemsep\z@\topsep -3\p@\relax} % \end{macrocode} -% Only one space after colons. +% \begin{macro}{\nonfrenchspacing} +% Only one space after colons, unless someone else has already tinkered +% with its space factor. % \begin{macrocode} -\ifnum\the\sfcode`\:=2000 - \sfcode`\:=1999 -\fi + \let\mlastyle@intnfs\nonfrenchspacing + \def\nonfrenchspacing{\mlastyle@intnfs + \ifnum\the\sfcode`\:=2000\sfcode`\:=1999\fi} +\ifnum\the\sfcode`\:=2000\sfcode`\:=1999\fi % \end{macrocode} +% \end{macro} % \subsubsection{Header} % The last name and page number appear on every page, including the first. % \begin{macrocode} @@ -807,263 +1123,102 @@ Schlegl", \pagestyle{mlastyle} % \end{macrocode} % \subsubsection{Notes} -% Footnotes should be indented .5 inches; however .56 inches is used -% in a crude attempt to compensate for -% the alignment provided by the \package{footmisc} package. Endnotes are -% preferred in MLA style anyway, so this should not be a problem in most -% circumstances. +% \begin{macro}{\@footnotetext} +% \begin{macro}{\footnoterule} +% This code is terrible, but seems to work in practice. Suggestions +% welcome. % \begin{macrocode} - \RequirePackage[ragged,norule]{footmisc} - \def\footnotelayout{\linespread{1}\footnotesize\raggedright{} } - \footnotemargin\mlastyle@i - \advance\footnotemargin .35em - \skip\footins=2\baselineskip - \footnotesep 1.2\footnotesep - \addtolength\footnotesep{\baselineskip} - \def\footnotesize{\normalsize} + \def\footnoterule{ + \ifnum\mlastyle@prevsplit=\z@\else + \vbox to \z@{\linespread{1}\normalsize\vss\vbox{\noindent + \leaders\hrule\@height 3\p@\@depth-2.6\p@ + %\leaders\hbox{-} + \hfill\strut}\kern\z@}% + \fi + \xdef\mlastyle@prevsplit{\the\insertpenalties}} + \def\mlastyle@prevsplit{0} + \skip\footins=\f@baselineskip\relax + \skip\footins=2.15\skip\footins + \long\def\@footnotetext#1{\insert\footins{% + \linespread{1}\normalsize + \splittopskip1.7\baselineskip + \color@begingroup + \parindent\mlastyle@i + \rule\z@{1.7\baselineskip} + \@makefnmark{} + \ignorespaces#1\@finalstrut\strutbox + \color@endgroup}} % \end{macrocode} -% ^^A\let\footnoterule\relax +% \end{macro} +% \end{macro} +% \begin{macro}{\enoteformat} +% \begin{macro}{\enoteheading} +% \begin{macro}{\enotesize} % Endnotes are supported, but only if the \package{endnotes} package is % loaded {\em before\/} this package. % \begin{macrocode} - \ifx\@undefined\endnote\else + \ifx\@undefined\endnote + \let\note\footnote\else \def\enoteheading{\newpage\section*{\notesname}} \def\enoteformat{\leavevmode\makeenmark{} } \def\enotesize{\normalsize} + \let\note\endnote \fi % \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} % \subsubsection{Bibliography} +% \begin{macro}{\url@mlastyle} +% |\url| is needed to format urls in the bibliography. +% \begin{macrocode} +\urlstyle{mla} +% \end{macrocode} +% \end{macro} +% ^^A\ifx\@undefined\url{ +% ^^A \catcode`/=13 +% ^^A \gdef\url{\bgroup\catcode`/=13 +% ^^A \let/\slash\mlastyle@url} +% ^^A \gdef\mlastyle@url#1{#1\egroup}} +% ^^A}\fi % \begin{environment}{thebibliography} -% The definition of |\thebibliography| varies depending on the document +% The definition of |thebibliography| varies depending on the document % class. % \begin{macrocode} -\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} -% Article class. -% \begin{macrocode} - { \def\thebibliography#1{\newpage\section*{\refname} + \renewenvironment\thebibliography#1{\clearpage + \@ifundefined{chapter} + {\section*{\refname}} + {\chapter*{\bibname}} \list{\@biblabel{\@arabic\c@enumiv}}% {\settowidth\labelwidth{\@biblabel{#1}}} \leftmargin\labelwidth \advance\leftmargin\labelsep \itemindent-\leftmargin - \def\newblock{} + \let\newblock\@empty + %\sfcode`\.=\@m \usecounter{enumiv} - \sloppy%\sfcode`\.=\@m - }} -% \end{macrocode} -% Report/book class. -% \begin{macrocode} - { \def\thebibliography#1{\chapter*{\bibname} - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}} - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \itemindent-\leftmargin - \def\newblock{} - \usecounter{enumiv} - \sloppy%\sfcode`\.=\@m - }} + \sloppy + } + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} % \end{macrocode} % \end{environment} -% \subsubsection{Experimental \package{natbib} Implementation} +% If the \package{natbib} package is loaded, the following is executed +% instead. % \begin{macrocode} \else - \newcommand\bibpreamble{% - \@ifundefined{citet}{}% - {\bibhang\mlastyle@i\bibsep\z@}} + \bibhang\mlastyle@i\bibsep\z@ \fi % \end{macrocode} +% ^^A \newcommand\bibpreamble{% +% ^^A \@ifundefined{citet}{}% +% ^^A {\bibhang\mlastyle@i\bibsep\z@}} % \begin{macrocode} \fi % \ifmlastyle@format % \end{macrocode} -% \subsection{Style} -% \begin{macro}{\bibstyle@mlastyle} -% This first block is the beginnings of an implementation for -% \package{natbib}. -% \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}{,} - \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}{\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|, -% |\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 -% \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][]{\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\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. -% \begin{macrocode} - \def\@biblabel#1{#1} - \labelsep\z@ - \let\mlastyle@intbib\thebibliography - \def\thebibliography#1{\mlastyle@intbib{#1} - \itemindent-\leftmargin\def\@biblabel##1{}} -% \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][]{\citeyearpar[#1]{#2}} - \newcommand\citepageM[2][]{ \citetext{#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} -% -% ^^A% Define the command \workscited{bib}{style}{nocite} -% ^^A%\newcommand{\workscited}[3]{% -% ^^A% \ifx\chapter\@undefined% -% ^^A% \addcontentsline{toc}{chapter}{\bfseries\bibname}% report style -% ^^A% \else -% ^^A% \addcontentsline{toc}{section}{\bfseries\refname}% article style -% ^^A% \fi -% ^^A% \bibliography{#1}\bibliographystyle{#2}\nocite{#3}} -% ^^A% \fi -% ^^A\newcommand{\annote}[1]{\begin{list}{}{% -% ^^A \setlength{\labelwidth}{0pt} -% ^^A \addtolength{\leftmargin}{\parindent} -% ^^A \setlength{\labelsep}{0pt}}% -% ^^A \item #1 \end{list}} -% \subsubsection{Plain Style} -% \begin{macro}{\citeC} -% This next block is used if the \Lopt{compat} or \Lopt{format} option is -% set. -% \begin{macrocode} -\else - \ifx\@undefined\citet - \newcommand{\mlastyle@cite}[2][]{\@tempswafalse\@citex[]{#2}} - \newcommand{\citeC}[2][]{~\@tempswafalse\@citex[]{#2}} - \else - \newcommand{\mlastyle@cite}[2][]{\citep[]{#2}} - \def\citeC{ \citep} - \fi - \let\cite\mlastyle@cite - \let\citepage\mlastyle@cite - \let\citeindirect\mlastyle@cite - \let\citeM\mlastyle@relax - \let\citepageM\mlastyle@relax - \let\citeindirectM\mlastyle@relax -\fi -% \end{macrocode} -% \end{macro} -% -% ^^A\end{macro} -% ^^A\end{macro} -% \end{macro} -% \end{macro} + % \begin{macrocode} % % \end{macrocode}