我正在尝试排版我的文档,但是包含 hyperref 包给了我以下错误:
缺少所需文件 tex\latex\url\url.sty。
现在我的问题可能可以通过安装 url 包来解决,但我的问题是:为什么我必须这样做吗?我的文档中没有奇怪的引用。我甚至尝试过像这样使用它
\documentclass[12pt,a4paper]{article}
\usepackage{hyperref}
\begin{document}
Hello
\end{document}
但它仍然产生相同的错误消息。
那么为什么这行不通呢?如果没有 url 包,hyperref 包就没用了吗?
答案1
我认为,包括 URL 在内的链接及其排版是 的重要组成部分hyperref
。排版 URL 不需要由 发明hyperef
,因为包url
已经做得很好了。因此通过hyperref
加载包url
(和其他包)\RequirePackage
。
当然,没有任何使用的文档\url
存在,因此自动加载功能会很有用,但是:
之后无法加载包
\begin{document}
。第一个
\url
可能以组的形式调用。组结束后,包的所有本地定义都将丢失(如果可以加载包的话)。然后在下一个\url
,必须再次加载包。但此时全局资源已经存在,可能会造成麻烦。包可以在文件中
hyperref
记录 的使用情况,并在 中加载包。但是:\url
.aux
url
\AtBeginDocument
- 有些包不能/不应该在这么晚的时候加载。
- 需要再运行一次 LaTeX,因为第一次运行可能会由于缺少包而产生垃圾
url
。
一个干净的解决方案是,如果 TeX 发行版能够处理软件包依赖关系,并在安装软件包后自动安装所需的软件包。例如,TeX Live 维护了一些依赖关系。但是,软件包太多了,无法在细粒度级别上执行此操作。必须检查和分析每个软件包。并且每次更新软件包时都需要重复此操作。
但没有任何志愿者愿意翻找成千上万的包裹和定期更新新软件包和更新。我还没看到有人愿意为这样的服务付费。
据我所知,只有一个人维护 MiKTeX,只有一个人维护 TeX 目录,有少数(最多)人维护 TeX Live,有少数(或更少)人维持 CTAN 的运行。