Wie man die beiden überzeugt miteinander zu reden.
Ich arbeite Momentan ein einem kleinen Paper für meine Diplomarbeit. Zur Organisation des Textes, der Notizen und Quellen benutze ich Org mode. Org hat eine LaTeX Export, so daß man sich das Strukturieren und Schreiben konzentrieren kann. Aber standardmäßig nutzt Org weder xelatex (UTF-8, direkter Output als PDF) noch biblatex (?) und ganz wichtig, es gibt keine direkte \cite
Unterstüzung.
Quellverweise
Zum Markieren von Quellverweisen nutzen wir Links im Org, die dann beim export zu \cite{ref}
umgewandelt werden. Dazu wird im Org-Dokument ein neuer Linktyp angelegt:
#+LINK: cite rtcite:bibliography.bib::%s
cite
und bibliography.bib
können auch umbenannt werden, ersteres wird für Links ala [[cite:Ref13]]
im org-Dokument gebraucht, letzteres ignoriert.
Damit die Quellverweise umgewandelt werden ist noch etwas elisp Code nötig:
(defun my-rtcite-export-handler (path desc format)
"converts rtcite:<bib"
(let* ((search (when (string-match "::#?\\(.+\\)\\'" path)
(match-string 1 path)))
(path (substring path 0 (match-beginning 0))))
(cond ((eq format 'latex)
(if (or (not desc)
(equal 0 (search "rtcite:" desc)))
(format "\\cite{%s}" search)
(format "\\cite[%s]{%s}" desc search))))))
(org-add-link-type "rtcite" nil 'my-rtcite-export-handler)
Ich habe meine bibtex Quellen direkt im Org-Dokument als Quellcode der vor dem PDF generieren getangled wird, die Überschrift aber mit :noexport:
getaggt ist. Wenn man nur BibTex nutzt genügt es am Ende des Dokuments einfach folgendes einzufügen:
#+BEGIN_LATEX
\bibliography{<dateiname ohne .bib>}
\bibliographystyle{alpha}
#+END_LATEX
Für biblatex sieht das etwas anders aus, das muß im LaTeX-Header eingebunden & konfiguriert werden:
#+LANGUAGE: de-de
#+LATEX_HEADER: \usepackage[style=alphabetic,citestyle=alphabetic]{biblatex}
#+LATEX_HEADER: \addbibresource{<Dateiname.bib>}
Die #+LANGUAGE:
Option sorgt dafür das das Babel Paket als ngerman
konfiguriert wird, wonach sich biblatex richtet und statt Ed. nun Hrsg. ausgiebt.
Das Ausgeben des erfolgt wieder am Ende mit
#+LATEX: \printbibliography
xelatex mittels latexmk
xelatex erfordert andere standard Pakete als pdflatex, bzw. solche wie inputenc stören/sind überflüssig.
(setq org-export-latex-default-packages-alist
'(("" "fontspec" t)
("" "xunicode" t)
("" "url" t)
("" "rotating" t)
("AUTO" "babel" t)
("babel" "csquotes" t)
("" "soul" t)
("xetex" "hyperref" nil)
))
Entweder weder konfigueriert man Org so das mehrmals xelatex und zwischendurch biber aufgerufen werden, oder man installiert noch latexmk und ruft diese einmal auf:
(setq org-latex-pdf-process '("latexmk -xelatex -bibtex-cond -f %f"))
Update Wie ich gestern herausfand sind die Software recht "neu". latexmk unterstützt xelatex erst seit Juli 2013, biber ist nicht in TeX Live 2009 (Version die Ubuntu 12.04 liefert) und die hidelinks Option für hyperref wurde 2011 oder so eingeführt. Benutzer von TeX Live oder MiKTeX sollten nach einem update auf 2013 alles haben.
TeX Live ist recht einfach zu installieren aber will standardmäßig erstmal 3GB installieren (die basis ist nur ein Zehntel enhält aber nicht die hier benutzten Pakete so daß man nachinstallieren muß)