我有一个 LaTeX 文档,它使用了许多长的 pgf 路径,因此仅当通过设置增加 TeX“容量”时才能进行save_size=50000
编译texmf.cnf
。
不幸的是,我无法直接更改系统范围,texmf.cnf
因为我在工作机器(OpenSuSE 11.3)上没有 root 访问权限。有没有办法使用用户定义texmf.cnf
来覆盖限制?
免责声明:正如 Juan Navarro 在评论中指出的那样,以下形式的错误tex 容量超出通常是由语法错误引起的。即使你收到了这样的错误信息,99% 的情况下正确的做法是不是增加容量。
答案1
当我使用 pgfplots 时我也有同样的要求 - 并且我找到了一种方法。
最终步骤已收录到 pgfplots 手册中,请比较以下 pdf 文件:http://pgfplots.sourceforge.net/
为了您的方便,我在这里发布了有关 TeX-Live 部分的副本,它可能会回答您的问题:
6.2.2 TEXLive 或类似安装 对于 Unix 安装,需要调整配置文件。可按如下方式进行:
在您的系统上找到 texmf.cnf。在我的 Ubuntu 安装中,它位于
/usr/share/texmf/web2c/texmf.cnf
。要么
texmf.cnf
直接更改,要么将其复制到某个方便的地方。如果复制,请按照以下步骤操作:只保留本地副本中已更改的条目以减少冲突。TEX 将始终读取在其搜索路径中找到的所有配置文件。
调整搜索路径以查找本地副本。这可以使用环境变量来完成
TEXMFCNF
。假设您的本地副本位于~/texmf/mytexcnf/texmf.cnf
,您可以编写`export TEXMFCNF=~/texmf/mytexcnf:`
首先在您的目录中搜索,然后在所有其他系统目录中搜索。
你应该改变条目
main_memory = n
extra_mem_top = n
extra_mem_bot = n
max_strings = n
param_size = n
save_size = n
stack_size = n
日志文件通常包含需要扩大的参数的信息。
下面是此配置文件的一个示例。它更改了内存限制。
- 创建文件
~/texmf/mytexcnf/texmf.cnf
(也可能创建路径)。
% newly created file ~/texmf/mytexcnf/texmf.cnf:
% If you want to change some of these sizes only for a certain TeX
% variant, the usual dot notation works, e.g.,
% main_memory.hugetex = 20000000
main_memory = 230000000 % words of inimemory available; also applies to inimf&mp
extra_mem_top = 10000000 % extra high memory for chars, tokens, etc.
extra_mem_bot = 10000000 % extra low memory for boxes, glue, breakpoints, etc.
save_size = 150000 % for saving values outside current group
stack_size = 150000 % simultaneous input sources
% Max number of characters in all strings, including all error messages,
% help texts, font names, control sequences. These values apply to TeX and MP.
% pool_size = 1250000
% Minimum pool space after TeX/MP's own strings; must be at least
% 25000 less than pool_size, but doesn't need to be nearly that large.
% string_vacancies = 90000
% Maximum number of strings.
% max_strings = 100000
% min pool space left after loading .fmt
% pool_free = 47500
运行 texhash 使得 TEX 更新其
~/texmf/ls-R database
。创建环境变量
TEXMFCNF
并分配值~/texmf/mytexcnf:
(包括尾随的:
!)。对于我的 Linux 系统,可以通过添加export TEXMFCNF=~/texmf/mytexcnf:
到
~/.bashrc
。
不幸的是,TEX 不允许任意的内存限制,可执行文件中有一个硬编码的上限。