我想将 UTF-8 连字模式(用于克罗地亚语)与纯 TeX(pdftex)结合使用。我已阅读有关 hyph-utf8 包的文档,但我发现它没什么用。其中提到了一个\uselanguage{langname}
命令,但我不知道把它放在哪里。
当我尝试将命令放入我要处理的文本文件中时,出现 e-TeX 错误,提示language hr is undefined
(也尝试了其他语言,如美国英语,但都无法识别;还尝试了完整的语言名称,如克罗地亚语等)。
当我尝试在格式生成期间使用该命令时,出现“命令未定义”的错误。
我尝试直接将该loadhyph-hr.tex
文件(在 hyph-utf8 包中找到)包含在.tex
我用于创建格式的文件中,但也失败了。
有人知道怎样让它工作吗?
编辑:这是我的格式生成文件(F.tex
)现在的样子:
\let\keptdump\dump \let\dump\relax
\input pdfetex.ini
\let\enc=u
\input csplain.ini
\let\dump\keptdump \let\keptdump=\undefined
\dump
其中csplain.ini
有一个 encTeX 文件,内容如下:
\input csfonts % re-defines primitive \font
\input plain % format Plain
\restorefont % original meaning of primitive \font
\input il2code % extra codes for czech / slovak letters in ISO-8859-2 encoding
\input hyphen.lan % czech / slovak hyphenation pattern (may be others too)
\input plaina4 % \hsize and \vsize for A4
\everyjob=\expandafter{\the\everyjob
\message{The format: csplain <Sep. 2005>.}
\message{The cs-fonts are preloaded and A4 size implicitly defined.}}
\ifx\enc\undefined \else \input csenc-\enc.tex \fi % re-encoding using encTeX
\ifx\xprncode\undefined \else %% The encTeX is detected
\count255=128 % All codes > 128 are printable:
\loop \xprncode\count255=1 \advance\count255 by 1
\ifnum \count255<256 \repeat
\fi
\ifx\pdfoutput\undefined \else % added in Feb. 2005
\def\tmpa{\pdfcsplain}
\expandafter\def\expandafter\tmpb\expandafter{\csname\jobname\endcsname}
\ifx\tmpa\tmpb %% PDFTeX with PDF output
\message {jobname=pdfcsplain, PDF output initialised.}
\openin0=pdftexconfig.tex
\ifeof0 \message{WARNING: pdftexconfig.tex does not exist.
I set \string\pdfoutput=1 only.}%
\else \closein0 \input pdftexconfig.tex
\fi
\pdfoutput=1
\else
\message {jobname=csplain with pdftex, DVI output initialised.}
\pdfoutput=0
\let\oripdfoutput=\pdfoutput \let\pdfoutput=\undefined
\fi
\let\tmpa=\undefined \let\tmpb=\undefined
\fi
\dump
我没有更改此文件中的任何内容,但我修改了文件csfonts
和csenc-u
。
答案1
因为你有 TeX Live(我猜是在 Unix 系统上),所以你应该有可用的语言:一个 UTF-8 编码的文件
\uselanguage{croatian}
\font\tenrm="Latin Modern Roman/S=10;mapping=tex-text"
\tenrm\hsize=1pt
\hskip0pt Republika Hrvatska Položajem
\bye
用 xetex 处理的应该显示连字符Re-pu-bli-ka Hr-vat-ska Po-lo-ža-jem
。
您确定已经安装了克罗地亚语支持文件,即 Debian 软件包texlive-lang-croatian
吗?
请注意,使用纯 TeX 与 pdftex 不会产生正确的结果,除非更改默认字体并执行某些 catcode 技巧或使用 encTeX。
您需要准备格式
pdftex -ini -enc -etex -pdf "\def\enc{u}\input F.tex"
哪里F.tex
\input csfonts % re-defines primitive \font
\let\keptdump\dump \let\dump\relax
\input pdfetex.ini
\restorefont % original meaning of primitive \font
\input il2code % extra codes for czech / slovak letters in ISO-8859-2 encoding
\input plaina4 % \hsize and \vsize for A4
\everyjob=\expandafter{\the\everyjob
\message{The format: csplain <Sep. 2005>.}
\message{The cs-fonts are preloaded and A4 size implicitly defined.}}
\input csenc-u.tex % re-encoding using encTeX
\ifx\xprncode\undefined \else %% The encTeX is detected
\count255=128 % All codes > 128 are printable:
\loop \xprncode\count255=1 \advance\count255 by 1
\ifnum \count255<256 \repeat
\fi
\ifnum\pdfoutput=0
\message {jobname=csplain with pdftex, DVI output initialised.}
\pdfoutput=0
\let\oripdfoutput=\pdfoutput \let\pdfoutput=\undefined
\else
\message {jobname=pdfcsplain, PDF output initialised.}
\openin0=pdftexconfig.tex
\ifeof0 \message{WARNING: pdftexconfig.tex does not exist.
I set \string\pdfoutput=1 only.}%
\else \closein0 \input pdftexconfig.tex
\fi
\pdfoutput=1
\fi
\let\dump\keptdump \let\keptdump=\undefined
\dump
这里我假设您对csfonts.tex
和的修改csenc-u.tex
与您的目的一致。
答案2
您必须将模式添加到格式中。为此,必须将合适的行添加到本地language.def
,然后必须重新生成格式。例如,我的本地版本language.def
除了其他行之外还包含这些行
\addlanguage{ngerman}{loadhyph-de-1996.tex}{}{2}{2}
\addlanguage{ngerman-x-2009-06-19}{dehyphn-x-2009-06-19.tex}{}{2}{2}
在现代 tex 安装中,language.def 通过配置 GUI 进行管理。例如,在 miktex 中,您应该使用 miktex-settings 中的“languages”选项卡。