如何抑制 LOF 中子图的页码?

如何抑制 LOF 中子图的页码?

我正在使用tocloftsubcaption包,我想抑制 LOF 中子图的页码和点线。

我知道,如果使用tocloftsubfigure打包,可以使用下一个命令来完成:

\cftpagenumbersoff{subfigure}

因此,我想用subcaption包来模拟此命令。关键是我已经用subcaption包完成了所有子图,并且我不想更改所有子图的代码。

答案1

有一种可能性是,您可以tocloft在使用该包时使用子图条目的所有功能subcaption;特别是,您可以抑制页码和前导符(从条目到页码的点):

\documentclass{article}
\usepackage[list=true]{subcaption}
\usepackage{tocloft}

\setcounter{lofdepth}{2}
\cftpagenumbersoff{subfigure}
\makeatletter
\newcommand\cftsubtabdotsep{\cftdotsep}
\newcommand\cftsubfigfont{\normalfont}
\newcommand\cftsubfigpresnum{}
\newcommand\cftsubfigaftersnum{}
\newcommand\cftsubfigaftersnumb{}
\newcommand\cftsubfigleader{\hfill}
\newcommand\cftsubfigpagefont{\normalfont}
\newcommand\cftsubfigafterpnum{}
\providecommand{\toclevel@subfigure}{1}
\renewcommand*\l@subfigure[2]{%
  \ifnum \c@lofdepth > \toclevel@subfigure
    \vskip \cftbeforesubfigskip
    {\leftskip \cftsubfigindent\relax
     \rightskip \@tocrmarg
     \parfillskip -\rightskip
     \parindent \cftsubfigindent\relax\@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \@tempdima \cftsubfignumwidth\relax
     \let\@cftbsnum \cftsubfigpresnum
     \let\@cftasnum \cftsubfigaftersnum
     \let\@cftasnumb \cftsubfigaftersnumb
     \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
     {\cftsubfigfont #1}\nobreak
     \cftsubfigfillnum{#2}}%
  \fi
  }%
\newlength\cftbeforesubfigskip
  \setlength\cftbeforesubfigskip{\z@ \@plus.2\p@}
\newlength\cftsubfigindent
  \setlength\cftsubfigindent{3.8em}
\newlength\cftsubfignumwidth
  \setlength\cftsubfignumwidth{2.5em}
\renewcommand{\cftsubfigfillnum}[1]{%
  {\cftsubfigleader\hfill}\par
}
\makeatother

\begin{document}

\listoffigures

\begin{figure}
\begin{subfigure}{.5\linewidth}
\centering
A
\caption{test subfigure A}
\label{sfig:testa}
\end{subfigure}%
\begin{subfigure}{.5\linewidth}
\centering
B
\caption{test subfigure B}
\label{sfig:testb}
\end{subfigure}
\caption{Test figure}
\label{fig:testa}
\end{figure}

\begin{figure}
\begin{subfigure}{.5\linewidth}
\centering
C
\caption{test subfigure C}
\label{sfig:testc}
\end{subfigure}%
\begin{subfigure}{.5\linewidth}
\centering
D
\caption{test subfigure D}
\label{sfig:testd}
\end{subfigure}
\caption{Test figure}
\label{fig:testb}
\end{figure}

\end{document}

在此处输入图片描述

答案2

如果您将该选项传递给该包,它tocloft可以提供一组有用的宏来调整子图的格式subfigure

在这种情况下,该包将假定您使用该subfigure包,并且计数器lofdepthlotdepth由子图包定义。

但是如果您想使用tocloft带有的包subcaption来代替subfigure所述计数器,则它们不是由tocloftnorsubcaption包创建的。

只需加载包并定义这些计数器即可使一切正常工作。

\usepackage{subcaption}
\usepackage[subfigure]{tocloft}
\newcounter{lofdepth}
\newcounter{lotdepth}

% here you have access to all tocloft subfig macro
\setlength{\cftsubfigindent}{01emem}
\setlength{\cftsubfignumwidth}{3em}
\renewcommand{\cftfigfont}{\sffamily}
\renewcommand{\cftfigpagefont}{\ttfamily}

相关内容