view writeup/mlapa.sty @ 489:ee9836baade3

merge
author dumitru@dumitru.mtv.corp.google.com
date Mon, 31 May 2010 19:07:59 -0700
parents a11274742088
children
line wrap: on
line source

% mlapa.sty style, used in conjunction with mlapa.bst, will produce 
% an APA-like bibliography style. 
%
% 1) Bibliography entries formatted alphabetically, last name
%    first, each entry having a hanging indentation and no label.
% 2) References in the following formats:
%		(Author, 1986)
%		(Author & Author, 1986)
%		(Author et al., 1986).
% 3) Multiple references in the form (Author1, 1986; Author2, 1987)
%
% To be used as an optional argument to the \documentstyle command; for example
%	\documentstyle[11pt,apalike]{book}
%
% 16-Sep-86, original version by Susan King and Oren Patashnik.
% 13-Oct-87 changes:
%	Fixed bug in last line by adding the {} that disappeard when
%		the \hbox{} was removed from the pre-APALIKE definition;
%	added club and widow penalties;
%	patched the \newblock LaTeX bug from `-.07em' to simply `.07em';
%	and made this work for document styles that don't define `chapter'.
%       Use brackets for \cite, and no label in the bibliography
%
% 12/11/89 Use parenthesis () for \cite, (Risto Miikkulainen)
%
% ---------------------------------------------------------------------------
% The following major changes by Risto Miikkulainen 4/8/92:
% new style name: myapalike.sty
%
% The new commands below generate various embedded citations and multiple
% years for one authorname and citations without the enclosing parenthesis.
% They are enough to generate the standard apa style refs; however,
% there is a lot of room for improvement. For example:
% - the macros should alphabetize the entries automatically (maybe);
% - they should generate multiple years automatically, i.e. if the
%   current author is the same as previous one, do not repeat it.
%   This would make \single macros unnecessary.
% - with multiple emcites, it should add commas and the word ``and''
%   automatically between cites.
% - Bug: in book style sometimes all the bib entries are dumped on an
%   extra page in the end. (Just throw that page away if it ever appears.)
% - Another bug: for some reason, latex adds extra space after et al.
%   with emcites and singlecites. 
% If you have a chance to fix any of these things, let me know.
%
% You have to use this style with myapalike.bst; it generates bibitems
% of the form 
% \bibitem[Elman, 1989a][Elman][1989a]{elman:representation}
% that this file expects to find in the bbl file.
%
% Examples of commands and what they generate:
%
%\cite{foobar:1990,doesmith:1991} -- (Foo and Bar 1990; Doe and Smith 1991)
%\aucite -- (Foo and Bar; Doe and Smith)
%\aunpcite -- Foo and Bar; Doe and Smith
%\yrcite -- (1990; 1991)
%\yrnpcite  -- 1990; 1991
%\npcite -- Foo and Bar 1990; Doe and Smith 1991
%\emcite -- Foo and Bar (1990); Doe and Smith (1991)
%\singlecite -- (Foo and Bar 1990, 1991)
%\singlenpcite -- Foo and Bar 1990, 1991
%\singleemcite -- Foo and Bar (1990, 1991)

% Additional changes made by Pat Langley (1/20/2000). 

\def\@biblabel#1{}

% Set length of hanging indentation for bibliography entries
%
\newlength{\bibhang}
% \setlength{\bibhang}{2em}
% Reduce the handing indent for two-column format
\setlength{\bibhang}{10pt}

