Как написать два символа в одном месте?
В частности, я хочу написать стрелку $\rightarrow$
, а затем написать букву так, чтобы стрелка прошла через букву. Я нашел несколько похожих вопросов (Символ диапазона над символом,Заменить символ другим (Lualatex)и т. д.), но это не совсем один и тот же вопрос.
решение1
Не совсем понятно, хотите ли вы получить это в текстовом или математическом виде...
\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}
Кроме того, неясно, нужно ли учитывать ширину стрелки:
\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}
Другие параметры, которые можно легко настроить выше, включают горизонтальное выравнивание (в настоящее время по центру), а также вертикальную высоту размещения стрелки (в настоящее время размещена на естественной высоте).
После того, как будут определены конкретные условия использования, их можно легко инкапсулировать в макрос.
Ниже, следуя тенденциям, я реализую версию макроса ( \overarrow
) для математики, которая сохраняет математический стиль:
\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}
решение2
решение3
Вот текст в двух вариантах:
\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}
Для математики:
\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}
решение4
Если вам нужна большая гибкость и чтобы стрелка подстраивалась под ширину объекта, через который она проходит, вы можете использовать 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}