根据Latex 维基百科对支持同一脚注的多个引用的解决方法hyperref
是:
\footnote{This is the footnote}\addtocounter{footnote}{-1}\addtocounter{Hfootnote}{-1}
我当然可以简单地将其包装在一个新命令中,但我想知道是否有任何包可以优雅地处理这个问题,最好有一个使用标签引用脚注的选项。如果中间有其他脚注,上面提出的方法也会搞砸。\footref
来自footmisc
软件包可以做类似的事情,但它不完全支持 hyperref。有人知道有哪个软件包可以做到这一点吗?
答案1
我不确定这是否是您想要的,但我认为这些宏可以实现您想要的功能:
\documentclass{article}
\usepackage{hyperref}
\newcommand{\footlabel}[2]{%
\addtocounter{footnote}{1}%
\footnotetext[\thefootnote]{%
\addtocounter{footnote}{-1}%
\refstepcounter{footnote}\label{#1}%
#2%
}%
$^{\ref{#1}}$%
}
\newcommand{\footref}[1]{%
$^{\ref{#1}}$%
}
%\newcounter{normalfootc}
%\renewcommand{\footnote}[1]{%
% \footlabel{footsaferefiwontuse\thenormalfootc}{#1}%
% \addtocounter{normalfootc}{1}%
%}
\begin{document}
This is a sentence with a footnote\footlabel{rom}{this is the adapted footnote} in it.
This second sentence points to the same footnote,\footref{rom} so you don't have
to write it all over again. As you can see, the macro's work in conjuncture with
the normal\footnote{this is a normal footnote} footnote.
Though there is a small discrepancy in how the links are displayed.
\end{document}
该宏\footlabel{<label>}{<foonote text>}
创建脚注并赋予其标签,稍后可使用 来访问该标签\footref{<label>}
。
不过,这些宏有一个小问题:它们会为超链接生成一个略有不同的“框”(默认为红色框),如果您追求最终的一致性,这可能是不想要的。如果您已经将超链接样式重新定义为其他样式,则不会出现问题。您也可以使用\footlabel
不带任何标签参数的命令全部你的脚注(甚至是正常的脚注)使一切再次保持一致。
序言中的这句话再次使其保持一致:
\newcounter{normalfootc}
\renewcommand{\footnote}[1]{%
\footlabel{footsaferefiwontuse\thenormalfootc}{#1}%
\addtocounter{normalfootc}{1}%
}
希望这可以帮助!
答案2
您可以使用该cleveref
包(在任何情况下都很有用)并用一行重新定义脚注的引用样式。然后您只需使用 引用脚注(和任何其他材料)\cref{<label>}
。
\documentclass{article}
\usepackage{hyperref}
\usepackage{cleveref}[2012/02/15]% v0.18.4;
% 0.16.1 of May 2010 would be sufficient, but what is the exact day?
\crefformat{footnote}{#2\footnotemark[#1]#3}
\begin{document}
First page, referencing future footnote\cref{second}.
Second paragraph, first footnote\footnote{\label{first}First footnote!}
\pagebreak
Second page, creating the second footnote\footnote{\label{second}Second footnote},
and referencing the first footnote\cref{first}.
\end{document}
答案3
我发现以下内容最容易实现:
First sentence.\footnote{\label{footnote-label} footnote content}
Second sentence.\textsuperscript{\ref{footnote-label}}
由于我除了 之外从不使用任何其他东西\ref
,并且我不会弄乱 LaTeX 的计数器,因此hyperref
其行为符合预期。您可以使用宏来自动执行这些选择:
\newcommand{\savefootnote}[2]{\footnote{\label{#1}#2}}
\newcommand{\repeatfootnote}[1]{\textsuperscript{\ref{#1}}}
First sentence.\savefootnote{footnote-label}{footnote content}
Second sentence.\repeatfootnote{footnote-label}
答案4
这是一个老问题,但我刚刚发现一个简单的
\newcommand{\footref}[1]{\textsuperscript{\ref{#1}}}
就足够了:
\documentclass{article}
\usepackage{hyperref}
\newcommand{\footref}[1]{\textsuperscript{\ref{#1}}}
\begin{document}
Some footnote.\footnote{Text.\label{footnote}} And referencing the same footnote.\footref{footnote}
\end{document}