Problema con el paquete de subtítulos: comando no definido

Problema con el paquete de subtítulos: comando no definido

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 captionand 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}si figurese define el contador.
  • Adentro \DeclareCaptionSubType{figure},
    • El comando \ext@figurese expande. (En realidad esto sucede dentro de la expansión de \caption@@@@declaresublistentry, definida en caption3.sty)
    • subfigureSe define un nuevo contador , por lo que \thesubfigurese define el comando correspondiente.

Para el contador tablesuceden 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}

información relacionada