去る2022年の某アドベントカレンダーに「ChatGPTのTeX知識を添削してみた」という記事がありました。
- ChatGPTのTeX知識を添削してみた(ラング・ラグー)
イマドキの生成AIを知る人から見ると2年半前の生成AIはカス同然です。だからこそ「AIにTeXについて質問する」ことがネタとして成立していたわけです。イマドキの生成AIに質問してもここまで愉快な話にはならないことは容易に予想できます。実際、この記事以降に「AIにTeXについて質問してみた」こと自体をテーマにする記事は誰も書いていないようです。
しかし、マジメな話として「イマドキの生成AIがTeX言語1をどこまで知っているか」について興味がある人もいるでしょう。そういう人が自分で試そうとしても、当人に十分なTeX言語の知識がないと生成AIの回答を評価できません。そう考えると「イマドキの生成AIのTeX知識を添削してみた」という記事にも一定の価値はあるでしょう。
イマドキのAIのカテゴリコードの知識を添削する
例の記事では8つの質問を試していますが、この記事では、その中で“純粋な知識問題”といえる2番目(と3番目2)の「カテゴリコードの意味」を問う質問を試してみます。
※GeminiのフツーのWebサイトで、2.5 Flashを使用しました。
入力したやつ
TeXのカテゴリーコードって何? 0〜15までの各カテゴリーコードの意味も教えて
出力されたやつ
TeXにおけるカテゴリーコードとは、TeXが入力ファイルを読み込む際に、各文字に与える「役割」を規定する重要な値です。TeXは文字を読み込む際、その文字コードだけでなく、対応するカテゴリーコードも見て、その文字をどのように処理するかを決定します。
TeXには0から15までの16種類のカテゴリーコードがあります。これらのコードは、\catcodeコマンドを使って変更することができます。デフォルトの割り当てはTeXのフォーマット(plain TeXやLaTeXなど)によって異なりますが、一般的なTeX処理系での各カテゴリーコードの意味は以下の通りです。
0から15までの各カテゴリーコードの意味
カテゴリーコード0 (Escape character / エスケープ文字):
通常は
\(バックスラッシュ) に割り当てられています。TeXコマンドの始まりを示します。この文字の後ろに続く文字列は、特別な意味を持つ制御綴(control sequence)として扱われます。
例:
\documentclass,\section
カテゴリーコード1 (Begin group / グループ開始):
通常は
{(左中括弧) に割り当てられています。TeXにおけるグループの始まりを示します。グループ内で設定された変更(フォントサイズ、インデントなど)は、グループの外には影響しません。
カテゴリーコード2 (End group / グループ終了):
通常は
}(右中括弧) に割り当てられています。グループの終わりを示します。
カテゴリーコード3 (Math shift / 数式モード切り替え):
通常は
$(ドル記号) に割り当てられています。数式モードの開始と終了を切り替えます。インライン数式やディスプレイ数式に使われます。
例:
$x^2+y^2$
カテゴリーコード4 (Alignment tab / 配置タブ):
通常は
&(アンパサンド) に割り当てられています。tabular環境やalign環境など、表組みや数式の配置においてカラムの区切りとして使われます。
カテゴリーコード5 (End of line / 行末文字):
通常は改行文字(LF, CR)に割り当てられています。
TeXがこの文字を読み込むと、通常は
\par(段落の終わり)を挿入するか、または空白として扱われます。
カテゴリーコード6 (Parameter / マクロ引数):
通常は
#(シャープ) に割り当てられています。マクロ定義において、引数を示すために使われます(例:
#1,#2)。
カテゴリーコード7 (Superscript / 上付き文字):
通常は
^(ハット) に割り当てられています。上付き文字(冪指数など)を示します。
例:
x^2
カテゴリーコード8 (Subscript / 下付き文字):
通常は
_(アンダースコア) に割り当てられています。下付き文字(添字など)を示します。
例:
x_i
カテゴリーコード9 (Ignored character / 無視される文字):
カテゴリーコード10 (Space / スペース):
通常はスペース文字に割り当てられています。
空白として扱われます。連続する複数のスペースは通常1つのスペースとして扱われます。
カテゴリーコード11 (Letter / 字母):
通常はアルファベット (
a-z,A-Z) に割り当てられています。TeXコマンド名の一部を構成したり、通常のテキスト文字として扱われたりします。
カテゴリーコード12 (Other character / その他の文字):
上記以外のほとんどの記号や数字に割り当てられています。
通常はTeXによってそのまま出力される文字として扱われます。
例:
1,2,.,,,!,?
カテゴリーコード13 (Active character / アクティブ文字):
カテゴリーコード14 (Comment character / コメント文字):
通常は
%(パーセント) に割り当てられています。この文字から行末までは、TeXによってコメントとして扱われ、無視されます。
カテゴリーコード15 (Invalid character / 無効な文字):
カテゴリーコードはTeXの柔軟性と強力さを支える重要なメカニズムの一つであり、これらを理解することで、TeXの動作をより深く理解し、必要に応じてカスタマイズすることができます。
添削してみるやつ
…………フツー😐
昔のChatGPTの回答は「合っているのを探す方が難しい」という有様でしたが、この回答は「間違っている点を探すのが難しい」感じです。人によって「この言い方はあまりよくない」と感じる点もあると思いますが、「客観的に誤りである」記述を探すのは至難の業だと思います。自分のTeX力に自信のある人は一度探してみてください。

自分が見つけたのは以下の点です。
- カテゴリコード5について「通常は改行文字(LF, CR)に割り当てられています。」とあるが、LFのカテゴリコード(plainやLaTeXでの初期値)は5ではない。もちろん、TeXではLFも「行末」として働くのであるが、これは「ファイルの改行文字がLFでもTeXの処理上はCRと扱われる」からである。
参照: TeXのカテゴリコードの初期値をちゃんと知りたい話 - カテゴリコード9について「完全に無視され」というのは言い過ぎのような気がする(気にしすぎかも🤔)
参照: TeX言語でドドスコ(ラブ注入)してみた話
まとめ
イマドキのエ~アイはマトモなのでツマラナイ😑(えっ😲)
(つづく)