代码
\documentclass{amsbook}
\usepackage{lstdoc}
\begin{document}
\chapter{Chapter}
\section{Section}
\end{document}
产生错误消息
Missing } inserted. [\section{Section}]
和or forgotten \endgroup. [\section{Section}]
那里发生了什么?如果用 替换,效果很好amsbook
。book
有什么建议吗?
答案1
重要的信息不是错误文本本身,而是问题所在的识别。以下是完整的错误记录:
! Missing } inserted.
<inserted text>
}
l.5 \section{Section}
?
! Extra }, or forgotten \endgroup.
\l@section ...obreak \hb@xt@ \@pnumwidth {\hss #2}
\par \endgroup
l.5 \section{Section}
?
所以问题在于\l@section
这个的定义不同——参数数量不同—— amsbook.cls
(7 个参数)和book.cls
(5 个参数)。
lstdoc.sty
\l@section
以与 定义的方式平行的方式 重新定义book.cls
,因此不兼容。
可以通过插入以下三行来修复后 \usepackage{lstdoc}
恢复amsbook
定义:
\makeatletter
\renewcommand{\l@section}{\@tocline{1}{0pt}{1pc}{}{}}
\makeatother
其他目录级别也可能需要恢复,而且由于这是我第一次研究这个问题,我不能完全确定长文档中的其他内容是否也会受到影响。