![dehyph-exptl 的语言定义不正确,会破坏连字和 initexmf](https://linux22.com/image/373596/dehyph-exptl%20%E7%9A%84%E8%AF%AD%E8%A8%80%E5%AE%9A%E4%B9%89%E4%B8%8D%E6%AD%A3%E7%A1%AE%EF%BC%8C%E4%BC%9A%E7%A0%B4%E5%9D%8F%E8%BF%9E%E5%AD%97%E5%92%8C%20initexmf.png)
我在 2017 年 12 月安装了 MiKTeX。我多次更新它(最新修订版:2.9.6637)并安装了更多软件包,包括 dehyph-exptl(安装于 2018-04-03,版本 0.5)。我使用 polyglossia 创建了一个文档,它加载了 dehyph-exptl 的连字规则:
\setdefaultlanguage[spelling=new,babelshorthands=true, latesthyphen=true]{german}
并且连字符根本没有完成。如果我省略latesthyphen=true
或写上latesthyphen=false
,连字符可以正常工作。
我注意到我的 language.dat、language.dat.lua 和 language.def 文件也损坏了,因为它们包含无效行。dehyph-exptl 附带名为 的文件dehyph{n,t,ts}-x-2018-03-31.{pat,tex}
,例如dehypht-x-2018-03-31.tex
,但所有语言定义都引用其旧版本:
语言.def:
\addlanguage{german-x-2017-03-31}{dehypht-x-2017-03-31.tex}{}{2}{2}
…
\addlanguage{ngerman-x-2017-03-31}{dehyphn-x-2017-03-31.tex}{}{2}{2}
语言.dat:
german-x-2017-03-31 dehypht-x-2017-03-31.tex
=german-x-latest
…
ngerman-x-2017-03-31 dehyphn-x-2017-03-31.tex
=ngerman-x-latest
语言.dat.lua:
['german-x-2017-03-31'] = {
loader='dehypht-x-2017-03-31.tex',
lefthyphenmin=2,
righthyphenmin=2,
synonyms={ 'german-x-latest' },
patterns='',
hyphenation='',
},
…
['ngerman-x-2017-03-31'] = {
loader='dehyphn-x-2017-03-31.tex',
lefthyphenmin=2,
righthyphenmin=2,
synonyms={ 'ngerman-x-latest' },
patterns='',
hyphenation='',
},
安装或卸载任何软件包(包括 dehyph-exptl)时,这些配置根本不会改变。initexmf 日志文件未指示常规运行期间的任何问题。运行时initexmf --dump
,它会失败:
$ initexmf --admin --dump
Sorry, but "MiKTeX Configuration Utility" did not succeed.
The log file hopefully contains the information to get MiKTeX going again:
C:/ProgramData/MiKTeX/2.9/miktex/log/initexmf_admin.log
You may want to visit the MiKTeX project page, if you need help.
该日志文件的最后几行减去时间戳:
INFO initexmf - starting: MiKTeX Configuration Utility 2.9.6634 (MiKTeX 2.9.6650 64-bit)
INFO initexmf - Operating on the shared (system-wide) MiKTeX setup
INFO initexmf - starting with command line: "C:\Program Files\MiKTeX 2.9\miktex\bin\x64\initexmf.exe" --admin --dump
INFO initexmf - running: miktex-makefmt.exe --engine=luatex --dest-name=lualatex --no-dump lualatex.ini --admin --enable-installer
INFO initexmf - running: miktex-makefmt.exe --engine=pdftex --dest-name=etex --no-dump etex.ini --engine-option=-tcx=cp227.tcx --admin --enable-installer
INFO initexmf - starting: MiKTeX Configuration Utility 2.9.6634 (MiKTeX 2.9.6650 64-bit)
INFO initexmf - Operating on the shared (system-wide) MiKTeX setup
INFO initexmf - starting with command line: initexmf --admin --mkmaps --mklinks
INFO initexmf - running: mkfntmap --admin --enable-installer
INFO initexmf - finishing with exit code 0
FATAL initexmf - The executed process did not succeed. The process output has been saved to a file.
FATAL initexmf - Info: fileName="C:\Program Files\MiKTeX 2.9\miktex\bin\x64\miktex-makefmt.exe", exitCode="1", savedOutput="C:\ProgramData\MiKTeX\2.9\miktex\log\miktex-makefmt_2018-04-06-143316.out"
FATAL initexmf - Source: Programs\MiKTeX\initexmf\initexmf.cpp
FATAL initexmf - Line: 303
我已将输出文件上传至https://gist.github.com/genodeftest/a1b5eb2946eb5a17fbe1881f91743e5a。
是否有任何安装后触发器应该更新语言定义文件?dehyph-exptl 是否缺少这些?如果这是一个错误,我应该在哪里报告它,即哪个 MiKTeX 包导致了这个问题?
梅威瑟:
\documentclass[12pt]{article}
% !TeX program = lualatex
% !TeX TXS-program:lualatex = lualatex -interaction=nonstopmode -synctex=1 -output-directory="outdir" -aux-directory="auxdir" -shell-escape %.tex
% !TeX encoding = utf8
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new,babelshorthands=true, latesthyphen=true]{german}
\begin{document}
% Text source: https://de.wikipedia.org/wiki/Blindtext
Mit Hilfe des Blindtextes kann die Verteilung des Textes auf der Seite (Layout oder Satzspiegel) sowie Lesbarkeit und Platzbedarf der verwendeten Schriftarten (Typografie) beurteilt werden. Er besteht aus einer mehr oder minder sinnlosen Folge von Wörtern, oft auch nur aus wortähnlichen Silbenfolgen. Ein bekanntes Beispiel dafür ist das „lateinische“ Lorem ipsum. Komponisten von Liedern benutzen Blindtexte beim Komponieren von Melodien und singen diese, bevor der Liedtext gedichtet wird.
\end{document}
日志文件附在上面链接的要点中。Polyglossia 声称它正确加载了连字文件,但这是不可能的,因为它们不存在。
答案1
我遇到了同样的问题,通过从 TeXLive 安装中复制 2017 年的旧文件解决了这个问题,我正是因为这个问题才安装的。旧的连字符文件仍然是最新的 MikTeX 便携版本的一部分,至少两天前是这样。
只需将其中一个安装中的旧文件复制到 dehyphen 文件夹并更新 FNDB。然后格式文件的创建应该可以再次进行。
另外,您可以更新 language.dat 文件并更改行
ngerman-x-2017-03-31 dehyphn-x-2017-03-31.tex到ngerman-x-2018-03-31 dehyphn-x-2018-03-31.tex
相同的更改可以应用于 language.def 和 language.def.lua
我的解决方案基于这个问题如何更新版本化的 \RequirePackage