
Я хочу определить макрос LaTeX, который будет функционировать более или менее точно так же, как и \overrightarrow
стрела, за исключением гарпуна вместо стрелы. Я исследовал много решений, и ни одно из них не справляется с этой задачей.
- Решение Tikz: выглядит хорошо, но не имеет переменной ширины.
- Вытесненное решение: работает, если вы перемещаете гарпун вниз, но также не имеет переменной ширины.
- Решение пакета Harpoon: имеет переменную ширину, но гарпун в два раза выше, чем должен быть. Форма гарпуна также меняется в зависимости от его ширины, вместо того, чтобы сохранять ту же самую головку гарпуна и изменять длину хвоста.
- Решение для акцентного набора: непеременная ширина.
- Решение XeTeX: это выглядит именно так, как я хочу, но я набираю свой документ в LaTeX.
Есть ли способ воспроизвести решение XeTeX в LaTeX или изменить одно из других решений, чтобы оно соответствовало нужным мне свойствам?
решение1
Довольно грубое решение — скопировать определение \overrightarrow
из amsmath
:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\overrightharpoon}{%
\mathpalette{\overarrow@\rightharpoonfill@}}
\def\rightharpoonfill@{\arrowfill@\relbar\relbar\rightharpoonup}
\makeatother
\begin{document}
$\overrightharpoon{aaaaaaa}+\overrightharpoon{a}$
\end{document}
Вы можете получить меньшие гарпуны, используя измененный код изhttps://tex.stackexchange.com/a/248297/4427
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\overrightsmallharpoon}{\mathpalette{\overarrowsmall@\rightharpoonfill@}}
\def\rightharpoonfill@{\arrowfill@\relbar\relbar\rightharpoonup}
\newcommand{\overarrowsmall@}[3]{%
\vbox{%
\ialign{%
##\crcr
#1{\smaller@style{#2}}\crcr
\noalign{\nointerlineskip}%
$\m@th\hfil#2#3\hfil$\crcr
}%
}%
}
\def\smaller@style#1{%
\ifx#1\displaystyle\scriptstyle\else
\ifx#1\textstyle\scriptstyle\else
\scriptscriptstyle
\fi
\fi
}
\makeatother
\begin{document}
$\overrightsmallharpoon{aaaaaaa}+\overrightsmallharpoon{a}$
\end{document}