summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-ms/doc/examples/22-indexing-subentry-ms.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/biblatex-ms/doc/examples/22-indexing-subentry-ms.tex')
-rw-r--r--macros/latex/contrib/biblatex-ms/doc/examples/22-indexing-subentry-ms.tex103
1 files changed, 103 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-ms/doc/examples/22-indexing-subentry-ms.tex b/macros/latex/contrib/biblatex-ms/doc/examples/22-indexing-subentry-ms.tex
new file mode 100644
index 0000000000..a4ba9312fa
--- /dev/null
+++ b/macros/latex/contrib/biblatex-ms/doc/examples/22-indexing-subentry-ms.tex
@@ -0,0 +1,103 @@
+%
+% This file demonstrates indexing with the 'imakeidx' package.
+% This file is processed as follows:
+%
+% latex file
+% bibtex/biber file
+% latex file
+% latex file
+%
+% Note that the file name suffix may be omitted. It's 'latex file' and not
+% 'latex file.tex'. Also note that '-t <file>' is optional.
+%
+\documentclass[a4paper]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+%
+% The 'imakeidx' package provides advanced indexing facilities with support for
+% multiple indexes. Unlike the 'index' package, 'imakeidx' does not generate
+% "self-protecting" index entries. So we need to protect control sequences in
+% indexing fields from expansion. For an example see the 'knuth:ct:a' entry in
+% biblatex-examples.bib.
+%
+\usepackage{imakeidx}
+\usepackage[american]{babel}
+\usepackage{csquotes}
+%
+% We set the 'indexing' package option and use the 'authortitle'
+% style in this example.
+%
+\usepackage[indexing=cite,style=authortitle,autolang=hyphen,backend=biber]{biblatex-ms}
+\addbibresource{biblatex-examples.bib}
+%
+% We want two indexes: an index of names with title subentries, an index of
+% titles organized by year. They are defined by way of \makeindex, see the
+% documentation of the 'imakeidx' package for details.
+%
+\makeindex[name=name-title,title={Name and Title Index}]
+\makeindex[name=year-title,title={Year and Title Index}]
+%
+% A 'name:title' indexing bibmacro can be found in biblatex.def. It takes the same
+% arguments as the 'index:name' bibmacro. Note that the title fields are accessed
+% inside the name indexing directive. So we have to test for missing titles.
+%
+\makeatletter
+\@ifpackageloaded{biblatex_legacy}
+ {\DeclareIndexNameFormat{name:title}{%
+ \iffieldundef{title}
+ {\usebibmacro{index:name}{\index[name-title]}{#1}{#3}{#5}{#7}}
+ {\usebibmacro{index:name:title}{\index[name-title]}{#1}{#3}{#5}{#7}}}}
+ {\DeclareIndexNameFormat{name:title}{%
+ \iffieldundef{title}
+ {\usebibmacro{index:name}{\index[name-title]}
+ {\namepartfamily}
+ {\namepartgiven}
+ {\namepartprefix}
+ {\namepartsuffix}}
+ {\usebibmacro{index:name:title}{\index[name-title]}
+ {\namepartfamily}
+ {\namepartgiven}
+ {\namepartprefix}
+ {\namepartsuffix}}}}
+\makeatother
+%
+% Auxiliary indexing macros in biblatex.def can be used to define additional
+% indexing directives with subentries. The following directive creates entries
+% for the year-title index.
+%
+\DeclareIndexFieldFormat{with:year}{%
+ \iffieldundef{year}
+ {\usebibmacro{index:entry}{\index[year-title]}{%
+ \mkbibindexentry{0}{Not dated}%
+ \subentryoperator%
+ \mkbibindexfield{\thefield{indexsorttitle}}{\emph{#1}}}}
+ {\usebibmacro{index:entry}{\index[year-title]}{%
+ \thefield{year}\subentryoperator%
+ \mkbibindexfield{\thefield{indexsorttitle}}{\emph{#1}}}}}
+%
+% We redefine the 'citeindex' bibmacro to use the new indexing directives.
+%
+\renewbibmacro*{citeindex}{%
+ \ifciteindex
+ {\indexnames[name:title]{labelname}%
+ \indexfield[with:year]{indextitle}}
+ {}}
+
+\begin{document}
+
+\section*{Indexing with the \texttt{imakeidx} package}
+
+% We cite a few items. These citations will be added to the indexes.
+\cite{knuth:ct,knuth:ct:a,knuth:ct:c,knuth:ct:d}
+\cite{aristotle:anima,aristotle:poetics,aristotle:physics,aristotle:rhetoric}
+
+\clearpage
+
+% We print the printbibliography...
+\printbibliography
+% ...and the indexes
+\raggedright
+\printindex[name-title] % the name-title index
+\printindex[year-title] % the year-title index
+
+\end{document}