我正在处理一份包含各种尾注的大型报告(使用 \footnote 和 \autocite 命令)。我需要在每一章中重置尾注(即从 1 重新开始)。最小工作示例如下,
\documentclass{report}
\usepackage{biblatex-chicago}
\usepackage{endnotes}
\let\footnote=\endnote
\renewcommand\enoteheading{\chapter*{\notesname}\mbox{}\par\vskip-\baselineskip}
\makeatletter
\@addtoreset{endnote}{chapter} % Reset endnote numbering every new chapter
\makeatother
\usepackage{footmisc}
\renewcommand{\thefootnote}{\fnsymbol{footnote}}%
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
@misc{C03,
author = {Cuthor, C.},
year = {2003},
title = {Charlie},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\chapter{Alpha}
Some text \autocite{A01}.
Some text with footnote.\footnote{ \autocite{B02}}
Some text \autocite{A01}.
\theendnotes
\chapter{Bravo}
Some text \autocite{B02}.
Some text \autocite{C03}.
\theendnotes
\end{document}
我很好奇我添加的序言是否是实现我想要的结果的最有效(或最小)的解决方案?这段代码看起来有点笨拙,试图改进我的 LaTeX 编码。换句话说,是否有更简单或更短的序言可以添加,但仍然可以实现我想要的结果,即每章重置尾注编号?
\renewcommand\enoteheading{\chapter*{\notesname}\mbox{}\par\vskip-\baselineskip}
\makeatletter
\@addtoreset{endnote}{chapter} % Reset endnote numbering every new chapter
\makeatother
\usepackage{footmisc}
\renewcommand{\thefootnote}{\fnsymbol{footnote}}%
答案1
代码看起来不错,但可以稍微缩短一些。
乍一看,\renewcommand\enoteheading
所有的 看起来有点奇怪\mbox{}\par\vskip-\baselineskip
,但这也是 中的原始定义endnotes.sty
所做的(并且它是正确对齐尾注所必需的)。
但如果尾注是每章的尾注,我不会将尾注本身设置为章节。从逻辑上讲,我会认为尾注属于上一章,因此应该是该章的一部分……
使用最新版本的 LaTeX(至少是 2018 年 4 月),你可以使用\counterwithin*
而不是\@addtoreset
。这有两个优点
- 您不需要,
\makeatletter...\makeatother
因为\counterwithin*
不包含@
。 \counterwithin*
检查其参数是否为计数器。(这里其实没有必要,因为您知道传递的应该是计数器)。
我不清楚你是否需要
\usepackage{footmisc}
\renewcommand{\thefootnote}{\fnsymbol{footnote}}%
我认为当我省略它时,我看不出示例中有什么不同。(由于您已将所有脚注重定向到使用其自己的计数器的尾注,因此至少\thefootnote
重新定义似乎毫无用处。)
\documentclass{report}
\usepackage{biblatex-chicago}
\usepackage{endnotes}
\let\footnote=\endnote
\renewcommand\enoteheading{\chapter*{\notesname}\mbox{}\par\vskip-\baselineskip}
\counterwithin*{endnote}{chapter}
\addbibresource{biblatex-examples.bib}
\begin{document}
\chapter{Alpha}
Some text \autocite{sigfridsson}.
Some text with footnote.\footnote{\autocite{worman}}
Some text \autocite{sigfridsson}.
\theendnotes
\chapter{Bravo}
Some text \autocite{worman}.
Some text \autocite{geer}.
\theendnotes
\end{document}
如何在每章末尾获得尾注?还提到了一种使用该软件包生成每章尾注的方法pagenote
。
我本来建议看一下enotez
,但目前biblatex
没有修补enotez
,因此脚注检测不能很好地工作(参见Biblatex,引用尾注,ibid 跟踪器被丢弃)。