%# -*- coding:utf-8 -*-
% 导言区
\documentclass{ctexart}
% （重）定义命令
% 命令只能由字母组成，不能以\end开头
% \newcommand <命令>[<参数个数>][<首参数默认值>]{具体定义}
\newcommand\PRC {People's Republic of \emph{China}}

% 参数个数可以从1到9，使用时用#1，#2...，#9表示
\newcommand\loves[2]{#1 喜欢 #2}
\newcommand\hateby[2]{#2 不受 #1 喜欢}

% \newcommand的参数可以有默认值
% 只能为首个参数设置默认值，此时首个参数就成为了该命令的可选参数
\newcommand\like[3][喜欢]{#2#1#3}

% \renewcommand 重定义命令-只能用于已有命令
\renewcommand\abstractname{内容简介}

% （重）定义环境
% \newenvironment{<环境名称>}[<参数个数>][<首参数默认值>]
%                  {<环境前定义>}
%                  {<环境后定义>}
\newenvironment{myabstract}[1][摘要]
{\huge
 \begin{center}\bfseries #1 \end{center}
 \normalsize \begin{quotation}
}
{\end{quotation}}

% 环境参数只有在<环境前定义>中可以使用，<环境后定义>中不能再使用环境参数
% 如果需要，可以把前面得到的参数保存在一个命令中，在后面使用
\newenvironment{Quot}[1]
{
 \newcommand\quotesource{#1}
 \begin{quotation}
}
{
 \par\hfill --- \textit{\quotesource}
 \end{quotation}
}
% 正文区（文稿区）
\begin{document}
    \PRC

    \loves{猫}{鱼}

    \hateby{猫}{萝卜}

    \like{猫}{鱼}

    \like[最爱]{猫}{鱼}

    \begin{abstract}
    \end{abstract}

    \begin{myabstract}
    这是我写的一个摘要...
    \end{myabstract}

    \begin{Quot}{诗经}
    关关雎鸠，在河之洲
    \end{Quot}

    定义命令和环境是\LaTeX 进行格式定制、达到内容与格式分离目标的利器。

    使用自定义的命令和环境把字体、字号、缩进、对齐等各种琐碎的内容包装起来，赋予一个有意义的名字，可以使文档结构清晰，代码整洁，易于维护。

\end{document}
