Mercurial > ift6266
diff writeup/mlapa.sty @ 406:a11274742088
Add bibliography style files.
author | Arnaud Bergeron <abergeron@gmail.com> |
---|---|
date | Wed, 28 Apr 2010 14:28:32 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/writeup/mlapa.sty Wed Apr 28 14:28:32 2010 -0400 @@ -0,0 +1,208 @@ +% 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}