\hspace{.5cm}
我想,有时候我们要重复运用很多东西。比如公式,排版之类的东西。如果我们有时候一个个去打字,有时候可能太过于繁琐,所以我们可以自定义一些命令,使得我们使用命令起来更加得心应手
简介
我们在上几次已经介绍过一些常用的命令,现在我们到了自由使用它们的时候了
基础的def命令
H e l l o , w o r l d ! \def\hello{Hello, world!} \hello Hello,world!
$\def\hello{Hello, world!}
\hello$
我们最开始从def命令介绍,这是最基本的自定义命令。这个def有点像我们Python中的def定义函数,在这个例子中,我们定义了hello命令
实际上,确实有点像函数的使用用法。因为我们在使用def命令的过程中,我们可以使用一些参数
H e l l o , C S D N u s e r ! \def\greet#1{Hello, #1!} \greet{CSDN user} Hello,CSDNuser!
$\def\greet#1{Hello, #1!}
\greet{CSDN user}$
我现在详细解释一下这个def命令,我们定义了一个greet命令。
然后我们通过#1 来表明我们这个命令有一个参数
然后我们在我们的hello后面跟着#1,告诉我们编译器:“待会儿我们使用这个命令时候,我们等一下会放入一些参数!”
然后我们使用greet命令的时候,使用这个大的花括号{},我们就传入这个参数。
我们这里的参数是csdn user 参数只能是“字符串 ”
多参数示例
M
y
n
a
m
e
i
s
J
o
h
n
a
n
d
I
a
m
30
y
e
a
r
s
o
l
d
.
\def\introduce#1#2{My name is #1 and I am #2 years old.} \introduce{John}{30}
MynameisJohnandIam30yearsold.
$\def\introduce#1#2{My name is #1 and I am #2 years old.}
\introduce{John}{30}$
我们这次使用两个参数,原理跟上面类似。
可能有朋友问,这样自定义命令可能很麻烦,明明一行就写完了,还要拆成两行?
实际上,这样代码利于我们阅读,便于维护。
即使我们传入参数的时候比较复杂,也不影响最开始怎么样自定义命令。可以说这是一种解耦吧
更灵活的newcommand命令
def命令不提供参数个数检查,也不会自动处理参数的格式,因此需要手动控制。
所以我们介绍一下newcommand命令
5 + 3 = 8 \newcommand{\mycommand}[3]{#1 + #2 = #3} \mycommand{5}{3}{8} 5+3=8
$$\newcommand{\mycommand}[3]{#1 + #2 = #3}
\mycommand{5}{3}{8}$$
我们使用newcommand定义了新的命令,我们叫什么都可以(只要不重复)
我们在这个例子当中,将其命名为mycommand
,然后后面方括号[]表示我们要传入的参数个数
在这个例子当中就是需3个参数
井号1,2,3分别代表我在使用命令的时候,我们要传入参数的位置。这个很像C语言中的%d
,%f
这些转义符号
我们再看复杂一点的例子
[ a b ⋯ 0 ] \newcommand{\mycommand}[4] {\begin{bmatrix} #1 & #2 & \cdots & 0 \end{bmatrix}} \mycommand{a}{b}{c}{d} [ab⋯0]
$$\newcommand{\mycommand}[4] {\begin{bmatrix} #1 & #2 & \cdots & 0 \end{bmatrix}}
\mycommand{a}{b}{c}{d}$$
这样我们写数组的时候我们就可以快速使用我们的模板。
虽然我们声明了四个参数,但是我们可以传入少一点。
我们可以根据使用情况灵活调整我们的参数
通过自定义命令排版
比如说,我们既要黄色背景,又想要Typewriter字体,并且我想要多次使用
text
\newcommand{\mytext}[1]{\colorbox{yellow}{\texttt{#1}}} \mytext{text}
text
$$\newcommand{\mytext}[1]{\colorbox{yellow}{\texttt{#1}}}
\mytext{text}$$
基础的排版命令我已经介绍过了,如果还不知道的朋友可以翻翻上期
[Markdown中进行更细致的排版]
我们的目的就是为了快速使用这个模板,这有点像C++中类模板的概念
那我们就可以将这个命令保存下来
\newcommand{\mytext}[1]{\colorbox{yellow}{\texttt{#1}}}
然后下次写的时候直接调用这个模板就好
reuse
it!
\newcommand{\mytext}[1]{\colorbox{yellow}{\texttt{#1}}} \mytext{reuse it!}
reuse it!
$$\newcommand{\mytext}[1]{\colorbox{yellow}{\texttt{#1}}}
\mytext{reuse it!}$$
数学公式补充
数学公式也是类似的,我们又一个公式比较常用,我们就把它定义一些参数,然后保存下来
这样我们不用每次都写然后又改
如果我们每次都用重复的命令,然后又再重复命令的基础上改来改去,就很头大ψ(*`ー´)ψ
就拿我们的数列求和公式举例子
S
n
=
n
(
a
1
+
a
n
)
2
S_{n}=\frac{n \left( a_{1}+a_{n}\right)}{2}
Sn=2n(a1+an)
$$S_{n}=\frac{n \left( a_{1}+a_{n}\right)}{2}$$
这样我们如果以后要改a1
和an
,只能很仔细去看
而且这样很多反斜杠(\) 我们在计算机领域中叫做倾斜牙签综合征
这样并不利于阅读。所以我们把这个命令拆成两行
我们不妨这样书写
S
n
=
n
(
b
1
+
b
n
)
2
\newcommand{\mysum}[2]{S_{n}=\frac{n \left( #1+#2 \right)}{2}} \mysum{b_{1}}{b_{n}}
Sn=2n(b1+bn)
$$\newcommand{\mysum}[2]{S_{n}=\frac{n \left( #1+#2 \right)}{2}}
\mysum{b_{1}}{b_{n}}$$
总结
我们使用自定义命令进行排版,编写一些公式
就会比较灵活和方便。主旨是为了重复使用,如果不常用,或者说记得头大
那还是直接自己写好了|ू・ω・` )不用定义命令了