LaTeX 技巧938:如何配置 latexmk

LaTeX 文檔的編譯過程通常比較復雜,尤其是有參考文獻的情況下, 需要多次編譯并調用外部命令。這個問題可以通過 latexmk 工具來解決。

latexmk 需要自己進行簡單的配置后才能使用起來比較順手。 建議在個人根目錄的 $HOME/.latexmkrc 文件中配置個人的使用習慣, 然后在項目的工作目錄的 latexmkrc 文件配置項目相關的編譯方法, 如使用 xelatex 或開啟 -shell-escape 等。

下面是我推薦的一些配置,更詳細的說明參見 latexmkrc 的文檔。

$pdf_mode = 1;

默認使用 pdflatex 編譯生成 pdf。 如果使用 xelatex 可以設為 5(需要 TeX Live 2017 以上)。 我個人由于需要使用不同的引擎,所以默認設為 1, 然后用命令行參數切換不同的引擎,比如 latexmk -xelatex。

$pdflatex = "pdflatex -file-line-error -halt-on-error -interaction=nonstopmode -synctex=1 %O %S";

給編譯命令添加額外的參數:-file-line-error 使報錯輸出文件和行號; -halt-on-error 和 -interaction=nonstopmode 使編譯遇到錯誤時立即停止; -synctex=1 則開啟 synctex 的功能。

$xelatex = "xelatex -file-line-error -halt-on-error -interaction=nonstopmode -no-pdf -synctex=1 %O %S";
$xdvipdfmx = "xdvipdfmx -E -o %D %O %S";

xelatex 的 -no-pdf 參數使編譯時只生成 xdv 文件,最后才用 xdvipdfmx 生成 pdf, 這樣可以節省嵌入圖片耗費的時間(需要 TeX Live 2017 以上)。 注意 -E 參數可以避免一些字體嵌入問題(見 https://github.com/CTeX-org/ctex-kit/issues/352 )。

$bibtex_use = 1.5;

通常 bbl 文件是由 BibTeX 編譯 bib 文件生成的,在清理輔助文件時可以刪掉; 但是有時并沒由提供 bib 文件,只有 bbl(比如 arxiv 上的 TeX 源碼), $bibtex_use = 1.5 可以自動檢測根據條件清理 bbl 文件(需要 TeX Live 2018 以上)。

$out_dir = "latex.out";

編譯時將所有生成文件(包括輔助文件)寫到 latex.out 目錄下。注意這個配置雖然可以使目錄更加整潔,但是可能導致一些軟件的功能受影響,建議謹慎選擇。

$preview_mode = 1;

編譯完成后自動打開 pdf;還可以用 $pdf_previewer 配置 pdf 閱讀器, 以及 $preview_continuous_mode 連續自動編譯。

$clean_ext = "hd nav snm synctex.gz xdv";

額外需要清理的輔助文件;如配置過 $out_dir 就不再需要了。

add_cus_dep('nlo', 'nls', 0, 'nlo2nls');
sub nlo2nls {
   system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"");
}
push @generated_exts, "nlo", "nls";

一些宏包需要額外的編譯命令, 比如 nomencl 宏包需要調用 makeindex 命令將 nlo 文件編譯成 nls 文件, 所以要手動配置這個編譯過程。

完整的配置文件如下:

$pdf_mode = 1;

$pdflatex = "pdflatex -file-line-error -halt-on-error -interaction=nonstopmode -synctex=1 %O %S";
$xelatex = "xelatex -file-line-error -halt-on-error -interaction=nonstopmode -no-pdf -synctex=1 %O %S";
$xdvipdfmx = "xdvipdfmx -E -o %D %O %S";

$bibtex_use = 1.5;

$out_dir = "latex.out";

$preview_mode = 1;

$clean_ext = "hd nav snm synctex.gz xdv";

add_cus_dep('glo', 'gls', 0, 'glo2gls');
sub glo2gls {
    system("makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"");
}
push @generated_exts, "glo", "gls";

add_cus_dep('nlo', 'nls', 0, 'nlo2nls');
sub nlo2nls {
    system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"");
}
push @generated_exts, "nlo", "nls";
分享到:
未經允許不得轉載:LaTeX 技巧938:如何配置 latexmk
已有 條意見

    最新文章

    加載中...
      本站提供專業LaTeX排版、咨詢、定制服務,請點擊下圖咨詢詳情


      全國首個精品的LaTeX視頻教程,大牛帶著你入門,讓LaTeX學習不再糾結,請點擊下圖咨詢詳情

      熱門評論

        聯系我們

        交流QQ群:91940767
        本站QQ號:343083553
        郵箱聯系[email protected]
        淘寶店鋪latexstudio.taobao.com 提供排版,模板定制,培訓,圖片處理,視頻教程等LaTeX服務。


        如果您投稿或者希望加入我們團隊,請發送您的簡歷到[email protected]

        科技藝術的完美融合,專業精致的排版體驗

        聯系我們聯系我們
        快乐飞艇哪里开的