在撰写论文时,我经常发现需要引用其他论文中的特定方程式。例如,爱因斯坦、牛顿和怀特 (2015) 的里程碑式论文在方程式中阐述了万物理论,方程式的编号为 42。在其他一些论文中,我想按编号引用这个方程式,使用确切地格式与应用于\eqref
from 的格式相同amsmath
,无论格式是什么。本质上,我希望能够这样说
One can see that \eqref{eq:my_above_equation} above is a specific case of
\pseudoeqref{42} from \citet{ENW2015}.
两个方程编号的排版应相同。可以只需对(公认的简单)格式进行硬编码,但这似乎违背了 LaTeX 的精神,因为相同的格式在不同的地方既自动又手动完成。我还想到在文档末尾的某个地方创建一个幽灵方程,手动设置其数字,并赋予它一个正常的\label{}
,但这个想法在很多层面上似乎都是错误的。
是否有一个简单的解决方案来匹配格式eqref
但使用硬编码的方程式数字?
答案1
创建一个宏来为您完成所有这些操作是完全可以接受的。也就是说,设置 a\label
并立即执行\eqref
它:
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newcounter{peqrefcntr}
\makeatletter
\newcommand{\pseudoeqref}[1]{{% \pseudoeqref{<whatever>}
\refstepcounter{peqrefcntr}% Increment the pseudo \eqref counter (for uniqueness)
\def\@currentlabel{#1}% Updated the label to be stored
\label{peqref-\thepeqrefcntr}\eqref{peqref-\thepeqrefcntr}}}% \label and \ref
\makeatother
\begin{document}
\begin{equation}
f(x) = ax^2 + bx + c \label{eq:my_above_equation}
\end{equation}
One can see that~\eqref{eq:my_above_equation} above is a specific case of~\pseudoeqref{42} from~XYZ.
\begin{equation}
g(x) = ax^2 + bx + c
\end{equation}
Also see~\pseudoeqref{41} of~XYZ.
\end{document}
上述定义了\pseudoeqref{<whatever>}
执行自动\label
- \ref
(第一次运行时至少需要两次编译)。对整个宏进行分组的动机是为了本地化更新的效果\@currentlabel
;这可能不是完全必要的。此外,如果您计划使用,则使用\refstepcounter
允许适当的\phantomsection
(或超链接锚点)hyperref
。
每次调用 时,都会创建\pseudoeqref
一个唯一的标签,其中每次调用时都会步进。peqref-<num>
<num>
答案2
\eqref
只要看一下的定义amsmath.sty
:
\newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}
然后很容易在序言中定义您的个人命令:
\makeatletter
\newcommand{\pseudoeqref}[1]{\textup{\tagform@{#1}}}
\makeatother
完整示例:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\pseudoeqref}[1]{\textup{\tagform@{#1}}}
\makeatother
\begin{document}
\begin{equation}
One can see that~\eqref{eq:my_above_equation} above is a specific
case of~\pseudoeqref{42} from~XYZ.
\end{document}