# 简介 我们知道LaTeX 编译时,在导言区要加载很多配置文件,零碎的文件读取比较慢(Windows 下 IO 瓶颈尤其明显)影响编译效率。 从这一点考虑:我们可以对导言区预编译出【内存运行状态转储】文件 .fmt 进行提速 # 预编译(生成 cfg.fmt 文件): 编译要求:开启初始化选项 -initialize 或 -ini 用 -jobname 指定目标文件名 #### 方法 1 ① 准备原文件(只留导言区,正文清除正文区): ② pdflatex -ini -jobname="cfg" "&pdflatex" "cfg.tex\dump" #### 方法 2 配合 mylatexformat 宏包直接对一般文件编译: pdftex -ini -jobname="cfg" "&pdflatex" "mylatexformat.ltx" "doc.tex" ##### 说明: - &pdflatex 是预加载格式 - \dump 执行转储 - 提前加载了 mylatexformat.ltx 宏包,改变编译过程,在 \begin{document} 前转储内存状态。其实就相当于帮用户剥离正文区数据,转储导言区内存状态 - 需要记录时间可以用编译选项: -time-statistics # 使用 cfg.fmt 格式: 编译要求:开启选项 -shell-escape - ① 编译命令行中加载 fmt 文件: pdflatex -shell-escape "&cfg" doc.tex - ② 在文件开头中调用,方法是,在首行加 %&cfg 说明: 编译选项: -parse-first-line ,解析首行(%&cfg) 编译选项: -dont-parse-first-line ,不解析首行 # 问题 - ① 为何引擎载入标准的 pdflatex.fmt 不用开启 -shell-escape,而用户自己搞的 .fmt 就要 ? - ② MikTeX 有一个格式管理器,但是 Build 失败,Why? How ? ![MikTeX有一个fmt格式管理器,但是Build失败,Why? How?](https://pics.latexstudio.net/data/images/202004/b2b7bee8cc12e0b.png "MikTeX有一个fmt格式管理器,但是Build失败,Why? How?") - ③ 不支持中文文件名,咋整?【痛点】 编译环境 : proTeXt 2017、2019 、2020 (Mik) ## MWE 测试文件 原稿: 中文文件名编译无压力.tex ```tex \documentclass[UTF8]{ctexbook} \usepackage{tikz,lipsum} \begin{document} 正文可用汉字,无 BUG \lipsum \end{document} ``` 预编译文件(导言区): cfg.tex ```tex \documentclass[UTF8]{ctexbook} \usepackage{tikz,lipsum} ``` 编译正常的正文文件(英文文件名): doc.tex ```tex %&cfg \begin{document} 正文可用汉字 \lipsum \end{document} ``` ### 【痛点】那么问题来了,如果将以上 "doc.tex" 改为中文文件名(如 "汉字.tex")就编译报错!? 报错信息如下: ``` $ pdflatex -time-statistics -shell-escape  "&cfg" 汉字.tex This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6500 64-bit) entering extended mode ! I can't find file `./'. \protect <*> &cfg ./汉字 .tex Please type another input file name: ``` Why?怎么解决? 猜想,Windows 内核采用 GBK ,可能是引擎在这种编译模式下,文件名读取出是什么问题? 是不是编译时还要带什么参数?

0 回答0

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。