newcommand
使用以下命令定义一个新的命令:
\newcommand{name}[num]{definition}
name是新命令的名字,num指出新命令的参数个数,默认是0,definition是定义的内容,将来要(宏)替换LaTex文档中出现的name命令。
在definition中,使用#1
,#2
…等代表参数。
LaTex不允许定义同一个命令多次,但提供了一个特殊的命令用来重写之前定义的命令:
\renewcommand{name}[num]{definition}
renewcommand
与newcommand
的用法一致。
providecommand
命令与newcommand
的用法一致,但如果providecommand
定义的命令已经存在,LaTex会忽视新定义的命令。
在LaTex2e中,允许增加默认参数:
\newcommand{name}[num][default]{definition}
使用默认参数时,definition中的#1
代表第一个默认参数。
调用命令:
name[present_default_arguments]{argument}
newenvironmet
使用以下命令定义一个新环境:
\newenvironmet{name}[num][default]{before}{after}
name是新环境的名称,num是环境的参数个数,在before和after中使用#1
, #2
…等代表形参。
使用新环境:
\begin{name}[present_default_arguments]{argument}
something
\end{name}
环境定义中的before会代替\begin{name}
,after会代替\end{name}
。
renewenvironment
会重写之前定义的环境。
declare command within new environment
新命令可以定义在新的环境中,这时为了不与环境的参数混淆,命令的形参使用##1
, ##2
…等代替。
\newenvironmet{topics}
{ % before
\newcommand{\topic}[2]{\item{##1 / ##2\}}
Topics:
\begin{itemize}
}
{ % after
\end{itemize}
}
hook
LaTex提供了两个hooks:
\AtBeginDocument
会执行一组命令当遇到\begin{document}
\AtEndDocument
会执行一组命令当遇到\end{document}
- older
- Newer