Определение нового математического акцента переменной ширины

Определение нового математического акцента переменной ширины

Я хочу определить макрос LaTeX, который будет функционировать более или менее точно так же, как и \overrightarrowстрела, за исключением гарпуна вместо стрелы. Я исследовал много решений, и ни одно из них не справляется с этой задачей.

  1. Решение Tikz: выглядит хорошо, но не имеет переменной ширины.
  2. Вытесненное решение: работает, если вы перемещаете гарпун вниз, но также не имеет переменной ширины.
  3. Решение пакета Harpoon: имеет переменную ширину, но гарпун в два раза выше, чем должен быть. Форма гарпуна также меняется в зависимости от его ширины, вместо того, чтобы сохранять ту же самую головку гарпуна и изменять длину хвоста.
  4. Решение для акцентного набора: непеременная ширина.
  5. Решение 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}

введите описание изображения здесь

Связанный контент