Mit Sile Texte erstellen und konvertieren

Aus LinuxUser 02/2020

Mit Sile Texte erstellen und konvertieren

© Jane Rix, 123RF

Setzkasten

Das Satzsystem Sile hat es sich zur Aufgabe gemacht, neue Möglichkeiten des Textsatzes zu erkunden.

Eher zufällig entstand 2012 das Textsatzprogramm Sile [1]. Simon Cozens, der Autor des Programms, schrieb damals für einen kleinen Verlag ein Programm, das automatisiert das Layout für Buchumschläge erstellte. Damit hatte er quasi nebenbei die Grundlage für ein Textsatzsystem geschaffen [2].

Sile baut zwar auf TeX auf und übernimmt dessen Algorithmus für Zeilenumbruch und Silbentrennung, unterscheidet sich aber von der Ausrichtung her von TeX. Während eine der Spezialitäten von TeX und LaTeX von Beginn an der Formelsatz war, berücksichtigt Sile diesen bisher noch gar nicht, sondern will die Herausforderungen angehen, die etwa das Setzen einer Bibel mit sich bringt.

Hier liegt der Schwerpunkt auf zweispaltigem Satz mit Fuß- und Randnoten sowie Registerhaltigkeit, womit LaTeX bis heute seine Schwierigkeiten hat. Außerdem fokussiert Sile auf das Setzen mehrsprachiger Texte, auch mit verschiedenen Schriftzeichen. Geschrieben ist die Software in Lua, was es versierten Nutzern erleichtert, das Programm flexibel anzupassen.

Installation

Sile liegt zurzeit in der Version 0.9.5.1 vor. Unter Arch Linux steht es im Arch User Repository bereit, von wo Sie es mit dem Befehl yay -S sile installieren. Nutzer aller anderen Distributionen kommen nicht umhin, die Software von Hand zu installieren.

Laden Sie dazu zunächst die Sile-Programmdateien herunter [3], und achten Sie vor der Installation darauf, dass alle Abhängigkeiten erfüllt sind, insbesondere Lua. Eine ausführliche Anleitung finden Sie im Sile-Benutzerhandbuch [4]. Im Test mussten wir nach der dort beschriebenen Installation noch mit dem Befehl sudo ldconfig manuell einen Link zu den Systembibliotheken erstellen, da dieser Schritt in der Routine fehlte.

Hallo Welt!

Als Eingabedatei erwartet die Software eine Textdatei mit der Endung .sil, die Sie mit einem beliebigen Texteditor erstellen. Listing 1 zeigt als einfaches Beispiel den Inhalt der Datei hallowelt.sil. Auf den ersten Blick erinnert die Auszeichnung an LaTeX, an das sich Sile tatsächlich anlehnt – aber es gibt Unterschiede.

Listing 1

\begin[class=plain,papersize=a4]{document}
\font[family=Garamond,size=42pt,style=italic,weight=700]
Hallo Welt!
\end{document}

Als Erstes fällt das Fehlen der bei LaTeX üblichen Präambel auf. Bei Sile haben Dokumentenklasse und Papierformat ihren Platz im Befehl in Zeile 1. Wie in LaTeX speichert Sile die Informationen, wie Sie den Text setzen wollen, in Dokumentenklassen. Das Beispiel wählt die Klasse plain aus, die die grundlegenden Funktionen für einfache Texte mitbringt.

Wie LaTeX kennt Sile die gängigen Papiergrößen der DIN-Reihe sowie die US-amerikanischen Papiergrößen. Sie sind jedoch nicht an die Standardformate gebunden, sondern können die Papiergröße gegebenenfalls selbst bestimmen. Ändern Sie den Befehl in Zeile 1 etwa in papersize=85mm x 54mm ab, erhalten Sie ein Dokument in der Größe einer Visitenkarte.

