写一个宏包的基本工作就是将你原本很长的文档导言拷贝到一个分离的文件中去,这个文件需要以 .sty 结尾,文件中需要使用一个专用的命令:
\ProvidesPackage{
package name}
这个命令应该在宏包文件起始处使用,用于声明 LaTeX 宏包的名称,当用户尝试两次引入同一个宏包时,\ProvidesPackage 命令会给出宏包重复引用的错误信息。
哪些内容应当放入宏包文件中呢?当然是你的大多数 LaTeX 文档都要用到宏包、自定制的排版命令,把这些东西丢到宏包里,就可以实现复用。宏包使用得当,可以避免很多繁琐的输入与排版命令的记忆。
下面是我基于自己的排版习惯定制的一个宏包,仅供初学者参考:
% lyanry book style package
\ProvidesPackage{lyrbook}
% 设定页边距
\usepackage[top=1.1in,bottom=1.1in,left=1.25in,right=1in]{ geometry}
% 加载 ams 数学公式与数学字体宏包
\usepackage{amsmath, amsfonts}
% 有时要用 PGF/TikZ 绘制一些图
\usepackage{tikz}
\usetikzlibrary{trees,shapes,snakes,arrows,backgrounds}
% 加载 CJK 相关宏包,并设置中文字体
\usepackage{CJKutf8, CJKnumb, CJKpunct}
\newcommand{\lyrtitle}{ \CJKfamily{yahei}}
\newcommand{\lyrem}{ \CJKfamily{yahei}}
% 设置中文段落首行缩进与段落间距
\usepackage{indentfirst}
\setlength{\parindent}{2em }
\setlength{\parskip}{0pt }
% 设置行间距
\renewcommand{\baselinestretch }{1.2}
% 设置页眉页脚
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[ 1]{\markboth{\small 第\,\thechapter \,章\quad #1}{}}
\renewcommand{\sectionmark}[ 1]{\markright{\small\thesection \quad #1}{}}
\fancyhf{}
\fancyhead[ER]{ \leftmark}
\fancyhead[OL]{ \rightmark}
\fancyhead[EL,OR]{ $\cdot$\,\thepage\,$\cdot$ }
\renewcommand{\headrulewidth}{ 0.4pt}
\headheight=16pt
%------------------------------------------
% 以下是为符合中文阅读习惯而重新定制的命令
%------------------------------------------
% 设定章节标题格式
\usepackage{titlesec}
\titleformat{\chapter}{ \centering\LARGE\lyrtitle}{第\, \CJKnumber{\thechapter}\,章}{1em}{}
\titleformat{\section}{ \large\lyrtitle}{\thesection}{1em}{}
\titleformat{\subsection}{ \normalsize\lyrtitle}{\thesubsection}{1em}{}
% 设定表格、插图等元素的标题
\usepackage[small, center]{caption2 }
\renewcommand{\captionlabeldelim }{~} %将图片标题后的冒号替换为空格