引用带有“enotez”包的尾注,指向错误的注释

引用带有“enotez”包的尾注,指向错误的注释

我以前曾使用过\footreffootmisc包中的命令来引用尾注。这与该endnotes包结合使用效果很好:

\documentclass{article}
\usepackage{footmisc,endnotes}
    \renewcommand{\footnote}{\endnote}
\begin{document}
\noindent Here is some text.\footnote{And here is an endnote.\label{foot.first}}\\
Here is more text.\footnote{And here is another endnote.\label{foot.second}}\\
Here is my final sentence.\footref{foot.first}\textsuperscript{,}\footref{foot.second}
\theendnotes
\end{document}

在此处输入图片描述

但现在我已切换到该enotez包,它不再正常工作。在下面的 MWE 中,对第一个尾注的引用改为引用第二个尾注。

\documentclass{article}
\usepackage{footmisc,enotez}
    \renewcommand{\footnote}{\endnote}
\begin{document}
\noindent Here is some text.\footnote{And here is an endnote.\label{foot.first}}\\
Here is more text.\footnote{And here is another endnote.\label{foot.second}}\\
Here is my final sentence.\footref{foot.first}\textsuperscript{,}\footref{foot.second}
\printendnotes
\end{document}

在此处输入图片描述

我怎样才能enotez引用正确的尾注?

答案1

enotez命令\label应位于尾注文本之外;请参阅第 3.1 节中的最后的示例。

您不需要,footmisc因为您可以定义\footref具有enotez以下功能的命令:

\documentclass{article}
\usepackage{enotez}

\renewcommand{\footnote}{\endnote}
\newcommand{\footref}[1]{%
  \enotezwritemark{\enmarkstyle\ref{#1}}%
}

\begin{document}

\noindent Here is some text.\footnote{And here is an endnote.}\label{foot.first}\\
Here is more text.\footnote{And here is another endnote.}\label{foot.second}\\
Here is my final sentence.\footref{foot.first}\textsuperscript{,}\footref{foot.second}
\printendnotes
\end{document}

在此处输入图片描述

如果您有多个实例\footref,则可以考虑使用缩写语法:

\documentclass{article}
\usepackage{enotez}

\renewcommand{\footnote}{\endnote}

\ExplSyntaxOn
\NewDocumentCommand{\footref}{m}
 {
  \sverre_footref:n { #1 }
 }

\seq_new:N \l_sverre_footrefs_seq

\cs_new_protected:Npn \sverre_footref:n #1
 {
  \seq_clear:N \l_sverre_footrefs_seq
  \clist_map_inline:nn { #1 }
   {
    \seq_put_right:Nn \l_sverre_footrefs_seq
     { \enotezwritemark{\enmarkstyle\ref{##1}} }
   }
   \seq_use:Nn \l_sverre_footrefs_seq { \textsuperscript{,} }
 }
\ExplSyntaxOff

\begin{document}

\noindent Here is some text.\footnote{And here is an endnote.}\label{foot.first}\\
Here is more text.\footnote{And here is another endnote.}\label{foot.second}\\
Here is my final sentence.\footref{foot.first,foot.second}
\printendnotes
\end{document}

答案2

或者(自 2022 年起),改用postnotes,因为\label{...}它以典型/逻辑的方式工作,并且该包具有您可能喜欢的进一步交叉引用功能。引用手册中的一段话:

使用后记进行交叉引用的工作方式非常标准:设置标签,然后引用它。但是,有两种方法可以为笔记设置标签。一个人可以使用 的选项设置标签label\postnote也可以直接使用 标准 将其 \label作为笔记内容的一部分进行设置。这两种方式都有效,但并不等效,它们具有不同的含义,因此行为也不同。[¶] 使用 选项设置的标签label在 的位置设置\postnote。笔记内容中 设置的标签\label只是存储起来,只有在 处排版此内容时才会扩展\printpostnotes。简而言之,label选项属于“标记”,而\label内容中的设置属于“文本”。

\documentclass{article}
\usepackage{footmisc,postnotes}
\renewcommand{\footnote}{\postnote}
\begin{document}
\noindent Here is some text.\footnote{And here is an endnote.\label{foot.first}}\\
Here is more text.\footnote{And here is another endnote.\label{foot.second}}\\
Here is my final sentence.\footref{foot.first}\textsuperscript{,}\footref{foot.second}
\printpostnotes
\end{document}

相关内容