サブキャプション パッケージの問題 - 未定義のコマンド

サブキャプション パッケージの問題 - 未定義のコマンド

私は現在、独自のドキュメントクラス(ブッククラスに非常に影響を受けている)を作成していますが、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 ファイルへのリンクは次のとおりです:テスト.tex

答え1

  • をロードするときにsubcaption\DeclareCaptionSubType{figure}counterfigureが定義されている場合は自動的に呼び出されます。
  • 内部\DeclareCaptionSubType{figure}
    • コマンドが展開されます。(実際には、これはで定義されている\ext@figureの展開内で発生します)\caption@@@@declaresublistentrycaption3.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}

関連情報