Проблема с пакетом subcaption - неопределенная команда

Проблема с пакетом subcaption - неопределенная команда

В настоящее время я пишу свой собственный класс документа (который во многом вдохновлен классом книги) и столкнулся с проблемой при использовании пакетов captionи subcaption.

Вот часть моего классавыделенный текст:

\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,
}

Для простых фигур проблем нет, все идет отлично. Но когда я пытаюсь вставить подфигуры, я получаю следующую ошибку, касающуюся класса документа:

Command \thesubfigure undefined

Знаете, откуда взялась эта ошибка? Я прочитал документацию обоих пакетов, но я не очень продвинутый...

Это первый раз, когда я пишу свой собственный класс документа, он сильно отличается от «классического» использования LaTeX, поэтому, пожалуйста, извините меня, если мой класс — импровизированная работа. Спасибо

PS: Вот ссылка на класс документа:МойКласс.cls

Окружение рисунка определяется в строках 382–410, а подпись — в строках 452–510.

А вот ссылка на файл .tex:Тест.текс

решение1

  • При загрузке subcaptionон автоматически вызывается, \DeclareCaptionSubType{figure}если figureопределен счетчик.
  • Внутри \DeclareCaptionSubType{figure},
    • команда \ext@figureрасширена. (На самом деле это происходит внутри расширения \caption@@@@declaresublistentry, определенного в caption3.sty)
    • subfigureОпределен новый счетчик , следовательно, \thesubfigureопределена соответствующая команда.

Для счетчика tableпроисходят похожие вещи.

Поэтому главное — предоставить контрмеру <float type>и команду \ext@<float type>перед вызовом \DeclareCaptionSubType[*]{<float type>}.

Полный пример

\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}

Связанный контент