如何用任意颜色突出显示文本

如何用任意颜色突出显示文本

好的,我有命令

\newcommand{\hlc}[2][yellow]{{\sethlcolor{#1}\hl{#2}}}

在我的序言中(在包含 soul 和 xcolor 包之后),已经定义的颜色可以完美地工作。

\hlc[pink]{hello}

给我一个粉红色突出显示的 hello。但是,颜色组合对我来说没有任何输出。

\hlc[cyan!50]{hello}

仅输出

你好

沒有任何顏色。

我想要一个完全通用的命令(即让我用我想要的任何颜色组合突出显示)。有什么好方法可以做到这一点吗?我\setcolor也不想重复使用该命令。我希望能够直接在命令中输入颜色。

答案1

\sethlcolor宏不理解x!y!z等的颜色规范,它只能使用定义的命名颜色\definecolor

但是,xcolor有一个技巧可以支持颜色定义:

\colorlet{foo}{x!y!z!}定义并将规范转换为名为的颜色foo(但是,这将覆盖名为的颜色的现有定义foo

基本上,它类似于宏\let\foo\foobar语句。由于所有操作都发生在一个组中(根据 的定义\hlc),因此新的颜色foo在外部是未知的。

\documentclass{article}

\usepackage{xcolor}
\usepackage{soul}

\newcommand{\hlc}[2][yellow]{{%
    \colorlet{foo}{#1}%
    \sethlcolor{foo}\hl{#2}}%
}



\begin{document}

\hlc[pink]{hello}

\hlc[cyan!50]{hello}

\end{document}

在此处输入图片描述

相关内容