将压缩脚注显示为 1-3 并引用脚注

将压缩脚注显示为 1-3 并引用脚注

footnoterange我可以分别做这两件事,但由于和包不兼容,我无法同时实现这两件事footmisc

  1. 要显示压缩的脚注我这样做:
\usepackage{footnoterange}
...
some text\begin{footnoterange}\footnote{hello}\footnote{world}\footnote{how are you}
\end{footnoterange}

工作原理如下:

在此处输入图片描述 在此处输入图片描述

  1. 现在,引用我的脚注:
\usepackage[symbol]{footmisc}
...
other text\footnote{bad\label{ref:1}}. See\footref{ref:1}.

并且工作得很好:

在此处输入图片描述

在此处输入图片描述

  1. 但是当我尝试同时使用这两种方法时,两个包之间存在不兼容性,并且 Latex 无法编译:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{footnoterange}
\usepackage[symbol]{footmisc}

\begin{document}
some text\begin{footnoterange}\footnote{hello}\footnote{world}\footnote{how are you}
\end{footnoterange}
other text\footnote{bad\label{ref:1}}. See\footref{ref:1}.

\end{document}

在此处输入图片描述

有任何想法吗?

答案1

从根本上讲,问题不在于与footmisc不兼容footnoterange,而在于footnoterange(在 2019-11-24 版本 1.0c 之前,https://www.ctan.org/pkg/footnoterange) 与使用符号作为脚注标记不兼容。

以下 MWE 已经出现了这个问题

\documentclass{article}
\usepackage{footnoterange}

\renewcommand*\thefootnote{\fnsymbol{footnote}}

\begin{document}
Text\begin{footnoterange}\footnote{First}\footnote{second}\footnote{Third}\end{footnoterange}
\end{document}

在您的情况下,这种情况表现为,footmisc使用symbolsymbol*选项加载包只需执行上述某些版本\renewcommand即可设置用于脚注的标记。

使用、、、编号方案没有问题,footnoterange使用包定义的编号方案也没有问题。\arabic\Alph\alph\Roman\roman\alphalphalphalph

那么问题是什么呢?我不太确定为什么问题表现在它的工作方式上,但你可以追溯到它的工作原理:出于各种原因,它选择临时存储和footnoterange的值,并使用它们来构建实际的脚注。在包中存储后者的命令是\arabic{footnote}\thefootnote

\edef\fnr@formated{\thefootnote}

当中的完全展开\edef达到 时,\fnsymbol会发生非常奇怪的事情,部分原因是\fnsymbol在数学模式中设置了标记。

(顺便说一句,我自己也遇到过类似的问题在这个问题中

一个可能的解决方案(虽然我还没有认真测试过)是\edef

\protected@edef\fnr@formated{\thefootnote}

经过我有限的测试,应该可以解决这个问题,至少对于符号脚注而言。(这已应用于软件包的 1.0c 版本 2019-11-24 footnoterange因为这个答案


然而,这并没有解决 OP 原本想要解决的问题。如果 OP 成功调用\usepackage[symbol]{footmisc},则输出将全部为符号脚注,而不是看起来像期望

一种方法是手动创建第二系列脚注命令,例如

\documentclass{article}

\makeatletter
\def\secondFootnote{\xdef\@thefnmark{$\dagger$}\@footnotemark\@footnotetext}
\makeatother

\begin{document}

Test\footnote{Text}

Test\secondFootnote{Test2} 

Test\footnote{Test}

\end{document}

上述代码使每个标记都\secondFootnote显示一个\dagger,但您可以使用计数器来更改这一点。它与\footreffrom 的交互方式footmisc可能也需要一些调整。

或者,如果不介意数字脚注的编号跳过数字,那么可以按照 OP 所建议的那样,\renewcommand*\thefootnote先制作符号脚注,然后再将其改回来。

相关内容