titlesec 包不允许扩展 \titleformat 中的 #1 {在最新版本的 texlive 2021 中

titlesec 包不允许扩展 \titleformat 中的 #1 {在最新版本的 texlive 2021 中

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}

和所有的作品。

相关内容