答案1
(警告:这个答案涉及最初的上述帖子的格式。发布此答案后,我注意到 OP 彻底改变了问题的设置和相关代码。例如,宏\myunder
不再定义或使用。因此,这个答案可能对 OP 或此帖子的未来读者都没有多大用处。哦,好吧。)
即使你将垂直偏移从 0.5pt 更改\dunderline
为 0.4pt,宏\myunder
仍然会存在两个主要缺陷:
如果 的参数
\myunder
包含一个低于基线的字母(例如g
、j
、p
、q
和y
),则宏将绘制两条单独的细线,而不是一条粗线。此外,上方的细线与具有低于基线的组件的字母相交。(我认为该\smash
指令可能是造成这一不幸属性的原因。)如果
\myunder
出现两个连续的指令,则两组单词之间的空白太大。
我不想调整的定义\myunder
,而是只需加载ulem
包并通过指令更改的值\ULthickness
(默认值:0.4pt)\renewcommand
,比如说\renewcommand\ULthickness{.8pt}
。
\documentclass{article}
\usepackage[utf8]{inputenc}
\newcommand\dunderline[2][.4pt]{ % use 0.4pt, not 0.5pt
\raisebox{-#1}{\underline{\raisebox{#1}{\smash{\underline{#2}}}}}}
\newcommand{\myunder}{\dunderline}
\usepackage[normalem]{ulem} % for "\uline" macro
\begin{document}
Using \texttt{\string\myunder}
\myunder{thick underlining} \myunder{text}
\medskip
Using \texttt{\string\uline}
\uline{thin underlinining} \uline{text}
\renewcommand\ULthickness{.8pt} % <-- double the default width
\uline{thick underlinining} \uline{text}
\end{document}
答案2
使用包bm
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{contour}
\usepackage{ulem}
\usepackage{bm} % added <<<<<<<<
\renewcommand{\ULdepth}{1.8pt}
\contourlength{0.8pt}
\newcommand{\myuline}[1]{%
\bfseries %<<<<<<<<<<<<<<<<
\uline{\phantom{#1}}%
\llap{\contour{white}{#1}}%
}
\begin{document}
\myuline{bold underline}
\bigskip
\myuline{bold linguistic}
\end{document}