Nach einem Kommando, mit dem Sie wie bei LaTeX den Eingabezeichensatz festlegen, suchen Sie vergebens: Sile erwartet automatisch UTF-8. Bei LaTeX übliche Eingaben wie \"a für einen Umlaut oder --- für einen Geviertstrich gibt es nicht. Im ersten Fall erhalten Sie eine Fehlermeldung, im zweiten drei einzelne Bindestriche.

Das klassische LaTeX bringt seine eigenen Schriftarten mit, wobei PDFLaTeX und XeLaTeX die Verwendung anderer Fonts ermöglichen. Bei Sile entscheiden Sie sich für eine der auf dem System installierten Schriften und legen dafür Größe, Stil und Stärke fest. Beim Beispiel aus Zeile 2 entspricht der für weight gewählte Wert einem Fettdruck.

Aus der Eingabedatei erzeugen Sie mit dem Befehl sile hallowelt.sil Ihr erstes Sile-Dokument. Sile verzichtet dabei auf ein eigenes Ausgabeformat und setzt auf PDF als plattformunabhängiges Format. LaTeX dagegen bringt mit dem DVI-Format ein eigenes Format für die Ausgabe mit, auch wenn Sie heute über PDFLaTeX üblicherweise LaTeX-Dokumente ebenfalls direkt in PDF-Dateien umwandeln.

Geschmackssache

In der Eingabedatei erwartet Sile strukturierten Text. Dafür verwenden Sie die an LaTeX angelehnte Auszeichnungssprache von Sile oder geben den Text mit XML-Auszeichnung ein. Listing 2 enthält das Beispiel aus Listing 1, diesmal mit den entsprechenden XML-Elementen. Das Ergebnis in der erzeugten PDF-Datei fällt identisch aus. Für welche der beiden Varianten Sie sich entscheiden, ist Geschmackssache.

Listing 2

<sile class="plain" papersize="a4">
<font family="Garamond" size="42pt" style="italic" weight="700">
Hallo Welt!
</font>
</sile>

Durch XML eröffnen sich viele Möglichkeiten. So verwandeln Sie etwa eine Docbook-Datei oder maschinell erzeugte Daten mittels Sile in eine PDF-Datei. Es wäre auch möglich, eine digitale Übersetzungsdatenbank als XML-Datei auszugeben, aus der Sie dann mit Sile eine Druckvorlage für ein Wörterbuch im PDF-Format erzeugen.

Darüber hinaus stellt Sile Klassen bereit, mittels derer Sie strukturierten Text aus anderen Formaten in eine PDF-Datei verwandeln. Die Klassendatei enthält die Informationen, wie Sile die einzelnen Elemente setzt. Nach der Installation finden Sie im Verzeichnis /usr/local/share/sile/classes/ die mitgelieferten Klassen. Die in Lua geschriebenen Dateien passen Sie bei Bedarf an oder erstellen neue.

Haben Sie Text etwa in Markdown vorliegen, nutzen Sie den folgenden Befehl, um daraus eine PDF-Datei zu erzeugen:

$ sile -I markdown Text.md<C>

Die passende Klasse, hier Markdown, findet nicht in der Datei selbst ihren Platz, sondern im Befehl nach der Option -I, sodass Sie die ursprüngliche Markdown-Datei direkt ohne weitere Anpassungen verwenden können.

Erste Gehversuche

Nach diesen Grundlagen ist es an der Zeit für die ersten Gehversuche mit Sile. Listing 3 zeigt einige der grundlegenden Möglichkeiten. Die erste Zeile wählt diesmal die Klasse für Bücher aus. Um die Fähigkeiten einer Dokumentenklasse zu erweitern, setzt Sile ebenso wie LaTeX auf Pakete.

Listing 3

