寻求以下问题的帮助:
我试图chemfig
在我的文档中使用包,但是初次插入后出现以下错误:
!No room for a new \dimen.
我发现没有空间容纳新的\dimen并补充道:
\usepackage{etex}
\reserveinserts{28}
但现在我又遇到了另一个错误:
!You can't use a prefix with \begingroup
我似乎无法在网上找到答案。任何有关此事的帮助都将不胜感激。
以下是最小工作示例:
\documentclass[12pt,doublespacing,letterpaper]{report}
\usepackage{etex}
\reserveinserts{28}
\usepackage{chemfig}
\usepackage{cite}
\usepackage{morehelp}
\usepackage{setspace}
\usepackage{easytable}
\usepackage{longtable}
\usepackage{amssymb}
\usepackage{amstext}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{dcolumn}
\begin{document}
\chapter{}
\chemfig {*6(-=-(- M{(}OH{)}_2)=-=)}
\end{document}
答案1
chemfig
和easytable
; 加载似乎有问题chemfig
后 easytable
解决了问题(我注释掉了加载morehelp
包的行,因为我的 LaTeX 系统没有它):
\documentclass[12pt,doublespacing,letterpaper]{report}
\usepackage{etex}
\usepackage{cite}
%\usepackage{morehelp}
\usepackage{setspace}
\usepackage{easytable}
\usepackage{chemfig}
\usepackage{longtable}
\usepackage{amssymb}
\usepackage{amstext}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{dcolumn}
\begin{document}
\chapter{Test}
\chemfig {*6(-=-(- M{(}OH{)}_2)=-=)}
\end{document}
答案2
解决方案
重新排序加载顺序将解决此问题:贡萨洛的回答很好地证明了这一点。
根本原因
这里的根本问题是文件如何easy.sty
分配寄存器:
%
% define dimens for internal computation.
%
\@tempcnta=30\relax
\@whilenum\@tempcnta>\z@\do{%
\expandafter\global\expandafter\newdimen\csname @easy@hsize\romannumeral\@tempcnta\endcsname%
\expandafter\global\expandafter\newdimen\csname @easy@vsize\romannumeral\@tempcnta\endcsname%
\advance\@tempcnta by\m@ne
}
对于非专业人士来说,这看起来有些复杂,但关键是\newdimen
前面加了\global
。这不是必需的(尺寸由 LaTeX 全局分配),但通常是无害的。
如果发生在“错误”的时间,则会出现错误\global\newdimen
。传统 TeX 只有 256 个维度可用,而 e-TeX 则提供更多(64k)维度。但是,LaTeX\newdimen
命令设置为仅使用 256 个传统维度,因此要实际使用“扩展池”,您必须更改部分内核。这就是该etex
包所做的。但是,它设置为首先使用 256 个“标准池”寄存器,然后再更改“扩展池”的分配方式。这一切都很好,通常是透明的。但是,如果在以 为\newdimen
前缀时发生切换\global
,则会出现错误,因为\global
最终位于内部 的“前面” \begingroup
,从而导致错误。(该错误实际上不会破坏文档,但没人希望每次编译时都出现错误。)
重新排序加载几乎肯定会跳过该问题,因为它会在切换发生时移动,希望远离使用\global\newdimen
。一个“更好”的解决方案是更改easy.sty
为不使用\global
,但由于该文件在撰写本文时已有 12 年历史,我不会对此抱有希望。也许最好的解决方案是进行更改etex
以允许处理\global
此处的使用:棘手,并且再次更改了很长时间未更改的文件。