对齐中的收缩胶水,长方程中的右对齐注释

对齐中的收缩胶水,长方程中的右对齐注释

我想在 中编号方程的右侧添加注释align,但我不喜欢这样将整个方程移到左侧以给注释腾出空间。mathrlap如果方程或注释太长,使用 括住注释会使其粘在右边距中,因此这不是所有情况下的理想解决方案。

为什么我加的胶水不收缩呢?

我怎样才能使它把整行(而不只是注释)向右移动,直到等式居中(好像注释不在那里)或者尽可能地移动直到没有更多空间,然后它应该将行与注释右对齐。 mwe编译

\documentclass{article}
\usepackage{showframe}
\usepackage{amsmath}
\usepackage{mathtools} % mathrlap
\newcommand{\example}[1]{
    \begin{align}
        \hskip 50pt minus 50pt
        b&=#1
        \quad \vert\text{some long comment on the right}
        %\\c&=d % etc.
    \end{align}
}
\begin{document}
    \setlength{\abovedisplayskip}{0pt}
    \setlength{\belowdisplayskip}{0pt}
    \example{a}
    \example{a+a}
    \example{a+a+a}
    \example{a+a+a+a}
    \example{a+a+a+a+a}
    \example{a+a+a+a+a+a}
    \example{a+a+a+a+a+a+a} % too long for number on the same line with glue, ok
    \example{a+a+a+a+a+a+a+a} % too long with glue
    \example{a+a+a+a+a+a+a+a+a} % too long with glue
    \example{a+a+a+a+a+a+a+a+a+a} % always too long for number on the same line, ok
    \example{a+a+a+a+a+a+a+a+a+a+a} % always too long, use split
    \fboxsep=0pt\fbox{\parbox{50pt}{this is 50pt}}
\end{document}

这就是我想要实现的 我想要的是

但是,我也很乐意看到右对齐的注释,它不是固定在等式的右侧,而是固定在数字的左侧。我只是不喜欢单独摆弄每个注释的等式。

自己尝试一次

为什么第 12 行及以下行向左移动,而第 11 行却没有移动?

有没有一种简单的方法可以在 1 位数字、2 位数字(如果有 3 位数字)前面的注释后添加一些空格?

我可以将所有评论左对齐到最宽评论?我该如何存储每个 (align-) 环境使用的最宽评论的宽度?

我正在考虑\AtBeginEnvironment重置宽度,但如何将宽度恢复到之前的较短的评论? 使成为

\documentclass{article}
\usepackage{showframe}
\usepackage{amsmath}

\newcommand{\latestComment}{}
\newlength{\widestComment}
\setlength{\widestComment}{2cm}
\newcommand{\lmcomm}[1]{\global\def\latestComment{\parbox{\widestComment}{\raggedright#1}}}
\newcommand{\rmcomm}[1]{\global\def\latestComment{#1}}
\let\oldTheequation\theequation
\renewcommand{\theequation}{\latestComment\hskip 3pt(\oldTheequation)\global\def\latestComment{}}

% https://tex.stackexchange.com/a/228449/202560
\usepackage{xparse}
\makeatletter
\renewcommand\tagform@[1]{\maketag@@@{\ignorespaces#1\unskip\@@italiccorr}}
\makeatother

\newcommand{\lexample}[1]{ \begin{align} a&=b \lmcomm{#1} \end{align} }
\newcommand{\rexample}[1]{ \begin{align} a&=b \rmcomm{#1} \end{align} }
\begin{document}
    \setlength{\abovedisplayskip}{0pt}
    \setlength{\belowdisplayskip}{0pt}
    \lexample{}
    \lexample{a}
    \lexample{Lorem ipsum dolor sit amet}
    \rexample{}
    \rexample{a}
    \setcounter{equation}{8}
    \rexample{Lorem} %9
    \rexample{Lorem} %10
    \rexample{aaaaaaaaaaa} %11
    \rexample{aaaaaaaaaaaa} %12
    \rexample{aaaaaaaaaaaaa} %13
    \rexample{aaaaaaaaaaaaaa} %14
    \rexample{Lorem ipsum dolor sit amet} %15
\end{document}

我的方法是否还忽略了其他什么?

相关内容