在我最新的 MiKTeX 系统上,url.sty
TDS 中的三个不同位置有一个副本:
texmf\tex\xelatex\xetexurl
(MiKTeX 软件包的一部分xetexurl
,打包于 2007 年 9 月 5 日)texmf\tex\latex\url
(MiKTeX 包的一部分url
,打包于 2010-Jan-26)texmf\tex\latex\ltxmisc
(MiKTeX 包的一部分ltxmisc
,打包于 2012-12-20)
第一个(在 中xetexurl
)是 3.1 版本;另外两个是 3.3 版本。
为什么包存在于 3 个不同的位置?既然如此,TeX 程序如何知道该使用哪一个?似乎当我运行pdfLaTeX
或 时LuaLaTeX
,它会从 中选择其中一个ltxmisc
,并给出日志条目
Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc.
而在运行时,XeLaTeX
它从中选择一个xetexurl
,并给出以下日志条目:
Package: url 2004/03/15 ver 3.1 Verb mode for urls, etc.
为什么会有这种差异?
答案1
tex/xelatex/xetexurl/url.sty
旧版本url.sty
使用了 8 位字符,这不符合 XeTeX 对 UTF-8 编码输入的期望。因此
tex/xelatex/xetexurl/url.sty
是修补版本:
% url.sty ver 3.1 15-Mar-2004 Donald Arseneau ...
...
% Byte codes >= 0x80 replaced by ^^xx sequences - JK, 2006-04-07
自 3.3 版本起,url.sty
此问题已修复:
% ver 3.3 April 2006:
% Fix some encoding bugs and remove 8-bit characters.
结论: xetexurl
应该删除:
- 已过时。
- 补丁的原因已经消失。
- 该补丁违反了 LPPL(LaTeX 项目公共许可证),要求在未经作者同意的情况下重命名文件。
TDS:tex/latex/ltxmisc/url.sty
和TDS:tex/latex/url/url.sty
TDS(见“TeX 文件的目录结构”) 要求tex/latex//
和内的所有文件名tex/generic//
都是唯一的(请参阅“2.4 重复文件名”一节)。( 中的文件tex/xelatex
不会发生冲突,因为它使用不同的格式目录。)
唯一性约束的原因是没有定义 TeX 引擎可能找到并使用哪个文件。
因此必须删除其中一个文件。TeX Live 使用TDS:tex/latex/url/url.sty
。因此我的建议是删除TDS:tex/latex/ltxmisc/url.sty
。
更新 1:我已经做了错误报告,跟踪器 ID 为 2268。
更新 2:Christian Schenk 现已通过删除错误/放错的版本解决了该问题。