Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfad im Makefile angeben



Lyn
13-08-2008, 18:43
Hallo,

folgendes Problem: Ich muss Bilder (ca. 150 Stck) in ein Dokument einbinden.

Die Bilder liegen
1. als bild.eps in dem Verzeichnis /Bilder/EPSBilder
2. als bild.pdf in dem Verzeichnis /Bilder/PDFBilder
3. einzelne Bilder liegen nur als bild.fig bzw bild.jpg vor unter /Bilder/SonstigeBilder

die Pfade sind wie folgt festgelegt:

ROOTDIR=$(shell pwd)

SRCDIR=${ROOTDIR}/Latex
TMPDIR=${ROOTDIR}/tmp
RESDIR=${ROOTDIR}/Result

PSDIR=${RESDIR}/Postscript
PDFDIR=${RESDIR}/PDF

STYLEDIR=${SRCDIR}/Styles
BIBDIR=${ROOTDIR}/Bib
BILDERDIR=${SRCDIR}/Bilder # hat die Unterordner EPSBilder, PDFBILDER und Sonstige Bilder

SRCDIRS=$(sort $(dir $(wildcard ${SRCDIR}/*/)))

vpath %.bib ${BIBDIR}
vpath %.fig ${SRCDIRS}
vpath %.gif ${SRCDIRS}
vpath %.tex ${SRCDIRS}
vpath %.eps ${SRCDIRS} ${BILDERDIR} ${TMPDIR}
vpath %.dvi ${TMPDIR}
vpath %.pdf ${TMPDIR} ${BILDERDIR} ${SRCDIRS}

Leider werden nur die jpg-Bilder (in /Bilder/SonstigeBilder)bei dem make-Aufruf erkannt. Die bild.pdf (in /Bilder/PDFBilder) werden nur verarbeitet, wenn ich sie direkt in Bilder (also in /Bilder/ ) speichere.

Wo und wie muss ich die Pfadangabe verändern?

jan61
13-08-2008, 20:03
Moin,

ohne mich mit Latex auszukennen:


...
SRCDIR=${ROOTDIR}/Latex
...
BILDERDIR=${SRCDIR}/Bilder # hat die Unterordner EPSBilder, PDFBILDER und Sonstige Bilder

SRCDIRS=$(sort $(dir $(wildcard ${SRCDIR}/*/)))
...

Willst Du, dass in SRCDIRS die Pfade .../Latex/Bilder/EPSBilder usw. auftauchen? Dann musst Du statt SRCDIR auch BILDERDIR in den wildcard-Aufruf packen. Im Moment suchst Du unter .../Latex, nicht unter .../Latex/Bilder. Und die dir-Funktion ist meiner Meinung nach überflüssig.

Jan

Lyn
13-08-2008, 21:56
Hallo,

Moin,ohne mich mit Latex auszukennen:

Es ist leider ein Make-Problem. An Latex hab ich nichts verändert. Sondern nur die Bilder in entsprechende Ordner sortiert.



Willst Du, dass in SRCDIRS die Pfade .../Latex/Bilder/EPSBilder usw. auftauchen? Dann musst Du statt SRCDIR auch BILDERDIR in den wildcard-Aufruf packen. Im Moment suchst Du unter .../Latex, nicht unter .../Latex/Bilder.


SCRDIRS umfasst nicht nur die Bilder sondern auch die LaTeX-Files. Wenn ich nur BILDERDIR angebe, kann make nicht mehr auf die Kapitel (LaTeX-Files) zugreifen und baut das Dokument nur aus dem Titelblatt.

