latemxの記述の方法

latemxの記述の方法

- アラカザム の投稿
返信数: 24
VScodeを用いてlatexを書いています。諸事象でlualatexでbibtexを参照する文章を書かなければいけなくなってしまったのですが、latemxないしSettting.jonson(もしくは両方)の設定の方法がわかりません。
自分でも色々調べてはみたのですがどうにも行き詰ってしまいました。
どなたか教えていただけたら助かります。

・latemxファイルはホームと作業ディレクトリにおいてあります。
・作業ディレクトリは
C:\Users\<ユーザー名>\iCloudDrive\sandbox\pdflatexです。
・VScodeの環境構築はこちらの記事を参考にしています。
https://qiita.com/popunbom/items/7d02fc75ad23b735d28c

また、別の質問なのですが論文の著者部分に\thanks{}環境を設定した際、註釈部分にアスタリスク(*←の記号)が出なくなってしまったのですがこれは何らかの不具合なのでしょうか。
こちらもよろしければ教えていただけると助かります。

---以下環境---
OS: win10, ver.21H2, bild.19044.1387
Texlive: 2021
Vscode: 1.63.0

また、latemxファイルとSettting.jonsonをzip形式にて添付しておきます。
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿
面倒でも二つの質問に分けて投稿された方が良いと思います。

さて実験はしていないのですが「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 です。
和田 勇 への返信

Re: latemxの記述の方法

- アラカザム の投稿
ご回答ありがとうございます。
確かに質問は2回に分けたほうが良かったですね。
ご指摘ありがとうございます。

和田さんの回答でこちらの勉強不足でわからないところがあったのでいくつか質問したいのですが、

・latexmk をコマンドラインで使用する
>これはvscodeのことを指しているのでしょうか?

・「latexmk」のコマンドラインオプションとは何でしょうか。

「$pdf_mode = 4;」 を少なくともカレントの .latexmkrc に書き込む
これはつまり作業ディレクトリのlatexmkファイルに書き込むということでよろしいでしょうか。
また書き込む際は「$pdf_mode=3;」を4にするということでいいですか?

それと根本的なことなのですがlualatexにbibtexを使う場合platexやuplatexのように複数回のコンパイルは必要ないのでしょうか。
bibtexのコンパイルは「pbibtex」でいいんでしょうか。

texについてはまだまだ初心者なので教えていいただけると幸いです。
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿
>「latexmk」のコマンドラインオプションとは ...

コマンドプロンプトで 「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 はカバーしてくれるのです。
和田 勇 への返信

Re: latemxの記述の方法

- アラカザム の投稿
丁寧に教えてくださりありがとうございます。
とりあえず「$pdf_mode = 4;」に変更をしてsetting.jsonを添付したもののように書き換えてみたところ、参考文献は出力できたのですがVScode的には処理が完了できていないようで「Recipe terminated with error.」という通知が出てきます。

それと「BiBLua~」のレシピで出力するとsetting.jsonのクリーンアップリストの中に.logや.tocのファイルがあるにもかかわらず作業ディレクトリの中にそれらのファイルが残ったままになっているのですが、これはレシピの処理が完了していないからクリーンアップ機能が働いていないということでいいのでしょうか。
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿

急用あり、今週一杯はこのような案件のように各種設定・ファイルなどの準備を必要とする検証のための時間は取れません。悪しからず。 少なくとも、簡単なサンプル .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 を普段使っていないので ... 自信はないです。)

和田 勇 への返信

Re: latemxの記述の方法

- アラカザム の投稿
お忙しい中ありがとうございます。
コマンドプロンプトでの処理ですが、試したところ処理自体はできたようなのですが参考文献が出力されていませんでした。

クリーンアップについては提案されたものを試してみようと思います。

添付ファイルに僕がいつも使用しているtexソースファイルと適当なrefファイルを入れましたのでご活用ください。
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿

ちゃんと書かないと、参考文献情報は出力されないとおもいます。

その手当てを以下のようにしました。なお、空行が多いとかがあったり 行数が長いのを調整したので、修正行数は「雛形.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}
和田 勇 への返信

Re: latemxの記述の方法

- 和田 勇 の投稿

現実逃避して、やってみました。提供された 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": "",
和田 勇 への返信

Re: latemxの記述の方法

- アラカザム の投稿
ご返信ありがとうございます。
雛形についてはしっかりテキストと参照情報を書いてから送るべきでした。

コマンドプロンプトにて
lualatex雛形 → pbibtex雛形 → lualatex雛形*2
の処理をかけたたころ正常に処理が完了しました。(こちらのlogを「雛形.log」としてお送りします)
さらに、コマンドプロンプトで
latexmk -gg -lualatex 雛形
を行ったところ参考文献が出ませんでした。(こちらを「雛形2.log」として送ります)


