Wikipedia:Technik/Text/Reader/WikiTaxi/Skripte
WikiTaxi/Skripte
Der Offline-Reader WikiTaxi hatte früher leider kleine Probleme mit einigen lokalisierten Schlüsselwörtern, bestimmten Erweiterungen und Ähnlichem. Aus diesem Grund hatte ich einige Skripte geschrieben, mit denen man die Datenbank vor dem Import geeignet anpassen konnte. Inzwischen funktioniert WikiTaxi wieder so gut, dass die Skripte eigentlich überflüssig sind, in ein paar Fällen (vor allem bei Kategorien) sind sie jedoch noch nützlich.
Die Skripte sind in erster Linie für Linux geschrieben, da sed aber auch für Windows verfügbar ist, müssten sie ohne Anpassung auch unter Windows funktionieren.
Die Skripte bewirken keine Wunder, können aber ein Offline-Arbeiten angenehmer gestalten. Besonders lohnend sind sie in meinen Augen für Wikisource.
Ablauf
BearbeitenLinux
BearbeitenSpeichere alle Skripte unter dem angegebenen Namen in einem Verzeichnis, das sich im Pfad befindet (~/bin/
ist ein guter Ort), und mache sie ausführbar (chmod +x wiki.*
). Sollte sich sed nicht unter /usr/bin/sed
befinden, muss jeweils die erste Zeile angepasst werden. Lade die aktuelle Datenbank herunter. Zum Konvertieren verwendest du den folgenden Befehl (in einer Zeile): wiki.tags0 , wobei du für dewiki-xxx-pages-articles.xml.bz2 den Dateinamen der heruntergeladenen Datenbank (inklusive Pfad) angibst und die Ausgabedatei de.xml.bz2 natürlich auch anders heißen darf. Diese Konvertierung dauert je nach Rechner mehr oder weniger lang, bei mir sind es ca. 2 Stunden pro Gigabyte, also etwa 3½ Stunden für die deutsche Wikipedia. Anschließend startest du wie gewöhnlich den WikiTaxi-Importer und importierst die erzeugte Ausgabedatei. Wenn alles funktioniert, kannst du beide xml.bz2-Dateien löschen.
Windows
BearbeitenEine genaue Anleitung für Windows kann ich leider nicht geben, nur einige Hinweise: Installiere sed für Windows. Außerdem brauchst du ein Programm zum Komprimieren und Dekomprimieren von bzip2-Dateien, in der Liste von Datenkompressionsprogrammen wirst du sicher fündig. Anschließend gehst du wie unter Linux vor. Wenn sich das Kompressionsprogramm auch auf der Kommandozeile bedienen lässt, ersetzt du im Befehlsaufruf bzcat dewiki-xxx-pages-articles.xml.bz2
durch den Befehl, mit dem die Datei auf die Standardausgabe dekomprimiert wird und bzip2 > de.xml.bz2
durch den Befehl, mit dem von der Standardeingabe in die Datei komprimiert wird. Ferner sind alle wiki.xyz
durch sed -f wiki.xyz
bzw. sed -nf wiki.xyz
(jeweils wie in der ersten Zeile des Skripts angegeben). Alternativ kannst du die Skripte auch unter wiki.xyz.sed
speichern und die Endung .sed
mit sed verknüpfen. Für den Fall, dass das Kompressionsprogramm nicht von der Kommandozeile aus bedient werden kann, dekomprimerst du die Datei vorher. Der Aufruf der Skripte lautet dann wiki.nowiki0 . Zum Schluss komprimierst du die Ausgabedatei. Wenn alles funktioniert hat, darfst du auch gerne diese Anleitung ausführlicher gestalten.
Skripte
Bearbeitenwiki.tags0
BearbeitenBei meinen ersten Versuchen habe ich festgestellt, dass es sehr viel angenehmer ist, wenn alle Befehle in spitzen Klammern in eigenen Zeilen stehen. Daher fügt das erste Skript an solchen Stellen Zeilenumbrüche ein. Um diese am Ende wieder entfernen zu können, werden die entstehenden Zeilen mit einem Anführungszeichen gekennzeichnet.
#!/usr/bin/sed -f
# bei < und > aufspalten
s/</\n"\n\</g
s/>/\>\n"\n/g
# unnötige Aufspaltungen entfernen
s/^\n"\n//
s/\n"\n$//
s/\n"\n\n"\n/\n"\n/g
wiki.nowiki0
BearbeitenInnerhalb von <nowiki>…</nowiki> soll nichts verändert werden, daher werden potentiell „gefährliche“ Zeichen mit zwei Kleiner-Zeichen entschärft. Eigentlich müssten auch source- und ähnliche Umgebungen analog behandelt werden, allerdings halte ich die Fehler, die durch diese Missachtung entstehen für verschmerzbar.
#!/usr/bin/sed -f
# von <nowiki> bis </nowiki> oder Artikelende
/<nowiki>/,/<\/nowiki>\|<\/text>\|<\/comment>/ {
# jedes potentiell "gefährliche" Zeichen mit << ukenntlich machen
s/{/{<</g
s/\[/\[<</g
s/</\<<</g
# s/__/__<</g
s/#\(weiterleitung\)/#<<\1/gi
}
wiki.de
BearbeitenHier wird geändert, was speziell die deutsche Wikipedia betrifft: Zunächst werden störende Lokalisierungen rückgängig gemacht, dann einige wichtigen Variablen und Namensraum-Aliase ersetzt.
#!/usr/bin/sed -f
# Lokalisierungen
s/#WEITERLEITUNG/#REDIRECT/i
s/\[\[Image:/\[\[Datei:/gi
s/\[\[File:/\[\[Datei:/gi
s/\[\[Bild:/\[\[Datei:/gi
s/{{SEITENTITEL:/{{DISPLAYTITLE:/
s/{{SORTIERUNG:/{{DEFAULTSORT:/
s/{{SEITENNAME}}/{{PAGENAME}}/g
s/{{ZAHLENFORMAT:/{{formatnum:/g
# Variablen
s/{{SERVER}}{{localurl:/{{canonicalurl:/g
s/{{SITENAME}}/Wikipedia/g
s/{{fullurl:/{{canonicalurl:de.wikipedia.org\/wiki\//gi
s/{{SUBJECTSPACE}}/{{NAMESPACE}}/g
s/{{SUBJECTPAGENAME}}/{{NAMESPACE}}:{{PAGENAME}}/g
s/{{SUBJECTPAGENAMEE}}/{{NAMESPACEE}}:{{PAGENAMEE}}/g
s/{{NUMBEROFARTICLES}}/1.000.000/g
# Namensraum-Aliase
s/\[\[WP:/\[\[Wikipedia:/g
s/\[\[P:/\[\[Portal:/g
wiki.sonstiges
BearbeitenDie Einbindung von Unterseiten wie auf der Hauptseite funktioniert in WikiTaxi nicht, dieses Problem wird behoben. Schließlich werden Bilder, die mit einer Größe von unter 40 Pixeln eingebunden sind durch [*] ersetzt. Ein <onlyinclude> direkt vor <includeonly> oder einer Tabelle macht Probleme, die durch einen Leerkommentar in den meisten Fällen behoben werden.
#!/usr/bin/sed -f
s/{{\//{{{{NAMESPACE}}:{{PAGENAME}}\//g
s/\(\[\[Datei:[^]]\+|[123][0-9]px[^]]*\]\]\)/\&#x5B;*\&#x5D;\<!--\1--\>/g
s/<onlyinclude>/\<onlyinclude\>\<!-- --\>/
s/{{PLURAL:/{{#ifexpr: 1 = /gi
wiki.extensions
BearbeitenWikiTaxi ersetzt Inputboxen und Imagemaps durch Platzhalter, das folgende Skript tut dies auch mit Gallerien, Zeitleisten und Kategorienbäumen.
#!/usr/bin/sed -f
s/< *timeline.*>/\&#x5B;Timeline\&#x5D;\<!--&/
s/< *\/timeline *>/&--\>/
s/< *gallery.*>/\&#x5B;Gallery\&#x5D;\<!--&/
s/< *\/gallery *>/&--\>/
s/< *categorytree.*>/\&#x5B;Categorytree\&#x5D;\<!--&/
s/< *\/categorytree *>/&--\>/
wiki.interwiki
BearbeitenEinige neue Sprachen sind seit der letzten WikiTaxi-Version dazugekommen, Interwikilinks zu diesen bleiben in WikiTaxi am Ende stehen. Das folgende Skript kommentiert sie daher aus. Sämtliche Sprachen stehen hier.
#!/usr/bin/sed -f
s/\(\[\[ace:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[bxr:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[ckb:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[closed-zh-tw:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[cz:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[epo:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[jp:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[kaa:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[lbe:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[mhr:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[mwl:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[nomcom:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[pcd:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[pnt:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[pnb:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[srn:[^]]\+\]\]\)/\<!--\1--\>/
s/\(\[\[tp:[^]]\+\]\]\)/\<!--\1--\>/
wiki.source
BearbeitenIm Zusammenhang mit source und pre verhält sich WikiTaxi nicht genau so wie Mediawiki. Dies betrifft insbesondere HTML-Kommentare und Vorlageneinbindungen. Durch das Skript bleibt der Wiki-Quelltext leider nicht mehr lesbar, dafür aber die Anzeige in WikiTaxi.
#!/usr/bin/sed -f
# von <pre> bis </pre> oder Artikelende
/< *pre.*>/,/< *\/ *pre *>\|<\/text>\|<\/comment>/ {
# <! maskieren
s/<!/\&lt;!/g
# {{ maskieren
s/{{/\&#123;\&#123;/g
# <nowiki> ignorieren
s/<<<\/\?nowiki>/\<!--&--\>/
}
# gleiches für source
/< *source.*>/,/< *\/ *source *>\|<\/text>\|<\/comment>/ {
s/&/\&amp;/g
s/<!/\&lt;!/g
s/{{/\&#123;\&#123;/g
}
wiki.poem
BearbeitenGedichte kommen in Wikipedia nur selten vor, in Wikisource ist es dagegen sehr störend, wenn kein Zeilenumbruch erfolgt.
#!/usr/bin/sed -f
# von <poem> bis </poem> oder Artikelende
/< *poem.*>/,/< *\/poem *>\|<\/text>\|<\/comment>/ {
# erste und letzte Zeile auskommentieren
/< *\/\?poem/ {
s/< *\/\?poem.*>/\<!--&--\>/
b
}
# " ignorieren, vor nächste Zeile keinen Doppelpunkt
/^"$/ {
h
b
}
# : voranstellen
x
/^"$/ {
s/"//
x
b
}
x
s/^.\+$/:&/
# leere Zeilen zu <br />
s/^$/\<br \/\>/
}
wiki.nowiki1
BearbeitenDie Kleiner-Zeichen, die am Anfang eingefügt wurden, werden wieder entfernt.
#!/usr/bin/sed -f
s/<<//g
wiki.tags1
BearbeitenDie Zeilenumbrüche, die am Anfang eingefügt wurden, werden wieder entfernt.
#!/usr/bin/sed -nf
# erste Zeile speichern
1 {
h
b
}
# bei zu entfernenden Zeilen
/^"$/ {
# nächste Zeile lesen
n
# und ohne Zeilenumbruch anhängen
H
g
s/\n//
h
b
}
# gespeicherte Zeile ausgeben
x
p
# letzte Zeile
$ {
x
p
}
Weiteres
BearbeitenAuf die gleiche Art kann man natürlich auch andere Probleme beseitigen.
Kategorien
BearbeitenEs ist möglich, die Kategorien mit den entsprechenden Seiten zu füllen. Allerdings dauert alles wesentlich länger, die Datenbank wird größer, Kategorisierung durch Vorlagen wird nicht funktionieren. Wem das egal ist, kann die folgenden Skripte verwenden.
wiki.kategorien0
ist ein sed-Skript, das vor wiki.nowiki1
in die Befehlskette eingefügt werden muss. Dadurch entstehen im aktuellen Verzeichnis zwei Dateien mit allen Informationen zu den Kategorien. Anschließend führt man im selben Verzeichnis das Shell-Skript wiki.kategorien1
aus. Mit etwas Aufwand ließe sich dieses Skript auch für Windows nachprogrammieren. Dieses fügt die beiden Dateien zusammen. Zum Schluss fügt man die gefüllten Kategorien in die Datenbank ein: wiki.kategorien2 Diese letzte Datei wird nun importiert. Die erste Datei de.xml.bz2 und die Datei kategorien.ausgabe können anschließend beide gelöscht werden.
wiki.kategorien0
Bearbeiten#!/usr/bin/sed -nf
p
# Kategorieninhalt speichern, verfluchte leere Kategoriebeschreibungsseiten!!!
/<title>Kategorie:/,/<\/text>\|<text xml:space="preserve" \/>/ w kategorien.beschreibung
# Titel speichern
/<title>/ {
s/^.*<title>\([^<]*\)<\/title>.*$/\1/
h
b
}
# nichts zwischen includeonly und in Kommentaren
/<includeonly>/,/<\/includeonly>\|<\/text>/ b
/<!--.*-->/ b
/<!--/,/-->\|<\/text>/ b
/<comment>/ b
# Sortierung speichern
/{{DEFAULTSORT:/ {
s/^[^{]*{{DEFAULTSORT:\([^}]*\)}.*$/\1/
H
x
s/^\(.*\)\n\(.*\)$/\2\n\1/
x
}
# Kategorie speichern
/\[\[Kategorie:/ {
s/^.*\[\[Kategorie:\([^]]*\)\].*$/\1/
# Unterstriche zu Leerzeichen, %-Darstellung bei wichtigen Zeichen korrigieren
y/_/ /
s/%c3%84/Ä/gi
s/%c3%96/Ö/gi
s/%c3%9c/Ü/gi
s/%c3%9f/ß/gi
s/%c3%a4/ä/gi
s/%c3%b6/ö/gi
s/%c3%bc/ü/gi
y/|/\n/
G
# Inhalt Patternspace: Kat.\nSort.\nSort.\nTitel oder Kat.\nSort.\nTitel oder Kat.\nTitel
s/^\(.*\n.*\)\n.*\(\n.*\)$/\1\2/
s/^[^\n]*\n\([^\n]*\)$/&\n\1/
t x
: x
y/\n/>/
# Inhalt Patternspace: Kat.>Sort.>Titel
s/^\(.*\)\(>.*>\)\(Kategorie:.*\)$/\1>k\2:\3/
t weiter
s/^\(.*\)\(>.*>.*\)$/\1>t\2/
:weiter
s/^\(.*>.>.*\)>\(.*\)$/\1"* [[\2]]/
w kategorien.inhalt
}
wiki.kategorien1
Bearbeiten#! /bin/sh
nl -nrz -s'"' -ba -w8 kategorien.beschreibung | sed '
/<title>/ {
h
s/^.*<title>Kategorie:\([^<]*\)<.*$/\1>/
x
}
G
s/<text xml:space="preserve" \/>/<text xml:space="preserve">/
s/^\(.*\)\n\(.*\)/\2\1/' > kategorien.beschreibung1
rm -f kategorien.beschreibung
LANG=C
# Inhalte nicht vorhandener Kategorien werden in andere Kategorien gesteckt
sort kategorien.beschreibung1 kategorien.inhalt | uniq | sed '
s/^[^"]*"\(.*\)$/\1/
s/<\/text>//
0,/<title>/ {
/<title>/ i <page>
b
}
/<title>/ {
i\
</text>\
</revision>\
</page>\
<page>
b
}
$ {
a\
</text>\
</revision>\
</page>
}' > kategorien.ausgabe
rm -f kategorien.beschreibung1
rm -f kategorien.inhalt
wiki.kategorien2
Bearbeiten#!/usr/bin/sed -nf
/<\/siteinfo>/ r kategorien.ausgabe
/<page>/ b
/<title>Kategorie:/,/<\/page>/ b
/<title>/ i <page>
p
Mathematik
BearbeitenWährend der Bearbeitung der Datenbank können auch einfache Formeln in HTML umgewandelt und damit von WikiTaxi angezeigt werden. Dazu benötigst du ein Programm, das LaTeX in HTML übersetzt. Meine Lösung baut auf texvc auf, das bei Wikipedia verwendet wird. Besorge dir also den Quelltext von texvc und einen Ocaml-Compiler. Das Ganze dauert dadurch allerdings etwas länger.
In der Datei html.ml
sind alle Zeilenumbrüche \n
zu entfernen, die Datei texvc.ml
ersetzt du durch folgenden Code:
exception LexerException of string
let lexer_token_safe lexbuf =
try Lexer.token lexbuf
with Failure s -> raise (LexerException s)
let render tree =
begin
let html = Html.render tree
in print_string (match (html,!Html.conservativeness) with
None,_ -> ""
| Some h,Html.CONSERVATIVE -> h
| Some h,Html.MODERATE -> h
| Some h,Html.LIBERAL -> h
);
end
let _ =
try render (Parser.tex_expr lexer_token_safe (Lexing.from_string Sys.argv.(1)))
with Parsing.Parse_error -> print_string "<span style='color:red;'>Syntaxfehler</span>"
| LexerException _ -> print_string "<span style='color:red;'>Lexingfehler</span>"
| Texutil.Illegal_tex_function s -> print_string ("<span style='color:red;'>Fehler</span> Unbekannte Funktion:" ^ s) (* oder print_string (""), falls eine ältere Version verwendet wird *)
| Invalid_argument _ -> print_string "<span style='color:red;'>Fehler</span>"
| Failure _ -> print_string "<span style='color:red;'>Fehler</span>"
| _ -> print_string "<span style='color:red;'>Fehler</span>"
Dann kompilierst du das Programm und kopierst es unter dem Namen texvc_
zu den Skripten.
Um während der Bearbeitung die Formeln zu übersetzen, fügst du in den Befehlsaufruf noch das folgende Skript wiki.math
ein.
wiki.math
Bearbeiten#!/usr/bin/sed -nf
# von <math> bis </math> oder Artikelende
/<math>/,/<\/math>\|<\/text>\|<\/comment>/I {
# erste Zeile speichern
/<math>/ {
h
b
}
# speichern
H
# bei letzter Zeile auswerten
/<\/text>\|<\/comment>/ {
g
p
}
/<\/math>/I {
g
# Zeug entfernen
s/\n"\n//g
s/<\/\?math>//g
y/\n/ /
# HTML
s/</</g
s/>/>/g
# ' escapen
s/'/'"'"'/g
# Programm aufrufen
s/.*/texvc_ '&'/
e
/./ {
# doppelte kursiv weg
s/<\/i><i>//g
s/''/<nowiki>''<\/nowiki>/g
s/{{/<nowiki>{{<\/nowiki>/g
s/\[/<nowiki>[<\/nowiki>/g
s/|/\|/g
s/!!/<nowiki>!!<\/nowiki>/g
# HTML maskieren
s/&/\&/g
s/"/\"/g
s/</\</g
s/>/\>/g
x
s/^/\<!--/
s/$/--\>/
H
g
s/\n//
p
b
}
g
p
}
b
}
p
Andere Sprachen und Schwesterprojekte
BearbeitenFür andere Sprachen und Projekte muss vor allem das Skript wiki.de
angepasst werden. Die Namensraum-Aliase findet man im Zweifelsfall hier. Ferner sind in allen Skripten mit deutschem Namen irgendwelche Lokalisierungen vorhanden, die angepasst werden müssen. Skripte für nicht installierte oder nicht verwendete Erweiterungen können entfallen.
Wikisource
BearbeitenIn Wikisource wird die Labeled Section Transclusion-Erweiterung verwendet. Diese mit den Mitteln nachzuprogrammieren, die WikiTaxi kennt, ist unmöglich. Zum Glück wird aber nur ein Teil der Funktionalität benutzt, dieser kann mit ein paar {{#if-s nachgebildet werden. Der Befehlsaufruf lautet wiki.tags0 .
wiki.desource
Bearbeiten#!/usr/bin/sed -f
# Lokalisierungen
s/#WEITERLEITUNG/#REDIRECT/i
s/\[\[Image:/\[\[Datei:/gi
s/\[\[File:/\[\[Datei:/gi
s/\[\[Bild:/\[\[Datei:/gi
s/{{SEITENTITEL:/{{DISPLAYTITLE:/
s/{{SORTIERUNG:/{{DEFAULTSORT:/
s/<abschnitt anfang/\<section begin/ig
s/<abschnitt ende/\<section end/ig
# Variablen
s/{{SERVER}}{{localurl:/{{canonicalurl:/g
s/{{SITENAME}}/Wikisource/g
s/{{SERVER}}/https:\/\/de.wikisource.org/g
s/{{fullurl:/{{canonicalurl:de.wikisource.org\/wiki\//gi
s/{{localurl:\([^|}]*\)[^}]*}}/\/wiki\/\1/gi
s/{{SUBJECTPAGENAMEE}}/{{NAMESPACEE}}:{{PAGENAMEE}}/g
s/{{REVISIONID}}/0/g
s/{{REVISIONDAY}}/0/g
s/{{REVISIONMONTH}}/0/g
s/{{REVISIONYEAR}}/0/g
s/<pagequality [^\/]*\/>/\<!--&--\>/
s/|action=edit&image=\([^ ]*\) /|action=edit\&image={{urlencode:\1}} /
# Namensraum-Aliase
s/\[\[WS:/\[\[Wikisource:/g
wiki.lst
Bearbeiten#!/usr/bin/sed -f
# senkrechte Striche escapen
/<section *begin=/,/<section *end\|<\/text>\|<\/comment>/ {
/"/ b
s/|/"/g
s/{{\([^"}]*\)"\([^"}]*\)/{{\1|\2/g
s/{{\([^"}]*\)"\([^"}]*\)"\([^"}]*\)/{{\1|\2|\3/g
s/{{\([^"}]*\)"\([^"}]*\)"\([^"}]*\)"\([^"}]*\)/{{\1|\2|\3|\4/g
s/"/{{!}}/g
}
# Anfang durch ein #ifeq ersetzen, nur wenn der übergebene Parameter
# (default: text, egal ob groß oder klein) stimmt oder die Seite direkt betrachtet wird anzeigen
s/<section *begin=\("\)\?\([^ &]*\)\("\)\? *\/ *>/\<includeonly\>{{#ifeq:{{{1|text}}}|\2|\<\/includeonly\>/g
s/{{#ifeq:{{{1|text}}}|Text|/{{#ifeq:{{{1|Text}}}|Text|/
s/<section *begin *\/ *>//g
# Ende schließen
s/<section *end[^\/]*\/ *>/\<includeonly\>|}}\<\/includeonly\>/ig
# lst ist damit überflüssig
s/{{#lst:/{{:/g
Wikibooks
BearbeitenWikibooks hat beim Testen den ungeheuren Vorteil, dass die Datenbank sehr klein ist, und damit alles ziemlich schnell geht. Statt wiki.de
verwendet man wiki.debooks
:
wiki.debooks
Bearbeiten#!/usr/bin/sed -f
# Lokalisierungen
s/#WEITERLEITUNG/#REDIRECT/i
s/\[\[Image:/\[\[Datei:/gi
s/\[\[File:/\[\[Datei:/gi
s/\[\[Bild:/\[\[Datei:/gi
s/{{SEITENTITEL:/{{DISPLAYTITLE:/
s/{{SORTIERUNG:/{{DEFAULTSORT:/
# Variablen
s/{{SERVER}}{{localurl:/{{canonicalurl:/g
s/{{SITENAME}}/Wikibooks/g
s/{{fullurl:/{{canonicalurl:de.wikibooks.org\/wiki\//gi
s/{{SUBJECTSPACE}}/{{NAMESPACE}}/g
s/{{SUBJECTPAGENAME}}/{{PAGENAME}}/g
# Namensraum-Aliase
#s/\[\[WB:/\[\[Wikibooks:/g
Fehler
BearbeitenFehler können immer auftreten. Erfolgreich getestet habe ich die obigen Skripte – einschließlich Kategorien und Mathematik – mit der deutschen Wikipedia (20100307). Alte Versionen der Skripte habe ich auch erfolgreich auf Wikibooks (20090607) und Wikisource (20091218) angewandt. Zumindest größere Fehler sollten daher nicht mehr auftreten.
Falls dir ein Fehler auffällt, und sei er auch noch so klein, dann melde ihn doch bitte auf der Diskussionsseite.