.png)
Ich verwende es regelmäßig, \phantom
um Dinge in meinen Dokumenten optisch auszurichten, und muss dabei oft die abgeschnittenen Leerzeichen manuell ausfüllen, indem ich die Atome (was ich nicht ganz verstehe) zwischen den Objekten vor und nach dem entferne. Normalerweise funktioniert dies, indem innerhalb des Arguments „‘s“ \phantom
hinzugefügt werden , aber nicht immer.{}
\phantom
Mit der Hilfe vonhttps://tex.stackexchange.com/a/95923/42225, ich habe Folgendes zusammengeschustert, bin aber der Meinung, dass es eine elegantere Lösung geben sollte, die die vorhergehenden und folgenden Objekte nicht als Argumente erfordert (die ich optional gemacht habe).
\documentclass{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{xparse}
\makeatletter
\NewDocumentCommand{\archphantom}{O{{}} m O{{}}}{%
\setbox0\hbox{$#1#2#3$}%
\setbox1\hbox{$#1{#2}#3$}%
\dimen@\dimexpr\wd0-\wd1%
#1\phantom{#2}\kern\dimen@#3%
}
\makeatother
\begin{document}
\begin{align*}
x & = \fbox{\hspace{5cm}\vphantom{b}}+\ldots\\
&\archphantom{=}[\ldots] + \fbox{\hspace{5cm}\vphantom{b}} && \text{works}\\
&\phantom{=}\,\:\ldots + \fbox{\hspace{5cm}\vphantom{b}} && \text{trial $\&$ error}\\
&\phantom{{}={}}\ldots + \fbox{\hspace{5cm}\vphantom{b}} && \text{doesn't work}
\end{align*}
\end{document}
Insbesondere für diesen Fall ( =
+ \ldots
) konnte ich den korrekten Abstand beispielsweise nicht simulieren \phantom{{}={}}\ldots
, was mich dazu motiviert hat, diese Frage nun endlich zu stellen. ;-)
Nebenbei bemerkt suche ich gleichzeitig nach guten Namensvorschlägen für den resultierenden Befehl (oder Feedback zu meiner Wahl). Ich habe zuerst an gedacht \phantombridge
, da ich die Objekte davor und danach berücksichtigen muss – metaphorisch die beiden sichtbaren Widerlager einer unsichtbaren Brücke. Da ein Bogen jedoch im Grunde dasselbe Konzept ist, bevorzuge ich \archphantom
, was außerdem die zusätzliche Konnotation von „einem \phantom
von höherem Rang“ hat (vergleiche Engel vs. Erzengel).
Antwort1
Der Abstand wird von der mathematischen Klasse des Atoms und der benachbarten Atome beeinflusst. Der übliche Trick des Addierens {}
ermöglicht es einem \mathrel
Atom, als Relation zu bleiben und sich nicht effektiv in einen Mathord zu verwandeln und seinen Abstand zu verlieren, aber wie Sie bemerken, wird nicht immer der richtige Abstand erreicht, wenn die benachbarten Elemente kein Mathord sind.
Sie können
\mathrel{\phantom{=}}
wodurch =
die Klasse ausgeblendet und erneut aktiviert wird \mathrel
.
Es wäre möglich, etwas Code aus bm
dem Paket zu stehlen, um die mathematische Klasse des Arguments abzufragen und \mathrel
automatisch hinzuzufügen, aber ich glaube nicht, dass ich das tun würde, da der Code dadurch sehr fehleranfällig würde.
Beachten Sie, dass, wenn das Argument mehr als ein einzelnes Symbol enthält, in einigen Fällen der Abstand trotzdem beeinträchtigt wird, da das Einrahmen eines Ausdrucks den dehnbaren Kleber auf seiner natürlichen Breite einfriert, während die ungerahmte Version je nachdem gestreckt oder geschrumpft sein kann.