假設我有三個目錄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_dir
和指定$out_dir
,甚至latexmk
可以方便地建立變數中指定的路徑(如果它們尚不存在)。然而,我不知道如何使子目錄名稱取決於bleb<i>
來源 .tex 檔案的基本名稱。
除了覆蓋命令變數(例如 )之外,在設定檔中似乎無法存取任何占位符變數%A
、等。我的第一次嘗試是更改為訪問原始檔名並將其插入到我自己的子例程中。我的第二次嘗試是嘗試將變數設定為包含要在鉤子上呼叫的自訂子程式中給出的檔案名稱的路徑。對於這兩種嘗試,預設不會接受對所有輔助檔案和輸出檔案的變更以及先前的變更。的文檔似乎沒有指定如何在設定檔中存取由 Latexmk 以任何其他方式傳遞的命令列參數(特別是來源檔案名稱)。在我的第三次嘗試中,我沒有更改和,而是嘗試更改我在第一次嘗試中對子例程內部進行的Perl 呼叫中的相應和標誌,但是,再次忽略這些標誌,只是將文件轉儲到.%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
$aux_dir
$out_dir
-aux-directory
-output-directory
system
latex
mylatex
latexmk
work
此時,我已經意識到,work
由於可能出現的問題,例如,,我最初計劃的目錄結構一開始並不理想bibtex
,但我已經花了足夠的時間嘗試讓最初的計劃實現我很好奇它是否可能,或者我誤解了latexmk
.
答案1
此時,latexmk 不支援您所要求的內容。實施它是可能的;這將需要更改 Latexmk 在開始處理 tex 檔案之前使用的程式碼。現在
您所做的嘗試都太晚了,無法完成所需的工作。對給定的 .tex 檔案完成初始化後,目錄$aux_out
和目錄$out_dir
需要保持固定,並且為 Latexmk 所知。