索引中的脚注编号(例如 23n3)

索引中的脚注编号(例如 23n3)

我目前正在权衡一本书长度项目的索引选项。其中一个更令人惊讶的障碍是,似乎没有办法创建一个索引(在我的情况下是几个索引),以消除文本中的引用与脚注中出现的引用之间的歧义。例如,会有数百个对罗马法和教会法的引用,但通常这些引用会在脚注中,平均每页会有几个脚注。因此,在引文索引中对第 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}    

一个更自动化、更不用说优雅的解决方案会更好,但更改几十个文内引用可能是最简单的解决方案。

相关内容