Ich setze einen Beweis durch Induktion und verwende , split
um Gleichheitszeichen präzise untereinander auszurichten. Über einem der Zeichen sollte „IH“ stehen, um anzuzeigen, dass in diesem Schritt die Induktionshypothese verwendet wurde. stackrel
Dafü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}
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 split
Lösungen ohne perfekt. Wie kann ich das zum Laufen bringen?split
Antwort1
Sie können \mathmakebox
oder \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}
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 IH
zu 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: IH
hat 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,IL
Dann ü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) ( \stackrel
oben vorgeschlagen) und (1.3) ( \leftstackrel
) in der folgenden Abbildung
(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}
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}
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 \phantom
Befehls, 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
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 \mathmakebox
Befehl „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*}