latexmkについての質問です。

latexmkについての質問です。

- 若松 久仁光 の投稿
返信数: 7
gnome-latex関連の投稿を別にしていましたが、
latexmkがらみの問題について質問したいので
新たに此方での質問に変更いたします。
MacOSX10.12 TeXLive2019環境下のgnome-latexで
lualatexを使用してコンパイルをしています。
PDF表示を「Skim.app」で実施させたいので色々試しました。
以下の通りの「命令の書き方」でgnome-latexから
何とかSkimからPDFを得ることが実行出来ました。
時々gnome-latexでコンパイルの際に「注意!」の
アイコンが表示されますので、「書き方の不備」と考え、
お知恵を拝借いたしたく、質問を書き出します。

質問01:gnome-latexの「Commands」に記述した「命令」が、
latexmkへの「後述」設定として「許される書き方」の体裁を保っているのか?
-----------gnome-latex Manage Build Toolに記述している内容------
Label ---> LuaLaTeX → PDF (Latexmk)
Description ---> LuaLaTeX → PDF (Latexmk)
Extension ------> .tex
Icon --> LuaTeX ----> PDF
Jobs > Commands : latexmk -pdf -synctex=1 -pv $filename 'open -a /Applications/Skim.app' $shortname.pdf
Postprocessor : latexmk
File to Open : 空欄
--------------------引用終わり----------
質問02:上で引用する[latexkmrc]での記述
#!/usr/bin/env perl
$lualatex = 'luajittex %O --fmt=luajitlatex.fmt -synctex=1 -interaction=nonstopmode %S';
$latex = 'uplatex -shell-escape -synctex=1 -halt-on-error';
$latex_silent = 'uplatex -shell-escape -synctex=1 -halt-on-error -interaction=batchmode';
$pdflatex = 'lualatex -synctex=1 %O %S';
$bibtex = 'upbibtex';
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$dvipdf = 'dvipdfmx %O -o %D %S';
$dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
$ps2pdf = 'ps2pdf14 -dPDFA -dPDFACompatibilityPolicy=1 -sProcessColorModel=DeviceCMYK %O %S %D';

$makeindex = 'upmendex %O -o %D %S';
$max_repea = 5;
$pdf_mode = 4; # [3] はgenerates pdf via dvipdfmx
# Prevent latexmk from removing PDF after typeset.
# This enables Skim to chase the update in PDF automatically.
$pvc_view_file_via_temporary = 0;

# Use Skim as a previewer
# $pdf_previewer = 'open -a ~/Applications/Skim.app';
$pdf_previewer = 'open -a Skim %S';
# $pdf_update_method = 4;
$pdf_update_command = "open -a Skim %S';sleep 0.1"; # ;gnome-latex
----------------引用終わり
【注】最終行の「# ;gnome-latex」でgnome-latexへ戻れるのか判らないので
コメントアウトしていますが、可能なら「gnome-latexへ戻る」は設定してみたく思います。

質問03:「冒頭. (ドット)」無しlatexmkrcについて
latexmkrcのファイルで冒頭の「. (ドット)」を付けないファイルを
カレント・ディレクトリーに配置すると「ドット付きのファイル」より
優先されて「読みに行く」という事をネット検索の何所かでみましたが
ホーム・ディレクトリに配置されたものより「この順序で先読みに行く」
機能に成る。
「冒頭. (ドット)」無しlatexmkrcをフォルダーに配置しない
「他のTeX」ファイルは、通常どおり「ホーム・ディレクトリに配置されたlatexmk
またはlatexmkrcを優先的に読み出しに行く。と理解して宜しいのでしょうか?
記述の仕方の問題点、その善処方法等アドバイスを頂ければ幸甚です。若松久仁光拝
若松 久仁光 への返信

Re: latexmkについての質問です。

- 和田 勇 の投稿
非常に長文で申し訳ないです。

