Für längere Texte benutzte ich (hauptsächlich auf Arbeit) gerne das Programm Scrivener mindestens für einen ersten Entwurf, bevor ich das Dokument dann je nach Bedarf in Word, LaTeX, MultiMarkdown, … weiter bearbeite. Scrivener 3 ermöglicht dabei sogar komplett wie gewohnt WYSIWYG zu schreiben und automatisch in verschiedene Formate zu wandeln.
Nun war das Konfigurieren einer für mich angenehmen Arbeitsumgebung für wissenschaftliche Veröffentlichungen aber etwas steinig. Viele Hilfene, die man im Netz findet beziehen sich noch auf Scrivener 2. Deshalb fasse ich in diesem Artikel meinen Weg zusammen, um es dem einen oder der anderen leichter zu machen und für mich, damit ich nicht vergesse, wie das alles funktioniert.
Da ich den Artikel selbst natürlich auch mit Scrivener 3 geschrieben habe, war es nicht schwierig, neben dem Blogpost (Markdown) auch die PDF-Variant zu erstellen. Ferner stelle ich mein Scriverner Format Scientific Paper hiermit auch zur Verfügung.
Warum?
Warum sollte man wissenschaftliche Artikel mit Scrivener 3 schreiben?
Für mich besteht die Antwort in den in Scrivener enthaltenen Workflow-Unterstützungen, in Trennung zwischen Inhalt und Form und in der Möglichkeit, alle relevanten Informationen in Form von Texten, Webseiten, Bildern, MindMaps etc. in ein Projekt zu integrieren und jeder Zeit wieder beieinander zu haben. Aber es gibt noch viele weitere Gründe z.B. in diesem Blogposts zu lesen ist.
Wie?
Wie funktioniert das nun?
Auf das Schreiben und Arbeiten in Scrivener 3 möchte ich an dieser Stelle nicht weiter eingehen. Für mich bestand eine große Hürde in der Verwendung vor allem darin, Scrivener 3 dazu zu bringen, …
- (für mich akzeptablen) LaTeX Output zu generieren
- meine BibTeX Literaturdatenbank einzubeziehen
Um (dem zukünftigen) mir und anderen die Arbeit zu ersparen, das Rad neu zu erfinden, stelle ich die Basis-Schritte im folgenden zusammen.
Ich besitze ein funktionierenden LaTeX Workflow basierend auf TeXpad und TeXLive, sowie BibTeX via BibDesk. Mein Scrivner 3 Workflow soll nun so aussehen, dass ich…
- auf die BibTeX Datenbank zugreifen kann,
- ich den WYSIWYG-Editor von Scrivener benutzen kann,
- keine Änderungen am LaTeX-Code mehr nötig sind und
- am Ende ein PDF rausfällt.
Prinzipiell soll der Ablauf so aussehen:
- Scrivener 3 generiert MultiMarkdown (MMD) Code
- Scrivener 3 übersetzt diesen MMD in LaTeX
- Der LaTeX-Code wird in TeXPad geöffnet und in PDF übersetzt
Der letzte Schritt ist theoretisch auch aus der Kommandozeile, über ein AppleScript o.ä. durchführbar. Scrivomatic treibt das ganze auf die Spitze. Hilfe bei meiner Konfiguration habe ich vor allem in folgenden Blogposts gefunden:
- https://timbrandes.com/guide/2012/02/28/howto-write-your-thesis-in-latex-using-scrivener-2-multimarkdown-3-and-bibdesk/
- https://timbrandes.com/guide/2014/04/08/optimize-bibdesk-multimarkdown-and-scrivener-for-a-nice-scientific-bibliography-and-citation-workflow/
- https://abnormaldata.wordpress.com/2015/01/14/configuring-scrivener-latex/
Die Konfiguration
Im folgenden beschreibe ich nun die Konfiguration innerhalb von Scrivener 3, die zu diesem Ergebnis führt.
Einmal konfiguriert, kann man sich einen Fachartikel natürlich auch als Template (5.3 Project Templates) anlegen und den ganzen Konfigurationsaufwand für alle folgenden Artikel sparen.
Ich versuche meine Einstellungen passend zum Artikel am Ende auch bereitzustellen, freue mich aber auch über Zusendungen von Weiterentwicklungen oder eigenen Lösungen.
Ein Großteil der Magie geschieht wie bei Scrivener üblich im Menüpunkt Ablage - Kompilieren
(Alt-CMD E).
Hier wähle ich, wie oben Beschrieben die Methode MultiMarkdown -> LaTeX (.tex)
. Das Scrivener Manual widmet dem MultiMarkdown, Pandoc und LaTeX ein ganzes Kapitel Chapter 21.
Statt das Rad neu zu erfinden, kopiere ich den Standard und ändere ihn nur an einigen Stellen ab (Format duplizieren und bearbeiten).
Es erscheint ein Dialog, der in etwa wie folgt aussieht
Bei Formatbezeichung gebe ich Scientific Paper
ein. Selbstverständlich kann hier jeder das wählen, was ihm am sinnvollsten erscheint. Auch ist es wahrscheinlich, dass man im Laufe der Zeit verschiedene Detailformate erzeugt für bestimmte Anwendungszwecke.
MultiMarkdown Optionen
Die entscheidenen Schritte folgen unter der Auswahl Formatvorlagen und MultiMarkdown (MMD) Optionen. Hier geht es darum Scrivener Format-Vorlagen zu erzeugen, die auf MMD Befehle abgebildet werden können.
Neben Beschriftung
für Bild- oder Tabellenunterschriften sind die folgenden Absatzformate relevant:
- Code-Block und
- Zitat sperren
Code-Block
Vorlagen verwendet man, wenn man Source-Code im Text beschreiben möchte. Ein Absatz mit Source-Code wird in MMD mit drei eingeleitet und mit drei
in einer neuen Zeile beendet. Das übernimmt für uns an dieser Stelle Scrivener, wenn wir hier die Formatvorlage definieren und (s.u.) entsprechend der MMD Option zuweisen.
Hier ein Beispiel für Code-Block:
tell application "Mail"
activate
tell front window to set zoomed to true
end tell
Den Begriff Zitat sperren
habe ich aus irgendeiner Formatvorlage übernommen. Gerne kann hier ein griffigerer Name gewählt werden. Ein Block-Zitat wird in MMD dargestellt mit einer Zeile, die mit >
beginnt. Auch das konvertiert für uns Scrivener bei geeigneter Konfiguration (s.u.).
Ein Beispiel für ein Zitat:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut quis diam in lacus ullamcorper venenatis. Ut vitae elit ex. Etiam turpis ipsum, euismod vel porta eu, porta at eros. Suspendisse nec elit vitae enim rhoncus pretium in et lectus. Phasellus convallis ullamcorper ante, quis ultrices libero consectetur sed. Integer placerat, lacus eget porta tincidunt, odio nunc interdum massa, eget euismod tellus tortor vitae diam. Nulla a consequat libero. Pellentesque sagittis, metus vitae feugiat maximus, mauris massa interdum erat, faucibus vulputate nulla quam ut diam. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Es folgen zwei sog. Zeichenstile
:
- Code-Spanne und
- MMD-Code
Hier müssen wir selbst für den richtigen Präfix/Suffix im MMD-Code sorgen. Scrivener soll den Text “Als ruhen Aufschlag behandeln”. D.h. der Text wird unverändert in MMD übertragen.
Die Code-Spanne
ist die kleine Schwester vom Code-Block
. Er findet Einsatz, wenn nur einzelne Wörter eines Textes als Code interpretiert werden sollen, wie in diesem Abschnitt hier jeweils die Begriffe Code-Spanne
und Code-Block
.
Die Größte “Magie” stellt jedoch die Vorlage MMD-Code dar. Sie findet überall dort Einsatz, wo Scrivener den eigegebenen Text 1:1 an den MMD Interpreter durchreichen soll. Über diesen Trick kommt man dann auch an Funktion, wie Bibliotheksverweise heran aber prinzipiell auch alles andere, was MMD so im Werkzeugkasten hat, was Scrivener aber nicht automatisch generiert.
Bei MMD-Code benutze ich dabei die Funktion “Markierfeld um Text ziehen”, damit ich auch wirklich sehe, dass hier MMD-Code eingebettet ist und mich nicht über die Ausgaben wundere.
Formatvorlagen zwei Mal anlegen
Zu jeder Vorlage muss auch eine Formatvorlage im Editor erzeugt werden, damit die Formate auch im Text angesprochen werden können. Diese müssen exakt genauso heißen, weil sie sonst nicht richtig zugeordnet werden können.
MultiMarkdown Optionen
Die vorangegangenen Schritte sind eigentlich nur Vorbereitung für die Zuordnung der speziellen Formate in den MMD Optionen.
Wir müssen nun die verschiedenen Formatvorlagen dann auch in den MMD Optionen zugewiesen werden. Wie, erklärt sich durch die fast Begriffe von selbst.
MMD Option | Formatvorlage |
---|---|
Formatvorlage Block-Zitate | Zitat sperren |
Formatvorlage der Code-Blöcke | Code-Block |
Stil der Code-Spanne | Code-Spanne |
Überschriftensttil | Beschriftung |
LaTeX – Optionen
Die vorherigen Einstellungen dienten dazu, dass Scrivener MMD Code erzeugen kann und über Formatvorlagen gesteuert werden kann, welche Textbereiche wie in MMD dargestellt werden. Wäre unser Ausgabeformat MMD, wären wir nun fertig. Da aus dem MMD Code jedoch in einem weiterem Schritt LaTeX Code generiert werden soll, geht es wie folgt weiter.
Unter LaTeX-Optionen können fertige LaTeX-Einstellungen benutzt werden. Für meine wissenschaftlichen Artikel war jedoch leider nichts dabei, das ich so verwenden wollte, weshalb ich über die LaTeX Dokumentenklasse: Benutzerdefiniert
eigenen LaTeX-Code verwende.
Kopfzeile
Alles, was unter Kopfzeile geführt wird, wird dem LaTeX Dokument vorangestellt. Hier kommen Befehle, wie \documentclass
und die verwendeten \usepacke
Befehle rein. Meine vollständige “Kopfzeile” sieht wie folgt aus:
\documentclass[a4paper,abstract=on,notitlepage]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman,english]{babel}
\usepackage{ngerman}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage[square,authoryear]{natbib}
\usepackage{multirow,tabulary}
\usepackage{booktabs}
\usepackage[breaklinks]{hyperref}
Dokument beginnen
\begin{document}
\title{\mytitle}
\author{\myauthor}
\maketitle
Wie man hier sieht, habe ich auf umständliche Art und Weise mich als Autoren an dieser Stelle fest eincodiert. Besser wäre, wenn der Name aus den Projekteigenschaften übernommen werden würde. Da gab es aber irgendwelche Probleme. Wenn ich die beseitigt habe, reiche ich eine Korrektur nach. Für Hinweise bin ich natürlich auch sehr dankbar!
Wer möchte kann übrigens an dieser Stelle auch eine abstract
Umgebung einbauen. Man kann dann unter Metadaten ein Feld Abstract
einfügen, dessen Inhalt dann im Dokumentenkopf eingesetzt wird.
Fußzeile
\bibliographystyle{plainnat}
\bibliocommand
\end{document}
In der Fußzeile muss dann lediglich noch die BibTeX Referenzierung angehängt werden.
Für jedes Projekt
Das waren die Einstellungen, die man eigentlich nur einmal machen muss und die man dann unter Format exportieren
im Kompilieren...
Dialog speichern und wiederverwenden kann.
Für jedes Projekt (All About Projects) müssen dann unter Kompilieren...
immer noch folgende Metadaten erfasst werden:
Legende | Inhalt |
---|---|
Titel |
< $projecttitle>
|
BibTeX |
/Pfad/beispiel.bib
|
Base Header Level |
3
|
Author |
< $author >
|
BibTeX gibt den Pfad zur .bib Datei an, die für die Referenzen verwendet werden sollen. Hier kann man der Einfachheit halber auch relative Pfade, wie ../
etc. angeben.
Base Header Level gibt an, wieviele Überschriftenebenen verwendet werden sollen. Der Base Header Level muss zur \documentclass
passen. So hat z.B. scrartcl
kein \chapter
definiert, so dass nur mit \section
, \subsection
etc. gearbeitet werden kann.
Dabei bedeuten die folgenden Level die dahinterstehenden LaTeX-Kommandos:
Level | LaTeX-Command |
---|---|
1 |
\part{}
|
2 |
\chapter{}
|
3 |
\section{}
|
Tipps zur Nutzung
Hier noch einige Tipps für die Nutzung:
- Bilder alle über Doppelklick noch mal neu benennen und in den Namen keine Leerzeichen, Umlaute oder andere Schweinereien verwenden
- Wenn man Bilder gleich beschriftet, würfelt Scrivener die Bilder bei der Ausgabe durcheinander (dies gilt in der Regel zu vermeiden).
- Nutzt man in Überschriften Umlaute, erzeugt Scrivener automatisch Labels in LaTeX, die ebenfalls diese Umlaute enthalten, was nicht zulässig ist. Workaround: “MMD-Code” benutzen und Überschrift in
# "Uberschrift #
Schreibweise einsetzen. - Martin beschreibt in seinem Artikel, wie man sich das Leben mit BibTeX und LaTeX durch die Verwendung von Symlinks etwas leichter machen kann.
- Die App Store Version von Scrivener wird auf Grund der Regeln von Apple ohne Pandoc Unterstützung ausgeliefert[#llsup]. Deshalb würde ich auf jeden Fall empfehlen, die Version direkt on Literature and Latte zu kaufen.
Guten Tag Herr Hildmann,
gibt es mittlerweile eine Möglichkeit in Scrivener die Verweise nicht über die Schreibweisen [MulitMarkdown][#mitZitationsSchlüssel] bzw. ~citep[LaTeX-Format]{mitZitationsSchlüssel} zu schreiben?
Ist eine Variante vorhanden, die das Exportieren beispielsweise von Citavi in eine BibTex umgeht und das händische Kopieren der Zitationsschlüssel vermeidet?
Kann das Problem der fehlenden Schnittstelle zwischen Scrivener und Citavi behoben werden?
(Links zu Erklärung der Workflow-Einrichtung, wie das Problem mit Citavi 5 wohl teilweise gelöst werden konnte, funktionieren nicht mehr und bei Citavi 6 findet sich online nichts in der Richtung.)
Vielen Dank im Voraus für Hinweise!
Lieber Herr Maier!
Leider kann ich Ihnen in Bezug auf Citavi und Scrivener überhaupt nicht weiterhelfen. In den von mir benötigten Anwendungsfällen hatte ich lediglich nach einer Möglichkeit der Integration Scrivener BibTeX gesucht.
Auch mit Alternativen zur Referenzierung über Markdown habe ich mich bislang nicht beschäftigt.
Viele Grüße
Thomas Hildmann
Hallo Herr Maier,
Citavi bietet eine Export-Möglichkeit in BibTex. Das muss derzeit der Workarround sein, da weder Literature&Latte noch SwissAcademicSoftware interesse an einer Schnittstelle (analog zum Word-Plugin) haben.
Gruß
Patrick Drews