1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
%% ttb_en.sec5.tex
%% Copyright 2003-2005 Nicolas Markey
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
% The Current Maintainer of this work is Nicolas Markey
%
% This work consists of the files
% ttb_en.tex
% ttb_en.sec1.tex ttb_en.sec2.tex ttb_en.sec3.tex
% ttb_en.sec4.tex ttb_en.sec5.tex ttb_style.sty
% local.bib idxstyle.ist Makefile
% and the derived ttb_en.dvi, ttb_en.ps and ttb_en.pdf
\mypart{Other use of \bt}\label{autres}
\parttoc
\mtcskip
Here are some general extensions, showing how to use \bt for other purposes.
I'm developing some of those extensions, and you can get the latest news on my web
page:
\begin{center}
\url{http://www.lsv.ens-cachan.fr/~markey/bibla.php}.
\end{center}
Don't hesitate to give me your comments and ideas.
\mysection{A publication list}
This is not really a wide extension of the use of \bt, since it still deals
with bibliography. In this example, we use classical \ext{bib} files in order
to extract only publications by one single person, indicating the names of the
possible other authors. This gives, for instance:
\begin{myex}
\def\refname{Books by Michel \textsc{Goossens}}
\begin{thebibliography}{9}
\bibitem{companion}
{\em the \LaTeX{} Companion}.
Addison-Wesley, 1993.
Joint work with Frank Mittelbach and Alexander Samarin.
\bibitem{graphics}
{\em the \LaTeX{} Graphics Companion}.
Addison-Wesley, 1999.
Joint work with Sebastian Rahtz and Frank Mittelbach.
\bibitem{webc}
{\em the \LaTeX{} Web Companion}.
Addison-Wesley, 1999.
Joint work with Sebastian Rahtz.
\end{thebibliography}
\end{myex}
There are three important points here:
\begin{itemize}
\item In this case, the entries to be cited are extracted by the style file;
\item Typesetting of names is a little bit different.
\end{itemize}
The third difference consists in the way the style is configured: Instead of
asking the user to modify the \ext{bst} file, which is rarely desirable, we
add a new entry-type, named \nient{config}. A \nient{config} entry will define
the name of the author whose publications are to be extracted, as well as some
other configuration variables.
\mysection{An addressbook}
A list of addresses is a database, that has to be sorted, grouped and typeset.
\bt should be able to do that...
To that aim, we have to completely redefine the fields, entry-types, and
functions. Fields include names, addresses, phone numbers, e-mail
addresses,~... Here is an example of the output:
\bigskip
\makeatletter
\font\lettre=cmssdc10 at 20pt
\def\at{@}
\ifx\sautepage\@undefined%
\def\sautepage{\null\cleardoublepage}\fi
\ifx\ecritlettre\@undefined%
\def\ecritlettre#1#2#3#4#5{
\vbox to 0pt{
\vspace{#3mm}\hspace{#1mm}
\smash{\colorbox[rgb]{.8,.8,.8}{\lettre \ \
\vrule height #2mm depth #2mm width 0pt%
\vrule height 8mm depth 0mm width 0pt%
\hbox to #4mm{#5\hfil\null}%
}}
\vspace{-#3mm}\hspace{-#1mm}}}\fi
\small
\makeatother
\ecritlettre{157}{5}{10}{20}{mn}
\noindent
\begin{center}
\begin{tabular}{|p{.30\textwidth}|p{.4\textwidth}p{.18\textwidth}|}
\hline
{\vrule height 5mm width 0mm
{\normalsize \textsc{Markey} Nicolas
}} \vrule height 0mm depth 5mm width 0mm &
\vrule height 5mm width 0mm
LSV -- ENS Cachan\endgraf
61, avenue du Pr\'esident Wilson\endgraf
94235 \textsc{Cachan} C\'edex\vrule depth 3mm width 0mm
& \vrule height 5mm width 0mm
\Telefon \hfill01.47.40.75.32\endgraf
\Faxmachine \hfill01.47.40.24.64\endgraf
\\ &
\multicolumn{2}{l|}{\texttt{markey\at lsv.ens-cachan.fr}} \vrule depth 2mm
width 0mm
\\ \hline
\end{tabular}
\end{center}
As in the previous example, I defined a \nient{config} entry-type in order to
define how letters should be grouped together,~...
\mysection{Exporting, extracting and cleaning bibliographic entries}
\label{bibexport}
It sometimes occurs that you have to extract a part of your bibliographic
database, for instance for sending it together with a \LaTeX~document. Several
tools already exist for doing this, but they generally can't handle crossrefs,
macros, string abbreviations,~... If fact, \bt can do this on its own: You
simply have to ask the bibliography style to format its output as a
\ext{bib} database (The result will be named \ext{bbl}, since there is no way
to tell \bt to write somewhere else). This technique has many advantages: It
ensures that the fields are treated exactly as \bt would treat them with
another style file; abbreviations are automatically expanded; It is easy to
extract all the references by one author (remember that names could be encoded
in many different manners inside a \ext{bib} database),~...
The package \verb+bibexport+ implements these techniques:
\url{http://www.ctan.org/tex-archive/biblio/bibtex/contrib/bibexport/}
\mysection{Using several languages in one bibliography}
Classical bibliography style only handle one language, generally English.
Handling several languages is quite tricky: First, when filling the \ext{bib}
file, you must ensure not to write language-dependant data. Namely, for
instance, months should be entered numerically. Moreover, \bt adds some words
while processing the entries, such as the ``and'' before the last author name.
There are several solution for handling several languages:
\begin{itemize}
\item Designing one style file per language. This is somewhat tiring to do,
but not really complicated, and many such translations already exist.
French styles are available on
\url{http://www.ctan.org/tex-archive/biblio/bibtex/contrib/bib-fr/}. In
those styles, I put every translated word at the beginning of the file, so
that it is easy to adapt the translation.
\item Another solution is to replace language-dependant words with a \LaTeX
command. This is done in \textsf{babelbib}
(\url{http://www.ctan.org/tex-archive/biblio/bibtex/contrib/babelbib/}),
developed by Harald Harders.
Those style files require that you use the package \sty{babel}, and allows
you to define one language for each entry (and thus to use the right
hyphenation patterns).
\end{itemize}
\mysection{A glossary}
A glossary is a dictionary defining technical terms that appear in a
document. Glossaries are generally made using the index mechanisms of \LaTeX.
But \bt can also do that (and even better than with \nicmd{index}, since it
could extract definitions from a general dictionary). Moreover, it is
possible to add reference to pages where the term is used by using the
\sty{backref} package. See for instance the package \sty{gloss}, developed by
Jose Luis Diaz de Arriba and Javier Bezos.
|