誰も答えないので、意見を述べさせていただきます。記述した内容は、必ずしも動作検証をしておりませんことを念頭に置いてください。
また、これを書くにあたって、二日間おそらく都合10時間以上かけて、若松様が自律的に解決できるよう、書いては読み直し、書いては読み直しを繰り返しているので読み辛くなっている感じもしますがご勘弁を。


■ インターネットの情報ですが、これの利用を検討されてみては?

 ご自分で試されたりインターネット検索した結果を参考に吟味・理解されて利用されていますか?
 もし思い通りに動かなければ、設定をすべてクリアし、一からやり直す努力も必要です。

 今回の一連のやり取りのうち少なくとも latexmk に関しては lualatex(luajittex) + Skim の組み合わせで記述されている https://blog.akashisn.info/entry/2018/11/07/183341 が参考になると思うのですが、ご覧になっていますか?

 ここで紹介されている .latexmkrc をカレントの latexmkrc にし bibtex makeindex のプログラム名を取り替えてみたらどうかしら?

 この設定をした状態で gnome-latex から latexmk に連携するには
   「コンパイル・pdf 作成には latexmk $filenme」
   「コンパイルから PDF表示するには latexmk -pv $filename」
 という内容をもつ Commands エントリをつくればよく、スッキリした設定に成ると思います。

■ latexmk の設定ファイル読み込み順序について

 texdoc latexmk の18ページ目辺りに記述されていますが読まれましたか?
 そこにも書かれていますが latexmk のソースを読んでみたところ設定は、三つの読み込みグループとコマンドラインオプションから取り込まれます。

 第一グループ は以下の何れか一方
   環境変数 LATEXMKRCSYS 有りの場合はそのファイル
   環境変数 LATEXMKRCSYS 無しの場合は
     /opt/local/share/latexmk/LatexMk
     /opt/local/share/latexmk/latexmkrc
     /usr/local/share/latexmk/LatexMk
     /usr/local/share/latexmk/latexmkrc
     /usr/local/lib/latexmk/LatexMk
     /usr/local/lib/latexmk/latexmkrc
 第二グループ
     $HOME/.latexmkrc
     $XDG_CONFIG_HOME/latexmk/latexmkrc
 第三グループ
     カレントの latexmkrc
     カレントの .latexmkrc

 上記の順序で各グループにおいて最初に存在するファイルのみ設定ファイルとして読み込まれます。つまり最大三つのファイルが読み込み対象。同じ値が設定されていれば後から読み込んだものが有効になります。
 その後、コマンドラインで指定されたものが取り込まれます。

 なお、私が調べた限りで、私がインストールしたnet install 環境では 第一グループのものは存在しないようです。
 第二グループの XDG_CONFIG_HOME のデフォルトは $HOME/.config です。XDG_CONFIG_HOME については https://kiririmode.hatenablog.jp/entry/20180404/1522843531 を参照。

 また macOS でファイルパス名の大文字小文字を区別するようファイルシステムを作成している場合は、上記のように大文字小文字に注意してください。OS インストール時に特段処置していなければ無視して良いです。

 latexmkrc の内容は perl スクリプトの一部として取り扱われますので、各ファイルに以下のようなDebug文を組み込むことで上記の動きを把握することができます。

  $HOME/.latexmkrc
     print "~~~ ホームディレクトリの .latexmkrc ~~~\n";
  カレントの latexmkrc
     print "@@@ カレントディレクトリの latexmkrc @@@\n";
  カレントの .latexmkrc
     print "... かれんとでぃれくとりの .latexmkrc ...\n";

 上記三つのファイルを作成し、Debug文以外をコメントアウトしたものでの実験例を以下に示します。

  % latexmk -lualatex ex.tex
  ~~~ ホームディレクトリの .latexmkrc ~~~
  @@@ カレントディレクトリの latexmkrc @@@
  

 なお、以前、第三グループの設定ファイルの利用をと提案しましたが、「全内容をプロジェクト(ディレクトリ・フォルダ)毎に記述する方法」と「共通な部分を第二グループに、特有な部分を第三グループに分けて記述する方法」があります。何れも一長一短ありますので、ご利用方法を考慮して決めてください。

