我想要如图所示的叠加下划线,但是由于该ulem
包仅提供{}
封闭字符,因此代码\uline{ab\uwave{cd}ef}
不起作用。有人有简单的解决方案吗?谢谢!!
答案1
已编辑以尝试自动化。有四个命令\tuwave
、\buwave
、\tuline
和\buline
。t
表示“顶部”,b
表示“底部”,具体取决于波浪线或线条是在顶部还是底部。这些wave
命令采用一个参数,表示要用波浪线下划的字符。这些line
命令采用两个参数,第一个是输出的字母,第二个是用于确定下划线长度的文本字符串。
\documentclass{article}
\usepackage{ulem}
\usepackage{stackengine}
\let\tuwave\uwave
\newcommand\buwave[1]{\raisebox{-3pt}{\uwave{\raisebox{3pt}{#1}}}}
\newcommand\tuline[2]{\stackunder[.6ex]{#1}{\rule{\widthof{#2}}{.2ex}}}
\newcommand\buline[2]{\stackunder[1.2ex]{#1}{\rule{\widthof{#2}}{.2ex}}}
\parskip 1em
\def\useanchorwidth{T}
\def\stackalignment{l}
\def\stacktype{L}
\begin{document}
\buline{ab\tuwave{cd}ef}{abcd}\par
\tuline{ab}{abcd}\buwave{cdef}
\end{document}
答案2
以下示例定义了\uwavelow
以获得降低的波浪线,以避免与下划线冲突。另外,似乎\uwavelow
(或\uwave
)可以放入\uline
。但反过来更棘手。该示例使用一个框来隐藏(或)\uline
内部。\uwavelow
\uwave
\documentclass{article}
\usepackage{ulem}
\newcommand*{\uwavelow}{%
\bgroup
\markoverwith{%
\lower7pt\hbox{\sixly\char58}%
}%
\ULon
}
\begin{document}
\uline{ab\uwavelow{cd}}\uwavelow{ef}
{\uline{ab}\sbox0{\uline{cd}ef}\uwavelow{\usebox{0}}}
\end{document}