添加自定义文本以标记和引用

添加自定义文本以标记和引用

我希望我的方程式能用普通的计数器标记,但也能添加附加文本,但以后引用时会使用自己的自定义文本。例如

We have

        (a+b)^2 = a^2 + 2ab + b^2     (18, a, b)

From (18, 2x, -y) we get (2x-y)^2=4x^2-4xy+y^2.

(假设我们已经得出第 18 个标记方程)

由类似的东西产生

\documentclass{article}
\usepackage{amsmath}

% Insert definition of \labelWithArgument and \eqrefWithArgument here

\begin{document}

We have
\begin{equation}
\labelWithArgument{some_eq}{$,a,b$}
(a+b)^2 = a^2 + 2ab + b^2
\end{equation}

From \eqrefWithArgument{some_eq}{$,2x,-y$} we get $(2x-y)^2=4x^2-4xy+y^2$.

\end{document}

这个想法是将 a、b 作为“变量”添加到方程中,并将 2x、-y 作为“参数”以供以后引用。我如何定义\标签带参数\eqref带参数

答案1

我认为最好的解决方案是使用\newtagform使用数学工具为方程编号定义新的“标签形式”。对于任何给定的方程,标签和引用“参数”都是静态文本,不需要由宏处理(只需由 TeX 处理)。因此,新的标签形式可以定义为:

\newtagform{argumenttag}{(}{, \tagargument)}

其中宏\tagargument是标签“参数”。要使用它,我们定义

\newcommand\labelWithArgument[2]{%
    \usetagform{argumenttag}% use the new tag form
    \def\tagargument{#2}\label{#1}% set label and `\tagargument
}

当然,您还需要一个\eqrefWithArgument命令,但这很容易(见下文)。完成所有这些后,您的输出如下:

在此处输入图片描述

...完整代码如下:

\documentclass{article}
\usepackage{amsmath}
\usepackage{refcount}
\usepackage{mathtools}

\newtagform{argumenttag}{(}{, \tagargument)}% define new form for tags
\newcommand\labelWithArgument[2]{%
    \usetagform{argumenttag}% use the new tag form
    \def\tagargument{#2}\label{#1}% set tag arguments and label
}
\newcommand\eqrefWithArgument[2]{%
\def\myref{\getrefnumber{#1}}% extract the reference number
(\myref, \mbox{#2})% print the reference number with argument
}

\begin{document}

We have
\begin{equation}\labelWithArgument{some_eq}{$a,b$}
    (a+b)^2 = a^2 + 2ab + b^2
\end{equation}

From \eqrefWithArgument{some_eq}{$2x,-y$} we get $(2x-y)^2=4x^2-4xy+y^2$.

\end{document}

我已经使用了引用计数包提取引用并将其放入所需的格式。这不是绝对必要的,但它的优点是代码无需更改即可与 hyperref 和相关函数配合使用。

相关内容