本文共 2553 字,大约阅读时间需要 8 分钟。
作者:Daniel
LaTeX
中级教程:自定义新命令LaTeX
最令人兴奋的地方是它允许用户自定义新命令。这样,我们可以创造性地、高效率地完成一些令人感到繁琐、乏味的、重复的键盘输入工作。
这样说或者有点抽象,让我来举个简单的例子:
Daniel正在编辑一本小册子,里面有很多地方需要画一些水平的横线——就像单行作业簿里的那样:
画四条长9cm的横线,横线之间增加0.5em的竖直距离可以用4个重复的\underline{9cm}\vskip 0.5em
:
\underline{9cm}\vskip 0.5em \underline{9cm}\vskip 0.5em \underline{9cm}\vskip 0.5em \underline{9cm}
每次都这样输入就太无趣了,而且还有可能敲错代码!快速、准确的输入这些代码是定义一个新命令,名字就叫做\fourlines
, 注意每个LaTeX
命令都必须以\
开头。
有了这个新命令,每次需要画4条水平线的时候,只要输入这个新命令\fourlines
就可以搞定了,是不是很简单!不过我们得先定义它才行,否则,编译时就会报错:
! Undefined control sequence.
定义新命令的语法是:
\newcommand{\com_name}[narg][opt]{def}
解释一下括号里面的说明:
\com_name
是新命令的名字,必须与已有的LaTeX
命令不同;narg
是1~9之间的数字,用以说明新命令包含几个参数;opt
是可选参数的默认值;def
部分是新命令的定义。看起来是不是有点复杂?没关系,我们从简单的开始,先看没有参数的新命令。
例1 上面的例子中\fourlines
可以如下定义:
\newcommand{\fourlines}{ \underline{9cm}\vskip 0.5em \underline{9cm}\vskip 0.5em \underline{9cm}\vskip 0.5em \underline{9cm} }
这个新命令\fourlines
没有参数,它的作用就是代替def
中的部分,这几行代码一般放在导言区,就是\documentclass{}
和\begin{document}
之间。
定义好了以后, LaTeX
每次遇到命令\fourlines
时,就执行def
里面的四个画线命令。
简单地说,这种新命令就像数学中的换元法,用简单的字符串代替复杂的字符串。
Daniel在出数学试卷时,会遇到填空题,需要在题目后面画一条给定长度的短横线——比如3cm,并在横线后面加一个句点,他可以这样写:\underline{\hspace{3cm}}.
但这样做的缺点是,每个题目后面需要输入一次,很繁琐。我们可以像例1中一样定义一个新命令\blank
来完成。
可是,有时候我们需要这条横线的长度具有弹性,可以适应需要填写的内容的长度,即内容较长时,画一条较长的线,这时我们可以定义一个带参数的新命令——\blank{}
,这样可以在大括号里面指定横线的长度。
例2 定义一个带参数的命令\blank{n}
用来画一条长度为n
厘米的横线,并在末尾加一个数学的句点。
\newcommand{\blank}[1]{\underline{\hspace{#1 cm}}.}
我们说说例2与例1的区别:
{\com_name}
和{def}
之间多了一个[1]
,在命令的def
里面多了一个#1
;[1]
指明这个新命令有一个参数,使用这个命令时, 要在大括号里指明参数的值,这样\blank{4}
就是画一条长为4cm的横线,并加一个句点;def
里面的#1
是一个变量,只执行命令\blank{4}
时,LaTex
会将4赋予#1
。大多数情况下,填空题后面的短横线可以设定一个默认长度,比方说2cm, 少数情况下需要指定另外一个值。这时,我们可以修改例2中的命令的定义,使它变得更加灵活好用。方法是增加一个可选参数opt
,我们要用\newcommand{\com_name}[narg][opt]{def}
这个完整的形式。opt
指定参数#1
的默认值,这里设为2。
例3 定义一个新命令\blank
,用来画一条短横线,末尾加一个句点,使得没有给参数时,横线默认长度为2cm,给定参数为n
时,横线长度为n
cm。
\newcommand{\blank}[1][2]{\underline{\hspace{#1 cm}}.}
这里有两个中括号,说明命令\blank
带有一个可选参数,第一个中括号里的1指明这个命令只有一个参数,第二个中括号里的数字2说明参数的默认值是2, 不需要带单位cm, 是因为定义里面已经有单位了。
这样,我们若需要画2cm的横线,就使用\blank
就可以了,因为2是默认参数的值,若要画一条3cm的横线,则要用\blank[3]
, 注意这里的参数必须用中括号,而不是大括号,因为这是指定可选参数,而不是普通参数。
通过上面三个例子,你学会了自定义新命令了吗?下面的两个练习可以帮你学以致用:
练习
(1) 定义过一个新命令\xvec
,用来输入向量: ;
(2) 定义一个带一个参数的命令\avec
,用来输入向量:,
上面的例子都是一个参数的简单情形,其实新命令也可以有多个参数的,这样使得命令更具有灵活性。
例4 修改上面练习中的命令\avec
,使得它可以输入更一般的向量:,。
\newcommand{\avec}[3]{(#1_{#2},\cdots,#1_{#3})}
这样,输入命令\avec{\alpha}{s}{t}
就得到:了。
LATEX 初级篇
不可不知的22个 WinEdt 使用技巧
论文的结构和tex源文件的结构
无编号数学公式的输入
array 环境和矩阵、行列式、表格
矩阵、行列式的输入
LaTeX公式编号及引用
LaTeX初级教程:列表
LaTeX表格的编制
LaTeX初级教程:插入图片
LaTeX初级教程:参考文献的编写(上)
LaTeX初级教程:参考文献的批量添加及引用(下)
转载地址:http://avifo.baihongyu.com/