LaTeX & Makefiles

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


ari-whv
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Do 19. Nov 2009, 12:55

LaTeX & Makefiles

Beitrag von ari-whv »

Hallo,

ich habe noch eine Frage, die ich in einem anderen Thread schon angerissen habe:
Ich habe eine Hauptdatei, die über pdfinclude mehrere kleine Dateien aus einem Unterordner einbindet. D.h. erst kompiliere ich die Dateien in dem Unterordner und dann die Hauptdatei.
Dazu habe ich bisher zwei Makefiles. Problem ist aber: Das Makefile für die kleinen Dateien enthält für jede kleine Datei einen Vierzeiler:

Code: Alles auswählen

name:	name.tex
	pdflatex name
	bibtex name
	pdflatex name
Das funktioniert zwar, ist aber doch länger als sicherlich gedacht...Aber nicht das eigentliche Problem.

Wenn ich dann "make all" eingebe, werden ALLE kleinen Unterdateien kompiliert...und das dauert ewig. Eigentlich will ich, dass nur die Unterdateien neu kompiliert werden, bei denen ich die *.tex oder *.bib Datei geändert habe. Geht das?

Viele Grüße,
Ariane

Syralist
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 71
Registriert: Di 8. Jul 2008, 09:26
Wohnort: Bremen

Beitrag von Syralist »

Kann man nicht im makefile ein anderes makefile aufrufen?
z.b. als phony target?

Code: Alles auswählen

subfolder: 
    make -f subfolder1/makefile
    make -f subfolder2/makefile
dann müsste doch eigentlich ein "make subfolder" im hauptverzeichnis in alle unterverzeichnisse gucken.
Habs nicht getestet aber vielleicht hilft dir mein gesundes Halbwissen ;)
Ubuntu 11.10 / Windows 7
TexLive 2011 / MikTeX 2.8
vim / TeXworks 0.3
---
Dass jemand paranoid ist heißt nicht, dass er nicht verfolgt wird.

ratte

Beitrag von ratte »

Code: Alles auswählen

all: name1.pdf name2.pdf name3.pdf

name1.pdf: name1.tex name1.bib
        pdflatex name1.tex
        bibtex name1.aux
        pdflatex name1.tex
        pdflatex name1.tex

# und entsprechend für name2.pdf und name3.pdf
Damit sollte name1.pdf nur genau dann neu erstellt werden, wenn sich name1.tex oder name1.bib geändert haben. Wichtig ist, dass links vom Doppelpunkt wirklich der Zieldateinamen steht, damit Make das Dateidatum davon mit dem Dateidatum jeder der Quelldateien rechts vom Doppelpunkt vergleichen kann. Wenn links ein Phony steht, es also eine phony rule ist, wird diese stattdessen immer ausgeführt.

Noch bequemer wird es, wenn man statt des direkten Aufrufs von pdflatex und bibtex ein Programm wie texify verwenden kann, das selbst herausfindet, wie oft pdflatex und Zusatzprogramme wie bibtex und makeindex aufzurufen sind. Man könnte das wohl auch selbst mit Prüfsummen über Hilfsdateien (aux, toc, lof, lot, bbl, idx, ...) erreichen. Aber ich für ein kleines Projekt lohnt sich der Aufwand nicht. Dann schon lieber etwas fertiges verwenden.

Antworten