Actualmente estoy escribiendo mi propia clase de documento (que está muy inspirada en la clase de libro) y tengo un problema al usar los paquetes caption
and subcaption
.
Aquí una parte de mi clase.texto enfatizado:
\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,
}
Para las figuras sencillas no hay problema, todo va perfectamente. Pero cuando intento insertar subfiguras aparece el siguiente error relacionado con la clase de documento:
Command \thesubfigure undefined
¿Sabes de dónde vino este error? He leído la documentación de ambos paquetes pero no estoy muy avanzado. . .
Esta es la primera vez que escribo mi propia clase de documento, es bastante diferente del uso "clásico" de LaTeX, así que disculpe si mi clase es un trabajo improvisado. Gracias
PD: Aquí hay un enlace para la clase de documento:MiClase.cls
El entorno de la figura se define en las líneas 382 a 410 y el título en las líneas 452 a 510.
Y aquí está el enlace para el archivo .tex:prueba.tex
Respuesta1
- Al cargar
subcaption
, llama automáticamente\DeclareCaptionSubType{figure}
sifigure
se define el contador. - Adentro
\DeclareCaptionSubType{figure}
,- El comando
\ext@figure
se expande. (En realidad esto sucede dentro de la expansión de\caption@@@@declaresublistentry
, definida encaption3.sty
) subfigure
Se define un nuevo contador , por lo que\thesubfigure
se define el comando correspondiente.
- El comando
Para el contador table
suceden cosas similares.
Entonces, la clave es proporcionar un contador <float type>
y un comando \ext@<float type>
antes de llamar \DeclareCaptionSubType[*]{<float type>}
.
Un ejemplo completo
\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}