Titlesec 和 xcolor 运行不正常?

Titlesec 和 xcolor 运行不正常?

我正在尝试将titlesecxcolor包一起使用(嗯,实际上,tufte-book类是,但那是另一个故事。)

这是一个最小的 LaTeX 文件,可以说明我的问题:

\documentclass{book}
\usepackage{titlesec}
\usepackage[usenames]{xcolor}
\usepackage{textcase}
\titleformat{\part}[block]{}{\thepart}{1em}{\textcolor{darkgray}\MakeTextUppercase}
\begin{document}
\part{A Tale of Two Cities}
\end{document}

第 5 个参数\titleformat应该将节标题作为参数添加到最后一个命令,因此它应该以 结尾\MakeTextUppercase{A Tale of Two Cities}。但是在此文件上运行 LaTeX 会产生以下输出:

!\MakeTextUppercase 的参数有一个额外的 }。
参数失控?
!段落在 \MakeTextUppercase 完成之前结束。

但是,如果我删除,\textcolor{darkgray}那么一切都会按预期进行。此外,如果我在和\\之间插入,那么一切也会按预期进行。但如果我把 放在之前,则不会。\textcolor{darkgray}\MakeTextUppercase\\\textcolor{darkgray}

谁能解释一下这里发生了什么?

答案1

\textcolor需要两个参数,并且您的代码中第一个参数是darkgray,第二个参数是\MakeTextUppercase,这是错误的。

但是,标题是成组排版的,因此

\titleformat{\part}[block]{}{\thepart}{1em}{\color{darkgray}\MakeTextUppercase}

就可以了(并且可能您还想将颜色应用到\thepart)。

相关内容