关于上划线命令

关于上划线命令

我曾经修复过 \overline 命令来获取共轭复数,因为我认为直线的长度不能让我满意。您可能会注意到类似以下内容:

$$\overline{N}+\overline{F}+\overline{C}$$

可以通过以下方式转好:

$$\mkern3mu\overline{\mkern-3muN}
+\mkern3mu\overline{\mkern-3muF}
+\mkern2mu\overline{\mkern-2muC}$$

在这种情况下 \bar 命令没有任何好处。

我如何创建一个不涉及特定字母的命令来获得适当的线宽?

答案1

您可以尝试以下方法。它测量直立 ( ) 和普通数学字符之间的宽度差异\mathrm。上划线设置在与直立符号大小相同的幻像框上。然后,它向右移动,并保持两个字符之间的宽度差异。它也适用于上标和下标符号

\documentclass{article}
\makeatletter
\newsavebox\tboxa
\newsavebox\tboxb
\newlength\tdima

\newcommand*{\oversymb}{\mathpalette\@oversymb}

\newcommand*{\@oversymb}[2]{%
    \sbox{\tboxa}{$\m@th#1\mathrm{#2}$}%
    \setbox\tboxb\null%
    \ht\tboxb\ht\tboxa%
    \dp\tboxb\dp\tboxa%
    \wd\tboxb\wd\tboxa%
    \sbox{\tboxa}{$\m@th#1{#2}$}%
    \setlength\tdima{\the\wd\tboxa}%
    \addtolength\tdima{-\the\wd\tboxb}%
    \sbox{\tboxb}{$\m@th#1\hskip\tdima\overline{\xusebox{\tboxb}}$}%
    \rlap{\usebox\tboxb}{\usebox\tboxa}}

\newcommand*{\xusebox}[1]{\mathord{{\usebox{#1}}}}

\makeatother
\begin{document}
\[\oversymb{N} + \oversymb{F} + \oversymb{C}\]
\[\oversymb{A} + \oversymb{a} + \oversymb{B} + \oversymb{b} + \oversymb{i}\]
\[x_{\oversymb{X}}\]
\end{document}

结果是

在此处输入图片描述

相关内容