隐藏目录中的章节名称

隐藏目录中的章节名称

我正在尝试拥有如下目录:

Name of part
Name of Chapter
  Section 1 ..... page
  Section 2 ..... page

我不希望该部分的名称出现在目录中的任何地方。我希望它被隐藏。

我尝试过\l@section这样重新定义

\let\latexl@section\l@section
\def\l@section#1#2{\begingroup\numberline{#1}\latexl@section{}{#2}\endgroup}

但问题似乎是 \section 调用 addtocontents 并将行号和行名信息打包到同一个 numberline 调用中...有人有什么想法吗?

答案1

如果我理解正确的话,您已经创建了将“section”作为目录条目前缀的代码。要隐藏某个部分的列表标题并且只显示“section”前缀和数字,您可以将指令\null作为宏的可选参数提供\section,如下例所示。请注意,我没有提供任何代码来为示例中的字符串“Section”添加前缀。

在此处输入图片描述

\documentclass{article}
\begin{document}
\tableofcontents
\section{First section}
\section[\null]{Second section}
\end{document}

答案2

这里有一个方法,它定义了一个替代\tableofcontents命令,称为\tableofcontentsssn(具有单独章节编号的目录),因此,如果您愿意,您可以在同一个文档中同时使用两种目录样式。您可以配置\lssn@section等以分别显示编号和名称;它们采用三个参数,即章节编号、章节名称和页码。部分的工作方式不同,因为\l@part在下一个中硬编码部分编号而不是使用\numberline,因此第一个参数\lssn@section始终为空。

如果您想重新定义而不是使用替代命令,那么重要的是在处理 toc 条目时\tableofcontents更改定义。\contentsline

我只用类测试了此代码report。考虑到我使用了一些卑鄙的伎俩,它可能会在某些类或包中失败。仅仅包括它titlesec不会破坏它,但我没有进一步测试它。

\documentclass{report}
\makeatletter

%% \tableofcontentsssn and supporting commands
\newcommand{\contentsline@ssn}[2]{%
  \contentsline@ssn@{#1}#2\endcontentsline%
}
\def\contentsline@ssn@#1{%
  \expandafter\def\expandafter\contentsline@ssn@command\expandafter{\csname lssn@#1\endcsname}%
  \futurelet\contentsline@ssn@next\contentsline@ssn@@%
}
\def\contentsline@ssn@@{%
  \ifx\contentsline@ssn@next\numberline%
    \expandafter\contentsline@ssn@numberline%
  \else%
    \expandafter\contentsline@ssn@classic%
  \fi
}
\def\contentsline@ssn@numberline\numberline#1#2\endcontentsline{%
  \contentsline@ssn@command{#1}{#2}%
}
\def\contentsline@ssn@classic#1\endcontentsline{\contentsline@ssn@command{}{#1}}
\newcommand{\tableofcontentsssn}{%
  \begingroup%
  %\@fileswfalse % if you want the next \tableofcontents to show the same contents
  \let\contentsline\contentsline@ssn%
  \tableofcontents%
  \endgroup%
}

%% Formatting for \tableofcontentsssn entries
\newcommand*{\lssn@part}[3]{\l@part{#2}{}}
\newcommand*{\lssn@chapter}[3]{\l@chapter{\numberline{#1}#2}{}}
\newcommand*{\lssn@section}[2]{\l@section{Section \numberline{#1}}}
\newcommand*{\lssn@subsection}[2]{\l@section{Subsection \numberline{#1}}}
\newcommand*{\lssn@subsubsection}[2]{\l@section{Subsubsection \numberline{#1}}}
\newcommand*{\lssn@paragraph}[2]{\l@section{Paragraph \numberline{#1}}}
\newcommand*{\lssn@subparagraph}[2]{\l@section{Subparagraph \numberline{#1}}}

\makeatother
\begin{document}
\tableofcontentsssn
\part{Party of the first part}
\chapter{Name of chapter}
\section{First}
\section{Second}
\end{document}

相关内容