子标题包问题-未定义命令

子标题包问题-未定义命令

我目前正在编写自己的文档类(这受到书籍类的启发),并且在使用captionsubcaption包时遇到了一个问题。

这是我的课程的一部分强调文字

\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:这是文档类别的链接:我的Class.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}

相关内容