|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 9792 (0x2640) Types: TextFile Names: »chapterbib.sty«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦this⟧ »latex-style/chapterbib.sty«
%========================================================================== % chapterbib.sty Version 1.0 (23-NOV-1988) % ~~~~~~~~~~~~~~ % Allow multiple bibliographies in a LaTeX document, including items % \cite'd in more than one bibliography. % % Restrictions % ~~~~~~~~~~~~ % % 1. The \bibliography and \bibliographystyle commands may not be used % in the root file, only in files that have been \include'd. If you % try to use them, a LaTeX warning is issued and the offending % command(s) ignored. This restriction occurs because the root .aux % file includes the subsidiary .aux files and when BibTeX processes % the root .aux file, it complains about multiple \bibdata commands. % % 2. If you want to \cite in the root file, you must provide your own % bibliography within the root file using the thebibliography % environment. I don't suppose that this will appeal to BibTeX users! % % 3. The subsidiary files must be \include'd (not \input'ed) by the root % file, with only one bibliography per \include'd file. % % 4. The style file works by redefining the \bibcite, so if you've got % any other style files that use \bibcite, watch out! The only style % files (that I've seen) with \bibcite in them are deproc.sty, % ctswan.sty & ipr.sty. % % Author % ~~~~~~ % Niel Kempson | Telephone: Swindon (0793) 785687 % School of Elec Eng & Science, | International: +44-793-785687 % Royal Military College of Science, | % Shrivenham, SWINDON, | E-mail: % SN6 8LA, | JANET: rmcs-tex@uk.ac.cranfield.cdvc % United Kingdom | %========================================================================== \let\@debugoutput=\@gobble % %************************************************************************* % DEBUGGING MACROS. To see what global variables are being assigned and % tested, uncomment these lines. % % % \let\@debugoutput=\typeout % \def\@debugnamedef#1#2{\expandafter\def\csname #1\endcsname{#2}% % \@debugoutput{\string\@debugnamedef: defined `#1' \space as `#2'}} % \def\@debugtestdef #1#2#3{% % \@debugoutput{\string\@debugtestdef: testing whether `#1@#2' = `#3'} % \def\@tempa{#3}\expandafter \ifx \csname #1@#2\endcsname% % \@tempa \else \@tempswatrue \fi} % \def\@debugbibtestdef #1#2#3#4{% % \@debugoutput{\string\@debugbibtestdef: testing whether `#1@#2@#4' % % = `#3'} % \def\@tempa{#3}\expandafter \ifx \csname #1@#2@#4\endcsname% % \@tempa \else \@tempswatrue \fi} % \let\@testdef=\@debugtestdef % \let\@bibtestdef=\xbibtestdef % \let\@namedef=\@debugnamedef % %************************************************************************* % %------------------------------------------------------------------------- % Keep track of files currently opened. % 1. The counter @ipfilectr keeps track of the currently open I/P file, % and @includefilectr keeps track of the \include files. % 2. @ipfilectr is set to @includefilectr, except when processing the root % file. An arbitrary large (number greater than the maximum number of % include files) is used to denote the root file. %------------------------------------------------------------------------- \newcounter{@ipfilectr} % current I/P file, \def\the@ipfilectr{\roman{@ipfilectr}} % displayed as roman numerals \newcounter{@includefilectr} % current \include file \def\@rootfilevalue{1988} % arbitrary value for root file \def\savedjobname{\jobname} % save root file name as a macro % %----------------------------------------------------------------------- % The name of the current I/P file is stored in macro \@currentipfile % and the global macro ipfile@the@ipfilectr is set to this name whenever % \@currentipfile changes. %----------------------------------------------------------------------- \def\@currentipfile{\jobname} % initialize to root file \setcounter{@ipfilectr}{\@rootfilevalue} % ditto \global\@namedef{ipfile@\the@ipfilectr}{\@currentipfile} % %----------------------------------------------------------------------- % Redefine the \include macro (taken from LATEX.TEX of 25-JAN-1988) so % that when a file is \include'd % 1. \@currentipfile is updated and \includefilectr incremented % 2. ipfilectr set to includefilectr % 3. global macro ipfile@\the@ipfilectr set to \@currentfile % % When the \include'd file is finished with % 1. reset \@currentipfile to the root file name (\jobname) % 2. reset ipfilectr to \@rootfilevalue % 3. global macro ipfile@\the@ipfilectr set to \@currentfile %----------------------------------------------------------------------- \def\include#1{\clearpage \def\@currentipfile{#1} \@debugoutput{\string\@currentipfile = `\@currentipfile'} \addtocounter{@includefilectr}{1} \setcounter{@ipfilectr}{\value{@includefilectr}} \global\@namedef{ipfile@\the@ipfilectr}{\@currentipfile} % \if@filesw \immediate\write\@mainaux{\string\@input{#1.aux}}\fi \@tempswatrue\if@partsw \@tempswafalse\def\@tempb{#1}\@for \@tempa:=\@partlist\do{\ifx\@tempa\@tempb\@tempswatrue\fi}\fi \if@tempswa \if@filesw \let\@auxout=\@partaux \immediate\openout\@partaux #1.aux \immediate\write\@partaux{\relax}\fi\@input{#1.tex}\clearpage \@writeckpt{#1}\if@filesw\immediate\closeout\@partaux \fi \let\@auxout=\@mainaux\else\@nameuse{cp@#1}\fi % \def\@currentipfile{\jobname} \@debugoutput{\string\@currentipfile = `\@currentipfile'} \setcounter{@ipfilectr}{\@rootfilevalue} \global\@namedef{ipfile@\the@ipfilectr}{\@currentipfile}} % %------------------------------------------------------------------------- % **************************************** % * BIBLIOGRAPHY * % **************************************** % % A bibliography is created by the bibliography environment, which % generates a title such as ``References'', and a list of entries. The % BIBTeX program will create a file containing such an environment, which % will be read in by the \bibliography command. With BIBTeX, the % following commands will be used. % % CONVENTION % % \b@FOO@ipfile@iv : The name or number of the reference created by % \cite{FOO} in \include file iv % e.g. if in the 4th \include file, \cite{FOO} -> [17], % then \b@FOO@ipfile@iv -> 17. %------------------------------------------------------------------------- % %------------------------------------------------------------------------- % \bibcite is now defined as: \bibcite{LABEL}{VALUE}{IPFILECTR}, so make % the \bibitem & \bibiteml commands output the extra parameter. %------------------------------------------------------------------------- \def\@lbibitem[#1]#2{\item[\@biblabel{#1}]\if@filesw { \def\protect##1{\string ##1\space}\immediate \write\@auxout{\string\bibcite{#2}{#1}{\the@ipfilectr}}}\fi\ignorespaces} %% Placement of `}' in def of \@lbibitem corrected 29 Apr 87 %% (Error found by Arthur Ogawa.) \def\@bibitem#1{\item\if@filesw \immediate\write\@auxout {\string\bibcite{#1}{\the\c@enumi}{\the@ipfilectr}}\fi\ignorespaces} \def\bibcite#1#2#3{{\global\@namedef{b@#1@#3}{#2}}} \def\cite{\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@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) % \def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi \def\@citea{}\@cite{\@for\@citeb:=#2\do {\@citea\def\@citea{,\penalty\@m\ }% \@debugoutput{\string\@citex: testing whether `b@\@citeb @\the@ipfilectr'% is defined.}% \@ifundefined {b@\@citeb @\the@ipfilectr}{{\bf ?}\@warning {Citation `\@citeb' in file `\@nameuse{ipfile@\the@ipfilectr}' % on page \thepage \space undefined}}% \hbox{\csname b@\@citeb @\the@ipfilectr\endcsname}}}{#1}} % %------------------------------------------------------------------------- % We don't allow \bibliography and \bibliographystyle commands in the root % file, so warn and ignore if appropriate. %------------------------------------------------------------------------- \def\bibliographystyle#1{% \ifx\@currentipfile\savedjobname \@warning{\string\bibliographystyle \space commands in the root file % are ignored ^^Jby the `chapterbib' style option.} \else \if@filesw\immediate\write\@auxout{\string\bibstyle{#1}}\fi \fi} \def\bibliography#1{% \ifx\@currentipfile\savedjobname \@warning{\string\bibliography \space commands in the root file % are ignored ^^Jby the `chapterbib' style option.} \else \if@filesw\immediate\write\@auxout{\string\bibdata{#1}}\fi \@input{\@currentipfile.bbl}\fi} % %------------------------------------------------------------------------- % All we need to do now is to redefine \enddocument so that it properly % checks whether the \cite labels have changed. %------------------------------------------------------------------------- \def\enddocument{\@checkend{document}\clearpage\begingroup \if@filesw \immediate\closeout\@mainaux \def\global\@namedef##1##2{}\def\newlabel{\@testdef r}% \def\bibcite{\@bibtestdef b}\@tempswafalse \makeatletter\input \jobname.aux \if@tempswa \@warning{Label(s) may have changed. Rerun to get cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end} \def\@bibtestdef #1#2#3#4{% \def\@tempa{#3}\expandafter \ifx \csname #1@#2@#4\endcsname% \@tempa \else \@tempswatrue \fi}