使用 split 將 stackrel 符號彼此對齊

使用 split 將 stackrel 符號彼此對齊

我正在透過歸納排版證明,使用split將等號精確地對齊在彼此下方。其中一個標誌的頂部應有“IH”,以表明該步驟中已使用歸納假設。我正在用stackrel這個。然而,由於\stackrel{IH}{=}比 更寬=,因此它不能很好地對齊。我嘗試了兩件事split(符號&之前或之後=)和alignedat(但只有當中心列居中對齊時才有效,但事實並非如此,它是左對齊的。請參閱程式碼範例及其輸出:

\documentclass{minimal}
\usepackage{amsmath}

\begin{document}
\begin{equation*}
\begin{split}
S_n &=                 2^iS_{n-i}+2^i-1\\
    &\stackrel{IH}{=}  2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
    &=                 2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{split}
\end{equation*}

\begin{equation*}
\begin{split}
S_n =&                2^iS_{n-i}+2^i-1\\
\stackrel{IH}{=}&     2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
=&                    2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{split}
\end{equation*}

\begin{equation*}
\begin{alignedat}{2}
S_n &=&&              2^iS_{n-i}+2^i-1\\
&\stackrel{IH}{=}&&   2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
&=&&                  2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{alignedat}
\end{equation*}
\end{document}

在此輸入影像描述

正如您所看到的,等號和上面帶有“IH”的等號並不正好位於彼此之下。

我不需要使用split,所以沒有的解決方案split也是完美的。我怎樣才能做到這一點?

答案1

您可以使用\mathmakebox\mathclap(感謝安德魯)mathtools

\documentclass{article}
\usepackage{mathtools}

\begin{document}
\begin{equation*}
\begin{split}
S_n &=                 2^iS_{n-i}+2^i-1\\
    &\stackrel{\mathmakebox[\widthof{=}]{\mathrm{IH}}}{=}  2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
    &=                 2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{split}
\end{equation*}
\end{document}

在此輸入影像描述

您可以使用align*Also 來代替equation*andsplit

\documentclass{article}
\usepackage{mathtools}

\begin{document}
\begin{align*}
S_n &=                 2^iS_{n-i}+2^i-1\\
    &\stackrel{\mathclap{\mathrm{IH}}}{=}  2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
    &=                 2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{align*}
\end{document}

請注意,我已更改IH\mathrm{IH}. (感謝egreg)。

答案2

事實上,上面的解並不是最優的,因為給出的例子是一個非常特殊的情況:IH與 的寬度幾乎相同=,因此右側沒有問題。但是考慮一下當我們需要比 更大的東西時會發生什麼IH,就像

\begin{align*}
S_n &= 2^iS_{n-1}+2^i-1\\
&\stackrel{\mathrm{IH,IG,IK,IL}}{=}2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
&= 2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{align*}

那麼右邊的部分IH,IG,IK,IL就會重疊在公式上!

我的解決方案是定義\leftstackrel,它在左側完美對齊,但在右側添加必要的空白,以便不存在重疊。這是代碼:

\newlength{\leftstackrelawd}
\newlength{\leftstackrelbwd}
\def\leftstackrel#1#2{\settowidth{\leftstackrelawd}%
{${{}^{#1}}$}\settowidth{\leftstackrelbwd}{$#2$}%
\addtolength{\leftstackrelawd}{-\leftstackrelbwd}%
\leavevmode\ifthenelse{\lengthtest{\leftstackrelawd>0pt}}%
{\kern-.5\leftstackrelawd}{}\mathrel{\mathop{#2}\limits^{#1}}}

它可以簡單地用作:

\begin{align*}
S_n &= 2^iS_{n-1}+2^i-1\\
&\leftstackrel{\mathrm{IH,IG,IK,IL}}{=}2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
&= 2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{align*}

比較下圖中的(1.1)(遺留\stackrel)、(1.2)(\stackrel上面提出的)和(1.3)( )\leftstackrel

數位
(來源:Fluxus-virus.com

答案3

我建議三種策略。第一個是定義一個命令\iheq,該命令列印等號並進行一些填充,使其寬度與 相同\overset{\mathrm{IH}}{=},可以使用 簡單地獲得\iheq*

第二個策略是在旁邊加上「(IH)」。

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

\NewDocumentCommand{\iheq}{s}{%
  \overset{\IfBooleanTF{#1}{\mathrm{IH}}{\hphantom{\mathrm{IH}}}}{=}%
}

\begin{document}

\begin{equation*}
\begin{split}
S_n &\iheq  2^iS_{n-i}+2^i-1\\
    &\iheq* 2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
    &\iheq  2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{split}
\end{equation*}

\begin{equation*}
\begin{aligned}
S_n &= 2^iS_{n-i}+2^i-1\\
    &= 2^i(2^1S_{n-i-1}+2^1-1)+2^i-1 && \makebox[0pt][l]{(IH)}\\
    &= 2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{aligned}
\end{equation*}

\end{document}

在此輸入影像描述

第三個策略:使IH更小並確保其寬度為零。

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

\NewDocumentCommand{\iheq}{s}{%
  \IfBooleanTF{#1}{\overset{\IH}{=}}{=}%
}
\NewDocumentCommand{\IH}{}{%
  \hidewidth\scriptscriptstyle\mathrm{IH}\hidewidth
}

\begin{document}

\begin{equation*}
\begin{split}
S_n &\iheq  2^iS_{n-i}+2^i-1\\
    &\iheq* 2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
    &\iheq  2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{split}
\end{equation*}

\end{document}

在此輸入影像描述

答案4

由於這是一個每次都讓我煩惱的問題,讓我投入我的兩分錢。

一種解決方案可能不是那麼優雅,但我喜歡它的結果,它是使用命令\phantom使所有其他=標誌與所涉及的標誌一樣大和一樣高,如下所示

\begin{align*}
S_n & \stackrel{\phantom{\mathrm{IH}}}{=} 2^iS_{n-i}+2^i-1 \\
    & \stackrel{\mathrm{IH}}{=}           2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
    & \stackrel{\phantom{\mathrm{IH}}}{=} 2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{align*}

這就是結果 與幻影對齊 它也適用於較長的標籤,前提是您喜歡=標誌周圍有較大的空間。

此外,請注意,它可以與命令\mathmakeboxfrom結合使用mathtools,以處理不同長度的多個標籤,如以下病態範例所示:

\begin{align*}
S_n & \stackrel{\phantom{\mathrm{IH,(3.14)}}}{=}
      2^iS_{n-i}+2^i-1 \\
    & \stackrel{\mathrm{IH}}{\mathmakebox[\widthof{$\stackrel{\mathrm{IH,(3.14)}}{=}$}]{=}}
      2^i(2^1S_{n-i-1}+2^1-1)+2^i-1\\
    & \stackrel{\mathrm{IH,(3.14)}}{=}
      2^{i+1}S_{n-i-1}+2^{i+1}-1
\end{align*}

其結果是 與phantomandmathmakebox對齊

相關內容