krantz 类章节和 algorithm2e 冲突

krantz 类章节和 algorithm2e 冲突

我正在课堂上写一本书,使用该包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}

抛出许多其他错误,但确实编译成功。尽管这实际上并没有解决我的问题,但它确实修复了它。有没有更好的解决方案和/或有人可以解释一下这里的问题是什么?

相关内容