Closed aminophen closed 4 years ago
\documentclass{article} \DeclareYokoKanjiEncoding{JY1X}{}{} \DeclareErrorKanjiFont{JY1X}{mc}{m}{n}{10} \DeclareKanjiSubstitution{JY1X}{mc}{m}{n} \DeclareKanjiFamily{JY1X}{mc}{} \DeclareFontShape{JY1X}{mc}{m}{n}{ <-> min10 }{} \renewcommand{\kanjiencodingdefault}{JY1X} %\KanjiEncodingPair{JY1X}{JT1}% => これが無いのは許されない \begin{document} \stop
! Missing \endcsname inserted. <to be read again> \t@enc@JY1X l.9 \begin{document} ?
これでは原因に気づきにくいので「\KanjiEncodingPair の存在チェックをして,未定義の場合は早めに段階で明快なエラーを出す」としようと思います。
(pLaTeX のテストケースを作るべく \DeclareYokoKanjiEncoding だけを宣言したところ,発生したエラーの原因に気づくまでに時間を無駄にしてしまったのがモチベーションorz)
[補足1] \KanjiEncodingPair が追加されたのは2004年8月。plnews08.tex に
横書きと縦書きのエンコーディングは以下のように必ず|\KanjiEncodingPair|で 対応を関連付けてから使用します。
とありました。
[補足2] アスキーの「日本語 LaTeX2e ブック」は \DeclareKanjiEncoding しかなかった古い時代に書かれたものです。TeX Wiki の「LaTeX のエラーメッセージ」のページの
! LaTeX Error: KANJI Encoding scheme `encoding' unknown.
の項目にも
\DeclareTateKanjiEncoding あるいは \DeclareYokoKanjiEncoding を用いてエンコーディング encoding の宣言を行ってください(充分に新しい pLaTeX では,さらに \KanjiEncodingPair の設定も適宜行うことになるでしょう).
と書かれていて,両方宣言しないといけなくなったのは「比較的最近」ということになっています。(とは言っても,もう15年も前ですが。)
[補足3] 2017年に pLaTeX / upLaTeX のソース共通化(uplcore.ltx と plcore.ltx の共通部分は plcore.ltx に任せて削除)の一環で,従来は plcore.ltx にあった
\KanjiEncodingPair{JY1}{JT1}
の行を pldefs.ltx に移動しています。その結果,ユーザが pldefs.cfg を古い pldefs.ltx を前提に用意していた場合に例の"判りにくいエラー"が出る恐れがありました。
実装を 'kanjiencodingpair' ブランチ (9588493) で作ってみました。
edit: \expandafter\ifx\reserved@a\relax のところがマズイ…。例えば \ifcat\relax\reserved@a なら行けるか?
\expandafter\ifx\reserved@a\relax
\ifcat\relax\reserved@a
2020-04-12 を出したので close します。
これでは原因に気づきにくいので「\KanjiEncodingPair の存在チェックをして,未定義の場合は早めに段階で明快なエラーを出す」としようと思います。
(pLaTeX のテストケースを作るべく \DeclareYokoKanjiEncoding だけを宣言したところ,発生したエラーの原因に気づくまでに時間を無駄にしてしまったのがモチベーションorz)
[補足1] \KanjiEncodingPair が追加されたのは2004年8月。plnews08.tex に
とありました。
[補足2] アスキーの「日本語 LaTeX2e ブック」は \DeclareKanjiEncoding しかなかった古い時代に書かれたものです。TeX Wiki の「LaTeX のエラーメッセージ」のページの
の項目にも
と書かれていて,両方宣言しないといけなくなったのは「比較的最近」ということになっています。(とは言っても,もう15年も前ですが。)
[補足3] 2017年に pLaTeX / upLaTeX のソース共通化(uplcore.ltx と plcore.ltx の共通部分は plcore.ltx に任せて削除)の一環で,従来は plcore.ltx にあった
の行を pldefs.ltx に移動しています。その結果,ユーザが pldefs.cfg を古い pldefs.ltx を前提に用意していた場合に例の"判りにくいエラー"が出る恐れがありました。