47816


[latexmk](http://personal.psu.edu/jcc8/software/latexmk/) コマンドは、`.latexmkrc` や
`LatexMk`、あるいは `-r` オプションで渡されたファイルによって、設定を上書きすることができます。

しかし複数の設定ファイルがあると、どれが読み込まれていてどれが読み込まれていないのかすぐには分かりません。

そこで何らかの方法によって latexmk が今どんな設定のもと動いているのか知りたいと思いました。ただ `latexmk --help`
に書かれているオプションを見る限り、現在の設定を出力するようなオプションは無いように見えます。

何らかのオプションを使ったり、あるいは何らかの LaTeX ファイルを与えたりすることによって、latexmk
が現在どのような設定のもとで動いているのか出力する方法はありませんでしょうか？

環境: Windows 10 Home, TeX Live 2018


CC BY-SA 4.0
2018-07-31T07:11:22.943
47124
2018-08-26T06:35:59.273
19110
question
latex
latexmk が認識している現在の設定を表示させたい


部分的な解決が得られたので自己回答しておきます。

["How to know that latexmk picks up my configuration
file?"](https://tex.stackexchange.com/q/59599/114888) に書かれているように、`.latexmkrc`
が単なる Perl スクリプトであることを利用して適当な文字列を `print`
するようにすれば、少なくともその設定ファイルが読み込まれたかどうかは出力されます。

[code]

    # .latexmkrc の中で...
    
    print("\n\n\nDEBUG: .latexmkrc is loaded!\n\n\n\n");
    
[/code]

最終的にどの設定になったのかはこれでは見れませんが、latexmk
が出力するログに含まれている、どのコマンドが実行されたのかの情報と合わせると大体推測がつき、私の問題の場合はこれで解決できました。


CC BY-SA 4.0
2018-07-31T07:11:22.943
47125
2018-07-31T07:11:22.943
19110
47124
answer


「現在の設定を出力する」には次のような方法が考えられます。

まず、latexmkの機能としては、「`-commands`オプションで実行コマンドの設定をみる」というものがあります。

[code]

    latexmk -commands
    
[/code]

これは、実行コマンド関連の現在有効な設定を標準エラーに出力して終了します。

[code]

    Commands used by latexmk:
       To run latex, I use "latex %O %S"
       To run pdflatex, I use "pdflatex %O %S"
       To run lualatex, I use "lualatex %O %S"
       To run xelatex, I use "xelatex -no-pdf %O %S"
       To run biber, I use "biber %O %B"
       To run bibtex, I use "bibtex %O %B"
       To run makeindex, I use "makeindex %O -o %D %S"
       To make a ps file from a dvi file, I use "dvips %O -o %D %S"
       To make a ps file from a dvi file with landscape format, I use "dvips -tlandscape %O -o %D %S"
       To make a pdf file from a dvi file, I use "dvipdf %O %S %D"
       To make a pdf file from a ps file, I use "ps2pdf  %O %S %D"
       To make a pdf file from an xdv file, I use "xdvipdfmx -o %D %O %S"
       To view a pdf file, I use "start %O %S"
       To view a ps file, I use "start %O %S"
       To view a ps file in landscape format, I use "start %O %S"
       To view a dvi file, I use "start %O %S"
       To view a dvi file in landscape format, I use "start %O %S"
       To print a ps file, I use "NONE $lpr variable is not configured to allow printing of ps files"
       To print a dvi file, I use "NONE $lpr_dvi variable is not configured to allow printing of dvi files"
       To print a pdf file, I use "NONE $lpr_pdf variable is not configured to allow printing of pdf files"
       To find running processes, I use "NONE $pscmd variable is not configured to detect running processes", 
          and the process number is at position -1
    Notes:
      Command starting with "start" is run detached
      Command that is just "start" without any other command, is
         used under MS-Windows to run the command the operating system
         has associated with the relevant file.
      Command starting with "NONE" is not used at all
    
[/code]

コマンド関連以外のオプションの有効な値を調べたい場合は、（他の回答にある）「latexmkの設定ファイルは単なるPerlスクリプトである」ことを再び利用できます。例えば、`$pdf_mode`の値を調べたい場合は、次のような“設定ファイル”`test`を用意します。

[code]

    print <<"EOT";
    ----
    DEBUG: pdf_mode=$pdf_mode
    ----
    EOT
    
[/code]

これを`-r`オプションで読み込みます。コンパイルの動作は不要なので、取りあえず先述の`-commands`を付けます。

[code]

    latexmk -r test -commands
    
[/code]

次のような出力が得られます。

[code]

    ----
    DEBUG: pdf_mode=3
    ----
    Commands used by latexmk:
       To run latex, I use "latex %O %S"
       To run pdflatex, I use "pdflatex %O %S"
       To run lualatex, I use "lualatex %O %S"
    ...(略)
    
[/code]

ちなみに、latexmkのオプションは“順番に処理される”ので、設定変更用のオプションや`-r`や`-e`を`-r
test`より前に置いていた場合は、その設定変更も反映されます。例えば、

[code]

    latexmk -pdf -r test -commands
    
[/code]

では、`-pdf`が`$pdf_mode`を1に変更するので、出力は次のようになります。

[code]

    ----
    DEBUG: pdf_mode=3
    ----
    ...(略)
    
[/code]


CC BY-SA 4.0
2018-08-26T06:35:59.273
47816
2018-08-26T06:35:59.273
27076
47124
answer