% \iffalse meta-comment % % This file is part of the MARGBIB package, a package for displaying % bibliography tags in the margins. Copyright (C) 1997 Karsten Tinnefeld. % % This file is NOT part of the LaTeX2e system, but intended for use with it. % % This document is free software; you can redistribute it and/or modify it % under the terms of the GNU Library General Public License as published by % the Free Software Foundation; either version 2 of the License, or (at your % option) any later version. % % This document is distributed in the hope that it will be useful, but WITHOUT % ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or % FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for % more details. % % You should have received a copy of the GNU General Public License somehow; % if not, write to the Free Software Foundation, Inc., 675 Mass Ave, % Cambridge, MA 02139, USA. % % INSTALLATION: %%%%%%%%%%%%%%% % % Install this style by running the file `margbib.ins' thro' TeX. This will % create the file `margbib.sty' and, if your docstrip.cfg is set up the right % way (has a \BaseDirectory{}, see the % docstrip-documentation), automatically moved to \$TEXMF/tex/latex/misc. % % The documentation is created by running `latex margbib.dtx`. % \NeedsTeXFormat{LaTeX2e} %<*dtx> \ProvidesFile{margbib.dtx} % %\ProvidesPackage{margbib} %\ProvidesFile{margbib.drv} % \fi % \ProvidesFile{margbib.dtx} [1997/11/11 1.0c Bib-Items into the margins] % % \iffalse %<*driver> \documentclass{ltxdoc} \usepackage{margbib} \GetFileInfo{margbib.dtx} \def\docdate{1997/11/10} \RecordChanges \begin{document} \DocInput{\filename} \end{document} % % \fi % % \CheckSum{55} % % {\makeatletter\@ifundefined{AmS} % {\gdef\AmS{\leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex% % \hbox{$\mathcal M$}\kern-.2em\mathcal S$}}}{}} % \def\KOMAScript{\textsf{KOMA-Script}} % \def\refname{Example} % % \date{printed \today} % \title{The \texttt{margbib} document style\thanks{% % This file has version number \fileversion, % last revised \filedate, documentation dated \docdate.}} % \author{Karsten Tinnefeld\\\texttt{tinnefeld@irb.cs.uni-dortmund.de}} % \maketitle % % \begin{abstract} % This document describes the \texttt{margbib} document style. This style % redefines the \texttt{thebibliography} environment in order to move the % bibliography labels into the borders. % \end{abstract} % % \section{Introduction} % % Why the |margbib| style? Many typesetters say that text is only readable % when it is not wider than, say, about 70 letters. This limit is very tight, % provided typesetting on one column ISO A4 paper, the usual European % paper size. Thus there is a tradeoff between readability in normal text % paragraphs and the amount of trouble in line breaking especially of % bibliographies, where masses of names and declarative title words % discourage easy hyphenation. Large tags in all ``speaking'' citation styles % such as |alpha| or |abbrv| make it even harder as the books' label sizes % increase. % % Therefore, this style takes the label off the normal paragraph and places % it right beside the text in the margin. Since the normal |\marginpar| % command has problems with its output routine in case |twoside| is % used---first the marginalium is set, then a compound paragraph is possibly % put onto the next page---we employ the |marn.sty| created in 1993 by Donald % Arseneau. It ensures right placing of the marginal note in this case. This % is done utilising the |.aux|-file, but who does not re\TeX\ each % document twice or thrice? % % This document style has been tested with the normal \LaTeXe\ base, the % \AmS\ and the \KOMAScript\ documents. It works---most important---with the % twoside option and the use of normal |\marginpar|s, for problems therewith % cf. the documentation to |marn.sty|. I have found one minor caveat: it does % not print out this famous ``labels have changed, please re\TeX!'' message % in case of modifications, so my AUC \TeX\footnote{AUC \TeX\ is Per % Abrahamsen's famous \TeX\ mode for Emacs.}\ makes wrong proposals about % what to do next. Minor, as I said. % % \section{Remark} % % The \AmS\ bibliography styles make the paragraph text some degrees smaller % than regular. This package keeps this font size in paragraph text, but sets % the margin labels in normal font. This does not look that great, but % whoever wants to combine both is encouraged to fix it. % % \begin{thebibliography}{Knu86} % \bibitem[Knu86]{knuth86:_texbook} % Donald~E. Knuth. % \newblock {\em The \TeX{}book}, volume~A of {\em Computers \& % Typesetting}. % \newblock American Mathematical Society, Reading MA, 1986. % % \bibitem[Mit97]{mittelbach97} % Frank Mittelbach. % \newblock {\em The |doc| and |shortvrb| packages}. % \newblock Gutenbach Universit{\"a}t Mainz, February 5th, 1997. % \end{thebibliography} % % \StopEventually{} % % \section{The Code} % % \changes{v1.0b}{1997/11/10}{Only require |marn.sty| when available.} % % Let us look whether the document style |marn| by Donald Arseneau % exists. This will avoid difficulties in |twoside|-mode. If so, we % load the package, otherwise output a warning and make do with % |\marginpar|. % % \begin{macrocode} \IfFileExists{marn.sty}{% \RequirePackage{marn} }{% \PackageWarning{margbib}{% marn package unavailable -- using \string\marginpar}% \let\marn\marginpar} % \end{macrocode} % % \begin{macro}{\bibitem} % This redefines |\bibitem| and the two subcommands (with and without the % optional tag) to move our label information into the borders. We could % leave out the first line of the following code for all the examined % styles, after all, but since the |@|-commands are not said to persist, % this redundancy may be future's benefit. % % \begin{macrocode} \def\bibitem{\@ifnextchar[\@lbibitem\@bibitem} \def\@lbibitem[#1]#2{\item[]\if@filesw {\makebox{}\marn{\@biblabel{#1}}% \let\protect\noexpand \immediate \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} \def\@bibitem#1{\item[]\if@filesw\immediate\write\@auxout {\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces} % \end{macrocode} % \end{macro} % % \begin{environment}{thebibliography} % In order to broaden our text to the whole |\item|less width, we have to % redefine the |thebibliography| environment. For the sake of its % document-dependent facilities, we first steal the code and then % manipulate it: The shape of the paragraph is simply reset. % % Why override the given environment instead of defining a new? For those % who write bibliographies one after the other by themselves, this is no % problem. But \BibTeX\ generates |thebibliography| environments, and % nothing else. Thus it is only a question of working with |margbib.sty| or % without. Whoever wanted to have \emph{different} forms of bibliographies % in one document, e. g. using |chapterbib|, might possibly have cramped % her style. % % \begin{macrocode} \let\m@rgbib=\thebibliography \let\endm@rgbib=\endthebibliography \renewenvironment{thebibliography}[1]{% \begin{m@rgbib}{#1} \parshape=0\relax }{% \end{m@rgbib} } % \end{macrocode} % \end{environment} % %\Finale