latex 给我错误:哎哟---我的内部常量已被破坏

latex 给我错误:哎哟---我的内部常量已被破坏

正如标题所述,使用 latex 进行编译会立即产生错误:

Ouch---my internal constants have been clobbered!---case 14

我不知道这意味着什么...我使用 TexLive 2012。我更新了 texmf.cnf 并运行了 fmtutil-sys 和 texhash。我猜 texhash 可能搞砸了?

有任何想法吗?

根据要求提供一个最小工作示例:

\documentclass{article}
\begin{document}
    Any tex file.
\end{document}

答案1

错误消息

Ouch---my internal constants have been clobbered!---case 14

是由

if (mem_min<min_halfword)or(mem_max>=max_halfword)or@|
  (mem_bot-mem_min>max_halfword+1) then bad:=14;

在 中pdftex.web。您可能更改了 texmf.cnf 中的内存设置,从而触发了错误。对于进一步分析,这些更改将很有用。

最大main_memory

tex.ch将上面的代码行更改为:

if (mem_bot-sup_main_memory<min_halfword)or@|
  (mem_top+sup_main_memory>=max_halfword) then bad:=14;

它还定义max_halfword为:

@d max_halfword==@"FFFFFFF {largest allowable value in a |halfword|}

即 2 28 -1 = 268,435,455。 的值sup_main_memory

@!sup_main_memory = 256000000;

mem_top初始化为:

mem_top := mem_bot + main_memory -1;

那么触发错误的最新条件就变成:

mem_top+ sup_mem_memory≥≥- + 1≥12,435,456max_half_word
main_memory​​max_halfwordsup_main_memory
main_memory

main_memory必须小于或等于12,435,455

记忆单元

tex.web

@!mem : array[mem_min..mem_max] of memory_word; {the big dynamic storage area}
...
@!memory_word = record@;@/
  case four_choices of
  1: (@!int:integer);
  2: (@!gr:glue_ratio);
  3: (@!hh:two_halves);
  4: (@!qqqq:four_quarters);
  end;

字节的转换似乎取决于系统,texmfmem.h我猜测是memory_word四个或八个字节。

相关内容