我正在尝试将titlesec
和xcolor
包一起使用(嗯,实际上,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
)。