命令与环境的定义

命令与环境的定义 #

作者:二花

关键词:命令,环境

这一节,我们讨论一下LaTeX中命令与环境的定义

LaTeX中宏被分为了两类:命令与环境

命令 #

定义新的命令:\newcommand #

\newcommand<新命令(命令是要带\的)>[参数个数][首个参数的默认值]{具体的命令定义}
\documentclass[]{article}
\usepackage[heading=true]{ctex}%一定注意将heading设置为true,不然ctexset不能使用
\usepackage[left = 30mm,right = 30mm]{geometry}
\newCJKfontfamily\qingsong{FZQKBYSJW--GB1-0}
\newcommand\jinse{\qingsong 锦瑟}
\newcommand\js[3][锦瑟]{#3#1#2}
\begin{document}
\jinse \jinse \par
\js{无端}{五十弦}
\end{document}

重定义已有的命令:\renewcommand #

\renewcommand<原有命令>[参数个数][首个参数的默认值]{具体的命令定义}
参数个数最多9个,参数的在命令定义中用#1~#9表示

环境 #

\newenvironment{环境名称name}[参数个数][首参数默认值]{环境前定义before}{环境后定义after}
在before 中的内容将在此环境包含的文本之前处理,而在after 中的内容将在遇到\end{name} 命令时处理。
参数个数最多9个,参数的在命令定义中用#1~#9表示 
%默认参数值时
\newenvironment{shengming}[1][声明]{
	\begin{center}#1\end{center}
	\begin{center}
}{\end{center}}
------
\begin{shengming}
锦瑟无端五十弦,一弦一柱思华年
\end{shengming}

%自定义参数值时
\setCJKfamilyfont{qingsong}{FZQKBYSJW--GB1-0}
------
\newenvironment{shengming}[1]{
	\begin{center}#1\end{center}
	\begin{center}
}{\end{center}}
------
\CJKfamily{qingsong}
\begin{shengming}{我来声明}
锦瑟无端五十弦,一弦一柱思华年
\end{shengming}

after内不能引用参数,因此要在before中通过某种方法实现
\newenvironment{zhuyi}[1][注意]{
	\newcommand\zy{#1}
	\textbf{\zy}\hfill
}{\hfill \textbf{\zy}}
------
\begin{zhuyi}
锦瑟无端五十弦,一弦一柱思华年
\end{zhuyi}

所以,定制命令和环境十分重要,利用自定义的命令和环境把字体,字号,缩进,对齐,间距等内容封装起来,可以令文档结构清晰。大型文档中,定义的命令和环境一般都放在单独的文档里。