我编写了一个小型 LaTeX 文件,描述了一些目录的内容。
现在我尝试提供所述文件和目录的直接链接。我成功地使用它\href{filename.ext}{Link name}
来提供文件链接。不幸的是,如果我将目录名称传递给\href
PDF 阅读器(尝试使用 Adobe Reader 和 Evince),它无法识别该链接。
无法识别的链接示例(名为美国广播公司与 .pdf 存在于同一目录中):
\href{abc}{Open abc directory}
\href{abc/}{Open abc directory}
\href{./abc}{Open abc directory}
\href{./abc/}{Open abc directory}
\href{run:abc}{Open abc directory}
\href{run:abc/}{Open abc directory}
\href{run:./abc}{Open abc directory}
\href{run:./abc/}{Open abc directory}
有人知道是否有机会这样做吗?
答案1
问题的根源在于 hyperref 试图变得聪明。如果没有找到文件扩展名,hyperref 会添加.pdf
,因此链接会变成abc.pdf
或 ,具体取决于调用中abc/.pdf
是否有尾随。/
您可以定义自己的命令,例如\HREF
,它只是构建链接而不执行任何其他操作。
这对我有用:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand\HREF[2]{\hyper@linkurl{#2}{#1}}
\makeatother
\begin{document}
\HREF{tmp}{open directory \texttt{tmp}}
\end{document}
请注意,这在 中有效xpdf
。Acrobat 出于安全原因禁用了此类链接。 evince
使用绝对路径 ( file:///home/boris/scratch
) 有效,但使用相对路径无效:以某种方式../tmp/
有效,但./tmp
无效。我猜这是 中的一些错误evince
。
答案2
正如鲍里斯在他的回答.pdf
如果没有找到扩展名,则会附加 ,。
为了避免这种情况,请使用\href{abc/.}{Open directory}
。.
(当前目录)看起来像文件扩展名。
答案3
如果是网络文件夹,你可以使用以下方式提供绝对路径
\href{run:/serverpath}
或者
\href{run:///serverpath}
例如
\href{run:///192.198.1.5/data}{Network Folder}
如果是本地文件夹,你可以使用以下方式提供绝对路径
\href{run://FolderPathOnC:Drive}
例如
\href{run://Users/Name/Downloads}{My Downloads Folder}
使用 Adobe Acrobat Pro DC 版本 2020.009.20065 进行测试。