[linux-l] Re: Suche Freiwillige für (LaTeX-)Projekt
Robert C. Helling
R.Helling at damtp.cam.ac.uk
Mi Jun 1 18:43:34 CEST 2005
On Wed, 1 Jun 2005, Rocco Rutte wrote:
> Hi,
>
> * Robert C. Helling [05-06-01 15:52:23 +0100] wrote:
> >On Wed, 1 Jun 2005, Rocco Rutte wrote:
>
> >Oder Du musst anfangen, Makrodefinitionen zu verstehen (aka parsen).
>
> [x] dagegen. Ich habe mir die Header-Files von libkpathsea angeguckt und
> will nach der Lektüre gar nicht wissen, wie TeX selbst implementiert
> ist.
Das sollst Du auch nicht (auch wenn es sehr lesenswert ist, Knuth is kein
Feld, Wald und Wiesencoder, sondern es kann halt sein, dass ich am Anfang
meiner Datei stehen habe
\def\lieschapter#1{\section{Kapitel #1}\input chapter#1}
oder sowas und nun in book.tex zum Einbinden der Kapitel immer
\lieschapter{1} macht. Das setzt dann eine Ueberschrift und bindet
chapter1.tex ein, obwohl nirgends \input chapter1 steht.
> Und weil es nicht extrem einfach geht den Parser komplett
> Config-gesteuert zu haben, will ich für sowas möglichst vollständige
> Defaults haben. Wo steht zum Beispiel genau, welche Erweiterungen in
> welcher Reihenfolge von \includegraphics abgearbeitet werden sollen?
Im Zweifelsfalle ist wiederum die LaTeX-Source Dein Freund (bei plain TeX
stuende sowas in Klartext im TeXbook).
> Warum sollte ich etwas neu übersetzen, was nicht neu übersetzt werden
> muss? Es geht mir ja gerade darum das herauszufinden um mir quälend
> lahme TeX-Läufe zu ersparen.
Was Du also genau willst ist ein Tool, das Dir fuer eine pdf Datei sagt,
ob diese noch dem aktuellen Stand der Sourcen entspricht (solange Du die
nicht lesen willst, brauchst Du sie ja auch nicht im Voraus zu bauen).
> Klar, ich kann nach dem Bearbeiten auch einfach 'pdflatex book.tex'
> machen, aber: ich habe alle Dokumente unter Versionsverwaltung, weil es
> für mich der einfachste Weg ist, verschiedene Rechner synchron zu
> halten. Nach Updates möchte ich mir nicht überlegen müssen, wo jetzt was
> geändert wurde sondern nur 'make<enter>' tippen und fertig.
Willst Du wirklich jedes Mal, wenn Du zB Dein .sty aenderst, alle pdfs
neu bauen? Doch wohl nicht wirklich, sondern nur, die die Du anschauen
oder drucken oder so willst. Und da willst Du moeglichst vorher wiseen, ob
sich ein aufwaendiger TeX-Lauf lohnt. Gell?
> Einfach .aux auslesen geht bestimmt, aber dafür muss TeX ja schonmal
> gelaufen sein. Aber wenn ich dann irgendeine einbezogene Datei ändere,
> muss ich TeX laufen lassen, um .aux zu aktualisieren, damit ich
> rausbekomme, dass es notwendig war oder eben nicht. Genau das will ich
> mir nach Synchronisation aus der Versionsverwaltung sparen. Dann kann
> ich auch gleich den latex-Output mit regulären Ausdrücken bewerfen.
Das tex schon mal gelaufen sein muss, damit Du die aux Datei hast, ist in
diesem Fall gegeben. Sonst haettest Du ja auch die .pdf Datei nicht und Du
muesstest sowieso bauen. Ich denke nach wie vor, dass das parsen von .aux
das Einfachste ist.
Nehmen wir mal folgende Abhaengigkeiten an:
briefkopf.tex brief.tex brief.pdf (rechts haengt von links ab).
Und nun soll es zur Hilfe briefkopf.aux (da steht drin, dass es von nix
abhaengt) und brief.aux (da steht drinn, dass es von briefkopf.tex
abhaengt). Und mit \special koenntest du sogar in der pdf-Datei einen
Kommentar einbauen, in dem drinsteht, aus welchen Dateien .pdf gebaut
wurde). Dann kannst Du an den Veraenderungszeiten von .aux und .tex Datei
feststellen, was seit dem TeXen veraendert wurde und ausserdem von rechts
nach links ueber die entsprechenden Files rekursion machen. Das scheint
mir nicht so kompliziert.
Gerade geht mir noch auf, dass es wahrscheinlich noch einfacher ist, die
.log statt der .aux Dateien zu parsen, aber das ist ein Detail. Fazit:
Ich fange von rechts an. Wenn eine Datei neuer ist als ihr .log muss sie
neu geTeXt werden (was autamatisch alles links von ihr TeXt, denn es gibt
ja wie gesagt keine .o Dateien), wenn das .log aktuell ist, steht da ja
drin, wie weiter nach links Rekursion gemacht werden muss. Und fuer all
das braucht man keinen komplizierten TeXcode zu parsen und ein paar Zeilen
Perl sollten reichen.
Gruesse
Robert
--
.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oO
Robert C. Helling School of Science and Engineering
International University Bremen
print "Just another Phone: +49 421-200 3574
stupid .sig\n"; http://www.aei-potsdam.mpg.de/~helling
Mehr Informationen über die Mailingliste linux-l