问题:
收到错误消息Undefined control sequence. (\end{document}..).
当我包含以下打印出格式化编程代码的代码时,会发生这种情况。如果我删除此代码,问题就会消失。
最小工作示例(MWE):
\documentclass{studentlitteratur}
\usepackage{lipsum}
\usepackage{listings}
\mdfdefinestyle{mdlistingstyle}{}
\mdtheorem[style=mdlistingstyle]{sourcecode}[chapter]{Kodexempel}
\begin{document}
\part{Title}
\begin{sourcecode}
\end{sourcecode}
\lipsum[1-3]
\begin{sourcecode}
\end{sourcecode}
\end{document}
.cls 内容可在此处获取: http://pastebin.com/w1HVnM9L
.sty 内容可在此处获取: http://pastebin.com/YGTedA7q
错误信息:
./studentlitteratur.tex:13: Undefined control sequence.
<argument> \protect \bbl@restore@actives delz
i\protect \hspace {0.5em} title
l.13 \end{document}
期望的结果:
删除错误信息并获取正确的代码。
答案1
MWE(感谢@TorbjørnT.)重现了您的错误:
\documentclass{memoir}
\usepackage{lipsum}
\usepackage[swedish]{babel}
\usepackage{listings}
\makeatletter
\makepsmarks{headings}{%
\def\partmark##1{\markboth{%
\partname~\thepart\hspace{0.5em} ##1}{}}%
}
\makeevenhead{headings}{\MakeLowercase{\leftmark}}{}{}
\pagestyle{headings}
\makeatother
\begin{document}
\part{Title}
\lipsum
\end{document}
你也是可以通过篡改从您的自定义文档类中勒索此内容。事实上,缩进的行几乎是逐字逐句地从中获取的。
有多种方法可以使该示例编译:
- 省略
babel
- 省略
listings
- 省略
~
- 省略
\MakeLowercase
使用具有完全相同行为的较短示例,可以在不同的、更简单的上下文中产生完全相同的错误:
\documentclass{standalone}
\usepackage[english]{babel} % the language is irrelevant
\usepackage{listings}
\begin{document}
\MakeLowercase{A~Z}
\end{document}
一个简单的解决方案是~
用其同义词替换\nobreakspace
,例如:
\makepsmarks{headings}{%
\def\partmark##1{\markboth{%
\partname\nobreakspace \thepart\hspace{0.5em} ##1}{}}%
}
这会大概修复你的文档类别。
更优雅的解决方案需要确切地了解listings
和如何babel
交互,即研究它们的源代码。我不会这么做。我浏览了代码,listings
似乎有一些与角色行为相关的注释~
,如果你想深入研究它的话。