summaryrefslogtreecommitdiff
path: root/info/biblio/bibunits.sty
diff options
context:
space:
mode:
Diffstat (limited to 'info/biblio/bibunits.sty')
-rw-r--r--info/biblio/bibunits.sty197
1 files changed, 197 insertions, 0 deletions
diff --git a/info/biblio/bibunits.sty b/info/biblio/bibunits.sty
new file mode 100644
index 0000000000..131fd46828
--- /dev/null
+++ b/info/biblio/bibunits.sty
@@ -0,0 +1,197 @@
+%% Author: Jose Alberto <alberto@cs.umd.edu>
+%% Original source: comp.text.tex <ALBERTO.91Sep7174145@yamuna.cs.umd.edu>
+%% Date: 7 Sep 91 21:41:45 GMT
+%% Text of accompanying post follows \endinput
+%%
+%% BIBUNITS.STY by Jose Alberto Fernandez (alberto@cs.umd.edu)
+%%
+%% BIBUNITS is a style to generate separate bibliographies for
+%% different units (parts) of the text (currently only one of
+%% chapters, sections or bibunit-environments).
+%% The style will separate the citations of each unit of text into a
+%% separate file to be processed by bibtex. The global bibliography
+%% section produced by LATEX also can appear in the document and
+%% citations can be placed in both at the same time.
+%%
+%% Use the \bibliographyunit[<unit>] (<unit> = \chapter, \section) to
+%% select how the references will be generated. (For every chapter or
+%% for every section). Use \bibliographyunit with no arguments to
+%% deactivate bibliographyunits. By default citations will only appear
+%% in the local bibliography. WARNING: By default \bibliographyunit is
+%% in a deactivated state.
+%%
+%% If \bibliographyunit is active the \bibliography{bibtex-files} and
+%% \bibliographystyle{style} commands also specify the bibtex-files
+%% and style to be used by default in the local units. The commands
+%% \bibliography*{<bibtex-files>} and \bibliographystyle*{<style>}
+%% specify the defaults for BIBUNITS and not generate any information
+%% for the global bibliography. WARNING: This values are taken as
+%% defaults only when executed after activate \bibliographyunit
+%%
+%% The environment \begin{bibunit}[<style>] .. \end{bibunit} allows
+%% the creation of a unit while \bibliographyunit is not active. The
+%% optional parameter <style> specifies a style for the biblography
+%% different from the default if any. WARNING: The use of this
+%% environment while \bibliographyunit is active can produce extrange
+%% results. Note that default style and bibtex-files only exist if
+%% specified while \bibliographyunit was active.
+%%
+%% Use \cite and \nocite to generate citations. \cite* and \nocite*
+%% can be use to generate citations to be added in both the local and
+%% global bibliography while inside a unit.
+%%
+%% You must insert the command \putbib[<bibtex-files>] before the end
+%% of each <unit> in the location where you want the bibliography to
+%% be inserted. If the optional argument is ommited, \putbib uses the
+%% default bibtex-files if any.
+%%
+%% BIBTEX processing:
+%% For each <unit>, in sequence, there is now a corresponding file
+%% \jobname.\the\@bibunitauxcnt.aux that need to be compiled though
+%% BIBTEX as well as the \jobname.aux that generates the global
+%% database.
+%%
+%% Suppose your document is foo.tex, you must now invoke bibtex not only
+%% on foo, but also on foo.1, ..., foo.n given that there are n
+%% different <units> with separate bibliography.
+
+\newwrite\@bibunitaux %File desc.
+\newcount\@bibunitauxcnt \@bibunitauxcnt = 0 %Units cnt.
+\newif\if@localcite %Local/Global cite
+\def\@localcitedflt{\@localcitetrue} \@localcitedflt
+%
+% \cite definition
+%
+\let\REALcite\cite
+\def\NEWcite{%
+ \@ifstar{\@localcitefalse\REALcite}%
+ {\@localcitetrue\REALcite}}
+%
+% \@cite new definition
+\let\REAL@citex\@citex
+\def\NEW@citex[#1]#2{\if@filesw
+ \immediate\write\@bibunitaux{\string\citation{#2}}\fi
+ \if@localcite
+ \if@filesw
+ \@fileswfalse\REAL@citex[#1]{#2}\@fileswtrue
+ \else\REAL@citex[#1]{#2}\fi
+ \else\REAL@citex[#1]{#2}\fi
+ \@localcitedflt}
+%
+% \nocite definition
+%
+\let\REALnocite\nocite
+\def\NEWnocite{%
+ \@ifstar{\@localcitefalse\@NEWnocite}%
+ {\@localcitetrue\@NEWnocite}}
+\def\@NEWnocite#1{\@bsphack
+ \if@filesw
+ \immediate\write\@bibunitaux{\string\citation{#1}}\fi
+ \@esphack
+ \if@localcite\else\REALnocite{#1}\fi\@localcitedflt}
+%
+% \bibliography definition
+%
+\def\@bibdata{} %Data files store
+\let\REALbibliography\bibliography
+\def\NEWbibliography{%
+ \@ifstar{\@localcitetrue\@NEWbibliography}%
+ {\@localcitefalse\@NEWbibliography}}
+\def\@NEWbibliography#1{%
+ \if@filesw
+ \immediate\write\@auxout{\string\gdef\string\@bibdata{#1}}\fi
+ \if@localcite\else\REALbibliography{#1}\fi\@localcitedflt}
+%
+% \bibliographystyle definition
+%
+\def\@bibstyle{} %Style store
+\let\REALbibliographystyle\bibliographystyle
+\def\NEWbibliographystyle{%
+ \@ifstar{\@localcitetrue\@NEWbibliographystyle}%
+ {\@localcitefalse\@NEWbibliographystyle}}
+\def\@NEWbibliographystyle#1{%
+ \if@filesw
+ \immediate\write\@auxout{\string\gdef\string\@bibstyle{#1}}\fi
+ \if@localcite\else\REALbibliographystyle{#1}\fi\@localcitedflt}
+%
+% \begin{bibunit} .. \end{bibunit} definition
+%
+\def\bibunit{\global\advance\@bibunitauxcnt 1
+ \global\let\cite\NEWcite
+ \global\let\@citex\NEW@citex
+ \global\let\nocite\NEWnocite
+ \if@filesw
+ \immediate\openout\@bibunitaux \jobname.\the\@bibunitauxcnt.aux
+ \fi\@ifnextchar[{\@bibunitx}{\@bibunitx[\@bibstyle]}%
+}
+\def\@bibunitx[#1]{\if@filesw
+ \immediate\write\@bibunitaux{\string\bibstyle{#1}}\fi}
+\def\endbibunit{%
+ \global\let\cite\REALcite
+ \global\let\@citex\REAL@citex
+ \global\let\nocite\REALnocite
+ \if@filesw
+ \immediate\closeout\@bibunitaux\fi}
+%
+% \chapter or \section substituting definition
+%
+\let\OLD@bibunit\@gobble
+\def\@bibunit{\endbibunit\bibunit\OLD@bibunit}
+\def\@endbibunit{}
+%
+% \bibliographyunit definition
+%
+\def\bibliographyunit{\@endbibunit
+ \@ifnextchar[{\@bibliographyunit}{%
+ \global\let\OLD@bibunit\@gobble
+ \global\let\bibliography\REALbibliography
+ \global\let\bibliographystyle\REALbibliographystyle
+ \endbibunit
+ \gdef\@endbibunit{}}}
+\def\@bibliographyunit[#1]{%
+ \global\let\bibliography\NEWbibliography
+ \global\let\bibliographystyle\NEWbibliographystyle
+ \global\let\OLD@bibunit#1
+ \global\let#1\@bibunit
+ \gdef\@endbibunit{\global\let#1\OLD@bibunit}}
+%
+% \putbib definition
+%
+\def\putbib{\@ifnextchar[{\@putbib}{\@putbib[\@bibdata]}}
+\def\@putbib[#1]{\if@filesw
+ \immediate\write\@bibunitaux{\string\bibdata{#1}}\fi
+ \@input{\jobname.\the\@bibunitauxcnt.bbl}}
+
+\endinput
+
+In article <1991Aug29.012118.8708@cs.cornell.edu> rjohnson@cs.cornell.edu (Richard C. Johnson) writes:
+
+ Is there a way to make a multisection bibliography using LaTex and Bibtex?
+ Ideally, I'd like to be able to do something like:
+
+ \section{VLIW Architectures}
+ \nocite{Colwell87}
+ \nocite{ ...etc...
+
+ \section{Trace Scheduling}
+ \nocite{Fisher81}
+ \nocite{ ...etc...
+
+ and end up with a multisection bibliography. Any suggestions other than
+ resorting to using \bibitem's out of the .bbl file? Thanks in advance.
+
+ Richard Johnson rjohnson@cs.cornell.edu
+
+I created a style called bibunits.sty that allow that some other
+things more. You can specify if you want bibliografy by chapters,
+sections or by your own subdivision. You can also specify if you want
+that all the reference be callected ALSO in a global bibliography or
+not.
+
+Here is the style, have fun.
+
+--
+:/ \ Jose Alberto Fernandez R | INTERNET: alberto@cs.umd.edu
+:| o o | Dept. of Computer Sc. | BITNET: alberto@cs.umd.edu
+:| ^ | University of Maryland | UUCP: {...}!mimsy!alberto
+:\ \_/ / College Park, MD 20742 |