ReStructuredText-Tutorial¶
RestructuredText (RST) ist eine vereinfachte Auszeichnungssprache („markup language“), mit deren Hilfe Textdokumente aus einfachen Strukturmerkmalen erzeugt werden können. Diese lassen sich dann mittels eines geeigneten Converters, z.B. Sphinx, automatisiert in LaTeX- oder HTML-Code übersetzen.
Um eine Datei mit RestructuredText-Inhalten zu erstellen, genügt es eine neue
Textdatei mit einem Editor zu öffnen. Üblicherweise werden
RestructuredText-Dateien mit der Endung .rst
versehen.
Überschriften und Hervorhebungen¶
Überschriften sind zur Untergliederung eines Dokuments hilfreich und ermöglichen eine automatische Erzeugung von Inhaltsverzeichnissen. RestructuredText kennt dabei folgende Unterteilungen.
Beispiel:
Name eines Kapitels
===================
Name eines Abschnitts
---------------------
Name eines Unterabschnitts
^^^^^^^^^^^^^^^^^^^^^^^^^^
Name eines Paragraphen
''''''''''''''''''''''
Ergebnis:
Name eines Kapitels¶
Name eines Abschnitts¶
Name eines Unterabschnitts¶
Name eines Paragraphen¶
Zur Hervorhebung einer Überschrift muss somit nur die jeweilige Zeile durch
eine zweite, ebenso lange Zeile mit entsprechenden Zeichen markiert werden;
anschließend muss eine leere Zeile folgen.
Die Überschriften werden – je nach Converter und entsprechenden Einstellungen
– in den erzeugten HTML- beziehungsweise PDF-Dateien mit unterschiedlicher
Schriftgröße und/oder nummeriert dargestellt. In PDF-Dateien wird automatisch
ein Inhaltsverzeichnis zu Beginn des Dokuments erzeugt, in HTML-Dateien wird das
Inhaltsverzeichnis üblicherweise in der Seitenleiste angezeigt.
Zusätzlich ist es möglich, kleine Überschriften ohne Nummerierung und Auflistung
im Inhaltsverzeichnis einzufügen. Hierfür wird eine so genannte „Direktive“
namens .. rubric::
verwendet.[1]
Beispiel:
Kapitelname
===========
Text.
.. rubric:: Bezeichnung
Mehr Text..
Eine weitere Aufgliederung eines Kapitels ist durch ein Aufspalten in mehrere
Dateien möglich.
Das Inhaltsverzeichnis¶
Üblicherweise werden für die einzelnen Kapitel einer Dokumentation eigene
Dateien angelegt, deren Namen in etwa den jeweiligen Kapitelüberschriften
entsprechen sollten (auf Umlaute im Dateinamen sollte dabei verzichtet werden,
Leerzeichen durch Binde- oder Unterstriche ersetzt werden). Jede dieser Dateien
muss unmittelbar mit einer Kapitelüberschrift beginnen und kann weitere
Überschriften beinhalten.
In der Hauptdatei index.rst
der Dokumentation, die im Hauptverzeichnis zu
finden ist, wird auf die einzelnen Kapitel über ein Inhaltsverzeichnus
verwiesen. Um ein Inhaltsverzeichnis zu erzeugen, wird die so genannte
„toctree“-Umgebung verwendet („Table-of-Contents“). Die Syntax dabei ist
folgende:
.. toctree::
:maxdepth: 2
kapitelname-1.rst
kapitelname-2.rst
kapitelname-3.rst
Durch die Option :maxdepth:
wird festgelegt, bis zu welcher Hierarchie-Stufe
das Inhaltsverzeichnis aufgegliedert werden soll. Mit :maxdepth: 2
werden
beispielsweise alle Kapitel- und Abschnittsnamen eingeblendet, die in den
angegebenen Dateien zu finden sind. In der HTML-Version wird für jede
toctree
angegebene Datei eine neue Seite inklusive Rahmen und
Navigationshilfen erzeugt. In der LaTeX-Version werden die im toctree
angegeben Dateien der Reihe nach eingebunden, als ob sich ihre Inhalte
hintereinander in einer einzigen Datei befänden.
Ein besonderer Vorteil dieser Methode liegt darin, dass umfangreichere Kapitel
beliebig in weitere Unterkapitel aufgeteilt werden können:
- Als erstes wird ein neuer Ordner angelegt, der den gleichen Namen wie die
zugehörige RestructuredText-Datei erhält, beispielsweise
kapitelname-2
.
- Anschließend wird die Kapitel-Datei in den neuen Ordner verschoben und dort
in
index.rst
umbenannt.
- Für jedes Unterkapitel wird in dem neuen Ordner eine neue Textdatei angelegt,
deren Namen wiederum in etwa den Überschriften der einzelnen Abschnitte
entsprechen sollten. Jeder Abschnitt wird dann aus der
index.rst
ausgeschnitten und in die entsprechende Datei eingefügt.
- In die
index.rst
wird schließlich ein toctree
angelegt, der die Namen
aller Dateien, aus denen das Kapitel besteht, beinhaltet.
Von welcher Hierarchie-Ebene die Überschriften in den einzelnen Dateien
ausgehen, ist nicht von Bedeutung: Beim Konvertieren der Quelltexte nach HTML
oder PDF werden alle Hierarchie-Ebenen bei Bedarf automatisch angepasst. Es muss
lediglich innerhalb jeder Datei darauf geachtet werden, dass unmittelbar mit der
„höchste“ Überschrifts-Ebene begonnen wird. Eine Empfehlung hierfür ist, jede
Datei mit einer Kapitelüberschrift zu beginnen und bei Bedarf weitere
Überschriften einzufügen.
Kommentare¶
RestructuredText-Dateien können um Kommentare ergänzt werden, die bei der
Übersetzung in PDF- beziehungsweise HTML-Dateien ignoriert werden und somit
lediglich als „private“ Notizen für den Autor dienen.
Jede Zeile einer RST-Datei kann, indem zu Beginn zwei Punkte und (mindestens)
ein Leerzeichen eingefügt werden, zu einem Kommentar gemacht werden.
Beispiel:
.. Dies hier ist ein Kommentar.
Um einen längeren, aus mehreren Zeilen bestehenden Kommentar zu erzeugen, kann
einerseits jede Zeile einzeln durch zwei Punkte und ein Leerzeichen am Anfang
der Zeile auskommentiert werden. Einfacher ist es, einen „langen Kommentar“
durch eine separate Zeile einzuleiten, die nur aus zwei Punkten und zwei
Leerzeichen besteht:
Beispiel:
..
Dies hier ist ein langer Kommentar.
Er besteht aus mehreren Zeilen.
Auf diese Weise können auch mehrere Absätze auskommentiert werden. Hierbei
muss jedoch in den Leerzeilen zwischen den Kommentar-Absätzen Leerzeichen oder
Tabulatoren eingefügt werden, da lange Kommentare stets durch eine einzelne,
komplett leere Zeile abgeschlossen werden.
Hervorhebung von Textstellen¶
Um eine einzelne Textstelle innerhalb eines Absatzes hervorzuheben, kann eine
so genannte „Role“ verwendet werden.[2] Die wohl am häufigsten
auftretenden Roles sind:
*Kursiver Text*
:
- Eine Textstelle, die unmittelbar (ohne Leerzeichen) durch je ein
Sternchen begrenzt ist, wird kursiv dargestellt.
**Fetter Text**
:
- Eine Textstelle, die unmittelbar (ohne Leerzeichen) durch je zwei
Sternchen begrenzt ist, wird fettgedruckt dargestellt.
``Maschinenschrift``
:
- Eine Textstelle, die unmittelbar (ohne Leerzeichen) durch je zwei
schräge Apostrophen („Backticks“) begrenzt ist, wird in
Maschinenschrift
dargestellt. Diese Art der Hervorhebung kann
insbesondere für kurze Codebeispiele genutzt werden.
:sub:`Text`
:
- Eine Textstelle, die unmittelbar (ohne Leerzeichen) durch je einen
schrägen Apostrophen („Backtick“) begrenzt ist und durch das einleitende
Schlüsselwort
:sub:
oder :subscript:
markiert ist, wird als
tiefgestellter Text dargestellt.
:sup:`Text`
:
- Eine Textstelle, die unmittelbar (ohne Leerzeichen) durch je einen
schrägen Apostrophen („Backtick“) begrenzt ist und durch das einleitende
Schlüsselwort
:sub:
markiert ist, wird als tiefgestellter Text
dargestellt.
Beispiel:
Etwas *kursiv dargestellter*,
etwas **fettgedruckter** Text,
und etwas Text in ``Maschinenschrift``;
Tief gestellter Text: :sub:`123` und
hoch gestellter Text: :sup:`456`
Ergebnis:
Etwas kursiv dargestellter, etwas fettgedruckter Text, und etwas Text in Maschinenschrift.
Tief gestellter Text: 123 und hoch gestellter Text: 456
Mittels der :math:
-Role können zusätzlich mathematische Formeln, geschrieben
als LaTeX-Code, innerhalb einer Zeile
eingefügt werden. Beispielsweise liefert :math:`a^2 + b^2 = c^2`
als
Ergebnis die Formel .
Hervorhebung von Absätzen¶
Um einen Absatz beziehungsweise mehrere Absätze hervorzuheben, kann eine der
folgenden Direktiven genutzt werden:
.. epigraph::
Innerhalb einer epigraph
-Umgebung werden gewöhnlich Zitate in das
Dokument eingefügt. Am Ende wird dabei üblicherweise der Name des Autors der
zitierten Textstelle angegeben.
Beispiel:
.. epigraph::
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt."
-- Albert Einstein
Ergebnis:
„Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.“
—Albert Einstein
Innerhalb einer epigraph
-Umgebung sind sowohl mehre Absätze als auch
Inline-Markup (Roles) erlaubt. Die Ausgabe erfolgt eingerückt und mit reduzierter
Zeilenlänge, um das Zitat gut erkennbar vom übrigen Text abzuheben;
Zeilenumbrüche erfolgen automatisch.
.. line-block::
Die line-block
-Umgebung ist der epigraph
-Umgebung ähnlich, jedoch
finden im Ergebnis keine automatischen Zeilenumbrüche statt. Die Zeilen
werden stattdessen in gleicher Form ausgegeben, wie sie innerhalb der
line-block
-Umgebung gesetzt werden. Dies ist insbesondere beim Zitieren
von Gedichten und Versen nützlich:
Beispiel:
.. line-block::
"Jede Blüte will zur Frucht
Jeder Morgen Abend werden
Ewiges ist nicht auf Erden
Als der Wandel, als die Flucht."
-- Hermann Hesse (Ausschnitt aus dem Gedicht "Welkes Blatt")
Ergebnis:
„Jede Blüte will zur Frucht
Jeder Morgen Abend werden
Ewiges ist nicht auf Erden
Als der Wandel, als die Flucht.“
– Hermann Hesse (Ausschnitt aus dem Gedicht „Welkes Blatt“)
Absätze, die innerhalb einer line-block
-Umgebung stehen, werden nicht
automatisch eingerückt. Ist dies gewünscht, so kann man eine Einrückung
entweder über entsprechende CSS-Einstellungen oder über eine manuelle
Einrückung der jeweiligen Umgebung (Leerzeichen beziehungsweise Tabulatoren im
Quellcode) erreichen.
note
, hint
, tip
, warning
, error
, important
Mit den obigen Direktiven lassen sich Infoboxen erzeugen. Der Titel der
Infobox leitet sich dabei aus dem Direktivennamen ab (Bemerkung, Hinweis, Tip,
Warnung, Fehler, Wichtig).
Beispiel:
.. hint::
Hier wird ein Hinweis ausgegeben.
Ergebnis:
Hinweis
Hier wird ein Hinweis ausgegeben.
Neben den oben genannten Direktiven kann auch eine topic
-Umgebung
genutzt werden, um eine beliebig benannte Infobox erzeugen. Dabei wird in
der gleichen Zeile de im Anschluss an .. topic::
der Name der Box
geschrieben.
math
Mit der math
-Direktive können mathematische Formeln, geschrieben als
LaTeX-Code, als eigenständige
zentrierte Zeilen in das Dokument eingebunden werden.
Beispiel:
.. math::
a^2 + b^2 = c^2
Ergebnis:
Die math
-Direktive bietet zusätzlich die Option, der angegebenen Formel
eine Sprungmarke („Label“) und eine automatisch vergebene Nummer zu
vergeben. Hierzu wird eine eigene Zeile der Form :label: Name-des-Labels
unmittelbar als erste Zeile der math
-Direktive eingefügt (mit gleicher
Einrückung wie die eigentliche Formel).
Beispiel:
.. math::
:label: einstein-und-pythagoras
E \underset{Einstein}{=} m \cdot c^2
\underset{Pythagoras}{=} m \cdot (a^2 + b^2)
Ergebnis:
(1)¶
Auf die Formel kann dann mittels der Referenz eqr:`Name-des-Labels`
an
einer beliebigen anderen Stelle des Dokuments (derzeit jedoch nur innerhalb
einer einzelnen Quellcode-Datei) verwiesen werden.
code-block
Die code-block
-Direktive ermöglicht es, wie der Name bereits andeutet,
Quellcode-Beispiele in das Dokument einzufügen. Dabei kann in der gleichen
Zeile im Anschluss an .. code-block::
eine Codesprache aus dieser Liste ausgewählt werden, um ein
Syntax-Highlighting zu aktivieren.
Beispiel:
.. code-block:: sh
:linenos:
# Show the local network address
# Result: Something like 192.168.1.105
hostname -I | cut -d' ' -f1
Ergebnis:
1
2
3
# Show the local network address
# Result: Something like 192.168.1.105
hostname -I | cut -d' ' -f1
Quellcode wird üblicherweise in Maschinenschrift ausgegeben; jegliches
Inline-Markup wird dabei ignoriert. Möchte man Inline-Markup (Roles)
dennoch interpretiert haben, um beispielsweise Verlinkungen innerhalb des
Quellcodes zu setzen, kann anstelle von code-block
die
parsed-literal
-Direktive verwendet werden, die ansonsten die gleiche
Syntax aufweist.
Weitere Gestaltungsmöglichkeiten von Absätzen sind in der Liste aller
RST-Direktiven (en.) aufgeführt.
Aufzählungen und Beschreibungen¶
In RestructuredText sind sowohl nummerierte wie auch nicht nummerierte
Aufzählungen möglich. Die Syntax hierfür ist sehr simpel:
*Beispiel einer nummerierten Liste:*
1. Dies hier ist ein Blindtext zum Testen von Textausgaben. Wer diesen Text
liest, ist selbst schuld. Der Text gibt lediglich den Grauwert der
Schrift an.
2. | Dies hier ist ein Blindtext zum Testen von Textausgaben.
| Wer diesen Text liest, ist selbst schuld.
| Der Text gibt lediglich den Grauwert der Schrift an.
*Beispiel einer nicht nummerierten Liste:*
* Dies hier ist ein Blindtext zum Testen von Textausgaben. Wer diesen Text
liest, ist selbst schuld. Der Text gibt lediglich den Grauwert der
Schrift an.
* | Dies hier ist ein Blindtext zum Testen von Textausgaben.
| Wer diesen Text liest, ist selbst schuld.
| Der Text gibt lediglich den Grauwert der Schrift an.
Ergebnis:
Beispiel einer nummerierten Liste:
Dies hier ist ein Blindtext zum Testen von Textausgaben. Wer diesen Text
liest, ist selbst schuld. Der Text gibt lediglich den Grauwert der
Schrift an.
-
Dies hier ist ein Blindtext zum Testen von Textausgaben.
Wer diesen Text liest, ist selbst schuld.
Der Text gibt lediglich den Grauwert der Schrift an.
Beispiel einer nicht nummerierten Liste:
Dies hier ist ein Blindtext zum Testen von Textausgaben. Wer diesen Text
liest, ist selbst schuld. Der Text gibt lediglich den Grauwert der
Schrift an.
-
Dies hier ist ein Blindtext zum Testen von Textausgaben.
Wer diesen Text liest, ist selbst schuld.
Der Text gibt lediglich den Grauwert der Schrift an.
Für nicht nummerierte Aufzählungen können anstelle des Zeichens *
auch die
Zeichen -
oder +
verwendet werden; in der Ausgabe werden die
Aufzählungszeichen unabhängig davon anhand der Aufzählungstiefe ausgewählt
(innerhalb einer Aufzählung sind auch weitere Aufzählungen möglich).
Beim Erstellen von Aufzählungen muss lediglich darauf geachtet werden, dass vor
und nach der Aufzählung im Quellcode eine leere Zeile steht und die einzelnen
Einträge gleich weit eingerückt sind. Die einzelnen Einträge werden, sofern sie
nicht in eine Zeile passen, automatisch am Seitenrand umgebrochen; manuelle
Umbrücke können erzwungen werden, indem zu Beginn jeder neu zu erstellenden
Zeile ein |
-Zeichen eingegeben wird. Auch hierbei muss auf eine gleiche
Einrückungstiefe der Textzeilen geachtet werden.
Automatisch nummerierte Aufzählungen können mittels #.
als
Aufzählungszeichen erstellt werden; in diesem Fall sind zwischen den einzelnen
Einträgen allerdings keine RestructuredText-Elemente erlaubt, die ohne
Einrückung zu Beginn der Zeile eingegeben werden müssen (beispielsweise
Sprungmarken); in diesem Fall fängt die folgende Aufzählung nämlich wieder mit
1.
an.
Bei Beschreibungen verwendet man das zu beschreibende Wort als
„Aufzählungszeichen“. Die Syntax hierzu ist folgende:
**Wort1:**
Beschreibung zu Wort1.
**Wort2:**
Beschreibung zu Wort2.
Ergebnis:
- Wort1:
- Beschreibung zu Wort1.
- Wort2:
- Beschreibung zu Wort2.
Auch bei den Beschreibungen muss nur auf die einheitliche Einrückung des
Beschreibungs-Textes geachtet werden; der Text kann dann auch aus mehreren
Absätzen bestehen.
Sprungmarken und Referenzen¶
Ein sehr nützliche von Wiki-Seiten besteht darin, mittels eines klickbaren Links
auf eine andere Stelle in der Dokumentation oder auf eine externe Seite
verweisen zu können. RestructuredText bietet dazu folgende Möglichkeiten:
Mittels `Link-Bezeichnung <Adresse>`_
kann ein mit einer bestimmten
Bezeichnung versehener Link auf eine externe Seite gesetzt werden. Soll eine
Adresse ohne eigene Bezeichnung verlinkt werden, so genügt es die Adresse ohne
weitere Syntax anzugeben, beispielsweise https://www.grund-wissen.de
für https://www.grund-wissen.de ; ein Link
wird dabei automatisch erzeugt.
Mittels einer eigenen Zeile der Form .. _Name der Sprungmarke:
und einer
darauf folgenden Leerzeile kann an einer beliebigen Stelle innerhalb der
Dokumentation eine Sprungmarke (auch „Label“ oder „Anker“ genannt) festgelegt
werden. Auf diese Sprungmarke kann dann von einer beliebigen anderen Stelle im
Dokument aus mittels :ref:`Link-Bezeichnung <Name der Sprungmarke>`
verwiesen werden.
Diese Methode funktioniert auch, wenn sich die Sprungmarke und die Referenz
in verschiedenen Dateien des Quelltextes einer Dokumentation befinden.
Mittels der „Intersphinx“-Erweiterung, die beim Sphinx-Quickstart ausgewählt
werden kann[3], ist es möglich, auch auf Sprungmarken anderer
Sphinx-Projekte zu verweisen. Hierzu muss die Konfigurationsdatei conf.py
um einen oder mehrere Einträge mit folgender Form ergänzt werden:
intersphinx_mapping = {
'sphinx': ('http://sphinx-doc.org', None),
'gw': ('http://grund-wissen.de', None)
}
Damit kann beispielsweise mittels :ref:`Inhaltsverzeichnis der
Sphinx-Dokumentation <sphinx:contents>`
ein Link auf das
Inhaltsverzeichnis der Sphinx-Dokumentation gesetzt
werden, das eine Sprungmarke namens contents
enthält (dies zeigt ein Blick
in den Quelltext der Seite, der üblicherweise in der Seitenleiste verlinkt
ist). Führt man den Mauszeiger über einen solchen Link, so werden der Name und
die Versionsnummer der jeweiligen Dokumentation eingeblendet.
Fußnoten, Zitierungen und Index-Einträge¶
In RestructuredText gibt es die Möglichkeit, ergänzende Anmerkungen als
Fußnoten aus dem normalen Text „auszulagern“. Hierzu wird im Haupttext eine
Marke der Form [#]_
oder [#Name]_
gesetzt, d.h. ein Rautenzeichen in
eckigen Klammern, gefolgt von einem Unterstrich.[4] Optional kann jeder Marke einer
Fußnote im Anschluss an die Nummer oder das Rautensymbol (Autonummerierung) noch
ein Name hinzugefügt werden, um im Quelltext die Zuordnung der Fußnoten-Marke
zur Fußnote zu erleichtern.
An einer späteren Stelle innerhalb der gleichen Datei, meist am Ende, wird der
Inhalt der jeweiligen Fußnote dann absatzweise mittels .. [#] Inhalt
beziehungsweise .. [#Name] Inhalt
angegeben, wobei [#Name]
der Marke im
Haupttext entsprechen muss.
Beispiel:
Etwas Text. [#FN1]_
Weiterer Text.
...
.. [#FN1] Eine Anmerkung als Fußnote.
Ergebnis:
Erstreckt sich der Inhalt einer Fußnote über mehrere Zeilen, so muss jede Zeile
nach der ersten um mindestens ein Leerzeichen eingerückt werden (üblicherweise
werden Folgezeilen eine Tabulatorbreite weit eingerückt, um eine bessere
Lesbarkeit zu erzielen).
Zitierungen und Literaturverzeichnis
Innerhalb einer Dokumentation sind auch Verweise auf literarische Werke anderer
Autoren möglich. Für jedes zitierte Werk wird dabei ein Kurzname vergeben,
häufig in der Form AutorJahr
. Im Haupttext (oder in einer Fußzeile) kann
auf diese Weise mittels [Kurzname]_
auf eine genauere Umschreibung der
Literaturquelle verwiesen werden, die einmalig an einer beliebigen Stelle der
Dokumentation mittels eines Eintrags der Form .. [Kurzname] Informationen
erfolgt.[5]
In der HTML-Version werden alle Literatur-Einträge an genau der Stelle
eingefügt, an der sie gesetzt werden. Insofern empfiehlt sich eine eigene Datei
namens quellen.rst
(oder ähnlich), in der die Literaturhinweise und
Quellenangaben gesammelt aufgelistet sind. In der LaTeX-Version wird am Ende des
Dokuments automatisch ein Literaturverzeichnis angelegt.
Index-Einträge
Innerhalb der Dokumentation können an beliebiger Stelle mittels folgender
Syntax Einträge für ein Stichwortverzeichnis festgelegt werden:
.. index:: Bezeichnung
In der HTML-Version wird ein Link auf die Index-Seite üblicherweise auf der
rechten Seite am oberen und unteren Seitenrand eingeblendet. In der
LaTeX-Version wird das Stichwortverzeichnis auf den letzten Seiten der
Dokumentation abgedruckt. Eine Verlinkung mit den entsprechenden Textstellen (in
der Druckversion mitsamt Angabe der jeweiligen Seitennummer) erfolgt
automatisch.
Um mehrere Index-Einträge zur gleichen Textstelle zu erreichen, können die
Bezeichnungen der gewünschten Einträge, durch Kommas voneinander getrennt, in
einer einzigen Zeile aufgelistet werden:
.. index:: Eintrag1, Eintrag2
Werden zwei Einträge durch einen Strichpunkt getrennt, so wird der zweite
Eintrag als „Unterkategorie“ des ersten im Stichwortverzeichnis angezeigt:
.. index:: Eintrag; Unterkategorie
Eine ausführliche Beschreibung findet sich in der Sphinx-Dokumentaion.
Bilder und Tabellen¶
Bilder können in Restructured-Text entweder mittels einer image
- oder
mittels einer figure
-Direktive eingebunden werden; letztere muss verwendet
werden, wenn die Abbildung eine Bildunterschrift („Caption“) erhalten soll.
Die Syntax für den Einbau eines Bildes sieht etwa folgendermaßen aus:
.. figure:: ../pics/no-littering.png
:name: fig-beispiel-bild
:alt: fig-beispiel-bild
:align: center
:width: 20%
Beispiel-Bild "No littering" ohne weitere Beschreibung.
.. only:: html
:download:`SVG: Beispiel-Bild ("No littering") <../pics/no-littering.svg>`
Ergebnis:
Bei Verwendung der figure
-Direktive wird zunächst der Pfad der
einzubindenden Graphik angegeben. Die :name:
-Attribut angegebene Bezeichnung
kann in Referenzen als Label aufgegriffen werden; die als :alt:
-Attribut
angegebene Bezeichnung wird im Webbrowser während des Ladens der Graphik oder im
Fall einer nicht auffindbaren Graphik-Datei angezeigt.
Über das Attribut :align:
wird die Ausrichtung der Graphik am Text als
left
, center
oder right
festgelegt. Die Angabe der Breite kann über
das :width:
-Attribut entweder als feste Längeneinheit (beispielsweise 4.2
cm
) oder relativ zur Textbreite als Prozentangabe erfolgen. Als Alternative
zur Angabe einer Breite kann die Größe einer Abbildung auch mittels einer
:height:
- oder scale
-Angabe (in Prozent der Original-Bildgröße)
festgelegt werden. Bei der Angabe einer Bildunterschrift innerhalb einer
figure
-Umgebung muss wiederum auf die richtige Einrücktiefe geachtet werden.
Bei der image
-Direktive können, abgesehen von der Bildunterschrift,
ebenfalls die oben genannten Attribute angegeben werden; dafür kann (nur) bei
der image
-Direktive als zusätzliches Argument mittels :target:
eine
Zieladresse angeegben werden, auf die beim Anklicken des Bildes verlinkt wird.
Zur Eingabe von Tabellen gibt es in RestructuredText ebenfalls mehrere
Möglichkeiten:
Bei einer „Gitter-Tabelle“ wird die tabellarische Anordnung bereits im
Quellcode angedeutet:
+------------------+---------------+---------------+
| Art der Einträge | Eigenschaft 1 | Eigenschaft 2 |
+==================+===============+===============+
| Gegenstand 1 | eckig | rot |
+------------------+---------------+---------------+
| Gegenstand 2 | rund | blau |
+------------------+---------------+---------------+
Ergebnis:
Art der Einträge
Eigenschaft 1
Eigenschaft 2
Gegenstand 1
eckig
rot
Gegenstand 2
rund
blau
Werden beim ersten „Querstrich“ in der Tabelle anstelle der =
-Zeichen
-
-Zeichen gesetzt, so wird die erste Zeile in normaler Schrift (nicht
fettgedruckt) ausgegeben.
Tabellen gemäß dieser Syntax sind mühsam, sofern der Texteditor nicht ein
geeignetes Feature dafür mitbringt (für den Editor Vim gibt es
hierfür beispielsweise das Table-Mode-Plugin). Der Vorteil
solcher Tabellen liegt vor allem in der angenehmen Lesbarkeit im Quellcode.
Nicht geeignet sind Grid-Tabellen, wenn auch Links oder mathematische Formeln
in der Tabelle vorkommen sollen. Diese machen im Quellcode mehr Buchstaben aus
als in der Ausgabe, so dass die Spalten dadurch breiter als nötig gedruckt
werden. Hierfür sollte eher „List-Tables“ verwendet werden.
Bei „List Tables“ werden die Einträge einer Tabelle in Form einer
verschachtelten Aufzählung angegeben. Die Syntax hierzu sieht etwa
folgendermaßen aus:
.. list-table::
:name: tab-beispieltabelle
:widths: 50 50 50
:header-rows: 0
* - Art der Einträge
- Eigenschaft 1
- Eigenschaft 2
* - Gegenstand 1
- eckig
- rot
* - Gegenstand 2
- rund
- blau
Ergebnis:
Art der Einträge
Eigenschaft 1
Eigenschaft 2
Gegenstand 1
eckig
rot
Gegenstand 2
rund
blau
Soll die erste Zeile der Tabelle fett gedruckt ausgegeben werden, muss das
Attribut :header-rows
auf 1
gesetzt werden.
Der Vorteil von List-Tables liegt darin, dass in den einzelnen Einträgen
beliebige Inline-Direktiven verwendet werden können (Links, Formeln, usw).
Ebenso kann die „Gewichtung“ der einzelnen Spaltenbreiten durch die Angabe der
:widths:
-Werte manuell angepasst werden. Im obigen Beispiel werden die
drei Spalten der Tabelle in einem Breitenverhältnis von 50:50:50
, also
mit gleicher Breite ausgegeben.
Wird in der gleichen Zeile direkt hinter .. list-table::
ein Titel
angegeben, so wird dieser als Überschrift über die Tabelle gedruckt.
Mit einer „CSV-Table“ kann der Inhalt der Tabelle durch „Comma Seperated
Values“ erfolgen. Diese Einträgte können wahlweise im Block der
Listen-Direktive oder in einer separaten .csv
-Datei angegeben werden.
Das obige Beispiel kann damit etwa folgendermaßen aussehen:
.. csv-table::
:widths: 50 50 50
Art der Einträge , Eigenschaft 1 , Eigenschaft 2
Gegenstand 1 , eckig , rot
Gegenstand 2 , rund , blau
Ergebnis:
Art der Einträge
Eigenschaft 1
Eigenschaft 2
Gegenstand 1
eckig
rot
Gegenstand 2
rund
blau
Soll anstelle von ,
ein anderes Zeichen zur Trennung der einzelnen
Einträge verwendet werden, so kann dieses mittels des :delim:
-Attributs
angegeben werden.
Anstelle einer direkten Eingabe der Tabelle kann auch der Inhalt einer
externen .csv
-Datei verwendet werden; hierzu muss entweder ein Pfad als
:file:
-Attribut oder eine Web-Adresse als :url:
-Attribut angegeben
werden.
Substitutionen¶
Mittels Substitutionen kann innerhalb eines Absatzes ein Text-Label durch einen
zugehörigen anderen Inhalt ersetzt werden. Dies ist insbesondere hilfreich, um
kleine Graphiken wie Icons in den Fließtext einzubinden; dies ist insbesondere
bei der Dokumentation von Programmen mit graphischen Bedienoberflächen nützlich.
Die Syntax hierfür lautet etwa folgendermaßen:
Beispiel:
.. Variante 1: Text-Hervorherbung und Ersetzung
Blindtext |hallo-welt| Blindtext
.. Variante 2: Einbau einer Icon-Graphik
Blindtext |symbol| Blindtext
.. |hallo-welt| replace:: **Hallo Welt!**
.. |symbol| image:: pics/symbol-amperemeter-klein.png
.. alt: Amperemeter-Symbol
Ergebnis:
Blindtext Hallo Welt! Blindtext
Blindtext Blindtext
Substitution können also, wie das obige Beispiel zeigt, weitgehend ähnlich wie
Fußnoten verwendet werden, mit dem wesentlichen Unterschied, dass |
-Symbole
anstelle der eckigen Klammern gesetzt werden müssen.
Links
- A RestructuredText Primer (en.)
- Quick RestructuredText (en.)
- RestructuredText and Sphinx CheatSheet (en.)
Anmerkungen:
[1] Eine „Direktive“ ist ein Syntax-Element, das Auswirkung auf einen ganzen
Absatz hat, also auf einen Bereich, der durch zwei leere Zeilen begrenzt
wird. Im kürzesten Fall, wie bei der .. rubric::
-Direktive, besteht der
Absatz aus einer einzelnen Zeile, die unmittelbar hinter dem Namen der
Direktive angegeben wird.
Eine Direktive wird allgemein durch zwei Punkte und ein Leerzeichen zu
Beginn einer Zeile eingeleitet, gefolgt vom Namen der Direktive, zwei
Doppelpunkten und einem Leerzeichen: .. name::
. Vor und nach einer
Direktive muss (mindestens) eine Leerzeile eingefügt werden.
Je nach Art der Direktive kann hinter ihrem Namen eine weitere Bezeichnung
und/oder eine beliebige Anzahl von Absätzen folgen. Um den Wirkungsbereich
der Direktive kenntlich zu machen, werden die Absätze dabei eine
Tabulatorbreite weit eingerückt (üblicherweise 4 Leerzeichen).
Siehe auch Liste aller RST-Direktiven (en.).
[2] Eine „Role“ ist ein Syntax-Element, das Auswirkung auf eine Textstelle
innerhalb eines Absatzes hat, d.h. auf einen Bereich, der durch zwei Leerzeichen
begrenzt wird („Inline-Markup“).
Eine Role hat im allgemeinen folgende Struktur: :name:`Inhalt`
. Die
einzigen Ausnahmen bilden die drei oben genannten (wohl am häufigsten
auftretenden) Roles für kursiven und fettgedruckten Text sowie Text in
Maschinenschrift. Sie stellen praktisch nutzbare Abkürzungen für
:emphasis:`Text`
, :strong:`Text`
sowie :literal:`Text`
dar, um
Tippbarbeit zu sparen und den Quelltext lesbarer zu gestalten.
Siehe auch Liste aller RST-Roles (en.).
[3] Die Intersphinx-Erweiterung lässt sich ebenso nutzen, wenn in der
Konfigurationsdatei conf.py
die extension
-Liste um den Eintrag
'sphinx.ext.intersphinx'
ergänzt wird.
[4] Optional können die Nummern der Fußnoten auch in der Art [01]_
,
[02]_
beziehungsweise [01Name]_
, [02Name]_
usw. selbst vergeben
werden. Davon ist allerdings abzuraten, denn sollte zu einem späteren
Zeitpunkt an einer Stelle mitten im Text eine weitere Fußnote eingefügt
werden, so müssen die Nummern aller folgenden Fußnoten manuell angepasst
werden. Durch automatisch nummerierte Fußnoten bleibt einem diese Arbeit
sicher erspart.
Tip: Durch die Option trim_footnote_reference_space = True
in der
conf.py
wird ein mögliches Leerzeichen vor Fußnoten, wie in
deutschsprachiger Literatur üblich, ignoriert.
[5] Die Syntax von Zitierungen ähnelt somit der Syntax von Fußnoten, mit dem
Unterschied, dass innerhalb der eckigen Klammern keine Nummer
beziehungsweise kein einleitendes Raute-Zeichen auftritt.
Jede Literaturangabe sollte folgende Informationen beinhalten: Name des
Autors beziehungsweise der Autoren, Titel des Werks, (gegebenenfalls) Name
des Verlags, Erscheinungsjahr.