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.