Creación de paquetes y clases

Si sigues pegando las mismas macros en el preámbulo, conviértelas en tu propio paquete (un archivo .sty que cargas con \usepackage) o clase (.cls). Esta página muestra el esqueleto: línea de identificación, manejo de opciones, carga de dependencias y diferencias entre paquetes y clases.

El esqueleto .sty

Un paquete es un archivo .sty en tu proyecto (o instalado). Empieza declarando qué es y luego define macros. \NeedsTeXFormat{LaTeX2e} declara el formato requerido, y \ProvidesPackage{name}[date version description] identifica el paquete y su versión (el nombre debe coincidir con el basename del archivo; la fecha aparece en el registro y permite comprobaciones de versión). Después defines el contenido con \newcommand, \newenvironment, etc.

latex
% mypackage.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mypackage}[2026/01/01 v1.0 My helpers]
\newcommand{\hello}{こんにちは、\LaTeX!}

Cargar dependencias — \RequirePackage

Cuando tu .sty depende de otros paquetes, usa \RequirePackage{...}: el equivalente de \usepackage dentro de un .sty. Carga xcolor para color, tikz para dibujo, etc. Ponlo antes de \ProcessOptions si el manejo de opciones lo necesita; si no, después.

latex
\RequirePackage{xcolor}

Aceptar opciones — \DeclareOption

Para aceptar opciones como \usepackage[option]{name}, declara cada una con \DeclareOption{option}{code}, captura las desconocidas con \DeclareOption*{...} (avisar o pasarlas a una clase cargada), y termina con \ProcessOptions\relax. Para opciones key=value, usa el moderno \DeclareKeys (l3keys) o el paquete kvoptions.

latex
\DeclareOption{color}{\renewcommand\hello{\textcolor{red}{こんにちは}}}
\DeclareOption*{\PackageWarning{mypackage}{Unknown option '\CurrentOption'}}
\ProcessOptions\relax

Clases (.cls) frente a paquetes

Una clase es un archivo .cls (declarado con \ProvidesClass) que define el tipo de documento completo. Se carga con \documentclass, y hay solo una por documento. Normalmente se basa en una clase existente mediante \LoadClass{article}. Un paquete (.sty), en cambio, añade funciones encima y puedes cargar tantos como quieras. La identificación y el manejo de opciones son casi idénticos. Crear una clase se trata en una página propia.