Tôi đang sử dụng Makefile
để tạo tệp PDF từ .tex
tệp.Tham chiếu LaTeX và Makefile
Khi tài liệu tham khảo được sử dụng trong các tệp LaTeX của tôi. đôi khi tôi nhận được một cái gì đó giống như
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
Tôi biết rằng chạy lại LaTeX biên dịch lệnh có thể khắc phục vấn đề thông tin này, nhưng trong Makefile
tôi, %.pdf
chỉ phụ thuộc vào %.tex
, do đó chỉ cần chạy make
một lần nữa vẫn không sửa được vấn đề (không có gì thay đổi trong tập tin .tex
). Tôi cần phải thực hiện một số make clean
để tạo lại PDF.
Dưới đây là tôi Makefile
TEX := $(wildcard *.tex)
default: $(TEX:.tex=.pdf)
%.pdf: %.tex
xelatex $<
.PHONY: clean
clean:
rm -v *.aux *.toc *.log *.out
Làm thế nào để giải quyết vấn đề này? Cảm ơn bạn.
UPDATE:
Dưới đây là một vài suy nghĩ tôi thấy từ Google
- Thay đổi
default
mục tiêu trở thành một.PHONY
. Đó không phải là giải pháp tốt (vì có thể có tệp latex ở đó và tôi chỉ cần biên dịch lại một tệp) - Thay đổi phụ thuộc
%.pdf
để bao gồm%.aux
. Nhưng tôi không biết liệu GNU có thể làm được không? (phụ thuộc vào tập tin%.aux
nếu nó tồn tại, nếu không thì hãy bỏ qua sự phụ thuộc vào%.aux
) - Thực hiện
grep
đến.log
tệp và tìm cảnh báo cụ thể. Nếu nó tồn tại, hãy chạy lại lệnh biên dịch.
Bạn có thể hưởng lợi từ việc xem [latexmk] (http://ctan.tug.org/pkg/latexmk), đây là một phần của hầu hết các bản phân phối TeX tốt. –