定义新的可变宽度数学重音

定义新的可变宽度数学重音

我希望定义一个 LaTeX 宏,它的功能大致相同,\overrightarrow只是用鱼叉代替了箭头。我研究过许多解决方案,但没有一个能完全胜任。

  1. Tikz 解决方案:看起来不错,但宽度不是可变的。
  2. 过度设置解决方案:如果将鱼叉向下移动,则会起作用,但宽度也不会改变。
  3. Harpoon 封装解决方案:宽度可变,但鱼叉的高度是应有高度的两倍。鱼叉的形状也随宽度而变化,而不是保持相同的鱼叉头并改变尾部的长度。
  4. 重点设置解决方案:宽度不可变。
  5. XeTeX 解决方案:这看起来正是我想要的,但我正在用 LaTeX 排版我的文档。

有没有办法在 LaTeX 中重现 XeTeX 解决方案,或者改变其他解决方案之一以适应我想要的属性?

答案1

\overrightarrow一个相当粗鲁的解决方案是复制from的定义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}

在此处输入图片描述

相关内容