Makefile basics, multiple PDFs und Knitr/R

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Makefile basics, multiple PDFs und Knitr/R

Beitrag von MoonKid »

Meine aktuelle Projektstruktur ist zugegeben etwas komplex für den Makefile-Einstieg. Aber vorher (bei den simpleren Projekten) gab es eben die Notwendigkeit nicht. Und da steh ich nun.

Erstmal zur vollständigen Verwirrung das Makefile.
BASENAME=table

all: $(BASENAME)1.pdf $(BASENAME)2.pdf 


$(BASENAME)1.pdf: $(BASENAME)1.tex
	texout '$(BASENAME)1.tex' & sleep 1s && xelatex -shell-escape -interaction=nonstopmode '$(BASENAME)1.tex'

$(BASENAME)2.pdf: $(BASENAME)2.tex
	texout '$(BASENAME)2.tex' & sleep 1s && xelatex -shell-escape -interaction=nonstopmode '$(BASENAME)2.tex'

$(BASENAME)1.tex: $(BASENAME)1.Rnw
	Rscript -e "library(knitr);knit('$(BASENAME)1.Rnw')"

$(BASENAME)2.tex: $(BASENAME)2.Rnw
	Rscript -e "library(knitr);knit('$(BASENAME)2.Rnw')"

clean:
	rm -frv .out
	rm -fv $(BASENAME)1.tex
	rm -fv $(BASENAME)1.pdf
	rm -fv $(BASENAME)1.aux
	rm -fv $(BASENAME)1.log
	rm -fv $(BASENAME)2.tex
	rm -fv $(BASENAME)2.pdf
	rm -fv $(BASENAME)2.aux
	rm -fv $(BASENAME)2.log

# this targets are not files
.PHONY: clean all pdf
Es exitieren zwei Quelldateien, die ich selbst editiere: table1.Rnw und table2.Rnw. Das sind tex-Dokumente in dennen R-Code eingebettet ist. Diese files werden zuerst durch Rscript geschickt, wo am Ende je eine tex-Datei bei rauskommt. Der eigentliche tex-zu-pdf-Lauf wird von texout erledigt. Ein kleines Script, das ich schon lange verwende, um beim TeX-Lauf erzeugten Nebendateien in ein verstecktes Unterverzeichnis (.out) zu schieben und bei Bedarf wieder rauszuholen.

Kernproblem hier ist, dass ich jetzt zwei PDF-Dateien am Ende haben will. Das läuft irgendwie nicht.

Make behauptet die PDF-Regel wäre gescheitert, obwohl das PDF erzeugt wurde.
Output written on table1.pdf (2 pages).
Transcript written on table1.log.
Makefile:7: die Regel für Ziel „table1.pdf“ scheiterte
make: *** [table1.pdf] Fehler 1
Nebenbei wäre die Frage, ob sich das Makefile auch vereinfachen ließe.
XeLaTeX, TeX Live, vim-latexsuite

Gast

Beitrag von Gast »

  1. Das ist hier das ganz falsche Forum! Make-Aufrufe für TeX-Dokumente mögen im Tools-Forum gerade noch toleriert werden, aber eine Frage zu (La)TeX-Strukturen ist das ganz sicher nicht!
  2. make interessiert es nicht, ob das PDF erzeugt wurde. make interessiert sich nur für die Rückgabe der aufgerufenen Programme. Gibt eines einen von 0 abweichenden Wert zurück, dann bricht es die Regel ab und betrachtet sie als gescheitert.

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Sorry, ich hatte in der gleichen Gruppe einen älteren Make-Eintrag gesehen und dann nicht weiter nachgedacht. :)
XeLaTeX, TeX Live, vim-latexsuite

Antworten