% \thebibliography environment depends on whether or not `chapter's can exist
%
\@ifundefined{chapter}{\def\thebibliography#1{\section*{References\@mkboth
  {REFERENCES}{REFERENCES}}\list
  {\relax}{\setlength{\labelsep}{0em}
	\setlength{\itemindent}{-\bibhang}
	\setlength{\leftmargin}{\bibhang}}
    \def\newblock{\hskip .11em plus .33em minus .07em}
    \sloppy\clubpenalty4000\widowpenalty4000
    \sfcode`\.=1000\relax}}%
{\def\thebibliography#1{\chapter*{Bibliography\@mkboth
  {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\list
  {\relax}{\setlength{\labelsep}{0em}
	\setlength{\itemindent}{-\bibhang}
	\setlength{\leftmargin}{\bibhang}}
    \def\newblock{\hskip .11em plus .33em minus .07em}
    \sloppy\clubpenalty4000\widowpenalty4000
    \sfcode`\.=1000\relax}}

% `; ' goes between cites, and there's no \hbox around individual cites
%
\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \def\@citea{}\@cite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {b@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname b@\@citeb\endcsname}}}{#1}}

\def\aucite{\@ifnextchar [{\@tempswatrue\@aucitex}{\@tempswafalse\@aucitex[]}}
\def\aunpcite{\@ifnextchar [{\@tempswatrue\@aunpcitex}{\@tempswafalse\@aunpcitex[]}}
\def\yrcite{\@ifnextchar [{\@tempswatrue\@yrcitex}{\@tempswafalse\@yrcitex[]}}
\def\yrnpcite{\@ifnextchar [{\@tempswatrue\@yrnpcitex}{\@tempswafalse\@yrnpcitex[]}}
\def\npcite{\@ifnextchar [{\@tempswatrue\@npcitex}{\@tempswafalse\@npcitex[]}}
\def\emcite{\@ifnextchar [{\@tempswatrue\@emcitex}{\@tempswafalse\@emcitex[]}}
\def\singlecite{\@ifnextchar [{\@tempswatrue\@singlecitex}{\@tempswafalse\@singlecitex[]}}
\def\singlenpcite{\@ifnextchar [{\@tempswatrue\@singlenpcitex}{\@tempswafalse\@singlenpcitex[]}}
\def\singleemcite{\@ifnextchar [{\@tempswatrue\@singleemcitex}{\@tempswafalse\@singleemcitex[]}}

% use ``,'' between author labels
\def\@aucitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \def\@citea{}\@aucite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {aub@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname aub@\@citeb\endcsname}}}{#1}}

% use ``,'' between author labels
\def\@aunpcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \def\@citea{}\@aunpcite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {aub@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname aub@\@citeb\endcsname}}}{#1}}

% use ``,'' between year-only-labels,
\def\@yrcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \def\@citea{}\@yrcite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {yrb@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname yrb@\@citeb\endcsname}}}{#1}}

% use ``,'' between year-only-labels,
\def\@yrnpcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \def\@citea{}\@yrnpcite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {yrb@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname yrb@\@citeb\endcsname}}}{#1}}

% use `; ' between parenthesisless cites
%
\def\@npcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \def\@citea{}\@npcite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {b@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname b@\@citeb\endcsname}}}{#1}}

% 
\newcounter{myfoo}
\def\@singleemcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \setcounter{myfoo}{0}\@for\@citeb:=#2\do{\ifnum\c@myfoo=0{\csname aub@\@citeb\endcsname}\addtocounter{myfoo}{1}\fi}
  \def\@citea{}\@yrcite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {yrb@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname yrb@\@citeb\endcsname}}}{#1}}

% 
\def\@singlecitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \def\@citea{(}\@citea\setcounter{myfoo}{0}\@for\@citeb:=#2\do{\ifnum\c@myfoo=0{\csname aub@\@citeb\endcsname}\addtocounter{myfoo}{1}\fi}
  \def\@citea{}\@yrnpcite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {yrb@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname yrb@\@citeb\endcsname}}}{#1}\def\@citea{)}\@citea}

% 
\def\@singlenpcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \setcounter{myfoo}{0}\@for\@citeb:=#2\do{\ifnum\c@myfoo=0{\csname aub@\@citeb\endcsname}\addtocounter{myfoo}{1}\fi}
  \def\@citea{}\@yrnpcite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{; }\@ifundefined
       {yrb@\@citeb}{{\bf ?}\@warning
       {Citation `\@citeb' on page \thepage \space undefined}}%
{\csname yrb@\@citeb\endcsname}}}{#1}}

% use ``,'' between embedded cites
\def\@emcitex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  \def\@citea{}\@for\@citeb:=#2\do
  {\@citea\def\@citea{; }\@aunpcite{\@ifundefined {aub@\@citeb}
       {{\bf ?}\@warning{Citation `\@citeb' on page \thepage \space undefined}}
       {\csname aub@\@citeb\endcsname}}{}
   \@yrcite{\@ifundefined {yrb@\@citeb}
       {{\bf ?}\@warning{Citation `\@citeb' on page \thepage \space undefined}}
       {\csname yrb@\@citeb\endcsname}}{#1}}}

% define b@CITENAME as the full label and aub@CITENAME as the
% authors-only-label and yrb@CITENAME as the year-only-label
\def\bibcite#1#2#3#4{\global\@namedef{b@#1}{#2}
\global\@namedef{aub@#1}{#3}
\global\@namedef{yrb@#1}{#4}}

% parenthesis/no parenthesis around the label
\def\@cite#1#2{(#1\if@tempswa , #2\fi)}
\def\@aucite#1#2{(#1\if@tempswa , #2\fi)}
\def\@yrcite#1#2{(#1\if@tempswa , #2\fi)}
\def\@npcite#1#2{#1\if@tempswa , #2\fi}
\def\@aunpcite#1#2{#1\if@tempswa , #2\fi}
\def\@yrnpcite#1#2{#1\if@tempswa , #2\fi}

\def\@lbibitem[#1][#2][#3]#4{\item[\@biblabel{#1}]\if@filesw 
      { \def\protect##1{\string ##1\space}\immediate
        \write\@auxout{\string\bibcite{#4}{#1}{#2}{#3}}}\fi\ignorespaces}