我在用着TeXShop在 Mac OS X 上(基于 LaTeX)与图形可视化包,以便在我的文档中绘制内联有向图(使用 write18 和命令dot
)。显然每个图都使用一个\write
命令,所以我在单个文档中得到了大约十几个内联图,并且用完了\write
插槽。当我尝试构建文档时,我现在收到以下错误:
?! 没有空间容纳新的 \write 。
我有完毕 一些 阅读关于这个问题,目前还没有明显的方法可以增加\write
我可用的 s 数量。有没有其他方法可以继续使用此包而不需要\write
对每个图都进行操作?
作为参考,示例文档如下所示:
\documentclass{article}
\usepackage{graphvizzz}
\begin{document}
This is a state machine:
\digraph[scale=0.5]{machine}{
margin = "0 0 0 0";
rankdir = "LR";
node [ shape = "circle" ] A B;
A -> B [ label = "0" ];
}
\end{document}
答案1
和pgf/tikZ你可以回避这个问题。
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
This is a state machine:
\begin{tikzpicture}[%
>=stealth,
node distance=2cm,
on grid,
auto
]
\node[state] (A) {A};
\node[state] (B) [right of=A] {B};
\path[->] (A) edge node {0} (B);
\end{tikzpicture}
\end{document}
包装手册中有详细信息。还有一个具体示例库。
答案2
显然,这个软件包的作者从来没有尝试过,除了一些琐事。
正确做法是,改变
\newcommand{\digraph}[3][scale=1]{
\newwrite\dotfile
...
在包裹中
\newwrite\dotfile
\newcommand{\digraph}[3][scale=1]{
...
(即,将 移出\newwrite
命令)。下面几行,\newwrite\dotfile
从 的定义中删除 行\graph
。
不管怎样,你是对的;是无法增加\write
流的数量。当然,使用 TikZ 是一个不错的选择,所以如果它适合你,就继续使用它。
答案3
您可以使用以下morewrites
包:
http://get-software.net/macros/latex/contrib/morewrites/morewrites.pdf
基本上,你需要做的就是添加以下行
\usepackage{morewrites}
位于文档开头附近的某个位置,“没有更多空间容纳新的 \write”错误应该会消失。
答案4
LaTeX 最多可以打开 16 个文件,但许多软件包都会打开这些文件。
此错误有 3 种解决方案:
- 使用 LuaLaTeX,其限制将是操作系统的限制(从未尝试过)
- 使用 morewrites 软件包(使用了一段时间,但后来遇到了错误)
- 使用 KOMA-Script 的 scrwfile 包(我目前的选择,运行顺利)
morewrites 和 scrwfile 采用了不同的方法来解决这个问题,但两者都以某种方式改变了 LaTeX 内核。深度魔法。