Ach, was habe ich doch für hässliche wörter in meinem wortschatz gefunden, als ich mit diesem LaTeX2html ein größeres LaTeX-dokument in eine hübsche HTML-versjon umgewandelt habe und auch wollte, dass die dabei generierten dateien andere namen als node1.html
bis node112.html
bekommen.
Was sich hinter latex2html -init-file l2h-init.pl Handbuch.tex
verbirgt, ist das folgende perl-skript, das ein paar konfigurationen und eine kleine huck-funkzjon für die erzeugung der dateinamen enthält. Die kommentare habe ich mal dringelassen, zur steigerung des genusses:
#!/usr/bin/perl
# -*- coding: iso-8859-1 -*-
#
# Wer sich über das Encoding wundert. Das ist das Encoding, in dem
# mir dieses LaTeX2HTML die Strings als Argumente rüberschiebt, und so
# kann ich am einfachsten ein paar REs drauf loslassen. Das ist noch
# eines der kleineren (und dokumentierten) Ärgernisse, unten stehen
# noch ein paar Hinweise auf die wirklich nervigen "Features".
#
# $Id: l2h-init.pl,v 1.8 2010/12/03 20:46:13 elias Beta $
# +---------------+
# ! EINSTELLUNGEN !
# +---------------+
$TITLE = 'Startseite';
$DESTDIR = 'html';
$NO_SUBDIR = 0;
$MAX_SPLIT_DEPTH = 8;
$MAX_LINK_DEPTH = 2;
$SHOW_SECTION_NUMBERS = 1;
$HTML_VERSION = '4.0';
$LOCAL_ICONS = 1;
$SHORT_INDEX = 1;
$NUMBERED_FOOTNOTES = 1;
$ADDRESS = 'Handbuch für die <a href="http://www.tamagothi.de/software/virtuelle-zockhalle/">Virtuelle Zockhalle</a> von <a href="http://www.tamagothi.de/">Elias Schwerdtfeger</a>';
$INFO = 0;
$NETSCAPE_HTML = 1;
$CHILDLINE = "";
# +------------------+
# ! EIGENER ICONSATZ !
# +------------------+
$BOTTOM_NAVIGATION = 0;
$AUTO_NAVIGATION = 0;
$TOP_NAVIGATION = 1;
# Um den Pfad zu den Icons relativ anzugeben, muss ich ihn relativ
# zum Zielverzeichnis angeben. Hat mal wieder keiner für nötig ge-
# halten, so etwas zu dokumentieren, denn wir probieren ja alle so
# gern lustige Dinge aus... :(
$ALTERNATIVE_ICONS = '../Icons';
# Arrgh! Es saugt!!
# 17411 Skriptzeilen im Kernprogramm (da kommen noch Module dazu),
# und die Jauche ist nicht einmal dazu imstande, die Größe der
# verwendeten eigenen Icons irgendwie automatisch zu ermitteln!
# Boah, wie schlecht! m(
%iconsizes = ( 'up' => 'WIDTH="32" HEIGHT="32"',
'next' => 'WIDTH="32" HEIGHT="32"',
'previous' => 'WIDTH="32" HEIGHT="32"',
'contents' => 'WIDTH="32" HEIGHT="32"',
'index' => 'WIDTH="32" HEIGHT="32"' );
# +--------------------+
# ! BESSERE DATEINAMEN !
# +--------------------+
#
# Wer eine Ahnung davon bekommen möchte, wie Scheiße schmeckt, bekommt
# sie vermutlich beim Lesen der folgenden Kommentare, die ich einfach
# mal so drinstehen lasse, wie sie mir beim Coden gekommen sind.
$CUSTOM_TITLES = 1;
my %titleused = ( 'index' => 1 );
sub custom_title_hook
{
my ($k) = @_;
my ($tmp, $m, $l);
# HTML-Tags entfernen
# Der Titel der Seite wird doch tatsächlich mit vollständigem
# HTML-Markup übergeben. WTF?! Unfassbar!
$k =~ s/\<[^\>]*\>//g;
# Umlaute behandeln und alles in Kleinbuchstaben umwandeln.
# (Dafür brauche ich das oben erwähnte Encoding...)
$k =~ s/[Ää]/ae/g;
$k =~ s/[Öö]/oe/g;
$k =~ s/[Üü]/ue/g;
$k =~ s/ß/ss/g;
$k = lc $k;
# Alles, was keine Buchstaben oder Ziffern sind, wird zu Strichen.
$k =~ s/[^a-z0-9]+/-/g;
# Paranoia: Einleitende und abschließende Striche werden entfernt.
$k =~ s/^\-+//;
$k =~ s/\-+$//;
# Paranoia: Mehrfache Striche werden einfach.
$k =~ s/\-{2,}/-/g;
# HASSKAPPE! Der Dateiname wird auf 32 Zeichen runtergekürzt, und
# fünf Zeichen davon sind bereits die Extension .html, so dass mir
# noch 27 Zeichen bleiben. 32! WTF! 32?! Posix wären 14, und DOS
# wären 12 (mit Extension), was soll diese verkackte Beschränkung?
#
# Und dokumentieren muss man das ja nirgends, wer eine Doku will,
# kann ja einfach in den Code schauen, wenn er Probleme hat. Das
# Folgende (ab Zeile 9363 im Code) ist doch Dokumentation genug:
#
# [...]
# if ($title) {
# #ensure no more than 32 characters, including .html extension
# $title =~ s/^(.{1,27}).*$/$1/;
# ++$OUT_NODE;
# join("", ${PREFIX}, $title, $EXTN);
# } else {
# [...]
#
# Kann mal jemand für mich diese Leute erschlagen?! Aber bitte nicht
# so, dass sie schnell sterben... :(
$k =~ s/^(.{1,27})/$1/g;
# Der Paranoiacode gegen doppelte Titel ist jetzt noch aufwändiger,
# da er Platz für die Nummerierung lassen muss. Also wird so noch
# ein bisschen mehr runtergekürzt, wenn es diesen Titel schon einmal
# gab. Und dann der Paranoiacode gegen doppelte Titel, denn dieser
# Fehler wird von LaTeX2HTML nicht behandelt. Ein wirklich rottiges
# Stück jauchedurchtränkter Köttel ist dieses LaTeX2HTML!
if ($titleused{$k})
{
$k =~ s/^(.{1,24})/$1/g;
$m = 2;
$tmp = $k . "-$m";
while ($titleused{$tmp})
{
++$m;
$tmp = $k . "-$m";
}
$k = $tmp;
}
$titleused{$k} = 1;
# Nun sollte es sicher genug sein, und ich habe für alle Seiten
# einen meistens menschenlesbaren Dateinamen, wenn der nicht
# gerade verstümmelt runtergekürzt wurde. Bäh, das ist doch wirk-
# lich keine so ungewöhnliche Forderung!
return $k;
}
# WO ZUM HENKER GIBT ES EIGENTLICH EINE _VOLLSTÄNDIGE_ DOKUMENTATION
# FÜR DIESES HORRORROTTIGE LATEX2HTML?! ICH KENNE WIRKLICH SCHÖNERE DINGE
# ALS DAS HERAUSFINDEN UNDOKUMENTIERTER "FEATURES" DURCH PROBELÄUFE UND
# DURCHLESEN DER QUELLTEXTE.
1;
Was ich von diesem LaTeX2HTML halte und warum ich diese wenig schmeichelhafte meinung zu diesem widerspenstigen stück softwäjhr habe, sollte sich auch dem weniger perl-kundigen beim lesen erschlossen haben.