在 \eqref 中手动输入一个数字

在 \eqref 中手动输入一个数字

在撰写论文时,我经常发现需要引用其他论文中的特定方程式。例如,爱因斯坦、牛顿和怀特 (2015) 的里程碑式论文在方程式中阐述了万物理论,方程式的编号为 42。在其他一些论文中,我想按编号引用这个方程式,使用确切地格式与应用于\eqreffrom 的格式相同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}

相关内容