Sie sind hier

Emacs und Helferlein, Folge 2: Springen zwischen pdf und Text

Wozu?

Das nützlichste Helferlein, wenn man längere Texte mit Emacs schreibt,
hört auf den Namen synctex. Wozu es dient, erklärt man am besten am Beispiel des Korrekturlesens:

Bekanntlich findet man Druckfehler auf dem Papier viel leichter als am
Bildschirm. Ich drucke alle längeren Texte vor dem Versenden einmal
zur Korrektur aus. Wenn ich dann auf Seite 3 im zweitletzten Absatz
statt »Anlage« mal wieder »Analge« geschrieben habe, markiere ich den
Fehler auf dem Papier. Aber wie findet man diese Stelle dann im
Quelltext im Editor?

Naja, ich könnte mit C-s das Wort »Analge« suchen gehen. Aber das
klappt schon nicht mehr, wenn mir statt eines Buchstabendrehers ein
Grammatikfehler unterlaufen ist; wenn ich also statt »vor«
versehentlich »von« getippt haben sollte. Es gibt wahrscheinlich
ziemlich viele »von« im Text.

Die einfachste Lösung besteht darin, nicht im Text im Editor zu
suchen, sondern im pdf, denn der Ausdruck vor mir sieht ja genau so
aus wie das Bild davon auf dem Bildschirm. Das praktische an »synctex«
ist, dass ich in meinem pdf-viewer in den betreffenden Absatz mit dem Fehler
(doppel-)klicke und der pdf-viewer dann Emacs in den Vordergrund holt;
Emacs stellt dann den Cursor in den betreffenden Absatz. Schon kann
ich korrigieren. Umgekehrt kann ich von einer beliebigen Stelle im
Editor aus den pdf-viewer aufrufen, der mir dann die betreffende Seite
zeigt (nicht ganz so nützlich).

Man nennt das auf Englisch »Forward and Inverse Search« und sie
funktiert über einen Mechanismus namens synctex (es gibt auch
andere). Die Einrichtung von Emacs einerseits und dem pdf-viewer
andererseits ist fehleranfällig. Dazu kommt noch, dass sich jede neue
Version von AUCTeX anders verhält.

Inverse Search unter Linux mit Okular als pdf-viewer

Der pdf-viewer muss natürlich darauf ausgelegt sein, dass man an eine
bestimmte Stelle ins pdf klickt und damit zur entsprechenden
Textstelle im Editor gelangen will. Es funktioniert auf jeden Fall
unter Linux mit Okular, ich nehme an, auch mit Evince.

Bei meiner gegenwärtigen Okularversion (KDE SC 4.6.4, Juni 2011) sieht
der Einrichtungsdialog Emacs vor und schlägt für die Rückwärtssuche in
den Text folgenden Befehl vor:

emacsclient -a emacs --no-wait +%l %f

Man muss aber wissen, dass Okular die Rückwärtssuche nur dann startet,
wenn man die Shift-Taste drückt, während man mit der linken Maustaste
auf das zu suchende Wort klickt. Doppelklicks versteht Okular nicht,
warum auch immer.

Inverse Suche mit Windows XP und Sumatra-PDF

Häufig ist bei praktischen Helferleins die Linux-Fraktion
schneller. Hier war's nach meiner Erinnerung anders: William Blum
veröffentlichte einige Patches zum kurz zuvor erschienenen pdf-viewer
Sumatra-PDf, mit dem inverse Suche möglich war. Inzwischen sind die
Patches in den Hauptentwicklungszweig von Sumatra-PDF aufgenommen.

Ob unter Windows auch andere pdf-Betrachter den Trick beherrschen,
weiß ich nicht.

Für die Einrichtung von Emacs hält man sich am besten an Blums
Anleitung, er hat sogar eine eigenes Lisp-Programm namens
sumatra-forward.el verfasst.

Einrichtung von Emacs

AUCTeX sieht – jedenfalls in Version 11.86 – die Suche vom Editor in
den pdf-Betrachter und umgekehrt vor. Trotzdem ist mir die Einrichtung
schwer gefallen. Inzwischen gibt es aber nachvollziehbare Anleitungen
im Netz, sofern man Englisch versteht.

Vom pdf in den Text zu wechseln ist ein ungeheuer nützliches Feature,
inzwischen funktioniert es unter Linux und Windows ziemlich perfekt --
geniale Sache.

Autor: AW

Org version 7.5 with Emacs version 23

Validate XHTML 1.0

Kommentare

Bild von Markus Kohm

AFAIK funktionierte reverse search mit aucTeX und xpdf unter Verwendung von vpe.sty (damals konnten tex und pdftex das noch nicht selbst) bereits 2005. Allerdings hatten Pakete wie srcltx (für den DVI-Weg) und vpe immer wieder unschöne Nebenwirkungen. Für DVI wurde dann (AFAIR 2006) Unterstützung via Option -src-specials in tex selbst eingebaut.

Es gab dann zwischenzeitlich für pdftex pdfsync-genannte Bestrebungen. Die hatten allerdings dieselben Nebenwirkungen, die wir bereits von srcltx kennen und die leider auch mit -src-special nicht komplett beseitigt sind.

Jerome Laurens stellte im September 2007 dann einen ersten Patch für pdftex vor, der forward search und reverse search mit pdftex möglich machen sollte. Im Februar 2008 stieß er die Diskussion dazu dann noch einmal mit dem Hinweis an dass xpdf das inzwischen unterstütze (wobei ich fast vermute, dass er die alte pdfsync-Methode meinte und noch nicht sein neues synctex-Datei-Format, aber ich kann mich da irren). Option -synctex für pdftex und xetex gibt es AFAIR seit TeX Live 2008.

Funktionierende SyncTeX-Patches für evince waren AFAIK Anfang August 2008 verfügbar. Seit wann diese offizieller Bestandteil von evince sind, konnte ich leider nicht feststellen. In der Ankündigung von Gnome 2.32 war es erst 2010 zu finden. Okular konnte das alte pdfsync bereits 2008, während synctex offiziell AFAIK seit KDE 4.3 (Release war August 2009) unterstützt wird. Es gab aber ebenfalls bereits 2008 Diskussionen und Code-Schnippsel dazu.

Comments for "Emacs und Helferlein, Folge 2: Springen zwischen pdf und Text" abonnieren