[linux-l] Re: Suche Freiwillige für (LaTeX-)Projekt

Oliver Bandel oliver at first.in-berlin.de
Mi Jun 1 23:54:49 CEST 2005


On Wed, Jun 01, 2005 at 03:50:38PM +0000, 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.
> 
> >Und 
> >was machst zB mit grafixx, wo ich Bilder einbinden kann und je nachdem ich 
> >dvi oder pdf erzeuge die .eps oder .jpg Datei aehnlichen Namens verwendet 
> >wird?
> 
> Das Tool bekommt als Parameter nicht die TeX-Files sondern die, die 
> gebaut werden sollen. Für die Befehle kann man optional angeben, dass 
> sie nur für bestimmte Ziel-Erweiterungen gelten sollen und welche 
> Erweiterungen implizit sind. Zum Beispiel ist .tex implizit bei \input, 
> .cls implizit bei \documentclass usw. Für \includegraphics sieht das so 
> aus:
> 
> | command pdf:includegraphics png,pdf,jpg
> | command  ps:includegraphics eps,ps
> | command dvi:includegraphics eps,ps
> 
> 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?
> 
> >Schliesslich verstehe auch ich immer noch nicht wirklich, was die 
> >Anwendung ist. Mein Problem ist hier, dass es bei TeX doch keine einzelnen 
> >Compiler und Linkerschritte gibt. Dein Beispiel verstehe ich so, dass Du 
> >zB diverse Briefe hast, die alle den gleichen Briefkopf einlesen. Und nun 
> >aenderst Du den Briefkopf. Jetzt willst Du alle diese Briefe neu 
> >formatieren? Nur warum?
> 
> Bei Briefen ist das kein gutes Beispiel, aber im Prinzip: ja.
> 
> >Es ist doch so, dass wenn Du den Brief Nummer 42 
> >TeXst der Briefkopf neu kompiliert wird, egal ob der sich geaendert hat 
> >oder nicht.
> 
> 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.
> 
> >Der Witz an make ist doch, dass Du schon .o Files hast, die 
> >nur neu erzeugt werden muessen, wenn sich die entsprechende Source 
> >geaendert hat.
> 
> Oder eine der Include-Dateien. Wenn man bei C zum Beispiel die 
> Abhängigkeiten nicht bis auf das Level von Include-Dateien analysiert, 
> dann kann das böse ausgehen, z.B. wenn man "mal eben" Präprozessor-Makro 
> oder eine struct ändert. Wenn man externe Dateien einbinden kann, dann 
> hängt die Aktualität eben nicht nur an der Datei, die die Einbindung 
> macht sondern auch an allen eingebundenen, weil das Rückwirkungen haben 
> kann.
> 
> >Der umgekehrte Fall (nicht viele Dateien haengen von einer sonder eine von 
> >vielen) ab ist zB ein Buch, dass seine einzelnen Kapitel einbindet. Wenn 
> >ich jetzt ein Kapitel aendere muss ich halt immer das Buch neu TeXen. OK. 
> >Aber dann TeXe ich eben immer das Buch und auch da brauche ich nicht 
> >unbedingt so ein tool.
> 
> Dann muss ich aber Hand anlegen, weil ich Datei chapterX.tex ändere aber 
> book.tex übersetzt werden soll, obwohl sich book.tex nicht geändert hat.  
> Ich hätte in diesem Fall nur:
> 
>  | TEXFILES=book.pdf
>  | all: $(TEXFILES)
>  | include $(HOME)/mk/Makefile.tex
> 
> und fertig. Und weil in ~/mk/Makefile.tex steht:
> 
>  | %.pdf: %.tex
>  |     ...
> 
> kann make eben nicht wissen, dass es book.pdf trotzdem bauen soll, 
> obwohl sich book.tex nicht geändert hat. Wenn man ihm aber sagt, und 
> genau das macht mein Tool nur, dass book.pdf ausserdem von chapterX.tex 
> abhängt, hat sich das geändert und make tut etwas.

Aber wenn man ein makefile von hand baut, dann schreibt man da eben alle Dateien
rein, von denen eine bestimmte Dtaie abhängig ist.

Habe zwar schon ewig keine makefiles mehr zusammen gebaut,
aber muesste es nicht so aussehen:


TEXFILES=book.pdf
all: $(TEXFILES)
  include $(HOME)/mk/Makefile.tex

TEXFILES=book.tex chapter1.tex chaper2.tex blahblah.tex chapterX.tex

book.pdf: $(TEXFILES)
	pdflatex book.tex
	pdflatex book.tex


...sofern alle anderen TeX-Files von book.tex included wurden?!


Für Bilder usw. muesste man das auch noch machen, sofern da was generiert wird.

Was man also machen muß, sind die Abhängigkeiten im makefile richtig
zusammen zu suchen.

Aber Dein Tool scheint das nicht zu machen...?!


Ciao,
   Oliver



Mehr Informationen über die Mailingliste linux-l