在新命令中组合 soul 包和 color one

在新命令中组合 soul 包和 color one

我必须使用\st(来自soul包)来在文本文件中的单词上划线。此外,为了显示特定的替换单词而不是第一个单词,我使用{\color{blue} second word}

例如:\st{handling} {\color{blue}studding} of very large

为了与下图类似:

在此处输入图片描述

如何才能将两个命令(\st及之后的\color命令)压缩为一个命令以获得类似的输出?(例如,\command{first-word, second word} of very large

答案1

您可以使用 定义一个新命令\newcommand\macroname[<arg count>]{<replacement>}(参数由 使用#<num>,最多支持 9 个参数),要获得更强大的接口,您可以加载xparse包并使用\NewDocumentCommand。以下定义了一个宏,它接受一个强制参数,后跟一个指定颜色的可选参数和另一个强制参数。第一个将被划掉,后者将被着色:

\documentclass[]{article}

\usepackage{soul}
\usepackage{xcolor}
\usepackage{xparse}

\NewDocumentCommand \replacing { m O{blue} m }
  {%
    \st{#1}
    \textcolor{#2}{#3}%
  }

\begin{document}
an appropriate \replacing{handling}{studding} of very large.
\end{document}

在此处输入图片描述

可以使用不同的颜色\replacing{handling}[red]{studding}

编辑:带有彩色线条的变体。它有另一个可选参数,您可以使用 指定线条颜色\replacing[green]{handling}[red]{studding}

\documentclass[]{article}

\usepackage{soul}
\usepackage{xcolor}
\usepackage{xparse}

\NewDocumentCommand \replacing { O{red} m O{blue} m }
  {%
    \begingroup
    \setstcolor{#1}%
    \st{#2}%
    \endgroup
    \space
    \textcolor{#3}{#4}%
  }

\begin{document}
an appropriate \replacing{handling}{studding} of very large.
\end{document}

相关内容