diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:51:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:51:46 +0000 |
commit | 59c94a0a96e936395186b2fc9e5aa3a20ad148da (patch) | |
tree | af862f50822a4a04882c0600399e0c41e3931d36 /Master | |
parent | 66b690e767901b9af2f49f3a6318e527e8013767 (diff) |
authorindex
git-svn-id: svn://tug.org/texlive/trunk@685 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/tex/latex/authorindex/authorindex.sty | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/authorindex/authorindex.sty b/Master/texmf-dist/tex/latex/authorindex/authorindex.sty new file mode 100644 index 00000000000..58ea9f3a4a4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/authorindex/authorindex.sty @@ -0,0 +1,125 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{authorindex}[2002/09/13 make index of authors cited in a work] +% \ainame and \aipages determine the format of the author name and the page +% list, respectively, and are to be \renewcommand-ed explicitly by the user. +% \aibibpage and \aifirstpage are styles for pages where works appear in the +% references and where the author is the first author of the work, respectively +\def\ainame#1{#1} +\def\aitop#1{#1} +\def\airep#1{#1} +\def\aifirst#1{#1} +\def\aipages#1{#1} +\def\aibibpage#1{#1} +\def\aifirstpage#1{#1} +% The following stuff can be changed via options to \usepackage +\newcommand\aisize{} +\def\@ainamefmt{} +\def\@aieditors{0} +\def\@aiwhat{pages} +% These Options will be handled directly by LaTeX +\DeclareOption{small}{\renewcommand\aisize{\small}} +\DeclareOption{normal}{\renewcommand\aisize{\normalsize}} +% These Options will go to the perl script and be used to build the .bst file. +\let\aioptions\@gobble +\DeclareOption{editors}{\renewcommand\@aieditors{2}} +\DeclareOption{avoideditors}{\renewcommand\@aieditors{1}} +\DeclareOption{onlyauthors}{\renewcommand\@aieditors{0}} +\DeclareOption{fullname}{\renewcommand\@ainamefmt{{vv }{ll}{, ff}{, jj}}} +\DeclareOption{lastname}{\renewcommand\@ainamefmt{{vv }{ll}}} +\DeclareOption{firstabbrev}{\renewcommand\@ainamefmt{{vv }{ll}{, f.}{, jj}}} +\DeclareOption{all}{\def\@aiwhich{9999}\def\@aitrunc{9999}} +\DeclareOption{onlyfirst}{\def\@aiwhich{1}\def\@aitrunc{1}} +\DeclareOption{miniindex}{\AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\string\aiinbibflag}\fi}}% +\DeclareOption{nocompress}{\AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\string\ainocompressflag}\fi}}% +\DeclareOption{pages}{\renewcommand\@aiwhat{pages}} +\DeclareOption{biblabels}{\renewcommand\@aiwhat{labels}} +\DeclareOption{withbib}{\AtBeginDocument{% + \let\@aiobibitem=\@bibitem\let\@aiolbibitem=\@lbibitem% + \def\@lbibitem[#1]#2{\@aiolbibitem[#1]{#2}% + \if@filesw{\protected@write\@auxout{} + {\string\bibpage{#2}{\theaipage}}}\fi\ignorespaces}% + \def\@bibitem#1{\@aiobibitem{#1}% + \if@filesw{\protected@write\@auxout{} + {\string\bibpage{#1}{\theaipage}}}\fi\ignorespaces}}}% +\ExecuteOptions{normal,fullname,all} +\ProcessOptions +% make sure options and filename are transfered to the perl script. +\expandafter\AtBeginDocument{\if@filesw\immediate{% + \write\@auxout{% + \string\aioptions{\@aieditors|\@ainamefmt|\@aiwhich|\@aitrunc|\@aiwhat}}% + \write\@auxout{\string\aifilename{\jobname.ain}}}% + \fi% + \def\aipagetypeorder{\@notprerr}% Generate error messages when used outside + \def\aimaxauthors{\@notprerr}% preamble. + \def\authorindexstyle{\@notprerr}% + \def\aisee{\@notprerr}% + \def\aitwosuffix{\@notprerr}% + \def\ainamefmt{\@notprerr}} +% Define commands to be put in the .aux file and only used by the perl script. +\let\pagetypeorder\@gobble +\let\aiseestring\@gobble +\let\aitwostring\@gobble +\let\ainocompressflag\relax +\let\aiinbibflag\relax +\let\aistyle\@gobble +\let\citationpage\@gobbletwo +\let\bibpage\@gobbletwo +\let\aiexplicit\@gobbletwo +\let\aifilename\@gobble +% By default, the numbers that appear in the index are the same that appear on +% the pages. In case this does not suffice for everybody (for example, in a 2 +% volume book, one might want the volume number appear in the index, but not +% in the page numbering) one can redefine this: +\def\theaipage{\thepage} +% determine the relative order of different numbering types (roman, arabic,...) +\def\aipagetypeorder#1{\AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\string\pagetypeorder{#1}}\fi}}% +% determine string by which first author is cross referenced +\def\aisee#1{\AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\string\aiseestring{#1}}\fi}}% +% determine string for abbreviation of two subsequent pages +\def\aitwosuffix#1{\AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\string\aitwostring{#1}}\fi}}% +% determines representation of miniindices +\def\aibibindex#1{\{\textbf{#1}\}} +\def\bibindex#1{\ifx\\#1\\\@bsphack\@esphack\else\aibibindex{#1}\fi} +% \authorindexstyle{x} writes \aistyle{x} to the .aux-file. x later will be +% used to select the x.bst as the bibstyle used to generate the author list +% from the database (overriding the generated .bst file). +\def\authorindexstyle#1{\AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\string\aistyle{#1}}\fi}} +% determine formating and order of names +\def\ainamefmt#1{\def\@ainamefmt{#1}} +% Allow for other max. number of authors apart from 1 and 9999. +% First Argument lets us determine to how many authors to truncate the list. +\def\aimaxauthors{\@ifnextchar[\@aitruncmaxauthors\@aimaxauthors} +\def\@aitruncmaxauthors[#1]#2{\def\@aitrunc{#1}\def\@aiwhich{#2}} +\def\@aimaxauthors#1{\def\@aitrunc{#1}\def\@aiwhich{#1}} +% \aicite behaves similar to cite, but additionally writes for each key given +\def\@aicitey#1{% + \@for\@citeb:=#1\do + {\protected@write\@auxout{}% + {\string\citationpage{\@citeb}{\theaipage}}}} +\def\@aicitex[#1]#2{\@citex[#1]{#2}\@aicitey{#2}} +% \aicite behaves similar to cite, but additionally writes for each key given +\DeclareRobustCommand\aicite{% + \@ifnextchar [{\@tempswatrue\@aicitex}{\@tempswafalse\@aicitex[]}}% +\let\@oldnocite=\nocite +\def\ainocite#1{\@aicitey{#1}\@oldnocite{#1}} +\def\aionly{\@aicitey} +% \aimention gets authors BibTeX author name format to be included in the +% author index without having any reference of a work of that author. +\def\aimention#1{\@bsphack% + \protected@write\@auxout{}{\string\aiexplicit{#1}{\theaipage}}\@esphack} +% include author index +\newcommand\printauthorindex{\@input@{\jobname.ain}} +% the theauthorindex environment +\newenvironment{theauthorindex}{% + \raggedright% + \setlength{\leftskip}{1em}% + \setlength{\parindent}{-1em}% + \def\item[##1]{\par\hspace{0mm}\ainame{##1}} + \aisize}{\par} +\endinput |