하위 캡션 패키지 문제 - 정의되지 않은 명령

하위 캡션 패키지 문제 - 정의되지 않은 명령

나는 현재 내 자신의 문서 클래스(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}

관련 정보