Problema com pacote de sublegenda - comando indefinido

Problema com pacote de sublegenda - comando indefinido

Atualmente estou escrevendo minha própria classe de documento (que é muito inspirada na classe de livro) e estou enfrentando um problema ao usar os pacotes captione subcaption.

Aqui está uma parte da minha aulatexto 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 as figuras simples, não tem problema, tudo corre perfeitamente bem. Mas quando tento inserir subfiguras recebo o seguinte erro referente à classe do documento:

Command \thesubfigure undefined

Você sabe de onde veio esse erro? Li a documentação de ambos os pacotes, mas não sou muito avançado. . .

Esta é a primeira vez que escrevo minha própria classe de documento, é bem diferente do uso "clássico" do LaTeX, então, desculpe-me se minha aula é um trabalho improvisado. Obrigado

PS: Aqui está o link para a classe do documento:MinhaClasse.cls

O ambiente da figura está definido nas linhas 382 a 410 e a legenda nas linhas 452 a 510.

E aqui está o link para o arquivo .tex:Teste.tex

Responder1

  • Ao carregar subcaption, ele chama automaticamente \DeclareCaptionSubType{figure}se o contador figureestiver definido.
  • Dentro \DeclareCaptionSubType{figure},
    • comando \ext@figureé expandido. (Na verdade, isso acontece dentro da expansão de \caption@@@@declaresublistentry, definida em caption3.sty)
    • novo contador subfigureé definido, portanto o comando correspondente \thesubfigureé definido.

Para counter table, coisas semelhantes acontecem.

Portanto, a chave é fornecer contador <float type>e comando \ext@<float type>antes de chamar \DeclareCaptionSubType[*]{<float type>}.

Um exemplo 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}

informação relacionada