确切的要求是我想把引用放在左边,把通常的阿拉伯标签放在右边。
到目前为止我已经找到了 3 个解决方案:
- 使用环境
flalign
。来源:如何从两边对数学等式进行编号? - 使用
\makebox
从头开始创建环境,借助\hfill
。来源:https://tex.stackexchange.com/a/574793/199226 - 使用包
zref
或tikz
获取精确的坐标,并将文本与其他包一起放置在那里,即tikz
、textpos
或eso-pic
。
以下 MWE 包含equation
对齐参考的默认值、解决方案 1、解决方案 2 和解决方案 3 的实例。
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikzpagenodes}
% source: https://tex.stackexchange.com/a/574795/199226
\newcommand{\ltag}[1]{
\begin{tikzpicture}[baseline=(tmp.base),remember picture]
\node[inner sep=0pt](tmp){\vphantom{1}};
\begin{scope}[overlay]
\path (current page text area.west|-tmp.base)
node[anchor=base west,inner sep=0pt,outer sep=0pt]{#1};
\end{scope}
\end{tikzpicture}
}
\begin{document}
\begin{equation}
\frac{Example}{Equation}
\end{equation}
\begin{equation}
\frac{Example}{Equation}\ltag{tikz}
\end{equation}
\begin{flalign}
\rlap{\text{flalign with balancing}}%
\phantom{(\theequation)}%
&&\frac{Example}{Equation}&&
\end{flalign}
\begin{flalign}
\rlap{\text{flalign}}%
&&\frac{Example}{Equation}&&
\end{flalign}
\makebox[\linewidth]{
\refstepcounter{equation}
\rlap{makebox}\hfill
$\displaystyle \frac{Example}{Equation}$
\hfill\llap{(\theequation)}
}
\end{document}
解决方案 1 的问题是方程式没有完全居中。我尝试\phantom{(\theequation)}
在左侧添加以进行平衡,但与通常的equation
环境相比仍然有一点偏移。另请参阅:https://latex.org/forum/viewtopic.php?t=31268
还要注意flalign
有不同的行距。
解决方案 2 也存在对齐问题。请参阅 MWE。
解决方案 3 可以给出所需的结果,但我认为应该有一种更干净的方法,在本地运行,而不是全局保存一些数据。
PS:我也想要\eqref
正常\autoref
工作。
答案1
您可以将文本添加到右对齐标签,但向左移动。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\ltag#1{%
\stepcounter{equation}%
\tag*{}%
\def\df@tag{(\theequation)\llap{\rlap{#1}\hspace{\columnwidth}}}%
}
\makeatother
\begin{document}
\noindent X\dotfill X
\begin{equation}\label{aa}
\frac{Example}{Equation}
\end{equation}
\noindent X\dotfill X
\begin{equation}
\ltag{left text}\label{bb}
\frac{Example}{Equation}
\end{equation}
\noindent X\dotfill X
\begin{equation}
\frac{Example}{Equation}
\end{equation}
aa\eqref{aa} aa\eqref{bb}
\end{document}