Używam Makefile
do generowania plików PDF z plików .tex
.Dokumentacja LaTeX i plik Makefile
Kiedy w moich plikach LaTeX użyto odniesień. czasami mam coś
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
wiem, że ponownie uruchomić LaTeX skompilować polecenie może rozwiązać ten problem odniesienia, ale w moim Makefile
, %.pdf
zależy tylko od %.tex
, więc wystarczy uruchomić make
znowu nie naprawić problem (nic się nie zmieniło w pliku .tex
). Muszę wykonać make clean
, aby ponownie wygenerować plik PDF.
Oto mój Makefile
TEX := $(wildcard *.tex)
default: $(TEX:.tex=.pdf)
%.pdf: %.tex
xelatex $<
.PHONY: clean
clean:
rm -v *.aux *.toc *.log *.out
Jak rozwiązać ten problem? Dziękuję Ci.
UPDATE:
Oto namyśle znalazłem Google
- Zmienić
default
cel być.PHONY
. Które nie jest bardzo dobrym rozwiązaniem (ponieważ jest tam plik latex i muszę tylko ponownie skompilować pojedynczy plik) - Zmień zależność
%.pdf
na%.aux
. Ale nie wiem, czy jest to możliwe w wersji GNU? (zależy od pliku%.aux
, jeśli istnieje, w przeciwnym razie należy zignorować zależność od%.aux
) - Zrób plik
grep
do pliku.log
i odszukaj konkretne ostrzeżenie. Jeśli istnieje, uruchom ponownie polecenie kompilacji.
Możesz odnieść korzyść patrząc na [latexmk] (http://ctan.tug.org/pkg/latexmk), który jest częścią najdoskonalszych dystrybucji TeX-a. –