我目前正在权衡一本书长度项目的索引选项。其中一个更令人惊讶的障碍是,似乎没有办法创建一个索引(在我的情况下是几个索引),以消除文本中的引用与脚注中出现的引用之间的歧义。例如,会有数百个对罗马法和教会法的引用,但通常这些引用会在脚注中,平均每页会有几个脚注。因此,在引文索引中对第 100 页的一般引用远不如对“100n34”的引用有用(对于仍然费心包含“index locorum”之类的内容的出版商来说,这是标准做法)。
出于排序的原因,这似乎xindy
是最好的选择,但可以处理脚注引用的解决方案将胜过它,因为手动对文件进行排序.idx
比手动识别脚注中的每个引用与文本中的引用更容易。(还请注意,脚注总是包含其他任意元素,例如文本和对现代研究的引用,因此“特殊”脚注命令可能不起作用。)
memoir
最后,如果这让事情变得更加复杂,这个项目与类(页面布局)和lualatex
(字体)相关。
答案1
这是我尝试做的。我还没有进行过广泛的测试,但它似乎有效(两本书,两个内联引用,以及两个脚注引用,中间有虚拟脚注)。
按照 Paul Stanley 在其评论中所说,这个想法是使用 BibLaTeX 正确地索引内容。为了做到这一点,我们需要重新定义\DeclareIndexFieldFormat
(用于索引标题,但它有几种名称变体等),并创建一个宏,通过将脚注编号附加到页码来格式化页码。
我还更新了两个宏,因为biblatex
在索引标题之前会进行一些格式化,并且我们需要在合并添加的|note
命令时保留它。
\documentclass{memoir}
\usepackage[backend=biber,indexing=cite]{biblatex}
\makeatletter
\DeclareIndexFieldFormat{indextitle}{%
\iffootnote%
{\usebibmacro{index:title}{\index}{#1}{|note{\thefootnote}}}%
{\usebibmacro{index:title}{\index}{#1}{}}%
}
\renewbibmacro*{index:title}[3]{%
\usebibmacro{index:field}{#1}{\thefield{indexsorttitle}}{\emph{#2}}{#3}}
\renewbibmacro*{index:field}[4]{%
\begingroup
\protected@edef\theindexentry{%
\unexpanded{#1}{#2\actualoperator\unexpanded{#3#4}}}%
\theindexentry
\endgroup}
\newcommand{\note}[2]{#2n#1}
\makeatother
\begin{filecontents}{\jobname.bib}
@book{author:2000,
author = {Author, A.},
year = {2000},
title = {My first title},
}
@book{buthor:2002,
author = {Buthor, B.},
year = {2002},
title = {My second title},
}
\end{filecontents}
\makeindex
\begin{document}
Some inline citation \cite{author:2000}. Some footnote\footnote{A, b and c}. Some footnote citation \footcite{buthor:2002}.
\clearpage
Some footnote\footnote{A, b and c}. Some footnote citation \footcite{author:2000}. Some inline citation \cite{buthor:2002}.
\printindex
\end{document}
编辑:看看您的第一个问题,我想也许您可以使用以下代码创建一个条目:
@book{digest,
title = {Digestum},
indextitle = {Digestum!\emph{Dig.}},
indexsorttitle = {02},
}
@book{institutes,
title = {Institutiones},
indextitle = {Institutiones!\emph{Inst.}},
indexsorttitle = {01},
}
不要忘记更换 \emph{#2}
经过 #2
在 \renewbibmacro{index:title}
在第 14 步,否则它将不起作用。
现在,如果您想要两个索引,其中一个按任意顺序排序,另一个按字母顺序排序,则需要相应地指定内容,说明在哪里索引哪些数据(请参阅回忆录文档)。如果您还想让“机构”和“摘要”看起来像字母标题,我建议您寻找一种方法来解决您的第一个问题xindy
(或等到有人找到它)。很抱歉我帮不上忙。
答案2
到目前为止,似乎最简单的解决方案是创建两个命令,一个用于文内引用(在我的情况下很少见),另一个用于脚注中的引用。这是一个简化的示例,使用makeindex
(最终会在更完整的示例中错误地排序内容)例子,但那是另一个问题...)。请注意,为了清楚起见,我夸大了\digtext
和\insttext
命令(包括它们如何被索引);我想你可以对“带星号的”命令做同样的事情,但我更喜欢在可能的情况下用命令名称表达命令的要点。
\documentclass[12pt]{memoir}
\usepackage{makeidx}
\makeindex
\newcommand{\nn}[2]{#2n#1}
\newcommand{\inst}[1]{Inst.\,#1\index{Inst. #1@I. #1|nn{\thefootnote}}}
\newcommand{\insttext}[1]{Inst.\,#1\index{Inst. #1@I. #1}}
\newcommand{\digtext}[1]{Dig.\,#1\index{Dig. #1@D. #1}}
\newcommand{\dig}[1]{Dig.\,#1\index{Dig. #1@D. #1|nn{\thefootnote}}}
\begin{document}
Some text.%
\footnote{A footnote with no citations.} %
%
%
\digtext{21.1.3}
\digtext{1.1.5}
\digtext{4.3.15.5}.%
\footnote{%
\inst{2.4.2}
\inst{4.1.1}
\inst{3.17.1}
}
\newpage
\insttext{1.2 pr}
\insttext{2.4.2}
\insttext{3.17.1}.%
\footnote{%
\dig{3.1.9}
\dig{50.17.188}
\dig{12.2.2.2}
\dig{1.1.5}
}
\printindex
\end{document}
一个更自动化、更不用说优雅的解决方案会更好,但更改几十个文内引用可能是最简单的解决方案。