Wie schließe ich mit Latexmk den Namen der Tex-Quelldatei in die AUX- und Ausgabeverzeichnispfade ein?

Wie schließe ich mit Latexmk den Namen der Tex-Quelldatei in die AUX- und Ausgabeverzeichnispfade ein?

Angenommen, ich habe drei Verzeichnisse src, aux-dir, und out-dir, alle im selben Arbeitsbereichsverzeichnis work, und einige unabhängige, aber ähnlich formatierte Dateien bleb1.tex, bleb2.tex, ... in src. Ich möchte die Konfiguration so konfigurieren, dass latexmkeinige bleb<i>.texin kompiliert werden bleb<i>.pdf, sodass die Zusatzdateien in ein Unterverzeichnis bleb<i>von geschrieben werden aux-dirund die Ausgabedateien (z. B. ) in ein Unterverzeichnis von bleb<i>.pdfgeschrieben werden . Da es viele Dateien geben wird , möchte ich vermeiden, diese Unterverzeichnisse vor dem ersten Kompilieren jedes von ihnen manuell erstellen zu müssen .bleb<i>out-dirbleb<i>.texbleb<i>.tex

Zu diesem Zweck habe ich eine benutzerdefinierte latexmkKonfigurationsdatei in definiert work. Ich weiß, dass in einer Konfigurationsdatei das Ziel der Hilfsdateien und das Ziel der Ausgabedateien über die Variablen $aux_dirbzw. angegeben werden können $out_dir, und dass dies latexmksogar so praktisch ist, dass die in den Variablen angegebenen Pfade erstellt werden, wenn sie noch nicht vorhanden sind.was ich nicht weiß, ist, wie ich die Unterverzeichnisnamen vom Basisnamen bleb<i>der Quell-.tex-Datei abhängig machen kann.

Es scheint, als ob auf keine der Platzhaltervariablen %A, %R, usw. in der Konfigurationsdatei zugegriffen werden kann, außer durch Überschreiben einer Befehlsvariable (z. B. $latex = "latex %O %S"). Mein erster Versuch bestand darin, in zu ändern, $latexum internal mylatex %Aauf den Quelldateinamen zuzugreifen und ihn in $aux_dirund $out_dirinnerhalb meiner eigenen Subroutine einzufügen. Mein zweiter Versuch bestand darin, und Variablen auf einen Pfad mylatexzu setzen , der den von angegebenen Dateinamen in einer benutzerdefinierten Subroutine enthält, die beim Hook aufgerufen werden soll. Bei beiden Versuchen erkennt s die Änderungen an und nicht, bevor standardmäßig alle Hilfs- und Ausgabedateien in ausgegeben werden . Die Dokumentation für scheint nicht anzugeben, wie in der Konfigurationsdatei auf andere Weise auf die von latexmk übergebenen Befehlszeilenargumente (insbesondere den Quelldateinamen) zugegriffen werden kann. In meinem dritten Versuch habe ich statt und zu ändern einfach versucht, die entsprechenden und Flags in einem Perl -Aufruf zu ändern, den ich innerhalb der Subroutine aus dem ersten Versuch mache , aber auch hier ignoriert s diese Flags und legt einfach Dateien in ab .$aux_dir$out_dir$$Pbasebefore_xlatexlatexmk$aux_dir$out_dirworklatexmk$aux_dir$out_dir-aux-directory-output-directorysystemlatexmylatexlatexmkwork

An diesem Punkt ist mir klar geworden, dass meine ursprünglich geplante Verzeichnisstruktur für workvon Anfang an nicht ideal ist, da es Probleme geben könnte, die beispielsweise mit auftreten könnten. bibtexIch habe jedoch genug Zeit damit verbracht, herumzuspielen und zu versuchen, den ursprünglichen Plan zum Laufen zu bringen, sodass ich neugierig bin, ob es möglich ist oder ob ich ein grundlegendes Designprinzip von missverstanden habe latexmk.

Antwort1

An diesem Punkt wird Ihre Anfrage von latexmk nicht unterstützt. Es wäre möglich, sie zu implementieren; dies würde eine Änderung des Codes erfordern, den latexmk verwendet, bevor es mit der Verarbeitung einer Tex-Datei beginnt. Derzeit

Die Versuche, die Sie unternommen haben, kommen alle zu spät, um das Nötige zu tun. Nachdem die Initialisierung für eine bestimmte .tex-Datei abgeschlossen ist, müssen die Verzeichnisse $aux_outund festgelegt und latexmk bekannt bleiben.$out_dir

verwandte Informationen