将 hyph-utf8 与纯 TeX 结合使用

将 hyph-utf8 与纯 TeX 结合使用

我想将 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

我没有更改此文件中的任何内容,但我修改了文件csfontscsenc-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 安装中,lan​​guage.def 通过配置 GUI 进行管理。例如,在 miktex 中,您应该使用 miktex-settings 中的“languages”选项卡。

相关内容