Wenn du immer wieder dieselben Makros in die Präambel kopierst, fasse sie in ein eigenes Paket (eine .sty-Datei, die du mit \usepackage lädst) oder eine Klasse (.cls) zusammen. Diese Seite zeigt das Grundgerüst — Identifikationszeile, Optionsbehandlung, Laden von Abhängigkeiten — und den Unterschied zwischen Paketen und Klassen.
Das .sty-Grundgerüst
Ein Paket ist eine .sty-Datei in deinem Projekt (oder eine installierte Datei). Am Anfang erklärt es, was es ist, danach definiert es Makros. \NeedsTeXFormat{LaTeX2e} nennt das benötigte Format, und \ProvidesPackage{name}[date version description] identifiziert Paketname und Version (der Name muss dem Dateibasename entsprechen; das Datum erscheint im Log und ermöglicht Versionsprüfungen). Danach definierst du Inhalte mit \newcommand, \newenvironment usw.
% mypackage.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mypackage}[2026/01/01 v1.0 My helpers]
\newcommand{\hello}{こんにちは、\LaTeX!}Abhängigkeiten laden — \RequirePackage
Wenn deine .sty-Datei von anderen Paketen abhängt, verwende \RequirePackage{...} — das ist das .sty-Gegenstück zu \usepackage. Lade xcolor für Farben, tikz zum Zeichnen usw. Wenn deine Optionsbehandlung die Funktion braucht, setze es vor \ProcessOptions, sonst danach.
\RequirePackage{xcolor}Optionen annehmen — \DeclareOption
Um Optionen wie \usepackage[option]{name} anzunehmen, deklarierst du jede mit \DeclareOption{option}{code}, fängst unbekannte mit \DeclareOption*{...} ab (Warnung ausgeben oder an eine geladene Klasse weiterreichen) und schließt mit \ProcessOptions\relax ab. Für Optionen der Form key=value nimm die moderne Schnittstelle \DeclareKeys (l3keys) oder das Paket kvoptions.
\DeclareOption{color}{\renewcommand\hello{\textcolor{red}{こんにちは}}}
\DeclareOption*{\PackageWarning{mypackage}{Unknown option '\CurrentOption'}}
\ProcessOptions\relaxKlassen (.cls) im Vergleich zu Paketen
Eine Klasse ist eine .cls-Datei (deklariert mit \ProvidesClass), die den gesamten Dokumenttyp definiert. Sie wird mit \documentclass geladen, und es gibt nur eine pro Dokument. Meist baut sie über \LoadClass{article} auf einer bestehenden Klasse auf. Ein Paket (.sty) fügt dagegen Funktionen hinzu, und du kannst beliebig viele laden. Identifikation und Optionsbehandlung funktionieren fast gleich. Das Erstellen einer Klasse selbst behandelt eine eigene Seite.