如何将 中的顶线移近底线(以便两条线看起来像一个有凝聚力的装饰,而不是两个不相关的装饰)\overline{\overline{x}}
? 我也对 的类似问题感兴趣\underline{\underline{x}}
。
答案1
这是一个可能的解决方案。以下重新定义\overline
,以便新高度(例如,为了添加额外的\overline
s)仅增加正常高度的 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
。