我希望定义一个 LaTeX 宏,它的功能大致相同,\overrightarrow
只是用鱼叉代替了箭头。我研究过许多解决方案,但没有一个能完全胜任。
- Tikz 解决方案:看起来不错,但宽度不是可变的。
- 过度设置解决方案:如果将鱼叉向下移动,则会起作用,但宽度也不会改变。
- Harpoon 封装解决方案:宽度可变,但鱼叉的高度是应有高度的两倍。鱼叉的形状也随宽度而变化,而不是保持相同的鱼叉头并改变尾部的长度。
- 重点设置解决方案:宽度不可变。
- 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}