Wie kann ich zwei Zeichen an die gleiche Stelle schreiben?
Insbesondere möchte ich einen Pfeil schreiben $\rightarrow$
und dann einen Buchstaben so schreiben, dass der Pfeil durch den Buchstaben hindurchgeht. Ich habe einige ähnliche Fragen gefunden (Bereichssymbol über Zeichen,Ein Zeichen durch ein anderes ersetzen (Lualatex), usw.), aber es handelt sich nicht genau um dieselbe Frage.
Antwort1
Es ist nicht klar, ob Sie es als Text oder in Mathematik möchten ...
\documentclass{article}
\usepackage{stackengine}
\begin{document}
In te\stackengine{0pt}{x}{$\rightarrow$}{O}{c}{F}{T}{L}t...
$\ensurestackMath{\stackengine{0pt}{y}{\rightarrow}{O}{c}{F}{T}{L}} = mx + b$
\end{document}
Außerdem ist nicht klar, ob die Breite des Pfeils berücksichtigt werden soll:
\documentclass{article}
\usepackage{stackengine}
\begin{document}
In te\stackengine{0pt}{x}{$\rightarrow$}{O}{c}{F}{F}{L}t...
$\ensurestackMath{\stackengine{0pt}{y}{\rightarrow\!}{O}{c}{F}{F}{L}} = mx + b$
\end{document}
Weitere Dinge, die oben einfach angepasst werden können, sind die horizontale Ausrichtung (derzeit zentriert) sowie die vertikale Höhe der Pfeilplatzierung (derzeit auf seiner natürlichen Höhe).
Sobald die Einzelheiten des Anwendungsfalls geklärt sind, können diese problemlos in einem Makro zusammengefasst werden.
Im Folgenden implementiere ich, um mit den Egregs Schritt zu halten, eine Makroversion ( \overarrow
) für Mathematik, die den Mathematikstil beibehält:
\documentclass{article}
\usepackage{stackengine,scalerel}
\newcommand\overarrow[1]{\ThisStyle{\ensurestackMath{%
\stackengine{0pt}{\SavedStyle#1}{\SavedStyle\rightarrow\!}{O}{c}{F}{F}{L}}}}
\begin{document}
$\overarrow{y} = mx_{\overarrow{z}} + b$
\end{document}
Antwort2
Antwort3
Hier ist der Text in zwei Versionen:
\documentclass{article}
\DeclareRobustCommand{\asA}[1]{% arrow strike
\leavevmode\begingroup
\vphantom{#1}%
\ooalign{\hidewidth$\mathsurround0pt\rightarrow$\hidewidth\cr#1\cr}%
\endgroup
}
\DeclareRobustCommand{\asB}[1]{% arrow strike
\leavevmode\begingroup
\vphantom{#1}%
\ooalign{$\mathsurround0pt\rightarrow$\cr\hidewidth#1\hidewidth\cr}%
\endgroup
}
\begin{document}
st\asA{r}uck
st\asB{r}uck
\end{document}
Für Mathe:
\documentclass{article}
\makeatletter
\DeclareRobustCommand{\as}[1]{% arrow strike
{\vphantom{#1}\mathpalette\erel@as{#1}}%
}
\newcommand{\erel@as}[2]{%
\ooalign{\hfil$\m@th#1\rightarrow$\hfil\cr\hfil$\m@th#1#2$\hfil\cr}%
}
\makeatother
\begin{document}
$a+\as{b}+c_{\as{x}}$
\end{document}
Antwort4
Wenn Sie ein wenig Flexibilität wünschen und möchten, dass sich der Pfeil an die Breite des Materials anpasst, durch das er läuft, können Sie verwenden tikzmark
.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\newcounter{atm}
\newcommand{\arrowthrough}[2][]{\stepcounter{atm}\tikzmarknode[path picture={
\draw[->,#1] (path picture bounding box.west) --
(path picture bounding box.east);}]{atm-\theatm}{#2}}
\begin{document}
\arrowthrough{x}
\[ E=\arrowthrough{m}c^2\]
\arrowthrough[red,-latex]{Hello} \arrowthrough[latex-,thick,blue]{World!}
\end{document}