和田さんが書いてくださったsetting.jsonについて質問なのですが、
僕の理解では、vscodeでbibtexを参照するコンパイルをかける際には
toolsで「lualatex」と「bibtex」の2つの定義をつけてから
recipesでlualetex→bibtex→luatex2回となるようにコマンドを作成する
というものだったんですが
和田さんのものにはそれらがないようなのですが、それらの記述がなくても参考文献情報は正確にコンパイルされるのでしょうか。
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿
  • 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 のアップデートも検討してください。

和田 勇 への返信

Re: latemxの記述の方法

- 和田 勇 の投稿
  • 一つ質問「vscode での実現方法の疑問」に答えていなかったので

  • 手順が確定されていれば、lualatex; pbibtex; lualatex; lualatex と toolchain で連結して処理すれば良いと思います。

  • でも latekmk の構築ができれば、「latexmk さん、良きに計らって pdf 作成しておいてね」って簡単に指示できるのでは前回の投稿の意。

    なので latexmk ; pbibtex; latexmk; latexmk と toolchain すると、 一回めの latexmk で処理ができているのでそれ以降 pbibtex 他は無駄な処理・時間の消費になるのではと思っています。

和田 勇 への返信

Re: latemxの記述の方法

- アラカザム の投稿
latexmkという物自体何なのかよくわかっていないのですが、要するに
「通常だと複数回コンパイルをかけなければいけないものを一回で済ませてくれるもの」
という認識でよいでしょうか?
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿

「必要な処理」を「適切な順序」で実行してるので、
「一回で済ませてくれる」は、「一つのコマンドで済む」だと思います。

「必要な処理」・「適切な順序」は、おそらくログファイルの内容などから判断しているかと思います。


和田 勇 への返信

Re: latemxの記述の方法

- アラカザム の投稿
コマンドプロンプトを使用して
ディレクトリ「C:\Users\<ユーザー名>\Desktop\2021-12-16\2021-12-16」で「latexmk -gg -lualatex test」を行ってみたところ望んだ結果が出ず、pdfも生成されませんでしたので、logファイルを送らせていただきます。

ちなみにTexLiveのアップデートを行った状態でコンパイルをかけました。
tlmgr revision 60693 (2021-10-04 04:24:25 +0200)
tlmgr using installation: C:/texlive/2021
TeX Live (https://tug.org/texlive) version 2021
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿
  • 前回の回答で明確に書けていなかったようで...

    今回のような案件では 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 があれば、添付してください。
和田 勇 への返信

Re: latemxの記述の方法

- アラカザム の投稿
・「tlmgr update --self --all」を実行した後に「lualatex test」を実行したところ、無事pdfが生成されました。
・「latexmk test」を実行したところエラーが出たようなのでコンソールのコピペを送ります。
・その他logやホームディレクトリの.latexmkrcも添付いたします。
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿
  • 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}.
    
和田 勇 への返信

Re: latemxの記述の方法

- アラカザム の投稿
・アップデート後pdfの「*」が表示されました。
「latexmk -gg -lualatex test」でコンパイルをかけ他ところ(多分?)処理に成功しました。

zipでlogやその他生成物を送ります。
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿
  • latexmk での pbibtex の処理経緯確認
  • test.log で読み込んだファイルのバージョン名、日付情報に差異の無いことを確認しました。

  • pdf ファイルも、「*」や「文献情報」など懸念されたものが解消できていますね。

  • あとは、vscode で latexmk 経由で lualatex + pbibtex で清書できるか確認してください。

アラカザム への返信

Re: latemxの記述の方法

- m c の投稿
> 論文の著者部分に\thanks{}環境を設定した際、註釈部分にアスタリスク(*←の記号)が出なくなって
> しまったのですがこれは何らかの不具合なのでしょうか。

その論文原稿用のクラスファイルまたはスタイルファイルがそういう仕様になっているのではありませんか?
あるいは,何かのパッケージやご自分で用意されたコマンド等が脚注に関する命令を変更してしまっているという
のも考えられます.
m c への返信

Re: latemxの記述の方法

- アラカザム の投稿
ご返信ありがとうございます。
クラススタイルやスタイルファイルは特にいじった記憶がないです。
クラススタイルは
「\documentclass[11pt]{ltjsarticle}」
としています。

脚注に関係するパッケージなどは入れてはいないと思います。
コマンドも脚注に関するものは書いていません。
アラカザム への返信

Re: latemxの記述の方法

- 和田 勇 の投稿
やはり簡単な例を示していただきたいのですが、たたき台を添付します。

これは footnote カウンタを弄って、* を飛ばしています。