同时latex
我还使用了subcaption
子图包。我在某些术语的标题中使用了不同的字体样式(如斜体、粗体、无衬线)。这些字体样式也用于图列表。
现在我的问题是,是否有任何方法可以自动覆盖图形列表的所有字体样式(无需使用\caption[without style]{with style}
)。在图形列表中,只能使用一种字体。
我还有一个问题:如何减少图形列表中数字(a,b,...)和子图标题之间的间距?
答案1
有一种可能性是:将\let
您不想使用的字体属性放在列表里,例如\rmfamily
(对于字体开关)或\textrm
(对于带有一个参数的字体命令);这样\AtBeginDocument
做的目的是\addtocontents{lof}{...}
使重新定义只对 LoF 有效。
要更改 LoF 中子图的数字/字母和标题之间的分隔,您需要重新定义\l@subsubsection
(对于article
)或\l@subsection
(对于book
,report
);必须进行此重新定义前加载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}
答案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}
感谢 Gonzalo 提供的示例文档。