![压缩连续的脚注标记](https://linux22.com/image/245764/%E5%8E%8B%E7%BC%A9%E8%BF%9E%E7%BB%AD%E7%9A%84%E8%84%9A%E6%B3%A8%E6%A0%87%E8%AE%B0.png)
这个问题导致了一个新的方案的出现:
footnoterange
我有一系列连续编号的脚注,显示为 (1,2,...,N)。我希望将它们压缩为仅包含系列 (1–N) 的第一个和最后一个成员的带连字符的系列,类似于 和 包cite
的natbib
行为连续编号的书目参考文献。我已经加载了该包footmisc
以便能够正确显示连续的脚注,但该包似乎只支持脚注列表的逗号划分(而不是连字符)(参见footmisc
手动的)。
编辑:我添加了三个 MWE 来明确我的意图。MWE1 显示了默认的 LaTeX 行为。MWE2 显示了调用 所带来的改进\usepackage[multiple]{footmisc}
。MWE3 显示了期望的结果。
MWE1(默认):
MWE2(脚部杂项):
MWE3(期望):
源代码包含在这里:
MWE1(默认):
\documentclass{article}
\usepackage[hmargin=1in,vmargin=4.75in]{geometry}
\begin{document}
This text bears a multiplicity of footnotes%
\footnote{Lorum}\footnote{ipsum}\footnote{dolor}%
\footnote{sit}\footnote{amet,}\footnote{consectetur}%
\footnote{adipisicing}\footnote{elit}.%
\end{document}
MWE2(脚部杂项):
\documentclass{article}
\usepackage[hmargin=1in,vmargin=4.75in]{geometry}
\usepackage[multiple]{footmisc}
\begin{document}
This text bears a multiplicity of footnotes%
\footnote{Lorum}\footnote{ipsum}\footnote{dolor}%
\footnote{sit}\footnote{amet,}\footnote{consectetur}%
\footnote{adipisicing}\footnote{elit}.%
\end{document}
MWE3(期望):
\documentclass{article}
\usepackage[hmargin=1in,vmargin=4.75in]{geometry}
\begin{document}
This text bears a multiplicity of footnotes$^{1\textrm{--}8}.$%
\footnotetext[1]{Lorum}\footnotetext[2]{ipsum}\footnotetext[3]{dolor}%
\footnotetext[4]{sit}\footnotetext[5]{amet,}\footnotetext[6]{consectetur}%
\footnotetext[7]{adipisicing}\footnotetext[8]{elit}%
\end{document}
答案1
如果你想给出对一系列脚注的引用,footnoterange
那么footnoterange
包是显而易见的选择:
\documentclass{article}
% load hyperref or footmisc or other packages here
% hyperref-option hyperfootnotes=true or =false as you like
% if you use the cleverref package:
% it must be loaded after hyperref, never before hyperref
\usepackage{footnoterange}
\begin{document}
This text bears a multiplicity of footnotes%
\begin{footnoterange}%
\footnote{Lorum}\footnote{ipsum}\footnote{dolor}%
\footnote{sit}\footnote{amet,}\footnote{consectetur}%
\footnote{adipisicing}\footnote{elit}%
\end{footnoterange}%
which are referenced as one footnoterange.
\end{document}
footnoterange*
如果您使用hyperref
带有选项的包 ,但又不想要超链接脚注,请使用环境hyperfootnotes=true
。[至于真正自动化的解决方案,不需要\begin{footnoterange}
和
\end{footnoterange}
:抱歉!那是也棘手。另请参阅
footmisc-option multiple 与 hyperref 不兼容要求更多自动脚注处理。
答案2
我建议你看看聪明人包及其命令\crefrange
和\cref
。前一个命令有两个参数,即要交叉引用的一系列项目的第一个和最后一个标签;使用第二个命令,您只需指定要交叉引用的所有标签,包就会自动对列表进行排序,如果可能的话,还会压缩列表。命令的参数\cref
甚至不需要按任何顺序排列。
以下 MWE 说明了如何做到这一点。
\documentclass{article}
\usepackage[para]{footmisc} % since you mention that you use this package
\usepackage{cleveref}
\newcommand\crefrangeconjunction{--} % default: " to "
\newcommand{\creflastconjunction}{, and } % default: " and ", i.e., without the comma
\begin{document}
\section{Hey, let's create some footnotes}
Once\footnote{A \label{fn:A}} upon\footnote{B \label{fn:B}} a\footnote{C \label{fn:C}} time,\footnote{D \label{fn:D}} there\footnote{E \label{fn:E}} was\footnote{F \label{fn:F}} \ldots
\section{Now let's cross-reference these footnotes}
As is demonstrated in \crefrange{fn:A}{fn:F}, \ldots
\noindent
As additionally noted in \cref{fn:F,fn:A,fn:D,fn:E,fn:B}, \ldots
\end{document}
当然,该cleveref
软件包的交叉引用命令不仅适用于脚注,还适用于几乎所有可以给出的项目label
- 方程式,章节,图表,表格,算法等等。
最后,请确保您的系统上有最新版本的cleveref
软件包,因为软件包的作者最近对其进行了重大更新和升级。例如,\creflastconjunction
除非您有最新版本的软件包,否则 MWE 中使用的宏可能无法工作。
答案3
从版本 1.0(2021/01/21)开始,fnpct
原生支持多个脚注的范围¹:
\documentclass{article}
\usepackage{fnpct}
\setfnpct{ranges}
\begin{document}
This text bears a multiplicity of footnotes%
\footnote{Lorum}\footnote{ipsum}\footnote{dolor}%
\footnote{sit}\footnote{amet,}\footnote{consectetur}%
\footnote{adipisicing}\footnote{elit}
which are referenced as one footnoterange.
\end{document}
- 致谢坦率为了之前曾建议过这个功能