From c1e1e595bebb609afcffda926804d80da3a79a9b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 10 Jan 2007 22:52:26 +0000 Subject: authorindex (doc) update (28nov06) git-svn-id: svn://tug.org/texlive/trunk@3317 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/authorindex/COPYING | 5 + Master/texmf-dist/doc/latex/authorindex/NEWS | 19 + Master/texmf-dist/doc/latex/authorindex/README | 8 + .../texmf-dist/doc/latex/authorindex/authorindex | 566 +++++++++++++++++++++ .../doc/latex/authorindex/authorindex.dvi | Bin 38080 -> 0 bytes .../doc/latex/authorindex/authorindex.pdf | Bin 0 -> 189149 bytes .../doc/latex/authorindex/authorindex.tex | 102 +++- .../source/latex/authorindex/authorindex | 510 ------------------- .../tex/latex/authorindex/authorindex.sty | 8 +- Master/texmf-dist/tpm/authorindex.tpm | 15 +- Master/texmf/lists/authorindex | 8 +- 11 files changed, 701 insertions(+), 540 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/authorindex/COPYING create mode 100644 Master/texmf-dist/doc/latex/authorindex/NEWS create mode 100644 Master/texmf-dist/doc/latex/authorindex/README create mode 100644 Master/texmf-dist/doc/latex/authorindex/authorindex delete mode 100644 Master/texmf-dist/doc/latex/authorindex/authorindex.dvi create mode 100644 Master/texmf-dist/doc/latex/authorindex/authorindex.pdf delete mode 100644 Master/texmf-dist/source/latex/authorindex/authorindex (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/authorindex/COPYING b/Master/texmf-dist/doc/latex/authorindex/COPYING new file mode 100644 index 00000000000..a2960c90c3e --- /dev/null +++ b/Master/texmf-dist/doc/latex/authorindex/COPYING @@ -0,0 +1,5 @@ +The authorindex package is subject to the LaTeX project public +license. You can find a copy of the license here: + + http://www.latex-project.org/lppl.txt + diff --git a/Master/texmf-dist/doc/latex/authorindex/NEWS b/Master/texmf-dist/doc/latex/authorindex/NEWS new file mode 100644 index 00000000000..fbe7e81e24e --- /dev/null +++ b/Master/texmf-dist/doc/latex/authorindex/NEWS @@ -0,0 +1,19 @@ +November 2006: + +- Include an enhancement by Pieter Eendebak for natbib.cfg (part + of the documentation) + +March 2005: + +- Support for authauthor and autheditor fields in BibTeX data base. + These fields serve to provide a consistent spelling of author names + +- Bugfix: When using multiple BibTeX data bases, they will be queried + in the sequence given in the LaTeX source. This is important when + some data bases define @STRINGs used in others. + +October 2004: + +- Bugfix: Gracefully handle spaces in citation commands with multiple + arguments. Previous versions included the space in the key, which + cased the search in the BibTeX data base to fail. diff --git a/Master/texmf-dist/doc/latex/authorindex/README b/Master/texmf-dist/doc/latex/authorindex/README new file mode 100644 index 00000000000..6a7671761bc --- /dev/null +++ b/Master/texmf-dist/doc/latex/authorindex/README @@ -0,0 +1,8 @@ +This package allows to create an index of all authors cited in a LaTeX +document. Each author entry in the index contains the pages where +these citations occur. Alternatively, the package can list the labels +of the citations that appear in the references rather than the text +pages. + +The package relies on bibtex being used to handle citations. +Additionally, it requires Perl (version 5 or higher). diff --git a/Master/texmf-dist/doc/latex/authorindex/authorindex b/Master/texmf-dist/doc/latex/authorindex/authorindex new file mode 100644 index 00000000000..be1b2d9e15d --- /dev/null +++ b/Master/texmf-dist/doc/latex/authorindex/authorindex @@ -0,0 +1,566 @@ +#!/usr/bin/perl -w +# This file is part of the authorindex package for LaTeX + BibTeX. +# Version: 22. March 2005 + +use strict; + +# configuration: apart from the command to invoke perl above you might want to +# change: + +my $bstenv="BSTINPUTS"; # Environment Variable holding .bst search path +my $bibenv="BIBINPUTS"; # Env Variable holding search path for BibTeX databases +my $tmp="_autidx_"; # Name base for temporary files + +# This script takes LaTeX .aux files as input. It extracts all citations made +# with page number information. These, together with the bibliography data base +# extracted from the input and a .bst file are processed by bibtex to get a +# file that associates each citation label with corresponding authors. Together +# with the knowledge of which work is cited on which page, this is used to +# compute which author is cited on which page. This information is written to +# the output in form suitable to be included in a LaTeX document. +# Alternatively, the script can also extract the label that appears in the +# references for each work instead of the pages. Also, output for further +# processing by makeindex can be generated instead of a 'ready' LaTeX file. + +# examine command line for options + +my %opt; # hash to contain options found +use Getopt::Std; +getopts('dhikpr',\%opt); + +# handle -h option: a short description of the script. + +exists $opt{'h'} && die < hash marking pages with work author is 1st + +my %printname; # sort-key -> printed representation of author +my %plainname; # sort-key -> author name + +my %PageTypeOrder; # Page type code -> number giving relative order +my %PageOrder; # page string -> array used to sort pages + +my $see=""; # string to separate other and first author, or undef. +my $bst=""; # name of BibTeX program to extract author names +my $output=""; # name of file to which author index is written +my $twoabbrev=""; # string to append to page for 2 subsequent pages +my $also=""; # string to cross-refer to first authors +my $alsosep=""; # seperator for referenced first authors + +my $useaibibcite; # flag: watch for \aibibcite, but not for \bibcite. + +# scan input files and +# - build the file later to be processed by BibTeX, +# - generate a temporary bibtex database of the explicit author names given, +# - assemble for each citation the page where it was referenced and +# - look for data base specification, output file name, and so on. + +open(AUXFILE,">$tmp.aux") || die "Can't open temporary file $tmp.aux\n"; +open(BIBFILE,">$tmp.bib") || die "Can't open temporary file $tmp.bib\n"; + +while(<>){ + if(/^\\citationpage\{\s*([^{ ]+)\s*\}\{(.+)\}$/){ + $citationcount++; # used for statistics only. + $workscount++ unless ($1 eq '*') or (exists $Lab2Pag{$1}) + or (exists $Lab2Bib{$1}) or (exists $Lab2Num{$1}); + $pnlist{$2}=""; + push @{$Lab2Pag{$1}},$2; + print AUXFILE "\\citation{$1}\n"; + }elsif(/^\\aibibcite\{([^{]+)\}\{(.+)\}$/){ + $workscount++ unless ($1 eq '*') or (exists $Lab2Pag{$1}) + or (exists $Lab2Bib{$1}) or (exists $Lab2Num{$1}); + $pnlist{$2}=""; + push @{$Lab2Num{$1}},$2; + print AUXFILE "\\citation{$1}\n" if $usenum; + # using \aibibcite implies we want to ignore \bibcite. For this to + # work, in the .aux files, the first \aibibcite must appear before any + # \bibcite. + $useaibibcite="yes"; + }elsif(/^\\bibcite\{([^{]+)\}\{(.+)\}$/){ + unless($useaibibcite){ + $workscount++ unless ($1 eq '*') or (exists $Lab2Pag{$1}) + or (exists $Lab2Bib{$1}) or (exists $Lab2Num{$1}); + $pnlist{$2}=""; + push @{$Lab2Num{$1}},$2; + print AUXFILE "\\citation{$1}\n" if $usenum; + } + }elsif(/^\\bibpage\{([^{]+)\}\{(.+)\}$/){ + $workscount++ unless (exists $Lab2Pag{$1}) + or (exists $Lab2Bib{$1}) or (exists $Lab2Num{$1}); + $pnlist{$2}=""; + push @{$Lab2Bib{$1}},$2; + print AUXFILE "\\citation{$1}\n"; + }elsif(/^\\aiexplicit\{(.+)\}\{(.+)\}$/ and !$usenum){ + # above: page number might not contain '}{' + print BIBFILE "\@MISC{$tmp$explicits,author=\"$1\"}\n"; + $pnlist{$2}=""; + push @{$Lab2Pag{"$tmp$explicits"}},$2; + print AUXFILE "\\citation{$tmp$explicits}\n"; + $explicits++; + }elsif(/^\\bibdata\{(.+)\}$/){ + push @bib, split(",",$1); + }elsif(/^\\aistyle\{(.+)\}$/){ + warn "Multiple \\authorindexstyle\n" if $bst && ($bst ne $1); + $bst=$1; + }elsif(/^\\aioptions\{(.*)\}$/){ + ($editors,$nameformat,$maxnames,$truncnames,$labeltype)=split /\|/,$1; + $usenum|=($labeltype eq "labels"); + if($editors>0){ + $altedit="{ peditor format }"; + $addedit=$altedit if $editors==2; + } + }elsif(/^\\aifilename\{(.+)\}$/){ + warn "Warning: Multiple authorindices\n" if $output; + $output=$1; + }elsif(/^\\\@input\{(.+)\}$/){ + push(@ARGV,$1) unless exists $opt{'r'}; + }elsif(/^\\pagetypeorder\{([rRaAn]+)\}$/){ + $PageTypeOrder=$1; + }elsif(/^\\aiseestring\{(.+)\}$/){ + $see=$1; + }elsif(/^\\aialsostrings\{(.+)\}\{(.+)\}$/){ + $also=$1; + $alsosep=$2; + }elsif(/^\\aitwostring\{(.+)\}$/){ + $twoabbrev=$1; + }elsif(/^\\aiinbibflag$/){ + $miniindex=1; + }elsif(/^\\ainocompressflag$/){ + $nocompress=1; + } +} + +close BIBFILE; + +# output can go to stdout or a filename found in the input files. + +$output || die "You have to include .aux file produced by .tex file containing \\begin{document}\nin the argument list and you have to \\usepackage{authorindex}!\n"; +$output="-" if exists $opt{'p'}; + +# We need at least one BibTeX database + +push @bib, $tmp if($explicits); + +my $bib=join(",",@bib) + || die "You must specify at least one BibTeX database\n"; +print AUXFILE "\\bibdata{$bib}\n"; + +$see && $also && die "\\aisee and \\aialso are mutually exlusive!\n"; + +# if the user hasn't explicitly given a .bst style for formatting author names, +# we generate our own based on the style options found in the input files. + +unless($bst){ + my @nameformat=split /;/,$nameformat; + my ($printkey,$namefmtcmd)=("cite\$ write\$ newline\$\n",""); + for (@nameformat){ + my ($namerep,$sortrep)=split /:/; + $sortrep=$namerep unless $sortrep; + $namefmtcmd.= + "duplicate\$ names swap\$ \"$namerep\" format.name\$ " . + "write\$ newline\$\n" . + "duplicate\$ names swap\$ \"$sortrep\" format.name\$ " . + "purify\$ \"u\" change.case\$ write\$ newline\$\n$printkey"; + $printkey="newline\$\n"; + } + + $ENV{$bstenv}=".:" . (exists $ENV{$bstenv} ? $ENV{$bstenv} : ""); + $bst=$tmp; + open(BSTFILE,">$bst.bst") || die "Can't open $bst.bst\n"; + print BSTFILE < % too many names in list? + { pop\$ #$truncnames } % yes, truncate. + 'skip\$ %' no, keep them all + if\$ + 'numnames := %'save number of names + #0 % start index + { duplicate\$ numnames < } % test for "while\$" + { #1 + % next name + duplicate\$ names swap\$ % get name list and index + "{ll}" format.name\$ % format curr. name + "others" = % et al part? + 'skip\$ %' yes, do not output + { $namefmtcmd } % no: format all + if\$ + } while\$ pop\$ % loop until index is 0 + } + if\$ +} +function{default.type}{pauthor format pauthor empty\$ $altedit $addedit if\$ } +function{article}{default.type} function{book}{default.type} +function{booklet}{default.type} function{inbook}{default.type} +function{incollection}{default.type} function{inproceedings}{default.type} +function{conference}{default.type} function{manual}{default.type} +function{mastersthesis}{default.type} function{misc}{default.type} +function{phdthesis}{default.type} function{proceedings}{default.type} +function{techreport}{default.type} function{unpublished}{default.type} +read iterate{call.type\$} +END + # ... and here comes perl again. + close BSTFILE; +} + +# Now we have decided on our .bst file and can finish the temporary .aux file +# we prepared for BibTeX. + +print AUXFILE "\\bibstyle{$bst}\n"; +close AUXFILE; + +# if we have written to the temporary database, make sure BibTeX can find it. + +$ENV{$bibenv}=".:" . (exists $ENV{$bibenv} ? $ENV{$bibenv} : "") if $explicits; + +# We now give BibTeX all the citation labels. In return we get a file whose +# lines in turn contain an author name and a label of a work of that author. +# The format the author names are given are determined by the BibTeX style file +# $bst.bst. + +print STDERR `bibtex $tmp`; +die "BibTeX error. Aborting leaving all temporary files $tmp.*\n" if $?; + +# if things went well, we can delete all these temporary files made for BibTeX. +# The generated .bst file is kept if the user wishes so (-k option). + +unlink "$bst.bst" if ($bst eq $tmp && !(exists $opt{'k'})); +unlink "$tmp.aux","$tmp.bib"; + +# Decide wether pages or citation labels go to the index + +my %Lab2Ent=%Lab2Pag; +if($usenum){ + %Lab2Ent=%Lab2Num; + %Lab2Bib=(); +}else{ + %Lab2Num=(); +} + +# We have now labels associated with page numbers and labels associated with +# author names (in the file generated by the BibTeX run). Now we can bring +# together the previous two main steps and compute for each author the pages +# where she is cited. In draft mode, we also remember for each author the +# labels of her works and the pages where these works are cited. + +my ($firstauthor,$firstsortname,$Lab,$PrevLab)=("","","",""); +open(BIBFILE,"$tmp.bbl") || die "Can't open $tmp.bbl\n"; +while(){ + chop; s/[\[\]]//g; + my $author=$_; + my ($sortname,$LabOrEmpty); + chop($sortname=); + chop($LabOrEmpty=); + if($LabOrEmpty){ + $PrevLab=$Lab; + $Lab=$LabOrEmpty; + } + my $printname=$author; + if($Lab ne $PrevLab){ + @{$LeadAutPag{$author}}{@{$Lab2Ent{$Lab}}}="" if exists $Lab2Ent{$Lab}; + @{$LeadAutPag{$author}}{@{$Lab2Ent{'*'}}}="" if exists $Lab2Ent{'*'}; + @{$LeadAutPag{$author}}{@{$Lab2Bib{$Lab}}}="" if exists $Lab2Bib{$Lab}; + $firstauthor=$author; + $firstsortname=$sortname; + }else{ + ${$Aut2First{$sortname}}{$firstsortname}=""; + if($see){ + $printname="{$author}$see\\aifirst{$firstauthor}"; + $sortname="$sortname$see$firstsortname"; + } + } + @{$Aut2Pag{$printname}}{@{$Lab2Ent{$Lab}}}="" if exists $Lab2Ent{$Lab}; + @{$Aut2Pag{$printname}}{@{$Lab2Ent{'*'}}}="" if exists $Lab2Ent{'*'}; + @{$Aut2Pag{$printname}}{@{$Lab2Bib{$Lab}}}="" if exists $Lab2Bib{$Lab}; + @{$Aut2Bib{$printname}}{@{$Lab2Bib{$Lab}}}="" if exists $Lab2Bib{$Lab}; + push @{$Aut2Lab{$printname}},$Lab if (exists $opt{'d'}) and $LabOrEmpty; + $printname{$sortname}=$printname; + $plainname{$sortname}=$author; +} +close BIBFILE; +unlink "$tmp.blg","$tmp.bbl"; + +# Last not least, output the results, properly sorted if needed. + +open(AIFILE,">$output") || die "Can't create author index file $output\n"; + +# convert page type order into numerical values +my ($i,$page); +$PageTypeOrder{$i}=length($PageTypeOrder) while($i=chop $PageTypeOrder); +# create table that relates page to page order info +for $page (keys %pnlist){ + $PageOrder{$page}=&parse_pagenumber($page); +} + +if($also){ + my $coauthorname; + for $coauthorname (keys %Aut2First){ + my @namelist; + my $sortname; + for $sortname (sort keys %{$Aut2First{$coauthorname}}){ + push @namelist, $printname{$sortname}; + } + # we rely on the fact that " " is alphabetically first, so that + # $justbehind will end up directly after $coauthorname + my $justbehind=$coauthorname." "; + my $pseudoname=$also.join($alsosep, @namelist); + $printname{$justbehind}=$pseudoname; + $plainname{$justbehind}=$pseudoname; + } +} + +if(exists $opt{'i'}){ + # generate file for makeindex: leave the work for makeindex. + my $name; + for $name (keys %printname){ + my $author=$printname{$name}; + my $page; + for $page (keys %{$Aut2Pag{$author}}){ + print AIFILE "\\indexentry{$name\@$author}{$page}\n"; + } + } +}else{ + # sort result, throw away duplicate page numbers and generate LaTeX file. + print AIFILE "\\begin{theauthorindex}\n"; + my ($prevfirstchar,$prevplain,$name)=("","",""); + for $name (sort keys %printname){ + my $thisfirstchar=substr($name,0,1); + if($thisfirstchar ne $prevfirstchar){ + print AIFILE "\\indexspace\n" if $prevfirstchar; + $prevfirstchar=$thisfirstchar; + } + my $author=$printname{$name}; + my $plain=$plainname{$name}; + my $rep=$author; + if($Aut2Lab{$author}){ + print AIFILE "% @{$Aut2Lab{$author}}\n" if(exists $opt{'d'}); + $rep=($plain eq $prevplain) ? "\\airep$author" : "\\aitop$author" + if $plain ne $author; + $prevplain=$plain; + $authorcount++; + } + print AIFILE "\\item[$rep]"; + $Aut2Bib{$author}={} unless exists $Aut2Bib{$author}; + $LeadAutPag{$author}={} unless exists $LeadAutPag{$author}; + my %b2p=%{$Aut2Bib{$author}}; + my %lp=%{$LeadAutPag{$author}}; + my %pagerep; + my $page; + for $page (keys %{$Aut2Pag{$author}}){ + my $prep=$page; + $prep="\\aifirstpage{$prep}" if exists $lp{$page}; + $prep="\\aibibpage{$prep}" if exists $b2p{$page}; + $pagerep{$page}=$prep; + } + my $res=&compressed_pages($Aut2Pag{$author},\%pagerep); + print AIFILE " \\aipages{$res}\n"; + } + print AIFILE "\\end{theauthorindex}\n"; + if(exists $opt{'d'}){ # in draft mode, include some statistics + print AIFILE "%\n% $citationcount citations "; + print AIFILE "of $workscount distinct works\n"; + print AIFILE "% $explicits times \\aimention\n" if $explicits; + print AIFILE "% $authorcount different authors\n"; + } +} +close AIFILE; + +# merge mini indices into the .bbl-Files if it was requested. + +if($miniindex){ + map s/aux$/bbl/,@SAVEARGV; + my $file; + for $file (@SAVEARGV){ + open(BBLINPUT,$file) || next; + open(BBLHELP,">$tmp.bbl") || die "Can't create temp file $tmp.bbl\n"; + my $currlabel=""; + while(){ + if(/\\bibitem(\[.*\])*\{(.*)\}|\\end\{thebibliography\}/){ + if($currlabel){ + my $pagelist=&pages_for_label($currlabel); + print BBLHELP "\\bibindex{$pagelist}\n"; + } + $currlabel=$2; + print BBLHELP "$_"; + }elsif(/\\bibindex\{(.*)\}/){ + if($currlabel){ + my $pagelist=&pages_for_label($currlabel); + print BBLHELP "$`\\bibindex{$pagelist}$'"; + } + $currlabel=""; + }else{ + print BBLHELP "$_" if "$_" ne "\n"; + } + } + close BBLHELP; + close BBLINPUT; + rename "$tmp.bbl","$file" || die "Can't replace old $file\n"; + } +} + +# auxiliary functions + +# convert roman numeral string to integer + +sub romanvalue +{ + local($_)=shift; tr/IVXLCDM/ivxlcdm/; + my %romandigits = ("i", 1, "v", 5, "x", 10, "l", 50, + "c", 100, "d", 500, "m", 1000); + my ($i,$sum,$prev)=("",0,1); + while($i=chop){ + my $this=$romandigits{$i}; + $sum=$sum+(($this<$prev) ? -$this : $this); + $prev=$this; + } + return $sum; +} + +# convert letter to numeric value + +sub alphavalue +{ + local($_)=@_; tr/A-Z/a-z/; + return ord($_)-ord("a"); +} + +# split page number in components and replace each component by a number for +# the page type and the page number as an integer. + +sub parse_pagenumber +{ + local($_)=@_; + my $res=""; + while($_){ + s/^[^\\A-Za-z0-9]*//; + if(exists $PageTypeOrder{'n'} && s/(^\d+)//){ + $res.="$PageTypeOrder{'n'}".sprintf "%0.6d",$1; + }elsif(exists $PageTypeOrder{'R'} && + s/^\\uppercase\s*\{([ivxlcdm]+)\}//){ + $res.="$PageTypeOrder{'R'}".sprintf "%0.4d",&romanvalue($1); + }elsif(exists $PageTypeOrder{'R'} && s/(^[IVXLCDM]+)//){ + $res.="$PageTypeOrder{'R'}".sprintf "%0.4d",&romanvalue($1); + }elsif(exists $PageTypeOrder{'A'} && s/(^[A-Z])//){ + $res.="$PageTypeOrder{'A'}".sprintf "%0.2d",&alphavalue($1); + }elsif(exists $PageTypeOrder{'r'} && s/(^[ivxlcdm]+)//){ + $res.="$PageTypeOrder{'r'}".sprintf "%0.4d",&romanvalue($1); + }elsif(exists $PageTypeOrder{'a'} && s/(^[a-z])//){ + $res.="$PageTypeOrder{'a'}".sprintf "%0.2d",&alphavalue($1); + }else{ + s/^.//; + } + } + return $res; +} + +# test wether 2 pages are subsequent + +sub a_follows_b +{ + my ($i,$j)=@PageOrder{@_}; + $i++; + return($i eq $j); +} + +# make a sorted, maybe compressed, list of pages + +sub compressed_pages +{ + my ($A,$B)=@_; + my %pages=%{$A}; + my %pagerep=%{$B}; + my ($prevpage,$pendrep,$res,$pagepending,$page)=("","","","",""); + for $page (sort { $PageOrder{$a} cmp $PageOrder{$b} } keys %pages){ + # handle compression of page ranges. At the moment, we + # also compress ranges that might be displayed in different faces + my $pagerep=(exists $pagerep{$page}) ? $pagerep{$page} : $page; + if($prevpage){ + if(!$nocompress and &a_follows_b($prevpage,$page)){ + $pendrep=$pagepending ? "--$pagerep" + : ($twoabbrev ? "$twoabbrev" : ", $pagerep"); + $pagepending=1; + }else{ + $res.=($pagepending ? "$pendrep" : "").", $pagerep"; + $pagepending=0; + } + }else{ + $res.="$pagerep"; + } + $prevpage=$page; + } + $res.="$pendrep" if $pagepending; + return $res; +} + +sub pages_for_label +{ + my ($label)=@_; + if(exists $Lab2Pag{$label}){ + my (%pages,%empty); + @pages{@{$Lab2Pag{$label}}}=""; + return &compressed_pages(\%pages,\%empty); + } + return ""; +} diff --git a/Master/texmf-dist/doc/latex/authorindex/authorindex.dvi b/Master/texmf-dist/doc/latex/authorindex/authorindex.dvi deleted file mode 100644 index 497a7885bac..00000000000 Binary files a/Master/texmf-dist/doc/latex/authorindex/authorindex.dvi and /dev/null differ diff --git a/Master/texmf-dist/doc/latex/authorindex/authorindex.pdf b/Master/texmf-dist/doc/latex/authorindex/authorindex.pdf new file mode 100644 index 00000000000..a6f11f128a3 Binary files /dev/null and b/Master/texmf-dist/doc/latex/authorindex/authorindex.pdf differ diff --git a/Master/texmf-dist/doc/latex/authorindex/authorindex.tex b/Master/texmf-dist/doc/latex/authorindex/authorindex.tex index 5044fbd25e9..7b4d2b229f2 100644 --- a/Master/texmf-dist/doc/latex/authorindex/authorindex.tex +++ b/Master/texmf-dist/doc/latex/authorindex/authorindex.tex @@ -22,8 +22,8 @@ \renewcommand\descriptionlabel[1]{\hspace\labelsep\normalfont\texttt{#1}} \title{The \authorindex\ Package} -\author{Andreas Wettstein\\\texttt{wettstae@ise.ch}} -\date{September 2002} +\author{Andreas Wettstein\\\texttt{wettstae@synopsys.com}} +\date{March 2005} \begin{document} @@ -168,13 +168,18 @@ By default, \authorindex\ generates exactly one entry for each author in the index. All pages with citations of the author's work go into this entry, no matter what the co-authors for the work that you cite are. -You can change this behavior with the \ltxinp{\aisee} command. You call -\ltxinp{\aisee} in the preamble of your document with a string argument. For -authors that are not the first in the author list of a work cited, -\authorindex\ generates an entry with this authors name, followed by the string -you have given to \ltxinp{\aisee}, followed by the name of the first author of -the cited work. Entries for authors that are first (or even only) authors of a -work are listed in the author index as usual. +Optionally, you can generate a reference to first authors in the author list of +all of the author's works. To this end, you call \ltxinp{\aialso} in the +preamble of your document. The command takes two string arguments. The first +argument is put before first author name, the second is used as a separator. + +Alternatively, you can change this behavior with the \ltxinp{\aisee} command. +You call \ltxinp{\aisee} in the preamble of your document with a string +argument. For authors that are not the first in the author list of a work +cited, \authorindex\ generates an entry with this authors name, followed by the +string you have given to \ltxinp{\aisee}, followed by the name of the first +author of the cited work. Entries for authors that are first (or even only) +authors of a work are listed in the author index as usual. For example, if you write in German, you'd put \begin{verbatim} @@ -306,6 +311,36 @@ This approach would also work for name prefixes like ``van'' or ``de la''. Note that the command \ltxinp{\indexspace}, which separates entries that start with a different letters, is placed according to the format used for sorting. + +\subsection{Dealing with name variations} + +In different publications, the name of the same author may appear in different +forms. Causes of variation are differing style conventions of various +journals, inconsistencies caused by the author, or plain errors. + +Bibliographies should give the author names as close to what appears on the +publication as the bibliography style allows. This in the interest of your +readers, as is simplifies finding what you cite. But it also implies that +inconsistencies carry over to the \ltxinp{author} fields of the \BibTeX\ data +base. + +In contrast, for author indices, names should be used consistently. Readers +consult the author index to find out about the works of a particular person, +and should find all of them in a single entry, rather than scattered over +multiple entries that correspond to different forms of the same name. + +To meet the conflicting needs for bibliographies and author indices, +\authorindex\ supports two new fields for \BibTeX\ data base entries: +\begin{description} +\item[authauthor] Gives the author name list, using the authoritative form of + the authors names. The format is like for the \ltxinp{author} field. +\item[autheditor] Likewise, for editors. +\end{description} +If a new field is present in a \BibTeX\ entry, \authorindex\ uses it instead of +the \ltxinp{author} or \ltxinp{editor} field. Of course, the latter fields are +still required for \BibTeX. + + \subsection{Fonts for the names} \ltxinp{\ainame} is a command with one argument. It determines how the @@ -524,7 +559,17 @@ these functions to write page information along with the citation key to the additional output for a few specific packages. Please note that these ``fixes'' may no longer work if newer versions of these packages appear. +If you use a non-compatible package that is not listed below, it is worthwile +to have a look into it's source code. I the simplest case, the package might +simply include one of the listed packages (using \ltxinp{\usepackage}), and +hence one of the examples below applies. Others might require more effort, but +the basic strategy for a fix will be always similar to the examples below. If +you encounter non-compatible packages, please notify me about them (ideally, +with instructions for a fix) so that I can include them in this manual. + + \subsubsection{\package{chicago}} +\label{sec:chicago} The standard version of the \package{chicago} package does not work with \authorindex. For this package, there is a patch that apparently makes it work @@ -570,22 +615,30 @@ without the \authorindex\ package. \subsubsection{\package{natbib}} Like \package{chicago}, the package \package{natbib} also conflicts with -\authorindex. Michael Friendly and Patrick W.\ Daly devised a fix for Nelson -Beebe's \package{authidx} package \cite{Beebe98}, which the former posted to -\texttt{comp.text.tex}. With a few changes, it seems to work for \authorindex\ -too. You insert in your \file{natbib.cfg} the following lines: +\authorindex. The following fix is based on a similar fix by Michael Friendly +and Patrick W.\ Daly for Nelson Beebe's \package{authidx} package +\cite{Beebe98}, plus additional support for \package{natbib}'s numerical mode +as proposed by Pieter Eendebak. You insert in your \file{natbib.cfg} the +following lines: \begin{verbatim} % natbib.cfg -% Asoundingly Egregious Hack to make natbib work with authorindex -% package: -% - This tacks on to \NAT@citex, which is just for author-year -% style citations. There's probably a better way \AtBeginDocument{% \@ifpackageloaded{authorindex}{% - \let\org@@citex\NAT@citex + \ifNAT@numbers + \let\org@@citex\NAT@citexnum + \else + \let\org@@citex\NAT@citex + \fi \def\@citex[#1][#2]#3{% - \typeout {indexing: [#1][#2]{#3}} - \org@@citex[#1][#2]{#3}\@aicitey{#3}}}{}} + \typeout{indexing: [#1][#2]{#3}}% + \org@@citex[#1][#2]{#3}% + \@aicitey{#3}}% + \renewcommand\NAT@wrout[5]{% + \if@filesw{% + \let\protect\noexpand\let~\relax + \immediate\write\@auxout{\string\aibibcite{#5}{#1}}% + \immediate\write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}% + \fi}}{}} \endinput \end{verbatim} Please note that I tested this work-around superficially. It does not repair a @@ -593,6 +646,14 @@ conflict that occurs when the \authorindex\ package option \ltxinp{withbib} is used. +\subsubsection{Other packages} + +\begin{description} +\item[\package{monog3}] A class from Oxford University Press that used + \package{chicago}. See section \ref{sec:chicago}. +\end{description} + + \section{Problems and restrictions} Currently, I am aware of the following problems and restrictions: @@ -623,6 +684,7 @@ Currently, I am aware of the following problems and restrictions: I want to thank Mark A. Gordon for his substantial improvements to the language and presentation in this manual. + \begin{thebibliography}{3} \bibitem{Patashnik88a} diff --git a/Master/texmf-dist/source/latex/authorindex/authorindex b/Master/texmf-dist/source/latex/authorindex/authorindex deleted file mode 100644 index d0287335ab2..00000000000 --- a/Master/texmf-dist/source/latex/authorindex/authorindex +++ /dev/null @@ -1,510 +0,0 @@ -#!/usr/bin/perl -w -# This file is part of the authorindex package for LaTeX + BibTeX. - -use strict; - -# configuration: apart from the command to invoke perl above you might want to -# change: - -my $bstenv="BSTINPUTS"; # Environment Variable holding .bst search path -my $bibenv="BIBINPUTS"; # Env Variable holding search path for BibTeX databases -my $tmp="_autidx_"; # Name base for temporary files - -# This script takes LaTeX .aux files as input. It extracts all citations made -# with page number information. These, together with the bibliography data base -# extracted from the input and a .bst file are processed by bibtex to get a -# file that associates each citation label with corresponding authors. Together -# with the knowledge of which work is cited on which page, this is used to -# compute which author is cited on which page. This information is written to -# the output in form suitable to be included in a LaTeX document. -# Alternatively, the script can also extract the label that appears in the -# references for each work instead of the pages. Also, output for further -# processing by makeindex can be generated instead of a 'ready' LaTeX file. - -# examine command line for options - -my %opt; # hash to contain options found -use Getopt::Std; -getopts('dhikpr',\%opt); - -# handle -h option: a short description of the script. - -exists $opt{'h'} && die < hash marking pages with work author is 1st - -my %printname; # sort-key -> printed representation of author -my %plainname; # sort-key -> author name - -my %PageTypeOrder; # Page type code -> number giving relative order -my %PageOrder; # page string -> array used to sort pages - -my $see=""; # string to separate other and first author, or undef. -my $bst=""; # name of BibTeX program to extract author names -my $output=""; # name of file to which author index is written -my $twoabbrev=""; # string to append to page for 2 subsequent pages - -# scan input files and -# - build the file later to be processed by BibTeX, -# - generate a temporary bibtex database of the explicit author names given, -# - assemble for each citation the page where it was referenced and -# - look for data base specification, output file name, and so on. - -open(AUXFILE,">$tmp.aux") || die "Can't open temporary file $tmp.aux\n"; -open(BIBFILE,">$tmp.bib") || die "Can't open temporary file $tmp.bib\n"; - -while(<>){ - if(/^\\citationpage\{([^{]+)\}\{(.+)\}$/){ - $citationcount++; # used for statistics only. - $workscount++ unless ($1 eq '*') or (exists $Lab2Pag{$1}) - or (exists $Lab2Bib{$1}) or (exists $Lab2Num{$1}); - $pnlist{$2}=""; - push @{$Lab2Pag{$1}},$2; - print AUXFILE "\\citation{$1}\n"; - }elsif(/^\\bibcite\{([^{]+)\}\{(.+)\}$/){ - $workscount++ unless ($1 eq '*') or (exists $Lab2Pag{$1}) - or (exists $Lab2Bib{$1}) or (exists $Lab2Num{$1}); - $pnlist{$2}=""; - push @{$Lab2Num{$1}},$2; - print AUXFILE "\\citation{$1}\n"; - }elsif(/^\\bibpage\{([^{]+)\}\{(.+)\}$/){ - $workscount++ unless (exists $Lab2Pag{$1}) - or (exists $Lab2Bib{$1}) or (exists $Lab2Num{$1}); - $pnlist{$2}=""; - push @{$Lab2Bib{$1}},$2; - print AUXFILE "\\citation{$1}\n"; - }elsif(/^\\aiexplicit\{(.+)\}\{(.+)\}$/ and !$usenum){ - # above: page number might not contain '}{' - print BIBFILE "\@MISC{$tmp$explicits,author=\"$1\"}\n"; - $bib{$tmp}=""; - $pnlist{$2}=""; - push @{$Lab2Pag{"$tmp$explicits"}},$2; - print AUXFILE "\\citation{$tmp$explicits}\n"; - $explicits++; - }elsif(/^\\bibdata\{(.+)\}$/){ - @bib{split(",",$1)}=""; - }elsif(/^\\aistyle\{(.+)\}$/){ - warn "Multiple \\authorindexstyle\n" if $bst && ($bst ne $1); - $bst=$1; - }elsif(/^\\aioptions\{(.*)\}$/){ - ($editors,$nameformat,$maxnames,$truncnames,$labeltype)=split /\|/,$1; - $usenum|=($labeltype eq "labels"); - if($editors>0){ - $altedit="{ editor format }"; - $addedit=$altedit if $editors==2; - } - }elsif(/^\\aifilename\{(.+)\}$/){ - warn "Warning: Multiple authorindices\n" if $output; - $output=$1; - }elsif(/^\\\@input\{(.+)\}$/){ - push(@ARGV,$1) unless exists $opt{'r'}; - }elsif(/^\\pagetypeorder\{([rRaAn]+)\}$/){ - $PageTypeOrder=$1; - }elsif(/^\\aiseestring\{(.+)\}$/){ - $see=$1; - }elsif(/^\\aitwostring\{(.+)\}$/){ - $twoabbrev=$1; - }elsif(/^\\aiinbibflag$/){ - $miniindex=1; - }elsif(/^\\ainocompressflag$/){ - $nocompress=1; - } -} - -close BIBFILE; - -# output can go to stdout or a filename found in the input files. - -$output || die "You have to include .aux file produced by .tex file containing \\begin{document}\nin the argument list and you have to \\usepackage{authorindex}!\n"; -$output="-" if exists $opt{'p'}; - -# We need at least one BibTeX database - -my $bib=join(",",keys %bib) - || die "You must specify at least one BibTeX database\n"; -print AUXFILE "\\bibdata{$bib}\n"; - -# if the user hasn't explicitly given a .bst style for formatting author names, -# we generate our own based on the style options found in the input files. - -unless($bst){ - my @nameformat=split /;/,$nameformat; - my ($printkey,$namefmtcmd)=("cite\$ write\$ newline\$\n",""); - for (@nameformat){ - my ($namerep,$sortrep)=split /:/; - $sortrep=$namerep unless $sortrep; - $namefmtcmd.= - "duplicate\$ names swap\$ \"$namerep\" format.name\$ " . - "write\$ newline\$\n" . - "duplicate\$ names swap\$ \"$sortrep\" format.name\$ " . - "purify\$ \"u\" change.case\$ write\$ newline\$\n$printkey"; - $printkey="newline\$\n"; - } - - $ENV{$bstenv}=".:" . (exists $ENV{$bstenv} ? $ENV{$bstenv} : ""); - $bst=$tmp; - open(BSTFILE,">$bst.bst") || die "Can't open $bst.bst\n"; - print BSTFILE < % too many names in list? - { pop\$ #$truncnames } % yes, truncate. - 'skip\$ % no, keep them all - if\$ - 'numnames := % save number of names - #0 % start index - { duplicate\$ numnames < } % test for "while\$" - { #1 + % next name - duplicate\$ names swap\$ % get name list and index - "{ll}" format.name\$ % format curr. name - "others" = % et al part? - 'skip\$ % yes, do not output - { $namefmtcmd } % no: format all - if\$ - } while\$ pop\$ % loop until index is 0 - } - if\$ -} -function{default.type}{author format author empty\$ $altedit $addedit if\$ } -function{article}{default.type} function{book}{default.type} -function{booklet}{default.type} function{inbook}{default.type} -function{incollection}{default.type} function{inproceedings}{default.type} -function{conference}{default.type} function{manual}{default.type} -function{mastersthesis}{default.type} function{misc}{default.type} -function{phdthesis}{default.type} function{proceedings}{default.type} -function{techreport}{default.type} function{unpublished}{default.type} -read iterate{call.type\$} -END - # ... and here comes perl again. - close BSTFILE; -} - -# Now we have decided on our .bst file and can finish the temporary .aux file -# we prepared for BibTeX. - -print AUXFILE "\\bibstyle{$bst}\n"; -close AUXFILE; - -# if we have written to the temporary database, make sure BibTeX can find it. - -$ENV{$bibenv}=".:" . (exists $ENV{$bibenv} ? $ENV{$bibenv} : "") if $explicits; - -# We now give BibTeX all the citation labels. In return we get a file whose -# lines in turn contain an author name and a label of a work of that author. -# The format the author names are given are determined by the BibTeX style file -# $bst.bst. - -print STDERR `bibtex $tmp`; -die "BibTeX error. Aborting leaving all temporary files $tmp.*\n" if $?; - -# if things went well, we can delete all these temporary files made for BibTeX. -# The generated .bst file is kept if the user wishes so (-k option). - -unlink "$bst.bst" if ($bst eq $tmp && !(exists $opt{'k'})); -unlink "$tmp.aux","$tmp.bib"; - -# Decide wether pages or citation labels go to the index - -my %Lab2Ent=%Lab2Pag; -if($usenum){ - %Lab2Ent=%Lab2Num; - %Lab2Bib=(); -}else{ - %Lab2Num=(); -} - -# We have now labels associated with page numbers and labels associated with -# author names (in the file generated by the BibTeX run). Now we can bring -# together the previous two main steps and compute for each author the pages -# where she is cited. In draft mode, we also remember for each author the -# labels of her works and the pages where these works are cited. - -my ($firstauthor,$firstsortname,$Lab,$PrevLab)=("","","",""); -open(BIBFILE,"$tmp.bbl") || die "Can't open $tmp.bbl\n"; -while(){ - chop; s/[\[\]]//g; - my $author=$_; - my ($sortname,$LabOrEmpty); - chop($sortname=); - chop($LabOrEmpty=); - if($LabOrEmpty){ - $PrevLab=$Lab; - $Lab=$LabOrEmpty; - } - my $printname=$author; - if($Lab ne $PrevLab){ - @{$LeadAutPag{$author}}{@{$Lab2Ent{$Lab}}}="" if exists $Lab2Ent{$Lab}; - @{$LeadAutPag{$author}}{@{$Lab2Ent{'*'}}}="" if exists $Lab2Ent{'*'}; - @{$LeadAutPag{$author}}{@{$Lab2Bib{$Lab}}}="" if exists $Lab2Bib{$Lab}; - $firstauthor=$author; - $firstsortname=$sortname; - }elsif($see){ - $printname="{$author}$see\\aifirst{$firstauthor}"; - $sortname="$sortname$see$firstsortname"; - } - @{$Aut2Pag{$printname}}{@{$Lab2Ent{$Lab}}}="" if exists $Lab2Ent{$Lab}; - @{$Aut2Pag{$printname}}{@{$Lab2Ent{'*'}}}="" if exists $Lab2Ent{'*'}; - @{$Aut2Pag{$printname}}{@{$Lab2Bib{$Lab}}}="" if exists $Lab2Bib{$Lab}; - @{$Aut2Bib{$printname}}{@{$Lab2Bib{$Lab}}}="" if exists $Lab2Bib{$Lab}; - push @{$Aut2Lab{$printname}},$Lab if (exists $opt{'d'}) and $LabOrEmpty; - $printname{$sortname}=$printname; - $plainname{$sortname}=$author; -} -close BIBFILE; -unlink "$tmp.blg","$tmp.bbl"; - -# Last not least, output the results, properly sorted if needed. - -open(AIFILE,">$output") || die "Can't create author index file $output\n"; - -# convert page type order into numerical values -my ($i,$page); -$PageTypeOrder{$i}=length($PageTypeOrder) while($i=chop $PageTypeOrder); -# create table that relates page to page order info -for $page (keys %pnlist){ - $PageOrder{$page}=&parse_pagenumber($page); -} - -if(exists $opt{'i'}){ - # generate file for makeindex: leave the work for makeindex. - my $name; - for $name (keys %printname){ - my $author=$printname{$name}; - my $page; - for $page (keys %{$Aut2Pag{$author}}){ - print AIFILE "\\indexentry{$name\@$author}{$page}\n"; - } - } -}else{ - # sort result, throw away duplicate page numbers and generate LaTeX file. - print AIFILE "\\begin{theauthorindex}\n"; - my ($prevfirstchar,$prevplain,$name)=("","",""); - for $name (sort keys %printname){ - my $thisfirstchar=substr($name,0,1); - if($thisfirstchar ne $prevfirstchar){ - print AIFILE "\\indexspace\n" if $prevfirstchar; - $prevfirstchar=$thisfirstchar; - } - my $author=$printname{$name}; - my $plain=$plainname{$name}; - my $rep=$author; - print AIFILE "% @{$Aut2Lab{$author}}\n" if (exists $opt{'d'}); - $rep=($plain eq $prevplain) ? "\\airep$author" : "\\aitop$author" - if $plain ne $author; - print AIFILE "\\item[$rep]"; - $Aut2Bib{$author}={} unless exists $Aut2Bib{$author}; - $LeadAutPag{$author}={} unless exists $LeadAutPag{$author}; - my %b2p=%{$Aut2Bib{$author}}; - my %lp=%{$LeadAutPag{$author}}; - my %pagerep; - my $page; - for $page (keys %{$Aut2Pag{$author}}){ - my $prep=$page; - $prep="\\aifirstpage{$prep}" if exists $lp{$page}; - $prep="\\aibibpage{$prep}" if exists $b2p{$page}; - $pagerep{$page}=$prep; - } - my $res=&compressed_pages($Aut2Pag{$author},\%pagerep); - print AIFILE " \\aipages{$res}\n"; - $prevplain=$plain; - $authorcount++; - } - print AIFILE "\\end{theauthorindex}\n"; - if(exists $opt{'d'}){ # in draft mode, include some statistics - print AIFILE "%\n% $citationcount citations "; - print AIFILE "of $workscount distinct works\n"; - print AIFILE "% $explicits times \\aimention\n" if $explicits; - print AIFILE "% $authorcount different authors\n"; - } -} -close AIFILE; - -# merge mini indices into the .bbl-Files if it was requested. - -if($miniindex){ - map s/aux$/bbl/,@SAVEARGV; - my $file; - for $file (@SAVEARGV){ - open(BBLINPUT,$file) || next; - open(BBLHELP,">$tmp.bbl") || die "Can't create temp file $tmp.bbl\n"; - my $currlabel=""; - while(){ - if(/\\bibitem(\[.*\])*\{(.*)\}|\\end\{thebibliography\}/){ - if($currlabel){ - my $pagelist=&pages_for_label($currlabel); - print BBLHELP "\\bibindex{$pagelist}\n"; - } - $currlabel=$2; - print BBLHELP "$_"; - }elsif(/\\bibindex\{(.*)\}/){ - if($currlabel){ - my $pagelist=&pages_for_label($currlabel); - print BBLHELP "$`\\bibindex{$pagelist}$'"; - } - $currlabel=""; - }else{ - print BBLHELP "$_" if "$_" ne "\n"; - } - } - close BBLHELP; - close BBLINPUT; - rename "$tmp.bbl","$file" || die "Can't replace old $file\n"; - } -} - -# auxiliary functions - -# convert roman numeral string to integer - -sub romanvalue -{ - local($_)=shift; tr/IVXLCDM/ivxlcdm/; - my %romandigits = ("i", 1, "v", 5, "x", 10, "l", 50, - "c", 100, "d", 500, "m", 1000); - my ($i,$sum,$prev)=("",0,1); - while($i=chop){ - my $this=$romandigits{$i}; - $sum=$sum+(($this<$prev) ? -$this : $this); - $prev=$this; - } - return $sum; -} - -# convert letter to numeric value - -sub alphavalue -{ - local($_)=@_; tr/A-Z/a-z/; - return ord($_)-ord("a"); -} - -# split page number in components and replace each component by a number for -# the page type and the page number as an integer. - -sub parse_pagenumber -{ - local($_)=@_; - my $res=""; - while($_){ - s/^[^\\A-Za-z0-9]*//; - if(exists $PageTypeOrder{'n'} && s/(^\d+)//){ - $res.="$PageTypeOrder{'n'}".sprintf "%0.6d",$1; - }elsif(exists $PageTypeOrder{'R'} && - s/^\\uppercase\s*\{([ivxlcdm]+)\}//){ - $res.="$PageTypeOrder{'R'}".sprintf "%0.4d",&romanvalue($1); - }elsif(exists $PageTypeOrder{'R'} && s/(^[IVXLCDM]+)//){ - $res.="$PageTypeOrder{'R'}".sprintf "%0.4d",&romanvalue($1); - }elsif(exists $PageTypeOrder{'A'} && s/(^[A-Z])//){ - $res.="$PageTypeOrder{'A'}".sprintf "%0.2d",&alphavalue($1); - }elsif(exists $PageTypeOrder{'r'} && s/(^[ivxlcdm]+)//){ - $res.="$PageTypeOrder{'r'}".sprintf "%0.4d",&romanvalue($1); - }elsif(exists $PageTypeOrder{'a'} && s/(^[a-z])//){ - $res.="$PageTypeOrder{'a'}".sprintf "%0.2d",&alphavalue($1); - }else{ - s/^.//; - } - } - return $res; -} - -# test wether 2 pages are subsequent - -sub a_follows_b -{ - my ($i,$j)=@PageOrder{@_}; - $i++; - return($i eq $j); -} - -# make a sorted, maybe compressed, list of pages - -sub compressed_pages -{ - my ($A,$B)=@_; - my %pages=%{$A}; - my %pagerep=%{$B}; - my ($prevpage,$pendrep,$res,$pagepending,$page)=("","","","",""); - for $page (sort { $PageOrder{$a} cmp $PageOrder{$b} } keys %pages){ - # handle compression of page ranges. At the moment, we - # also compress ranges that might be displayed in different faces - my $pagerep=(exists $pagerep{$page}) ? $pagerep{$page} : $page; - if($prevpage){ - if(!$nocompress and &a_follows_b($prevpage,$page)){ - $pendrep=$pagepending ? "--$pagerep" - : ($twoabbrev ? "$twoabbrev" : ", $pagerep"); - $pagepending=1; - }else{ - $res.=($pagepending ? "$pendrep" : "").", $pagerep"; - $pagepending=0; - } - }else{ - $res.="$pagerep"; - } - $prevpage=$page; - } - $res.="$pendrep" if $pagepending; - return $res; -} - -sub pages_for_label -{ - my ($label)=@_; - if(exists $Lab2Pag{$label}){ - my (%pages,%empty); - @pages{@{$Lab2Pag{$label}}}=""; - return &compressed_pages(\%pages,\%empty); - } - return ""; -} diff --git a/Master/texmf-dist/tex/latex/authorindex/authorindex.sty b/Master/texmf-dist/tex/latex/authorindex/authorindex.sty index 58ea9f3a4a4..0caeaed658c 100644 --- a/Master/texmf-dist/tex/latex/authorindex/authorindex.sty +++ b/Master/texmf-dist/tex/latex/authorindex/authorindex.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{authorindex}[2002/09/13 make index of authors cited in a work] +\ProvidesPackage{authorindex}[2005/03/22 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 @@ -55,6 +55,7 @@ \def\aimaxauthors{\@notprerr}% preamble. \def\authorindexstyle{\@notprerr}% \def\aisee{\@notprerr}% + \def\aialso{\@notprerr}% \def\aitwosuffix{\@notprerr}% \def\ainamefmt{\@notprerr}} % Define commands to be put in the .aux file and only used by the perl script. @@ -68,6 +69,8 @@ \let\bibpage\@gobbletwo \let\aiexplicit\@gobbletwo \let\aifilename\@gobble +\let\aialsostrings\@gobbletwo +\let\aibibcite\@gobbletwo % 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 @@ -79,6 +82,9 @@ % determine string by which first author is cross referenced \def\aisee#1{\AtBeginDocument{% \if@filesw\immediate\write\@auxout{\string\aiseestring{#1}}\fi}}% +% determine string by which first authors are cross referenced +\def\aialso#1#2{\AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\string\aialsostrings{#1}{#2}}\fi}}% % determine string for abbreviation of two subsequent pages \def\aitwosuffix#1{\AtBeginDocument{% \if@filesw\immediate\write\@auxout{\string\aitwostring{#1}}\fi}}% diff --git a/Master/texmf-dist/tpm/authorindex.tpm b/Master/texmf-dist/tpm/authorindex.tpm index ee49e4ea4f8..ac77e424bb0 100644 --- a/Master/texmf-dist/tpm/authorindex.tpm +++ b/Master/texmf-dist/tpm/authorindex.tpm @@ -3,7 +3,7 @@ authorindex Package - 2006/01/21 00:25:32 + 2006/11/25 15:58:00 rahtz Indexing citations by author names. @@ -16,17 +16,18 @@ along with a list of pages where these citations occur. 93568 - + texmf-dist/tex/latex/authorindex/authorindex.sty texmf-dist/tpm/authorindex.tpm - -texmf-dist/doc/latex/authorindex/authorindex.dvi + +texmf-dist/doc/latex/authorindex/COPYING +texmf-dist/doc/latex/authorindex/NEWS +texmf-dist/doc/latex/authorindex/README +texmf-dist/doc/latex/authorindex/authorindex +texmf-dist/doc/latex/authorindex/authorindex.pdf texmf-dist/doc/latex/authorindex/authorindex.tex - -texmf-dist/source/latex/authorindex/authorindex - Package/authorindex diff --git a/Master/texmf/lists/authorindex b/Master/texmf/lists/authorindex index f185d068046..45761cc8d8e 100644 --- a/Master/texmf/lists/authorindex +++ b/Master/texmf/lists/authorindex @@ -1,6 +1,10 @@ -texmf-dist/doc/latex/authorindex/authorindex.dvi +texmf-dist/doc/latex/authorindex/COPYING +texmf-dist/doc/latex/authorindex/NEWS +texmf-dist/doc/latex/authorindex/README +texmf-dist/doc/latex/authorindex/authorindex +texmf-dist/doc/latex/authorindex/authorindex.pdf texmf-dist/doc/latex/authorindex/authorindex.tex -texmf-dist/source/latex/authorindex/authorindex + texmf-dist/tex/latex/authorindex/authorindex.sty texmf-dist/tpm/authorindex.tpm -- cgit v1.2.3