如何使用 memoir pagestyle{headings} 和 babel 使章节编号在各个部分中起作用?

如何使用 memoir pagestyle{headings} 和 babel 使章节编号在各个部分中起作用?

我遇到了一个非常奇怪的行为,我设法将其归结为这个最小的例子。这可能是 memoir 或 babel 开发人员的错误报告(应该发送到哪里?)但我认为我应该在这里询问是否有人可以帮助我让它工作。问题可以在生成的文档的第五页中看到:

?? 在标题中

我原本以为是“关于第 1 章”,但得到的却是“关于第 ??”。如果我删除 babel 包,它似乎可以工作……但我需要它。还有其他解决方案吗?

\documentclass{memoir} 
\usepackage[greek, english]{babel}
\usepackage{lipsum}

\begin{document} 
\pagestyle{headings} 
\chapter{Lorem} 
\label{one}
\lipsum[1-5]

\chapter{Comments} 
\lipsum[1-3] 
\section{Regarding chapter~\ref{one}}
\lipsum[1-5]

\end{document}

答案1

如果你查看控制台日志,你会发现报告的错误是标签ONE未定义。但你的标签是one。这表明问题在于\MakeUppercase在解析引用之前,标签正在被转换为或其等效项。部分解决方案是将引用包装在中\lowercase,或将标签全部大写。在下面的例子中,我选择了后者。

\documentclass{memoir} 

\usepackage[greek, english]{babel}
\usepackage{lipsum}

\begin{document} 
\pagestyle{headings} 
\chapter{Lorem} 
\label{ONE} % make label uppercase
\lipsum[1-5]

\chapter{Comments} 
\lipsum[1-3] 
\section{Regarding chapter~\ref{ONE}}
\lipsum[1-5]

\end{document}

答案2

这是由于使用大写标题的方式造成的,它会影响引用。一个简单的解决方法是使用大写字母标签进行交叉引用,因为您知道它们将用于大写文本。如果您\label{ONE}稍后写下,您就会看到它

\section{Regarding chapter~\ref{ONE}}

当然可以修复。不过我建议不要使用全大写文本,而是使用示例\scshape

相关内容