\begin[class=book,papersize=a4]{document}
\script[src=packages/url]
\script[src=packages/image]
\script[src=packages/color]
\script[src=packages/rotate]
\chapter{Begrüßung}
Hallo Welt!
\noindent Hallo Freunde!
\section{Hallo weite Welt!}
\href[src="http://sile-typesetter.org/"]{SILE} ist ein Textsatzprogramm.
\section{Hallo Bilderwelt!}
\img[src=tux.jpg,width=200px,height=239px]
\section{Hallo Farbwelt!}
\define[command=green]{\color[color=green]{\process}}
\color[color=blue]{Hallo} \color[color=#e0b0ff]{bunte} \green{Farbenwelt!}
\section{Hallo verspielte Welt!}
\rotate[angle=15]{Hallo} \rotate[angle=30]{verspielte} \rotate[angle=45]{Welt!}
\section{Hallo Skriptwelt!}
\begin{script}
for i=1,10 do
SILE.typesetter:typeset(i .. " x " .. i .. " = " .. i*i .. ". ")
SILE.typesetter:leaveHmode()
SILE.call("smallskip")
end
\end{script}
\end{document}

Die Zeilen 2 bis 5 laden verschiedene Pakete, deren Funktionen das Dokument erfordert. Die bei der Installation mitgelieferten Pakete finden Sie im Ordner /usr/local/share/sile/packages/. Versierte Nutzer können die in Lua geschriebenen Pakete abändern oder nach eigenem Bedarf neue erstellen.

Hallo Textwelt!

Da Sile UTF-8 als Eingabekodierung nutzt, geben Sie Fließtext einschließlich Sonderzeichen und Textzeichen anderer Sprachen direkt ein – bis auf wenige Ausnahmen. Den umgekehrten Schrägstrich (\) sowie die geschweiften Klammern ({...}) reserviert Sile für Befehle, das Prozentzeichen (%) leitet einen Kommentar ein. Wollen Sie eines dieser Zeichen im Text verwenden, stellen Sie ihm einen umgekehrten Schrägstrich voran, also \\, \{...\} und \%.

Anders als bei LaTeX erzeugt der doppelte umgekehrte Schrägstrich bei Sile keinen Zeilenumbruch. Sile erwartet dazu stattdessen den Befehl \break. Einen neuen Absatz erhalten Sie durch eine Leerzeile (Listing 3, Zeile 8). Der Befehl in Zeile 9 verhindert einen Einzug vor dem neuen Absatz.

Ein neues Kapitel (Zeile 6) und einen neuen Abschnitt (Zeilen 10, 12, 14, 17 und 19) beginnen Sie mit den aus LaTeX bekannten Befehlen. Sile gibt die Überschriften im Dokument nummeriert aus. Nachdem Sie das Paket url (Zeile 2) eingebunden haben, erstellen Sie anklickbare Links wie in Zeile 11 gezeigt (Abbildung 1).

Abbildung 1: Schlicht und elegant: Textsatz mit Sile.

Abbildung 1: Schlicht und elegant: Textsatz mit Sile.

Hallo Bilderwelt!

Bilder binden Sie mit dem Paket image in das Dokument ein. Der Befehl dazu (Listing 3, Zeile 13) lehnt sich nicht an LaTeX an, sondern an HTML. Lassen Sie die Größenangaben weg, erscheint das Bild im Dokument in Originalgröße. Die Software bindet Bilder in den Formaten JPG, PNG, EPS und PDF ein (Abbildung 2).

Abbildung 2: Mit dem passenden Befehl binden Sie Bilder in den Formaten PNG, EPS sowie PDF ein.

Abbildung 2: Mit dem passenden Befehl binden Sie Bilder in den Formaten PNG, EPS sowie PDF ein.

Hallo Farbwelt!

Farbe bringen Sie aber nicht nur über Bilder ins Dokument, sondern auch durch farbigen Text, den Sie über das Paket color erzeugen (Abbildung 3). Den entsprechenden Befehl finden Sie in Zeile 16 von Listing 3. Die Farbe wählen Sie wie in HTML und CSS entweder durch Angabe des Namens [5] aus oder legen sie als RGB-Wert fest. Die Auswahl einer Farbe im CMYK-Farbmodell unterstützt Sile derzeit noch nicht; für die weitere Entwicklung des Programms wäre das aber wünschenswert, da man die Dokumente ja gerade für den Druck erstellt.

Abbildung 3: Farbigen Text definieren Sie &uuml;ber Befehle, die sich in der Syntax an HTML anlehnen.

Abbildung 3: Farbigen Text definieren Sie über Befehle, die sich in der Syntax an HTML anlehnen.

Nutzen Sie einen bestimmten Befehl häufiger, etwa den Wechsel zu einer bestimmten Farbe, dann legen Sie dazu ein Makro an. Das entsprechende Kommando in Zeile 15 erstellt den neuen Befehl \green, der den in geschweiften Klammern angegebenen Befehl ausführt. So ersparen Sie sich Tipparbeit.

Hallo verspielte Welt!

Mit dem Paket rotate drehen Sie Text. Ein Beispiel für einen solchen Befehl finden Sie in Zeile 18 von Listing 3, das Ergebnis zeigt Abbildung 4. Da Sile in Lua geschrieben ist, führen Sie wie in den Zeilen 20 bis 27 gezeigt bei Bedarf Lua-Skripte direkt in der Sile-Datei aus (Abbildung 5).

Abbildung 4: Text muss nicht immer linientreu sein.

Abbildung 4: Text muss nicht immer linientreu sein.


Abbildung 5: Dieser Text wurde nicht von Hand eingetippt, sondern &uuml;ber ein Lua-Skript generiert.

Abbildung 5: Dieser Text wurde nicht von Hand eingetippt, sondern über ein Lua-Skript generiert.

Hallo große weite Welt!

Nach diesen ersten Gehversuchen haben Sie einen grundlegenden Eindruck von Sile gewonnen. Darüber hinaus bietet die Software noch mehr Möglichkeiten, auch recht spezielle wie etwa das Setzen von Texten in japanischen Schriftzeichen oder das Setzen zweisprachiger Bibeltexte im hebräischen oder griechischen Original mit neusprachlicher Übersetzung.

Sile befindet sich derzeit noch in der Beta-Phase, die umfangreichen Möglichkeiten von LaTeX bietet es daher nicht. Die bisher umgesetzten Funktionen richten sich am ersten Etappenziel aus, dem Setzen einer Bibel. An Möglichkeiten und Potenzial fehlt es Sile nicht. Die gilt es in kommenden Versionen auszubauen.

TIPP

Weitere Beispiele für die Verwendung von Sile finden Sie auf der Webseite des Programms [6].

Fazit

Sile baut auf der Erfahrung der letzten drei Jahrzehnte Textsatz am PC auf; es möchte Schwachstellen verbessern und neue Wege erkunden. Von TeX übernimmt Sile den Algorithmus für Zeilenumbruch und Silbentrennung. Anders als das aus dem mathematisch-naturwissenschaftlichen Bereich stammende TeX siedelt sich Sile im geisteswissenschaftlichen Bereich an und hat daher eine andere Ausrichtung.

Das Programm befindet sich noch in der Beta-Phase und weist deshalb naturgemäß Schwachstellen auf. So erfordert schon die Installation eine gewisse Anstrengung, sofern man nicht das AUR-Paket von Arch Linux nutzen kann. Hier bleibt zu hoffen, dass die Entwickler bald Archive für andere Distributionen bereitstellen.

Ist Sile erst einmal installiert, gestaltet sich das Einarbeiten leicht; wer schon Erfahrungen mit LaTeX hat, findet sich schnell zurecht. Sile selbst sowie die Klassen und Pakete sind in Lua geschrieben, einer leicht zu erlernenden Sprache, sodass versierte Nutzer Anpassungen und Erweiterungen schnell umsetzen. Dass das Satzsystem Text mit XML-Auszeichnung verarbeitet, erweitert die Möglichkeiten noch.

Eingefleischte LaTeX-Nutzer wechseln vermutlich nicht spontan das Lager; für Einsteiger mögen die noch bruchstückhaften Funktionen des Programms eher abschreckend wirken. Zurzeit eignet sich Sile vor allem für Entwickler. Trotzdem lohnt es sich, die weitere Entwicklung des Satzsystems im Auge zu behalten.

Insgesamt hat Sile gute Aussichten, zum bevorzugten Textsatzsystem für Geisteswissenschaftler zu avancieren. Als erstes Etappenziel peilt es die Herausforderungen an, die das Setzen einer Bibel mit zweispaltigem Text mit Fuß- und Randnoten mit sich bringt. Das könnte einen interessanten Ansatz für mehrsprachige textkritische Ausgaben anderer Texte bieten. 

Glossar

Textsatzprogramm

Satzprogramme trennen anders als Textverarbeitungsprogramme den Inhalt und das Layout. Der Inhalt steht in einer einfachen Textdatei als reiner Text mit Anweisungen für das Layout. Daraus erstellt das Satzsystem das fertige Dokument. Das wohl bekannteste Textsatzprogramm ist TeX, das in der Regel über das Makropaket LaTeX zum Einsatz kommt.

Registerhaltigkeit

Registerhaltigkeit bedeutet, dass beim Druck eines Buchs der Text auf Vorder- und Rückseite genau übereinanderliegt. Der Text der Vorderseite erscheint zusammen mit dem Text, der von der Rückseite durchscheint, einheitlich als dunkle Fläche, die Zwischenräume einheitlich als helle Fläche. Das erhöht gerade beim Druck auf dünnerem Papier die Lesbarkeit.

Infos

  1. Sile: https://sile-typesetter.org

  2. Sile-Vorstellung: Simon Cozens, “Sile: A new typesetting system”, TUGboat 38/1 (2017), S. 23, http://tug.org/TUGboat/tb38-1/tb118cozens.pdf

  3. Sile-Programmdateien: https://github.com/sile-typesetter/sile/releases

  4. Sile-Handbuch: https://sile-typesetter.org/manual/sile-0.9.5.pdf

  5. CSS-Farbnamen: https://drafts.csswg.org/css-color/#named-colors

  6. Beispiele: https://sile-typesetter.org/examples/

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 02/2020 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

3 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Gerhard Hampl
6 Jahre her

Bekomme bei Beispiel aus Listing 3 folgende Fehlermeldung:

This is SILE v0.10.3

[1] [2]
Error detected:
/usr/share/sile/packages/pdf.lua:89: bad argument #2 to ‘end_annotation’ (number expected, got table)

Wer ruft diese Funktion denn auf und übergibt für llx und vermutlich auch für lly keine Nummer?

SILE.typesetter:pushHbox({
value = nil,
height = 0,
width = 0,
depth = 0,
outputYourself = function (_, typesetter, _)
local d = “<</Type/Annot/Subtype/Link/C [ 1 0 0 ]/A<>>>”
pdf.end_annotation(d, llx, lly, typesetter.frame.state.cursorX, SILE.documentState.paperSize[2] -typesetter.frame.state.cursorY + hbox.height)
end
})
end)

Daniel Tibi
6 Jahre her
Reply to  Gerhard Hampl

Hallo Herr Hampl! ich freue mich über Ihr Interesse an SILE. Ich bin der Autor des Artikels. Als ich den Artikel verfasst habe, habe ich SILE in der Version 0.9.5.1 benutzt. Der Code in Listing 3 funktioniert mit dieser SILE-Version fehlerfrei. Sie nutzen die erst kürzlich erschienene Version 0.10.3. Ich vermute, dass die Fehlermeldung mit dem Update auf die neue Version zusammenhängt, wobei ich im Moment auch nicht nachvollziehen kann, wo genau der Fehler liegt.

Daniel Tibi
6 Jahre her

Update zum Artikel: Seit dem 03.02.2020 ist SILE in den Ubuntu-Paketquellen verfügbar: https://launchpad.net/~sile-typesetter/+archive/ubuntu/sile

Nach oben