这似乎是在我昨晚在 Linux 上更新 TL 2020 之后发生的。
现在,当使用 tex4ht 将其中包含的相同 Latex 文件构建url{}
为 HTML 时,所有 URL 都乱套了,单击任何 URL 都会出现找不到页面的错误。
使用lualatex编译的PDF没有问题。
实际情况是这样的
https://mathematica.stackexchange.com/landing/r/digest?cta=question&id=234780
现在在生成的 HTML 中显示为
<a class='url'
href='https://mathematica.stackexchange.com/landing/r/digest cta=question&id;=234780'>
<span class='rm-lmtt-12'>
注意结尾处的差异。
以下是 MWE 和生成 HTML 的命令
\documentclass[12pt]{book}
\usepackage{hyperref}
\begin{document}
\url{https://mathematica.stackexchange.com/landing/r/digest?cta=question&id=234780}
\end{document}
使用编译
make4ht -ulm default -a debug foo4.tex "mathjax,htm"
在本次 TL 更新之前没有出现过这样的问题。我查看了 OCT 更新之前编译的 HTML 页面,那里的 URL 是正确的。这里是从本次更新之前编译的 HTML 页面源代码中随机复制的
https://mathematica.stackexchange.com/landing/r/digest?cta=question&id=234240
还有人遇到过这个问题吗?有解决方法吗?
文件列表:
*File List*
book.cls 2020/04/10 v1.4m Standard LaTeX document class
bk12.clo 2020/04/10 v1.4m Standard LaTeX file (size option)
hyperref.sty 2020-05-15 v7.00e Hypertext links for LaTeX
ltxcmds.sty 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)
iftex.sty 2020/03/06 v1.0d TeX engine tests
pdftexcmds.sty 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO)
infwarerr.sty 2019/12/03 v1.5 Providing info/warning/error messages (HO)
keyval.sty 2014/10/28 v1.15 key=value parser (DPC)
kvsetkeys.sty 2019/12/15 v1.18 Key value parser (HO)
kvdefinekeys.sty 2019-12-19 v1.6 Define keys (HO)
pdfescape.sty 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
hycolor.sty 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
letltxmacro.sty 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
auxhook.sty 2019-12-17 v1.6 Hooks for auxiliary files (HO)
kvoptions.sty 2020-10-07 v3.14 Key value format for package options (HO)
pd1enc.def 2020-05-15 v7.00e Hyperref: PDFDocEncoding definition (HO)
intcalc.sty 2019/12/15 v1.3 Expandable calculations with integers (HO)
etexcmds.sty 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
url.sty 2013/09/16 ver 3.4 Verb mode for urls, etc.
bitset.sty 2019/12/09 v1.3 Handle bit-vector datatype (HO)
bigintcalc.sty 2019/12/15 v1.5 Expandable calculations on big integers (HO)
atbegshi.sty 2020/08/17 v1.0a Emulation of the original atbegshi package
with kernel methods
hluatex.def 2020-05-15 v7.00e Hyperref driver for luaTeX
puenc.def 2020-05-15 v7.00e Hyperref: PDF Unicode definition (HO)
stringenc.sty 2019/11/29 v1.12 Convert strings between diff. encodings (HO)
atveryend.sty 2020/08/19 v1.0a Emulation of the original atvery package
with kernel methods
rerunfilecheck.sty 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)
uniquecounter.sty 2019/12/15 v1.4 Provide unlimited unique counter (HO)
l3backend-luatex.def 2020-09-24 L3 backend support: PDF output (LuaTeX)
ts1cmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions
nameref.sty 2019/09/16 v2.46 Cross-referencing by name of section
refcount.sty 2019/12/15 v3.6 Data extraction from label references (HO)
gettitlestring.sty 2019/12/15 v1.6 Cleanup title references (HO)
答案1
您已经发现这种情况只发生在 上make4ht
。它使用 LuaXML 库来清理生成的 HTML 代码。它解析 XML 实体的方式似乎存在错误。它尝试将命名实体转换为 Unicode 字符。它误认为&id
是命名实体。由于它找不到id
和 任何 Unicode 字符之间的映射,因此它返回原始实体。但问题来了,它附加了分号。所以您的 url 来自:
https://mathematica.stackexchange.com/landing/r/digest?cta=question&id=234780
到
https://mathematica.stackexchange.com/landing/r/digest?cta=question&id;=234780
在处理过程中,会&
变成&
,但虚假的分号仍然存在。实际错误是&id
被解析为 HTML 实体。只有 和 之间的文本才&
应该;
被解析为实体。该问题已在 LuaXML 的开发版本中修复,应该很快就会上传到 CTAN。在此期间,您可以将更新的文件放在luaxml-实体.lua到包含您的文档的目录。
它应该产生正确的结果:
<a class='url' href='https://mathematica.stackexchange.com/landing/r/digest?cta=question&id=234780'><span class='cmtt-12'>https://mathematica.stackexchange.com/landing/r/digest?cta=question&id=234780</span></a>