Ich schreibe derzeit meine eigene Dokumentklasse (die stark von der Buchklasse inspiriert ist) und habe ein Problem bei der Verwendung der Pakete caption
und subcaption
.
Hier ist ein Teil meiner Klassehervorgehobener Text:
\RequirePackage{caption}
\RequirePackage{subcaption}
\newcounter{figure}
\newenvironment{figure}{%
\@float{figure}%
}
{\end@float}
\renewcommand\thefigure{%
\@arabic\c@figure%
}
\renewcommand\thesubfigure{%
\arabic{subfigure}%
}
\newcommand\figurename{Fig}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename\nobreakspace\thefigure}
\DeclareCaptionLabelFormat{format}{\textbf{\textsc{#1.~#2. -- }}}
\captionsetup[figure]{
name={Fig},
labelsep=none,
labelformat=format,
textformat=simple,
justification=justified,
singlelinecheck=true,
font=footnotesize,
textfont=it,
position=bottom,
}
\captionsetup[subfigure]{
name={Fig},
labelsep=none,
labelformat=format,
textformat=simple,
justification=justified,
singlelinecheck=true,
font=footnotesize,
textfont=it,
position=bottom,
}
Bei den einfachen Abbildungen ist das kein Problem, da klappt alles einwandfrei. Beim Versuch, Unterabbildungen einzufügen, erhalte ich jedoch die folgende Fehlermeldung bezüglich der Dokumentklasse:
Command \thesubfigure undefined
Wissen Sie, woher dieser Fehler kommt? Ich habe die Dokumentation beider Pakete gelesen, bin aber nicht sehr fortgeschritten. . .
Dies ist das erste Mal, dass ich meine eigene Dokumentklasse schreibe. Das ist ganz anders als die „klassische“ Verwendung von LaTeX. Entschuldigen Sie also bitte, wenn meine Klasse ein Notbehelf ist. Danke
PS: Hier ist der Link für die Dokumentklasse:MeineKlasse.cls
Die Abbildungsumgebung wird in den Zeilen 382 bis 410 und die Beschriftung in den Zeilen 452 bis 510 definiert.
Und hier ist der Link zur .tex-Datei:Test.tex
Antwort1
- Beim Laden
subcaption
wird es automatisch aufgerufen\DeclareCaptionSubType{figure}
, wenn ein Zählerfigure
definiert ist. - Innen
\DeclareCaptionSubType{figure}
,- Befehl
\ext@figure
wird erweitert. (Tatsächlich geschieht dies innerhalb der Erweiterung von\caption@@@@declaresublistentry
, definiert incaption3.sty
) - Ein neuer Zähler
subfigure
wird definiert, daher wird der entsprechende Befehl\thesubfigure
definiert.
- Befehl
Beim Zähler table
passieren ähnliche Dinge.
Der Schlüssel liegt also darin , vor dem Aufruf einen Zähler <float type>
und einen Befehl bereitzustellen .\ext@<float type>
\DeclareCaptionSubType[*]{<float type>}
Ein vollständiges Beispiel
\documentclass{minimal}
\newcounter{figure}
\newcounter{table}
\makeatletter
\def\ext@figure{lof}
\def\ext@table {lot}
\makeatother
\RequirePackage{subcaption}
\renewcommand{\thesubfigure}{...}
\renewcommand{\thesubtable} {...}
\begin{document}
abc
\end{document}