如何制作垂直位移较小的双上线

如何制作垂直位移较小的双上线

\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}

在此处输入图片描述

相关内容