Структура класса и пакета
Файл класса или пакета обычно состоит из четырёх частей.
- В идентификационной части файл заявляет, что это пакет или класс LaTeX, и описывает себя, используя команды
\NeedsTeXFormatи\ProvidesClassили\ProvidesPackage. - В предварительной части объявлений объявляются некоторые команды и могут загружаться другие файлы. Обычно эти команды необходимы для кода, используемого в следующей части. Например, класс
smcmemoможет вызываться с опцией чтения файла со списком людей для заголовка, как\documentclass[mathto]{smcmemo}, и поэтому ему нужна команда\newcommand{\setto}[1]{\def\@tolist{#1}}, используемая в этом файле. - В части обработки опций класс или пакет объявляет и обрабатывает свои опции. Опции класса позволяют пользователю начинать свой документ как
\documentclass[option list]{class name}, чтобы изменить поведение класса. Например, когда вы объявляете\documentclass[11pt]{article}для установки размера шрифта документа по умолчанию. - Наконец, в части дополнительных объявлений класс или пакет обычно выполняет большую часть своей работы: объявляет новые переменные, команды и шрифты, загружает другие файлы.
Вот пример файла класса, который следует сохранить как stub.cls, где LaTeX может его найти, например, в той же директории, что и файл .tex.
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{stub}[2017/07/06 stub to start building classes from]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass{article}
Он идентифицирует себя, обрабатывает опции класса, передавая их по умолчанию классу article, а затем загружает класс article, чтобы обеспечить основу для кода этого класса.
Для более подробной информации обратитесь к официальному руководству для авторов классов и пакетов, руководству по классам, по адресу https://www.latex-project.org/help/documentation/clsguide.pdf (многие описания здесь взяты из этого документа), или к учебному пособию https://www.tug.org/TUGboat/tb26-3/tb84heff.pdf.
© 2007–2018 Karl Berry
Public Domain Software
http://latexref.xyz/Class-and-package-structure.html