跳转到内容

LaTeX/创建包

来自维基教科书,开放的书籍,开放的世界

LaTeX

入门
  1. 介绍
  2. 安装
  3. 安装额外的包
  4. 基础
  5. 如何获得帮助

常见元素

  1. 文档结构
  2. 文本格式
  3. 段落格式
  4. 颜色
  5. 字体
  6. 列表结构
  7. 特殊字符
  8. 国际化
  9. 旋转
  10. 表格
  11. 标题创建
  12. 页面布局
  13. 自定义页面页眉和页脚‎
  14. 导入图形
  15. 浮动体、图和标题
  16. 脚注和页边空白注释
  17. 超链接
  18. 标签和交叉引用
  19. 首字母

机制

  1. 错误和警告
  2. 长度
  3. 计数器
  4. 方框
  5. 规则和支撑

技术文本

  1. 数学
  2. 高级数学
  3. 定理
  4. 化学图形
  5. 算法
  6. 源代码列表
  7. 语言学

特殊页面

  1. 索引
  2. 词汇表
  3. 参考文献管理
  4. 更多参考文献

特殊文档

  1. 科学报告(学士报告、硕士论文、博士论文)
  2. 信件
  3. 演示文稿
  4. 教师角
  5. 简历
  6. 学术期刊(MLA、APA 等)

创建图形

  1. 介绍过程图形
  2. MetaPost
  3. 图片
  4. PGF/TikZ
  5. PSTricks
  6. Xy-pic
  7. 创建 3D 图形

编程

  1. Plain TeX
  2. 创建包
  3. 创建包文档
  4. 主题

杂项

  1. 模块化文档
  2. LaTeX 文档的协作编写
  3. 导出到其他格式

帮助和建议

  1. 常见问题解答
  2. 技巧和窍门

附录

  1. 作者
  2. 链接
  3. 包参考
  4. LaTeX 文档示例
  5. 索引
  6. 命令词汇表

编辑此框编辑目录

如果您定义了大量新的环境和命令,则文档的前言将变得很长。在这种情况下,最好创建一个包含所有命令和环境定义的 LaTeX 包或类。它可以变得足够动态以适合您未来所有文档。

类是.cls文件;包存储在.sty文件中。它们非常相似,主要区别在于您每个文档只能加载一个类。

在决定创建自己的包或类后,您应该考虑该包/类的许可证。许可证非常重要,既可以保护您的文件,也可以使其他人可以使用它。


makeatlettermakeatother

[编辑 | 编辑源代码]

默认情况下,LaTeX 允许在包和类文件中使用“@”字符作为控制序列,但在最终用户文档中则不允许。这样就可以保护命令,即使它们只能从包中访问。

但是,可以使用 \makeatletter\makeatother 这对命令来覆盖此安全措施。这些命令仅在常规文档中才有意义,在包或类文件中不需要它们。

\documentclass{...}
%...

\begin{document}

\makeatletter
\@author
\makeatother

\end{document}

创建您自己的包

[编辑 | 编辑源代码]

您的包可以使用 \usepackage 命令在您的文档中使用,就像任何其他包一样。编写包基本上就是将文档前言的内容复制到一个以.sty.

让我们写一个第一个custom.sty文件作为示例包

\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{custom}[2013/01/13 Custom Package]

\RequirePackage{lmodern}

%% 'sans serif' option
\DeclareOption{sans}{
  \renewcommand{\familydefault}{\sfdefault}
}

%% 'roman' option
\DeclareOption{roman}{
  \renewcommand{\familydefault}{\rmdefault}
}

%% Global indentation option
\newif\if@neverindent\@neverindentfalse
\DeclareOption{neverindent}{
  \@neverindenttrue
}

\ExecuteOptions{roman}

\ProcessOptions\relax

%% Traditional LaTeX or TeX follows...
% ...

\newlength{\pardefault}
\setlength{\pardefault}{\parindent}
\newcommand{\neverindent}{ \setlength{\parindent}{0pt} }
\newcommand{\autoindent}{ \setlength{\parindent}{\pardefault} }

\if@neverindent
\neverindent
\fi

% ...

\endinput
  • \NeedsTeXFormat{...} 指定至少运行包所需的 TeX 或 LaTeX 版本。可选日期可用于更精确地指定版本。
  • \ProvidesPackage{<name>}[<version>] 包使用此命令自我介绍。<name> 应与文件本身的基本名称 相同。<version> 应以YYYY/MM/DD 格式的日期开头。在开发包时,应保持版本信息更新。
  • 接下来,您可以编写一些 TeX 或 LaTeX 代码,例如加载包,但只编写下面设置的包选项所需的最低限度代码。
  • \RequirePackage 等效于 \usepackage
  • \DeclareOptions 是最终用户参数。每个选项都由一个这样的命令声明。
  • \ExecuteOptions{...} 指定哪些是默认选项。
  • \ProcessOptions\relax 终止选项处理。
  • 使用您所知的所有 LaTeX 命令,编写您想要的任何内容。通常,您应该定义新的命令或导入其他包。
  • \endinput:这必须是最后一个命令。

包准备好后,我们可以在任何文档中使用它。使用已知的命令 \usepackage{mypack} 导入新包。文件custom.sty和您正在编译的 LaTeX 源文件必须位于同一个目录中。

\documentclass{...}
\usepackage[neverindent,sans]{custom}
%...

\begin{document}

Blah...

\end{document}


为了方便使用,可以将包放在$TEXMFHOME(默认情况下为~/texmf)中,根据 TeX 目录结构 (TDS)。这将是

$TEXMFHOME/tex/latex/custom/custom.sty

在 Windows 上,“~” 通常是C:\Users\username.

您可能需要运行texhash(或等效命令)以使您的 TeX 发行版为新文件建立索引,从而使新文件可用于任何文档。这将允许您像上面详细说明的那样使用您的包,但不需要它与您的文档位于同一个目录中。

创建您自己的类

[编辑 | 编辑源代码]

您也可以创建自己的类文件。该过程类似于创建自己的包,您可以在任何文档的前言中使用命令

\documentclass{myclass}

然后,类文件的名称为myclass.cls。让我们写一个简单的示例,我们还将使用custom.sty我们在上面定义的

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2011/12/23 My Class]

%% Article options
\DeclareOption{10pt}{
  \PassOptionsToClass{\CurrentOption}{article}
}

%% Custom package options
\DeclareOption{sans}{
  \PassOptionsToPackage{\CurrentOption}{custom}
}
\DeclareOption{neverindent}{
  \PassOptionsToPackage{\CurrentOption}{custom}
}

%% Fallback
\DeclareOption*{
  \ClassWarning{myclass}{Unknown option '\CurrentOption'}
}

%% Execute default options
\ExecuteOptions{10pt}

%% Process given options
\ProcessOptions\relax

%% Load base
\LoadClass[a4paper]{article}

%% Load additional packages and commands.
\RequirePackage{custom}

%% Additional TeX/LaTeX code...

\endinput


  • \ProvidesClass\ProvidesPackage 的对应命令。
  • \PassOptionsToClass\PassOptionsToPackage 用于在加载类或包时自动调用相应的选项。
  • \DeclareOption*:带星号的版本允许您处理未实现的选项。
  • \ClassWarning 将在 TeX 编译器输出中显示相应的消息。
  • \LoadClass 指定唯一的父类(如果有)。

类和包也有一些钩子。

  • \AtEndOfPackage
  • \AtEndOfClass

它们的行为与文档钩子相同。请参阅 LaTeX 钩子


上一页:Plain TeX 索引 下一页:主题
华夏公益教科书