${SRCDIR}/*/ nimmt alle Unterordner von Latex. Also alle Source-Ordner und alle vorhandenen Dateien direkt im Latex-Verzeichnis. (also die Styles, Bilder und Kapitel).

Die Kapitel liegen direkt in ${SRCDI} (also in Latex)
Die Styles liegen in Latex/Styles (die werden auch problemlos erkannt)
Die Bilder liegen in /Latex/Bilder/EPSBilder und /Latex/Bilder/PDFBilder und /Latex/Bilder/SonstigeBilder.
Der Inhalt von SonstigeBilder wird verarbeitet. Die PDF-Files nicht.
Ich nehme an, dass ich die vpath Angabe nicht korrekt formuliert habe. Aber ich finde den Fehler nicht.

jan61
13-08-2008, 22:43
Moin,

sorry, ich habe vpath nicht mit make in Verbindung gebracht. Was mir aber eben ins Auge gefallen ist: Müssen Variablen in einem Makefile nicht mit $(...) statt ${...} angesprochen werden?

Jan

Lyn
14-08-2008, 00:09
$(...) und ${....} sind gleichbedeutend.

Und vor dem Umzug der Bilder hat auch alles funktioniert. erst seit die Bilder, die als bild.pdf vorliegen, in einem Unterordner sind, werden sie nicht mehr erkannt.

jan61
14-08-2008, 18:02
Moin,


$(...) und ${....} sind gleichbedeutend.

Tatsächlich - ich habe bisher immer nur die $(..)-Variante genutzt.


Und vor dem Umzug der Bilder hat auch alles funktioniert. erst seit die Bilder, die als bild.pdf vorliegen, in einem Unterordner sind, werden sie nicht mehr erkannt.

Ich komme auf mein 1. Posting zurück: In SRCDIRS stehen nur die Unterverzeichnise von .../Latex/ drin - ich habe in der Doku keinen Hinweis gefunden, dass make rekursiv sucht - damit wären die Verzeichnisse unterhalb von BILDERDIR draußen.

Versuch die doch mal probehalber zusätzlich anzugeben.

Jan

Lyn
14-08-2008, 21:29
Ok, jetzt ist auch bei mir der Groschen gefallen. Ich probiers aus.

Danke.

Lyn
17-08-2008, 20:07
Ich hab nun etwas rumprobiert, doch es klappt nicht.

Die Verzeichnisstruktur ist die gleiche, wie oben im ersten Post.
Root
|_ Latex
|_ _Bilder
|_ _ _PDFBilder
|_ _ _EPSBilder
|_ _ _SonstigeBilder
|_ _ Styles
|_ Result
|_ tmp

mit SRCDIRS=$(sort $(dir $(wildcard ${SRCDIR}/*/))) kann ich nur Bilder und Styles erreichen. Ich habe verschiedenes ausprobiert
zB:
SRCDIRS=$(sort $(dir $(wildcard ${SRCDIR}/*/))) $(sort $(dir $(wildcard ${SRCDIR}/${BILDERDIR}/*/)))

Aber leider komme ich nicht an diese Ordner. Wie komme ich an diese Unterordner??



Nochmal die Verzeichnisstruktur und das Environment:

#Definition der Verzeichnisstruktur
ROOTDIR=$(shell pwd)

SRCDIR=${ROOTDIR}/Latex
TMPDIR=${ROOTDIR}/tmp
RESDIR=${ROOTDIR}/Result

CHBARDIR=${TMPDIR}/chbar #Verzeichnis fuer changebar Erzeugung

PSDIR=${RESDIR}/Postscript
PDFDIR=${RESDIR}/PDF

STYLEDIR=${SRCDIR}/Styles
BILDERDIR=${SRCDIR}/Bilder

