%% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %\iffalse % % (c) copyright 2001-2004 Apostolos Syropoulos % This software is derived from original software by the LaTeX3 Project. % This program can be redistributed and/or modified under the terms % of the LaTeX Project Public License Distributed from CTAN % archives in directory macros/latex/base/lppl.txt; either % version 1 of the License, or any later version. % % Please report errors or suggestions for improvement to % % Apostolos Syropoulos % 366, 28th October Str. % GR-671 00 Xanthi, GREECE % apostolo@ocean1.ee.duth.gr or apostolo@obelix.ee.duth.gr %\changes{v1.1}{2004/07/27}{Added percent symbols to avoid unnecessary % wait space.} %\fi % \CheckSum{125} % \iffalse This is a Metacomment % % \begin{macrocode} %<*driver> \documentclass{ltxdoc} \GetFileInfo{multibbl.drv} \begin{document} \DocInput{multibbl.dtx} \end{document} % % \end{macrocode} % \fi % %\title{The ``multibbl'' package} %\author{Apostolos Syropoulos\\366, 28th October Str.\\ %GR-671 00 Xanthi, HELLAS\\ %Email:\texttt{apostolo@obelix.ee.duth.gr}\\ or \\ %\hphantom{Email:}\texttt{apostolo@ocean1.ee.duth.gr}} % \date{2004/07/27} %\maketitle % \begin{abstract} % The package ``multibbl'' redefines the standard commands bibliographic % commands so that one can generate multiply reference sections. Each % section has it own auxiliary file (for use with BibTeX) and title. % \end{abstract} %\MakeShortVerb{\|} %\StopEventually{} %\section{Introduction} % This package has been designed for people who write a document that % has references in languages that use different scripts. For example, % if one prepares a book in Greek, then his/her document may have % references in Greek and in English. In this particular case, it makes % no sense to sort the references and have only one bibliography section. % It is better to have two bibliography sections: one for the Greek % references and on for the English references. Moreover, it is possible % to have references in more than two scripts. Then we obviously, need % three or even more bibliography sections. By the redefining the standard % \LaTeX\ user interface commands, this package makes it possible to have % two or more bibliography sections in one document. Naturally, one can % use this package for documents that use only one script, just in case % there is a need to have multiply bibliography sections. % % \section{The code} % % As usual, we first have to identify the package: % \begin{macrocode} % \NeedsTeXFormat{LaTeX2e}[1996/01/01] \ProvidesPackage{multibbl}[2007/07/27\space v1.1] \typeout{Package: `multibbl' v1.1\space <2004/07/27> (A. Syropoulos)} % \end{macrocode} % %\begin{macro}{\newbibliography} % Now we have to define a new command which has one argument: the name of % a new auxiliary file. If that file does not exist, it simply creates % this file. % \begin{macrocode} \def\newbibliography#1{\begingroup \if@filesw \expandafter\newwrite\csname #1@auxfile\endcsname \expandafter\immediate\openout \csname #1@auxfile\endcsname #1.aux\relax \typeout{Writing auxiliary file #1.aux }\fi \endgroup} % \end{macrocode} %\end{macro} % %\begin{macro}{\@citex} % The command |\@citex| is used internally to process the arguments of % the |\cite| command. Since, the later command has now two required % arguments, the name of an auxiliary file and the usual citation labels, % we have to redefine the |\@citex| command so that these labels are % written into the auxiliary file, just in case we want to generate the % bibliography with BibTeX. What we actually do is to replace the code % \begin{verbatim} % \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi % \end{verbatim} % with the code % \begin{verbatim} % \@ifundefined{#2@auxfile}{}{\expandafter\immediate% % \write\csname #2@auxfile\endcsname{\string\citation{\@citeb}}}% % \end{verbatim} % This code checks whether we have defined the control sequence % |#2@auxfile|, where |#2| is the first required argument, i.e., the % name of the auxiliary file, and if it is it writes the citation % labels to this file. % \begin{macrocode} \def\@citex[#1]#2#3{% \let\@citea\@empty \@cite{\@for\@citeb:=#3\do {\@citea\def\@citea{,\penalty\@m\ }% \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% \@ifundefined{#2@auxfile}{}{\expandafter\immediate% \write\csname #2@auxfile\endcsname{\string\citation{\@citeb}}}% \@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}{\bibliography} % The |\bibliography| command has been redefined to take three required % arguments: the first is the name of the auxiliary file, the second is % the argument that the standard command has and the third is the % the title of the bibliographic section, i.e., what will appear % in the running heads, etc. In order to do this, we have to redefine the % commands |\bibname| and |\refname|, which are used to typeset the running % heads, etc. % \begin{macrocode} \def\bibliography#1#2#3{% \@ifundefined{#1@auxfile}{}{\expandafter\immediate% \write\csname #1@auxfile\endcsname{\string\bibdata{#2}}}% \def\bibname{#3}% \def\refname{#3}% \@input@{#1.bbl}} % \end{macrocode} %\end{macro} % %\begin{macro}{\bibliographystyle} % The |\bibliographystyle| command has two arguments: the name of an % auxiliary file and the name of a bibliographic style. With this % command one can specify the bibliographic style each bibliography section % will have. Although, at first sight it makes no sense to use different % bibliographic styles. However, we believe that this feature may be proved % useful in cases where it is not possible to distinguish to which % bibliography section each citation belongs to. % \begin{macrocode} \def\bibliographystyle#1#2{% \ifx\@begindocumenthook\@undefined\else \expandafter\AtBeginDocument \fi \@ifundefined{#1@auxfile}{}{\expandafter\immediate% \write\csname #1@auxfile\endcsname{\string\bibstyle{#2}}}}% % \end{macrocode} %\end{macro} % %\begin{macro}{\nocite} % The |\nocite| command has been redefined so that it has two required % arguments: the name of an auxiliary file and the standard argument. % \begin{macrocode} \def\nocite#1#2{\@bsphack \@for\@citeb:=#2\do{% \edef\@citeb{\expandafter\@firstofone\@citeb}% \@ifundefined{#1@auxfile}{}{\expandafter\immediate% \write\csname #1@auxfile\endcsname{\string\citation{\@citeb}}}% \@ifundefined{b@\@citeb}{\G@refundefinedtrue \@latex@warning{Citation `\@citeb' undefined}}{}}% \@esphack} % \end{macrocode} %\end{macro} % Although it is not necessary to explicitly terminate a % package, we believe it is good practice to do it. % \begin{macrocode} \endinput % % \end{macrocode} % \section*{Acknowledgment} % I thank Antonis Tsolomitis for checking this usability of this package. % \section*{Dedication} % To the fond memory of my late brother Mikhail Syropoulos. % \Finale