\overline{\overline{ABC}}
产生了双条ABC
,但是占用了太多的垂直空间。
我怎样才能使顶部栏更靠近其下方栏?
答案1
\doverline
您可以通过改变垂直偏移(例如)轻松改变下面定义的命令0.5ex
。
\documentclass{memoir}
\usepackage{amsmath,tikz}
\usetikzlibrary{calc}
\newcommand\doverline[1]{%
\tikz[baseline=(nodeAnchor.base)]{
\node[inner sep=0] (nodeAnchor) {$#1$};
\draw[line width=0.1ex,line cap=round]
($(nodeAnchor.north west)+(0.0em,0.2ex)$)
--
($(nodeAnchor.north east)+(0.0em,0.2ex)$)
($(nodeAnchor.north west)+(0.0em,0.5ex)$)
--
($(nodeAnchor.north east)+(0.0em,0.5ex)$)
;
}}
\begin{document}
\noindent{}Officia quidem est accusamus labore architecto. Ullam hic corporis quod consectetur sequi quod eaque.
Ducimus iste excepturi et cumque ut. Earum animi autem eum tempora.
.$\overline{\overline{1234567890}}$.
Officia quidem est accusamus labore architecto. Ullam hic corporis quod consectetur sequi quod eaque.
Ducimus iste excepturi et cumque ut.
.$\doverline{1234567890}$.
Earum animi autem eum tempora. Officia quidem est accusamus labore architecto. Ullam hic.
\begin{align*}
Z&=1234567890\\
Z&=\overline{\overline{1234567890}}\\
Z&=\doverline{1234567890}\\
Z&={1234567890}
\end{align*}
\end{document}
Ti*k*Z
是一个强大的工具,它允许快速进行定义,而不需要深入到核心TeX
。
编辑:egreg 的解决方案在处理下标和上标时更简洁。我的解决方案可以通过使用 的LuaTeX
访问权限来处理\mathstyle
这个问题,但由于他的解决方案已经处理了这个问题,所以实际上没有必要这样做。
还有另一种解决方案如何减少两条上线之间的垂直空间?。
答案2
此\overline
操作插入数学扩展字体三倍\fontdimen8
的字距(也用作规则厚度)。
我们可以通过人为地使内部上划线框的高度降低两倍来减少此字距。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\dbloverline}[1]{\overline{\dbl@overline{#1}}}
\newcommand{\dbl@overline}[1]{\mathpalette\dbl@@overline{#1}}
\newcommand{\dbl@@overline}[2]{%
\begingroup
\sbox\z@{$\m@th#1\overline{#2}$}%
\ht\z@=\dimexpr\ht\z@-2\dbl@adjust{#1}\relax
\box\z@
\ifx#1\scriptstyle\kern-\scriptspace\else
\ifx#1\scriptscriptstyle\kern-\scriptspace\fi\fi
\endgroup
}
\newcommand{\dbl@adjust}[1]{%
\fontdimen8
\ifx#1\displaystyle\textfont\else
\ifx#1\textstyle\textfont\else
\ifx#1\scriptstyle\scriptfont\else
\scriptscriptfont\fi\fi\fi 3
}
\makeatother
\begin{document}
$\overline{\overline{ABC}}$
$\dbloverline{ABC}$
$X_{\overline{\overline{ABC}\kern-\scriptspace}}$
$X_{\dbloverline{ABC}}$
\end{document}
我借此机会删除了\scriptspace
在内层上划线原子的下标/上标中添加的。
下划线可以使用相同的想法,使用深度而不是高度。在代码中我使用\@@underline
,因为这是保存的\underline
图元。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
% overline
\newcommand{\dbloverline}[1]{\overline{\dbl@overline{#1}}}
\newcommand{\dbl@overline}[1]{\mathpalette\dbl@@overline{#1}}
\newcommand{\dbl@@overline}[2]{%
\begingroup
\sbox\z@{$\m@th#1\overline{#2}$}%
\ht\z@=\dimexpr\ht\z@-2\dbl@adjust{#1}\relax
\box\z@
\ifx#1\scriptstyle\kern-\scriptspace\else
\ifx#1\scriptscriptstyle\kern-\scriptspace\fi\fi
\endgroup
}
% underline
\newcommand{\dblunderline}[1]{\@@underline{\dbl@underline{#1}}}
\newcommand{\dbl@underline}[1]{\mathpalette\dbl@@underline{#1}}
\newcommand{\dbl@@underline}[2]{%
\begingroup
\sbox\z@{$\m@th#1\@@underline{#2}$}%
\dp\z@=\dimexpr\dp\z@-2\dbl@adjust{#1}\relax
\box\z@
\ifx#1\scriptstyle\kern-\scriptspace\else
\ifx#1\scriptscriptstyle\kern-\scriptspace\fi\fi
\endgroup
}
\newcommand{\dbl@adjust}[1]{%
\fontdimen8
\ifx#1\displaystyle\textfont\else
\ifx#1\textstyle\textfont\else
\ifx#1\scriptstyle\scriptfont\else
\scriptscriptfont\fi\fi\fi 3
}
\makeatother
\begin{document}
\textbf{Double overline}
$\overline{\overline{ABC}}$
$\dbloverline{ABC}$
$X_{\overline{\overline{ABC}\kern-\scriptspace}}$
$X_{\dbloverline{ABC}}$
\bigskip
\textbf{Double underline}
$\underline{\underline{ABC}}$
$\dblunderline{ABC}$
$X_{\underline{\underline{ABC}\kern-\scriptspace}}$
$X_{\dblunderline{ABC}}$
\end{document}
答案3
另外两个解决方案:一个使用\widebar
命令,借用自mathabx
,另一个基于\overbracket
,来自mathtools
:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\newcommand{\wideBar}[1]{\overbracket[0.3pt][0pt]{\overbracket[0.3pt][0pt]{\mkern-2.8mu #1}}}
\DeclareFontFamily{U}{mathx}{\hyphenchar\font45}
\DeclareFontShape{U}{mathx}{m}{n}{
<-6> mathx5 <6-7> mathx6 <7-8> mathx7
<8-9> mathx8 <9-10> mathx9
<10-12> mathx10 <12-> mathx12
}{}
\DeclareSymbolFont{mathx}{U}{mathx}{m}{n}
\DeclareFontSubstitution{U}{mathx}{m}{n}
\DeclareMathAccent{\widebar}{0}{mathx}{"73}
\begin{document}
\[ \widebar{\widebar{X}}\quad\widebar{\widebar{XYZ}} \]%
\[ \wideBar{X}\quad\wideBar{XYZ} \]%
\end{document}