emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Jan Böcker" <jan.boecker@jboecker.de>
To: Joe Riel <joer@san.rr.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Specify page number in hyperlink [to pdf]
Date: Thu, 29 Apr 2010 21:22:24 +0200	[thread overview]
Message-ID: <4BD9DC70.3090006@jboecker.de> (raw)
In-Reply-To: <4BD87ED7.5030907@san.rr.com>

On 28.04.2010 20:30, Joe Riel wrote:
> The hyperlink syntax allows specifying a line number, however,
> that doesn't do anything (other than force the document to
> be opened inside of emacs) with a non-text file (say a pdf).
> 
> Is therea an extension to allow specifying a page number
> so that a link to a pdf is opened at the specified page?

There is in the current git version, its not yet documented though.


Add an entry to the variable org-file-apps like this:
("\\.pdf::\\([0-9]+\\)\\'" . "evince \"%s\" -p %1")

Or as seen in the customize interface:
Extension: \.pdf::\([0-9]+\)\'
Command:   evince "%s" -p %1

The subexpression \([0-9]+\) in the regex captures the page number,
which replaces the %1 in the command string. (This example assumes you
want to open your PDFs with evince, which accepts a page number after
the -p option.)

You can then reference a specific page of a PDF like this:
[[file:/path/to/document.pdf::42]]

I had planned to document this yesterday, but unfortunately spent the
better part of the day recovering from a cold. I will send a patch
describing how this works, when exactly the new behaviour kicks in and
the implications for backwards compatibility as soon as I find time to
describe it compactly enough to fit into the docstring.

HTH, Jan


PS: Here is my first draft of the change to the docstring; it does not
mention custom lisp forms yet, and still makes the docstring too long
for my taste. I guess I'll write a separate tutorial on worg which I'll
reference in the docstring, and include in the docstring only one
example of the extended feature and information on backwards compatibility.


 \"regex\"     Regular expression matched against the file name.  For
backward
                compatibility, this can also be a string with only
alphanumeric
                characters, which is then interpreted as an extension.
+
+               If this regular expression captures parts of the
+               match using groups (subexpressions), it is matched
+               against the whole link instead; \"%n\" in a
+               command string will be replaced by the n-th
+               subexpression match, just like \"%s\" is replaced
+               with the file name.
+
+               For backwards compatibility, this behaviour is not
+               triggered if the command string does not contain
+               any \"%n\", i.e. in that case the regexp is still
+               matched against the file name.
+
+               If you want to use groups in your regexp but do not want
+               it matched against the whole link, use shy groups like this:
+	       \"\\(?:txt|html\\)\"

  reply	other threads:[~2010-04-29 19:22 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-28 18:30 Specify page number in hyperlink [to pdf] Joe Riel
2010-04-29 19:22 ` Jan Böcker [this message]
2010-04-30  4:27   ` Joe Riel
2010-04-30  4:43   ` Joe Riel
2010-04-30  8:10     ` Nick Dokos
2010-04-30 13:05       ` Jan Böcker
2010-04-30 15:24         ` Nick Dokos
2010-04-30 15:28           ` Carsten Dominik
2010-04-30 14:28       ` Joe Riel
2010-04-30 16:03         ` Nick Dokos
2010-04-30 17:23           ` Joe Riel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BD9DC70.3090006@jboecker.de \
    --to=jan.boecker@jboecker.de \
    --cc=emacs-orgmode@gnu.org \
    --cc=joer@san.rr.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).