\addtocontent 和 \addcontentsline 的问题

\addtocontent 和 \addcontentsline 的问题

我正在尝试在图表列表和表格列表中添加标题。我在这里找到了解决方案:

是否在带有 titletoc 的图表列表中包含章节?

然而,这看起来相当复杂,经过进一步的谷歌搜索后,我找到了这个网页:

http://www.personal.ceu.hu/tex/toc.htm

演示了如何使用 1 个命令向 toc、lof 和 lot 添加一行。这似乎是我的解决方案,但是当我添加以下行时:

\addtocontents{lof}{Heading}

我收到一条错误消息:!LaTeX 错误:出现问题 - 也许缺少 \item。

我通过 Google 搜索并找到了这个网页,它显示了该问题的解决方案:

https://groups.google.com/forum/?fromgroups=#!topic/comp.text.tex/2IE68-IJJ6U

我尝试了不同的方法,例如:

\addtocontents{lof}{\protect\contentsline{chapter}{Heading 1}{}}
\addtocontents{lof}{\protect\contentsline{figure}{Heading 2}{}}

\addcontentsline{lof}{chapter}{\protect\numberline{}{Heading 3}}
\addcontentsline{lof}{figure}{\protect\numberline{}{Heading 4}}

最接近我想要的是第一个命令...{Heading 1} 但是,使用这个命令 latex 会添加一个额外的行或额外的垂直空间,以便在 lof 中的 Heading 1 之后有一个新行。

可以使用以下方法修复此问题:

\addtocontents{lof}{\textbf{Heading}}

但是,正如已经写过的,这会导致错误。我不明白为什么这个简单的命令会导致错误,尽管我很确定我的语法是正确的。

为了澄清我希望如何实现这一点,lof这里有一个简短的例子:

\textbf{1 Chapter}
          1.1 Figure 1
          1.2 Figure 2

\textbf{2 Chapter}
          2.1 Figure 3
          2.2 Figure 4

有人可以帮忙吗?

这是我的工作示例:

\documentclass[10pt,DIV=12,a4paper,numbers=noenddot]{scrreprt}
\begin{document}

\tableofcontents
\listoffigures

% 
\addtocontents{lof}{\protect\contentsline{figure}{Heading 1}{}}
\addcontentsline{lof}{chapter}{\protect\numberline{}{Heading 2}}
\addcontentsline{lof}{figure}{\protect\numberline{}{Heading 3}}

% Closest to what I would prefer
\addtocontents{lof}{\textbf{Heading 4}\protect\par}
\addtocontents{lof}{\protect\contentsline{chapter}{Heading 5}{}}

\chapter{Introduction}
\section{s1}

\begin{figure}
\caption{figure 1}
\end{figure}

\begin{figure}
\caption{figure 2}
\end{figure}

\section{s2}

\chapter{Content}
\section{c1}
\section{c2}

\end{document}

我基本上希望 lof 看起来像目录。在“1 简介”和“2 内容”之后没有换行符。我还刚刚意识到“标题 4”和“标题 5”的字体看起来不同。所以我想我更喜欢“标题 5”的字体,我认为它是目录中使用的字体。所以如果后面没有换行符,“标题 5”将是完美的。是否有可能以某种方式隐藏这个换行符?

答案1

链接问题的答案提供了自动化解决方案;如果您出于某种原因决定手动执行此操作(这可能会导致问题:例如,如果章节中没有图形,自动化解决方案将不会添加标题,并且您可以手动忽略这一点),您可以按照下面的示例进行操作。

使用变体Martin Scharrer's answer带有条目附加说明的目录中,我定义了一个\headinginfo命令,它在 LoF 中排版其强制参数,使用与 ToC 中的章节条目相同的格式(因为使用了 KOMA 类,所以可以使用 轻松实现\usekomafont{disposition});该\headinginfo命令必须在figure章节的第一个环境之前使用(我建议在相应的 之后立即使用\chapter):

\documentclass{scrreprt}

\makeatletter
% A modification of the kernel's \@dottedtocline,
% suppressing the leaders (dots) and page number
% A variation of Martin Scharrer's answer:
% https://tex.stackexchange.com/a/10189
\def\@nodottedtocline#1#2#3#4#5{%
    \vskip \z@ \@plus.2\p@
    {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
     \parindent #2\relax\@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \@tempdima #3\relax
     \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
     {#4}\hfill\null\par}}
\newcommand*\l@heading{\@nodottedtocline{0}{0em}{0em}}
\makeatother
\newcommand\headinginfo[1]{%
  \addcontentsline{lof}{heading}{{\usekomafont{disposition}#1}}%
  \addtocontents{lof}{\vspace{5pt}}}

\begin{document}
\listoffigures

\chapter{Test Chapter One}
\headinginfo{Some Text for Chapter One}
\begin{figure}
\centering
A
\caption{A test figure}
\end{figure}
\begin{figure}
\centering
B
\caption{Another test figure}
\end{figure}

\chapter{Test Chapter Two}
\headinginfo{Some Text for Chapter Two}
\begin{figure}
\centering
C
\caption{A test figure}
\end{figure}
\begin{figure}
\centering
D
\caption{Another test figure}
\end{figure}

\end{document}

在此处输入图片描述

相关内容