LaTeXマクロ名の日本語使用について

LaTeXマクロ名の日本語使用について

- ぺけぽん の投稿
返信数: 4
お世話になります。
いままで何気にマクロ名に日本語が使えると思って使っていたのですが,使えないものもあるのですね。下記マクロはNGでした。長音「ー」がマクロ名として認識されないようです。

\newcommand{\黄マーカー}[1]{{\colorbox{yellow}{#1}}}

\newcommandの代わりに\defでも試しましたが同じ現象でした。
素直に英文字だけでマクロ名を使うべきなんでしょうか。

環境: Ubuntu 18.04.3 LTS
TeX: e-pTeX 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2017/Debian)
ぺけぽん への返信

Re: LaTeXマクロ名の日本語使用について

- aminophen の投稿
pTeX で長音「ー」は \kcatcode が 18 だからです。
\kcatcode が 16(漢字),17(かな)の文字は \catcode が 11 の文字と同様にコントロールワードに使えますが,
\kcatcode が 18(記号)の文字は \catcode が 12 の文字と同様でコントロールシンボルにしか使えません。

# texjporg の「pTeX マニュアル」(ptex-manual.pdf) にも記載有ります。
(「和文文字のカテゴリーコードの値による動作の違いは次のようになる:」の所。)
aminophen への返信

Re: LaTeXマクロ名の日本語使用について

- ぺけぽん の投稿
ありがとうございます。
ptex-manual.pdfを読んでみました。
「初期状態では 1, 2, 7–15, 85–94 区の文字が 18」
この区というのは区点コードという認識でよろしいでしょうか?
長音「ー」は区点コードだと1区に属するので,「\ー」としては使えるけど,これを含むマクロ名としては使えないということですね。
ぺけぽん への返信

Re: LaTeXマクロ名の日本語使用について

- aminophen の投稿
> この区というのは区点コードという認識でよろしいでしょうか?

はい,正しいです。

(注) 厳密には,
    「TeX Live, W32TeX, ptexlive, ptetex 等の『ptexenc 版 pTeX』については」
という但し書きがつく。

===== (もっと細かい補足 はじめ) =====
「ptexenc 版 pTeX」という呼び方はあまりされていないが,
最近はこれの改良版(最新は p3.8.2)が TeX Live / W32TeX に収録されている。
オリジナルの「アスキー pTeX」(最新は p3.1.11)と区別するため,
敢えて「コミュニティ版 pTeX」と呼ぶことがある。
ptex-manual.pdf は「コミュニティ版 pTeX」に基づく。
===== (もっと細かい補足 おわり) =====

【注1】pTeX と upTeX では,\kcatcode の分類が異なります。
具体的には,(コミュニティ版の) pTeX では「JIS の区点コードの区ごと」ですが,
upTeX では「Unicode のブロックごと」です。これに付随して,
一部の文字では pTeX と upTeX で非互換が生じます。例えば

\showthe\kcatcode`ー \end

というコードを ptex と uptex で処理すると,ptex では 18 ですが uptex では 17 です。
つまり,upTeX では長音「ー」がコントロールワードに使えることになります。

【注2】元の「アスキー pTeX」では,「内部コードの上位バイトごと」です。
(実際には SJIS 版と EUC 版が存在するはず)
つまり,バイナリのビルド時の設定(SJIS or EUC)に依存して \kcatcode の分類が異なります。
aminophen への返信

Re: LaTeXマクロ名の日本語使用について

- ぺけぽん の投稿
詳しいご説明ありがとうございます。
普段,あまり意識しないような内容だったので,勉強になりました。