如何调整amsmath中公式编号与右边距的距离?

如何调整amsmath中公式编号与右边距的距离?

我正在使用pdfLaTeX。如果没有使用任何包,那么在显示的方程式中,行号将向右刷新。但如果我希望它们与右边距保持一定距离,比如说 0.35em,我可以通过重新定义来实现,\@eqnnum如下所示:

\makeatletter
\def\@eqnnum{{\normalfont \normalcolor (\theequation)\hspace{0.35em}}}
\makeatother

但是,如果amsmath使用,则上述操作无效。

假设我正在使用amsmath。如何在方程编号和右边距之间插入任意但固定的距离?解决方案应该为所有显示的数学环境(equationmultlinealign等)插入相同的距离。

答案1

这确实很不幸,amsmath对于方程编号和使用相同的内部宏\eqref,但你可以回收https://tex.stackexchange.com/a/261647/4427

\documentclass{article}
\usepackage{amsmath}

\makeatletter
% detach \eqref and \tag making
\renewcommand{\eqref}[1]{\textup{\eqreftagform@{\ref{#1}}}}
\let\eqreftagform@\tagform@

\def\tagform@#1{%
  \maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)\quad}%
}
\makeatother

\begin{document}

\noindent X\dotfill X
\begin{equation}\label{test}
1=1
\end{equation}
X\dotfill X

Now we want \eqref{test} and that the space is right.

\end{document}

相反,\quad您可以使用\hspace您喜欢的任何长度。

在此处输入图片描述

答案2

我不会直接操作低级 TeX 宏,因为这样做可能会产生意想不到的不良后果。相反,我会采用高级方法,例如,\newtagform通过\usetagform使用数学工具包。我认为这样做是明智之举,因为这样可以很容易地在各种方程式标签形式之间切换。

为了创建问题中方程的交叉引用,我建议你加载聪明人包并使用其\cref\labelcref宏,代替包\eqref提供的宏。和amsmath的一个很大的优点是它们可以接受多个参数,而不仅仅是一次一个。\cref\labelcref

在此处输入图片描述

\documentclass{article} % or some other suitable document class
\usepackage{showframe}  % to indicate edges of text block

\usepackage{mathtools}  % for \newtagform and \usetagform macros
\newtagform{space}{(}{)\hspace{0.35em}}

\setlength\textwidth{3in} % just for this example

\usepackage[noabbrev]{cleveref} % <-- for \cref macro
\begin{document}
\usetagform{space}
\begin{equation}\label{eq:A} 1+1=2 \end{equation}
\begin{equation}\label{eq:B} 2+2=4 \end{equation}
A cross-reference to \cref{eq:A,eq:B}.

\usetagform{default} % revert to default tag form
\begin{equation}\label{eq:C} 3+3=6 \end{equation}

\end{document}

相关内容