Cómo escribir un personaje superpuesto a otro personaje

Cómo escribir un personaje superpuesto a otro personaje

¿Cómo puedo escribir dos caracteres en el mismo lugar?

En particular, quiero escribir una flecha $\rightarrow$y luego escribir una letra de modo que la flecha atraviese la letra. Encontré algunas preguntas similares (Símbolo de rango sobre carácter,Sustituir un personaje por otro (Lualatex), etc.) pero no son exactamente la misma pregunta.

Respuesta1

No está claro si lo quieres en texto o matemáticas...

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

ingrese la descripción de la imagen aquí

Además, no está claro si desea que se tenga en cuenta el ancho de la flecha:

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

ingrese la descripción de la imagen aquí

Otras cosas que se pueden ajustar fácilmente arriba incluyen la alineación horizontal (actualmente centrada), así como la altura vertical de la ubicación de la flecha (actualmente colocada a su altura natural).

Una vez que se deciden los detalles del caso de uso, esto se puede encapsular fácilmente en una macro.

A continuación, para seguir el ritmo de los egregs, implemento una versión macro ( \overarrow) para matemáticas que conserva el estilo matemático:

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

ingrese la descripción de la imagen aquí

Respuesta2

Un simple \makebox[0pt]{..}puede lograr esto. Dependiendo de su caso de uso real, esto puede requerir un poco de ajuste.

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

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

\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Aquí hay texto en dos versiones:

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

ingrese la descripción de la imagen aquí

Para matemáticas:

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

ingrese la descripción de la imagen aquí

Respuesta4

En caso de que desee un poco de flexibilidad y que la flecha se ajuste al ancho del material por el que pasa, puede utilizar 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}

ingrese la descripción de la imagen aquí

información relacionada