■ gnome-latex 設定見直し

 gnome-latex の Commands ですが実際にターミナルで実施してみましたか?

   latexmk -pdf -synctex=1 -pv $filename 'open -a /Applications/Skim.app' $shortname.pdf

 は filename が ex.tex ならば以下のように展開されます。

   latexmk -pdf -synctex=1 -pv ex.tex 'open -a /Applications/Skim.app' ex.pdf

 その結果、

   Latexmk: Could not find file 'open -a /Applications/Skim.app'.
   -- Use the -f option to force complete processing.

 と「open -a /Applications/Skim.app」というファイルを取り扱おうと試みているのがわかります。つまり文字列を単に指定しても latexmk には伝わりませんので設定ミスです。

 また -pdf オプションですが latexmkrc で lualatex に関係付けている例もインターネットでは散見されますが、「lualatex 使いたいといってるのに pdflatex ??」と混乱のもとなので 「-pdflatex=lualatex -pdf」 と明示するか 「-lualatex」 を使うと良いと思います。
 なお latexmkrc に 「$pdf_mode = 4; $postscript_mode = $dvi_mode = 0;」と記述することで -lualatex 指定と同等になります。
 「-pdflua」 オプションもありますが 「pdf_mode を 4 にするのみ」ですので -lualatex を使ったほうがよいでしょう。
 「pdf_mode を 4」にすることで、lualatex には不要な機能とされる 'dvipdf' 'pdflatex' 'ps2pdf' 'xdvipdfmx' 'xelatex' に関する設定は自動的に不活性化されます。
 「latexmkrc で pdf_mode を 4 以外を指定」しコマンドラインでも -lualatex を指定しない」場合は lualatex は利用できません。
 以上から latexmkrc で pdf_preview を Skim に設定すれば以下のようにスッキリした設定に成ると思います。

   latexmk -lualatex -synctex=1 -pv $filename (latexmkrc でlualatex未対応)
   latexmk -synctex=1 -pv $filename (latexmkrc でlualatex対応済)

 それから、確たるものはないのですが Postprocessor は Commands で -pv までしているのなら None でよいかとおもいます。

■ latexmk 設定ファイル整理

 提示された latexmkrc の内容には、今回の質問には関係のないものが多数記述されています。
 影響のないものも多いのですが、作業を明確にするため整理しましょう。
 特にカレントディレクトリに置く latexmkc は、ホームディレクトリに設置したものを上書きしたり追加したりするものだけにして、uplatex や dvipdfmx dvips ps2pdf などは削除、pdflatex を lualatex に結びつけている設定も解除するなど、不要なものはできるだけ排除しましょう。

 ドキュメント作成に文献検索や索引検索、\label \ref \pageref などの相互参照などを利用しているのかもしれませんが、思い通りに動かないようであれば、まずはコメントアウトして見ましょう。使用していなければ削除しましょう。

 「max_repea」とありますがおそらく max_repeat のタイポでしょう。これに限らず、今一度 texdoc latexmk で各変数の変数名や値を確かめましょう。
 できれば、設定の数値などの意味することをコメントしておきましょう。pdf_mode を4 と設定しているにもかかわらずコメントには「3云々」 と記しているのはあとで見返したときに混乱します。
 ついでですが latexmkrc には %O %S などの記述があります。これらも以下のように設定ファイル内にコメントとして記述しておくと良いでしょう。

   # %O:実行時オプション
   # %S:入力ファイル名
   # %D:出力ファイル名
   # %B:処理するファイル名の拡張子を除いた文字列

 以上を踏まえ、まず、PDF 作成までの手順を書き出し、それを参考に latexmkrc を 新たに書き直しましょう。
 うまくいかなければ、ステップバイステップで一つずつ確認しつつ設定していきましょう。
 例えば、まず pdf_previewer のみ設定し latexmk -lualatex ex.tex でSkim でプレビューできることを、次に -lualatex オプション無しで対応できるよう pdf_mode などを設定して一つ一つ確認。その後 luajittex や synctex の対応、文献検索などを利用しているのなら bibtex biber makeindex max_repeat などを設定するなどして必要なパラメータをその都度追加確認していきましょう。

 なお、pdf_update_command で Skim を利用したいとのことですがいとも理解できず Skim のコマアンドラインオプション他の情報がないのでわかりません。

 まずは、自身で試してみましょう!!それがゴールへの王道です。
