创建我的第一个命令

创建我的第一个命令

我想创建一个命令,以某种方式格式化代码。在这种情况下,我希望代码为斜体和红色。因此,\textcolor{red}{\textit code}如果您愿意的话,我想创建一个函数来用更少的代码行帮我完成这件事,而不是这样做。到目前为止,我对它的理解非常……基础。我刚开始使用 latex,这是我目前所拥有的。

\usepackage{color}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}

\newcommand{\code}[1]{\textcolor{ForestGreen}{\textit #1}}

但这只会打印出斜体的第一个字母。不过颜色看起来不错。任何帮助和解释都会非常有帮助。

答案1

扩展 Gonzalo Medina 和 egreg 的评论,我建议创建\code这样的宏:

    \newcommand{\code}[2][ForestGreen]{\textcolor{#1}{\textit{#2}}}

然后\code{text}产生\code[red]{text}

在此处输入图片描述

解释:

  • [2]从而接受两个参数:#1#2
  • 为了提供默认颜色,我们#1通过定义默认值使第一个颜色()成为可选颜色[ForestGreen]

笔记:

  • 无需同时加载colorxcolor包——只需加载xcolor

代码:

\documentclass{article}
\usepackage[svgnames]{xcolor}

\newcommand{\code}[2][ForestGreen]{\textcolor{#1}{\textit{#2}}}

\begin{document}
\code{text} 

\code[red]{text} 

\end{document}

答案2

好吧,在我写答案的时候,大部分内容已经被评论过了。我建议你看一下这个xparse包——只要涉及到可选参数和条件分支,使用它就可以大大简化命令定义。你可以找到CTAN 文档,下面给出的代码中包含一个示例。

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}
\usepackage{xparse}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}

\newcommand{\format}[1]{%
    \textcolor{ForestGreen}{\textit{#1}}}

%format multiple paragraphs
\newcommand{\parformat}[1]{%
    {\color{ForestGreen} \itshape #1}}

%xparse version; [m]andatory text parameter,
%[O]ptional color parameter with a given default
\NewDocumentCommand{\xformat}{O{MidnightBlue} m}{%
    \textcolor{#1}{\textit{#2}}}    

%xparse version for long mandatory argument
\NewDocumentCommand{\xparformat}{O{MidnightBlue} +m}{%
    {\color{#1} \itshape #2}}   

\begin{document}

\noindent
\format{Formatted text}\\
\xformat{some more text}\\
\xformat[red]{yet more text}\\
\parformat{\lipsum[3]\par\lipsum[4]}
\xparformat[cyan]{\lipsum[3]\par\lipsum[4]}

\end{document}

相关内容