AA_tennis_patita-rds_sxc_1181268.jpg

© Patita_rds, sxc.hu

Text, Satz, Sieg

LibreOffice als komfortabler Editor für LaTeX

09.01.2013
Mit Writer2LaTeX verknüpfen Sie die angenehmen Möglichkeit der Eingabe in LibreOffice Writer mit dem perfekten Druckbild des Satzsystems LaTeX.

Wer in Team-Arbeit ein Dokument erstellt, muss sich zwangsläufig mit der Frage auseinandersetzen, welches Programm dazu zum Einsatz kommen soll. Eine gängige Antwort lautet "Word", gelegentlich bringt ein Kollege "Writer" ins Spiel – nur "LaTeX" ist so gut wie nie zu hören. Die beiden Erstgenannten bieten jedoch nicht die perfekte Ausgabe des Satzsystems, das seinerseits wiederum in Sachen Komfort bei der Eingabe gewöhnungsbedürftig erscheint.

Eine Lösung des Dilemmas verspricht Writer2LaTeX [1]: Es wandelt alle Formate, für die es in LibreOffice einem Import-Filter gibt, nach LaTeX um, und ermöglichen so alle Mitstreitern die (fast) freie Wahl des Editors.

Die Software besteht im Moment aus vier stabilen Paketen: Writer2LaTeX (kurz W2L) übernimmt das Umwandeln von Writer-Dokumenten in LaTeX-Dateien. Dazu gesellen sich Writer2BibTeX, das Literaturangaben aus einem Writer-Dokument extrahiert und in einer BibTeX-Datei speichert. Mit Writer2xhtml wandeln Sie Texte aus LibreOffice nach XHTML, wandeln Sie mit MathML 2.0 und CSS2 zur Anzeige in Webseiten um oder geben Sie als EPUB aus. Über Calc2xhtml schließlich konvertieren Sie Tabellen aus der Office-Suite nach XHTML (mit CSS2) zur Anzeige in Webseiten.

Writer4LaTeX, eine Erweiterung (Extension) für Writer, um diesen in eine LaTeX-Installation zu integrieren, befindet sich noch in einem sehr frühen Entwicklungsstadium. Die meisten Distributionen enthalten LibreOffice samt der Extension (Paket writer2latex), allerdings nicht immer in der aktuellsten Version (siehe Kasten "Installation").

W2L installieren

Bietet die verwendete Distribution keine aktuelle Version von W2L, so installieren Sie es – eine Java-Laufzeitumgebung vorausgesetzt – leicht selbst nach. Dazu laden Sie die aktuelle Version (zu Redaktionsschluss die Datei writer2latex12beta.zip) aus dem Web [1] oder von der Heft-DVD herunter. Obwohl W2L noch im Beta-Stadium steckt, läuft es sehr zuverlässig. Sie entpacken die ZIP-Datei in ein beliebiges Verzeichnis und erteilen dann der Datei writer2latex12/w2l mittels chmod +x writer2latex12/w2l das Ausführungsrecht. Nun fügen Sie das Verzeichnis writer2latex12 der Umgebungsvariablen PATH hinzu und können das Tool dann mit w2l aufrufen.

Aufruf

Es gibt im Wesentlichen vier Möglichkeiten, W2L zu verwenden. Im einfachsten Fall verwenden Sie das Programm als Extension direkt in LibreOffice. Dazu laden Sie die OXT-Datei aus dem Netz oder von der Heft-DVD nach. Für die ersten Versuche und zum Testen erweist sich dies als ausreichend. Allerdings bieten die Menüs nur die vorgegebenen Einstellungen und lassen wenig Raum für Anpassungen (Abbildung 1).

Abbildung 1: Die Dialog zum Export beim Einsatz von Writer2LaTeX als Extension bietet viele Möglichkeiten zur Konfiguration, schöpft aber bei weitem nicht das volle Potenzial der Software aus.

Alternativ starten Sie W2L von der Kommandozeile (Listing 1), wozu Sie LibreOffice als Programm nicht benötigen. Hier nehmen Sie alle Einstellungen entweder direkt oder über eine Konfigurationsdatei in einem XML-Format vor. Eine dritte Variante stellt der Aufruf von W2L aus einem Java-Programm dar, was sich aber in der Regel als wenig praktikabel erweist.

