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 caption
e 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 contadorfigure
estiver definido. - Dentro
\DeclareCaptionSubType{figure}
,- comando
\ext@figure
é expandido. (Na verdade, isso acontece dentro da expansão de\caption@@@@declaresublistentry
, definida emcaption3.sty
) - novo contador
subfigure
é definido, portanto o comando correspondente\thesubfigure
é definido.
- comando
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}