Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[gelöst] Makefile: ifeq (Datei enthält text)

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Benutzeravatar
xxxsemoi
Member
Member
Beiträge: 54
Registriert: 26. Feb 2005, 21:23

[gelöst] Makefile: ifeq (Datei enthält text)

Beitrag von xxxsemoi »

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
Zuletzt geändert von xxxsemoi am 24. Aug 2005, 11:42, insgesamt 1-mal geändert.
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

nein, so kompliziert ist das nicht ;)

ich hab hier leider nur einen alten makefilehack rumliegen, mein aktuelleres (etwas dynamischer und optimierter) hab ich nicht auf der maschine.

da mache ich sowas: (vorsicht: Hack-as-Hack-can)

Code: Alles auswählen

pdf: clean $(TEXFILES)
        @$(PDFLATEX) $(TEXFILE)
        @echo "BIBTEX:"
        @if grep '\citation' $(TEXFILE).aux > /dev/null ; then \
                @echo " ----> BIBTEX" \
                @$(BIBTEX) $(TEXFILE) ; \
        fi
        @while ( \
                $(PDFLATEX) $(TEXFILE) ; \
                grep "Rerun to get cross" arbeit.log > /dev/null ) do true ; \
        done
        @$(PDFLATEX) $(TEXFILE)
        @echo " ---------------------------------------"

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Benutzeravatar
xxxsemoi
Member
Member
Beiträge: 54
Registriert: 26. Feb 2005, 21:23

Beitrag von xxxsemoi »

Hallo TeXpert,
ich brauche die Zeilen

Code: Alles auswählen

for i in $(TEXFILES);\
do \
    touch $${i%.tex}.aux;\
done;\ 
,denn BibTeX braucht zu allen Dateien eine .aux-Datei. In meiner Diplomarbeit habe ich zich Dateien, und zwei davon haben keine Zitate enthalten. Bibtex meckert bei diesen, falls ich die .aux-Datei nicht mit touch erzeuge. Ich werde es noch einmal mit Deinem Vorschlag probieren, aber ich glaube es klappt immernoch nicht.
Gruß xxxsemoi
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

xxxsemoi hat geschrieben:Hallo TeXpert,
ich brauche die Zeilen

Code: Alles auswählen

for i in $(TEXFILES);\
do \
    touch $${i%.tex}.aux;\
done;\ 
,denn BibTeX braucht zu allen Dateien eine .aux-Datei. In meiner Diplomarbeit habe ich zich Dateien, und zwei davon haben keine Zitate enthalten. Bibtex meckert bei diesen, falls ich die .aux-Datei nicht mit touch erzeuge. Ich werde es noch einmal mit Deinem Vorschlag probieren, aber ich glaube es klappt immernoch nicht.
Gruß xxxsemoi
langsam, langsam. Hast Du mehrere Dateien, die getrennt übersetzt werden sollen oder was? oder verschiedene Biliographys für die verschiedenen Kapitel? nehmen wir meine Diplomarbeit, viele tex-Files, ein masterfile und da dan \include{foobar], eine Bib, und ein latex materfile kompiliert alle Kapitel und erstellt die *.aux-Files. dann ein bibtex masterfile und alles passt.

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Antworten