latexmkrcの備忘録
問題
latexmkrcの雑多な記録を参考にlatexmkのファイルを作成したが、なぜか以下のコマンドを入力してもdviとpdfが生成されない。また、2回目のコンパイルの際に、ファイルが見つからないエラーが発生する
latexmk -pdfdvi -pvc test.tex
作成した.latexmkrc
#!/usr/bin/env perl
# カレントディレクトリ変更
$do_cd = 1;
# uplatexの呼び出し(後で変わる)
$pdf_mode = 3;
$latex = 'uplatex -synctex=1 -file-line-error -halt-on-error %O %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$max_repeat = 5;
# bibtex系
$bibtex_use=2;
$bibtex = 'upbibtex %O %S';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S';
# index
$makeindex = 'upmendex %O -o %D %S -s jpbase';
# ヴューワ
$dvi_previewer = "open %S";
$pdf_previewer = "open %S";
# 出力フォルダ指定
$out_dir = ".";
# 中間ファイルを別フォルダに隠しておける
$emulate_aux = 1;
$aux_dir = ".tex_intermediates";
# 中間ファイル登録
$clean_ext="$clean_ext run.xml";
解決
以下のように最小限の設定で書き直した。
$pvc_view_file_via_temporary = 0; # PDFを直接開く
$pdf_mode = 3; # dvipdfmx を使用して PDF を生成
$latex = 'platex -output-directory=build %O %S';
$dvipdf = 'dvipdfmx -o %D %S';
$out_dir = '';
$aux_dir = 'build';
$preview_continuous_mode = 1;
$pvc_view_file_via_temporary = 0;
は、pdfのプレビューに一時ファイルを使用せず、生成されたpdfファイルを直接開く(-pvcをつけたとき?)。0に設定すると、一時ファイルを開かない。
$pdf_mode = 3;
は、LaTeXからDVI形式にコンパイルし、その後dvipdfmx
でpdfに変換する方法を指定する。
$latex = 'platex -output-directory=build %O %S';
は、platex
を使ってLaTeXソースをコンパイルし、build
フォルダに出力する設定。これによって、生成された中間ファイルがカレントディレクトリを圧迫しない。しかし、dviは現在のディレクトリに出力される。
$dvipdf = 'dvipdfmx -o %D %S';
は、dvipdfmx
を用いて、dviファイルをpdf形式で出力する。
$out_dir = '';
は、出力ディレクトリ、今回はカレントディレクトリにdviとpdfが生成される。
$aux_dir = 'build';
は、中間ファイルを格納するディレクトリ。buildに指定している。
preview_continuous_mode = 1;
は、生成したpdfファイルを自動で開く。0にすると、開かない設定になる。しかし規定アプリで開くため、どうにかしてvscodeのエディタ内で完結させたい。
他、詳しいコマンドやプレースホルダは、latexmkrcの雑多な記録に詳しく解説されています。
この.latexmkrc
で、以下のコマンドを打ったところ無事pdfが生成された。
入力
latexmk -pdfdvi *********.tex
出力
18837 bytes written
Latexmk: All targets (*********.pdf) are up-to-date
Latexmk: I have not found a previewer that is already running.
So I will start it for '*********.pdf'
------------
------------
Running 'start start "*********.pdf"'
------------
=== Watching for updated files. Use ctrl/C to stop ...
課題点
- 出力後、コマンドが自動的に終了しない
- pdfをエディター内でタブ形式で開けるようにしたい
- プロンプトでコマンドを打たずに、キーコマンドで楽に出力できるようにしたい
考察および感想
正直、なぜいけたのかあまりわからない。
変えたところといえば、latex
の出力を、uplatex
から、platex
に変更し、index
とbibtex
系を削除しただけなのだが、bibtex
は、参考文献のデータベースで、index
は、索引を作成するときのコマンドで\usepackage{makeidx}
を使用するに用いるらしいのだが、2つとも今回のtexでは使用していない。では、$latex
や、$dvipdf
が悪かったのかどいえば、公式仕様通りに作られたはずなので動作する気がする...
おま環といわれれば納得できるんだけど、2つのPCで起きているんだよな・・・TexLiveの影響なのかな。
これから、このフォーマットをもとに.latexmkrc
の改良を進めたいと思っている。ss
Discussion