我目前正在编写自己的文档类(这受到书籍类的启发),并且在使用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:这是文档类别的链接:我的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}