The BibTopicPrefix-package^{∗}

Martin Schröder

Crüsemannallee 3 28213 Bremen Germany martin@oneiros.de

2006/10/22

Abstract This package provides a way to prefix references from bib-

liographies produced by the bibtopic package[2].

Contents

1 Introduction 1

2 Usage 1

3 Required packages 2

4 The implementation 2 4.1 Loading packages . . . . . . . . . . . . . . . . . . . . . 2 4.2 The macros . . . . . . . . . . . . . . . . . . . . . . . . 2

5 Acknowledgements 4

1 Introduction

Suppose you want to split your literature in your document into parts (this can be done with the bibtopic package) and you want to make this split visible in the references in the document.

This package loads bibtopic with the right option and then defines a command \bibprefix which should be used inside the btSect environment, whose argument is inserted before every reference (e. g. [1] becomes [⟨prefix⟩1]).

2 Usage

\bibtopic Add an \usepackage{bibtopicprefix}to your document and insert the command \bibprefix{⟨prefix⟩} at the start of every btSect environment.

∗The version number of this file is v1.10, last revised 2006/10/22.

     \begin{btSect}{adlit}
       \renewcommand{\bibprefix}{AD}
       \section{Applicable Documents}
       \btPrintCited
     \end{btSect}
     \begin{btSect}{rdlit}
       \renewcommand{\bibprefix}{RD}
       \section{Reference Documents}
       \btPrintCited
     \end{btSect}

The package works of course best with bibliography styles that produce numerical references (like plain).

3 Required packages

This package requires the following package:

bibtopic[2]It is loaded with the right option so that all bibliographies are numbered indepedently.

scrlfile[4]This is used internally to handle the hyperref[3] package.

4 The implementation

1 ⟨∗package⟩

4.1 Loading packages

We need the scrlfile package[4].

 2 \RequirePackage{scrlfile}

We need the bibtopic package[2] and we have to use the sectcntreset option to number every bibliography seperately.

 3 \RequirePackage[sectcntreset]{bibtopic}

4.2 The macros

\bibprefix \bibprefix defines the prefix for all references henceforce.

 4 \newcommand{\bibprefix}{}

\@bibitem We want to redefine \bibitem to add our prefix. To do this we need to distinguish three cases: the use of the hyperref package, the use of the babel package and the default.

