如果我们使用根结线虫从分布来看,格式的生成是可以的:
tex -ini '\input plain \count255=128 \loop \lccode\count255=\count255 \advance\count255 by 1 \ifnum \count255<256 \repeat \input ruhyphal \dump'
但是如果我们使用丝状菌从分布来看,它失败了:
iconv -f utf8 -t koi8-r hyph-ru.tex > ruhyph.tex
tex -ini '\input plain \count255=128 \loop \lccode\count255=\count255 \advance\count255 by 1 \ifnum \count255<256 \repeat \input ruhyph \dump'
This is TeX, Version 3.14159265 (TeX Live 2016/Debian) (INITEX)
(/usr/share/texlive/texmf-dist/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/usr/share/texlive/texmf-dist/tex/generic/hyphen/hyphen.tex))
(./ruhyph.tex
! Nonletter.
l.4834 8-
7
?
分发版中的连字文件损坏的可能性较小。那么 TeX 为何会失败呢?
编辑
以下列表中的每个文件的用途是什么?
/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-ru.pat.txt
/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ru.tex
/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-ru.lic.txt
/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ru.tex
/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-ru.t2a.tex
/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-ru.chr.txt
/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-ru.hyp.txt
答案1
您收到的错误消息非常清楚:破折号 (-) 不是字母,连字符模式中只允许使用字母。
那么,字母是什么?加载连字模式时,TeX 将已\lccode
设置的字符视为字母。实际上,您已经必须\lccodes
为所有 8 位编码的后半部分分配(否则所有西里尔字母都将无法识别),因此请执行最后一步并添加
\lccode`\-=`\-
命令行中的某个位置。例如,
tex -ini '\input plain \lccode`\-=`\- \count255=128 \loop \lccode\count255=\count255 \advance\count255 by 1 \ifnum \count255<256 \repeat \input ruhyph \dump'