\newcommand 如何工作?让颜色命令更简单

\newcommand 如何工作?让颜色命令更简单

我正在尝试编写一个\c{}比 更短且更易于使用的更简单的颜色命令\color{}。但是,我不想覆盖现有命令,因此我将使用\providecommand{}[]{}创建命令。

我的问题是:命令选项和参数如何工作?

该命令需要有一个强制参数,即颜色。此外,与\color{}命令一样,该参数也需要是已定义的颜色。

我在想类似的事情:

\documentclass[a4paper]{article}
\usepackage{xcolor}
\definecolor{netflixred}{HTML}{E50914}
\definecolor{overleafgreen}{HTML}{138A07}

\providecommand{\c}[1]{\color{#1}}

\begin{document}
    {\c{netflixred}This text is in netflixred}, 
    {\c{overleafgreen} and this is in overleafgreen}
\end{document}

但是我该如何为命令创建参数呢?而且,一般来说,我该如何为命令创建可选参数和强制参数呢?

答案1

定义新命令的传统 TeX 方法是使用\def;这在 LaTeX 中也适用。参数用 给出数字#;例如#1#2

\def\hello#1#2{Hello, #1!  I'm #2!}

\def然而,不是当您覆盖现有命令时发出警告。 \newcommand是 LaTeX 版本,它提供了一些额外的好处,包括拒绝覆盖已经存在的命令。

\newcommand{\hello}[2]{Hello, #1!  I'm #2!}

如果要包含可选参数,请包含另一个方括号位;方括号中的第二个点表示有一个可选参数,如果没有特别包含,则提供其默认值:

\newcommand{\hello}[2][Joe]{Hello, #2!  I'm #1!}

可选参数为#1,后续参数为必选参数。因此,如果您输入\hello{Mike},您将得到Hello, Mike! I'm Joe!;但如果您运行\hello[Jim]{Mike},您将得到Hello, Mike! I'm Jim!

因此,对于您的颜色命令,我建议如下:

\newcommand{\co}[1]{\color{#1}}

话虽如此,我不确定您希望它比 更简单\color{blue}。有什么特别的原因让您觉得它太长或太麻烦吗?五次击键的开销非常小。

另外,不是重新定义\c。这是用于变音符的重音命令,它确实应该被保留下来。

相关内容