\hfill 在数学模式下

\hfill 在数学模式下

有没有简单的方法来声明一个\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}

相关内容