请在下面找到一个可以说明这个问题的最小例子。
问题是这样的:
- 附录章节只有一个,分为几个段落。这些段落应该出现在详细目录中(使用 shorttoc 包实现),但不会出现在简短目录中。
- 在详细的目录中,附录段落(但只有附录(!!)段落)应作为章节出现,这意味着它们旨在与目录中其余部分的章节对齐在同一级别。
最小示例中显示的解决方案源自我在此处发布的两个相关问题的答案。然而,仍有一个问题尚未解决:
在下面给出的代码中,我如何实现附录部分(=段落)不出现在简短的目录中(目前它们确实出现在简短的目录中,因为段落实际上是经过修改的部分,因此它们看起来像段落)?
我在网上找到了几个相关问题,但最终它们都相当于从目录中删除了某些部分(请参阅我代码中注释掉的部分)。这当然会导致它们也不会出现在详细目录中,因为详细目录从 .toc 文件中获取数据...
我希望我说清楚了问题是什么!?在我看来这是一个相当棘手的问题!
\documentclass[10pt, a4paper]{report}
\usepackage[titletoc]{appendix}
\usepackage{titlesec}
\usepackage{titletoc}
\usepackage{shorttoc}
\usepackage{hyperref}
%\newcommand{\nocontentsline}[3]{}
%\newcommand{\tocless}[2]{\bgroup\let\addcontentsline=\nocontentsline#1{#2}\egroup}
\begin{document}
\setcounter{secnumdepth}{3}
\renewcommand*\contentsname{Contents (detailed)}
\pdfbookmark[1]{Contents}{toc}
\shorttoc{Contents}{1}
\cleardoublepage
\setcounter{tocdepth}{4}
\renewcommand*\contentsname{Contents (detailed)}
\pdfbookmark[1]{Contents (detailed)}{toc (detailed)}
\tableofcontents
\chapter{Test Chapter}
\section{Test Section}
\subsection{Test Subsection}
\subsubsection{Test Subsubsection}
\paragraph{Test Paragraph}
\begin{appendices}
\renewcommand\thechapter{}
\chapter{Test Appendix}
\titleformat{\section}[runin]
{\normalfont\normalsize\bfseries}{}{1em}{}
\titlespacing*{\section}
{0pt}{3.25ex plus 1ex minus .2ex}{1em}
\titlecontents{section}[1.5em]
{}{}{}{\titlerule*[7.5pt]{.}\contentspage}
%\tocless\section{Test Section One}
\section{First section looking like a paragraph}
%\tocless\section{Test Section Two}
\section{Second section looking like a paragraph}
\end{appendices}
\end{document}
答案1
可能不是最优雅的方式:
创建一个新的布尔开关
shorttoc
,使用
etoolbox
包来修补\@startshorttoc
宏,以便shorttoc
将开关设置为true
(组内),在附录的开始处,向文件中添加一行,如果开关为,则将计数器
.toc
设置tocdepth
为 0 。shorttoc
true
\documentclass[10pt, a4paper]{report}
\usepackage[titletoc]{appendix}
\usepackage{titlesec}
\usepackage{titletoc}
\usepackage{shorttoc}
\usepackage{hyperref}
%\newcommand{\nocontentsline}[3]{}
%\newcommand{\tocless}[2]{\bgroup\let\addcontentsline=\nocontentsline#1{#2}\egroup}
\usepackage{etoolbox}
\newbool{shorttoc}
\makeatletter
\patchcmd{\@startshorttoc}{\bgroup}{\bgroup\booltrue{shorttoc}}{}{}
\makeatother
\begin{document}
\setcounter{secnumdepth}{3}
\renewcommand*\contentsname{Contents (detailed)}
\pdfbookmark[1]{Contents}{toc}
\shorttoc{Contents}{1}
\cleardoublepage
\setcounter{tocdepth}{4}
\renewcommand*\contentsname{Contents (detailed)}
\pdfbookmark[1]{Contents (detailed)}{toc (detailed)}
\tableofcontents
\chapter{Test Chapter}
\section{Test Section}
\subsection{Test Subsection}
\subsubsection{Test Subsubsection}
\paragraph{Test Paragraph}
\begin{appendices}
\addtocontents{toc}{\protect\ifbool{shorttoc}{\setcounter{tocdepth}{0}}{}}
\renewcommand\thechapter{}
\chapter{Test Appendix}
\titleformat{\section}[runin]
{\normalfont\normalsize\bfseries}{}{1em}{}
\titlespacing*{\section}
{0pt}{3.25ex plus 1ex minus .2ex}{1em}
\titlecontents{section}[1.5em]
{}{}{}{\titlerule*[7.5pt]{.}\contentspage}
%\tocless\section{Test Section One}
\section{First section looking like a paragraph}
%\tocless\section{Test Section Two}
\section{Second section looking like a paragraph}
\end{appendices}
\end{document}