Yet more on bibliography
[latex-mlastyle.git] / mlastyle.dtx
index 5da97f857948dcf4e57f8732801edccdafc158b3..b6236d33267bbb4f681899d152c791a2e1a2a3be 100644 (file)
 % \iffalse
 %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
 %<package>\ProvidesPackage{mlastyle}
-%<package>   [2003/10/21 v1.0 .dtx mlastyle file] 
+%<package>   [2003/11/09 v0.9 MLA format and documentation style]
 %
 %<*driver>
-\documentclass{ltxdoc}
-\usepackage[compat]{mlastyle}
+\begin{filecontents}{mlastyle.bib}
+@PREAMBLE{"\def\BibTex{\rmfamily B\kern -.05em\textsc {i\kern -.025emb}\kern -.08emT\kern -.1667em\lower .7ex\hbox {E}\kern -.125emX}"}
+
+@BOOK{handbook,
+  AUTHOR = "Joseph Gibaldi",
+  TITLE = "MLA Handbook for Writers of Research Papers",
+  KEY = "MLA Handbook",
+  EDITION = "Sixth",
+  ADDRESS = "New York",
+  PUBLISHER = "MLA",
+  YEAR = "2003"}
+
+@BOOK{latexdps,
+  AUTHOR = "Leslie Lamport",
+  TITLE = "{\LaTeX}: A Document Preparation System",
+  KEY = "{\LaTeX}",
+  EDITION = "Second",
+  ADDRESS = "Reading",
+  PUBLISHER = "Addison-Wesley",
+  YEAR = "1994"}
+
+@MANUAL{lshort,
+  AUTHOR  = "Tobias Oetker and Hubert Partl and Irene Hyna and Elisabeth 
+Schlegl",
+  TITLE   = "The Not So Short Introduction to {\LaTeXe}",
+  KEY     = "Not So Short",
+  YEAR    = "2000",
+  MONTH   = dec,
+  VERSION = "4.0",
+  ACCESSDATE = "1~"#nov#"~2003",
+  URL     = "CTAN://info/lshort/"}
+
+@MANUAL{btxdoc,
+  AUTHOR  = "Oren Patashnik",
+  TITLE   = "{\BibTex ing}",
+  YEAR    = "1988",
+  MONTH   = feb,
+  ACCESSDATE = "1~"#nov#"~2003",
+  URL     = "CTAN://biblio/bibtex/distribs/doc/btxdoc.tex"}
+\end{filecontents}
+\documentclass[draft]{ltxdoc}
+\iffalse
+  \usepackage[mla]{mlastyle}
+  \bibliographystyle{mlastyle}
+  \addtolength{\marginparwidth}{1in}
+  \addtolength{\textwidth}{-1in}
+  \addtolength{\headwidth}{-1in}
+\else
+  \IfFileExists{natbib.sty}{
+    \usepackage{natbib}
+    \citeindextrue
+    \bibpunct{[}{]}{,}{n}{}{,}%{
+    \bibliographystyle{plainnat}}
+    {\bibliographystyle{plain}}
+  \IfFileExists{url.sty}{\usepackage{url}}{}
+  \usepackage[compat]{mlastyle}
+  %\addtolength{\headsep}{-5pt}
+  %\addtolength{\headheight}{-12pt}
+  %\addtolength{\topmargin}{-17pt}
+  %\addtolength{\textheight}{22pt}
+  \IfFileExists{ulem.sty}{\usepackage[normalem]{ulem}}{\let\uline\emph}
+\fi
+\IfFileExists{times.sty}%
+{\newcommand{\examp}[2][]{{\let\emph\uline\fontfamily{ptm}\selectfont##2}##1}}%
+{\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}}
 \EnableCrossrefs
 \CodelineIndex
 \RecordChanges
 %   Right brace   \}     Tilde         \~}
 %
 %
-% \changes{v1.0}{2003/09/25}{Initial version}
+% \changes{v0.9}{2003/11/09}{Converted to \texttt{dtx} file}
+% \changes{v0.8}{2003/10/15}{Initial version}
 %
 % \GetFileInfo{mlastyle.sty}
 %
 % \DoNotIndex{\@listiv}
 % \DoNotIndex{\@listv}
 % \DoNotIndex{\@listvi}
+% \DoNotIndex{\@m}
 % \DoNotIndex{\@startsection}
 % \DoNotIndex{\@tempswafalse}
 % \DoNotIndex{\@title}
 % \DoNotIndex{\G@refundefinedtrue}
 % \DoNotIndex{\ProcessOptions}
 % \DoNotIndex{\RequirePackage}
+% \DoNotIndex{\UL@start,\UL@stop}
 % \DoNotIndex{\addtolength}
 % \DoNotIndex{\advance}
 % \DoNotIndex{\baselineskip}
+% \DoNotIndex{\bibpreamble,\bibpunct,\bibsep}
 % \DoNotIndex{\begin}
 % \DoNotIndex{\bfseries}
+% \DoNotIndex{\bgroup}
 % \DoNotIndex{\c@enumiv}
 % \DoNotIndex{\catcode}
 % \DoNotIndex{\centering}
 % \DoNotIndex{\centerline}
 % \DoNotIndex{\chapter}
 % \DoNotIndex{\citation}
+% \DoNotIndex{\citet,\citep}
 % \DoNotIndex{\clearpage}
 % \DoNotIndex{\csname}
 % \DoNotIndex{\day}
 % \DoNotIndex{\def}
 % \DoNotIndex{\do}
 % \DoNotIndex{\edef}
+% \DoNotIndex{\egroup}
 % \DoNotIndex{\else}
 % \DoNotIndex{\end}
 % \DoNotIndex{\endcsname}
 % \DoNotIndex{\fi}
 % \DoNotIndex{\futurelet}
 % \DoNotIndex{\gdef}
+% \DoNotIndex{\global}
 % \DoNotIndex{\hangindent}
 % \DoNotIndex{\headrulewidth}
 % \DoNotIndex{\if@filesw}
 % \DoNotIndex{\ifcase}
 % \DoNotIndex{\ifmlastyle@bibstyle}
 % \DoNotIndex{\ifmlastyle@format}
+% \DoNotIndex{\ifmlastyle@pages}
 % \DoNotIndex{\ifmlastyle@papersize}
 % \DoNotIndex{\ifmlastyle@style}
 % \DoNotIndex{\ifmlastyle@times}
 % \DoNotIndex{\listparindent}
 % \DoNotIndex{\makeenmark}
 % \DoNotIndex{\mbox}
+% \DoNotIndex{\ml@}
 % \DoNotIndex{\mlastyle@bibstylefalse}
 % \DoNotIndex{\mlastyle@bibstyletrue}
 % \DoNotIndex{\mlastyle@cite}
 % \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{\month}
 % \DoNotIndex{\newblock}
 % \DoNotIndex{\newcommand}
+% \DoNotIndex{\newdimen}
 % \DoNotIndex{\newenvironment}
 % \DoNotIndex{\newif}
 % \DoNotIndex{\newpage}
 % \DoNotIndex{\renewenvironment}
 % \DoNotIndex{\reset@font}
 % \DoNotIndex{\rhead}
+% \DoNotIndex{\selectfont}
 % \DoNotIndex{\setlength}
 % \DoNotIndex{\settowidth}
 % \DoNotIndex{\sfcode}
 % \DoNotIndex{\sloppy}
 % \DoNotIndex{\space}
 % \DoNotIndex{\string}
-% \DoNotIndex{\sw@llow}
 % \DoNotIndex{\the}
+% \DoNotIndex{\thebibliography}
 % \DoNotIndex{\thepage}
 % \DoNotIndex{\topsep}
 % \DoNotIndex{\usecounter}
+% \DoNotIndex{\unskip}
 % \DoNotIndex{\vskip}
 % \DoNotIndex{\write}
 % \DoNotIndex{\year}
 % \DoNotIndex{\z@}
+% \DoNotIndex{\bibhang}
 % \DoNotIndex{\evensidemargin}
 % \DoNotIndex{\headheight}
 % \DoNotIndex{\headsep}
 % \DoNotIndex{\pdfpagewidth}
 % \DoNotIndex{\special}
 %
-% \newcommand*{\Lopt}[1]{\textsf {#1}}
-% \newcommand*{\file}[1]{\texttt {#1}}
-% \newcommand*{\package}[1]{\textsf {#1}}
-% \newcommand*{\Lcount}[1]{\textsl {\small#1}}
-% \newcommand*{\pstyle}[1]{\textsl {#1}}
+% \hyphenation{pre-am-ble wide-spread}
+%
+% \newcommand{\Lopt}[1]{\textsf {#1}}
+% \newcommand{\file}[1]{\texttt {#1}}
+% \newcommand{\package}[1]{\textsf {#1}}
+% ^^A\newcommand{\Lcount}[1]{\textsl {\small#1}}
+% ^^A\newcommand{\pstyle}[1]{\textsl {#1}}
+%
+% \newcommand{\OptionIndex}[1]{\index{#1\actualchar\Lopt{#1} (option)\encapchar usage}\index{options:\levelchar\Lopt{#1}}}
 %
 % \title{The \package{mlastyle} package\thanks{This document
 %   corresponds to \package{mlastyle}~\fileversion, dated \filedate.}}
 % \author{Tim Pope \\ \texttt{latex@rebelongto.us}}
+% \surname{Pope}
 %
 % \maketitle
 %
+% \tableofcontents
+%
 % \section{Introduction}
 %
-% MLA style is ugly.  Nevertheless, it is often required, particularly in
-% the humanities.
+% ^^A MLA style, consisting of a set of documentation conventions, has
+% ^^A gained widespread acceptance in the humanities.
+% According to the {\em MLA Handbook for Writers of Research
+% Papers}\citeC{handbook}, MLA style is a set of ``commonly agreed-on
+% rules for documenting quotations, facts, opinions and paraphrases'' that
+% ``is preferred by a substantial majority of scholarly journals in
+% language and literature{\makeatletter\ifmlastyle@style
+% .''\citeM[xvi]{handbook}\else.''\fi} \LaTeX{} is a
+% document preparation system enjoying popularity in the scientific field.
+% It should come as no surprise that complete, up-to-date implementations
+% of MLA style for \LaTeX{} are in short supply.  The \LaTeX{} package
+% \package{mlastyle} aims to fill this void.
 %
 % \section{Usage}
 %
 %\instructor{Professor Smith}
 %\course{English 101}
 %\date{1~Jan.\ 1970}
-%\title{The Futility of Compulsory English Classes}
+%\title{The Sadism Inherent in Compulsory English Classes}
 %
 %\begin{document}
 %\maketitle
 %'Nuff said.
 %\end{document}\end{verbatim}
-% \subsection{Initiation Macros}
-% \DescribeMacro{\maketitle}
-% \DescribeMacro{\instructor}
-% \DescribeMacro{\course}
-% The mandatory heading\index{heading|usage} is generated with
-% |\maketitle|.  Use the standard macros |\author|, |\title|, and |\date|
-% to specify the relevant information.  To define the instructor and name
-% of the course, use the aptly named |\instructor|\marg{instructor} and
-% |\instructor|\marg{course} macros.
-%
-% \DescribeMacro{\surname}
+% \subsection{Initialization Macros}
+% The \index{heading|usage}mandatory heading is generated with
+% \DescribeMacro{\maketitle}|\maketitle|.  Use the standard macros
+% |\author|, |\title|, and |\date| to specify the relevant information.
+% To define the instructor and name of the course, use the aptly named
+% \DescribeMacro{\instructor}|\instructor|\marg{instructor} and
+% \DescribeMacro{\course}|\course|\marg{course} macros.
+%
 % The last name for use in the header\index{header|usage} is derived from
 % |\author|.  If this does not produce the desired result, use
-% |\surname|\marg{last name} to override it.
+% \DescribeMacro{\surname}|\surname|\marg{last name} to override it.
 %
-% \DescribeMacro{\date}
-% \DescribeMacro{\today}
 % MLA style recommends the DD~Mon.~YYYY format for specifying dates;
-% |\today| has been conveniently redefined to this.  However, other
-% formats can be used as long as done so consistantly throughout the
-% document.  Also note that the date in the header should be the due date
-% of the assignment, so be sure to explictly call |\date|\marg{due date}
-% if you actually finish your assignments early.
+% \DescribeMacro{\today}|\today| has been conveniently redefined to this.
+% However, other formats can be used as long as done so consistently
+% throughout the document.  Also note that the date in the
+% heading\index{heading|usage} should be the due date of the assignment;
+% students who finish assignments early would be wise to call
+% |\date|\marg{due date}.
 %
 % \subsection{Environments}
-% \DescribeEnv{verse}
-% \DescribeEnv{quote}
-% \DescribeEnv{quotation}
 % Three environments have been modified from standard \LaTeX to better
-% suit MLA format.  To typeset poetry\index{poetry|usage} and
-% drama\index{drama|usage}, use the |verse| environment.
-% Quotations\index{quotations|usage} of a single paragraph or less always
-% use the |quote| environment.  For longer passages, use the |quotation|
-% environment if the beginning of the passage marks the beginning of a
-% paragraph.  Otherwise, use the |quote| environment.
+% suit MLA format.  To typeset \index{poetry|usage}poetry and
+% \index{drama|usage}drama, use the \DescribeEnv{verse}|verse|
+% environment.  Quotations\index{quotations|usage} of a single paragraph
+% or less always use the \DescribeEnv{quote}|quote| environment.  For
+% longer passages, use the \DescribeEnv{quotation}|quotation| environment
+% if the beginning of the passage marks the beginning of a paragraph.
+% Otherwise, use the |quote| environment.
 %
 % Be sure to follow MLA guidelines when using these environments.  Short
 % quotes should be enclosed in quotation marks and included directly in
 % the text.
 %
-% \subsection{Documentating Sources}
+% \subsection{Modes of Operation}
+% The \package{mlastyle} package has four basic modes of operations,
+% selected with one of four mutually exclusive options.  The
+% \OptionIndex{format}\Lopt{format}
+% option tells \package{mlastyle} to use MLA format (i.e., 1 inch margins,
+% double-spaced, etc.).  The \OptionIndex{style}\Lopt{style} option tells
+% \package{mlastyle} to use MLA style (i.e., the format of parenthetical
+% documentation, etc).  Each of these options
+% disables the other; to use both MLA format and MLA style, specify the
+% \OptionIndex{mla}\Lopt{mla} option, or nothing at all.
+%
+% To disable both MLA style and MLA format, use the
+% \OptionIndex{compat}\Lopt{compat} option.  This differs from omitting
+% the package entirely in that certain macros are still defined (e.g.,
+% |\instructor|).  Also, citations are handled a bit differently than in
+% standard \LaTeX{} (see section~\ref{sec:documentation}).
+%
+% In addition to the above, several other options modify the behavior of
+% \package{mlastyle}.
 %
-% Coupled with \BibTeX\index{BibTeX\actualchar\BibTeX|usage}
+% \subsubsection{Italics vs.\ Underlining} \index{underlining|usage}
+% \index{italics|usage}\label{sec:italics}
+% The {\em MLA Handbook\/}\citeC{handbook} dictates that emphasis should
+% be indicated by underlining the text\citeM[94]{handbook}.  Thus, the
+% \package{ulem} package, which underlines all emphasized
+% text, is loaded by default in \Lopt{mla} and \Lopt{format} modes.  To
+% disable this, use the \OptionIndex{italics}\Lopt{italics} option.
+% Conversely, if underlining is desired in \Lopt{style} or \Lopt{compat}
+% mode, the \OptionIndex{underline}\Lopt{underline} option can be used.
+%
+% \subsubsection{Fonts}
+% By default, \package{mlastyle} uses \TeX's standard Computer Modern
+% font.  Some profess\-ors\penalty500---particularly those
+% concerned with document length---require assignments to be set in
+% \examp[.]{Times New Roman}  This can be achieved with the
+% \OptionIndex{times}\Lopt{times} option, which simply loads the
+% \package{times} package.  This opposite of this option is
+% \OptionIndex{cm}\Lopt{cm}, which reverts to Computer Modern.
+%
+% \index{works cited|usage}
+% \subsection{Documenting Sources} \label{sec:documentation}
+%
+% The \package{mlastyle} package reimplements the
+% \DescribeEnv{thebibliography}|thebibliography| environment to generate
+% the list of works cited in MLA style.  Instruction in the basic use of
+% \LaTeX's bibliography features is beyond the scope of this document;
+% however, the following example, which should be included just before
+% |\end{document}|, might prove to be a useful starting point:
+%\begin{verbatim}
+%\begin{thebibliography}{}
+%
+%\bibitem[Lamport]{latexdps}
+%Lamport, Leslie.
+%\newblock \emph{\LaTeX: A Document Preparation System}.
+%\newblock 2nd.~ed.
+%\newblock Reading: Addison-Wesley, 1994.
+%
+%\end{thebibliography}\end{verbatim}
+% In this example, |Lamport| is the author's last name (for use in
+% citations) and |latexdps| is the marker used to reference it (see
+% section~\ref{sec:parenthetical}).
+%
+% For information on automatically generating the list of works cited with
+% \BibTeX, see section~\ref{sec:bibtex}.
+%
+% \subsubsection{Parenthetical Documentation} \label{sec:parenthetical}
+% A simple citation can by achieved with a call to
+% \DescribeMacro{\cite}|\cite|\oarg{pages}\marg{marker}, where
+% marker refers to the key given to either
+% \index{BibTeX=\BibTeX|usage}\BibTeX{} or the |\bibitem| macro (|latex|
+% in the above example).
+% Omit \oarg{pages} if the source has no page numbers.
+% Multiple sources can be cited using the syntax
+% |\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 |\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
+% citation, use \DescribeMacro{\citepage}|\citepage|.  Indirect
+% 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{\citealp}|\citealp|.  This was
+% intended for use in cross references, but it can also help in citing
+% multiple works.  The result of
+% |(\citealp[42]{texbook}|\texttt{; }|\citealp[69]{latexdps})|
+% would be something like \examp[.]{(Knuth 42; Lamport 69)}
+%
+% \subsubsection{Using {\rm \BibTeX}} \label{sec:bibtex}
+% Coupled with \index{BibTeX=\BibTeX|usage}\BibTeX,
 % \package{mlastyle} provides a experimental implementation of MLA
-% documentation style.  Put |\bibliographystyle{mlastyle}| in the document
-% preamble to load the bibliography style.
-%
-% \StopEventually{\PrintChanges\PrintIndex}
+% documentation style.  Put\SpecialUsageIndex{\bibliographystyle}
+% |\bibliographystyle{mlastyle}| in the document preamble to load the
+% bibliography style.  Alternatively, the
+% \OptionIndex{bibstyle}\Lopt{bibstyle} option can handle this
+% automatically, loading a bibliography style of |mlastyle| in \Lopt{mla}
+% and \Lopt{style} modes and a bibliography style of |plain| in
+% \Lopt{format} and \Lopt{compat} modes.
+%
+% Use of \BibTeX{} is also beyond the scope of this document; consult
+% Patashnik\citeC{btxdoc} for an introduction.
+% Briefly, to use the following example, substitute
+% |\bibliography|\marg{filename} for the |thebibliography| environment.
+% Then create \meta{filename}\file{.bib} with the contents below.
+% Generating the document entails running \file{latex} on the \file{.tex}
+% file, \file{bibtex} on the resulting \file{.aux} file, then \file{latex}
+% twice more.
+%\begin{verbatim}
+%@BOOK{latexdps,
+%  AUTHOR = "Leslie Lamport",
+%  TITLE = "{\LaTeX}: A Document Preparation System",
+%  KEY = "{\LaTeX}",
+%  EDITION = "Second",
+%  ADDRESS = "Reading",
+%  PUBLISHER = "Addison-Wesley",
+%  YEAR = "1994"}\end{verbatim}
+%
+% In \package{mlastyle}, The |KEY| field serves the additional purpose of
+% specifying an abbreviated title.  This is unnecessary in the above
+% example.  If an additional book by Leslie Lamport was included, however,
+% the |KEY| field would allow |\cite{latexdps}| to yield \examp{(Lamport,
+% \emph{\LaTeX\/})} instead of \examp[.]{(Lamport, \emph{\LaTeX: A
+% Doc\-um\-ent Pre\-pa\-ra\-tion Sys\-tem\/})}
+%
+% Note that only entries referenced by a citation are included in the list
+% of works cited; to force the inclusion of an entry or all entries, use
+% |\nocite|\marg{marker} and |\nocite{*}|, respectively.
+%
+% \StopEventually{\PrintChanges\bibliography{mlastyle}\PrintIndex}
 %
 % \section{Implementation}
-% \iffalse
+%    \begin{macrocode}
 %<*package>
-% \fi
-% \subsection{Options}
+%    \end{macrocode}
 %
+% \subsection{Options}
 % \begin{macro}{\ifmlastyle@*}
 % \begin{macro}{\mlastyle@*true}
 % \begin{macro}{\mlastyle@*false}
-% Most options are implemented by modifying a |\newif| declared for this
+% Most options are implemented by modifying a |\newif| declared for that
 % purpose.
 %    \begin{macrocode}
 \newif\ifmlastyle@bibstyle
        \mlastyle@formatfalse
        \mlastyle@underlinefalse}
 \DeclareOption{singlespacequotes}{
-  \def\mlastyle@qspread{\linespread{1}\normalsize\vskip\baselineskip}}
+  \def\mlastyle@qspread{\linespread{1}\selectfont\vskip\baselineskip}}
 \DeclareOption{doublespacequotes}{\let\mlastyle@qspread\relax}
 \ExecuteOptions{nobibstyle,nopapersize,mla,cm,doublespacequotes}
 \ProcessOptions
   \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
+% emphasis.  This is changed to MLA-style behavior with the redefinition
+% of |\UL@onin|.
 %    \begin{macrocode}
 \ifmlastyle@underline
   \RequirePackage{ulem}
+  \def\UL@onin#1{\egroup\UL@stop#1\UL@start}
 \fi % \ifmlastyle@underline
 %    \end{macrocode}
+% \end{macro}
 % Load the \package{times} package if the \Lopt{times} option is set.
 %    \begin{macrocode}
 \ifmlastyle@times
 % Define the surname, along with an obsolete synonym.
 %    \begin{macrocode}
 \def\surname#1{\gdef\mlastyle@surname{#1}}
-\def\mlastyle@surname{\def\sw@llow##1 {}\expandafter\sw@llow\@author}
+\def\mlastyle@surname{\def\ml@##1 ##2,##3@@{##2}%
+  \expandafter\ml@\@author, ,@@}
 \let\lastname\surname
 %    \end{macrocode}
 % \end{macro}
 % \subsection{Formatting}
-% Formatting is only done if the \Lopt{format} option is set.  This is the
-% default.
+% Formatting is done if the \Lopt{mla} or \Lopt{format} option is set.
 %    \begin{macrocode}
 \ifmlastyle@format
 %    \end{macrocode}
+% \begin{macro}{\mlastyle@i}
+% This is the standard MLA format indent.
+%    \begin{macrocode}
+  \newdimen\mlastyle@i \mlastyle@i=.5in
+%    \end{macrocode}
+% \end{macro}
 % \subsubsection{Macros}
 % \begin{macro}{\maketitle}
-% Redefined |\maketitle| generate a heading in MLA format.
+% |\maketitle| generates a heading in MLA format.
 %    \begin{macrocode}
   \renewcommand{\maketitle}{\begin{flushleft}
     \@author\par
 % \end{macro}
 % \begin{macro}{\slash}
 % No penalty for |\slash|, and plain /'s permit line breaks if necessary.
+% ^^A\let\mlastyle@sl@sh=/
 %    \begin{macrocode}
   \def\slash{/\penalty\z@}
-  %\let\mlastyle@sl@sh=/
   \def\mlastyle@slash{/\futurelet\mlastyle@slashnext\mlastyle@slashx}
   \def\mlastyle@slashx{\ifx\mlastyle@slashnext/\else
     \penalty\exhyphenpenalty\fi}
 % \end{macro}
 % \begin{macro}{\section}
 % \begin{macro}{\subsection}
+% \begin{macro}{\subsubsection}
 % Sections are formatted by centering the section name and beginning a new
 % page.  Subsections simply center the section name.
 %    \begin{macrocode}
     }{0pt}{1sp}{\centering}}
   \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@
     }{0pt}{1sp}{\centering}}
+  \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@
+    }{0pt}{1sp}{\centering}}
 %    \end{macrocode}
+% ^^A\let\mlastyle@vfont\verbatim@font
+% ^^A\def\verbatim@font{\mlastyle@qspread\mlastyle@vfont}
+% \end{macro}
 % \end{macro}
 % \end{macro}
 % \subsubsection{Environments}
-% ^^A%\newenvironment{blocks}{\begin{quote} \linespread{1} \small \normalsize}{\end{quote} \linespread{2} \small \normalsize}
-% ^^A%\newenvironment{blockm}{\begin{quotation} \linespread{1} \small \normalsize}{\end{quotation} \linespread{2} \small \normalsize}
+% ^^A%\newenvironment{blocks}{\begin{quote} \linespread{1} \selectfont}{\end{quote} \linespread{2} \small \selectfont}
+% ^^A%\newenvironment{blockm}{\begin{quotation} \linespread{1} \selectfont}{\end{quotation} \linespread{2} \selectfont}
 % \begin{environment}{verse}
 % Indented 1 inch, with an additional .25 inch hanging indent.
 %    \begin{macrocode}
   \renewenvironment{verse}{\list{}{\mlastyle@qspread
-    \advance\leftmargin.75in\itemindent-.25in
+    \advance\leftmargin1.5\mlastyle@i\itemindent-.5\mlastyle@i
     \listparindent\itemindent}\item\relax}{\endlist}
 %    \end{macrocode}
 % \end{environment}
 % Indented 1 inch, with a paragraph indent of an additional .25 inches.
 %    \begin{macrocode}
   \renewenvironment{quotation}{\list{}{\mlastyle@qspread
-    \advance\leftmargin.5in\itemindent.25in
+    \advance\leftmargin\mlastyle@i\itemindent.5\mlastyle@i
     \listparindent\itemindent}\item\relax}{\endlist}
 %    \end{macrocode}
 % \end{environment}
 % indented.
 %    \begin{macrocode}
   \renewenvironment{quote}{\list{}{\mlastyle@qspread
-    \advance\leftmargin.5in
-    \listparindent.25in}\item\relax}{\endlist}
+    \advance\leftmargin\mlastyle@i
+    \listparindent.5\mlastyle@i}\item\relax}{\endlist}
 %    \end{macrocode}
 % \end{environment}
 % \begin{environment}{workscited}
-% Works Cited environment, for compatibility with \package{mla-paper}.
+% Works cited environment, for compatibility with \package{mla-paper}.
 %    \begin{macrocode}
   \newenvironment{workscited}%
     {\newpage{\centerline{Works Cited}}}{\newpage}
-  \newcommand{\bibent}{\noindent \hangindent .5in}
+  \newcommand{\bibent}{\noindent \hangindent\mlastyle@i}
 %    \end{macrocode}
 % \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%\settoheight{\headheight}{\llap{\parbox[b]{\textwidth}{\large\raggedleft Pope}}}
+% ^^A\addtolength{\headheight}{-1pt}
+% ^^A\setlength{\headheight}{1.4\headheight}% kludge
 %    \begin{macrocode}
-  \addtolength{\voffset}{-0.5in}
+  \addtolength{\voffset}{-.5in}
   \setlength{\textheight}{\paperheight}
   \addtolength{\textheight}{-2in}
   \setlength{\topmargin}{0in}
-  %\addtolength{\headheight}{-1pt}
-  %\setlength{\headheight}{1.4\headheight}% kludge
   \setlength\headheight\f@baselineskip
-  \setlength{\headsep}{0.5in}
+  \setlength{\headsep}{.5in}
   \addtolength{\headsep}{-\headheight}
   \setlength{\footskip}{0.25in}
   \raggedbottom
 %    \end{macrocode}
 % Left and right margins in MLA format are each 1 inch wide.
 %    \begin{macrocode}
-  \addtolength{\hoffset}{-0.5in}
+  \addtolength{\hoffset}{-.5in}
   \setlength{\textwidth}{\paperwidth}
   \addtolength{\textwidth}{-2in}
-  \setlength{\oddsidemargin}{0.5in}
-  \setlength{\evensidemargin}{0.5in}
-  \setlength{\marginparwidth}{0.5in}
+  \setlength{\oddsidemargin}{.5in}
+  \setlength{\evensidemargin}{.5in}
+  \setlength{\marginparwidth}{.5in}
 %    \end{macrocode}
 % \subsubsection{Paragraphs}
 % Paragraphs should be left justified, with the first line indented .5
 % inches.
 %    \begin{macrocode}
   \raggedright
-  \setlength{\parindent}{.5in}
+  \setlength\parindent\mlastyle@i
 %    \end{macrocode}
 % MLA format specifies that all paragraphs should be indented, even those
 % beginning a new section.  This snippet from \package{indentfirst} changes
   \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}
     \fancyhf{}
     \rhead{\mlastyle@surname{} \thepage}
     \renewcommand{\headrulewidth}{0pt}
-    \renewcommand{\footrulewidth}{0pt}
-  }
+    \renewcommand{\footrulewidth}{0pt}}
   \pagestyle{mlastyle}
 %    \end{macrocode}
 % \subsubsection{Notes}
 %    \begin{macrocode}
   \RequirePackage[ragged,norule]{footmisc}
   \def\footnotelayout{\linespread{1}\footnotesize\raggedright{} }
-  \footnotemargin .56in
+  \footnotemargin\mlastyle@i
+  \advance\footnotemargin .35em
   \skip\footins=2\baselineskip
   \footnotesep 1.2\footnotesep
   \addtolength\footnotesep{\baselineskip}
     \def\enotesize{\normalsize}
   \fi
 %    \end{macrocode}
-% \subsubsection{Miscellaneous}
+% \subsubsection{Bibliography}
+% \begin{environment}{thebibliography}
 % 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}
+  { \def\thebibliography#1{\newpage\section*{\refname}
       \list{\@biblabel{\@arabic\c@enumiv}}%
-      {\settowidth\labelwidth{\@biblabel{#1}}}
-      \leftmargin\labelwidth
-      \advance\leftmargin\labelsep
-      \itemindent-\leftmargin
-      \def\newblock{}
-      \usecounter{enumiv}
-      \sloppy%\sfcode`\.=1000\relax
-      \catcode`/=13
-      \let/=\mlastyle@slash
+        {\settowidth\labelwidth{\@biblabel{#1}}}
+        \leftmargin\labelwidth
+        \advance\leftmargin\labelsep
+        \itemindent-\leftmargin
+        \def\newblock{}
+        \usecounter{enumiv}
+        \sloppy%\sfcode`\.=\@m
       }}
 %    \end{macrocode}
 % Report/book class.
 %    \begin{macrocode}
-  {
-    \def\thebibliography#1{\chapter*{\bibname}
+  { \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`\.=1000\relax
-      \catcode`/=13
-      \let/=\mlastyle@slash
+        {\settowidth\labelwidth{\@biblabel{#1}}}
+        \leftmargin\labelwidth
+        \advance\leftmargin\labelsep
+        \itemindent-\leftmargin
+        \def\newblock{}
+        \usecounter{enumiv}
+        \sloppy%\sfcode`\.=\@m
       }}
 %    \end{macrocode}
-% We're done formatting!
+% \end{environment}
+% \subsubsection{Experimental \package{natbib} Implementation}
+%    \begin{macrocode}
+\else
+  \newcommand\bibpreamble{%
+    \@ifundefined{citet}{}%
+    {\bibhang\mlastyle@i\bibsep\z@}}
+\fi
+%    \end{macrocode}
 %    \begin{macrocode}
 \fi % \ifmlastyle@format
 %    \end{macrocode}
-% \subsection{Works Cited}
+% \subsection{Style}
+% \begin{macro}{\bibstyle@mlastyle}
+% This first block is the beginnings of an implementation for
+% \package{natbib}.  Surely there is a better way.
+%    \begin{macrocode}
+\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}
+    \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\unskip}
+\RequirePackage{natbib}
+%    \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|,
-% |\citeN|, etc.\ vary depending on the options passed to
+% |\citealp|, etc.\ vary depending on the options passed to
 % \package{mlastyle}.
 %
 % \begin{macro}{\mlastyle@intcite}
-% Since the original |\cite| is needed after it is overridden, it is stored
+% 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, ither |\citeC| or
+% 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}
 % executed.
 %    \begin{macrocode}
 \ifmlastyle@style
-  \def\@cite#1#2{(#1\if@tempswa{} #2\fi)}
-  \def\cite{\def\@cite##1##2{(##1\if@tempswa{} ##2\fi)}\mlastyle@intcite}
-  \def\citeN{\def\@cite##1##2{##1\if@tempswa{} ##2\fi}\mlastyle@intcite}
-  \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}
-% \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 the 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}}
+  \let\cite\citep
+  \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}
 %
 % ^^A% Define the command \workscited{bib}{style}{nocite}
 % ^^A                \item #1 \end{list}}
 % \subsubsection{Plain Style}
 % \begin{macro}{\citeC}
-% This next block is used only if the \Lopt{compat} option is set.
+% This next block is used if the \Lopt{compat} or \Lopt{format} option is
+% set.
 %    \begin{macrocode}
 \else
-  \newcommand{\mlastyle@cite}[2][]{\@tempswafalse\@citex[]{#2}}
+%    \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
-  \newcommand{\citeC}[2][]{ \@tempswafalse\@citex[]{#2}}
   \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}
-% \iffalse
+% \end{macro}
+%    \begin{macrocode}
 %</package>
-% \fi
+%    \end{macrocode}
 %
 % \Finale
 \endinput