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