So schreiben Sie ein Zeichen, das ein anderes Zeichen überlappt

So schreiben Sie ein Zeichen, das ein anderes Zeichen überlappt

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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

Antwort2

Dies lässt sich mit einem einfachen Verfahren \makebox[0pt]{..}erreichen. Abhängig von Ihrem tatsächlichen Anwendungsfall kann hierfür eine gewisse Feinabstimmung erforderlich sein.

\documentclass[12pt,a4paper]{article}    
\begin{document}

$\makebox[0pt][l]{$\rightarrow$}A$

\end{document}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

verwandte Informationen