我正在尝试编写一个\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
。这是用于变音符的重音命令,它确实应该被保留下来。