Listing 1

$ w2l -ultraclean writerbeispiel.odt writerbeispiel_ultraclean.tex
This is Writer2LaTeX, Version 1.0.2 (2010-05-31)
Starting conversion...
Reading default configuration ultraclean.xml
Converting writerbeispiel.odt
Done!

Die komfortabelste Methode, gerade für das Erstellen umfangreicher Dokumente, ist der Aufruf über ein Apache-Ant-Skript (siehe Kasten "Das Build-Tool Apache-Ant"). Das Paket ant-worker stellt entsprechende Möglichkeiten bereit (Listing 2). Die Entwickler arbeiten seit 2010 an dem Projekt und erweitern es schrittweise, seit kurzem steht es auf Sourceforge bereit [2]. Sie finden es außerdem auf der Heft-DVD.

Das Build-Tool Apache-Ant

Ant diente ursprünglich zum Erstellen von Java-Programmen. Dabei übersetzt das Programm ähnlich wie Make die entsprechenden Dateien nur dann, wenn sich die Ursprungsdatei geändert hat. Über diverse Regeln und Vorgaben legen Sie fest, welche Datei oder welcher Aufruf von welcher Quelle abhängt. Inzwischen kommt Ant nicht nur beim Übersetzen von Java-Programmen zum Einsatz, sondern in vielen Bereichen, da es sehr leicht fällt, entsprechende Regeln zu schreiben und so LaTeX-Dokumente zu übersetzen.

Listing 2

<ifnewer srcdir="${odt.dir}"
    destdir="${target.dir}"
    srcextname=".*\.odt$"
    destextname="tex"
    verboseheader="false">
  <writer2latex config="ultraclean.xml" />
</ifnewer>

Dabei überprüft die Software die ODT-Dateien im Quellverzeichnis. Gibt es zu einer gefundenen Datei im Zielverzeichnis eine entsprechende TeX-Datei, deren Zeitstempel älter ist, unternimmt das Programm nichts. Fehlt die Datei oder ist älter, so führt die Applikation die passende Aufgabe aus.

Dabei gibt das Tool die Parameter wie Quell- und Zieldatei an den Aufruf zum Konvertieren weiter. Der Task writer2latex ruft mit der angegebenen Konfiguration die W2L-Java-Bibliothek auf. Als Ergebnis erhalten Sie die gewünschte LaTeX-Datei.

Erstes Beispiel

Im ersten Beispiel kommt ein Writer-Dokument (Abbildung 2) zum Einsatz, das normale Elemente enthält, wie etwa Überschriften, Text, Bilder, Tabellen, Formeln und Aufzählungen. Die Besonderheit bei den Bildern liegt darin, dass eines direkt importiert wurde, das andere jedoch nur über einen Verweis (Link) eingebunden ist.

Abbildung 2: Das Writer-Beispiel-Dokument.

Standardmäßig stellt W2L fünf Konfigurationen bereit (siehe Tabelle "Basiskonfiguration"). Die erzeugte LaTeX-Datei folgt dabei im Aufbau den Konventionen für diesen Dokumententyp: Auf den Header folgt eine Präambel mit allen Deklarationen. Daran schließt sich der eigentliche Text des Dokument an.

Basiskonfiguration

Parameter Konfigurationsdatei Beschreibung
-ultraclean ultraclean.xml Entfernt fast alle Formatierungen.
-clean clean.xml Entfernt Formatierungen, aber nicht so restriktiv wie -ultraclean.
-pdfscreen pdfscreen.xml Für die Präsentation am Bildschirm optimiert.
-pdfprint pdfprint.xml Für die Ausgabe auf einem Drucker optimiert.
-article article.xml Die Klasse article kommt zum Einsatz, viele Formatierungen bleiben erhalten.

Der erste Teil des Beispiels (Listing 3) zeigt den Kopf der LaTeX-Datei. Als Encoding kommt dabei reines ASCII zum Einsatz, daher stehen Umlaute in der LaTeX-Notation im Text. Metadaten zum Titel oder Autor übernimmt die Software aus den Einstellungen von LibreOffice. Formatvorlagen setzt W2L dabei in entsprechende Makros oder Umgebungen für LaTeX um, wie Überschrift 1 in section oder Überschrift 2 in subsection.

