Titlesec 和 Babel 不兼容?

Titlesec 和 Babel 不兼容?

我找不到使用 Babel 更改章节样式的方法(针对匈牙利语)。以下是示例:

\documentclass[a4paper]{report}
\usepackage[magyar]{babel}
\usepackage{titlesec}

\titleformat{\chapter}[hang]
{\normalfont}
{\LARGE\thechapter.}
{10pt}
{\LARGE\MakeUppercase}
[\normalfont]
\titlespacing{\chapter}{0pt}{0pt}{30pt}[0pt]

\begin{document}
\chapter{First chapter}
\end{document}

如果我注释掉该\usepackage[magyar]{babel}行,一切都会按预期工作,但是,使用 babel 则不起作用。使用 babel 时是否可以设置章节(和部分等)的样式?

答案1

模块magyarbabel了很多事情\AtBeginDocument;除此之外(如埃格尔\chapter在他的评论中注意到),它恢复了after的含义\begin{document},但没有提供任何方法来覆盖这个选择。一种可能的解决方法是将\titleformat\titlespacing命令移到之后\begin{document}

\documentclass[a4paper]{report}
\usepackage[magyar]{babel}
\usepackage{titlesec}

\begin{document}

\titleformat{\chapter}[hang]
{\normalfont}
{\LARGE\thechapter.}
{10pt}
{\LARGE\MakeUppercase}
[\normalfont]
\titlespacing{\chapter}{0pt}{0pt}{30pt}[0pt]
\chapter{First chapter}

\end{document}

在此处输入图片描述

答案2

其实我已经找到了在包或类中解决这个问题的方法。使用\titleformatin\AtBeginDocument是没用的,但是etoolbox\AfterEndPreamble{}一个在 的最后运行的宏\begin{document}。把\titleformat它放进去就可以titlesec了。

相关内容