增加 TeX 容量,无需 root 权限

增加 TeX 容量,无需 root 权限

我有一个 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 安装,需要调整配置文件。可按如下方式进行:

  1. 在您的系统上找到 texmf.cnf。在我的 Ubuntu 安装中,它位于 /usr/share/texmf/web2c/texmf.cnf

  2. 要么texmf.cnf直接更改,要么将其复制到某个方便的地方。如果复制,请按照以下步骤操作:

    只保留本地副本中已更改的条目以减少冲突。TEX 将始终读取在其搜索路径中找到的所有配置文件。

    调整搜索路径以查找本地副本。这可以使用环境变量来完成TEXMFCNF。假设您的本地副本位于~/texmf/mytexcnf/texmf.cnf,您可以编写

        `export TEXMFCNF=~/texmf/mytexcnf:`
    

    首先在您的目录中搜索,然后在所有其他系统目录中搜索。

  3. 你应该改变条目


       main_memory = n
       extra_mem_top = n
       extra_mem_bot = n
       max_strings = n
       param_size = n
       save_size = n
       stack_size = n

日志文件通常包含需要扩大的参数的信息。

下面是此配置文件的一个示例。它更改了内存限制。

  1. 创建文件~/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
  1. 运行 texhash 使得 TEX 更新其~/texmf/ls-R database

  2. 创建环境变量TEXMFCNF并分配值~/texmf/mytexcnf:(包括尾随的:!)。对于我的 Linux 系统,可以通过添加

    export TEXMFCNF=~/texmf/mytexcnf:

    ~/.bashrc

不幸的是,TEX 不允许任意的内存限制,可执行文件中有一个硬编码的上限。

相关内容