Как включить имя исходного tex-файла в пути к вспомогательному и выходному каталогам с помощью latexmk?

Как включить имя исходного tex-файла в пути к вспомогательному и выходному каталогам с помощью latexmk?

Допустим, у меня есть три каталога src, aux-dir, и out-dir, все в одном каталоге рабочей области work, и несколько независимых, но одинаково отформатированных файлов bleb1.tex, bleb2.tex, ... , находящихся в src. Я хотел бы настроить latexmkкомпиляцию некоторых из них bleb<i>.texв bleb<i>.pdfтаким образом, чтобы вспомогательные файлы записывались в подкаталог bleb<i>, aux-dirа выходные файлы (например bleb<i>.pdf) записывались в подкаталог bleb<i>. out-dirПоскольку файлов будет много bleb<i>.tex, я хотел бы избежать необходимости вручную создавать эти подкаталоги перед первой компиляцией каждого bleb<i>.tex.

Я определил пользовательский latexmkфайл конфигурации в workэтом направлении. Я знаю, что в файле конфигурации назначение aux-файлов и назначение выходных файлов можно указать с помощью переменных $aux_dirи $out_dir, соответственно, и это latexmkдаже так удобно, как создавать пути, указанные в переменных, если они еще не существуют. Однако,Чего я не знаю, так это как сделать так, чтобы имена подкаталогов зависели от базового имени bleb<i>исходного .tex-файла.

Похоже, что ни одна из переменных-заполнителей %A, %Rи т. д. не доступна в файле конфигурации, кроме как путем перезаписи командной переменной (например, $latex = "latex %O %S"). Моей первой попыткой было изменить $latexна , internal mylatex %Aчтобы получить доступ к имени исходного файла и вставить его в $aux_dirмою $out_dirсобственную mylatexподпрограмму. Моей второй попыткой было попытаться установить переменные $aux_dirи $out_dirна путь, содержащий имя файла, заданное $$Pbaseв пользовательской подпрограмме, которая будет вызвана на before_xlatexхуке. Для обеих этих попыток latexmkне улавливает изменения в $aux_dirи $out_dirперед тем, как по умолчанию вырвать все вспомогательные и выходные файлы в work. Документация по , latexmkпохоже, не указывает, как получить доступ в файле конфигурации к аргументам командной строки (в частности, к имени исходного файла), переданным latexmk, каким-либо другим способом. В моей третьей попытке вместо изменения $aux_dirи $out_dirя просто попытался изменить соответствующие флаги -aux-directoryи -output-directoryв вызове Perl, systemкоторый я делаю latexвнутри mylatexподпрограммы с первой попытки, но, опять же, latexmkигнорирует эти флаги и просто выгружает файлы в work.

На этом этапе я понял, что изначально запланированная мной структура каталогов для workне идеальна из-за возможных проблем, которые могут возникнуть, скажем, с bibtex, но я потратил достаточно времени, пытаясь заставить первоначальный план работать, и мне стало любопытно, возможно ли это или я неправильно понял какой-то фундаментальный принцип проектирования latexmk.

решение1

На данный момент то, что вы запрашиваете, не поддерживается latexmk. Это можно было бы реализовать; это повлекло бы за собой изменение кода, который latexmk использует перед тем, как начать обрабатывать tex-файл. В настоящее время

Попытки, которые вы сделали, слишком запоздали, чтобы сделать то, что нужно. После инициализации для данного файла .tex каталоги $aux_outи $out_dirдолжны оставаться фиксированными и известными latexmk.

Связанный контент