We handle the hyperref package by activating our code after hyperref with the help of \AfterPackage* from scrlfile.

 5 \AfterPackage*{hyperref}{%
 6 \CheckCommand*{\@bibitem}[1]{%
 7  \@skiphyperreftrue\H@item\@skiphyperreffalse
 8  \Hy@raisedlink{%
 9  \hyper@anchorstart{cite.#1}\relax\hyper@anchorend}%
10  \if@filesw

4 THE IMPLEMENTATION 3

11  \begingroup
12  \let\protect\noexpand
13  \immediate\write\@auxout{%
14  \string\bibcite{#1}{%
15  \the\value{\@listctr}}%
16  }%
17  \endgroup
18  \fi
19  \ignorespaces
20  }%
21 \renewcommand*{\@bibitem}[1]{%
22  \@skiphyperreftrue\H@item\@skiphyperreffalse
23  \Hy@raisedlink{%
24  \hyper@anchorstart{cite.#1}\relax\hyper@anchorend}%
25  \if@filesw
26  \begingroup
27  \let\protect\noexpand
28  \immediate\write\@auxout{%
29  \string\bibcite{#1}{%
30  \bibprefix\the\value{\@listctr}}%
31  }%
32  \endgroup
33  \fi
34  \ignorespaces
35  }%
36 }%

If hyperref is not used, we must distinguish between babel and the default. babel saves \@bibitem as \org@@bibitem, so we have to redefine that.

37 \@ifpackageloaded{hyperref}{}{%
38 \@ifpackageloaded{babel}
39  {%
40  \CheckCommand*{\org@@bibitem}[1]{%
41  \item\if@filesw \immediate\write\@auxout
42  {\string\bibcite{#1}{%
43  \the\value{\@listctr}}}%
44  \fi\ignorespaces
45  }%
46  \renewcommand*{\org@@bibitem}[1]{%
47  \item\if@filesw \immediate\write\@auxout
48  {\string\bibcite{#1}{%
49  \bibprefix\the\value{\@listctr}}}%
50  \fi\ignorespaces
51  }%
52  }{%
53  \CheckCommand*{\@bibitem}[1]{%
54  \item\if@filesw \immediate\write\@auxout
55  {\string\bibcite{#1}{%
56  \the\value{\@listctr}}}%
57  \fi\ignorespaces
58  }%
59  \renewcommand*{\@bibitem}[1]{%
60  \item\if@filesw \immediate\write\@auxout

61  {\string\bibcite{#1}{%
62  \bibprefix\the\value{\@listctr}}}%
63  \fi\ignorespaces
64  }%
65  }%

66 }

\@biblabel We redefine \biblabel to add our prefix.

67 \renewcommand*{\@biblabel}[1]{[\bibprefix#1]}

68 ⟨/package⟩

5 Acknowledgements

Developement of this package was financed by the von Hoerner & Sulger GmbH.

References

[1] Johannes Braams Babel, a multilingual package for use with L^{A}TEX’s standard document classes CTAN:tex-archive/macros/

   latex/required/babel/.

[2] Pierre Basso and Stefan Ulrich bibtopic.sty CTAN:tex-archive/

   macros/latex/contrib/bibtopic/.

[3] Sebastian Rahtz and Heiko Oberdiek Hypertext marks in L^{A}TEX

   CTAN:tex-archive/macros/latex/contrib/hyperref/.

[4] Markus Kohm scrlfile.sty Part of KOMA-Script. CTAN:

   tex-archive/macros/latex/contrib/koma-script/.

Index

Numbers written in italic refer to the page where the corresponding entry is described; numbers underlined refer to the code line of the definition; numbers in roman refer to the code lines where the entry is used.

Symbols

\@auxout . . 13, 28, 41, 47, 54, 60 \@bibitem . . . . . . . . . . . . . . . \underline{5} \@biblabel . . . . . . . . . . . . . . \underline{67}

\@ifpackageloaded . . . . . . 37, 38

\@listctr . 15, 30, 43, 49, 56, 62

\@skiphyperreffalse . . . . 7, 22
\@skiphyperreftrue . . . . . 7, 22

A

\AfterPackage . . . . . . . . . . . . 5

B \begingroup . . . . . . . . . . . 11, 26 \bibcite . . 14, 29, 42, 48, 55, 61 \bibprefix …. \underline{4}, 30, 49, 62, 67 \bibtopic . . . . . . . . . . . . . . . 1

C \CheckCommand . . . . . . . 6, 40, 53

E \endgroup . . . . . . . . . . . . 17, 32

Change History 5

F

\fi . . . . . . 18, 33, 44, 50, 57, 63

H

\H@item . . . . . . . . . . . . . . 7, 22

\Hy@raisedlink . . . . . . . . 8, 23
\hyper@anchorend . . . . . . 9, 24
\hyper@anchorstart . . . . . 9, 24

I

\if@filesw . 10, 25, 41, 47, 54, 60

\ignorespaces . . . . . . . . . . .

…. 19, 34, 44, 50, 57, 63 \immediate . 13, 28, 41, 47, 54, 60 \item . . . . . . . . . . 41, 47, 54, 60

L

\let . . . . . . . . . . . . . . . . . 12, 27

N

\newcommand . . . . . . . . . . . . . . 4 \noexpand . . . . . . . . . . . . 12, 27

O \org@@bibitem . . . . . . . . . 40, 46

P \protect . . . . . . . . . . . . . 12, 27

R \relax . . . . . . . . . . . . . . . 9, 24 \renewcommand … 21, 46, 59, 67

                                 \RequirePackage . . . . . . . . 2, 3

S \string … 14, 29, 42, 48, 55, 61

T \the . . . . . . 15, 30, 43, 49, 56, 62

V \value …. 15, 30, 43, 49, 56, 62

W \write …. 13, 28, 41, 47, 54, 60

Change History

v1.10

\@bibitem: Handle babel . . 3 Handle hyperref . . . . . . . 2 General: Load scrlfile . . . . . 2

Use scrlfile . . . . . . . . . . . 2