[Tex/LaTex] hyperref: How to open a directory view with href{…}

hyperreflinks

I wrote a small LaTeX file which describes the contents of some directories.

Now I try to provide a direct link to the described files and directories. I successfully use \href{filename.ext}{Link name} to provide a link for files. Unfortunately if I pass a directory name to \href the PDF reader (tried with Adobe Reader and Evince) doesn't recognize the link.

Examples of unrecognized links (a directory named abc exists in the same directory as the .pdf is):

\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}

Does anyone know if there is any chance to do this?

Best Answer

The root of the problem is that hyperref tries to be smart. If no file extension is found, hyperref adds .pdf, so the link becomes either abc.pdf or abc/.pdf depending on whether there is trailing / in the call.

You can define your own command, say, \HREF, which simply constructs the link and does not do anything else.

This works for me:

\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand\HREF[2]{\hyper@linkurl{#2}{#1}}
\makeatother

\begin{document}
\HREF{tmp}{open directory \texttt{tmp}}
\end{document}

Note that this works in xpdf. Acrobat disables such links by security reasons. evince works with absolute paths (file:///home/boris/scratch) but balks at relative ones: somehow ../tmp/ works, but ./tmp does not. I guess this is some bug in evince.

Related Question