和田 勇 への返信

Re: latexmkについての質問です。

- 若松 久仁光 の投稿
和田様
いつも詳細に亘り説明とアドバイス有難う御座います。
貴重な時間を割いて頂いていること、心苦しい限りですが、この事を念頭に置き
書かれている事項について、ジックリ読ませていただきます。
『非常に長文で申し訳ないです。』は恐れ多い事ですし、とても有り難い。
此方こそ、申し訳ございません。
MacにTeX Live 2018の環境を整備する
[https://blog.akashisn.info/entry/2018/11/07/183341 ]は参考にさせていただいています。
丁度luajittexについて調べていて見つけました。又「実行時のオプション」は「$texdoc latexmk」で
参照しながら「gnome-latex」でのcommandに追記しました。
この追記が、正しく理解して取り入れてるのか?自信がありませんでしたので、今回Forumへ投稿した次第です。
gnome-latex用のフォルダーに「ドットを外したlatexmkrc」を置いております。
その内容が投稿でのlatexmkrcです。
「bibtex makeindex のプログラム名を取り替えてみたらどうかしら?」ですが、続く「Commands エントリ」に
就いてと共に「ご指摘の内容」の理解に未だ到達できていません。
『「max_repea」とありますがおそらく max_repeat のタイポでしょう。』ですが
元ファイル(.latexmkrc & latexmkrc)は正確に記述しているので「投稿の際のコピーのミス」と思われます。
記述詳細を「見落とす事なく」チェックする作業を「楽譜を読む」行為同様に精度を上げて行く所存です。
いずれにしましても、ご指摘誠に有難うございます。
又「.latexmkrc 」と「 latexmkrc」の書き分けについては『全く認識を持っていない』事が露見した形となって、
恥ずかしい次第です。認識不足を早急に解消できるように勉強したく存じます。
『gnome-latex の Commands ですが実際にターミナルで実施してみましたか?』につきましては
「この様に色々実施することが大切」なのですね。
アプリを使用した時の「専用プログラム」が作用するのか(?)同じファイルを使用しても状況が異なる事が有る。
TeXWorks とTeXmakerでの「lualatex」で経験しました。(ターミナルでは「上手くコンパイル」されていても。)
最近では「ターミナルからコンパイル」を実施すること方向に「一本化」しようか?とも考える昨今です。
----------
■ latexmk の設定ファイル読み込み順序についてでは、小生の環境では 第一グループのものは存在しないようです。
『同じ値が設定されていれば後から読み込んだものが有効になります。
 その後、コマンドラインで指定されたものが取り込まれます。』
ご教授有難う御座います。少し「取りつく島」の影が見えて来た様に思えます。
『 -lualatex を使ったほうがよいでしょう。』「pdf_mode を 4」にすること』はご指示の通りであり、承諾です。
一応「$pdf_mode = 4;」としたつもりです(が、余計なメモを書き足していた様です。
途中経過ですがご報告方々。若松久仁光拝
追伸
余っているHDDを利用して、Majoveのインストールを試みていました。
キーボード入力の設定やら、何やらで今の所LaTeX&TeXLive2019までの
環境整備までは時間がかかりそうです。
和田 勇 への返信

Re: latexmkについての質問です。

- 若松 久仁光 の投稿
和田様
長い間お世話になっております。
アドバイスを参照しながら実施して、漸く全て解決できました。
先ほど、gnome-latexの命令を
「Command : latexmk -pdf -synctex=1 -pv $filename 」
「Post Processor : 無し(no-outout)」
に設定してみました。
無事「エラー表示もなく」コンパイルできました。
Skim.appからPDFも表示されています。
取り急ぎご報告まで。若松久仁光拝
若松 久仁光 への返信

Re: latexmkについての質問です。

- 和田 勇 の投稿
通れば良いと思っていらっしゃるのならそれはそれで良いので、読み飛ばし&無視してください&返信も無用。

さて

  Command : latexmk -pv $filename

で動かなかったのかな?コマンドラインでは動作するけど gnome-latex ではうまく動かないとおっしゃっていたのはこのことかな?

それはさておき過去のやり取りをみると latexmkrc では

  $pdflatex = 'lualatex -synctex=1 %O %S';

と定義されているのをそのままにしているのかな?
この定義でgnome-latex から

  latexmk -pdf -synctex=1 -pv $filename

と連携すると

  lualatex -synctex=1 -synctex=1 $filename
  open -a Skim $shirtname

のように二つのコマンドで処理されます。-synctex=1 が二つになってしまいますが、ここは無視。また luagittex では動きませんね。
#コンパイルから PDF 表示までの手順云々とかいていたのはこのこと。

が、私があえて返信したのは -pdf オプションのこと。
latexmkrc の読み込み順序での回答に書きましたが、設定ファイルを読み込んだあとコマンドラインでしていしたオプションが評価されます。

つまりいくら latexmkrc で 「$pdf_mode = 4; #for lualatex」としても
-pdf オプションが 「$pdf_mode = 1 #for pdflatex」と書き換えてしまいます。その後PDF 作成方法を制御する pdf_method が pdflatex となります。が pdflatex は lualatex を使うようすでに書き換わっているので、一見問題なさそうに動いているだけです。

先日も書きましたが、 -pdf オプションはちょっとわかり辛いけど本来 pdflatex 用のオプション。
pdflatex を使う機会は少ないのかもしれませんが、上記のような動きをすることがわかっていたから過去には若松さんが設定されているよう変数で置き換える方法もインターネット検索では散見されますが、lualatex を利用したいのなら -pdflua か -lualatex とされるようおすすめします。 texdoc latexmk の 10ページにも記載されています。

質問に答える人が戸惑わないためにもできればお願いしたいです。

l
和田 勇 への返信

Re: latexmkについての質問です。

- 若松 久仁光 の投稿
和田様
『私があえて返信したのは -pdf オプションのこと。』は未だ良く解っていないのが実情です。
(ここが素人の悲しさです)
『-synctex=1 が二つになってしまいます』は発生していましたので、
前の設定に戻した次第。『「$pdf_mode = 1 #for pdflatex」と書き換え』についての振る舞いは、
全く理解できていません。
『pdflatex』をつい最近まで「便利で多用していました」が、現在は
「できればLuaLaTeX」で全てをまかないたい。と思っています。
『インターネット検索では散見』から流用したのは確かです。
『lualatex を利用したいのなら -pdflua か -lualatex とされるようおすすめします。』とのアドバイスを守りたいと
思います。しかし「素人」が勉強を続けるには時間がかかりそうです。
『その後PDF 作成方法を制御する pdf_method が pdflatex となります。』と言う部分にしても、
ご指摘を頂くまで全くの「未知の分野」です。途中の実験の状況は書かずじまいでしたが
『Command : latexmk -pv $filename』で機能しなかったので、諦め掛けていました。
コンピュータの専門では無いので、色々逃げ口上ばかりになっています。お許しください。
どこが「問題で」どの様に「解決の窓口が」有るか?自分で模索できる知識を得たいものです。
『 -pdflua か -lualatex とされるようおすすめします。』ですが、
「何処に、これを記述」するのか?その「順番は?」etc.etc....

色々、ご面倒をおかけしていますが、これに懲りずにアドバイスなど頂ければ幸甚です。若松久仁光拝

追伸
『 texdoc latexmk の 10ページにも記載されています。』と
御座いますが、言っていることが頭に入って「理解できて」も、此の事と
「応用ができる」ことには隔たりがあることも「ご理解ください」
漸く「正規表現」を齧り始め、正しい「記述」順序がどう在るべきか?は理解できても「どの様に書く」は
未だ身についていません。音符を「美しい音楽にする」事なら「お任せください」と言えるのですが。
単なる「音を出せている状態」が小生の「現況」です。悪しからず。
「-lualatex」では失敗でした。(今思い出して追記しています)
『-pdflua』を試してみます。
和田 勇 への返信

Re: latexmkについての質問です。

- 若松 久仁光 の投稿
和田 勇様

数々の叱咤激励、有難う御座います。
叱られて当たり前のことでしたが、今日は良い報告です(?)。
latexmk -synctex=1 -pv $filename (latexmkrc でlualatex対応済)で無事機能しました。
10時半に「書き方の不備」に焦点を絞り「余計な書き込み」を一先ずコメントアウトし、
[Command:]の中へのケアレスミスが無いかをも見直しました。
Skim-PDFと言う名称で登録していた内容で、和田様のご指定の通りと「思い込んでいたもの」の」中で
「Extensions」に書き込んでいた「.tex.pdf」を削除したところ、gnome-latexのメニュー・バーに
アイコンも表示してくれました。
昨夜までは「Build」メニューに表示されるはずの「ショートカット付きのアイコン」も
「灰色反転」したままで機能せず。でした。
『2019年 05月 14日(火曜日) 22:44 - 和田 勇 の投稿の中の
Command : latexmk -pv $filenameで動かなかったのかな?』の元凶だったのです。

さて、オプションについては「音楽家」は臨時記号(オプション)は
その場で「即実行」するものと考えて練習を積み重ねています。
コンピューターでの振る舞いが「後で評価」が始まると聞き及び
音楽の世界との違いに”ビックリ”しています。
此の「後から機能させる」は今思い出しますと、確かに「正規表現」の学習の際も、読んでいて
一番理解が出来なかったところでした(現在も続いています)。
今朝10時半に試みた(和田様からのチェック1)latexmk -lualatex -synctex=1 -pv $filename
(latexmkrc でlualatex未対応)で「未対応ながら」Skimまでのコンパイルができたので、latexmkrcへの「書き方」が
未だ未だ問題と判明して、「原因」となっている「書き方の不備」に焦点を絞れました。『-pdf オプションは
ちょっとわかり辛いけど本来 pdflatex 用のオプション。』ここも漸くですが、「何とか理解」できます。
改めて、色々「有難う御座います」。今後ともよろしくお願いします。若松久仁光拝
追伸
相変わらずTerminalには「Gtk-WARNING」が出てきますが。此の問題は「on the shelf」
師匠のマルセル・モイーズ生誕130年(2日前)に解決できて(?)ホッとしています。
(お試し期間10日間の最終日ピッタリでした。)
和田 勇 への返信

Re: latexmkについての質問です。

- 若松 久仁光 の投稿
和田様
latexmkでの振る舞いがgnome-latexの画面下に読み取れたので
記述しておきます。今後の使用状況が未定ですので、このコンパイルの
状況が「無駄なく」仕上がっているのか?(小生には、未だ未だ判読できませんが)
latexmk -e "$lualatex=q/lualatex %O -synctex=1 %S/" -e "$bibtex=q/upbibtex %O %B/" -e "
$biber=q/biber %O --bblencording=utf8 -u -U -output_safechars %B/" -e
"$makeindex=q/upmendex=q/upmendex
%O -o %D %S/" -norc -gg -pdflua test.tex
で無事SkimからPDF表示できました。
何から何までご助言いただき有難う御座います。
取り急ぎ、御礼とご報告まで。若松久仁光拝
P.S
Majoveは使っていないのですか?と以前聞かれたことが、昨日実行Majoveインストール時に
「初心」に戻る、取り組み回路に「スイッチが入った」感じもします。
上手くいかない場合は「Majave」で最初からやり直すつもりでした。
TeXLive2019のインストール前にgnome-latex問題が解決できてlucky!