对于我的文档中的方程式,我使用amsmath
包。为了使公式数字更加醒目,我希望它们以粗体显示,并且稍微向右缩进一点,即像这样:
我已经尝试重新定义内部amsmath
宏\maketag@@@
或\tagform@
。但两者
\def\maketag@@@#1{\hbox{\m@th\bfseries#1\hspace{3mm}}}
和
\def\tagform@#1{\maketag@@@{\bfseries(\ignorespaces#1\unskip\@@italiccorr)}\hspace{3mm}}
还更改了 生成的引用\eqref
,因为此宏在内部使用\tagform@
它来生成其输出。但是,这些引用应保留其默认外观,因为我不需要运行文本中的突出格式。
到目前为止我尝试过的最有希望的方法是重新定义\print@eqnum
:
\def\mytagform#1{\maketag@@@{\bfseries(\ignorespaces#1\unskip\@@italiccorr)}\hspace{3mm}}
\def\print@eqnum{\mytagform\theequation}
此重新定义不会影响\eqref
引用。但遗憾的是,它似乎只适用于align
环境,环境的标签equation
不会改变:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
% \maketag@@@ and \tagform@ also influence \eqref
% \def\maketag@@@#1{\hbox{\m@th\bfseries#1\hspace{3mm}}}
% \def\tagform@#1{\maketag@@@{\bfseries(\ignorespaces#1\unskip\@@italiccorr)}\hspace{3mm}}
% \print@eqnum looks promising, but applies only to align environments
\def\mytagform#1{\maketag@@@{\bfseries(\ignorespaces#1\unskip\@@italiccorr)}\hspace{3mm}}
\def\print@eqnum{\mytagform\theequation}
\makeatother
\begin{document}
\begin{equation}
1+1=2\label{equation}
\end{equation}
\begin{align}
1+1 &= 2\label{align}
\end{align}
\eqref{equation}, \eqref{align}
\end{document}
输出
如何在不影响 产生的参考的情况下改变方程编号的外观\eqref
?
答案1
查看代码,我可以看到很多地方\tagform@
使用了 ,并且可能 的代码equation
明确使用了 而不是\print@eqnum
。完全猜测,我会说\print@eqnum
当 amsmath 必须读入整个方程式并仔细排版(以获得正确的对齐)时使用 。由于equation
不涉及任何花哨的对齐,因此可以直接处理它,因此标签\tagform@
直接使用。
那反其道而行呢?修改\tagform@
成你想要的样子,然后再改成\eqref
使用原来的。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\let\mytagform@=\tagform@
\def\tagform@#1{\maketag@@@{\bfseries(\ignorespaces#1\unskip\@@italiccorr)}\hspace{3mm}}
\renewcommand{\eqref}[1]{\textup{\mytagform@{\ref{#1}}}}
\makeatother
\begin{document}
\begin{equation}
1+1=2\label{equation}
\end{equation}
\begin{align}
1+1 &= 2\label{align}
\end{align}
\eqref{equation}, \eqref{align}
\end{document}
结果:
(编辑时添加注释:Barbara Beeton 要求我添加一条评论,大意是 AMS 对环境的重新定义equation
是为了使其看起来与原始环境一样,但会检查是否\qed
应添加符号。此外,eqnarray
它的定义似乎有点像雷区,所以如果你使用,事情可能会出错eqnarray
!)