diff options
author | Karl Berry <karl@freefriends.org> | 2013-05-16 22:55:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-05-16 22:55:14 +0000 |
commit | 6e963aa4445a7e0e8549406ccd3932e364cb8d92 (patch) | |
tree | 0d566d831939243c72a409c8d72c37cdf57a7bf7 /Master/texmf-dist/source/latex/multibibliography | |
parent | c83d63f6fbac0f31d4f72cdaa6cd11786d6f5c03 (diff) |
multibibliography (16may13)
git-svn-id: svn://tug.org/texlive/trunk@30511 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/multibibliography')
-rw-r--r-- | Master/texmf-dist/source/latex/multibibliography/multibibliography.dtx | 441 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/multibibliography/multibibliography.ins | 28 |
2 files changed, 469 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/multibibliography/multibibliography.dtx b/Master/texmf-dist/source/latex/multibibliography/multibibliography.dtx new file mode 100644 index 00000000000..6786a624a50 --- /dev/null +++ b/Master/texmf-dist/source/latex/multibibliography/multibibliography.dtx @@ -0,0 +1,441 @@ +% \iffalse +% $Id: multibibliography.dtx,v 1.8 2013-05-16 02:47:54 boris Exp $ +% +%% Copyright 2013, Michael Cohen <mcohen@u-aizu.ac.jp> +%% Yannis Haralambous <yannis.haralambous@telecom-bretagne.eu> +%% Boris Veytsman <borisv@lk.net> +%% 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 the 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/06/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Michael Cohen +%% +%% This work consists of the file multibibliography.dtx, the +%% derived file multibibliography.sty, and the files +%% chronological.bst and multibibliography.pl +%% +%<*gobble> +% \fi +% \CheckSum{193} +% +% +%% \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 +% \begin{macrocode} +\documentclass{ltxdoc} +\usepackage[breaklinks,colorlinks,linkcolor=black,citecolor=black, + pagecolor=black,urlcolor=black]{hyperref} +\usepackage{multibibliography} +\PageIndex +\CodelineIndex +\RecordChanges +\EnableCrossrefs +\begin{document} + \DocInput{multibibliography.dtx} +\end{document} +% \end{macrocode} +%</gobble> +% \fi +% \MakeShortVerb{|} +% \GetFileInfo{multibibliography.sty} +% +% \title{The Multibibliography Package\thanks{\copyright 2013 Michael +% Cohen and Yannis Haralambous}} +% \author{Michael Cohen\thanks{mcohen@u-aizu.ac.jp} \and +% Yannis Haralambous\thanks{yannis.haralambous@telecom-bretagne.eu} +% \and Boris Veytsman \thanks{borisv@lk.net}} +% \date{\filedate, \fileversion} +% \maketitle +% +% \begin{abstract} +% Conventional standards for bibliography styles entail a forced +% choice between index and name/year citations and corresponding +% references. We reject this false dichotomy, and describe a +% multibibliography, comprising alphabetic, sequenced, and even +% chronological orderings of references. An extended inline +% citation format is also proposed to integrate such heterogeneous +% styles, and is usable and useful even without separate +% bibliographies. +% \end{abstract} +% \changes{v1.02}{2013/03/26}{Fixed the bug in multibibliography.pl +% that prevented correct handling of accents} +% +% \tableofcontents +% +% \clearpage +% +%\section{Introduction} +%\label{sec:intro} +% +% This package illustrates our novel system for a multibibliography, which +% combines alphabetic, sequenced, and chronological ordering of +% references. The rationale for the system is provided in the +% enclosed TUG paper. This package provides the code for the +% system. +% +%\section{User Interface} +%\label{sec:interface} +% +% The installation of the class follows the usual +% practice~\cite{TeXFAQ} for \LaTeX{} packages: +% \begin{enumerate} +% \item Run \textsf{latex} on |multibibliography.ins|. This will produce the file +% |multibibliography.sty|. +% \item Put the file |multibibliography.sty| to +% the place where \LaTeX{} can find it (see +% \cite{TeXFAQ} or the documentation for your \TeX{} +% system).\label{item:install} +% \item Put the file |chronological.bst| to the place where Bib\TeX\ +% can find it (see +% \cite{TeXFAQ} or the documentation for your \TeX{} +% system). +% \item Put the file |multibibliography.pl| into the place where +% binaries are stored on your system. +% \item Update the database of file names. Again, see \cite{TeXFAQ} +% or the documentation for your \TeX{} system for the system-specific +% details.\label{item:update} +% \item The files |multibibliography.pdf| and |tug-paper.pdf| provide +% the documentation for the package +% \end{enumerate} +% As an alternative to items~\ref{item:install} and~\ref{item:update} +% you can just put the files in the working directory where your +% |.tex| file is. +% +% +% +% To use this package, add to the preamble of your document +% the line |\usepackage{multibibliography}|. After |latex|'ing the +% file, instead of running +% \begin{verbatim} +% bibtex FILE +% \end{verbatim} +% run +% \begin{verbatim} +% multibibliography.pl FILE.tex +% \end{verbatim} +% Then proceed in the usual way (run |latex| until the labels converge). +% +% \DescribeMacro{\bibliographysequence} +% \DescribeMacro{\bibliographytimeline} +% The file defines two new commands: +% \cmd{\bibliographysequence}\marg{bib-files} and +% \cmd{\bibliographytimeline}\marg{bib-files} which are similar to the +% standard |\bibliography| command, but produce the reference lists +% ordered according to the sequence of citations or chronologically. +% They use |unsrt.bst| and |chronological.bst| styles +% correspondingly. An example of usage can be found in the file +% |tug-paper.tex|: +% \begin{verbatim} +% \renewcommand\refname{References sorted by name} +% \bibliographystyle{apalike} +% \bibliography{multibibliography} +% +% \renewcommand\refname{References sorted by appearance} +% \bibliographysequence{multibibliography} +% +% \renewcommand\refname{References sorted by year} +% \bibliographytimeline{multibibliography} +% +% \end{verbatim} +% +% +%\StopEventually{\clearpage +% \bibliography{multibibliography} +% \bibliographystyle{unsrt}} +% +% \clearpage +% +% \section{Implementation} +% \label{sec:implementation} +% +% +%\subsection{Declarations} +%\label{sec:decl} +% +% We start with declaration, who we are: +% +% +% \begin{macrocode} +%<style>\NeedsTeXFormat{LaTeX2e} +%<*gobble> +\ProvidesFile{multibibliography.dtx} +%</gobble> +%<style>\ProvidesPackage{multibibliography} +%<*style> +[2013/03/26 v1.02 Multibibliography support for LaTeX] +% \end{macrocode} +% +% +% +%\subsection{Hyperref Patching} +%\label{sec:hyperref} +% +% \begin{macro}{\NAT@parse} +% \changes{v1.01}{2013/02/28}{Introduced the command} +% Hyperref redefines a lot of bibliography related commands. +% Fortunately, there is a mechanism in hyperref to prevent this: if +% hyperref sees natbib, it defers to it. Well, we can dupe hyperref +% into thinking natbib is loaded: +% \begin{macrocode} +\providecommand\NAT@parse[1]{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@extra@binfo} +% \changes{v1.01}{2013/02/28}{Introduced the command} +% This is a hook defined by natbib. We preserve it just in case: +% \begin{macrocode} +\providecommand*\@extra@binfo{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@extra@b@citeb} +% \changes{v1.01}{2013/02/28}{Introduced the command} +% Another natbib hook: +% \begin{macrocode} +\providecommand*\@extra@b@citeb{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@BIBLABEL} +% \changes{v1.01}{2013/02/28}{Introduced the command} +% This is a hyperref hook +% \begin{macrocode} +\providecommand*{\@BIBLABEL}{\@biblabel} +% \end{macrocode} +% +% \end{macro} +% +% +% In case hyperref is not loaded, we provide some noops +% \begin{macrocode} +\AtBeginDocument{ + \ifx\hyper@@link\@undefined + \providecommand\@skiphyperreftrue{}% + \providecommand\@skiphyperreffalse{}% + \let\H@item\item + \providecommand\Hy@raisedlink[1]{#1}% + \let\hyper@anchorstart\@gobble + \providecommand\hyper@@link[4][]{#4}% + \providecommand{\hyper@anchorend}{}% + \providecommand{\@currentHref}{}% + \fi} +% \end{macrocode} +% +% +%\subsection{Checking for backref} +%\label{sec:backref} +% +% \begin{macro}{\if@BR@tocstarted} +% \changes{v1.02}{2013/03/26}{Added macro} +% Backref rewrites |.brf| file with each iteration. So we need to +% make sure we call |\BR@starttoc| no more than once +% \begin{macrocode} +\newif\if@BR@tocstarted +\@BR@tocstartedfalse +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\if@backref@loaded} +% \changes{v1.02}{2013/03/26}{Added macro} +% We need to check whether backref is loaded: +% \begin{macrocode} +\newif\if@backref@loaded +\AtBeginDocument{% + \@ifpackageloaded{backref}{\@backref@loadedtrue + \let\BR@starttoc@orig\BR@starttoc + \def\BR@starttoc{\if@BR@tocstarted\else + \BR@starttoc@orig\@BR@tocstartedtrue\fi} +}{\@backref@loadedfalse}} +% \end{macrocode} +% +% \end{macro} +% +%\subsection{Creating Bibliography Labels} +%\label{sec:MBbibcite} +% +% \begin{macro}{\MBbibcite} +% \changes{v1.01}{2013/02/28}{Introduced the command} +% \changes{v1.02}{2013/03/26}{Added backref code} +% The standard |\bibcite| command has two arguments: the label and +% the typeset represenation. Our command has four arguments: +% sequence number, name, date, label. We also write |\backcite| to +% the aux file if backref is called. +% \begin{macrocode} +\def\MBbibcite#1#2#3#4{% + \@newl@bel{b}{#1\@extra@binfo}{% + \hyper@@link[cite]{}{cite.#1\@extra@b@citeb}{#3}, + \hyper@@link[cite]{}{cite.#1\@extra@b@citeb-timeline}{#4}: + \hyper@@link[cite]{}{cite.#1\@extra@b@citeb-sequence}{#2}% + \if@filesw + \if@backref@loaded\phantomsection + \immediate\write\@mainaux{% + \string\backcite{#1}{{\thepage}{\@currentlabel}{\@currentHref}}}\fi\fi + }% +}% +% \end{macrocode} +% +% \end{macro} +% +%\subsection{Bibliography Commands} +%\label{sec:default} +% +% The default command is defined for references sorted by +% name---it is invoked by |\bibliography|. +% +% \begin{macro}{\@lbibitem} +% \changes{v1.01}{2013/02/28}{Redefined} +% \changes{v1.02}{2013/03/26}{Added interlinks} +% By default |\@lbibitem| typesets the optional argument, creates a +% hyperanchor and writes a command into the aux file. The following +% uses hyperref code: +% \begin{macrocode} + \def\@lbibitem[#1]#2{% + \gdef\MB@sequence{}% + \gdef\MB@name{}% + \gdef\MB@name{}% + \def\MBlabel##1##2##3{##2, + \hyper@@link[cite]{}{cite.#2\@extra@b@citeb-timeline}{##3}: + \hyper@@link[cite]{}{cite.#2\@extra@b@citeb-sequence}{##1}% + \gdef\MB@sequence{##1}% + \gdef\MB@name{##2}% + \gdef\MB@date{##3}% + }% + \@skiphyperreftrue + \H@item[% + \ifx\Hy@raisedlink\@empty + \hyper@anchorstart{cite.#2\@extra@b@citeb}% + \@BIBLABEL{#1}% + \hyper@anchorend + \else + \Hy@raisedlink{% + \hyper@anchorstart{cite.#2\@extra@b@citeb}\hyper@anchorend + }% + \@BIBLABEL{#1}% + \fi + \hfill + ]% + \@skiphyperreffalse + \if@filesw + \begingroup + \let\protect\noexpand + \immediate\write\@auxout{% + \string\MBbibcite{#2}{\MB@sequence}{\MB@name}{\MB@date}% + }% + \endgroup + \fi + \ignorespaces + } +% \end{macrocode} +% +% \end{macro} +% +% +% +% \begin{macro}{\bibliographysequence} +% \changes{v1.01}{2013/02/28}{Added hyperref-compatible code} +% \changes{v1.02}{2013/03/26}{Added interlinks} +% When we order by sequence, we do not write anything to the aux +% file +% \begin{macrocode} +\def\bibliographysequence#1{% + \def\@lbibitem[##1]##2{% + \def\MBlabel####1####2####3{####1: + \hyper@@link[cite]{}{cite.##2\@extra@b@citeb}{####2}, + \hyper@@link[cite]{}{cite.##2\@extra@b@citeb-timeline}{####3}}% + \@skiphyperreftrue + \H@item[% + \ifx\Hy@raisedlink\@empty + \hyper@anchorstart{cite.##2\@extra@b@citeb-sequence}% + \@BIBLABEL{##1}% + \hyper@anchorend + \else + \Hy@raisedlink{% + \hyper@anchorstart{cite.##2\@extra@b@citeb-sequence}\hyper@anchorend + }% + \@BIBLABEL{##1}% + \fi + \hfill + ]% + \@skiphyperreffalse + \ignorespaces + } + \@input@{\jobname-sequence.bbl}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bibliographytimeline} +% \changes{v1.01}{2013/02/28}{Added hyperref-compatible code} +% \changes{v1.02}{2013/03/26}{Added interlinks} +% This is the ordering by timeline: +% \begin{macrocode} +\def\bibliographytimeline#1{% + \def\@lbibitem[##1]##2{% + \def\MBlabel####1####2####3{% + \hyper@@link[cite]{}{cite.##2\@extra@b@citeb}{####2}, + ####3: + \hyper@@link[cite]{}{cite.##2\@extra@b@citeb-sequence}{####1}}% + \@skiphyperreftrue + \H@item[% + \ifx\Hy@raisedlink\@empty + \hyper@anchorstart{cite.##2\@extra@b@citeb-timeline}% + \@BIBLABEL{##1}% + \hyper@anchorend + \else + \Hy@raisedlink{% + \hyper@anchorstart{cite.##2\@extra@b@citeb-timeline}\hyper@anchorend + }% + \@BIBLABEL{##1}% + \fi + \hfill + ]% + \@skiphyperreffalse + \ignorespaces + } + \@input@{\jobname-timeline.bbl}} +% \end{macrocode} +% +% \end{macro} +% +%\subsection{Ending the Style} +%\label{sec:end} +% +% +% +% \begin{macrocode} +%</style> +% \end{macrocode} +%\Finale +%\clearpage +% +%\PrintChanges +%\clearpage +%\PrintIndex +% +\endinput diff --git a/Master/texmf-dist/source/latex/multibibliography/multibibliography.ins b/Master/texmf-dist/source/latex/multibibliography/multibibliography.ins new file mode 100644 index 00000000000..ca0b4d75d04 --- /dev/null +++ b/Master/texmf-dist/source/latex/multibibliography/multibibliography.ins @@ -0,0 +1,28 @@ +% +% Doctrip file for multibibliography +% This file is in public domain +% $Id: multibibliography.ins,v 1.1 2013-02-04 00:06:55 boris Exp $ +% +\def\batchfile{multibibliography.ins} +\input docstrip +\keepsilent +\showprogress + + +\askforoverwritefalse + +\generate{% + \file{multibibliography.sty}{\from{multibibliography.dtx}{style}}} + +\obeyspaces +\Msg{*****************************************************}% +\Msg{* Congratulations! You successfully generated the *}% +\Msg{* multibibliography package. *}% +\Msg{* *}% +\Msg{* Please move the file multibibliography.sty to the *}% +\Msg{* place where LaTeX files are kept in your system, *}% +\Msg{* and the file chronological.bst to the place where *}% +\Msg{* BibTeX files are. *}% +\Msg{* *}% +\Msg{* Happy TeXing! *}% +\Msg{*****************************************************}%
\ No newline at end of file |