使用 leqno 调整方程编号的对齐方式

使用 leqno 调整方程编号的对齐方式

我使用 leqno,并希望方程式数字相对于自身右对齐。也就是说,我希望个位列中的所有数字都对齐,就像不使用 leqno 时一样。下面是自然发生的情况,但我希望方程式数字看起来像枚举数字。

\documentclass{article}
\usepackage[leqno]{amsmath}
\usepackage[shortlabels]{enumitem}

\begin{document}

\begin{enumerate}[(1)]
\setcounter{enumi}{7}
   \item A
   \item B
   \item C
   \item D
\end{enumerate}

\setcounter{equation}{7}
\begin{align}
   a=b\\
   b=c\\
   c=d\\
   d=e
\end{align}

\end{document}

自然发生

答案1

首先你需要分离\eqref和方程编号制作宏。然后你可以重新定义\tagform@以添加与数字一样宽的空格,以防方程编号小于 10。

\documentclass{article}
\usepackage[leqno]{amsmath}
\usepackage[shortlabels]{enumitem}

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

\def\tagform@#1{%
  \ifx\theequation#1%
    \ifnum\value{equation}<10 \hphantom{0}\fi
  \fi
  \maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}%
}
\makeatother

\begin{document}

\begin{enumerate}[(1)]
\setcounter{enumi}{7}
   \item A
   \item B
   \item C
   \item D
\end{enumerate}

\setcounter{equation}{7}
\begin{gather}
   a=b\\
   b=c\\
   c=d\\
   d=e
\end{gather}

\end{document}

您使用的情况\tag{...}不在涵盖范围内。

在此处输入图片描述

我不会这么做。

相关内容