LINUX.ORG.RU

make не принимает изменения в файле

 , , ,


0

0

Собираю с помощью makefile'а latex-документ, файл выглядит следующим образом:

all: main.pdf

main.pdf: main.tex head.tex ./src/title.tex ./src/body.tex
     latexmk -pdf main.tex

clean:
     latexmk -C main.tex
 
view: main.pdf
     okular --unique main.pdf &
Проблема в том, что если изменяешь с сохранением файлы main.tex, head.tex, title.tex, как и положено, по команде make происходит пересборка проекта.

Когда же, вношу изменения в body.tex при пересборке пишет

make
latexmk -pdf main.tex
Latexmk: This is Latexmk, John Collins, 7 May 2011, version: 4.24.
**** Report bugs etc to John Collins <collins at phys.psu.edu>. ****
Latexmk: All targets (main.pdf) are up-to-date
В общем не пересобирает файлы. Менял очерёдность title.tex/body.tex в makefile, но результата нет.

ЛОР, в какую сторону копать, чтобы makefile подхватывал изменения в body.tex?

★★★★★

Последнее исправление: Jurik_Phys (всего исправлений: 1)
Ответ на: комментарий от iVS

Я не весь пост прочел, прошу прощения. Зачем ты используешь и make, и latexmk? Одного второго достаточно для всех нужд, для него собственный файл создается - latexmkrc.

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 2)
Ответ на: комментарий от iVS

Собственно, makefile у меня не более чем обёртка над latexmk, который, как я только что понял, и не подхватывает изменения в body.tex

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys

как я только что понял, и не подхватывает изменения в body.tex

Как я только что понял, ты создаешь сперва PDF. Логично предположить, что latexmk сравнивает даты файлов, и если PDF создан позже, то все ОК. О чем он радостно и сообщает:

Latexmk: All targets (main.pdf) are up-to-date

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от iVS

Зачем ты используешь и make, и latexmk?

latexmk - для того, чтобы само собирало нужное число раз, для выставления нумерации рисунков, формул и литературы;

make - для задания целей clean и view.

Jurik_Phys ★★★★★
() автор топика
Последнее исправление: Jurik_Phys (всего исправлений: 1)

Судя по выводу, make все правильно понимает и вызывает latexmk, а тупит как раз он. Попробуй удалять main.pdf перед сборкой, чтобы заставить latexmk его пересобирать.

main.pdf: main.tex head.tex ./src/title.tex ./src/body.tex
     rm main.pdf
     latexmk -pdf main.tex

ddos3
()
Ответ на: комментарий от iVS

Запустил первый раз «make» -> pdf;

Внёс изменения в tex-файл.

Запустил второй раз «make» -> pdf файл автоматически пересобирается, если изменения были в tex-файлах.

Но, за исключением body.tex. При наличии изменений в нём, pdf пересобираться не желает.

Jurik_Phys ★★★★★
() автор топика

Итоги. Тупит, действительно latexmk. Диагноз по гуглу «latexmk all targets are up to date». Обсуждение можно найти здесь и здесь.

Решений два:

  • The solution is to delete the pdf before re-compiling the second time.
  • if you want it to recompile everything you hit 'compile' then make sure to pass the -g option to latexmk in you configuration
Jurik_Phys ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.