答案1
双线之间的间距是硬编码的:1.2pt,请参阅\uuline
包中的定义ulem
。
下面的示例以两种方式改变定义:
硬编码空间被 dimen 寄存器替换
\uulinesep
。此外,对齐的是顶线,而不是底线。这可以避免当
\uulinesep
增加太多时,顶线会盖印下行线,甚至会移动到基线上方。
整个双线的深度可以通过设置来改变,\ULdepth
如示例的第二行和第三行所示。默认值为\maxdimen
。则包ulem
使用深度j()
。
完整示例:
\documentclass{article}
\usepackage{ulem}
\newdimen\uulinesep
\setlength{\uulinesep}{1.2pt}
\makeatletter
\renewcommand*{\uuline}{%
\bgroup
\UL@setULdepth
\markoverwith{%
\lower\ULdepth\hbox{%
\kern-.03em%
\vtop{%
\hrule width.2em%
\kern\uulinesep
\hrule
}%
\kern-.03em%
}%
}%
\ULon
}
\makeatother
\begin{document}
\newcommand*{\test}[1]{%
\begingroup
\renewcommand*{\uulinesep}{#1}%
\uuline{#1}%
\endgroup
}
\test{0pt} \test{0.6pt} \uuline{1.2pt}\,\uline{(default)}
\test{2pt} \test{1ex}
\newcommand*{\testA}[1]{%
\begingroup
\setlength{\ULdepth}{#1}%
\addtolength{\ULdepth}{.4pt}% line width
\uuline{#1}%
\endgroup
}
\newcommand*{\testB}[1]{%
\begingroup
\settodepth{\ULdepth}{#1}%
\addtolength{\ULdepth}{.4pt}% line width
\uuline{#1}%
\endgroup
}
\testA{0pt} \testA{1.5pt} \testA{1pt} \testA{2pt} \testA{4pt}
\testB{j} \testB{()} \testB{x} \testB{$\int_0^\infty$}
\end{document}