这个问题可以分为两部分:
- 修改目录以显示子部分
- 将未编号的章节格式化为与编号章节相同的字体,这是添加小型大写字母
第一部分很简单,必须在序言中添加两行
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
对于第二部分,我在这里找到了答案使用 classicthesis 将目录中的 chapter* 大写
问题是我无法让这些解决方案一起工作,我得到的输出是目录中显示的大写无数字章节和子小节,但这些也是无数字的。
我尝试切换线路\newenvironment{unnumbered}{\setcounter{secnumdepth}{-1}}{\setcounter{secnumdepth}{2}}
,\newenvironment{unnumbered}{\setcounter{secnumdepth}{-1}}{\setcounter{secnumdepth}{3}}
但没有什么效果。
此外,如果您对如何使目录中无编号章节文本与编号章节的首字母对齐有任何建议,那就太好了!
这是 MWE
\documentclass[oneside,letterpaper]{scrbook}
\usepackage{classicthesis}
\usepackage{lipsum} % for dummy text
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\newenvironment{unnumbered}%
{\setcounter{secnumdepth}{-1}}
{\setcounter{secnumdepth}{2}}
\begin{document}
\tableofcontents
\chapter{A regular chapter}
\lipsum
\section{section}
\subsection{subsection}
\subsubsection{subsubsection}
\begin{unnumbered}
\chapter{An unnumbered chapter}
\lipsum
\end{unnumbered}
\end{document}
提前致谢!
答案1
首先:包classicthesis
加载包titlesec
和tocloft
。不建议将这些包与 KOMA-Script 类一起使用。您将收到一堆警告,并且 KOMA-Script 选项将无法按预期工作。因此,也许您必须用scrbook
标准类替换book
。
%\documentclass[oneside,letterpaper]{scrbook}
\documentclass[oneside,letterpaper]{book}
\usepackage{classicthesis}
\usepackage{blindtext}% only for dummy text
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\newenvironment{unnumbered}%
{\setcounter{secnumdepth}{-1}}
{\setcounter{secnumdepth}{3}}
\renewcommand{\cftchapfont}{\spacedlowsmallcaps}% spaced small caps for all chapter entries
\makeatletter
% warning: redefinition of an undocumented internal command -> could break in the future
\def\ttl@addcontentsline#1#2{%
\addcontentsline{toc}{#1}{\ifttl@toclabel\ttl@a\else\numberline{}\fi#2}% indent unnumbered ToC entries too
\nobreak}
\makeatother
\begin{document}
\tableofcontents
\blinddocument
\begin{unnumbered}
\blinddocument
\end{unnumbered}
\blinddocument
\end{document}