pLaTeX/upLaTeX/LuaLaTeX判定のベストプラクティスは?

pLaTeX/upLaTeX/LuaLaTeX判定のベストプラクティスは?

- Ryuta Kudo の投稿
返信数: 2

タイトルに示した通り、pLaTeX/upLaTeX/LuaLaTeXを判定したいと考えています。 自作のクラスファイル内でpLaTeX/upLaTeX/LuaLaTeXによって処理を変えたいものがあるためです。

pLaTeX/upLaTeX/LuaLaTeXを判定する方法はいくつかある(ifptexパッケージなどを利用する方法:https://qiita.com/zr_tex8r/items/71ae46c9c4e8cb575073 など)と聞き及びますが、pLaTeXがe-upTeXで動作するようになった場合でも、TeX Live 2022以前(pLaTeXがe-pTeXで動作している状態)でも正常に判定できる「ベストプラクティス」はいったい何でしょうか。


今までは、雑に

\NeedsTeXFormat{LaTeX2e}

下で,TeXエンジンがe-pTeX、e-upTeX、LuaTeXのどれかをiftexパッケージを利用して判定することでpLaTeX/upLaTeX/LuaLaTeXの判定を行っていましたが、pLaTeXがe-upTeXで動作するようになるとこれでは適切に判定できないかと思います。

そこで判定の処理を修正しようと思っているのですが、どう実装するのがベストなのか、ぜひご意見を頂きたいです。

ifptexなどのパッケージを利用したほうが安全なのでしょうか。 それともパッケージは使わずに判定したほうが保守しやすいでしょうか。 パッケージを使わない場合、どう実装するのが適切なのでしょうか。

当方はTeX/LaTeXに関する知識が浅く、自力では解決できそうにないため、皆様のお力をお借りできればと思っております。

Ryuta Kudo への返信

Re: pLaTeX/upLaTeX/LuaLaTeX判定のベストプラクティスは?

- aminophen の投稿
LaTeX らしいインタフェースで判定する場合:
ifluatex 及び ifptex パッケージを利用すればよいでしょう。
(これらのパッケージが維持管理されている限り自動的に大丈夫なことが保証される)
※「upTeX かどうか」でなく「native upTeX かどうか」が鍵になる。
https://qiita.com/zr_tex8r/items/18a78c93221ddb20d639
の「補足:pLaTeX なのか upLaTeX なのか調べる術」も参考に。

TeX 言語で判定する場合:
こうでしょうか。

\ifx\directlua\undefined
  \ifx\kanjiskip\undefined
    % (pdf)LaTeX, XeLaTeX, HiLaTeX
  \else
    \ifnum\jis"2121="3000
      % upLaTeX
    \else
      % pLaTeX
    \fi
  \fi
\else
  % LuaLaTeX
\fi

以上です。
aminophen への返信

Re: pLaTeX/upLaTeX/LuaLaTeX判定のベストプラクティスは?

- Ryuta Kudo の投稿

aminophenさん

回答ありがとうございます。aminophenさんから直接伺うことができて光栄です。 ifluatexパッケージ及びifptexパッケージを用いる場合は以下のコードで良いでしょうか。 お手数をおかけしてしまい恐縮ですが、確認いただけますと幸いです。

\NeedsTeXFormat{LaTeX2e}
\RequirePackage{ifptex}
\RequirePackage{ifluatex}

\ifptex
  \ifnativeuptex
    %upLaTeX
  \else
    %pLaTeX
  \fi
\fi

\ifluatex
 %LuaLaTeX
\fi