如何减少两条上线之间的垂直空间?

如何减少两条上线之间的垂直空间?

如何将 中的顶线移近底线(以便两条线看起来像一个有凝聚力的装饰,而不是两个不相关的装饰)\overline{\overline{x}}? 我也对 的类似问题感兴趣\underline{\underline{x}}

答案1

这是一个可能的解决方案。以下重新定义\overline,以便新高度(例如,为了添加额外的\overlines)仅增加正常高度的 60%。我对 做了完全相同的事情\underline

要将百分比从 60% 更改为其他值,您可以调整下面的数字.6.4但它们的总和仍应为 1。

\documentclass{article}

\makeatletter
\let\overlinewithoriginalheight\overline
\newcommand*\overlinewithlessheight[1]{{\mathpalette\overline@aux{#1}}}
%% N.B. extra {} is necessary for (mostly) proper superscript height
\newcommand*\overline@aux[2]{% %% #1 = \displaystyle etc., #2 = actual arg.
  \begingroup
    \count0=\fam %% Store the font (e.g. \mathbf)
    \setbox0=\hbox{$\m@th #1\fam=\count0 #2$}% %% just to measure #2
    \@tempdima=.4\ht0% %% Store 0.4 * height of #2
    \setbox0=\hbox{$\m@th #1\fam=\count0\overlinewithoriginalheight{#2}$}%
    \advance\@tempdima by .6\ht0% %% Add .6 * height of \overline{#2}
    \ht0=\@tempdima %% set ht of box 0 to .4 * ht(#2) + .6 * ht(\overline{#2})
    \usebox0% %% print box 0
  \endgroup%
}
\let\overline\overlinewithlessheight

\let\underlinewithoriginaldepth\underline
\newcommand*\underlinewithlessdepth[1]{{\mathpalette\underline@aux{#1}}}
\newcommand*\underline@aux[2]{%
  \begingroup
    \count0=\fam
    \setbox0=\hbox{$\m@th #1\fam=\count0 #2$}%
    \@tempdima=.4\dp0%
    \setbox0=\hbox{$\m@th #1\fam=\count0\underlinewithoriginaldepth{#2}$}%
    \advance\@tempdima by .6\dp0%
    \dp0=\@tempdima
    \usebox0%
  \endgroup%
}
\let\underline\underlinewithlessdepth
\makeatother

\begin{document}

\[
    \overline{\overline{X}}, \overline{\overline{\overline{X}}}
\]

\[
    \underline{\underline{X}}, \underline{\underline{\underline{X}}}
\]

\end{document}

结果如下:

在此处输入图片描述

这种方法的一个可能的缺点是上标高度也会受到影响:

\fboxrule=.1pt\fboxsep=-.1pt
\fbox{$\overlinewithoriginalheight{X}^1\neq \overline{X}^1 \neq X^1$}

\fbox{$\underlinewithoriginaldepth{X}_2\neq \underline{X}_2 \neq X_2$}

从左到右:原始、修改、无上划线/下划线: 在此处输入图片描述

如果这是个问题,您可以放弃重新定义\overline\overlinewithlessheight即删除\let\overline\overlinewithlessheight),而\overlinewithlessheight只使用\overline低于其他的 s。(不过,您可能想用其他名字来称呼它,我不擅长想宏名。)像这样:

\[
    \overline{\overlinewithlessheight{X}}
\]

编辑:一堆修复,我最初忘记了\underline

相关内容