我正在课堂上写一本书,使用该包krantz
时出现错误。algorithm2e
你可以在这里找到 krantz 课程https://github.com/yihui/knitr-book/blob/master/krantz.cls
这是一个简单的例子:
\documentclass{krantz}
\usepackage{algorithm2e}
\title{Test}
\begin{document}
\chapter{What?}
Test.
\end{document}
引发错误:
! File ended while scanning use of \@chapter. I suspect you have forgotten a '}'
。
文档algorithm2e
说
- 修复:krantz 类更改了章节定义,并获得了一个选项,即经典类 book.cls 或 report.cls,并破坏了章节定义中 hyperref 的修复。此问题现已修复,算法检测到 krantz 类的使用,然后使用与 krantz 类配合使用的章节定义。
我将algorithm2e
软件包更新到最新版本,错误仍然存在。有什么方法可以修复此问题吗?
答案1
该algorithm2e
包尝试挂接到krantz.cls
,但是方式不正确(可能是因为该类随后发生了变化)。
% avoid some of the spurious warnings
\RequirePackage{fix-cm}
\documentclass{krantz}
\usepackage{algorithm2e}
\usepackage{etoolbox}
\makeatletter
% undo the "fix" by algorithm2e
\let\@chapter\algocf@original@chapter
% make a better fix
\patchcmd{\@chapter}
{\addtocontents}
{\addtocontents{loa}{\protect\addvspace{10\p@}}\addtocontents}
{}{}
\makeatother
\title{Test}
\begin{document}
\chapter{What?}
Test.
\end{document}
无数警告
Underfull \vbox (badness 10000)
Overfull \hbox (312.25pt too wide)
是由于班级而产生的,应该由其作者来修复。
答案2
我发现修改我的代码
\RequirePackage{algorithm2e}
\documentclass{krantz}
\title{Test}
\begin{document}
\chapter{What?}
Test.
\end{document}
抛出许多其他错误,但确实编译成功。尽管这实际上并没有解决我的问题,但它确实修复了它。有没有更好的解决方案和/或有人可以解释一下这里的问题是什么?