该代码无法编译:
\documentclass[12pt,a4paper]{book}
\usepackage[]{classicthesis}
\usepackage{enumitem}
\begin{document}
\begin{description}
\item[hello] Hi
\item[what] why
\end{description}
\end{document}
以下是日志的相关部分:
!缺少数字,视为零。} l.8 \item[hello] Hi 这里应该有一个数字;我
0'. (If you can't figure out why I needed to see a number, look up
在 The TeXbook 索引中插入了“奇怪的错误”。)
以下代码可以编译,但不会出错:
\documentclass[12pt,a4paper]{book}
\usepackage[pdfspacing]{classicthesis}
\usepackage{enumitem}
\begin{document}
\begin{description}
\item[hello] Hi
\item[what] why
\end{description}
\end{document}
这是一个 classicthesis 错误吗?
我有 miktex-tex-bin 3.14159265 classicthesis 4.2 enumitem 3.5.2 koma-script 3.24
答案1
嗯,这实际上不是一个错误(尽管代码可以更好)只是两个包重新定义了同一件事(描述标签格式)并且相互绊倒。
classicthesis
定义描述标签格式
% descriptionlabels
\renewcommand{\descriptionlabel}[1]{%
\hspace*{\labelsep}\spacedlowsmallcaps{#1}} % spacedlowsmallcaps textit textsc
您的示例中的字符列表\spacedlowsmallcaps
来自哪里?soul
hello
但enumitem
在那时添加了格式化钩子(因为这是该包的设计目的),#1
所以
\enit@align {\enit@format {hello}}
因此当soul
尝试遍历它看到的每个标记\enit@align
而不是时h
。
该pdfspacing
选项告诉classicthesis
使用microtype
而不是soul
字母间距,这在这种情况下似乎是一个合理的解决方法。