为一个单词着色的快速简短命令

为一个单词着色的快速简短命令

我经常在工程课上使用 做笔记LaTeX,并且需要即时为不同的单词着色。我使用\textcolor{name}{text},并且经常在快速使用时发现即使有自动完成功能,重写也非常麻烦。

我希望我有单个短命令,如\blue\red,或者\blue{two words}如果需要多个单词,同样用于红色等。但我不确定如何定义这样的命令。

有人能给我解释一下吗?

答案1

以下 MWE 定义了一个\blue接受一个参数([1])的新命令。第二对{}包含定义或命令应执行的操作。在本例中,{text}被 替换{#1}。这样, 给出的参数\blue将用作命令着色的文本。以类似的方式,您还可以为所需的所有颜色定义其他命令。

\documentclass{article}
\usepackage{xcolor}

\newcommand{\blue}[1]{\textcolor{blue}{#1}}

\begin{document}
\blue{word}  black colored text \blue{several words}

\end{document}

根据评论中的要求:也可以定义无需括号即可更改文本颜色的命令。不过,还需要一个额外的命令,将颜色切换回黑色。

\documentclass{article}

\usepackage{xcolor}

\newcommand{\red}{\color{red}}
\newcommand{\black}{\color{black}}

\begin{document}

text in black color \red red word \black normal text in black color

\end{document}

答案2

使用 激活后\shorthandon,红色内容可用 分隔@...@,蓝色内容用分隔^...^,并且*可用于获取下一个字符的文字,*@例如@

\shorthandoff禁用 catcode 重新定义。

\documentclass{article}
\usepackage{xcolor}
\newcommand\shorthandon{\catcode`@=\active \catcode`^=\active \catcode`*=\active }
\newcommand\shorthandoff{\catcode`@=12 \catcode`^=7 \catcode`*=12 }
\shorthandon
\def@#1@{\textcolor{red}{#1}}%
\def^#1^{\textcolor{blue}{#1}}%
\def*#1{\string#1}
\shorthandoff
\begin{document}
\shorthandon
This is a @test@ of the ^emergency^ bro*@dcast system.
\shorthandoff
@*$x^2$
\end{document}

在此处输入图片描述

如果想要激活@^着色恰好一个词@从而减轻了对尾随和的需求^,然后可以轻松调整上述方法:

\documentclass{article}
\usepackage{xcolor}
\newcommand\shorthandon{\catcode`@=\active \catcode`^=\active \catcode`*=\active }
\newcommand\shorthandoff{\catcode`@=12 \catcode`^=7 \catcode`*=12 }
\shorthandon
\def@#1 {\textcolor{red}{#1} }%
\def^#1 {\textcolor{blue}{#1} }%
\def*#1{\string#1}
\shorthandoff
\begin{document}
\shorthandon
This is a @test of the ^emergency bro*@dcast system.
\shorthandoff
@*$x^2$
\end{document}

这会产生与第一个 MWE 相同的输出,但不需要尾随代码来表示彩色块的结束。

显然,通过这两种方法,都可以选择激活字符(当前@^*)及其相关颜色(当前redblue)以满足 OP 的特定需求。

相关内容