删除图形列表中的字体样式

删除图形列表中的字体样式

同时latex我还使用了subcaption子图包。我在某些术语的标题中使用了不同的字体样式(如斜体、粗体、无衬线)。这些字体样式也用于图列表。

现在我的问题是,是否有任何方法可以自动覆盖图形列表的所有字体样式(无需使用\caption[without style]{with style})。在图形列表中,只能使用一种字体。

我还有一个问题:如何减少图形列表中数字(a,b,...)和子图标题之间的间距?

答案1

有一种可能性是:将\let您不想使用的字体属性放在列表里,例如\rmfamily(对于字体开关)或\textrm(对于带有一个参数的字体命令);这样\AtBeginDocument做的目的是\addtocontents{lof}{...}使重新定义只对 LoF 有效。

要更改 LoF 中子图的数字/字母和标题之间的分隔,您需要重新定义\l@subsubsection(对于article)或\l@subsection(对于bookreport);必须进行此重新定义加载subcaption;然后,如果您愿意,您可以再次重新定义它,以恢复其对 ToC 的原始含义。

\documentclass{article}
\makeatletter
\renewcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{2em}}
\makeatother
\usepackage{subcaption}

\captionsetup[subfigure]{list=true}

\makeatletter
\AtBeginDocument{
  \addtocontents{lof}{%
    \let\sffamily\rmfamily
    \let\scshape\rmfamily
    \let\textbf\textrm
    \let\textit\textrm
  }
}
\renewcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
\makeatother

\begin{document}

\tableofcontents
\listoffigures

\section{Test section}
\subsection{Test section}
\subsubsection{Test section}

\begin{figure}[!ht]
\centering
\begin{subfigure}{.5\linewidth}
\centering
A
\caption{{\scshape test} \textbf{subfigure}}
\end{subfigure}%
\begin{subfigure}{.5\linewidth}
\centering
B
\caption{another {\sffamily test} \textit{subfigure}}
\end{subfigure}
\caption{A figure with subfigures}
\end{figure}

\end{document}

enter image description here

答案2

您可以定义一个条件命令,该命令应用或不应用作为其参数给出的格式;该条件在图列表的开头设置为 false,在其结尾设置为 true。

无论如何,不​​带前缀的格式化命令\maybe都将被遵守。

\documentclass{article}

\usepackage{subcaption}

\captionsetup[subfigure]{list=true}

\AtBeginDocument{\addtocontents{lof}{\protect\formatfalse}}
\AtEndDocument{\addtocontents{lof}{\protect\formattrue}}
\newif\ifformat
\formattrue
\makeatletter
\DeclareRobustCommand{\maybe}[1]{%
  \ifformat
    \expandafter#1%
  \else
    \expandafter\@firstofone
  \fi
}
\makeatother

\begin{document}

\tableofcontents
\listoffigures

\section{Test section}
\subsection{Test section}
\subsubsection{Test section}

\begin{figure}[!ht]
\centering
\begin{subfigure}{.5\linewidth}
\centering
A
\caption{\maybe\textsc{test} \maybe\textbf{subfigure}}
\end{subfigure}%
\begin{subfigure}{.5\linewidth}
\centering
B
\caption{another \maybe\textsf{test} \maybe\textit{subfigure}}
\end{subfigure}
\caption{A figure with subfigures}
\end{figure}

\end{document}

enter image description here

感谢 Gonzalo 提供的示例文档。

相关内容