我正在使用 scrreprt 文档类为我所在大学的学习课程撰写报告。在撰写附录时,我意识到 microtype 包与罗马页码结合使用似乎会导致错误(与使用大写或小写罗马数字无关)。将阿拉伯数字改为罗马数字后,无法再使用 \label{} 命令,否则会导致编译器崩溃。具体来说,如果我在章节或章节命令后添加标签,则会发生与 .tex 和 .aux 文件相关的不同错误。与 .tex 文件相关,我在其中使用标签命令,会产生以下错误:
\MT@res@a 的参数有一个额外的 }。\label{chapter:MyChapterName}
段落在 \MT@res@a 完成之前结束。\label{chapter:MyChapterName}
与 .aux 文件相关,报告了后续错误:
段落在 \@newl@bel 完成之前结束。...T1/LinuxBiolinumT-TLF/b/n/17.28 \def \par
额外},或被遗忘的\endgroup。.../LinuxBiolinumT-TLF/b/n/17.28 \def \par }
额外},或者被遗忘的\endgroup。......1{\fontencoding {T1}\selectfont
额外},或者被遗忘的\endgroup。...1][]\fontencoding {T1}\selectfont i}}}
由于 \MT@res@a 错误似乎与 microtype 的使用有关(我加载时没有任何选项),我尝试在不加载 microtype 的情况下进行编译。它工作正常。通过不将编号样式从阿拉伯语更改为罗马语或不使用标签命令,问题也得到了“解决”。在我看来,上述两种方法都不是很好的解决方法。我遇到的问题似乎也是由用户 cfr 报告的,他对以下内容发表了评论问题并提到了同样的事情问题。如果能与这位用户取得联系就好了,但是这里似乎没有直接留言功能(如果我错了请原谅我,我几个小时前才加入这个社区)。
关于这个问题,我还必须说明,我正在使用 utf-8 输入加密和 T1 字体加密。
我没有构建最小工作示例,但由于强烈建议讨论这个问题,我将尝试创建一个并重现错误。
此外,如果有助于理解问题,我可以提供完整的日志以及 TeXstudio 报告的 .aux 和 .tex 文件中的部分以产生命名的错误。
我期待您的评论/建议/解决方案。如果我没有完全遵守本论坛/社区的规则,在写上述问题时犯了一些形式上的错误,请您原谅。
诚挚的,P. Schweitzer
更新:最小工作示例
很抱歉一开始没有贴出最低限度的工作示例。无论如何,它在这里:
\documentclass{scrreprt}
\usepackage{scrlayer-scrpage} % I left the scrlayer-scrpage package in place to show pagenumbering, deleting does not affect the error
\usepackage[greek,ngerman]{babel} % by deleting the greek option, the error is solved
\usepackage{microtype} % by commenting this command out, the error is solved
\usepackage{cleveref} % by commenting this command out, the error is solved
\cfoot{\pagemark} % I left the pagemark command in place to show pagenumbering, deleting does not effect the error
\begin{document}
\clearpage
\pagenumbering{Roman}
\chapter{Abstract}
\label{chapter:abstract} % by commenting all labels in Roman or roman numbered sections/chapters out, the error is solved
\clearpage
\pagenumbering{arabic}
\chapter{Mainpart}
\label{chapter:mainpart}
\section{Test2}
\label{sec:test2}
\appendix
\clearpage
\pagenumbering{roman}
\chapter{Appendix}
\label{chapter:appendix}
\section{Test3}
\label{sec:test3} % by commenting all labels in Roman or roman numbered sections/chapters out, the error is solved
\end{document}
请注意:我评论了更改,如果应用这些更改,问题就会解决。特别是我注意到,如果我禁用 cleveref 包,错误也会消失,这是我以前没有意识到的。此外,禁用 babel 的 greek 选项也可以解决错误。尽管如此,我尤其需要 greek 选项,因为我正在写一份科学报告,其中大量使用希腊字母。此外,为了使代码在编译器“失败”运行后正常工作,您始终必须删除 .aux 文件。否则,即使您在代码中技术上解决了该问题,错误仍然存在。
如果您知道这个错误来自哪里以及如何“正确”地解决它,我会很高兴阅读您的建议!
感谢您的支持。诚挚的,P. Schweitzer
答案1
不幸的是,babel-greek
重新定义内部宏\@Roman
使得\@roman
它们基本上无法使用。
他们的想法是,当使用希腊数字时,罗马数字的页码也会正确显示,有时它可以正常工作,但在microtype
需要执行其工作时则不行。
\pageref
解决方法是确保使用默认输出编码打印页码并恢复标准定义。不过,如果您在希腊语环境中这样做,则应小心谨慎。
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[greek,ngerman]{babel}
\usepackage{scrlayer-scrpage}
\usepackage{microtype}
\usepackage{cleveref}
% restore the kernel definitions
\makeatletter
\def\@Roman#1{\expandafter\@slowromancap\romannumeral#1@}
\def\@roman#1{\romannumeral#1}
\makeatother
\edef\documentencodingdefault{\encodingdefault}
\cfoot{\fontencoding{\documentencodingdefault}\selectfont\pagemark}
\begin{document}
\pagenumbering{Roman}
\chapter{Abstract}
\label{chapter:abstract}
\clearpage
\pagenumbering{arabic}
\chapter{Mainpart}
\label{chapter:mainpart}
\section{Test2}
\label{sec:test2}
\clearpage
\appendix
\pagenumbering{roman}
\chapter{Appendix}
\label{chapter:appendix}
\section{Test3}
\label{sec:test3}
\end{document}