hyperref:如何使用 href{...} 打开目录视图?

hyperref:如何使用 href{...} 打开目录视图?

我编写了一个小型 LaTeX 文件,描述了一些目录的内容。

现在我尝试提供所述文件和目录的直接链接。我成功地使用它\href{filename.ext}{Link name}来提供文件链接。不幸的是,如果我将目录名称传递给\hrefPDF 阅读器(尝试使用 Adob​​e 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}

使用 Adob​​e Acrobat Pro DC 版本 2020.009.20065 进行测试。

相关内容