叠加下划线

叠加下划线

我想要如图所示的叠加下划线这里,但是由于该ulem包仅提供{}封闭字符,因此代码\uline{ab\uwave{cd}ef}不起作用。有人有简单的解决方案吗?谢谢!!

答案1

已编辑以尝试自动化。有四个命令\tuwave\buwave\tuline\bulinet表示“顶部”,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}

结果

相关内容