Listing 3

% This file was converted to LaTeX by Writer2LaTeX ver. 1.3.1
% see http://writer2latex.sourceforge.net for more info
\documentclass{article}
\usepackage[ascii]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amssymb,amsfonts,textcomp}
\usepackage{array}
\usepackage{supertabular}
\usepackage{hhline}
\usepackage{caption}
\usepackage{graphicx}
\makeatletter
\newcommand\arraybslash{\let\\\@arraycr}
\makeatother
\setlength\tabcolsep{1mm}
\renewcommand\arraystretch{1.3}
\title{}
\author{Michael Niedermair}
\date{2012-08-25}
\begin{document}

Einen wichtigen Punkt stellt das Umwandeln von Bildern dar. Für jedes eingebundene Bild erzeugt W2L eine eigene Datei, sofern es das Format unterstützt. An den Dateinamen hängt es -img001 für das erste Bild an, die Datei-Endung hängt vom eingebundenen Format ab. Das erste Bild trägt im Beispiel den Dateinamen writerbeispiel-img001.jpg.

Externe Bilder bindet W2L mit dem angegebenen Namen ein. Hier ist es sinnvoll, in der Office-Suite unter Optionen | Laden/Speichern | Allgemein die Option URLs relativ zum Dateisystem speichern zu verwenden: Das sorgt dafür, dass kein absoluter Pfad zum Einsatz kommt und das Dokument sowie der LaTeX-Export auf anderen Systemen funktionieren.

Der vorher schon erwähnte Export birgt noch ein weiteres Problem: LaTeX unterstützt im Wesentlichen nur Postscript-Bilder, jedoch kein PNG oder JPEG. Erst PDFLaTeX versteht sich auf diese Formate. Im Export sehen Sie an den entsprechenden Stellen den Text Warning: Image ignored in eckigen Klammern; der Code für das eingebundene Bild ist mit einem vorangestellten Prozentzeichen deaktiviert.

Eingebettete Tabellen verfrachtet der Export in die Umgebung supertabular. Bei Formeln kommt die Umgebung equation zum Einsatz, für Aufzählungen itemize oder enumerate. Letzteres hängt davon ab, ob Sie mit Aufzählungszeichen oder einer fortlaufenden Nummer gearbeitet haben.

Große Dokumente

Bei umfangreichen Texten ist es wenig sinnvoll, diese in ein einziges Dokument mit Kopf, Präambel und Textkörper umzuwandeln. Die Erfahrung lehrt, dass man solche Dateien besser in einzelne Bereiche (Kapitel) aufteilt und diese jeweils in einer eigenen Datei speichern.

Das ermöglicht es zudem mehreren Autoren, gleichzeitig an den Dateien zu arbeiten. Zudem brauchen Sie immer nur das geänderte Dokument neu zu übersetzen, wodurch W2L weniger Speicher verbraucht. Bei sehr großen Dokumenten mit komplexeren Strukturen kommt es gelegentlich vor, dass W2L mit einem Fehler beim Zugriff auf den Arbeitsspeicher abstürzt.

Zusätzlich zu den Teilen erzeugt W2L ein Hauptdokument mit Kopf und Präambel, die Teildokumente benötigen diese dann nicht mehr. In der Hauptdatei binden Sie die Kapitel über \input{Kapitel} ein, wobei Kapitel dem Dateinamen ohne Endung entspricht.

Vorüberlegungen

Bevor Sie die Arbeit angehen, lohnt es sich, zu überlegen, welchen LaTeX-Compiler Sie verwenden. Die alteingesessenen Varianten sind das klassische LaTeX sowie PDFLaTeX. Beide verwenden im wesentlichen nur Type1-Fonts (PFB- und AFM-Dateien). Truetype- oder Opentype-Fonts erfordern meist aufwändige Handarbeit.

Zu den modernen Varianten gehören XeTeX [3] (an dem aber niemand mehr arbeitet) und Luatex [4], das voraussichtlich die Nachfolge von TeX antritt. Luatex unterstützt TFF- und OTF-Fonts, auch bei den gängigen Formaten für Bilder gibt es hier keine Probleme.

