Como incluir o nome do arquivo tex de origem nos caminhos do diretório aux e de saída com latexmk?

Como incluir o nome do arquivo tex de origem nos caminhos do diretório aux e de saída com latexmk?

Digamos que eu tenha três diretórios src, aux-dir, e out-dir, todos no mesmo diretório de espaço de trabalho worke alguns arquivos independentes, mas formatados de forma semelhante bleb1.tex, bleb2.tex, , ... armazenados em src. Eu gostaria de configurar latexmkpara compilar alguns bleb<i>.texde bleb<i>.pdfforma que os arquivos auxiliares sejam gravados em um subdiretório bleb<i>de aux-dire 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>.texarquivos, 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 latexmkarquivo de configuração personalizado workpara 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 $latexpara internal mylatex %Apara acessar o nome do arquivo de origem e inseri-lo em $aux_dirminha $out_dirprópria mylatexsub-rotina. Minha segunda tentativa foi tentar definir $aux_dirvariáveis $out_dir​​​​para um caminho contendo o nome do arquivo fornecido $$Pbaseem uma sub-rotina personalizada a ser chamada no before_xlatexgancho. Para ambas as tentativas, latexmknão capta as alterações $aux_dire $out_dirantes de vomitar todos os arquivos auxiliares e de saída workpor padrão. A documentação latexmkparece 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_dirand $out_dir, tentei apenas alterar os sinalizadores -aux-directoryand correspondentes -output-directoryem uma systemchamada Perl que fiz para latexdentro da mylatexsub-rotina da primeira tentativa, mas, novamente, latexmkignorei esses sinalizadores e apenas despeje os arquivos em work.

Neste ponto, percebi que minha estrutura de diretório original planejada worknã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_oute $out_dirprecisam permanecer fixos e conhecidos pelo latexmk.

informação relacionada