Deb*_*ski 12 latex tex pdflatex compilation-time
我真的很想知道,为什么即使最近的Tex/Latex系统也没有使用任何缓存来加速以后的运行.每次我修复一个逗号*时,调用Latex花费我大约相同的时间,因为它需要加载和转换每个图片文件.
(*我知道即使更改一个微小的逗号也会影响整个结构,但当然,一个编写良好的缓存格式可以看到它的影响.另外,可能会出现这样的情况:只要速度快,就不需要100%的正确性.)
Tex 的语言中是否存在使得复杂或不可能完成的事情,或者只是在Tex的原始实现中,没有必要这样做(因为在那些大型计算机上它本来会很慢)?
但另一方面,为什么这不会让其他人如此烦恼以至于他们已经启动了一个具有某种缓存的分支(或者将Tex文件透明地转换为更快解析的格式)?
有什么办法可以加快Latex的后续运行吗?除了将所有内容放入chapterXX.tex文件然后将它们评论出来之外?
让我们试着了解TeX的工作原理.写下面的内容会发生什么?
tex.exe myfile.tex
Run Code Online (Sandbox Code Playgroud)
TeX逐字节读取您的文件.首先,TeX将每个char转换成对<category, ascii-code>.每个字符都有类别代码和ascii代码.类别代码表示该字符是开头括号({)或进入数学模式($),符号宏(~例如)或字母(A-Z,a-z).
如果TeX获得类别代码为11(字母)或12(其他符号:数字,逗号,句号)的字符,TeX将启动一个段落.您想要缓存所有段落.
假设您在文档中更改了某些内容.TeX如何检查更改后的所有段落是否相同?可能是你改变了一些char的类别.我是你改变了一些宏的含义.或者您已删除}某处,从而更改了当前字体.
为了确保段落是相同的,你必须确保段落中的所有字符都是相同的,所有字符类别是相同的,当前字体是相同的,所有数学字体是相同的,一些值是一些内部变量是相同的(例如,\hsize,\vsize,\pretolerance,\tolerance,\hypenpenalty,exhyphenpenalty,\widowpenalty,\spaceskip,...,........)
您可以确定只有在您的更改之前所有参数都是相同的.但在这种情况下,您必须在每个段落后保留所有状态.
你的系统SuperCachedTeX非常复杂.不是吗?
有一些解决方案,例如preview-latex,它可以将内容预编译成专用格式文件以提高速度。您需要记住 TeX 在本地基础上优化页面。在引擎级别没有将材料固定在特定页面上的概念,因此您不能只是“重新 TeX 一页”。