使用 babel 和 cleveref 会导致标题中出现不必要的水平空间

使用 babel 和 cleveref 会导致标题中出现不必要的水平空间

更新

该错误已在 0.18.9 版本中得到修复cleveref,目前已在 上发布ctan

问题

Babel并且cleveref当它们共享相同的语言选项时,似乎无法完美地协同工作。在 MWE 中,Some text\leftmark主文本中的输出应等于部分文字1章,但前面有一个额外的空格第一章。在标题中,这会导致其文本不与正文文本内联。有趣的是,当 babel 使用其他语言选项时,此问题就会消失,例如english。。

平均能量损失

\documentclass{scrbook}

\usepackage[spanish]{babel}
\usepackage[spanish]{cleveref}

\begin{document}
\chapter{Chapter}
\clearpage
\noindent Some text\leftmark
\end{document}

答案1

这是 中的一个错误cleveref。如果我将 的第 4516 行cleveref.sty

4516   \PackageInfo{cleveref}{loaded `spanish' language definitions}

进入

4516   \PackageInfo{cleveref}{loaded `spanish' language definitions}%

空间消失了。

这在所有其他语言中都很常见,并且需要修复错误。


作为临时的解决方法,你可以说

\documentclass{scrbook}

\usepackage[spanish]{babel}
\usepackage[spanish]{cleveref}

\usepackage{etoolbox}
\AtBeginDocument{
  \patchcmd{\extrasspanish}
    {\PackageInfo {cleveref}{loaded `spanish' language definitions} }
    {\PackageInfo {cleveref}{loaded `spanish' language definitions}}
    {}{}
}

\begin{document}

\chapter{Chapter}
\clearpage

\noindent Some text\leftmark

\end{document}

非常小的例子

\documentclass{article}

\usepackage[spanish]{babel}
\usepackage[spanish]{cleveref}

\begin{document}
X\foreignlanguage{spanish}{X}X
\end{document}

未经校正的输出为

十 十

经过修正后

XXX

相关内容