Der nächste Punkt betrifft das Encoding. Bei LaTeX-Dateien handelt es sich um reine Textdateien, bei denen Sie mit der Kodierung festlegen, wie eine Software ein Zeichen in eine Datei schreibt. Die meisten Betriebssysteme verwenden inzwischen UTF-8 als Encoding. Daher ist es sinnvoll, dies beim Umwandeln ebenfalls einzusetzen.

Ein weiterer Vorteil ergibt sich dabei aus der Tatsache, dass besondere Zeichen, die Sie in LibreOffice über Einfügen | Sonderzeichen einfügen, als entsprechendes UTF-8-Zeichen im Export erscheinen. Unterstützt der verwendete Font dieses Zeichen, sehen Sie es korrekt am Bildschirm und im Ausdruck.

Ein wichtiger Punkt bei den Vorüberlegungen sollte der Arbeit im Team gelten: Gerade Autoren, die meinen, Sie könnten perfekt mit der Textsoftware umgehen, ändern gerne die Vorlage nach eigenem Belieben oder erstellen Formatierungen nicht nur mit der Vorlage, sondern modifizieren die Schrift zusätzlich über die direkten Möglichkeiten, die das Programm bietet.

Bekommen Sie solche Dokumente, braucht es meist viel Handarbeit, diese wieder in einen Zustand zu bringen, mit dem sich weiterarbeiten lässt. Das Ziel sollte es daher sein, dass möglichst viele der eigenmächtigen Formatierungen automatisch aus dem Text verschwinden.

Konfigurieren

Als Herzstück der Konfiguration dient eine XML-Datei. Einfache Konfigurationen nehmen Sie dabei über einen Key-Value-Eintrag vor, etwa um das Encoding auf UTF-8 festzulegen. Eine Übersicht über alle Konfigurationsparameter findet sich im Netz [5].

Geht es darum, bestimmte Layout-Definitionen umzusetzen, so verwenden Sie das Element <style-map/>. Möchten Sie beispielsweise das Layout Listing, das Quellcode enthält, in die LaTeX-Umgebung verbatim umsetzen, so verwenden Sie dazu die Konfiguration aus Listing 4.

Listing 4

<style-map name="Listing"
  class="paragraph-block" next="Listing"
  before="\begin{verbatim}" after="\end{verbatim}" />
<style-map name="Listing" class="paragraph"
  before="" after="" verbatim="true" />

Der Compiler verarbeitet dabei das Layout Listing als Block, in dem er mehrere Zeilen zusammenfasst. Vor den Block schreibt er in das LaTeX-Dokument die Anweisung \begin{verbatim} und beendet diesen mit \end{verbatim}. Die einzelnen Zeilen im Block bekommen keine besondere Auszeichnung, sondern erscheinen unverändert. Dies ist besonders dann wichtig, wenn Sie Quellcode-Zeilen ins Originaldokument einfügen, da diese sonst unter Umständen die Ausgabe in LaTeX beeinflussen.

TIPP

Anstelle der Umgebung verbatim bietet es sich in vielen Fällen an, die komfortablere Umgebung lstlisting zu verwenden.

Formate entfernen

Listing 5 zeigt die Konfiguration, um ein möglichst einfaches LaTeX-Teildokument zu erhalten. Möchten Sie sehen, welche Formatvorlagen das Tool zu welchen Umgebungen umsetzt, tragen Sie bei der Option debug als Wert true ein.

Für das Formatieren ist der Parameter formatting zuständig. Er kennt fünf mögliche Einstellungen: Mit convert_all konvertieren Sie jedes verwendete Format, convert_most konvertiert alles bis auf die Formatvorlagen für Absätze und von Hand vorgenommene Änderungen an den Schriften. Über convert_basic, die Grundeinstellung, erhalten Sie einfache Formatierungen am Text, wie Fettungen, die Ausrichtung des Textes und Nummerierungen. Dagegen behält ignore_most nur die einfachen Textformatierungen, ignore_all wirft alle hinaus. Für ein möglichst unkompliziertes Umwandeln eignet sich ignore_all (sehr restriktiv) und ignore_most. Alle Formatierungen bezüglich der Seite entfernt die Anweisung in Zeile 16.

