如何只对 ulem 包生成的波进行着色

如何只对 ulem 包生成的波进行着色

我习惯\uwave{Some text here}在文本下方添加波浪形强调效果。是否可以只更改波浪的颜色,而让文本保持黑色?

答案1

强烈建议您发布一个最小示例。可以通过重新定义命令\uwave或创建\redwave您喜欢的新命令来仅对波形部分进行着色。

\documentclass[11pt]{article} 
\usepackage{xcolor}
\usepackage{ulem}
\makeatletter
\def\uwave{\bgroup \markoverwith{\lower3.5\p@\hbox{\sixly \textcolor{red}{\char58}}}\ULon}
\font\sixly=lasy6 % does not re-load if already loaded, so no memory problem.
\makeatother
\begin{document}
  \uwave{This is a long test}
\end{document}

ulem包装使用了 6-pt lasy 字体的摆动,我们只是用textcolor它着色。

可以扩展上述代码,使其具有更语义化的名称(如 TH 所建议的),还可以提供可选的颜色。下面的 MWE\colorwave为此目的定义了一个命令。

\documentclass[11pt]{article} 
\usepackage{xcolor}
\usepackage{ulem}
\usepackage{lipsum}
\makeatletter
\newcommand\colorwave[1][blue]{\bgroup \markoverwith{\lower3.5\p@\hbox{\sixly \textcolor{#1}{\char58}}}\ULon}
\font\sixly=lasy6 % does not re-load if already loaded, so no memory problem.
\makeatother
\begin{document}
 \colorwave[red]{This is a long test} \lipsum*[1].\par
 \colorwave[green]{This is a long test} \lipsum*[1]
\end{document}

在此处输入图片描述

答案2

我认为这个答案更简单:

\documentclass{article}
\usepackage{ulem}
\usepackage{color}

\newcommand{\coloredwave}[2]{
    \textcolor{#1}{\uwave{\textcolor{black}{#2}}}
}

\begin{document}

\coloredwave{red}{This text will be underlined with a red wavy line.}

\end{document}

相关内容