内容行示例

内容行示例

我想了解如何使用命令 contentline;为此我编写了代码:

\documentclass{article}
\usepackage[utf8]{inputenc}


\begin{document}

\maketitle

\tableofcontents
\clearpage

\section{Paragrafo 1}
Questo è il paragrafo 1

\subsection{Sottoparagrafo 1.1}
Questo è il sottoparagrafo 1.1

\contentsline{chapter}{Prefazione}{2}

\section{Paragrafo 2}
Questo è il paragrafo 2

\end{document}

结果很奇怪:contentsline 对目录没有影响。你能给我展示一个使用 contentline 的示例吗?

答案1

如果您想在章节级别向目录添加特定条目,则应\addcontentsline{toc}{chapter}{Prefazione}在示例中使用。页面将是当前页面(因此此宏在该页面上执行)。您可以使用向目录添加任意内容\addtocontents(主要用于格式化说明)。

要添加具有强制页码的特定条目,您可以使用\addtocontents{toc}{\string\contentsline{section}{Foobar}{100}}。不要chapter在这里使用,因为article没有这个层,并且会导致错误。

\contentsline宏在内部用于排版目录的每个条目。它被定义为调用宏\l@#1(用 构建\csname l@#1\endcsname),因此如果\contentsline{chapter}遇到 ,\l@chapter就会调用该宏。这个宏会抓取 的其他两个参数\contentsline并排版章节条目。

article但是,宏中\l@chapter没有定义,因此您\contentsline{chapter}将调用\relax(因为每个未定义的宏名称都使用\csnameequals a构建\relax)。因此,您指定的其他两个参数只是排版,因为它们实际上从未被抓取。

答案2

\contentsline不应该直接在文档中使用。LaTeX 的职责是将此类宏与适当的参数一起写入.toc文件或其他辅助文件中,以用于各种列表。

该指令为\addcontentsline,它通常隐含在宏中,例如\chapter、、\section其他分段命令和\caption

如果你\addcontentsline{<file>}{<level>}{<text>}的文档中有,LaTeX 将在相应的文件中写入以下格式的行

\contentsline{<level>}{<text>}{<page>}

可以<type>toc或(目录、图表列表或表格列表),并且对应于辅助文件的扩展名。请注意,页码将自动提供,因为写入操作是在页面被发送时执行的,此时页码是精确已知的。其他lof类型可能可用,具体取决于所使用的包或文档中新列表的定义(首选包是)。lot<file>newfloat

还有\addtocontents{<type>}{<text>},它会将原始数据写入<text>相应的文件,但这需要精确了解该文件随后如何使用。

还应该记住,它<text>会进行扩展,因此\protect如果某些宏在写入之前不需要扩展,就应该使用它。

文档类(或定义新列表的包)的职责是定义以下工作方式\contentsline:默认情况下,

\contentsline{<level>}{<text>}{<page>}

将转变为

\l@<level>{<text>}{<page>}

例如,\contentsline{chapter}{Prefazione}{2}将成为\l@chapter{Prefazione}{2}并且宏\l@chapter应该由文档类定义(它不在中article)。

请注意hyperref更改\addcontentsline\contentsline添加更多参数以实现超链接的目的。

相关内容