Listing 5

<option name="align_frames" value="false" />
<option name="backend" value="xetex" />
<option name="debug" value="false" />
<option name="float_figures" value="true" />
<option name="float_options" value="" />
<option name="float_tables" value="true" />
<option name="formatting" value="ignore_all" />
<option name="ignore_double_spaces" value="true" />
<option name="ignore_empty_paragraphs" value="true" />
<option name="ignore_hard_line_breaks" value="true" />
<option name="ignore_hard_page_breaks" value="true" />
<option name="image_options" value="width=\maxwidth" />
<option name="inputencoding" value="utf8" />
<option name="multilingual" value="false" />
<option name="no_preamble" value="true" />
<option name="original_image_size" value="true" />
<option name="page_formatting" value="ignore_all" />
<option name="remove_graphics_extension" value="true" />
<option name="use_bibtex" value="false" />
<option name="use_caption" value="true" />
<option name="use_colortbl" value="false" />
<option name="use_color" value="false" />
<option name="use_endnotes" value="false" />
<option name="use_fancyhdr" value="false" />
<option name="use_geometry" value="false" />
<option name="use_hyperref" value="false" />
<option name="use_ooomath" value="false" />

Bilder und Tabellen erhalten auf Wunsch die entsprechende gleitende Umgebung. Bei Bildern empfiehlt es sich, voreingestellte Angaben zur Größe zu entfernen (original_image_size). So kommen die Maße des Originals zum Einsatz, was Verzerrungen des Seitenverhältnisses vermeidet.

Mit der Option remove_graphics_extension entfernen Sie das Suffix aus der Angabe zum Dateinamen. Das ermöglicht es, in einem parallelen Aufruf eine SVG-Grafik in ein PDF umzuwandeln und dieses automatisch einzubinden. PDF zählt zu den Formaten, die LaTeX ohne Probleme unterstützt.

Um das Bild an die Breite des Texts anzupassen, empfiehlt es sich, für alle Bilder die Breite festzulegen (Parameter image_options in Zeile 12). Das Makro maxwidth sorgt dafür, dass LaTeX Bilder, die schmaler laufen als der Text, in Originalgröße einbindet. Bilder, die größer sind, skaliert es entsprechend (Listing 6). Dazu laden Sie das Paket graphicx. Listing 7 zeigt einen Ausschnitt aus der erzeugten LaTeX-Datei.

Listing 6

\makeatletter
\newcommand\maxwidth{%
  \ifdim\Gin@nat@width>\linewidth%
    \linewidth%
    \else\Gin@nat@width\fi}
\makeatother

Listing 7

\section{Beispiel für Writer2LaTeX:}
Dies ist ein Beispiel, wie ein LibreOffice-Writer-Dokument nach LaTeX umgewandelt wird.
\subsection{Bilder:}
\begin{figure}
\includegraphics[width=\maxwidth]{writerbeispielmyconf-img001}
\caption[Eingefügtes Bild]{Eingefügtes Bild}
\end{figure}

Tabellen

Tabellen verursachen regelmäßig Probleme, wenn Sie mit vielen Formatvorlagen geschmückt sind oder eine Zelle weiteren Tabellen enthält. Solche Konstrukte in ein einheitliches Aussehen zu bringen, erweist sich als schwierige und zeitaufwendige Aufgabe. Da fällt es oft leichter, wenn Sie den Autor auffordern, die Tabelle mit Calc statt mit Writer zu erstellen.

Dies hat zwei Vorteile: Zum einen legt der Autor nur den Inhalt fest, die Formatierung ignorieren Sie einfach. Zum anderen ermöglicht die Applikation sehr einfach, in Tabellen zu rechnen: Es stehen alle Möglichkeiten von Calc bereit, eine Writer-Tabelle muss da passen.

