titlecaps
我正在尝试使用以下命令格式化我的章节标题
\titleformat{\section}{\normalfont}{\thesection}{.5em}{%
\titlecap{#1}}
它适用于 texLive 2017。最近,我升级到了 TexLive2021(出于其他原因),现在任何\section
命令都失败了 Illegal parameter number in definition of \the@@@string.
日志文件显示第一个错误后的附加消息:
You meant to type ## instead of #, right?
Or maybe a } was forgotten somewhere earlier, and things
are all screwed up? I'm going to assume that you meant ##.
我认为这是因为没有正确扩展 #1 宏。有什么建议吗?MWE 关注
\documentclass{article} % documentclass for TR
\usepackage{titlesec}
\usepackage{titlecaps}
\titleformat{\section}{\bfseries}{\thesection}{.5em}{\normalfont\titlecap{#1}}
\listfiles
\begin{document}
Lorem
\section{my head}
citations
\end{document}
答案1
您的代码在我的计算机上安装的每个 TeX Live 版本(从 2012 到 2021)中都会产生错误。
该titlesec
包对此很清楚:要么使用选项explicit
(但这很少是必要的),要么使用标准功能,即最后一个强制参数中的最后一个标记\titleformat
将跟随
{<the current title>}
在使用点。因此,如果最后一个标记需要参数,它会找到它想要的内容。
\documentclass{article} % documentclass for TR
\usepackage{titlesec}
\usepackage{titlecaps}
\titleformat{\section}{\bfseries}{\thesection}{.5em}{\normalfont\titlecap}
\listfiles
\begin{document}
Lorem
\section{my head}
citations
\end{document}
答案2
好的,我找到了解决方案。该titlesec
包定义了一个选项explicit
,可以正确扩展 #1 宏。因此将上面的第 2 行更改为
\usepackage[explicit]{titlesec}
和所有的作品。