![创建我的第一个命令](https://linux22.com/image/250835/%E5%88%9B%E5%BB%BA%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4.png)
我想创建一个命令,以某种方式格式化代码。在这种情况下,我希望代码为斜体和红色。因此,\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]
。
笔记:
- 无需同时加载
color
和xcolor
包——只需加载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}