나는 현재 내 자신의 문서 클래스(book 클래스에서 매우 영감을 얻었음)를 작성 중이며 및 패키지를 사용할 때 문제에 직면하고 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의 "고전적인" 사용과는 상당히 다르므로 내 클래스가 임시 변통 작업인 경우 양해해 주시기 바랍니다. 감사해요
추신: 문서 클래스에 대한 링크는 다음과 같습니다.MyClass.cls
그림 환경은 382~410행에 정의되고 캡션은 452~510행에 정의됩니다.
.tex 파일에 대한 링크는 다음과 같습니다.테스트.텍스
답변1
- 을 로드할 때 counter가 정의되어 있으면
subcaption
자동으로 호출됩니다 .\DeclareCaptionSubType{figure}
figure
- 내부에
\DeclareCaptionSubType{figure}
,- 명령이
\ext@figure
확장되었습니다. (실제로 이는\caption@@@@declaresublistentry
에 정의된 확장 내에서 발생합니다caption3.sty
.) - 새 카운터
subfigure
가 정의되었으므로 해당 명령이\thesubfigure
정의됩니다.
- 명령이
counter 의 경우에도 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}