[linux-l] Re: Dateisystem als Datenbank

Volker Grabsch vog at notjusthosting.com
So Okt 23 13:21:59 CEST 2005


On Sun, Oct 23, 2005 at 12:12:04AM +0000, Rocco Rutte wrote:
> >2) Obiger XSLT-Stylesheet macht Escaping?
> >-----------------------------------------
> 
> Das was ich gepostet hab: ja. In:
> 
>   <http://www.w3.org/2004/04/xhlt91/xh2latex.xsl>
> 
> ist das Escaping in den Zeilen 355 bis 439 jeweils inklusive und eben 
> ohne Tool und nur XSL dafür aber "in langsam". Man kann übrigens nur 
> diese Zeilen nehmen und beliebig von XML nach LaTeX konvertieren.

Achso, jetzt seh ich's. Oh mann, das ist nicht nur langsam und unsauber,
nein es ist sogar grottenschlecht! Da würde ich diese Ersetzung ja
lieber mit Sed machen, da krieg ich mit weniger Zeilen weitaus bessere
und schnellere Resultate!

Auch wenn das Quoting von TeXML noch nicht ganz perfekt ist: Es ist um
Klassen besser und durchdachter als *dieser* Kram. Willst du eine
stabile "Make-Kette", hilft momentan also nur TeXML.

> Also bisher hatte ich für muttng damit kein falsches Escaping (obwohl ich
> da auch sehr viele Kandidaten einfach aus stilistischen Gründen eh mit 
> Macros erschlage und ich somit das Escaping direkt in TeX mache...)

Ja, wenn du keine weiteren Sonderzeichen hast, dann reicht so eine
einfache Konvertierung. Und wenn das innerhalb von XSLT gemacht wird,
sparst du dir zumindest einen "sed"-Aufruf ... obwohl du hier IMHO an
der falschen Stelle sparst. ;-)


Lösung 1: Besseres Quoting
--------------------------

Außerdem ist das Quoten der Steuerzeichen ja nur die halbe Miete.
Die anderen Zeichen sollten auch umgewandelt werden, z.B. é
(e mit Akzent) sollte gegen \'e{} ersetzt werden. Diese Sachen
passieren bei dem xh2latex.xsl nicht direkt, sondern dafür wird
(laut Anleitung) nochmal utf2any rübergejagt.

Jedoch sollten gewisse Zeichen im Mathematik-Modus anders gequotet
werden als im Absatz-Modus, und das kann utf2any per Konstruktion
einfach nicht!

Und in LaTeX innerhalb von Tabbing-Umgebungen sollte es nichtmal
als \'e{} gequotet werden, das geht schief. Deshalb in Tabbing-
Umgebungen (oder besser: gleich im ganzen LaTeX-Dokument) lieber
als \a'e{} quoten. Ganz zu schweigen von den Problemen mit " und \"
wenn man das ngerman-Paket benutzt.

Über diese und andere Feinheiten habe ich mich bereits mit dem
TeXML-Autor gründlich unterhalten. Entweder TeXML wird verbessert:

	http://getfo.sourceforge.net/texml/


Lösung 2: LaTeX-Pakete
----------------------

Oder die Probleme werden innerhalb von LaTeX gelöst. Man kann z.B.
Statt \usepackage{ngerman} auch das Babel-Paket hernehmen:

	http://www.techfak.uni-bielefeld.de/rechner/latex/babel.html

... aber ich sehe grad, da ist das selbe Problem: Das " - Zeichen
wird umdefiniert. Das könnte man vielleicht noch extra quoten, es
ist ja defacto ein LaTeX-Sonderzeichen, auch wenn das im LaTeX-
Manual leider nicht so direkt drinsteht.

Die Akzent-Probleme u.Ä. lassen sich ja bereits mit dem
\usepackage[latin1]{inputenc} umgehen, aber das ist unbefriedigend,
weil Latin1 zu wenig Zeichen beherrscht. Eigentlich will man:
\usepackage[utf8x]{inputenc} haben.

Ich sehe, auch dafür gibt es ein Paket:

	http://www.unruh.de/DniQ/latex/unicode/

aber das ist leider nicht standardmäßig bei LaTeX dabei. Doch zumindest
in Debian ist es als Paket "latex-ucs" vorhanden. Damit wird diese
komische utf2any-Konstruktion überflüssig, und die Zeichen werden im
richtigen Kontext auch richtig gesetzt.


Vergleich
---------

Einen Qualitäts-Vergleich zwischen beiden Lösungen habe ich noch nicht
vorgenommen, aber das latex-ucs ist wenigstens schon ein Debian-Paket,
während TeXML seit langer Zeit schon "kurz" vor einem nächsten Release
steht, und einen überlasteten Autor hat. Außerdem ist der prinzipielle
Ansatz von latex-ucs besser, weil dort LaTeX-spezifische Probleme
innerhalb von LaTeX gelöst werden ... und nicht von einem externen
Quoting-Tool. Von daher muss ich dir mittlerweile überwiegend recht
geben.


> >Kannst du dieses Beispiel bitte erläutern? Wie genau läuft denn nun
> >das Escaping? Das würde mich wirklich interessieren, da ich ja (nicht
> >nur bei WikiDok) vor dem selben Problem stehe.
> 
> Ich bin kein XSL-Profi und meide es eher sehr gern. Aber wenn ich den 
> XSL-Code richtig lese wird mit text() auf den gesamten Text nach 
> bestimmten Zeichen (rekursiv) gesucht und die eben mit \ escaped. Aber 
> eben langsam.

Ja, okay, das hab ich jetzt gesehen. Grauenvoll.
Es ist langsam, viel Code, und erledigt die Aufgabe mehr schlecht als recht.

Mit dem latex-ucs wäre dieser We aberg wieder gangbar, auch wenn das
Escaping drastisch verbessert werden müsste:

1) muss auch das " gequotet werden!

2) dürfen keine sinnlosen Leerzeichen erzeugt werden.
   Stattdessen lieber durch Leergruppen, also {} abgrenzen.

3) muss mehr Performance rein, vielleicht kann man das durch eine
   geschicktere Konstruktion der Templates erreichen.


> >Was spricht eigentlich gegen diesen "QuoteML"-Ansatz, den ich vorschlug?
> >Das wäre ja die "menschenlesbare" Variante von TeXML. :-)
> 
> Es wäre ein Zwischenschritt mehr...

Ich stimme zu, dass ein Quoting per XSLT schöner wäre, vorallem
wenn man es per xi:include in seinen Stylesheet einbinden kann.
Hätte XSLT eine gute Unterstützung für Regex-Ersetzung, dann wäre
das besser.

Aber ATM würde ich eher zweistufig vorgehen wollen, z.B. über ein
"QuoteML". Zumal das den Vorteil hat, dass QuoteML ja erstmal per
XSLT (wie oben) weiterverarbeitet werden kann, aber man hat eben
außerdem die Option, das in ner Programmiersprache zu machen, mit
einem XML-Parser + einfache Textersetzung.


Viele Grüße,

	Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l