babel 的 tilesec 错误

babel 的 tilesec 错误
\documentclass[ukenglish,10pt,a4paper,openany]{book}  
\usepackage{babel}  
\usepackage[pagestyles]{titlesec}  
\titleformat{\chapter}{\normalfont\Large}{\thechapter}{12mm}{}[\titlerule]  
\titlespacing*{\chapter}{0pt}{6mm}{1cm}  
\titleformat{\section}{\normalfont\large}{\thesection}{8mm}{}  
\titlespacing*{\section}{0pt}{5mm}{5mm}  
\newpagestyle{main}{  
\sethead[\thepage][\chaptertitle][(\thesection] % even  
{\thesection)}{\sectiontitle}{\thepage}} % odd  
\begin{document}\pagestyle{main}  
\chapter{C1}  
\section{S1}  
\end{document}

生成

"The <format> argument cannot contain horizontal material such as text, \noindent, \makebox, etc." 

命令出现错误消息\chapter{C1},我不明白为什么。我遗漏了什么?

答案1

这是 LaTeX 内核 2019-10-01 更新中引入的一个错误。在此更新中,一些命令变得更加健壮,并且某些软件包(例如babel本例)尝试重新定义这些命令。如果这些重新定义没有考虑到新的健壮性,可能会发生不好的事情。

当前问题的出现是因为babel重新定义\markboth(没有考虑到它现在很强大),然后它错误地在章节标题中排版当前语言。titlesec不喜欢这样并引发您看到的错误。

该问题可以归结为:

\documentclass{article}
\usepackage{babel}
\usepackage{titleps}
\newpagestyle{main}{}
\begin{document}
\pagestyle{main}
\section{a}
\end{document}

该错误已修复。如果您遇到此问题,则需要更新babel

答案2

我尝试设置英语,成功了。尝试设置编码选项。

\documentclass[english,10pt,a4paper,openany]{book}
%--------------------------------------
%encoding
%--------------------------------------
\usepackage[utf8]{inputenc} %Allow to input letters of national alphabets directly from the keyboard.
\usepackage[T1]{fontenc} %choose a font encoding which has to support specific characters for Spanish language

\usepackage{babel}
\usepackage[pagestyles]{titlesec}
\titleformat{\chapter}{\normalfont\Large}{\thechapter}{12mm}{}[\titlerule]
\titlespacing*{\chapter}{0pt}{6mm}{1cm}
\titleformat{\section}{\normalfont\large}{\thesection}{8mm}{}
\titlespacing*{\section}{0pt}{5mm}{5mm}
\newpagestyle{main}{
\sethead[\thepage][\chaptertitle][(\thesection] % even
{\thesection)}{\sectiontitle}{\thepage}} % odd
\begin{document}\pagestyle{main}
\chapter{C1}
\section{S1}
\end{document}

相关内容