18

I want to add hyperlinks to external pdfs (which are saved in the local file system) and to specific pages of these pdfs to a LaTeX document on MacOS X and opening them with Skim.app (default).

My problem is: it works, if the pdf is in the same path as the latex document and I use a \href{./filename.pdf} (However, the [page=2] option does not work then.)

But if I try to use an asolute path like \href{/Users/myaccount/folder/test.pdf} or {/Volumes/Data/folder/folder/test.pdf}, a click on the link in the pdf created by LaTeX does not open the linked file.

I also tried to use "file:///Volumes/.." and "run:///volumes..", but it does not work. However, I can successfully open a link like "file:///Volumes/Data/Folder/file.pdf" in Safari!

How can I fix that?

I'm using TeXLive 2010 on OS X 10.6.5 and pdflatex for compiling.

minimal example:

\documentclass[11pt]{scrreprt}

\usepackage{hyperref}
\hypersetup{bookmarksopenlevel={2}, bookmarksopen = true, 
colorlinks= false, linkbordercolor = 0 1 0.5, urlbordercolor = 0 0 1
}

\begin{document}


that works, but it opens on page 1 and not on page 3
\href[page=3]{run://test.pdf}{relative path}

that does not work:
\href[]{/Volumes/Daten/test.pdf}{absolute path}


\end{document}
6
  • Related question: pdfpages and linktodoc Mar 6, 2011 at 17:36
  • @Martin: unfortunately the solution is not the same. Mar 7, 2011 at 22:02
  • @Matthew: sorry, I do not understand what you mean. "the same" like what? Mar 9, 2011 at 19:24
  • sorry, my comment was to Martin Scharrer. What I meant was that the answers to the question Martin S linked to did not solve this problem. They all involve relative, not absolute paths. Mar 9, 2011 at 20:58
  • How i can open some pdf file on specific page? I use \href[page=3]{run://test.pdf}{relative path}, it works fine, file is opened, but on page 1. Can you help?
    – user11986
    Feb 22, 2012 at 12:26

4 Answers 4

7

After some hours with Skim, I have these conclusions

  1. I presume that Skim is defined to be the default PDF viewer, and Preview is the default PNG and JPG viewer.

  2. \href{file://absolute path to/calledfile.png}{link} works fine with Skim, instead of PNG you can use JPG. Examples: \href{file:///Users/altermundus/Desktop/bosch2.jpg}{jpg abs link} or \href{file:///Users/altermundus/Desktop/Einstein.png}{png abs link}

  3. But \href{file://absolute path to/calledfile.pdf}{link} does not work with Skim. Example: \href{file:///Users/altermundus/Desktop/Newton.pdf}{Newton.pdf absolute path}

  4. It's possible to use \href{run:calledfile.pdfor \href{run:calledfile.png but the file called must be in the same folder that your initial PDF. Remark: with Skim we can see that the link is: file://localhost/.../calledfile.pdf localhost/... is the absolute path for your main.pdf file.

  5. Possible: \href{run:/tmp/file.pdf you need to put the calledfile inside tmp/ The path of called file is relative to main.pdf file: <path to the main file>/tmp/calledfile.pdf.

  6. A new try for the PDF file. \href{run:myscript.sh}{myscript}. You can create a script file name myscript.sh with

    \#!/bin/bash 
    
    open -a skim /Users/altermundus/Desktop/Newto.pdf
    

    This script must be executable : $ chmod +x /Users/altermundus/Desktop/myscript.sh Then, in main.pdf you write

    \href{run:myscript.sh}{myscript}
    

    This script must be in the same folder than main.pdf or a subfolder .

    My test file is :

    % the file is compiled inside a folder named : myfolder 
    %   /Users/altermundus/myfolder 
    \documentclass{scrartcl}
    \usepackage{graphicx}
    \usepackage{hyperref}
    \begin{document}
    
    % absolute path problem with pdf file     
    \href{file:///Users/altermundus/Desktop/bosch.jpg}{bosch.jpg absolute path}\par
    % relative path  
    \href{run:Einstein.png}{Einstein in the same folder}\par %  myfolder/Einstein.png  
    \href{run:tmp/Einstein.png}{Einstein in a subfolder}\par 
      % myfolder/tmp/Einstein.png
    \href{run:texteinv.pdf}{Newton.pdf}\par % myfolder/Newton.pdf 
    \href{run:bosch.jpg}{run:bosch.jpg}\par % myfolder/bosch.jpg
    \href{run:/tmp/myscript.sh}{Newton.pdf}\par % myfolder/tmp/myscript.sh
    % but myscript calls /Users/altermundus/Desktop/Newton.pdf
    \href{file:///Users/altermundus/Desktop/myscript.sh}{Newton.pdf absolute path}\par
    
    \end{document}
    

    Final remarks: With Preview, only \href[]{run:texteinv.pdf}{Newton.pdf} works and only Adobe Reader and Adobe Acrobat Pro are able to open \href{file:///Users/altermundus/Desktop/Newton.pdf}{Newton.pdf absolute path}.

I await an answer from Christiaan Hofman (the author of Skim).

6
  • thanks for your efforts. I read a post on the skim users mailinglist - I suppose it's yours. Mar 9, 2011 at 19:25
  • @Altermundus: When trying something similar SKIM opens the script in a text editor. How can I tell it to run the script?
    – Dror
    Dec 9, 2011 at 16:17
  • @Dror Your script must be executable : $ chmod +x Dec 9, 2011 at 23:21
  • @Altermundus: It is. In any case, what worked for me is tex.stackexchange.com/a/37737/412. Thanks!
    – Dror
    Dec 10, 2011 at 5:26
  • I had to change the suffix of the shell script to .command on OS X in order to make it work. .sh was assigned to a text editor which was opened instead. (Skim, OS X 10.10.1, run:script.command)
    – Lenar Hoyt
    Jan 10, 2015 at 16:26
4

I poked around and found the same information as you:

  • \href{run:file.pdf}{file} will open the pdf in the default application for pdfs
  • \href{run:///global/path/to/file.pdf} will attempt to open a file at the path point given by the current directory with ///global/path/to/file.pdf appended. Obviously this file doesn't exist, so you get an error.
  • \href{file:///global/path/to/file.pdf} creates a file link in the PDF with location "Macintosh HD:Volumes:global:path:to:file.pdf" Note the colons. I'm not sure if this is the correct path, though, since in POSIX style paths the Volumes comes first, then Macintosh HD. In any case, the link doesn't open anything.

    Edit: I opened the PDF in Acrobat (Pro) to verify the link's location. When I manually edited the link in Acrobat to have it open the file I wanted, the location was changed to "Macintosh HD:global:path:to:file.pdf" (no Volumes). So some agent is miswriting or misreading that location.

No solution from me, but one workaround is to make a symbolic link of the target file into your document's directory. Then you can use the \href{run:test.pdf}{local} syntax you describe above.

9
  • @Matthew: with \href{file:///global/path/to/file.pdf} do you have try with "adobe reader" ? Mar 6, 2011 at 17:47
  • @Altermundus: Tried with with Adobe Acrobat Pro, which was how I was able to examine the created link. Mar 7, 2011 at 2:45
  • @Matthew: thank you. So it seems to be a special problem of OS X and the pdf readers?! :-( Your hint on the paths is a big step into the right direction, thank you for that. Is there a way to see the "real" file path of the link without having Acrobat Pro? but adding symbolic links for my >800 pdfs is also not an option for me. Mar 7, 2011 at 6:05
  • @Altermundus: using Adobe Reader is not an option for me. :-( I need the features of Skim. Mar 7, 2011 at 7:04
  • @Martin: me too :( I need to post on the OS TEX list to get a specific answer and at the author of Skim. But I think Skim and Preview use the same engine. Mar 7, 2011 at 7:43
3

I proceed like this

\href[]{file:///Users/ego/Desktop/bosch2.jpg}{absolute path}

This works fine with Skim and not with Previewbut if the link is with a pdf file, I need to open the first pdf with adobe reader. The problem seems specific to Mac os x and the pdf viewers.

0
2

I found a very short but very hacky solution. Just abuse the nice and working relative links:

\href{../../../../../../../../../../../../home/juve/phd/papers/my-linked-paper.pdf}{file}

I generate such links into my bib files and can now quickly jump from my references to the paper itself.

2
  • 1
    ouch! Anyway, thanks for sharing your workaround! Mar 15, 2013 at 9:52
  • 1
    I use this mainly for draft work where I need some quick shot links to all files in a dir and do not want to maintain bibtex entries for dozens of files that will be not considered later on.
    – Juve
    Mar 15, 2013 at 10:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .