Inhaltsverzeichnis

dokulatex-Plugin

Idee: Ein Rewrite des dokutexit-Plugins1) mit dem Ziel, eine dokuwiki-Seite in schönen LaTeX-Code umzusetzen. Wichtig ist eine weitgehende Konfigurierbarkeit des Plugins.

Hintergrund: Es gibt bereits ein entsprechendes Plugin, dokutexit, das Vergleichbares leistet, also zumindest eine dokuwiki-Seite in LaTeX-Code umwandelt und das Ergebnis dann gleich noch via pdflatex in ein PDF-Dokument verwandelt. Allerdings ist der resultierende LaTeX-Quellcode alles andere als schön und für eine Weiterverarbeitung als LaTeX-Dokument fairerweise unbrauchbar.

Ziel (dieser Seite): Erst einmal eine Sammlung von Gedanken, was man beim Schreiben des Plugins alles berücksichtigen muß, und dann nach und nach konkretere Ansätze für die Umsetung.

<note important> Diese Seite dient gerade als Notizzettel für Ideen, während die Umsetzung des Plugins schon begonnen hat. Daher sind die Inhalte ständig im Fluß und es gibt keine Garantie, daß manch vielversprechend klingende Idee jemals implementiert wird (für ausgesprochen schlechte Ideen gilt Ähnliches). </note>

<note important>Mac OS X: Das mitgelieferte Entpackprogramm stinkt und kommt nicht mit den ZIP-Archiven klar (sehrwohl hingegen der Befehl zip auf der Kommandozeile). Eine echte Alternative zum mitgeliegerten Entpacker ist Unarchiver.</note>

Zielstellung des Plugins

Fahrplan

  1. Plugin-Klasse erzeugen (Renderer!) ✔
  2. Ausgabe des LaTeX-Quellcodes der Grundelemente der Seite ✔
  3. anfängliche Konfigurationsmöglichkeiten ✔
  4. ZIP-Archiv inklusive der Bilder ✔
    • temp-Dir aufräumen!
  5. Bilder als PDF einbinden, so vorhanden ✔
  6. zusätzlichen Code für den Header aus Plugins ✔
    • Idee: Plugins können ihre eigenen Strukturen definieren und verwenden
  7. verschiedene LaTeX-Templates ✔
  8. erste „veröffentlichte“ Version (0.1)
  9. fertiges, stabiles, sicheres Plugin, das keine Wünsche offen läßt

offene Fragen

Eine noch grob unvollständige Liste von Fragen zur Funktionalität und zur Umsetzung des Plugins:

insofern könnte man überlegen, ob man das „h1“ einer Wikiseite beim Export einer einzelnen Wikiseite in LaTeX einfach in den „title“ schreibt - und mit „section“ für „h2“ weitermacht - und dann entsprechend für den report einfach nur das „h1“ in ein „chapter“ statt in den „title“ schreibt
aber soweit, daß man mehrere Seiten als einen Report exportieren kann, bin ich noch nicht mal richtig gedanklich…

Hinweise zum Programmieren

Bilder und Grafikformate

Konfiguration

Die meisten Dinge sollten über die Konfigurationsoberfläche des DokuWiki zugänglich sein. Dabei ist wichtig, irgendwie die Balance zwischen zu vielen Optionen und einer weitgehenden einfachen Konfigurierbarkeit durch Nutzer, die keinen Dateisystemzugriff haben, zu gewährleisten. Die Grundeinstellungen sollten ein vernünftiges Arbeiten unter Standardbedigungen ermöglichen.

Bildunterschriften

Das Standard-Markup von DokuWiki hinsichtlich der Einbindung von Bildern entspricht nicht den Ansprüchen, die man (aus einer wissenschaftlichen Perspektive kommend) an die Einbindung von Abbildungen (und gleichermaßen Tabellen) hat.2) Insbesondere gibt es keine einfache Möglichkeit, für Bilder und Tabellen eine entsprechende (formatierte) Beschreibung anzufügen, die klar zum jeweiligen Bild bzw. zur jeweiligen Tabelle gehört.3) Hier versucht das caption-Plugin Abhilfe zu schaffen und geht dabei den bewährten Weg über einfache XML-Container.

Für weitere Details siehe die Seite zum caption-Plugin.

Einbau eines Exportknopfes

Eine komfortable Variante, insbesondere vor dem Hintergrund, daß man nicht nur LaTeX-, sondern auch ODT-Export (über das ODT-Plugin) haben möchte, ist der Einbau einer Auswahlliste in das verwendete Template (z.B. über oder unter dem Suchfeld, je nach Gegebenheiten):

<div class="export">
  Export: 
  <form method="get" action="<?php wl($ID)?>">
    <select name="do">
      <option value="export_odt">ODT</option>
      <option value="export_dokulatex" selected="selected">LaTeX</option>
    </select>
    <input type="submit" value="Go" class="button" />
  </form>
</div>

Natürlich könnte man die Schaltfläche „Go“ noch als Grafik umsetzen, was evtl. Platz sparte.

TODO: LaTeX-Codeschnipsel für bestimmtes Markup

Für eine Reihe von DokuWiki-Markups gibt es keine direkte und einfache LaTeX-Entsprechung. Deshalb müssen hier erst einmal von LaTeX-Seite Ideen für entsprechenden Code entstehen, die im LaTeX getestet werden und dann entsprechend implementiert werden können.

Zumindest für einen Teil dieser Plugins wäre es evtl. sogar nützlich, entsprechenden LaTeX-Code zu schreiben, der Definitionen für Umgebungen bereithält. Nachteilig an diesem Vorgehen ist allerdings noch, daß man dann keine saubere Trennung mehr zwischen dokulatex-Plugin und den jeweiligen Syntaxplugins hat.

Idee: Gibt es grundsätzlich die Möglichkeit, ähnlich wie bei den CSS-Dateien für die Plugins auch LaTeX-Pakete zu bauen, die entsprechend dann vom dokulatex-Plugin gelesen werden? Damit wäre man dann auch gleich das Problem los, daß man einerseits ordentliches Markup im LaTeX-Quellcode verwenden könnte, aber trotzdem die Unabhängigkeit des jeweiligen Plugins vom dokulatex-Plugin bewahrt hätte. Das dokulatex-Plugin ist ja nur ein möglicher Renderer für eine LaTeX-Ausgabe.

PHP-Array für Sonderzeichen-Umsetzung

    var $specialchars = array(
    	'å' => '\aa',
    	'Å' => '\AA',
    	);

Code

Die jeweils neueste Version zum Herunterladen:

Bitte beachten: Nutzung auf eigene Verantwortung. Fehler und Sicherheitslücken sind nicht ausgeschlossen. Jeder, der Fehler entdeckt, wird herzlich gebeten, sie entsprechend via BugZilla (s.u.) zu berichten.

Known Bugs

<note tip>Für Bug Reports gibt es mittlerweile BugZilla. Bitte Bugs dort eintragen (zum Bugs eintragen ist einmalig eine Registrierung mit einer gültigen Emailadresse notwendig). </note>

1)
in der Praxis ist es ein Umschreiben des extrem guten ODT-Plugins
2)
Natürlich bin ich mir bewußt, daß es nie das Ziel des DokuWiki war, möglichst vollständig ein Textsatzsystem zu reimplementieren, sondern daß immer die Einfachheit im Vordergrund stand und steht. Aber die einfache Erstellung von Plugins ist ja gerade die Stärke dieses Wikis.
3)
vergleichbar der LaTeX-Struktur mit dem figure- und table-Container, in dem sich dann die „caption“ befindet