latexmkを用いたlualatex-jaのビルド

latexmkを用いたlualatex-jaのビルド

- 山田 太郎 の投稿
返信数: 2
windows 10 バージョン2019 64-bit にtexlive2018を入れて使用しています.
今までは\documentclass{jsarticle}を用いていたのですが
\documentclass{Itjsarticle}を使う必要が生じたためlatexmkを書き換え始めました

latexmk内の$pdf_modeを1にすると\documentclass{jsarticle}の方がビルドできず,$pdf_modeを3にすると\documentclass{Itjsarticle}の方がビルドできません
同一のlatexmkで両方のdocumentclassをビルドすることはできないのでしょうか
申し訳ありませんが,よろしくお願いします


以下に使用したファイル,それぞれのエラーメッセージを記載します


.latexmk

#!/usr/bin/env perl

# LaTeX commands
$lpdflatex = 'lualatex %O -synctex=1 %S';
$lualatex = 'lualatex %O -synctex=1 %S';
$latex = 'platex %O -kanji=utf8 -no-guess-input-enc -synctex=1 %S';
$latex_silent_switch = '-interaction=batchmode -c-style-errors';

# bibTeX commands
$bibtex = 'upbibtex %O %B';
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$makeindex = 'upmendex %O -o %D %S';

# Device Driver
$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';

# Typeset mode (generate a PDF)
$pdf_mode = 1; # 0: do not generate a pdf , 1: using $pdflatex , 2: using $ps2pdf , 3: using $dvipdf

# Other configuration
$pvc_view_file_via_temporary = 0;
$max_repeat = 3;

## output directory
$aux_dir = "build/";
$out_dir = "build/";




jsarticleを使用する際の.texファイル,エラー内容

\documentclass[uplatex]{jsarticle}
\begin{document}
hogehoge
\end{document}

! LaTeX Error: This file needs format `pLaTeX2e'
but this is `LaTeX2e'.




Itjsarticleを使用する際の.texファイル,エラー内容

\documentclass{ltjsarticle}
\begin{document}
hoge
\end{document}

! Undefined control sequence.
l.46 \directlua
{require('ltj-unicode-ccfix.lua')}% catcode of ideographs

山田 太郎 への返信

Re: latexmkを用いたlualatex-jaのビルド

- 和田 勇 の投稿
  • タイプセット方法はどのように行っていますか?

    • Windows のコマンドプロンプトとか PowerShell のコンソールなどから行っている場合
    • コマンドラインから実施するならば今まで jsarticle をベースにするなら $pdf_mode = 3 のままにしておき jsarticle あるいは ltjsarticle を利用する場合、それぞれ以下のようにすればコンパイルできます。

      latexmk jsarticle.tex

      latexmk -pdflua ltjsarticle.tex

    • もし jsarticle と ltjsarticle を別々のフォルダで管理することが可能であれば、それぞれのフォルダに .latexmkrc を配置し、それぞれにあった $pdf_mode の値を設定すれば -pdflua のオプションを付けなくても可能です。

    • TeXWorks とか VSCode などの GUI ツールと連携させている場合

    • TeXWorks だと確か jsarticle 用、ltjsarticle 用のエントリを作成しそれぞれを使い分ける
      • その場合、コマンドラインでの対応のように ltjsarticle 用には -pdflua を付与するだけで良いでしょう
    • VScode の場合、切替方法はまだやったことがないので latex に関する settings.json を見せて下さい。
  • 予備知識

    • documentclass と $pdf_mode (提示された .latexmkrc を元にテストしてみました)
    • jsarticle 指定時 uplatex を利用するので $pdf_mode = 3
    • ltjsarticle 指定時 lualatex を利用するので $pdf_mode = 1
    • $pdf_mode に関係なくとにかく documentclass に応じてタイプセットしたい(他にもあると思うけど)

      • jsarticle ... latexmk -latex=uplatex jsarticle.tex
      • ltjsarticle ... latexmk -pdflua ltjsarticle.tex あるいは latexmk -lualatex ltjsarticle.tex
    • latexmk は二つのフォルダの .latexmkrc を探し、読み込もうとします。

    • 一つはホームフォルダ(?)、もう一つはタイプセットしようとしているカレントフォルダ
    • ホームの方には共通のものがおかれ、先に読み込もうとします。(存在しなくても良い)
    • カレントフォルダは追加・置き換えの設定と考えて下さい。
  • 追伸
    • 現在 Windows を利用できないので Winodws の環境では試していないことご了承ください。
和田 勇 への返信

Re: latexmkを用いたlualatex-jaのビルド

- 山田 太郎 の投稿
タイプセットはコマンドラインからではなくGUIツール(sublime Text)と連携させています
jsarticle と ltjsarticle を別々のフォルダで管理することが可能ですのでとりあえずそのようにしたいと思います