Digamos que eu tenha três diretórios src
, aux-dir
, e out-dir
, todos no mesmo diretório de espaço de trabalho work
e alguns arquivos independentes, mas formatados de forma semelhante bleb1.tex
, bleb2.tex
, , ... armazenados em src
. Eu gostaria de configurar latexmk
para compilar alguns bleb<i>.tex
de bleb<i>.pdf
forma que os arquivos auxiliares sejam gravados em um subdiretório bleb<i>
de aux-dir
e os arquivos de saída (por exemplo bleb<i>.pdf
) sejam gravados em um subdiretório bleb<i>
de out-dir
. Como haverá muitos bleb<i>.tex
arquivos, gostaria de evitar a necessidade de criar esses subdiretórios manualmente antes da primeira vez que compilar cada arquivo bleb<i>.tex
.
Eu defini um latexmk
arquivo de configuração personalizado work
para esse fim. Eu sei que dentro de um arquivo de configuração, o destino dos arquivos aux e o destino dos arquivos de saída podem ser especificados através das variáveis $aux_dir
e $out_dir
, respectivamente, e isso latexmk
é tão conveniente a ponto de criar os caminhos especificados nas variáveis, caso eles ainda não existam. No entanto,o que não sei é como fazer com que os nomes dos subdiretórios dependam do nome base bleb<i>
do arquivo .tex de origem.
Não parece que nenhuma das variáveis de espaço reservado %A
, %R
, etc... esteja acessível no arquivo de configuração fora da substituição de uma variável de comando (por exemplo, $latex = "latex %O %S"
). Minha primeira tentativa foi mudar $latex
para internal mylatex %A
para acessar o nome do arquivo de origem e inseri-lo em $aux_dir
minha $out_dir
própria mylatex
sub-rotina. Minha segunda tentativa foi tentar definir $aux_dir
variáveis $out_dir
para um caminho contendo o nome do arquivo fornecido $$Pbase
em uma sub-rotina personalizada a ser chamada no before_xlatex
gancho. Para ambas as tentativas, latexmk
não capta as alterações $aux_dir
e $out_dir
antes de vomitar todos os arquivos auxiliares e de saída work
por padrão. A documentação latexmk
parece não especificar como acessar, no arquivo de configuração, os argumentos da linha de comando (em particular, o nome do arquivo de origem) passados pelo latexmk de qualquer outra forma. Na minha terceira tentativa, em vez de alterar $aux_dir
and $out_dir
, tentei apenas alterar os sinalizadores -aux-directory
and correspondentes -output-directory
em uma system
chamada Perl que fiz para latex
dentro da mylatex
sub-rotina da primeira tentativa, mas, novamente, latexmk
ignorei esses sinalizadores e apenas despeje os arquivos em work
.
Neste ponto, percebi que minha estrutura de diretório original planejada work
não é ideal para começar, devido a possíveis problemas que poderiam surgir com, digamos, bibtex
, mas passei bastante tempo brincando tentando fazer com que o plano original fosse trabalho que estou curioso para ver se é possível ou se entendi mal algum princípio fundamental de design do latexmk
.
Responder1
Neste ponto, o que você está solicitando não é suportado pelo latexmk. Seria possível implementá-lo; isso implicaria uma mudança no código que o latexmk usa antes de começar a processar um arquivo tex. Atualmente
As tentativas que você fez chegaram tarde demais para fazer o que é necessário. Após a inicialização de um determinado arquivo .tex, os diretórios $aux_out
e $out_dir
precisam permanecer fixos e conhecidos pelo latexmk.