mirror of https://git.robertalessi.net/icite
1417 lines
47 KiB
TeX
1417 lines
47 KiB
TeX
% \iffalse meta-comment
|
||
% vim: textwidth=75
|
||
%<*internal>
|
||
\iffalse
|
||
%</internal>
|
||
%<*readme>
|
||
---
|
||
author:
|
||
- Robert Alessi
|
||
title: 'The icite package – README file'
|
||
---
|
||
|
||
Overview
|
||
========
|
||
|
||
`icite` is designed to produce from BibTeX or BibLaTeX bibliographical
|
||
databases the different indices of authors and works cited which are
|
||
called _indices locorum citatorum_. It relies on a specific
|
||
`\icite` command and can operate with either BibTeX or BibLaTeX.
|
||
|
||
License and disclamer
|
||
=====================
|
||
|
||
icite – Indices locorum citatorum
|
||
|
||
Copyright ⓒ 2019 Robert Alessi
|
||
|
||
Please send error reports and suggestions for improvements to Robert
|
||
Alessi:
|
||
|
||
- email: <alessi@robertalessi.net>
|
||
|
||
- website: <http://www.robertalessi.net/icite>
|
||
|
||
- comments, feature requests, bug reports:
|
||
<https://gitlab.com/ralessi/icite/issues>
|
||
|
||
This program is free software: you can redistribute it and/or modify it
|
||
under the terms of the GNU General Public License as published by the
|
||
Free Software Foundation, either version 3 of the License, or (at your
|
||
option) any later version.
|
||
|
||
This program is distributed in the hope that it will be useful, but
|
||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||
Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
||
This release of icite consists of the following source files:
|
||
|
||
- `icite.dtx`
|
||
|
||
- `icite.ins`
|
||
|
||
- `Makefile`
|
||
|
||
License applicable to the documentation
|
||
---------------------------------------
|
||
|
||
Copyright ⓒ 2019 Robert Alessi
|
||
|
||
The documentation file `icite.pdf` that is generated from the
|
||
`icite.dtx` source file is licensed under the Creative Commons
|
||
Attribution-ShareAlike 4.0 International License. To view a copy of this
|
||
license, visit <http://creativecommons.org/licenses/by-sa/4.0/> or send
|
||
a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||
|
||
Installation
|
||
============
|
||
|
||
1. Run `'latex icite.ins'` to produce the `icite.sty`
|
||
file;
|
||
|
||
2. To finish the installation you have to move the `icite.sty` file into
|
||
a directory where LaTeX can find them. See the FAQ on `texfaq.org`
|
||
at <https://texfaq.org/FAQ-inst-wlcf> for more on this.
|
||
|
||
|
||
Development, Git Repository
|
||
===========================
|
||
|
||
Browse the code
|
||
---------------
|
||
|
||
You can browse icite repository on the web:
|
||
<http://git.robertalessi.net/icite>
|
||
|
||
From this page, you can download all the releases of `icite`. For
|
||
instructions on how to install `icite`, please see above.
|
||
|
||
Comments, Feature requests, Bug Reports
|
||
---------------------------------------
|
||
|
||
<https://gitlab.com/ralessi/icite/issues>
|
||
|
||
Download the repository
|
||
-----------------------
|
||
|
||
`icite` development is facilitated by git, a distributed version
|
||
control system. You will need to install git (most GNU/Linux
|
||
distributions package it in their repositories).
|
||
|
||
Use this command to download the repository
|
||
|
||
git clone http://git.robertalessi.net/icite
|
||
|
||
A new directory named icite will have been created, containing
|
||
`icite`.
|
||
|
||
Git hosting
|
||
-----------
|
||
|
||
Make an account on <https://gitlab.com> and navigate (while logged in)
|
||
to <https://gitlab.com/ralessi/icite>. Click *Fork* and you will
|
||
have in your account your own repository of `icite` where you will
|
||
be able to make whatever changes you like to.
|
||
|
||
%</readme>
|
||
%<*internal>
|
||
\fi
|
||
\def\nameofplainTeX{plain}
|
||
\ifx\fmtname\nameofplainTeX\else
|
||
\expandafter\begingroup
|
||
\fi
|
||
%</internal>
|
||
%<*install>
|
||
\input docstrip.tex
|
||
\keepsilent
|
||
\askforoverwritefalse
|
||
\preamble
|
||
|
||
Copyright (C) 2019 by Robert Alessi <alessi@robertalessi.net>
|
||
|
||
Please send error reports and suggestions for improvements to Robert
|
||
Alessi <alessi@robertalessi.net>
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
This program is distributed in the hope that it will be useful, but
|
||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program. If not, see
|
||
<http://www.gnu.org/licenses/>.
|
||
|
||
This work consists of the file icite.dtx, icite.ins and a Makefile.
|
||
Running "make" generates the derived files README.md, icite.pdf and icite.sty.
|
||
Running "make inst" installs the files in the user's TeX tree.
|
||
Running "make install" installs the files in the local TeX tree.
|
||
|
||
\endpreamble
|
||
|
||
\usedir{tex/latex/icite}
|
||
\generate{
|
||
\file{\jobname.sty}{\from{\jobname.dtx}{package}}
|
||
}
|
||
%</install>
|
||
%<install>\endbatchfile
|
||
%<*internal>
|
||
\usedir{source/latex/icite}
|
||
\generate{
|
||
\file{\jobname.ins}{\from{\jobname.dtx}{install}}
|
||
}
|
||
\nopreamble\nopostamble
|
||
\usedir{doc/latex/icite}
|
||
\generate{
|
||
\file{README.md}{\from{\jobname.dtx}{readme}}
|
||
}
|
||
\ifx\fmtname\nameofplainTeX
|
||
\expandafter\endbatchfile
|
||
\else
|
||
\expandafter\endgroup
|
||
\fi
|
||
%</internal>
|
||
% \fi
|
||
%
|
||
% \iffalse
|
||
%<*driver>
|
||
\ProvidesFile{icite.dtx}
|
||
%</driver>
|
||
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
|
||
%<package>\ProvidesPackage{icite}
|
||
%<*package>
|
||
[2019/03/17 v1.2 Make Indices locorum citatorum]
|
||
%</package>
|
||
%<*driver>
|
||
\documentclass{ltxdoc}
|
||
\usepackage{filecontents}
|
||
\begin{filecontents*}{\jobname.xdy}
|
||
(merge-rule "\*" "" :eregexp)
|
||
(markup-locclass-list :open "\tabto{3.5cm}" :sep ", ")
|
||
\end{filecontents*}
|
||
\begin{filecontents*}{\jobname.bib}
|
||
@Book{Aristotle:Politica,
|
||
title = {Politica},
|
||
date = 1964,
|
||
author = {Aristotle},
|
||
editor = {Ross, W. D.},
|
||
origdate = 1957,
|
||
entrysubtype = {classical},
|
||
publisher = {Clarendon Press},
|
||
location = {Oxford}
|
||
}
|
||
|
||
@Book{Bürgel2016,
|
||
shorttitle = {Ärztliches Leben\ldots},
|
||
editortype = {reviser},
|
||
editor = {Käs, Fabian},
|
||
number = 135,
|
||
series = {Islamic History and Civilization},
|
||
location = {Leiden},
|
||
publisher = {Brill},
|
||
date = 2016,
|
||
title = {Ärztliches Leben und Denken im arabischen
|
||
Mittelalter},
|
||
author = {Bürgel, Johann Christoph}
|
||
}
|
||
|
||
@Software{classics,
|
||
title = {The Classics package},
|
||
subtitle = {Cite classic works},
|
||
author = {Lourenço de Lima, Eduardo C.},
|
||
publisher = {CTAN},
|
||
url = {http://www.ctan.org/pkg/classics},
|
||
date = {2013-02-02},
|
||
version = {0.1}
|
||
}
|
||
|
||
@Article{Dols1987,
|
||
author = {Dols, Michael W.},
|
||
title = {The Origins of the Islamic Hospital: Myth and
|
||
Reality},
|
||
shorttitle = {The Origins of the Islamic Hospital},
|
||
journaltitle = {Bulletin of the History of Medicine},
|
||
date = 1987,
|
||
volume = 61,
|
||
pages = {367--390}
|
||
}
|
||
|
||
@InBook{Endress1992,
|
||
title = {Die Wissenschaftliche Literatur},
|
||
date = 1992,
|
||
author = {Endress, Gerhard},
|
||
booktitle = {Grundriß der arabischen Philologie},
|
||
editor = {Fisher, Wolfdietrich},
|
||
volume = 3,
|
||
note = {Supplement},
|
||
publisher = {Reichert},
|
||
location = {Wiesbaden},
|
||
pages = {3--152}
|
||
}
|
||
|
||
@Book{IAUMuller,
|
||
sortname = {{ibn abi usaybia}},
|
||
editor = {Müller, August},
|
||
author = {\prname{ibn 'abI 'u.saybi`aT}},
|
||
shorteditor = {Müller},
|
||
date = {1882/1884},
|
||
title = {\arb[trans]{\uc{`u}yUn al-'anbA' fI .tabaqAt
|
||
al-'a.tibbA'}},
|
||
shorttitle = {\arb[trans]{\uc{`u}yUn al-'anbA'}},
|
||
shorthand = {\prname{ibn 'abI 'u.saybi`aT},
|
||
\arb[trans]{\uc{`u}yUn al-'anbA'}},
|
||
entrysubtype = {classical},
|
||
location = {Königsberg and Cairo},
|
||
volumes = 2
|
||
}
|
||
|
||
@Software{imakeidx,
|
||
title = {The Imakeidx package},
|
||
subtitle = {A package for producing multiple indexes},
|
||
author = {Gregorio, Enrico and Beccari, Claudio},
|
||
publisher = {CTAN},
|
||
url = {http://www.ctan.org/pkg/imakeidx},
|
||
date = {2016-10-15},
|
||
version = {1.3e}
|
||
}
|
||
|
||
@Book{RaziShukuk,
|
||
author = {\prname{al-rAziyy}, \prname{mu.hammad ibn
|
||
zakariyyA'}},
|
||
title = {\arb[trans]{\uc{k}itAb al-^sukUk `al_A
|
||
\uc{^g}AlInUs}},
|
||
indextitle = {\arb[trans]{\uc{^s}ukUk}},
|
||
sortname = {razi},
|
||
date = 1993,
|
||
shorthand = {\prname{al-rAziyy}, \arb[trans]{\uc{^s}ukUk}},
|
||
editor = {Mehdi Mohaghegh},
|
||
publisher = {International Institute of Islamic Thought and
|
||
Civilization},
|
||
location = {Tehran},
|
||
entrysubtype = {classical}
|
||
}
|
||
|
||
@Book{Ullmann1970,
|
||
location = {Leiden},
|
||
publisher = {Brill},
|
||
title = {Die Medizin im Islam},
|
||
date = 1970,
|
||
author = {Ullmann, Manfred},
|
||
}
|
||
|
||
@MVBook{al-Nadim,
|
||
author = {\prname{ibn al-nadIm}},
|
||
title = {\arb[trans]{\uc{f}ihrist}},
|
||
sortname = {{ibn al-nadim}},
|
||
date = {1871/1872},
|
||
shorthand = {\arb[trans]{\uc{f}ihrist}},
|
||
editor = {Flügel, Gustav},
|
||
volumes = 2,
|
||
location = {Leipzig},
|
||
entrysubtype = {classical}
|
||
}
|
||
|
||
@Book{al-Qifti,
|
||
sortname = {{ibn al-qifti}},
|
||
entrysubtype = {classical},
|
||
shorthand = {\prname{al-qif.tiyy}, \arb[trans]{\uc{t}a'rI_h}},
|
||
location = {Leipzig},
|
||
editor = {Lippert, Julius},
|
||
date = 1903,
|
||
title = {\arb[trans]{\uc{t}a'rI_h al-.hukamA'}},
|
||
author = {\prname{ibn al-qif.tiyy}}
|
||
}
|
||
|
||
@Software{usebib,
|
||
title = {The Usebib package},
|
||
subtitle = {A simple bibliography processor},
|
||
author = {Gregorio, Enrico},
|
||
publisher = {CTAN},
|
||
url = {http://www.ctan.org/pkg/usebib},
|
||
date = {2012-04-13},
|
||
version = {1.0a}
|
||
}
|
||
\end{filecontents*}
|
||
\usepackage[english]{babel}
|
||
\usepackage[letterpaper,margin=25mm,left=50mm,nohead]{geometry}
|
||
\usepackage{fontspec}
|
||
\babelfont{rm}{Old Standard}
|
||
\usepackage{arabluatex}
|
||
\SetTranslitConvention{loc}
|
||
\usepackage{xurl}
|
||
\usepackage{uri}
|
||
\usepackage{hyperxmp}
|
||
\usepackage{varioref}
|
||
\usepackage{latexcolors}
|
||
\usepackage[numbered]{hypdoc}
|
||
\hypersetup{unicode=true, colorlinks, allcolors=cinnamon,
|
||
linktocpage=true, pdfauthor={Robert Alessi}, pdftitle={The
|
||
icite package}, pdfcontactemail={alessi@robertalessi.net},
|
||
pdfcontacturl={http://www.robertalessi.net/icite},
|
||
pdfcopyright={Copyright (C) 2019 Robert Alessi
|
||
<alessi@robertalessi.net>. This document is licensed under the
|
||
Creative Commons Attribution-ShareAlike 4.0 International
|
||
License. To view a copy of this license, visit
|
||
http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
|
||
Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.},
|
||
pdflicenseurl={https://creativecommons.org/licenses/by-sa/4.0/legalcode},
|
||
pdfmetalang={en-US}, pdftype={Text}, pdfkeywords={bibtex, biblatex,
|
||
indexing}}
|
||
\usepackage{amsmath}
|
||
\usepackage{cleveref}
|
||
\CodelineIndex
|
||
\usepackage[citecmd=autocite,defaultindex]{\jobname}
|
||
\IndexSubtypeAs{classical}{primary}
|
||
\bibinput{icite}
|
||
\usepackage[nonewpage,xindy]{imakeidx}
|
||
\newcommand{\donothing}[1]{}
|
||
\indexsetup{level=\donothing}
|
||
\makeindex
|
||
\makeindex[name=loccit]
|
||
\makeindex[name=primary]
|
||
\usepackage{needspace}
|
||
\usepackage{tabto}
|
||
\usepackage{classics}
|
||
\newclassic{iau}{\classicsRoman{#1}|, #1|.#1}
|
||
\newclassic{razi}{#1|.#1}
|
||
\newclassic{nadim}{\classicsRoman{#1}|.#1|, #1}
|
||
\newclassic{aristotle}{#1|\textit{#1}|#1}
|
||
\usepackage[scale=1.5]{ccicons}
|
||
\usepackage{dox}
|
||
\doxitem{Option}{option}{options}
|
||
\usepackage{enumitem}
|
||
\setlist{nosep}
|
||
\setlist[itemize]{label=\textendash}
|
||
\setlist[enumerate,1]{label=(\alph*)}
|
||
\setlist[enumerate,2]{label=\roman*.}
|
||
\usepackage[lot]{multitoc}
|
||
\usepackage{nameref}
|
||
\usepackage{csquotes}
|
||
\usepackage[style=oxnotes, hyperref=false]{biblatex}
|
||
\DeclareFieldFormat{postnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
|
||
\addbibresource{icite.bib}
|
||
\usepackage{hologo,metalogox}
|
||
\usepackage{relsize}
|
||
\usepackage{units}
|
||
\usepackage{minted}
|
||
\usepackage[contents]{colordoc}
|
||
\newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}}
|
||
\usepackage{tikz}
|
||
\usepackage[breakable, skins, xparse, minted]{tcolorbox}
|
||
\tcbset{colback=white, boxrule=.15mm, colframe=cinnamon,
|
||
breakable}
|
||
\newtcblisting{example}{minted options={linenos, numbersep=0mm}}
|
||
\newtcblisting{code}{minted options={linenos, numbersep=0mm}, listing
|
||
only}
|
||
\usepackage{etoc}
|
||
\etocsettocdepth{paragraph}
|
||
\newcommand{\icitetableofcontents}{%
|
||
\begingroup
|
||
\etocsetstyle{section}{}{}
|
||
{\etocsavedsectiontocline{%
|
||
\numberline{\etocnumber}\etocname}{\etocpage}}{}
|
||
\etocsetstyle{subsection}{}{}
|
||
{\etocsavedsubsectiontocline{%
|
||
\numberline{\etocnumber}\etocname}{\etocpage}}{}%
|
||
\etocsetstyle{subsubsection}{}{}
|
||
{\etocsavedsubsubsectiontocline{%
|
||
\numberline{\etocnumber}\etocname}{\etocpage}}{}%
|
||
\etocsetstyle{paragraph}{}{\leftskip2cm\rightskip 2.2em \parfillskip
|
||
0pt plus 1fil\relax \nobreak}
|
||
{\noindent\etocname{} \etocpage{} }{\par}%
|
||
\etocmulticolstyle[2]{\section*{Contents}}
|
||
\pdfbookmark[1]{Contents}{toc}
|
||
\tableofcontents
|
||
\endgroup}
|
||
\EnableCrossrefs
|
||
%\CodelineIndex
|
||
\RecordChanges
|
||
%\OnlyDescription
|
||
\begin{document}
|
||
\DocInput{\jobname.dtx}
|
||
\PrintChanges
|
||
\section{Index}
|
||
\indexprologue{Numbers written in italic refer to the page where the
|
||
corresponding entry is described; numbers underlined refer to the
|
||
code line of the definition; numbers in roman refer to the code
|
||
lines where the entry is used.}
|
||
\printindex
|
||
%\PrintIndex
|
||
\end{document}
|
||
%</driver>
|
||
% \fi
|
||
%
|
||
% \CheckSum{0}
|
||
%
|
||
% \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 \~}
|
||
%
|
||
% \makeatletter
|
||
% \let\org@changes@\changes@
|
||
% \def\my@changes v#1.#2.#3\@nil{%
|
||
% \org@changes@{v#1.\six@digits{#2}.#3=v#1.#2.#3}%
|
||
% }%
|
||
% \newcommand*{\six@digits}[1]{%
|
||
% \ifnum#1<100000 0\fi
|
||
% \ifnum#1<10000 0\fi
|
||
% \ifnum#1<1000 0\fi
|
||
% \ifnum#1<100 0\fi
|
||
% \two@digits{#1}%
|
||
% }%
|
||
% \renewcommand*{\changes@}[1]{%
|
||
% \my@changes#1.\@nil
|
||
% }%
|
||
% \makeatother
|
||
%
|
||
% \GetFileInfo{\jobname.dtx}
|
||
% \DoNotIndex{\newcommand,\newenvironment}
|
||
%
|
||
% \newcommand*{\NEWfeature}[1]{%
|
||
% \hskip 1sp \marginpar{\small\sffamily\raggedright
|
||
% New feature\\#1}}
|
||
%
|
||
% \title{\tcbox[colframe=black, enhanced, tikznode, drop lifted
|
||
% shadow, colback=white, boxrule=.25mm]{%
|
||
% The \textsf{icite} package\\
|
||
% \emph{Indices locorum citatorum}\\
|
||
% \fileversion\ --- \filedate}}
|
||
%
|
||
% \author{Robert Alessi \\
|
||
% \href{mailto:alessi@robertalessi.net?Subject=icite package}%
|
||
% {\texttt{alessi@robertalessi.net}}}
|
||
%
|
||
% \date{}
|
||
%
|
||
% \maketitle
|
||
% \footnotesize
|
||
% \icitetableofcontents
|
||
% \normalsize
|
||
%
|
||
% \changes{v1.00}{2019/03/07}{First public release}
|
||
%
|
||
% \begin{abstract}
|
||
% \package{icite} is designed to produce from \hologo{BibTeX} or
|
||
% Bib\LaTeX\ bibliographical databases the different indices of
|
||
% authors and works cited which are called \emph{indices locorum
|
||
% citatorum}. It relies on a specific \cs{icite} command and can
|
||
% operate with either \hologo{BibTeX} or Bib\LaTeX.
|
||
% \end{abstract}
|
||
%
|
||
% \section*{License and disclamer}
|
||
% \addcontentsline{toc}{section}{License and disclamer}
|
||
% \subsection*{License applicable to the software}
|
||
% \label{sec:license-software}
|
||
%
|
||
% \package{icite} --- \emph{Indices locorum citatorum}\\
|
||
% Copyright \textcopyright\ 2019 Robert Alessi
|
||
%
|
||
% Please send error reports and suggestions for improvements to Robert
|
||
% Alessi:
|
||
% \begin{itemize}
|
||
% \item email: \mailto[icite package]{alessi@roberalessi.net}
|
||
% \item website: \url{http://www.robertalessi.net/icite}
|
||
% \item development: \url{http://git.robertalessi.net/icite}
|
||
% \item comments, feature requests, bug reports:
|
||
% \url{https://gitlab.com/ralessi/icite/issues}
|
||
% \end{itemize}
|
||
%
|
||
% \marginpar{\texttt{gpl3+}}
|
||
% This program is free software: you can redistribute it and/or modify
|
||
% it under the terms of the GNU General Public License as published by
|
||
% the Free Software Foundation, either version 3 of the License, or
|
||
% (at your option) any later version.
|
||
%
|
||
% This program is distributed in the hope that it will be useful, but
|
||
% WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
% General Public License for more details.
|
||
%
|
||
% You should have received a copy of the GNU General Public License
|
||
% along with this program. If not, see
|
||
% <http://www.gnu.org/licenses/>.
|
||
%
|
||
% This release of \package{icite} consists of the following
|
||
% source files:
|
||
% \begin{itemize}
|
||
% \item |icite.dtx|
|
||
% \item |icite.ins|
|
||
% \item |Makefile|
|
||
% \end{itemize}
|
||
%
|
||
% \subsection*{License applicable to this document}
|
||
% \label{sec:documentation-license}
|
||
% Copyright \textcopyright\ 2019 Robert Alessi
|
||
%
|
||
% \ccbysa\marginpar{\texttt{CC BY-SA 4.0}}
|
||
% This document is licensed under the Creative Commons
|
||
% Attribution-ShareAlike 4.0 International License. To view a copy of
|
||
% this license, visit
|
||
% \url{http://creativecommons.org/licenses/by-sa/4.0/} or send a
|
||
% letter to Creative Commons, PO Box 1866, Mountain View, CA 94042,
|
||
% USA.
|
||
%
|
||
% \section{Introduction}
|
||
% \label{sec:introduction}
|
||
% Bib\LaTeX\ features a very powerful internal mechanism which
|
||
% supports indexing of citations and bibliographic entries and can be
|
||
% activated by a simple |indexing| option in the preamble. However, by
|
||
% default, only the authors and the works cited are inserted in the
|
||
% index. Furthermore, authors and works are indexed separately and
|
||
% only inserted in the global index that is generated by
|
||
% \cs{makeindex}. Another limitation is that the references are also
|
||
% excluded from the index.
|
||
%
|
||
% Notwithstanding these limitations, it is quite possible to typeset
|
||
% \emph{indices locorum citatorum} with Bib\LaTeX, but this remains an
|
||
% intricate business and requires knowing how to redefine and/or patch
|
||
% standard and internal Bib\LaTeX\ commands.
|
||
%
|
||
% The \package{icite} package is but a modest piece of software which
|
||
% addresses this situation. It relies on citation commands, but does
|
||
% not require Bib\LaTeX. Instead, \hologo{BibTeX} can be used as
|
||
% \package{icite} uses the \package{usebib}
|
||
% package\footnote{\cite{usebib}} to build the indices by drawing
|
||
% directly from the bibliographical database.
|
||
%
|
||
%
|
||
% \section[The \package{icite} package]{The \textsf{icite} package}
|
||
% The \package{icite} package is loaded as usual like so:---
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
\usepackage[<options>]{icite}
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% \package{icite} may be loaded with three optional \enquote*{named
|
||
% arguments} either of which is set using the syntax
|
||
% \meta{key}$=$\meta{value}. The description of the optional arguments
|
||
% follows:---
|
||
%
|
||
% \DescribeOption{citecmd}\label{ref:citecmd}
|
||
% |citecmd|$=$\meta{command}\hfill\tcboxverb{Default: cite}\\
|
||
% \meta{command} may be any citation command accepted by
|
||
% \hologo{BibTeX} or Bib\LaTeX. This option is used by the \cs{icite}
|
||
% command that is described below. By default, \cs{icite} uses the
|
||
% \cs{cite} command to insert citations in the body text.
|
||
%
|
||
% \DescribeOption{defaultindex}
|
||
% |defaultindex|$=$|none|\verb+|+\meta{index\_name}\hfill%
|
||
% \tcboxverb{Default: not set}\\
|
||
% \meta{index\_name} is the name of the index in which all passages
|
||
% cited with the \cs{icite} command are to be found by default. As
|
||
% this option is not initially set, \cs{icite} naturally inserts cited
|
||
% passages in the default general index, unless |defaultindex| is set
|
||
% to the value |none|, in which case indexing is disabled. It must be
|
||
% noted that this named argument does not need a value as it defaults
|
||
% to |loccit| if it is used alone. This is an easy way to have all
|
||
% passages cited indexed in a separate index named |loccit|.
|
||
%
|
||
% \DescribeOption{nobibengine}\NEWfeature{v1.1}
|
||
% \changes{v1.1}{2019/03/12}{New global option \texttt{nobibengine}}%
|
||
% |nobibengine|$=$|true|\verb+|+|false|\hfill%
|
||
% \tcboxverb{Default: not set}\\
|
||
% This named argument does not need a value as it defaults to |true|
|
||
% if it is used. When this option is activated, \package{icite} does
|
||
% not use \hologo{BibTeX} or Bib\LaTeX\ to insert the citations in the
|
||
% body text---even if either is loaded in the preamble---and pulls the
|
||
% necessary information directly from the bibliographical
|
||
% database. For this reason, \cs{bibinput} described below is of
|
||
% course still required. The citations inserted consist of the
|
||
% elements described below \vref{sec:entry-fields}
|
||
% \vpageref{sec:entry-fields}. However, it must be noted that if the
|
||
% entry field |shorthand| of any author/work be set in the database,
|
||
% it takes precedence over the fields used to define author names and
|
||
% titles.
|
||
%
|
||
% \paragraph{Bibliographical database}
|
||
% \DescribeMacro{\bibinput} Once \package{icite} is loaded, it must be
|
||
% connected to at least one bibliographic |.bib| file. To that end,
|
||
% \package{icite} uses the same \cs{bibinput} command as
|
||
% \package{usebib}.\footnote{Please refer to \cite[1]{usebib} for
|
||
% more detailed information on how to use this command.} An example
|
||
% follows:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
% load icite, have \icite use \autocite by default, and insert cited
|
||
% passages in a separate index named 'loccit':
|
||
\usepackage[citecmd=autocite, defaultindex]{icite}
|
||
% note that the .bib file must be stripped of its extension:
|
||
\bibinput{bibliography} % that is: load bibliography.bib
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% \subsection{Preamble-only commands}
|
||
% The following commands may be found in the preamble only.
|
||
% \paragraph{Styling the titles}
|
||
% \DescribeMacro{\SetTitleStyle} By default, \package{icite} prints
|
||
% the titles of the works cited in italics.\\
|
||
% \cs{SetTitleStyle}\marg{formatting directives} can be used in the
|
||
% preamble only to customize the way titles are displayed in the
|
||
% indices, like so:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
\SetTitleStyle{\textbf{#1}}
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
% As this example shows, |#1| is the token that is replaced with the
|
||
% actual title in the formatting directives of the \cs{SetTitleStyle}
|
||
% command.
|
||
%
|
||
% \paragraph{Delimiters}
|
||
% \NEWfeature{v1.2}\DescribeMacro{\AuthorTitleDelim}
|
||
% \cs{AuthorTitleDelim}\marg{delimiter} sets the delimiter between
|
||
% authors and titles in the body text when the |nobibengine| option is
|
||
% set to |true|. The default delimiter is a comma and a space.
|
||
%
|
||
% \DescribeMacro{\TitlePageDelim}
|
||
% \cs{TitlePageDelim}\marg{delimiter} sets the delimiter between
|
||
% titles and pages in the body text when the |nobibengine| option is
|
||
% set to |true|. The default delimiter is a comma and a space.
|
||
%
|
||
% \subsection[\textsf{icite} for the Impatient]%
|
||
% {\package{icite} for the Impatient}
|
||
% Read \href{samples/icite-minimal.pdf}{\texttt{icite-minimal.pdf}}.
|
||
%
|
||
% \subsection{Entry fields}
|
||
% \label{sec:entry-fields}
|
||
% \subsubsection{Author names}
|
||
% To process author names, \package{icite} uses the following entry
|
||
% fields:
|
||
% \begin{description}
|
||
% \item[author] As for example in |author = {Ullmann, Manfred}|, which
|
||
% is satisfactory in most cases.
|
||
% \item[indexauthor] This field is not set by Bib\LaTeX. However, it
|
||
% may be used as a fallback field for multiple or complex names.
|
||
% \item[sortname] This standard Bib\LaTeX\ field which is never
|
||
% printed may be used to modify the sorting order of the index
|
||
% entries.
|
||
% \end{description}
|
||
%
|
||
% \paragraph{Example}
|
||
% From a given entry such as: \\[1ex]%
|
||
% |author = {|\prname{.hunayn ibn 'is.hAq al-`ibAdiyy, 'abU
|
||
% zayd}|}|\\[1ex]%
|
||
% it may prove useful to define an additional |indexauthor| field to
|
||
% have printed in the index only the relevant part of the name, like
|
||
% so: \\[1ex]%
|
||
% |indexauthor = {|\prname{.hunayn ibn 'is.hAq}|}| or
|
||
% |indexauthor = {|\prname{.hunayn}|}|\\[1ex]
|
||
% But in the end, the |sortname| field is also needed because the
|
||
% diacritics must be discarded so that the name be sorted
|
||
% properly:\\[1ex]%
|
||
% |sortname = {{|Hunayn ibn Ishaq|}}|
|
||
%
|
||
% \subsection{Titles}
|
||
% To process titles, \package{icite} uses the following entry fields:
|
||
% \begin{description}
|
||
% \item[title] The full title of the work.
|
||
% \item[shorttitle] The title in an abbriged form. If this entry is
|
||
% set, it takes precedence over the |title| field in the printed index.
|
||
% \item[indextitle] This field may be used to have a title such as
|
||
% \emph{The {\TeX}Book} printed in the index as \emph{{\TeX}Book, The}.
|
||
% \item[indexsorttitle] Like |sortname| for author names, this field is
|
||
% used for sorting only and is never printed. From the previous
|
||
% example, it may be used like so: \\%
|
||
% |indexsorttitle = {TEXBook}|
|
||
% \end{description}
|
||
%
|
||
% \section{Basic use}
|
||
% \DescribeMacro{\icite} \package{icite} provides the \cs{icite}
|
||
% command which both inserts a formatted citation in the body text and
|
||
% an entry corresponding to the passage cited in the index. This
|
||
% command is to be used in place of any \hologo{BibTeX} or Bib\LaTeX\
|
||
% citation command the syntax of which is
|
||
% \cs{command}\oarg{pre}\oarg{post}\marg{key}. It must be noted that
|
||
% only standard citation commands are supported, with the exception of
|
||
% those mentioned as qualified citation lists or so-called
|
||
% \enquote*{multicite} commands. The full syntax of \cs{icite}
|
||
% follows:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
\icite[<pre>][<post>]{<key>}[<command>]
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
% Where \oarg{command} can be used as a further optional argument to
|
||
% specify a standard citation command that \cs{icite} should emulate
|
||
% instead of the default \cs{cite} command or any other command set as
|
||
% default in the preamble by means of the |citecmd| global
|
||
% option.\footnote{See above, \vref{ref:citecmd}.}
|
||
%
|
||
% \paragraph{Example} The following example illustrates how
|
||
% \package{icite} can be used in combination with Bib\LaTeX\ and the
|
||
% \package{imakeidx} package to have the passages cited sorted and
|
||
% printed in a separate, specific \enquote*{Index of Passages
|
||
% Cited}:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
% preamble
|
||
% load icite, have \icite use \autocite by default, and insert cited
|
||
% passages in a separate index named 'loccit':
|
||
\usepackage[citecmd=autocite, defaultindex]{icite}
|
||
% load bibliography.bib
|
||
\bibinput{bibliography}
|
||
|
||
% load biblatex (with oxnotes, \autocite acts as \footcite)
|
||
\usepackage[style=oxnotes]{biblatex}
|
||
\addbibresource{bibliography.bib} % mind the extension here
|
||
|
||
% load imakeidx and use xindy to have the numbers sorted properly
|
||
\usepackage[xindy]{imakeidx}
|
||
\makeindex[name=loccit, title=Index of Passages Cited (modern authors)]
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% Then \cs{icite} can be used like so:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
\section*{\cs{icite} in action}
|
||
Let us start with four citations of the same reference, to make sure
|
||
that they are all indexed and sorted properly:
|
||
one\icite[123]{Ullmann1970}, two\icite[231]{Ullmann1970},
|
||
three\icite[81]{Ullmann1970} and four\icite[18]{Ullmann1970}.
|
||
|
||
Let us continue with four other citations out of two other
|
||
references: one\icite[90]{Bürgel2016}, two\icite[370]{Dols1987},
|
||
three\icite[205]{Bürgel2016} and four\icite[380]{Dols1987}.
|
||
|
||
Finally, let us have \cs{icite} use \cs{textcite} to cite
|
||
\icite[123]{Endress1992}[textcite], and again, this time in a
|
||
footnote\icite[86]{Endress1992}.
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% \begin{tcblisting}{text only}
|
||
% \section*{\cs{icite} in action}
|
||
% Let us start with four citations of the same reference, to make
|
||
% sure that they are all indexed and sorted properly:
|
||
% one\icite[123]{Ullmann1970}, two\icite[231]{Ullmann1970},
|
||
% three\icite[81]{Ullmann1970} and four\icite[18]{Ullmann1970}.
|
||
%
|
||
% Let us continue with four other citations out of two other
|
||
% references: one\icite[90]{Bürgel2016}, two\icite[370]{Dols1987},
|
||
% three\icite[205]{Bürgel2016} and four\icite[380]{Dols1987}.
|
||
%
|
||
% Finally, let us have \cs{icite} use \cs{textcite} to cite
|
||
% \icite[123]{Endress1992}[textcite], and again, this time in a
|
||
% footnote\icite[86]{Endress1992}.
|
||
% \end{tcblisting}
|
||
%
|
||
% All indices and the contents of the \hologo{BibTeX} file that has
|
||
% been used can be found below in the appendix
|
||
% (\vrefrange{ref:indices}{ref:icite-bib} respectively). As can be
|
||
% seen by comparing the bibliography generated in the footnotes with
|
||
% the text printed in the index, \package{icite} prints as expected
|
||
% the abbridged forms of the titles when they are
|
||
% available. Furthermore, as a default citation command set in the
|
||
% preamble, the \enquote*{oxnotes} Bib\LaTeX\ option of
|
||
% \package{biblatex-oxref} style package makes \cs{autocite} behave
|
||
% like \cs{footcite}. Finally, the page numbers in the index are
|
||
% sorted properly: for example, two-digit numbers, like 81, are listed
|
||
% before 123.
|
||
%
|
||
% \section{Refined use}
|
||
% When references are made not only to modern authors but also to
|
||
% authors and works from classical antiquity or from the Middle Ages,
|
||
% it is commonly agreed that at least two separate indices of passages
|
||
% cited should be made. Another option is not to index passages cited
|
||
% from modern authors at all.
|
||
%
|
||
% \DescribeMacro{\IndexSubtypeAs} \package{icite} is able to
|
||
% differentiate between sources by drawing from the bibliographical
|
||
% database the exact string that may be found in the |entrysubtype|
|
||
% entry field. To that end, the \cs{IndexSubtypeAs} command is
|
||
% provided. It takes to mandatory arguments, like so:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
\IndexSubtypeAs{<subtype>}{<index_name>}
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
% Where |<subtype>| is any given string used to specify an
|
||
% |entrysubtype| in the bibliographical database, and |<index_name>|
|
||
% the name of the index which the authors matching that subtype must
|
||
% go into. This command is to be found in the preamble only.
|
||
%
|
||
% Of course different subtypes can be associated with a single index
|
||
% or with different indices. That said, one should keep in mind that
|
||
% any entry the actual subtype of which is not associated with an
|
||
% index is processed as if it had no subtype at all. Examples
|
||
% follow:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
% load icite, and have cited authors indexed in an index named
|
||
% 'secondary':
|
||
\usepackage[defaultindex=secondary]{icite}
|
||
% except for authors whose 'entrysubtype' field matches the string
|
||
% 'classical': have them indexed in an index named 'primary':
|
||
\IndexSubtypeAs{classical}{primary}
|
||
% authors whose 'entrysubtype' field matches the string 'medieval'
|
||
% should go into the same index:
|
||
\IndexSubtypeAs{medieval}{primary}
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
% Or:
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
% load icite, but do not index passages cited with \icite:
|
||
\usepackage[defaultindex=none]{icite}
|
||
% except for authors whose 'entrysubtype' field matches the string
|
||
% 'classical': have them indexed in an index named 'primary':
|
||
\IndexSubtypeAs{classical}{primary}
|
||
% authors whose 'entrysubtype' field matches the string 'medieval'
|
||
% should go into the same index:
|
||
\IndexSubtypeAs{medieval}{primary}
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% \paragraph{Example} In the following example, modern authors, namely
|
||
% those whose |entrysubtype| field does not match the string
|
||
% |classical| should go into the default |loccit| index. As for those
|
||
% whose |entrysubtype| matches |classical|, they should to into an
|
||
% index named |primary|. \label{ref:classics-pkg}Furthermore, the
|
||
% \package{classics} package is used to format references in which a
|
||
% volume number is used.\footnote{For more information, see below
|
||
% \vref{sec:classics-usage}.} In this way, \package{xindy} only has
|
||
% numbers to handle:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
% preamble
|
||
\usepackage[style=oxnotes]{biblatex}
|
||
\addbibresource{bibliography.bib}
|
||
|
||
\usepackage[xindy]{imakeidx}
|
||
\makeindex[name=loccit, title=Index of passages cited (modern authors)]
|
||
\makeindex[name=primary, title=\emph{Index locorum citatorum}]
|
||
|
||
\usepackage{classics}
|
||
\newclassic{iau}{\classicsRoman{#1}|, #1|.#1}
|
||
\newclassic{razi}{#1|.#1}
|
||
\newclassic{nadim}{\classicsRoman{#1}|.#1|, #1}
|
||
|
||
\usepackage[citecmd=autocite,defaultindex]{icite}
|
||
\IndexSubtypeAs{classical}{primary}
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% Then \cs{icite} can be used like so:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
\section*{\cs{icite} in action}
|
||
Let us start with four citations of the same reference, to make sure
|
||
that they are all indexed and sorted properly:
|
||
one\icite[123]{Ullmann1970}, two\icite[231]{Ullmann1970},
|
||
three\icite[81]{Ullmann1970} and four\icite[18]{Ullmann1970}.
|
||
|
||
Let us continue with four other citations out of two other
|
||
references: one\icite[90]{Bürgel2016}, two\icite[370]{Dols1987},
|
||
three\icite[205]{Bürgel2016} and four\icite[380]{Dols1987}.
|
||
|
||
Before concluding, let us insert a few references to medieval Arabic
|
||
authors: one\icite[\iau{1}[81][32]]{IAUMuller},
|
||
two\icite[\razi{5}[7--10]]{RaziShukuk}, three\icite[133]{al-Qifti},
|
||
four\icite[\nadim{3}[7][286]]{al-Nadim},
|
||
five\icite[\iau{2}[214][20]]{IAUMuller},
|
||
six\icite[\razi{1}[6--20]]{RaziShukuk},
|
||
seven\icite[126.15--20]{al-Qifti} and
|
||
eight\icite[\nadim{3}[7][291]]{al-Nadim}.
|
||
|
||
Finally, let us have \cs{icite} use \cs{textcite} to cite
|
||
\icite[123]{Endress1992}[textcite], and again, this time in a
|
||
footnote\icite[86]{Endress1992}.
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% \begin{tcblisting}{text only}
|
||
% \section*{\cs{icite} in action}
|
||
% Let us start with four citations of the same reference, to make
|
||
% sure that they are all indexed and sorted properly:
|
||
% one\icite[123]{Ullmann1970}, two\icite[231]{Ullmann1970},
|
||
% three\icite[81]{Ullmann1970} and four\icite[18]{Ullmann1970}.
|
||
%
|
||
% Let us continue with four other citations out of two other
|
||
% references: one\icite[90]{Bürgel2016}, two\icite[370]{Dols1987},
|
||
% three\icite[205]{Bürgel2016} and four\icite[380]{Dols1987}.
|
||
%
|
||
% Before concluding, let us insert a few references to medieval
|
||
% Arabic authors: one\icite[\iau{1}[81][32]]{IAUMuller},
|
||
% two\icite[\razi{5}[7--10]]{RaziShukuk},
|
||
% three\icite[133]{al-Qifti},
|
||
% four\icite[\nadim{3}[7][286]]{al-Nadim},
|
||
% five\icite[\iau{2}[214][20]]{IAUMuller},
|
||
% six\icite[\razi{1}[6--20]]{RaziShukuk},
|
||
% seven\icite[126.15--20]{al-Qifti} and
|
||
% eight\icite[\nadim{3}[7][291]]{al-Nadim}.
|
||
%
|
||
% Finally, let us have \cs{icite} use \cs{textcite} to cite
|
||
% \icite[123]{Endress1992}[textcite], and again, this time in a
|
||
% footnote\icite[86]{Endress1992}.
|
||
% \end{tcblisting}
|
||
%
|
||
% As already said above, all indices and the contents of the
|
||
% \hologo{BibTeX} file that has been used can be found below in the
|
||
% appendix (\vrefrange{ref:indices}{ref:icite-bib} respectively). As
|
||
% one can see, \prname{al-rAziyy} has been sorted under the letter R
|
||
% and references to classical works have been formatted properly.
|
||
%
|
||
%
|
||
% \subsection[The \textsf{classics} package]%
|
||
% {The \package{classics} package} %
|
||
% \label{sec:classics-usage}
|
||
% As said above \vpageref{ref:classics-pkg}, it is advisable to use
|
||
% the \package{classics} package to format volume, page, column, line
|
||
% numbers and the like which are inserted in the \meta{post} optional
|
||
% argument of the \cs{icite} command\autocite{classics}. An example of
|
||
% using \package{classics} to format references to Aristotle according
|
||
% to Bekker pagination follows:\footnote{See \cite[2]{classics} for
|
||
% more information.}--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
% preamble:
|
||
\usepackage{classics}
|
||
\newclassic{aristotle}{#1|\textit{#1}|#1}
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{example}
|
||
In \emph{Politics}, Aristotle says that man is by nature a political
|
||
animal in the following passages: \aristotle{1253}[a][2--9] (Book~1)
|
||
and again in \aristotle{1278}[b][19] (Book~3). The latter passage
|
||
shows that one should read the whole section of Book~1 concerning
|
||
household management and the control of slaves
|
||
(\aristotle*{1253}[b][1]{1253}[b][39]).
|
||
\end{example}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
% The following prints the same body text while using \package{icite}
|
||
% to have the passages cited inserted in the \emph{Index locorum
|
||
% citatorum} (see below \vref{sec:index-loc-cit}):--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{example}
|
||
In \emph{Politics}, Aristotle says that man is by nature a political
|
||
animal in the following passages:
|
||
\icite[\aristotle{1253}[a][2--9]]{Aristotle:Politica}[notecite]
|
||
(Book~1) and again in \icite[\aristotle{1278}[b][19]]%
|
||
{Aristotle:Politica}[notecite] (Book~3). The latter passage shows
|
||
that one should read the whole section of Book~1 concerning
|
||
household management and the control of slaves
|
||
\icite[\aristotle*{1253}[b][1]{1253}[b][39]]%
|
||
{Aristotle:Politica}[pnotecite].
|
||
\end{example}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
% As can be seen, the \cs{notecite} and \cs{pnotecite} commands have
|
||
% been used to insert only the references in the body text.
|
||
%
|
||
% It is also advisable to use \package{xindy} to compile indices of
|
||
% passages cited because \package{xindy}, unlike \package{makeindex}
|
||
% or \package{xindex}, is able to sort numbers properly: for example,
|
||
% with \package{xindy}, such a number as 81 will come before 100, but
|
||
% will be sorted after 100 with the other two engines.
|
||
% \begin{tcblisting}{text only, title=Caveat}
|
||
% \package{xindy} (actually |texindy|) is also designed to ignore
|
||
% \TeX\ commands by default. However, due to a missing line in
|
||
% |xindy/modules/base/tex.xdy|,\footnote{As the time of writing, in
|
||
% \package{xindy} v2.5.1.} this does not apply to so-called
|
||
% \enquote*{starred} \TeX\ commands, such as \cs{aristotle*} from
|
||
% the example above.
|
||
% \end{tcblisting}
|
||
% One easy way to get around this issue is to create a style file with
|
||
% a single line that instructs \package{xindy} to ignore the asterisk
|
||
% when processing the index, like so:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{tcblisting}{minted language=lisp, listing only, title=icite.xdy}
|
||
(merge-rule "\*" "" :eregexp)
|
||
\end{tcblisting}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% The following example shows how this simple rule can be
|
||
% applied:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{code}
|
||
% preamble:
|
||
\usepackage[xindy]{imakeidx}
|
||
\makeindex[name=loccit, options=-M icite.xdy]
|
||
% document:
|
||
\printindex[loccit]
|
||
\end{code}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
% Of course, the document itself must be compiled with
|
||
% |--shell-escape|.\footnote{See \cite[2--4]{imakeidx}.}
|
||
%
|
||
% \section{Appendix}
|
||
% Designing the layout of indices is out of the scope of this
|
||
% documentation. For information, the \package{tabto} package has been
|
||
% used in the preamble in combination with the following |xindy| style
|
||
% file:--- %
|
||
% \iffalse
|
||
%<*example>
|
||
% \fi
|
||
\begin{tcblisting}{minted language=lisp, listing only,
|
||
title=icite.xdy}
|
||
(markup-locclass-list :open "\tabto{3.5cm}" :sep ", ")
|
||
\end{tcblisting}
|
||
% \iffalse
|
||
%</example>
|
||
% \fi
|
||
%
|
||
% \subsection{Indices}
|
||
% \label{ref:indices}
|
||
% \subsubsection{Index of Passages Cited (modern authors)}
|
||
% \printindex[loccit]
|
||
% \needspace{8\baselineskip}
|
||
% \subsubsection{\emph{Index locorum citatorum}}
|
||
% \label{sec:index-loc-cit}
|
||
% \printindex[primary]
|
||
%
|
||
% \subsection{\texorpdfstring{\hologo{BibTeX}
|
||
% file used in this document}{BibTeX file used in this document}}
|
||
% \label{ref:icite-bib}
|
||
% \tcbinputlisting{minted options={linenos, numbersep=1.5mm}, minted
|
||
% language=bibtex, listing file=icite.bib, listing only}
|
||
%
|
||
%\StopEventually{}
|
||
%
|
||
% \section{Implementation}
|
||
%
|
||
% \iffalse
|
||
%<*package>
|
||
% \fi
|
||
% Declare the global options, and define them:
|
||
% \begin{macrocode}
|
||
\RequirePackage{xkeyval}
|
||
\DeclareOptionX{citecmd}[cite]{\def\ic@dfltcit{#1}}
|
||
\newif\ifdefault@index
|
||
\newif\ifno@index
|
||
\DeclareOptionX{defaultindex}[loccit]{
|
||
\edef\@tempa{#1}
|
||
\edef\@none{none}
|
||
\ifx\@tempa\@none
|
||
\no@indextrue
|
||
\else
|
||
\default@indextrue
|
||
\def\ic@dfltind{#1}
|
||
\fi
|
||
}
|
||
\newif\ifno@bibengine
|
||
\define@boolkey{icite.sty}[@pkg@]{nobibengine}[true]{%
|
||
\if@pkg@nobibengine\no@bibenginetrue\else\fi}
|
||
\ExecuteOptionsX{citecmd}
|
||
\ProcessOptionsX\relax
|
||
% \end{macrocode}
|
||
% The following packages are required by \package{icite}:
|
||
% \begin{macrocode}
|
||
\RequirePackage{xparse}
|
||
\RequirePackage{datatool}
|
||
\RequirePackage{usebib}
|
||
% \end{macrocode}
|
||
% If |nobibengine| is set to true, then \cs{ic@dfltcit} will be
|
||
% redefined by \cs{icite} to \cs{ic@nullcmd} which does nothing.
|
||
% \begin{macrocode}
|
||
\NewDocumentCommand{\ic@nullcmd}{O{}O{}m}{}
|
||
% \end{macrocode}
|
||
% Define fields to be used by \package{icite}:
|
||
% \begin{macrocode}
|
||
\define@reuse@key{author}
|
||
\define@reuse@key{indexauthor}
|
||
\define@reuse@key{sortname}
|
||
\define@reuse@key{title}
|
||
\define@reuse@key{shorttitle}
|
||
\define@reuse@key{indextitle}
|
||
\define@reuse@key{indexsorttitle}
|
||
\define@reuse@key{entrysubtype}
|
||
\define@reuse@key{shorthand}
|
||
% \end{macrocode}
|
||
% This is the same as \cs{usebibentry} from \package{ebib}, but it
|
||
% does not return an error if the entry field is not found:
|
||
% \begin{macrocode}
|
||
\def\get@bibentry#1#2{\@ifundefined{reuse@#1@#2}{}
|
||
{\@nameuse{reuse@#1@#2}}}
|
||
% \end{macrocode}
|
||
% Create a new database which \package{icite} will use to connect
|
||
% Bib\LaTeX\ \enquote*{subtypes} to indices.
|
||
% \begin{macrocode}
|
||
\DTLnewdb{icite@indices}
|
||
% \end{macrocode}
|
||
% \DescribeMacro{\IndexSubtypeAs} \cs{IndexSubtypeAs} takes two
|
||
% mandatory arguments: 1. Any given keyword used to specify an
|
||
% \enquote*{entrysubtype} in the bibliographical database and 2. The
|
||
% index which the authors matching that subtype must go into. This
|
||
% command is to be found in the preamble only.
|
||
% \begin{macrocode}
|
||
\NewDocumentCommand{\IndexSubtypeAs}{m m}{%
|
||
\DTLnewrow{icite@indices}
|
||
\DTLnewdbentry{icite@indices}{subtype}{#1}
|
||
\DTLnewdbentry{icite@indices}{index}{#2}
|
||
}
|
||
\@onlypreamble\IndexSubtypeAs
|
||
% \end{macrocode}
|
||
% \DescribeMacro{\SetTitleStyle} By default, titles are printed in
|
||
% italics. This can be changed in the preamble by \cs{SetTitleStyle}.
|
||
% \begin{macrocode}
|
||
\NewDocumentCommand{\TitleStyle}{m}{\emph{#1}}
|
||
\NewDocumentCommand{\SetTitleStyle}{m}{%
|
||
\RenewDocumentCommand{\TitleStyle}{m}{#1}
|
||
}
|
||
\@onlypreamble\SetTitleStyle
|
||
% \end{macrocode}
|
||
% \DescribeMacro{\AuthorTitleDelim}
|
||
% \changes{v1.2}{2019/03/17}{\cs{AuthorTitleDelim}: delimiter
|
||
% between authors and titles}\cs{AuthorTitleDelim}\marg{delimiter}
|
||
% sets the delimiter between authors and titles in the body text when
|
||
% the |nobibengine| option is set to |true|. The default delimiter is
|
||
% a comma.
|
||
% \begin{macrocode}
|
||
\def\ic@authtitdelim{, }
|
||
\NewDocumentCommand{\AuthorTitleDelim}{m}{%
|
||
\def\ic@authtitdelim{#1}
|
||
}
|
||
\@onlypreamble\AuthorTitleDelim
|
||
% \end{macrocode}
|
||
% \DescribeMacro{\TitlePageDelim}
|
||
% \changes{v1.2}{2019/03/17}{\cs{TitlePageDelim}: the delimiter
|
||
% between titles and pages}\cs{TitlePageDelim}\marg{delimiter} sets
|
||
% the delimiter between titles and pages in the body text when the
|
||
% |nobibengine| option is set to |true|. The default delimiter is a
|
||
% comma.
|
||
% \begin{macrocode}
|
||
\def\ic@titpgdelim{, }
|
||
\NewDocumentCommand{\TitlePageDelim}{m}{%
|
||
\def\ic@titpgdelim{#1}
|
||
}
|
||
\@onlypreamble\TitlePageDelim
|
||
% \end{macrocode}
|
||
% \DescribeMacro{\icite} \cs{icite} both inserts a formatted citation
|
||
% and an entry in the \emph{index locorum citatorum}. It is to be used
|
||
% in place of any \hologo{BibTeX} or Bib\LaTeX\ citation command the
|
||
% syntax of which is
|
||
% \cs{command}\oarg{pre}\oarg{post}\marg{key}. \cs{icite} further
|
||
% accepts an optional argument should one wish to specify the
|
||
% citation command to be used, like so:\\
|
||
% \cs{icite}\oarg{pre}\oarg{post}\marg{key}\oarg{command}\\
|
||
% Only standard citation commands are accepted, with the exception of
|
||
% qualified citation lists or so-called \enquote*{multicite} commands.
|
||
% \begin{macrocode}
|
||
\NewDocumentCommand{\icite}{o o m O{\ic@dfltcit}}{%
|
||
\edef\ic@argiv{#4}%
|
||
\edef\ic@null{ic@nullcmd}%
|
||
\ifno@bibengine\let\ic@argiv\ic@null\else\fi%
|
||
\edef\@shorthand{\get@bibentry{#3}{shorthand}}%
|
||
\edef\@subtype{\get@bibentry{#3}{entrysubtype}}%
|
||
\edef\@author{\get@bibentry{#3}{author}}%
|
||
\edef\@indexauthor{\get@bibentry{#3}{indexauthor}}%
|
||
\edef\@sortname{\get@bibentry{#3}{sortname}}%
|
||
\edef\@indexsorttitle{\get@bibentry{#3}{indexsorttitle}}%
|
||
\edef\@indextitle{\get@bibentry{#3}{indextitle}}%
|
||
\edef\@shorttitle{\get@bibentry{#3}{shorttitle}}%
|
||
\edef\@title{\get@bibentry{#3}{title}}%
|
||
\ifx\@indexauthor\empty
|
||
\def\@useauthor{\@author}%
|
||
\else
|
||
\def\@useauthor{\@indexauthor}%
|
||
\fi
|
||
\ifx\@sortname\empty
|
||
\def\@sortedauthor{\@useauthor}%
|
||
\else
|
||
\def\@sortedauthor{{\@sortname}@\@useauthor}%
|
||
\fi
|
||
\ifx\@indextitle\empty
|
||
\ifx\@shorttitle\empty
|
||
\def\@usetitle{\@title}%
|
||
\else
|
||
\def\@usetitle{\@shorttitle}%
|
||
\fi
|
||
\else
|
||
\def\@usetitle{\@indextitle}%
|
||
\fi
|
||
\ifx\@indexsorttitle\empty
|
||
\def\@sortedtitle{{\@usetitle}@\TitleStyle{\@usetitle}}%
|
||
\else
|
||
\def\@sortedtitle{{\@indexsorttitle}@\TitleStyle{\@usetitle}}%
|
||
\fi
|
||
\IfNoValueTF{#1}%
|
||
{\DTLifdbempty{icite@indices}{%
|
||
\ifno@index\else
|
||
\ifdefault@index%
|
||
\index[\ic@dfltind]{\@sortedauthor!\@sortedtitle}%
|
||
\else%
|
||
\index{\@sortedauthor!\@sortedtitle}%
|
||
\fi\fi%
|
||
}{%
|
||
\DTLforeach*{icite@indices}{%
|
||
\icite@subtype=subtype,\icite@index=index}{%
|
||
\ifx\@subtype\icite@subtype%
|
||
\index[\icite@index]{\@sortedauthor!\@sortedtitle}%
|
||
\dtlbreak%
|
||
\else%
|
||
\ifno@index\else
|
||
\ifdefault@index%
|
||
\index[\ic@dfltind]{\@sortedauthor!\@sortedtitle}%
|
||
\else%
|
||
\index{\@sortedauthor!\@sortedtitle}%
|
||
\fi\fi%
|
||
\fi}}
|
||
\ifno@bibengine
|
||
\ifx\@shorthand\empty%
|
||
\@useauthor\ic@authtitdelim\TitleStyle{\@usetitle}%
|
||
\else%
|
||
\@shorthand%
|
||
\fi%
|
||
\else%
|
||
\fi%
|
||
\csname\ic@argiv\endcsname{#3}%
|
||
}
|
||
{\IfNoValueTF{#2}%
|
||
{\DTLifdbempty{icite@indices}{%
|
||
\ifno@index\else
|
||
\ifdefault@index%
|
||
\index[\ic@dfltind]{\@sortedauthor!\@sortedtitle!#1}%
|
||
\else%
|
||
\index{\@sortedauthor!\@sortedtitle!#1}%
|
||
\fi\fi%
|
||
}{%
|
||
\DTLforeach*{icite@indices}{%
|
||
\icite@subtype=subtype,\icite@index=index}{%
|
||
\ifx\@subtype\icite@subtype%
|
||
\index[\icite@index]{\@sortedauthor!\@sortedtitle!#1}%
|
||
\dtlbreak%
|
||
\else%
|
||
\ifno@index\else
|
||
\ifdefault@index%
|
||
\index[\ic@dfltind]{\@sortedauthor!\@sortedtitle!#1}%
|
||
\else%
|
||
\index{\@sortedauthor!\@sortedtitle!#1}%
|
||
\fi\fi%
|
||
\fi}}%
|
||
\ifno@bibengine
|
||
\ifx\@shorthand\empty%
|
||
\@useauthor\ic@authtitdelim\TitleStyle{\@usetitle}%
|
||
\ic@titpgdelim{#1}%
|
||
\else%
|
||
\@shorthand\ic@titpgdelim{#1}%
|
||
\fi%
|
||
\else%
|
||
\fi%
|
||
\csname\ic@argiv\endcsname[{#1}]{#3}%
|
||
}
|
||
{\DTLifdbempty{icite@indices}{%
|
||
\ifno@index\else
|
||
\ifdefault@index%
|
||
\index[\ic@dfltind]{\@sortedauthor!\@sortedtitle!#2}%
|
||
\else%
|
||
\index{\@sortedauthor!\@sortedtitle!#2}%
|
||
\fi\fi%
|
||
}{%
|
||
\DTLforeach*{icite@indices}{%
|
||
\icite@subtype=subtype,\icite@index=index}{%
|
||
\ifx\@subtype\icite@subtype%
|
||
\index[\icite@index]{\@sortedauthor!\@sortedtitle!#2}%
|
||
\dtlbreak%
|
||
\else%
|
||
\ifno@index\else
|
||
\ifdefault@index%
|
||
\index[\ic@dfltind]{\@sortedauthor!\@sortedtitle!#2}%
|
||
\else%
|
||
\index{\@sortedauthor!\@sortedtitle!#2}%
|
||
\fi\fi%
|
||
\fi}}%
|
||
\ifno@bibengine
|
||
\ifx\@shorthand\empty%
|
||
#1 \@useauthor\ic@authtitdelim\TitleStyle{\@usetitle}%
|
||
\ic@titpgdelim{#2}%
|
||
\else%
|
||
#1 \@shorthand\ic@titpgdelim{#2}%
|
||
\fi
|
||
\else%
|
||
\fi%
|
||
\csname\ic@argiv\endcsname[#1][{#2}]{#3}%
|
||
}%
|
||
}%
|
||
}
|
||
% \end{macrocode}
|
||
% \iffalse
|
||
%</package>
|
||
% \fi
|
||
%\Finale
|
||
\endinput |