さて実験はしていないのですが「latexmk と vscode の方だけ」とりあえず回答します。
少なくとも作業ディレクトリの .latexmkrc に bibtex/biber の参照のための複数回コンパイルのために「$max_repeat = 5;」 を追加。これで vscode は特に変更しなくて良いと思う。
latexmk をコマンドラインで使用する場合の対策としては、
json ファイルでの lualatex の記述で指定されているように
「latexmk」のコマンドラインオプションに「 -lualatex」を追加で凌ぐか、
「$pdf_mode = 4;」 を少なくともカレントの .latexmkrc に書き込むだけで動きそうですが。
そのほか、vscode だけになりがちなのですが、toolchain の記述を参考に
Step 1-4 の ptex2pdf を lualatex に書き換えたものを追加・利用するとかかな ....
PS どうでも良いけど、setting.json です。
コマンドプロンプトで 「latexmk -help」を実行すると利用可能なオプションが表示されます。私が理解する範囲では、.latexmkrc 以外の動作を指示したい場合に指定するような気がします。
なので例えば lualatex を一時的に使うだけのような場合は .latexmkrc を書き換えずに 「latexmk hoge」ではなく「latekmk -lualatex hoge」と
コマンドラインで実行すると例え、 .latexmkrc が pdflatex ベースになっていても lualatex でタイプセットしてくれます。
この書き方は、json ファイルに書かれていましたよ。
>・「$pdf_mode = 4;」 を少なくともカレントの .latexmkrc に書き込む
latexmk が読み込む perl スクリプトですから、「3」の後ろに追加しても良いですが、「4」に書き換えた方が良いですね。
>複数回について
lualatex が (u)platex に比べて便利なのは、pdf ファイルを一気に作成できることかな???
で、lualatex も(u)platex 同様、bibtex/biber を利用するドキュメントの場合は、必要に応じて、参照エラーが解決するまで本来複数回処理が必要です。
bibtex か biber の懸念もあるようですが、用途によると思います。
いずれにしても、面倒なことを latexmk はカバーしてくれるのです。
急用あり、今週一杯はこのような案件のように各種設定・ファイルなどの準備を必要とする検証のための時間は取れません。悪しからず。 少なくとも、簡単なサンプル .tex ファイル .bib ファイルを用意していただければある程度はできますが、それを「あれこれ類推して準備」するにはかなりの時間を有します。
が、とりあえず latexmkをコマンドプロンプトで所望の処理ができるか確認していただけますか?
setting.json には以下のようになっていますので、処理したいファイルのある作業ディレクトリで「latexmk -f -gg -pv -lualatex ファイル名」として所望の結果が得られるか、確認されることをお勧めします。
{
"name": "Latexmk (LuaLaTeX)",
"command": "latexmk",
"args": [
"-f", "-gg", "-pv",
"-lualatex",
"-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
]
},
クリーンアップに関してですが、-gg を指定すると、処理前に所謂不要なファイルを削除してからタイプセット処理すると私は理解しています。
なので "Step 1: Latexmk (LuaLaTeX)" で -gg をするのは良いと思いますが、3 や 4 でもそれをやってしまうと、.aux .toc を毎回「無し」扱いにしてしまうと思うので、思い通りに動かないと思います。
というかlatexmk って自動で bibtex/biber を起動しないのかな? (こういう作業というか latexmk を普段使っていないので ... 自信はないです。)
ちゃんと書かないと、参考文献情報は出力されないとおもいます。
その手当てを以下のようにしました。なお、空行が多いとかがあったり 行数が長いのを調整したので、修正行数は「雛形.tex」とは異なります。
@@ -73,13 +73,13 @@ \tableofcontents \newpage -\section{} \subsection{} +\section{} \subsection{} \cite{BC0385507X}% 参照してあげないと \section{} \subsection{} \section{} \subsection{} \bibliographystyle{jplain} -\bibliography{} +\bibliography{hinagata}% ちゃんとデータベース情報教えなくちゃだめです。 \end{document}
とりあえず、https://texwiki.texjp.org/?文献引用 を参考に、全部手動で行ってみた所、多分御所望の通りだと思います。
lualatex 雛形 pbibtex 雛形 lualatex 雛形 lualatex 雛形
上記をlatexmk で実現するため .latexmkrc に「$bibtex='pbibtex';」書き込まれていることを確認の上、 以下のようにする。mode は外からいじれるので、今回は未設定。
latexmk -gg -lualatex 雛形
これを vscode で動くようにすれば良いです。これは、急用の仕事の合間に試してみますが、トライしてみてください。
それから、以前 author で「*」が表示できないとおっしゃていましたが、 こちらでは、footnote カウンタいじらずに * は表示されます。 考えられるのは、ローカルに設定したクラスやスタイルファイル を参考にしていることかな。これを調べるためには、.log をチェックするひつ必要がありますので、添付された「雛形.tex」でタイプセットした時の「雛形.log」を添付してください。
@@ -1,7 +1,7 @@ \documentclass[11pt]{ltjsarticle} \title{\LARGE\textbf{\LaTeX 入門}} -\setcounter{footnote}{1} +%\setcounter{footnote}{1}%% * は出る \author{山田太郎\thanks{東西大学}} \date{\today}
現実逃避して、やってみました。提供された setting.json ではないのですが、変更箇所がわかるような、情報をピックアップしてみました。 (一般的な json 記述ではないのですが、行数を圧縮するため、ご勘弁を)
ポイントは、面倒なので、「latex-workshop.latex.recipe.default」でlualatex を起動できるようにしてあります。
"latex-workshop.latex.recipes": [ { "name": "", "tools": [ "" ]}, { "name": "latexmk", "tools": [ "latexmk" ]}, { "name": "ptex2pdf (platex)", "tools": [ "ptex2pdf (platex)" ]}, -- "latex-workshop.latex.tools": [ { "name": "", "command": "latexmk", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "-gg", "-f", "-outdir=%OUTDIR%", "", "%DOC%" ], "env": {} }, -- ], "latex-workshop.latex.recipe.default": "",
lualatex、latexmk は、基本同じログファイルに上書きするので、今回のケースでは 何度もタイプセットを試みるので、あまり良い情報は見出せませんね。
とはいえ diff というプログラムを利用して、雛形.logと雛形2.log を比較してみましたところ、 恐らく latexmk から起動される pbibtex が失敗しているため、必要な .bbl ができていなくって、 文献検索情報などが表示されていないのではと考えています。
以下で、「- で始まる行は 雛形log/雛形.log」 , 「+ で始まる行は 雛形log/雛形2.log」 としてみてください。
@@ -1,6 +1,6 @@ -This is LuaHBTeX, Version 1.13.0 (TeX Live 2021/W32TeX) (format=lualatex 2021.4.20) 17 DEC 2021 12:53 +This is LuaHBTeX, Version 1.13.0 (TeX Live 2021/W32TeX) (format=lualatex 2021.4.20) 17 DEC 2021 13:17 restricted system commands enabled. -**雛形 +**雛形.tex (./雛形.tex LaTeX2e <2020-10-01> patch level 4 Lua module: luaotfload 2021-01-08 3.17 Lua based OpenType font support @@ -1197,7 +1197,18 @@ (Font) scaled to size 11.09656pt on input line 161. LaTeX Font Info: Font shape `JY3/HaranoAjiGothic-Medium(0)/m/n' will be (Font) scaled to size 11.09656pt on input line 161. - (./雛形.bbl) [2] (./雛形.aux) ... 省略 ... + + + + +[2] (./雛形.aux) LaTeX Font Warning: Size substitutions with differences (Font) up to 1.0pt have occurred. @@ -1205,18 +1216,21 @@ LaTeX Font Warning: Some font shapes were not available, defaults substituted. + + + )
ということで、以前いただいた情報の .latexmkrc とサンプルソースで試したところ、 こちらでは問題なく、pbibtex も動いて、文献に関する表示も正しいようです。
お互いに、微妙に違うソースで「できた」「できない」と言い合ってもしょうがないので、 あらためてサンプル環境を添付します。
これにより、私との違いはホームの .latexmkrc のみ。ご存知のように、latexmk は、ホーム、カレントの順に .latexmkrc を読み込むので、ホームで設定したものが影響する場合があります。
ですので、添付したソースで「latexmk -gg -lualatex test」を実行して、pbibtex が動作している箇所を 注視してください。以下のようなものが表示されます。うまく処理できていれば、.aux .bbl .toc が更新された旨表示されると思います。 うまくいかなければ、その部分だけでもコピペで貼り付けてください。この処理のログ相当は test.blg になります。
------------ Run number 1 of rule 'bibtex test' ------------ ------------ Running 'pbibtex "test"' ------------
添付には、git のリポジトリ情報も含めておきますので、git をインストールしてあれば latexmk したディレクトリで 「git diff」すると私との差分が表示されます。
添付ファイルのもう一つの目的は、auther での「*」問題です。 こちらで、lualatex で処理した結果と比較してみましたが、2021 ベースとはいえ、 どうやらちょっと古い日付・バージョンのものが散見されます。 他の処理に影響しなければ、texlive のアップデートも検討してください。
一つ質問「vscode での実現方法の疑問」に答えていなかったので
手順が確定されていれば、lualatex; pbibtex; lualatex; lualatex と toolchain で連結して処理すれば良いと思います。
でも latekmk の構築ができれば、「latexmk さん、良きに計らって pdf 作成しておいてね」って簡単に指示できるのでは前回の投稿の意。
なので latexmk ; pbibtex; latexmk; latexmk と toolchain すると、 一回めの latexmk で処理ができているのでそれ以降 pbibtex 他は無駄な処理・時間の消費になるのではと思っています。
前回の回答で明確に書けていなかったようで...
今回のような案件では test.log だけでは情報が不足なので、latexmk か ら pbibtex が起動した時、コンソールに表示される内容や、その時生成 される test.blgをみたかったのですが ...
それよりも lualatex でのタイプセット時にエラーが起きていますね。 今までのログにはなかったのに何故だろうと悩んでいます。
Package: expl3 2021-11-22 L3 programming layer (loader) ! LaTeX3 Error: Mismatched LaTeX support files detected. (LaTeX3) Loading 'expl3.sty' aborted! (LaTeX3) (LaTeX3) The L3 programming layer in the LaTeX format (LaTeX3) is dated 2021-02-18, but in your TeX tree the files require (LaTeX3) at least 2021-11-22. For immediate help type H . ... l.77 \ExplLoaderFileDate{expl3.sty}}
ちょっと前、別の方の質問でも発生していました。その時は、私のところ では 「tlmgt update --self -all 」で、質問者の方は「インストール不 完全の可能性が考えられ texlive の再インストール」で対応していただ きました。
texlive アップデートに関して
アラカザムさんは、「texlive はアップデートして最新」とおっしゃって いますが、上記のエラーの他、「fontloader-2021-05-20.lua に関するメッ セージも test.logに記録されています。「+ の行」がアラカザムさんの ログからのもの。
@@ -5 +5 @@ -LaTeX2e patch level 1 +LaTeX2e patch level 4 @@ -12,3 +12,3 @@ -luaotfload | init : Loading fontloader "fontloader-2021-05-20.lua" from kpse-res -olved path "c:/texlive/2021/texmf-dist/tex/luatex/luaotfload/fontloader-2021-05- -20.lua". +luaotfload | init : No match for requested fontloader "fontloader-2021-05-20.lua +". +luaotfload | init : Defaulting to predefined fontloader "reference". @@ -46,2 +46,10 @@ -. L3 programming layer -Inserting `tracingstacklevels' at position 1 in `input_level_string'. +. L3 programming layer +Lua function __sys_elapsedtime: = 11 +Lua function __intarray:w = 12 +Lua function __intarray_gset_count:Nw = 13 +Lua function __intarray_gset:wF = 14 +Lua function __intarray_gset:w = 15 +Lua function __intarray_item:wF = 16 +Lua function __intarray_item:w = 17 +Lua function __intarray_range_to_clist:w = 18 +Lua function __intarray_gset_range:w = 19
お手数ですが、今一度 「tlmgr update --self --all」で texlive のアッ プデートを行ってていただけませんか?
その後、以下の作業、お手数ですが行っていただけませんか?
- まず「lualatex test」で、エラ=にならないことを確認してください。
- lualatex でエラーがなければ(=処理結果はともかく test.pdf が作 成されている)「latexmk test」を実行し、コンソールに表示されるも のの中から「pbibtex」に関するところを、探し、そこの部分をコピペ していただけませんか?
- ホームディレクトリに .latexmkrc があれば、添付してください。
lualatex
アップデート後、lualatex での処理で作成された PDF で「*」は表示されましたか
latexmk
ううむ ...確かに「latexmk test」と書いていたな :-( オプションを指定するの端折ったんですけど ... 「latexmk -gg -lualatex test」に変更してリトライしてください。
Running ' -recorder -kanji=utf8 -no-guess-input-enc -synctex=1 "test.tex"' ...省略... ! Undefined control sequence. l.53 \directlua {require('ltj-unicode-ccfix.lua')}% catcode of ideographs ? ! LaTeX Error: Missing \begin{document}.