有没有简单的方法来声明一个\hfill
在数学模式下模拟的新命令。我不想要flalign
或类似的东西。我想以与我使用的相同方式(并具有相同的自由度)使用该命令\hfill
。
那可能吗?
例如,这是一个例子:
\begin{align*}
a + b + c &= a + b + c + d + e + f + g + h + i \\
& \mathhfill \text{(foo)}
\end{align*}
我希望(foo)
右对齐(下面+ h + i
和这里
\begin{align*}
a + b + c + d + e + f + g + h + i &= a + b + c \\
\text{(foo)} \mathhfill &
\end{align*}
我希望文本左对齐(就在 下方a + b +
)。但我不想要flalign
或其他解决方案。因为有很多情况(这是一个最小的例子)。我希望看到一个像 一样工作的解决方案\hfill
。
编辑:嗯,正如卡莱尔所说,它可以在 中工作$a \hfill b$
,但我希望看到它在 中工作align
,即
编辑2:\hfill
这些答案解决了我的需求。但是如果有人能给出一个与或 ie\dotfill
完全相同的命令就太好了align
。
答案1
你可以这样做,但不能用\hfill
,因为align
工作原理是这样的。这里有一种方法:
\documentclass{article}
\usepackage{amsmath}
\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
\begin{document}
\begin{align*}
a + b + c &= a + b + c + d + e + f + g + h + i \\
& \pushright{\text{(foo)}}
\end{align*}
\begin{align*}
a + b + c + d + e + f + g + h + i &= a + b + c \\
\pushleft{\text{(foo)}} &
\end{align*}
\end{document}
稍微不同的实现允许您\hfill
在需要的地方使用:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\specialcell}[1]{\ifmeasuring@#1\else\omit$\displaystyle#1$\ignorespaces\fi}
\makeatother
\begin{document}
\begin{align*}
a + b + c &= a + b + c + d + e + f + g + h + i \\
& \specialcell{\hfill\text{(foo)}}
\end{align*}
\begin{align*}
a + b + c + d + e + f + g + h + i &= a + b + c \\
\specialcell{\text{(foo)}\hfill} \\
\specialcell{\hfill\text{(foo)}\hfill}
\end{align*}
\end{document}
我建议反对使用简单的\omit
。
答案2
在对齐中,您可以\omit
在单元格的开始处使用:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
a + b + c &= a + b + c + d + e + f + g + h + i \\
&\omit\hfill foo\\
a&=b\\
\omit text & =c \\
\omit\hfill text&=d
\end{align*}
\end{document}
答案3
最明显的答案\hfill
正如这个普通的 TeX 文件所示
$a\hfill b$
\bye
答案4
我无论如何也得不到@egreg 的解决方案为我工作:总是有misplaced \omit
,无论我尝试过。我最终找到了一个有点黑客的解决方案,但它对我来说很管用。它使用了一些代码这里。这是 MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand{\currentsidemargin}{%
\ifodd\value{page}%
\oddsidemargin%
\else%
\evensidemargin%
\fi%
}
\newlength{\whatsleft}
\newcommand{\measureremainder}[1]{%
\begin{tikzpicture}[overlay,remember picture]
% Helper nodes
\path (current page.north west) ++(\hoffset, -\voffset)
node[anchor=north west, shape=rectangle, inner sep=0, minimum width=\paperwidth, minimum height=\paperheight]
(pagearea) {};
\path (pagearea.north west) ++(1in+\currentsidemargin,-1in-\topmargin-\headheight-\headsep)
node[anchor=north west, shape=rectangle, inner sep=0, minimum width=\textwidth, minimum height=\textheight]
(textarea) {};
% Measure distance to right text border
\path let \p0 = (0,0), \p1 = (textarea.east) in
[/utils/exec={\pgfmathsetlength#1{\x1-\x0}\global#1=#1}];
\end{tikzpicture}%
}
\newcommand\rightalignedtext[1]{\measureremainder{\whatsleft}\begin{minipage}[t]{\whatsleft}\hfill#1\hspace*{1em}\end{minipage}}
\begin{document}
\begin{equation*}
\begin{aligned}
a + b + c &= a + b + c + d + e + f + g + h + i \rightalignedtext{(foo)}
\end{aligned}
\end{equation*}
\end{document}