Ausrichten von Stackrel-Zeichen untereinander mittels Split

Ausrichten von Stackrel-Zeichen untereinander mittels Split

Ich setze einen Beweis durch Induktion und verwende , splitum Gleichheitszeichen präzise untereinander auszurichten. Über einem der Zeichen sollte „IH“ stehen, um anzuzeigen, dass in diesem Schritt die Induktionshypothese verwendet wurde. stackrelDafür verwende ich . Da jedoch \stackrel{IH}{=}breiter als ist =, wird es nicht gut ausgerichtet. Ich habe zwei Dinge mit split( &vor oder nach dem =Zeichen) und auch mit alignedat(versucht, aber das würde nur funktionieren, wenn die mittlere Spalte zentriert wäre, was sie nicht ist, sie ist linksbündig. Siehe das Codebeispiel und seine Ausgabe:

\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}

Bildbeschreibung hier eingeben

Wie Sie sehen, stehen die Gleichheitszeichen und die Gleichheitszeichen mit darüber stehendem „IH“ nirgends genau untereinander.

Ich tu nichtbrauchenzu verwenden , daher wären auch splitLösungen ohne perfekt. Wie kann ich das zum Laufen bringen?split

Antwort1

Sie können \mathmakeboxoder \mathclap(danke an Andrew) von verwendenmathtools

\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}

Bildbeschreibung hier eingeben

Sie können align*auch anstelle von equation*und verwenden.split

\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}

Bitte beachten Sie, dass ich IHzu geändert habe \mathrm{IH}. (Danke an egreg).

Antwort2

Tatsächlich sind die obigen Lösungen nicht optimal, da das angegebene Beispiel ein sehr spezieller Fall ist: IHhat fast die gleiche Breite wie =, daher gibt es auf der rechten Seite kein Problem. Aber überlegen Sie, was passiert, wenn wir etwas deutlich Größeres als benötigen IH, wie in

\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,ILDann überlappt sich der rechte Teil mit der Formel!

Meine Lösung besteht darin, zu definieren \leftstackrel, was links perfekt ausrichtet, rechts aber den erforderlichen Leerraum hinzufügt, damit es zu keiner Überlappung kommt. Hier ist der Code:

\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}}}

und es kann einfach wie folgt verwendet werden:

\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*}

Vergleiche (1.1) (altes\stackrel ), (1.2) ( \stackreloben vorgeschlagen) und (1.3) ( \leftstackrel) in der folgenden Abbildung

Figur
(Quelle:fluxus-virus.com)

Antwort3

Ich schlage drei Strategien vor. Die erste besteht darin, einen Befehl zu definieren\iheq der ein Gleichheitszeichen mit etwas Polsterung druckt, um die gleiche Breite wie zu erreichen \overset{\mathrm{IH}}{=}, was einfach mit erreicht werden kann \iheq*.

Die zweite Strategie besteht darin, seitlich „(IH)“ hinzuzufügen.

\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}

Bildbeschreibung hier eingeben

Dritte Strategie: Machen Sie IH kleiner und stellen Sie sicher, dass die Breite Null ist.

\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}

Bildbeschreibung hier eingeben

Antwort4

Da dies ein Problem ist, das mich jedes Mal ärgert, möchte ich auch meinen Senf dazu geben.

Eine Lösung, die vielleicht nicht so elegant ist, die mir aber aufgrund ihres Ergebnisses gefällt, ist die Verwendung eines \phantomBefehls, um alle anderen= Zeichen so groß und hoch wie das belastete Zeichen zu machen, wie im Folgenden

\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*}

Das ist das Ergebnis mit Phantom ausrichten und es funktioniert auch für längere Etiketten, vorausgesetzt, Sie schätzen einen großen Raum um die= Schild herum.

Beachten Sie, dass es zusätzlich mit dem \mathmakeboxBefehl „from“ kombiniert werden kann mathtools, um mehrere Beschriftungen unterschiedlicher Länge zu verarbeiten, wie im folgenden pathologischen Beispiel:

\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*}

dessen Ergebnis ist alignwithphantomandmathmakebox

verwandte Informationen