% \iffalse meta-comment % % Copyright 1993 1994 1995 1996 1997 1998 1999 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % % This file is part of the LaTeX2e system. % ---------------------------------------- % % It may be distributed under the terms of the LaTeX Project Public % License, as described in lppl.txt in the base LaTeX distribution. % Either version 1.0 or, at your option, any later version. % % \fi % \iffalse %%% From File: ltbibl.dtx % %<*driver> % \fi \ProvidesFile{ltbibl.dtx} [1997/04/24 v1.1m LaTeX Kernel (Bibliography)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltbibl.dtx} \title{\filename} \date{\filedate} \author{% Johannes Braams\and David Carlisle\and Alan Jeffrey\and Leslie Lamport\and Frank Mittelbach\and Chris Rowley\and Rainer Sch\"opf} \begin{document} \maketitle \DocInput{\filename} \end{document} % % \fi % % \CheckSum{161} % % \section{Bibliography Generation} % % A bibliography is created by the |thebibliography| environment, which % generates a title such as ``References'', and a list of entries. % The BIB\TeX{} program will create a file containing such an % environment, which will be read in by the |\bibliography| command. % With BIB\TeX, the following commands will be used. % % \DescribeMacro{\bibliography} % |\bibliography|\marg{file1,file2, \ldots ,filen} : specifies % the bibdata files. Writes a |\bibdata| entry on the |.aux| file % and tries to read in |mainfile.bbl|. % % \DescribeMacro{\bibliographystyle} % |\bibliographystyle|\marg{style} : % Writes a |\bibstyle| entry on the |.aux| file. % % \DescribeEnv{thebibliography} % The |thebibliography| environment is a list environment. To save the % use of an extra counter, it should use |enumiv| as the item % counter. % Instead of using |\item|, items in the bibliography are produced by % the following commands:\\ % |\bibitem|\marg{name} : Produces a numbered entry cited as % \meta{name}.\\ % |\bibitem|\oarg{label}\marg{name} : Produces an entry labeled by % \meta{Label} and cited by \meta{name}. % % The former is used for bibliographies with citations like [1], [2], % etc.; % the latter is used for citations like [Knuth82]. % % The document class must define the thebibliography environment. This % environment has a single argument, which is the widest bibliography % label-- e.g., if the [Knuth67] is the widest entry, then this % argument will be Knuth67. The |\thebibliography| command must begin % a list environment, which the |\endthebibliography| command ends. % % \DescribeMacro{\cite} % Entries are cited by the command |\cite|\marg{name}. % % \DescribeMacro{\nocite} % |\nocite|\marg{citations} % puts information on the |.aux| file that causes % \BibTeX{} to include the \marg{citations} list in the bibliography, % but puts nothing in the text. % % |\nocite{*}| is special: it tells \BibTeX{} to put the whole of a % collection of references into the bibiography. % % \StopEventually{} % % % \changes{v1.0a}{1994/03/31}{Initial version of ltidxbib.dtx, % split from ltherest.dtx} % \changes{v1.1a}{1994/05/19}{Initial version of ltbibl.dtx, % split from ltidxbib.dtx} % \changes{v1.1b}{1994/05/21}{Use new warning commands} % \changes{v1.1c}{1994/11/10}{Fix \cs{nocite\{*\}}} % % \begin{macrocode} %<*2ekernel> \message{bibliography,} % \end{macrocode} % % % \begin{oldcomments} % PARAMETERS % % \@cite : A macro such that \@cite{LABEL1,LABEL2}{NOTE} % produces the output for a \cite[NOTE]{FOO1,FOO2} command, % where entry FOOi is defined by \bibitem[LABELi]{FOOi}. % The switch @tempswa is true if the optional NOTE argument % is present. % The default definition is : % \@cite{LABELS}{NOTE} == % BEGIN [LABELS % IF @tempswa = T THEN , NOTE FI % ] % END % % \@biblabel : A macro to produce the label in the bibliography % entry. For \bibitem[LABEL]{NAME}, the label is % generated by \@biblabel{LABEL}. It has the default % definition \@biblabel{LABEL} -> [LABEL]. % CONVENTION % % \b@FOO : The name or number of the reference created by \cite{FOO} % E.g., if \cite{FOO} -> [17] , then \b@FOO -> 17. % % \end{oldcomments} % % \begin{macro}{\bibitem} % \changes{v1.1g}{1995/05/08}{Removed unnecessary braces} % \begin{macrocode} \def\bibitem{\@ifnextchar[\@lbibitem\@bibitem} % \end{macrocode} % \end{macro} % % \begin{macro}{\@lbibitem} % \changes{LaTeX2.09}{1992/02/26}{Added \cs{hfill} to restore % left-alignment of bibliography labels in alpha style} % \begin{macrocode} \def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\if@filesw {\let\protect\noexpand \immediate \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} % \end{macrocode} % \end{macro} % % % \begin{macro}{\@bibitem} % \changes{LaTeX2.09}{1991/11/13}{Changed counter enumi to enumiv, % as it says in the comment above} % \changes{LaTeX2.09}{1992/01/10}{Changed \cs{c@enumiv} to \cs{value} % of \cs{@listctr}} % \begin{macrocode} \def\@bibitem#1{\item\if@filesw \immediate\write\@auxout {\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces} % \end{macrocode} % \end{macro} % % \begin{macro}{\bibcite} % \changes{v1.1f}{1995/04/24} % {Make \cs{@onlypreamble} /1388.} % \changes{v1.1h}{1995/06/19} % {Call \cs{@newl@bel} so repeated keys produce better warning.} % \changes{v1.1i}{1995/07/14} % {Remove \cs{@onlypreamble} so still defined in new \cs{enddocument}} % \begin{macrocode} \def\bibcite{\@newl@bel b} % \end{macrocode} % \end{macro} % % \begin{macro}{\citation} % \begin{macrocode} \let\citation\@gobble % \end{macrocode} % \end{macro} % % \begin{macro}{\cite} % \changes{v1.1j}{1995/10/16}{(DPC) Make robust} % \begin{macrocode} \DeclareRobustCommand\cite{% \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@citex} % |\penalty\@m| added to definition of |\@citex| to allow a line % break after the `,' in citations like [Jones80,Smith77] % (Added 23 Oct 86) % % space added after the `,' (21 Nov 87) % % \changes{LaTeX2.09}{1991/10/25} % {added \cs{reset@font}, suggested by Bernd Raichle.} % \changes{LaTeX2.09}{1991/11/06} % {added code to remove a leading blank} % \changes{LaTeX2.09}{1992/08/14} % {added missing argument braces around \cs{hbox}, % found by Ed Sznyter} % \changes{LaTeX2.09}{1992/08/17} % {simplified code for removing leading blanks in % citation key (proposed by Frank Jensen and % Kresten Krab Thorup)} % \changes{LaTeX2.09}{1993/08/06} % {Moved writing to .aux file in loop over citation keys % so that leading blanks are removed there as well.} % \changes{v1.0c}{1994/05/05}{Set switch for warning and end of run.} % \changes{v1.1e}{1995/04/24} % {Add \cs{mbox} to undefined case: latex/1239.} % \changes{v1.1g}{1995/05/08}{Use \cs{@firstofone}} % \changes{v1.1k}{1995/10/20}{Removed refundefined flag} % \changes{v1.1l}{1995/12/07}{Restored name of \cs{G@refundefinedtrue}} % \changes{v1.1m}{1997/04/24}{\cs{\@empty} to avoid primitive % error on empty cite keys. latex/2432} % \begin{macrocode} \def\@citex[#1]#2{% \let\@citea\@empty \@cite{\@for\@citeb:=#2\do {\@citea\def\@citea{,\penalty\@m\ }% \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}}% {\hbox{\csname b@\@citeb\endcsname}}}}{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bibdata} % \begin{macro}{\bibstyle} % \begin{macrocode} \let\bibdata=\@gobble \let\bibstyle=\@gobble % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\bibliography} % \changes{LaTeX2e}{1994/01/18} % {Use \cs{@input@} so include files are listed.} % \begin{macrocode} \def\bibliography#1{% \if@filesw \immediate\write\@auxout{\string\bibdata{#1}}% \fi \@input@{\jobname.bbl}} % \end{macrocode} % \end{macro} % % \begin{macro}{\bibliographystyle} % \changes{v1.1d}{1994/12/09}{(DPC) Allow use in preamble.} % \begin{macrocode} \def\bibliographystyle#1{% \ifx\@begindocumenthook\@undefined\else \expandafter\AtBeginDocument \fi {\if@filesw \immediate\write\@auxout{\string\bibstyle{#1}}% \fi}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\nocite} % (Added 14 Jun 85) % \changes{v1.1c}{1994/11/10}{Fix \cs{nocite\{*\}}} % % This puts information on the |.aux| file that causes % \BibTeX{} to include the citation list in the bibliography, % but puts nothing in the text. % % RmS 93/08/06: Made loop for |\nocite| like that for |\@citex|, % to get rid of leading spaces. % \changes{v1.0b}{1994/05/03}{Make \cs{nocite} issue a warning % for an undefined citation key.} % \changes{v1.0c}{1994/05/05}{Do not write page number in % \cs{nocite} warning message.} % \changes{v1.0c}{1994/05/05}{Set switch for warning and end of run.} % \changes{v1.1g}{1995/05/08}{Use \cs{@firstofone}} % \changes{v1.1k}{1995/10/20}{Removed refundefined flag} % \begin{macrocode} \def\nocite#1{\@bsphack \@for\@citeb:=#1\do{% \edef\@citeb{\expandafter\@firstofone\@citeb}% \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi \@ifundefined{b@\@citeb}{\G@refundefinedtrue \@latex@warning{Citation `\@citeb' undefined}}{}}% \@esphack} % \end{macrocode} % Since |\nocite{*}| should not produce a warning about undefined % citation keys (seee PR 557), we need to set the control sequence % `|\b@*|' to something other than |\relax|. As a result |\cite{*}| % will not warn either (but that never worked with \BibTeX{} in the % first place). % \begin{macrocode} \expandafter\let\csname b@*\endcsname\@empty % \end{macrocode} % \end{macro} % % % \subsection{Default definitions} % % \begin{macro}{\@cite} % \begin{macrocode} \def\@cite#1#2{[{#1\if@tempswa , #2\fi}]} % \end{macrocode} % \end{macro} % % \begin{macro}{\@biblabel} % \changes{LaTeX2.09}{1992/01/14}{removed \cs{hfill}} % \begin{macrocode} \def\@biblabel#1{[#1]} % % \end{macrocode} % \end{macro} % % \Finale %