csplain 和 url 包无法与 pdftex 配合使用

csplain 和 url 包无法与 pdftex 配合使用

MWE(测试.tex):

\input miniltx
\input url.sty

\url{http://www.google.com}

\bye

命令:

pdftex -fmt=csplain test.tex-- 失败

This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=csplain)
 restricted \write18 enabled.
entering extended mode
 encTeX v. Jun. 2004, reencoding enabled.
(./test.tex The format: csplain <Nov. 2013>.
The cs-fonts are preloaded and A4 size implicitly defined.
The utf8->iso8859-2 re-encoding of Czech+Slovak alphabet activated by encTeX
(/usr/local/texlive/2014/texmf-dist/tex/plain/graphics-pln/miniltx.tex)
(/usr/local/texlive/2014/texmf-dist/tex/latex/url/url.sty)
! Improper alphabetic constant.
<to be read again> 
                   \warntwobytes 
\do #1#2->\mathcode `#1
                       =32768 \begingroup \lccode `\~`#1\lowercase {\endgrou...

\UrlEncSpecials ...char 27 }\do \warntwobytes ^^df
                                                  {\mathchar 25 }\do \~{\low...

\Url@MathSetup ...ct \UrlSpecials \UrlEncSpecials 
                                                  \let \do \set@mathnolig \v...

\Url@FormatString ->\UrlFont \Url@MathSetup 
                                            $\fam \z@ \textfont \z@ \font \e...

\Url@z ...rcent \Url@HyperHook {\Url@FormatString 
                                                  }\endgroup 
l.4 \url{http://www.google.com}

? 

pdftex -fmt=pdfcsplain test.tex-- 失败并显示类似消息

xetex -fmt=pdfcsplain test.tex-- 成功

luatex -fmt=pdfcsplain test.tex——成功!

有什么解决办法吗?

ps 我知道 OPmac 中支持 url,但也希望可以选择将 eplain/url 与 csplain 一起使用。

答案1

csplain默认情况下对输入中的非 UTF-8 代码敏感。它在pdftex引擎中使用 encTeX 来实现这一点。url.sty使用非 UTF-8 代码进行操作时,encTeX 对此的敏感度超出了我们的需要,因此会产生此错误。

您可以\input utf8off在文档开头写入。此后,它将pdftex正常将其输入视为 8 位。

如果您正在使用pdftex并且需要保持 UTF-8 输入处于活动状态,则您只能在url.sty扫描宏时停用它。这意味着:

\mubytein=0
\input miniltx
\input url.sty
\mubytein=1

\url{http://www.google.com}

\bye

相关内容