De Gruyter 模板出现意外且可能错误的“嵌套太深”错误

De Gruyter 模板出现意外且可能错误的“嵌套太深”错误

我在 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并提供dgthmdgdef定理样式。

\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一个,它应该可以工作。

相关内容