当我尝试使用以下代码将由两个子图组成的图形添加到我的文档中时
\begin{figure}[h]
\centering
\subfloat[Locally confluent]{
\begin{tikzpicture}[>=stealth,font=\sffamily]
\node (X) at (0,0) {$x$};
\node (Y) [below left=2cm and 1cm of X] {$y$};% 2cm below, 1cm to the left (optional)
\node (Z) [below right=2cm and 1cm of X] {$z$};
\node (U) [below left=2cm and 1cm of Z] {$u$};
\draw [semithick,->] (X) -- (Y);
\draw [semithick,->] (X) -- (Z);
\draw [semithick,->] (Y) -- (U) node [midway,below,sloped] {*};
\draw [semithick,->] (Z) -- (U) node [midway,below,sloped] {*};
\end{tikzpicture}
\label{fig:locallyconfluent}}
\qquad
\subfloat[Confluent]{
\begin{tikzpicture}[>=stealth,font=\sffamily]
\node (X) at (0,0) {$x$};
\node (Y) [below left=2cm and 1cm of X] {$y$};% 2cm below, 1cm to the left (optional)
\node (Z) [below right=2cm and 1cm of X] {$z$};
\node (U) [below left=2cm and 1cm of Z] {$u$};
\draw [semithick,->] (X) -- (Y) node [midway,above,sloped] {*};
\draw [semithick,->] (X) -- (Z) node [midway,above,sloped] {*};
\draw [semithick,->] (Y) -- (U) node [midway,below,sloped] {*};
\draw [semithick,->] (Z) -- (U) node [midway,below,sloped] {*};
\end{tikzpicture}
\label{fig:confluent}}
\caption{This is a figure containing several subfigures.}
\end{figure}
我在 ntheorem.tex 文件中得到了“没有空间容纳新的 \count”错误,该文件包含了所有的 ntheorem 内容并定义了我所有的定理。
我做错了什么或者为什么会发生这种情况?
答案1
该No room for a new \count
错误可能源于两个原因:
该文档加载了许多包,它们试图分配比可用数量更多的计数寄存器;
某些用户定义的宏存在编程错误。
大家应该记住,LaTeX 是在每种类型只有 256 个寄存器可用时编写的,而且内核尚未更新以考虑 e-TeX 提供的扩展池(多年来一直用作排版引擎)。此引擎(包含在 中)pdftex
提供每种类型的 32768 个寄存器。
如果出现错误,可以通过加载etex
包来使用扩展池:
\documentclass[<options>]{<classname>}
\usepackage{etex}
通常,它应该是第一个加载的包,因此我添加了一行“通用”内容。当使用或时\documentclass
,这很有用。XeLaTeX
LuaLaTeX
然而,这并不能解决第二种情况,而只是将问题隐藏起来。让我们看一个例子:
\newcommand{\foo}[1]{\newcounter{bar}...}
是错误的,因为它在每次调用时都会分配一个新的计数器。内核分配了 256 个正常可用寄存器中的 100 个;因此第 157 次调用\foo
肯定会触发错误。当然,在序言中加载的包会分配其他计数器(有些会分配很多),从而减少了调用(错误)宏的次数。错误etex
仍然存在,只会在多次调用宏后出现。
应分配一个柜台外部宏调用:
\newcounter{bar}
\newcommand{\foo}[1]{<do something with #1 and the bar counter>}