![De Gruyter 模板出现意外且可能错误的“嵌套太深”错误](https://linux22.com/image/356850/De%20Gruyter%20%E6%A8%A1%E6%9D%BF%E5%87%BA%E7%8E%B0%E6%84%8F%E5%A4%96%E4%B8%94%E5%8F%AF%E8%83%BD%E9%94%99%E8%AF%AF%E7%9A%84%E2%80%9C%E5%B5%8C%E5%A5%97%E5%A4%AA%E6%B7%B1%E2%80%9D%E9%94%99%E8%AF%AF.png)
我在 PETS 会议上使用了 De Gruyter 模板,下面是直接链接(ZIP)。我收到“嵌套太深”错误,相关搜索仅导致我收到此错误的“合理”原因(嵌套层数超过 7 层的列表或尾随开放环境)。这是一个最小的工作示例,表明问题一定出在其他地方:
\documentclass{article}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem{prop}{\protect\propositionname}
\usepackage[big]{dgruyter_NEW}
\usepackage{babel}
\providecommand{\propositionname}{Proposition}
\begin{document}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\begin{enumerate} % this is where it fails
\item woo item
\item woo other item
\end{enumerate}
\end{prop}
\end{document}
奇怪的是,删除其中一个虚拟prop
环境修复了问题:我不再收到错误。也许是这些\end{prop}
行没有被考虑进去,还是其他原因?
网上有人建议添加以下几行:
\usepackage{enumitem}
\setlistdepth{9} % or some bigger number
enumerate
从技术上讲,这可行(如果我将文章的设置设置为 30,就不会再出现错误),但是或环境的位置和缩进itemize
都是错误的:
最后,我尝试了这个答案并\stop
在 之前添加了一个\begin{enumerate}
。输出似乎正确,但与“嵌套太深”错误不一致:
(\end occurred inside a group at level 1)
### semi simple group (level 1) entered at line 32 (\begingroup)
答案1
不幸的是,您不得不使用一个有缺陷的软件包。:-(
您可以在定义新定理之前加载包来修复错误。
通常,最好先加载包,然后再进行设置。样式文件加载amsthm
并提供dgthm
和dgdef
定理样式。
\documentclass{article}
\usepackage[big]{dgruyter_NEW}
\theoremstyle{dgthm} % not plain
\newtheorem{prop}{\protect\propositionname}
\providecommand{\propositionname}{Proposition}
\begin{document}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\end{prop}
\begin{prop}
woo prop
\begin{enumerate} % this is where it fails
\item woo item
\item woo other item
\end{enumerate}
\end{prop}
\end{document}
答案2
amsthm
该包首先不能与 lodaed 一起使用(它会加载amsthm
但稍后会修改一些定义)。
但是改变标记的三行使其或多或少地起作用(第一行是之前出现的一个不相关的问题,\p@
这个包中使用的重新定义完全破坏了 latex,我很惊讶地看到这个包仍然在分发)
$ diff dgruyter_NEW.sty~ dgruyter_NEW.sty
22c22
< \p@=1bp
---
> %NO!!!!!!\p@=1bp
1379c1379,1380
< \global\advance\@listdepth\@ne
---
> %NO \global
> \advance\@listdepth\@ne
1391c1392,1393
< \global\advance\@listdepth\m@ne
---
> %NO \global
> \advance\@listdepth\m@ne
答案3
dgruyter_NEW
我的第一个猜测是和包之间的交互不好amsthm
。如果你导入第dgruyter_NEW
一个,它应该可以工作。