使用 Jim Fowler 的 WEB/TeX Pascal 到 WebAssembly 编译器生成的 e-TeX web2js应该转储 LaTeX 格式,latex.ltx
并偶然发现了babel-latex.cfg
,请参阅ShreevatsaR 的说明,用于获取与 web2js 兼容的 LaTeX 格式(使用伪造的空 babe-latex.cfg。
有趣的是,该命令etex -ini *latex.ltx /dump
不会导致此问题。它switch.def
在之后加载hyphen.cfg
。为什么这里没有问题?
Babel 手册中说:
现在,钩子已经定义好了。出于效率原因,它们在这里以特殊方式处理。除了 luatex 之外,还考虑了特定格式的配置文件。
整个事情发生在hyphen.cfg
第 121 行 \def\bbl@hook@everylanguage#1{}
,请参阅texdoc babel
第 134 页。
Javier Bezos 的提示:\ifeof 原始问题
我想\ifeof
通过在 上配备错误消息来证明 Javier Bezos 的 -problem 猜测babel-latex.cfg
。这引出了一个问题,这个文件到底要存储在哪里。
我将其存储babel-latex.cfg
在与 相同的目录中hyphen.cfg
。kpsewhich
会找到最后一个,但找不到babel-latex.cfg
。
✔怎样才能kpsewhich
学会寻找babel-latex.cfg
?
❓ 有人能举个例子babel-*.cfg
吗?
答案1
摘录文件以进行控制kpsewhich
:
3.4.6 整合本地和个人宏
2.3 节中已经隐含地提到了这一点:TEXMFLOCAL(默认情况下,Windows 上的 /usr/local/texlive/texmf-local 或 %SystemDrive%\texlive\texmf-local)用于系统范围的本地字体和宏;而 TEXMFHOME(默认情况下,$HOME/texmfor%USERPROFILE%\texmf)用于个人字体和宏。这些目录旨在从一个版本到另一个版本保留,并让新 TEX Live 版本自动显示其内容。因此,最好不要将 TEXMFLOCAL 的定义更改为离主 TEX Live 目录太远,否则您将需要手动更改将来的版本。对于这两个树,文件都应放置在其正确的 TEX 目录结构中(TDS)子目录;参见http://tug.org/tdsor请参阅 texmf-dist/web2c/texmf.cnf。例如,LATEX 类文件或包应放置在 TEXMFLOCAL/tex/latex 或 TEXMFHOME/tex/latex 或其子目录中。TEXMFLOCAL 需要最新的文件名数据库,否则将找不到文件。您可以使用以下命令更新它mktexlsror
使用'重新初始化文件数据库'TEXLive Manager GUI 的配置选项卡上的按钮。
(texlive-en.pdf
或者C:\>texdoc texlive
)
结果:
C:\>kpsewhich -all babel-latex.cfg
c:/texlive/texmf-local/tex/latex/local/babel-latex.cfg
感谢 Javier Bezos 的\ifeof
猜测,没有 web2js 的请求babel-language.cfg
会被直接跳过。为了证明这一行为,我创建了一个 buggybabel-latex.cfg
来测试它是否会被请求。
c:\texlive>etex -ini *latex.ltx /dump
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/W32TeX) (INITEX)
restricted \write18 enabled.
entering extended mode
...
===========================================
Local configuration file hyphen.cfg used
===========================================
(c:/texlive/2019/texmf-dist/tex/generic/babel/hyphen.cfg
(c:/texlive/texmf-local/tex/latex/local/babel-latex.cfg
! LaTeX Error: Missing \begin{document}.
结论:
web2js
\openin
或者不能\ifeof
像标准原语那样工作
根据哈维尔·贝佐斯的第二个暗示可能更多的\openin
是文件不存在和后续故障的问题。