Aprendendo a escrever classes e pacotes de LaTeX

Não há nada particularmente mágico sobre os comandos que você usa ao escrever um pacote, de modo que você pode simplesmente agrupar um conjunto de comandos de LaTeX \(re)newcommand e \(re)newenvironment, colocá-los em um arquivo package.sty e você terá um pacote.

No entanto, qualquer pacote, exceto o mais trivial, exigirá muito mais sofisticação. Alguns detalhes de comandos de LaTeX para esse trabalho podem ser encontrados em ‘LaTeX 2e for class and package writers’ (clsguide, parte da distribuição da documentação do LaTeX ). Além disso, um bom conhecimento do próprio TeX é valioso: assim, livros como o TeXbook ou TeX by topic são relevantes. Com bom conhecimento de TeX é possível usar a fonte documentada do LaTeX como material de referência (autores dedicados se familiarizarão com a fonte naturalmente). Um conjunto completo da fonte documentada do LaTeX pode ser preparado processando o arquivo source2e.tex presente na distribuição do LaTeX. Esse processamento é obviamente tedioso, mas Heiko Oberdiek preparou uma versão PDF bem organizada, a qual está no arquivo base.tds.zip da distribuição de latex-tds dele. Arquivos individuais da distribuição do LaTeX podem ser processados separadamente com o LaTeX, como qualquer dtx arquivobem construído.

Escrever boas classes não é fácil; é uma boa ideia ler algumas consagradas (classes.dtx, por exemplo, é a fonte documentada das classes padrão além de Letter, e pode ser formatada com LaTeX). Classes que não fazem parte da distribuição são comumente baseadas nas que são, e começam por carregar a classe padrão com \LoadClass — um exemplo desta técnica pode ser visto em ltxguide.cls

Uma versão comentada de article, como aparece na classes.dtx, foi publicada na TUGboat 28(1). O article, de Peter Flynn, é um bom guia para compreender classes.dtx

classes.dtx
latex-classes
clsguide.pdf
clsguide
latex-tds collection
latex-tds
ltxguide.cls
ltxguide
LaTeX documentation
latexdoc
source2e.tex
latex-source

This answer last edited: 2011-07-19


Do you have any question? Ask on: latex.net.br - we love qood questions!