跳轉到內容

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 索引 下一頁:主題
華夏公益教科書