Die Calc-Tabelle exportieren Sie in eine CSV-Datei, wobei alle Formate verloren gehen. Anschließend wandeln Sie das CSV mit einem Editor wie Sed oder mit einem Ant-Task in eine LaTeX-Tabelle um. Der Task calc2csv ruft dabei LibreOffice Calc auf und exportiert die Tabelle im CSV-Format (Listing 8). Dabei das Komma (44) als Spaltentrenner, für Zeichenketten kommt das doppelte Anführungszeichen (34) zum Einsatz. Mit terminateooo wird LibreOffice wieder beendet. Anschließend lässt sich die CSV-Datei in eine LaTeX-Tabelle umwandeln – das Ergebnis zeigt Listing 9.

Listing 8

<calc2csv srcfile="${odt.dir}/tab_bsp.ods"
  destfile="${target.dir}/tab_bsp.csv"
  ooopath="/usr/lib/openoffice/program"
  csvoption="44,34,UTF8" />
<terminateooo />
<csv2tabular srcfile="${target.dir}/tab_bsp.csv"
  usesrcfile="true"
  workdir="${target.dir}"
  head="true"
  firstlinehead="true"
  headcol="\textbf"
  mode="tabular"
  columntypes="|l|r|" />

Listing 9

\begin{tabular}{|l|r|}\hline
\textbf{Peter} & \textbf{13} \\\hline
Uschi & 23 \\\hline
 & 36 \\
\hline
\end{tabular}
\endinput

Um diese Tabelle einzubinden, markieren Sie sie im Writer-Dokument mit einer Textzeile. Im Beispiel sieht diese wie folgt aus:

TABELLE::Tabellenbeschriftung::Datei::

Diese Zeile verwenden Sie später in dem zweistufigen Makro input (Listing 10). Beim Export ersetzt es Sonderzeichen wie den Unterstrich entsprechend. Enthält der Dateiname der CSV-Datei einen Unterstrich, so machen Sie die ungewollte Ersetzung mit sedlatex wieder rückgängig. Anschließend wandeln Sie mit Sed die Markierung in entsprechende LaTeX-Makros um. Hier im Beispiel lautet der Name des Makros InputIfFileExists.

Listing 10

<sedlatex srcfile="${odt.dir}/dok_tab.tex"
  destfile="${target.dir}/dok_tab.tmp">
  <configsedlatex start="TABELLE" sep="::"
   group="2" search="\_" replace="_" />
</sedlatex>
<sed srcfile="${target.dir}/dok_tab.tmp"
  destfile="${target.dir}/dok_tab.tex">
  <configpair one="TABELLE::(.*?)::(.*?)::"
   two="\\InputIfFileExists{$2.tex}{}{Tabelle nicht gefunden!}\\n" />
</sed>

Möchten Sie die Tabelle lieber in einer Gleitumgebung mitsamt Beschriftung sehen, so hilft der Parameter aus Listing 11.

Listing 11

two="\\begin{table}\\caption{$1}\\InputIfFileExists{$2.tex}{}{Tabelle nicht gefunden!}\\end{table}"

Fazit

Nach dem Umwandeln in LaTeX dürfen Sie die Datei beliebig ändern. Beachten Sie dabei aber, dass Sie alle manuellen Änderungen in der LaTeX-Datei nachpflegen müssen, wenn der Autor am Writer-Dokument Änderungen vornimmt.

Mit etwas Experimentierfreude wandeln Sie selbst komplexere Writer-Dokumente im Handumdrehen automatisch nach LaTeX um. Damit eignet sich Writer als komfortablen Editor für das Satzsystem. Im W2L-Handbuch finden Sie noch weitere interessante Möglichkeiten – ein Blick lohnt sich auf jeden Fall. 

Infos

[1] Writer2LaTeX-Paket: http://writer2latex.sourceforge.net/

[2] Apache-Ant-Erweiterung Ant-Worker http://sourceforge.net/projects/antworker/

[3] XeTeX: Daniel Stender, "Weltsprache", LU 11/2008, S. 76, http://www.linux-community.de/17025

[4] Luatex: http://www.luatex.org

[5] Parameter von W2L: http://writer2latex.sourceforge.net/doc1.2/user-manual14.html#toc27

Der Autor

Michael Niedermair schreibt als Lehrer an der Münchner IT-Schule viel – vor allem Unterrichtsskripte zusammen mit Kollegen, die LaTeX nicht verwenden. Ansonsten programmiert er viel mit Java und bereitet seine Schüler auf die LPI-Prüfung vor.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare