数学模式中的 hfill redux

数学模式中的 hfill redux

这是对旧话题的跟进

数学模式下的 hfill

我要开始一个新的,因为很难在评论中写下所有这些。在原始线程中,@egreg 提出了以下命令

\makeatletter
\newcommand{\pushright}[1]{\ifmeasuring@#1\else\omit\hfill$\displaystyle#1$\fi\ignorespaces}
\newcommand{\pushleft}[1]{\ifmeasuring@#1\else\omit$\displaystyle#1$\hfill\fi\ignorespaces}
\makeatother

\hfill作为一种在环境中获得效果的方法align。第一个将文本推到行的右侧,第二个将文本推到行的左侧。

我一直在尝试修改这些命令,但得到的结果不一致。为了避免这种情况,&\pushright{\text{foo}}我想将文本和 atsign 放在宏中,然后只说,例如。\rightPush{foo}我成功构造了\rightPush,但由于某种令人费解的原因,模拟\leftPush不起作用。这是我的两个宏。

\def\rightPush#1{& \ifmeasuring@#1\else\omit\hfill$\displaystyle\text{#1}$\fi\ignorespaces}
\def\leftPush#1{\ifmeasuring@#1\else\omit$\displaystyle\text{#1}$\hfill & \fi\ignorespaces}

我很乐意将 排除&在宏之外,但这没有帮助:\text中的\leftPush会产生错误(尽管 中没有\rightPush)。作为后续问题,如果有人可以解释\ifmeasuring@和 omit 在这个宏中的作用,我将不胜感激。

非常感谢你的建议

答案1

没有提供测试文件,但至少

\def\leftPush#1{\ifmeasuring@#1\else\omit$\displaystyle\text{#1}$\hfill & \fi\ignorespaces}

应该

\def\leftPush#1{\ifmeasuring@#1\else\omit$\displaystyle\text{#1}$\hfill \fi&\ignorespaces}

这样\rightPush你就能知道&\ifmeasuring@是真还是假。

AMS 对齐总是执行两次,第一次“测量”过程不会排版任何内容,而只是测量单元格条目的大小,这决定了第二次排版过程之前设置的一些参数。\ifmeasuring@ 仅在第一次执行时才为真。

相关内容