SRCDIRS=$(sort $(dir $(wildcard ${SRCDIR}/*/)))

vpath %.bib ${BIBDIR}
vpath %.fig ${SRCDIRS}
vpath %.gif ${SRCDIRS}
vpath %.tex ${SRCDIRS}
vpath %.eps ${SRCDIRS} ${BILDERDIR} ${TMPDIR}
vpath %.dvi ${TMPDIR}
vpath %.pdf ${TMPDIR}

# Ermittlung der diversen Dateien
# (insbesondere Bilder fuer spaetere Konvertierung)

FIGFILES=$(notdir $(foreach x,${SRCDIRS},$(wildcard $x/*.fig)))
GIFFILES=$(notdir $(foreach x,${SRCDIRS},$(wildcard $x/*.gif)))
TEXFILES=$(notdir $(foreach x,${SRCDIRS},$(wildcard $x/*.tex)))
EPSFILES_FROM_EPS=$(notdir $(foreach x,${SRCDIRS},$(wildcard $x/*.eps)))

EPSFILES_FROM_FIG=$(patsubst %.fig,%.eps,${FIGFILES})
EPSFILES_FROM_GIF=$(patsubst %.gif,%.eps,${GIFFILES})
EPSFILES=${EPSFILES_FROM_FIG} ${EPSFILES_FROM_GIF} ${EPSFILES_FROM_EPS}
EPSFIGGIF=${EPSFILES_FROM_FIG} ${EPSFILES_FROM_GIF}
PDFFILES=$(patsubst %.eps,%.pdf,${EPSFIGGIF}) $(patsubst %.eps,%.pdf,${EPSFILES_FROM_EPS})

# Environment richtig setzen
#
TEXINPUTS:=${STYLEDIR}:${TEXINPUTS}::${SRCDIR}:${B ILDERDIR}:://
BSTINPUTS:=${STYLEDIR}:${BSTINPUTS}
BIBINPUTS:=${BIBDIR}:/proj/Literatur/Bib
export TEXINPUTS BIBINPUTS BSTINPUTS

jan61
18-08-2008, 20:51
Moin,

ich habe mir nun doch mal eine kleine Testumgebung aufgebaut und mit Deinem letzten (leicht gekürzten) Versuch experimentiert. Klappt:


jan@jack:~/tmp/make_prob> tree
.
|-- Latex
| |-- Bilder
| | |-- EPSBilder
| | | |-- 1.eps
| | | `-- 2.eps
| | |-- PDFBilder
| | | |-- 3.pdf
| | | `-- 4.pdf
| | `-- SonstigeBilder
| | |-- 5.gif
| | `-- 6.jpg
| `-- Styles
|-- Makefile
|-- Result
`-- tmp
Das Makefile:

#Definition der Verzeichnisstruktur
ROOTDIR=$(shell pwd)

SRCDIR=${ROOTDIR}/Latex
TMPDIR=${ROOTDIR}/tmp
RESDIR=${ROOTDIR}/Result
BILDERDIR=${SRCDIR}/Bilder

SRCDIRS=$(sort $(dir $(wildcard ${SRCDIR}/*/)))
BILDERDIRS=$(sort $(dir $(wildcard ${BILDERDIR}/*/)))

vpath %.jpg $(BILDERDIRS)
vpath %.gif $(BILDERDIRS)
vpath %.eps $(BILDERDIRS)
vpath %.pdf $(BILDERDIRS)

JPGFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.jpg)))
GIFFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.gif)))
EPSFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.eps)))
PDFFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.pdf)))

all: list jpg gif eps pdf

list:
@echo SRCDIRS $(SRCDIRS)
@echo BILDERDIRS $(BILDERDIRS)
@echo JPG $(JPGFILES)
@echo GIF $(GIFFILES)
@echo EPS $(EPSFILES)
@echo PDF $(PDFFILES)

jpg: $(JPGFILES)
@ls $^

gif: $(GIFFILES)
@ls $^

eps: $(EPSFILES)
@ls $^

pdf: $(PDFFILES)
@ls $^
Das Ergebnis:

jan@jack:~/tmp/make_prob> make
SRCDIRS /home/jan/tmp/make_prob/Latex/Bilder/ /home/jan/tmp/make_prob/Latex/Styles/
BILDERDIRS /home/jan/tmp/make_prob/Latex/Bilder/EPSBilder/ /home/jan/tmp/make_prob/Latex/Bilder/PDFBilder/ /home/jan/tmp/make_prob/Latex/Bilder/SonstigeBilder/
JPG 6.jpg
GIF 5.gif
EPS 1.eps 2.eps
PDF 3.pdf 4.pdf
/home/jan/tmp/make_prob/Latex/Bilder/SonstigeBilder/6.jpg
/home/jan/tmp/make_prob/Latex/Bilder/SonstigeBilder/5.gif
/home/jan/tmp/make_prob/Latex/Bilder/EPSBilder/1.eps
/home/jan/tmp/make_prob/Latex/Bilder/EPSBilder/2.eps
/home/jan/tmp/make_prob/Latex/Bilder/PDFBilder/3.pdf
/home/jan/tmp/make_prob/Latex/Bilder/PDFBilder/4.pdf
Jan

Lyn
19-08-2008, 00:34
Vielen vielen Dank für deine Mühe.

Ich habe BILDERDIRS genau nach deinem Vorbild formuliert. Es klappt nicht.
Ich erreiche die Ordner nicht. Mit meiner analogen Version zu deinem list bekomme ich alle Kapitel.tex und seltsamerweise die bild.fig, die in Latex/Bilder/SonstigeBilder enthalten sind. D.h. ich erreiche SonstigeBilder aber nicht bild.eps(EPSBilder), bild.pdf(PDFBilder) und bild.gif.
Außerdem werden die von BILDERDIRS zusammengefassten Ordner werden ebenfalls aufgelistet. Aber ihr Inhalt nicht.

Bedeutet das evtl., dass die Formulierung von PDFFILES fehlerhaft ist??



#Definition der Verzeichnisstruktur
ROOTDIR=$(shell pwd)

SRCDIR=${ROOTDIR}/Latex
TMPDIR=${ROOTDIR}/tmp
RESDIR=${ROOTDIR}/Result

CHBARDIR=${TMPDIR}/chbar #Verzeichnis fuer changebar Erzeugung

PSDIR=${RESDIR}/Postscript
PDFDIR=${RESDIR}/PDF

STYLEDIR=${SRCDIR}/Styles
BILDERDIR=${SRCDIR}/Bilder

SRCDIRS=$(sort $(dir $(wildcard ${SRCDIR}/*/)))
BILDERDIRS=$(sort $(dir $(wildcard ${BILDERDIR}/*/)))

vpath %.bib ${BIBDIR}
vpath %.fig ${BILDERDIRS}
vpath %.gif ${BILDERDIRS}
vpath %.tex ${SRCDIRS}
vpath %.eps ${SRCDIRS} ${BILDERDIRS} ${TMPDIR}
vpath %.dvi ${TMPDIR}
vpath %.pdf ${BILDERDIRS}

# Ermittlung der diversen Dateien
# (insbesondere Bilder fuer spaetere Konvertierung)

FIGFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.fig)))
GIFFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.gif)))
TEXFILES=$(notdir $(foreach x,${SRCDIRS},$(wildcard $x/*.tex)))
PDFFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.pdf)))

jan61
21-08-2008, 22:38
Moin,

eine Bitte: Kannst Du Code-Abschnitte in ein Code-Tag packen? Dann ist das übersichtlicher.

Zum Problem: Hänge doch bitte mal das komplette Makefile (vielleicht vorher bei den Latex-spezifischen Sachen kurz kommentieren, was die machen sollen und als Argument erwarten - ich kenne mich damit nicht so aus) und eine "tree"-Ausgabe des ROOTDIR als Attachment an ein Posting an (oder schick mir das Geraffel per privater Nachricht). Dann kann ich mir das mal im Zusammenhang angucken, vielleicht komme ich dann dahinter, was der Unterschied ist.

Jan

Lyn
30-08-2008, 22:37
make showconfig zeigt nun alle Bilder an, jedoch werden sie bei dem normalen make-Aufruf nicht gefunden.

Folgendes ist das gesamte Makefile:


include ./Makefile.DEF

.SUFFIXES: .ps .dvi .tex .pdf

#---------------------------------------------------------
#Definition der Verzeichnisstruktur

ROOTDIR=$(shell pwd)

SRCDIR=${ROOTDIR}/Latex
RESDIR=${ROOTDIR}/Result
TMPDIR=${ROOTDIR}/tmp

CHBARDIR=${TMPDIR}/chbar #Verzeichnis fuer changebar Erzeugung

PSDIR=${RESDIR}/Postscript
PDFDIR=${RESDIR}/PDF

STYLEDIR=${SRCDIR}/Styles
BILDERDIR=${SRCDIR}/Bilder

SRCDIRS=$(sort $(dir $(wildcard ${SRCDIR}/*/)))
BILDERDIRS=$(sort $(dir $(wildcard ${BILDERDIR}/*/)))

vpath %.fig ${BILDERDIRS}
vpath %.gif ${BILDERDIRS}
vpath %.tex ${SRCDIRS}
vpath %.eps ${SRCDIRS} ${BILDERDIRS} ${TMPDIR}
vpath %.dvi ${TMPDIR}
vpath %.pdf ${BILDERDIRS} ${SRCDIRS}

#------------------------------------------------------------
# Ermittlung der diversen Dateien
# (insbesondere Bilder fuer spaetere Konvertierung)

FIGFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.fig)))
GIFFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.gif)))
TEXFILES=$(notdir $(foreach x,${SRCDIRS},$(wildcard $x/*.tex)))
PDFFILES=$(notdir $(foreach x,${BILDERDIRS},$(wildcard $x/*.pdf)))

EPSFILES_FROM_EPS=$(notdir $(foreach x,${SRCDIRS},$(wildcard $x/*.eps)))
#EPSFILES_FROM_FIG=$(patsubst %.fig,%.eps,${FIGFILES})
#EPSFILES_FROM_GIF=$(patsubst %.gif,%.eps,${GIFFILES})

EPSFILES=${EPSFILES_FROM_FIG} ${EPSFILES_FROM_GIF} ${EPSFILES_FROM_EPS}
#EPSFIGGIF=${EPSFILES_FROM_FIG} ${EPSFILES_FROM_GIF}
#PDFFILES=${patsubst %.eps,%.pdf,${EPSFIGGIF}} ${patsubst %.eps,%.pdf,${EPSFILES_FROM_EPS}}

#------------------------------------------------------------
# Environment richtig setzen

TEXINPUTS:=${STYLEDIR}:${TEXINPUTS}::${SRCDIR}:${B ILDERDIRS}:://
BSTINPUTS:=${STYLEDIR}:${BSTINPUTS}
export TEXINPUTS BSTINPUTS

#-------------------------------------------------------------
# hier wird alles erzeugt: ps, pdf
# MASTER ist in Makefile.DEF definiert

all:${MAIN}.pdf ${MAIN}.2.pdf ${MASTER}.pdf ${MASTER}.2.pdf

#================================================= =======================
${MASTER}.pdf: $(MAIN).pdf
touch ${SRCDIR}/main.tex
cd ${TMPDIR};cp ${MAIN}.pdf ${PDFDIR}/${MASTER}.pdf

${MASTER}.2.pdf: ${MAIN}.2.pdf
touch ${SRCDIR}/main.2.tex
cd ${TMPDIR};cp ${MAIN}.2.pdf ${PDFDIR}/${MASTER}.2.pdf

#================================================= ========================

${MAIN}.pdf: ${EPSFILES} ${TEXFILES} ${PDFFILES}
@echo "***** Erster PDF-LaTeX-Lauf einseitig *****"
cd ${TMPDIR};${PDFLATEX} ${SRCDIR}/${MAIN}.tex
@echo "***** Zweiter PDF-LaTeX-Lauf einseitig*****"
cd ${TMPDIR};${PDFLATEX} ${SRCDIR}/${MAIN}.tex
@echo "***** makeindex Lauf *****"
cd ${TMPDIR};${MAKEINDEX} ${MAIN}.idx
@echo "***** ggf. weitere PDF-LaTeX-Läufe einseitig*****"
if $(GREP) "LaTeX Warning" ${TMPDIR}/${MAIN}.log; \
then cd ${TMPDIR};${PDFLATEX} ${SRCDIR}/${MAIN}.tex; fi
if $(GREP) "LaTeX Warning" ${TMPDIR}/${MAIN}.log; \
then cd ${TMPDIR};${PDFLATEX} ${SRCDIR}/${MAIN}.tex; fi

#-----------------------------------------------------------

${MAIN}.2.pdf: ${EPSFILES} ${TEXFILES} ${PDFFILES}
@echo "***** Erster PDF-LaTeX-Lauf zweiseitig *****"
cd ${TMPDIR};${PDFLATEX} ${SRCDIR}/${MAIN}.2.tex
@echo "***** Zweiter PDF-LaTeX-Lauf zweiseitig *****"
cd ${TMPDIR};${PDFLATEX} ${SRCDIR}/${MAIN}.2.tex
@echo "***** makeindex Lauf *****"
cd ${TMPDIR};${MAKEINDEX} ${MAIN}.idx
@echo "***** ggf. weitere PDF-LaTeX-Läufe zweiseitig*****"
if ${GREP} "LaTeX Warning" ${TMPDIR}/${MAIN}.log; \
then cd ${TMPDIR};${PDFLATEX} ${SRCDIR}/${MAIN}.2.tex; fi
if ${GREP} "LaTeX Warning" ${TMPDIR}/${MAIN}.log; \
then cd ${TMPDIR};${PDFLATEX} ${SRCDIR}/${MAIN}.2.tex; fi

#-----------------------------------------------------------
# hier werden die Grafiken in eps und pdf Dateien konvertiert
# alle gifs und figs in Latex/Bilder werden in eps und pdf uebersetzt
# liegt unter Bilder schon ein eps wird dieses verwendet (dies ist sinnvoll,
# da sich mit dem xv z.T. kleinere eps Dateien erzeugen lassen als dies bei
# automatisch erzeugten der Fall waere
${PDFFILES}: %.pdf: # %.eps
# cd ${TMPDIR}; ${EPSTOPDF} -nocompress $< --outfile=${TMPDIR}/$@

${EPSFILES_FROM_FIG}: %.eps: %.fig
cd $(dir $<); ${FIGTODEV} -L ps $< ${TMPDIR}/$(notdir $@)

${EPSFILES_FROM_GIF}: %.eps: %.gif
giftopnm $< | pnmtops > ${TMPDIR}/$(notdir $@)

#------------------------------------------------------------
#
#
#pdf:
# -rm -f ${PDFDIR}/*.pdf
# -ps2pdf ${PSDIR}/${MASTER}.ps ${PDFDIR}/${MASTER}.pdf
# -ps2pdf ${PSDIR}/${MASTER}.2.ps ${PDFDIR}/${MASTER}.2.pdf

ps:
-rm -f ${PSDIR}/*.ps
-pdftops ${PDFDIR}/${MASTER}.pdf ${PSDIR}/${MASTER}.ps
-pdftops ${PDFDIR}/${MASTER}.2.pdf ${PSDIR}/${MASTER}.2.ps

clean:
-rm -f ${TMPDIR}/*

distclean: clean
-rm -f ${MAIN}.ps ${MAIN}.2.ps $(MAIN).tmp.ps $(MAIN).dvi $(MAIN).html ${MAIN}.pdf
-rm -f ${PSDIR}/*.ps
-rm -f ${PDFDIR}/*.pdf

#--------------------------------------------------------------
showconfig:
@echo "TEXINPUTS: ${TEXINPUTS}"
@echo " "
@echo "SRCDIRS: ${SRCDIRS}"
@echo " "
@echo "BILDERDIRS: ${BILDERDIRS}"
@echo " "
@echo "Fig files in SRCDIRS:"
@for name in $(FIGFILES) ""; do echo " "$${name}; done
@echo "Gif files in SRCDIRS:"
@for name in $(GIFFILES) ""; do echo " "$${name}; done
@echo "EPS files in SRCDIRS:"
@for name in $(EPSFILES_FROM_EPS) ""; do echo " "$${name}; done
@echo "PDF files:"
@for name in $(PDFFILES) ""; do echo " "$${name}; done
@echo "LaTeX files in SRCDIRS:"
@for name in $(TEXFILES) ""; do echo " "$${name}; done

Lyn
30-08-2008, 22:51
Hier der (verkürzte) Tree. Ich hab viele der Bilder und Kapitel aus Platzgründen rausgenommen.



|
|-- Latex
| |-- Bilder
| | |-- EPSBilder
| | | |-- bild1.eps
| | | |-- bild2.eps
| | | |-- (es sind 180 Bilder jeweils in .pdf und .eps)
| | | `-- ~
| | |-- PDFBilder
| | | |-- bild1.pdf
| | | |-- bild2.pdf
| | | |-- (es sind 180 Bilder jeweils in .pdf und .eps)
| | | `-- ~
| | `-- SonstigeBilder
| | |--4zu2Encoder.jpg
| | |--Daten_Haz.fig
| | `-- ~
| |-- Styles
| | |-- Fonts
| | | `-- ebmr17.mf
| | |-- info.sty
| | |-- listings.sty
| | `-- standard.sty
| |-- chap_Arithmetik.tex
| |-- chap_Darstellung.tex
| |-- (es sind insgesamt 15 Kapitel)
| |-- main.tex
| |-- main.2.tex
| `-- output.txt
|-- Makefile
|-- Makefile.DEF
|-- Result
| |-- PDF
| | |-- Master.pdf
| | `-- Master.2.pdf
| `-- Postscript
| |-- Master.ps
| `-- Master.2.ps
|--tmp
`-- x.log

jan61
01-09-2008, 20:13
Moin,

hm, nach Deinem Makefile kann nicht viel passieren: Du hast in den MAIN-Targets als Prerequisite $(EPSFILES) angegeben, darin sind EPSFILES_FROM_FIG, EPSFILES_FROM_GIF und EPSFILES_FROM_EPS angegeben. Die beiden Variablen, für die Targets existieren (...FROM_FIG, ...FROM_GIF), sind aber auskommentiert, also leer.

Außerdem musst Du eine Falle beachten: Du benutzt in diesen beiden Targets automatische Rules, um die Prerequisites rauszukriegen. Wenn z. B. für EPSFILES_FROM_GIF in irgendeinem der mit vpath %.eps ... angegebenen Verzeichnisse eine .eps-Datei mit dem Namen der .gif-Datei existiert und neuer ist als diese, dann wird das Target für diese Datei auch nicht ausgeführt.

Jan

Lyn
01-09-2008, 21:22
Hallo,

die beiden Targets hab ich auskommentiert, da Bilder dieser Formate nicht mehr benötigt sind und nun noch der Vollständigkeit halber in den Verzeichnissen stehen müssen. Sie liegen längst auch als bild.pdf vor. Die Targets müssen ebenfalls der Vollständigkeit halber im makefile bleiben, da sie aber nicht benötigt werden, sind sie auskommentiert. Und Showconfig gibt sie auch nicht an. So weit, so gut.

Es werden in allen TeX-Eingabedateien nur PDF-Versionen der Bilder verwendet.
make showconfig listet nun zwar alle PDF-Bilder auf, allerdings kann der main.pdf-Lauf sie nicht finden. Und da ist der Knackpunkt. Wenn Showconfig alle von PDFFILES zusammengefassen Bilder auflistet, warum findet main.pdf sie dann nicht, wenn es ebenfalls PDFFILES übergeben bekommt??

Ist ein Fehler in der Definition von PDFFILES??

jan61
01-09-2008, 22:40
Moin,

aha, dann geht es also eigentlich ausschließlich um die ${PDFLATEX}-Aufrufe? Das ist aber kein Problem des Makefiles mehr - im Target für main.pdf sind die PDFFILES ja nur als Prerequisites angegeben, sie werden also berücksichtigt, um herauszufinden, ob das Target überhauupt ausgeführt werden soll. Das Problem ist also höchstwahrscheinlich, dass ${PDFLATEX} die Dateien nicht findet.

Ich kenne mich mit dem Ding nicht aus - wie kriegt er denn mit, wo er die PDFs suchen soll?

Jan

Lyn
02-09-2008, 00:38
Mit TEXINPUTS. Da bekommt LaTeX die Suchpfade mitgeteilt. Das ganze muss dynamisch bleibe, da das Makefile (sollte ich jemals damit fertig werden) für alle nachfolgenden Manuskripte unverändert funktionieren soll.

TEXINPUTS:=${STYLEDIR}:${TEXINPUTS}::${SRCDIR}:${B ILDERDIR}::

Lyn
02-09-2008, 01:32
WOW! Dein Tipp war Gold wert! Du hast mich auf die richtige Spur gebracht!!:D

TEXINPUTS:=${STYLEDIR}:${TEXINPUTS}::${SRCDIR}:${B ILDERDIR}::// gibt als Inputverzeichnisse für LaTeX die Ordner Styles, Latex und Bilder an.
Zusätzlich zu dem in der globalen Konfigurationsdatei festgelegten Texinputs. Aber er durchsucht nicht die Unterverzeichnisse von Bilder. Auch BILDERDIRS kennt er nicht, da sie nicht in der Definition des Verzeichnisbaums explizit angegeben sind.

Aber mit ${BILDERDIR}// durchsucht er den Ordner Bilder samt seiner Unterverzeichnisse rekursiv. Damit sind die Bilder-Ordner PDFBilder etc. mit erfasst.

Der Make-Aufruf läuft!
Noch mal Danke für deine Hilfe und vorallem deine Geduld!!
Grüße Lyn

jan61
02-09-2008, 19:04
Moin,

dann haben wirs ja geschafft ;-) Jetzt solltest Du vielleicht noch ein wenig aufräumen im Makefile, da stehen glaube ich noch eine Menge Definitionen drin, die nicht (mehr) gebraucht werden.

Und eine Kleinigkeit noch: Du definierst das Suchverzeichnis für PDF-Dateien über BILDERDIRS und SRCDIRS, holst Dir die Dateinamen für PDFFILES aber nur aus BILDERDIRS. Damit springt Dein Target main.pdf nicht an, wenn sich nur in SRCDIRS irgendwelche PDFs befinden.

Jan

Lyn
03-09-2008, 00:56
Moin,

dann haben wirs ja geschafft ;-) Jetzt solltest Du vielleicht noch ein wenig aufräumen im Makefile, da stehen glaube ich noch eine Menge Definitionen drin, die nicht (mehr) gebraucht werden.

Das würd ich gern. Aber das entscheide leider nicht ich. Ich muss mir erst das OK dafür holen. Den ganzen EPS-Krempel würde ich nur zu gern löschen.



Und eine Kleinigkeit noch: Du definierst das Suchverzeichnis für PDF-Dateien über BILDERDIRS und SRCDIRS, holst Dir die Dateinamen für PDFFILES aber nur aus BILDERDIRS. Damit springt Dein Target main.pdf nicht an, wenn sich nur in SRCDIRS irgendwelche PDFs befinden.

Jan

Du meinst die vpath %.pdf - Angabe, oder nicht?

Die einzigen PDF-Dateien, die in main.tex und die anderen Eingabedateien importiert werden können/dürfen, sind nur in BILDERDIRS. SRCDIRS ist noch alt.
Ursprünglich waren die Bilder direkt in BILDERDIR und waren damit in der SRCDIRS-Sammlung enthalten. Jetzt hab ich die Unterordner EPSBilder, PDFBilder und SonstigeBilder eingeführt. Und die umfasst SRCDIRS nicht mehr. Da hab ich BILDERDIRS erstmal nur dazu genommen, anstatt SRCDIRS damit zu ersetzen. Etwas zusätzliches zu entfernen geht schneller als etwas gelöschtes wieder aus dem Hut zu zaubern. In dem Fall geht es zwar nur um einen Begriff, aber mit der Taktik geh ich auf Nummer sicher.
Ich werds in der großen geplanten Aufräum-Aktion noch rausschmeißen.

Ich habe noch gestern Abend den make-Lauf durchgespielt. Es läuft alles glatt und alle Bilder werden wie verlangt eingebunden. Endlich.