期望结果:
\documentclass{scrbook}
\usepackage{classicthesis}
%\usepackage{arsclassica}
\begin{document}
\tableofcontents
\setcounter{chapter}{10}
\chapter{Some chapter}
\section{Some section}
\end{document}
在以下示例中,目录中的章节编号与章节标题太接近(由于microtype
的跟踪):
\documentclass{scrbook}
\usepackage{classicthesis}
%\usepackage{arsclassica}
\microtypesetup{tracking=true}
\begin{document}
\tableofcontents
\setcounter{chapter}{10}
\chapter{Some chapter}
\section{Some section}
\end{document}
同样适用于章节和部分 ToC 条目,类似示例不包含跟踪:
\documentclass{scrbook}
\usepackage{classicthesis}
%\usepackage{arsclassica}
\begin{document}
\tableofcontents
\setcounter{chapter}{100}
\chapter{Some chapter}
\section{Some section}
\end{document}
此外,当classicthesis
更改为时arsclassica
,会观察到另一个奇怪的行为——第一个 ToC 字符的字体不一致:
\documentclass{scrbook}
%\usepackage{classicthesis}
\usepackage{arsclassica}
\begin{document}
\tableofcontents
\setcounter{chapter}{10}
\chapter{Some chapter}
\section{Some section}
\end{document}
如何在不放弃microtype
跟踪的情况下获得目录中章节/部分/...字段(框?)的足够宽度,同时还可能消除字体不一致的问题arsclassica
?
答案1
请注意,的作者 André Miedeclassicthesis
在文档:
第 6 页:作为一项新功能,Lorenzo Pantieri
arsclassica
也可用。由于 Lorenzo 的软件包已停用,经他的许可,classicthesis-arsclassica.sty
现在已成为此处的一部分classicthesis
并将在此处维护。
所以你现在可以写
\usepackage[style=arsclassica]{classicthesis}
访问arsclassica
样式。
字体不一致是由于classicthesis
的实现造成的
目录是通过tocloft
包定制的。特别是,章节编号受以下行的影响:classicthesis.sty
:
% from `classicthesis'
\renewcommand{\cftchappresnum}{\spacedlowsmallcaps}%
其中\spacedlowsmallcaps
定义为
% from `classicthesis'
% engine-dependent letterspacing
% if engine = pdfLaTeX, then
\DeclareRobustCommand{\spacedlowsmallcaps}[1]{\textls[80]{\ct@caps\MakeTextLowercase{#1}}}
% if engine = XeLaTeX, then
\DeclareRobustCommand{\spacedlowsmallcaps}[1]{{\addfontfeatures{LetterSpace=14.0}\ct@caps\MakeTextLowercase{#1}}}% WordSpace=1.8
tocloft
这与重新定义的交互确实很差\numberline
:
% from `tocloft'
\let\@cftbsnum \cftchappresnum
...
\renewcommand{\numberline}[1]{%
\hb@xt@\@tempdima{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb}
现在应该清楚的是在宏扩展期间,只有最左边的字符 #1
被抓取 \spacedlowsmallcaps
。因此当样式\ct@altfont
变成时,只有第一个数字变成无衬线。\sffamily
arsclassica
一个快速的解决方法是\numberline
通过将其 #1
放入一对中 来重新定义{}
:
\documentclass{scrbook}
\usepackage[style=arsclassica]{classicthesis}
% redefine \numberline again
\makeatletter
\renewcommand{\numberline}[1]{%
\hb@xt@\@tempdima{\@cftbsnum{#1}\@cftasnum\hfil}\@cftasnumb}
\makeatother
\begin{document}
\tableofcontents
\setcounter{chapter}{14}% changed for illustration
\chapter{Some chapter}
\section{Some section}
\end{document}
这肯定是一个错误,我将报告此问题André Miede 的网站。
目录中章节号后的额外空间
已编辑:\microtypesetup{tracking=true}
不建议书写!该classicthesis
包有自己的引擎相关方法来处理字母间距。这是由 \spacedallcaps
和 实现的\spacedlowsmallcaps
实现的。简而言之,包裹已使用追踪。
追踪是为了增加小写字母之间的间距。因此,章节号后面的空间很窄是可以预料的。同样,快速阅读完classicthesis
文档, 我们发现:
第 7 页:
manychapters
: 如果您的文档需要超过九个章节,您可能对目录中章节号和章节标题之间的间距不满意……
然而,简单地写作
\usepackage[manychapters]{classicthesis}
并不令人满意。因此我们可以借鉴和修改classicthesis.sty
:
\documentclass{scrbook}
\usepackage{classicthesis}
\settowidth{\newchnumberwidth}{00} % <--- tweak here if more space required
\addtolength{\cftchapnumwidth}{\newchnumberwidth}%
\addtolength{\cftsecnumwidth}{\newchnumberwidth}
\addtolength{\cftsecindent}{\newchnumberwidth}
\addtolength{\cftsubsecnumwidth}{\newchnumberwidth}
\addtolength{\cftsubsecindent}{2\newchnumberwidth}
\addtolength{\cftsubsubsecnumwidth}{\newchnumberwidth}
\begin{document}
\tableofcontents
\setcounter{chapter}{100}
\chapter{Some chapter}
\section{Some section}
\end{document}
答案2
也许以下内容有帮助:
\documentclass{scrbook}
%\usepackage{classicthesis}
\usepackage{arsclassica}
\renewcommand{\cftchappresnum}{\scshape\MakeTextLowercase}
\microtypesetup{tracking=true}
\settowidth{\newchnumberwidth}{\cftchappresnum 99}
\addtolength{\cftchapnumwidth}{\newchnumberwidth}%
\addtolength{\cftsecnumwidth}{\newchnumberwidth}
\addtolength{\cftsecindent}{\newchnumberwidth}
\addtolength{\cftsubsecnumwidth}{\newchnumberwidth}
\addtolength{\cftsubsecindent}{2\newchnumberwidth}
\addtolength{\cftsubsubsecnumwidth}{\newchnumberwidth}
\begin{document}
\tableofcontents
\setcounter{chapter}{100}
\chapter{Some chapter}
\section{Some section}
\end{document}