更改手动方程标签的格式,而不更改自动编号标签或引用的格式

更改手动方程标签的格式,而不更改自动编号标签或引用的格式

我希望当我使用命令\tag为方程式赋予名称而不是数字时,该名称将以粗体打印在方程式旁边(不带括号),但随后引用该方程式时将以正常字体打印名称。

我尝试了\newtagform包中的命令mathtools,但它并没有完全满足我的要求。它允许我将所有显示的标签(自动方程编号以及手动添加的名称)更改为粗体。我可以\usetagform{bold}在每个方程前面加上一个,\tag然后在其后加上一个,但这很尴尬,而且当或环境同时包含命名方程(其标签应为粗体)和编号方程(其标签应为正常字体)\usetagform{default}时,它不起作用。gatheralign

我也尝试制作一个自定义命令来执行\tag{\bfseries #1}然后,但是由于重新定义命令\def@currentlabel{#1}的方式,这不起作用。amsmath\label

平均能量损失

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

\begin{document}
\begin{align}
e&=mc^2 \tag{Einstein's Equation} \label{einstein}
\\
m &= \frac{e}{c^2} \label{meinstein}
\end{align}
Notice that \ref{meinstein} is a trivial consequence of \ref{einstein}.
\end{document}

期望输出:期望输出

答案1

以下代码定义了一个Cian以您的名字命名的新标签格式。它会检测标签中是否包含字母,然后应用相应的样式。

A.1然而,这意味着对于附录中编号为(包含字母)的方程式,您应该切换回正常标签格式。

另外,为了得到“equation”这个词,我在这里使用了包cleveref(与标签格式无关)。当然你也可以手动写这个词,这取决于你。

\documentclass{article}
\usepackage{mathtools}
\usepackage[noabbrev]{cleveref}

\ExplSyntaxOn

\NewDocumentCommand \CianFormat { m }
  {
    \regex_match:nnTF { [A-Za-z] } { #1 }
      { \textbf{#1} }
      { (#1) }
  }

\ExplSyntaxOff

\newtagform{Cian}[\CianFormat]{}{}

\begin{document}

\usetagform{Cian}

\begin{align}
e&=mc^2 \tag{Einstein's Equation} \label{einstein}
\\
m &= \frac{c^2}{e} \label{meinstein}
\end{align}
Notice that \cref{meinstein} is a trivial consequence of \ref{einstein}.
\end{document}

在此处输入图片描述

相关内容