我经常在工程课上使用 做笔记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 相同的输出,但不需要尾随代码来表示彩色块的结束。
显然,通过这两种方法,都可以选择激活字符(当前@
、^
和*
)及其相关颜色(当前red
和blue
)以满足 OP 的特定需求。