Hallo,
Ich habe mir ein Makefile geschrieben, dass mit BibTeX die Zitate in LaTeX einbindet. Falls aber in der kompilierten Datei überhaupt kein Zitat vorhanden ist, so stürzt das Makefile beim ausführen von BibTeX ab. Was ich also zu testen habe ist, ob die Datei Zitate enthält.
Die Datei enthält Zitate, falls DATEINAME.aux eine Zeile mit bibcite enthält. Deshalb dachte ich mir, ich könnte mit "sed" nachschauen, ob das Wort "bibcite" in der Datei enthalten ist und dann über eine if-Abfrage
ifneq (sed -n '/bibcite/p' DATEINAME.aux,"")
den erhaltenen String mit dem leeren String "" vergleichen. Das geht auch wunderbar, falls der sed-Befehl keinen leeren String produziert, aber falls er einen leeren String produziert klappt es nicht. Weiß da jemand Rat?
Gruß Semoi
LÖSUNG:
1) Musste unter der .log-Datei nachschauen und nicht unter .aux-Datei.
2) Muss dort nach "Citation" suchen
Deshalb muss es heißen:
if ! `grep -q Citation DATEINAME.log`;\
then \
echo "BibTeX wird nicht benoetigt";\
else \
echo "Führe BibTeX aus.....";\
for i in $(TEXFILES);\
do \
touch $${i%.tex}.aux;\
done;\
$(BIBTEX) DATEINAME;\
fi
Man braucht die Simikolons und Backslashs, damit alles in der gleichen Shell ausgeführt wird!!!
Vielleicht hilft das ja jemanden.
Gruß xxxsemoi
Ich habe mir ein Makefile geschrieben, dass mit BibTeX die Zitate in LaTeX einbindet. Falls aber in der kompilierten Datei überhaupt kein Zitat vorhanden ist, so stürzt das Makefile beim ausführen von BibTeX ab. Was ich also zu testen habe ist, ob die Datei Zitate enthält.
Die Datei enthält Zitate, falls DATEINAME.aux eine Zeile mit bibcite enthält. Deshalb dachte ich mir, ich könnte mit "sed" nachschauen, ob das Wort "bibcite" in der Datei enthalten ist und dann über eine if-Abfrage
ifneq (sed -n '/bibcite/p' DATEINAME.aux,"")
den erhaltenen String mit dem leeren String "" vergleichen. Das geht auch wunderbar, falls der sed-Befehl keinen leeren String produziert, aber falls er einen leeren String produziert klappt es nicht. Weiß da jemand Rat?
Gruß Semoi
LÖSUNG:
1) Musste unter der .log-Datei nachschauen und nicht unter .aux-Datei.
2) Muss dort nach "Citation" suchen
Deshalb muss es heißen:
if ! `grep -q Citation DATEINAME.log`;\
then \
echo "BibTeX wird nicht benoetigt";\
else \
echo "Führe BibTeX aus.....";\
for i in $(TEXFILES);\
do \
touch $${i%.tex}.aux;\
done;\
$(BIBTEX) DATEINAME;\
fi
Man braucht die Simikolons und Backslashs, damit alles in der gleichen Shell ausgeführt wird!!!
Vielleicht hilft das ja jemanden.
Gruß xxxsemoi