pTeX 和 upTeX 中的 kcatcode 是什么?

pTeX 和 upTeX 中的 kcatcode 是什么?

日文 TeX 引擎 pTeX 和 upTeX 分别处理拉丁字符和日文字符,我不太理解其中的原理。它们引入了日文字符的 kcatcode 概念,其值为 16、17、18(在 pTeX 中)或 19(在 upTeX 中)编辑:如下答案中描述的 15这些值分别对应什么?\meaning具有这些不同值的字符的\kcatcode是相同的:下面显示了> kanji character 本.四次(并且 pTeX 中出现错误,因为 19 是不允许的)。

\kcatcode`本=16
\show 本
\kcatcode`本=17
\show 本
\kcatcode`本=18
\show 本
\kcatcode`本=19
\show 本

此外,kcatcode 值 16,17,19 似乎在控制序列中是允许的。

答案1

基础知识\kcatcode

在 pTeX/upTeX 中,所有日文字符都被划分为一些预定义的组 [*1],并且每个组都被赋予一个\kcatcode值。该值充当标记,这意味着该字符被视为日文字符标记。pTeX/upTeX 还在各种情况下引用它,包括输入处理器和换行程序。

\kcatcode价值的意义

\kcatcode这里是pTeX/upTeX 中各个值的含义:

  • 16:汉字符(例如漢日...)
  • 17:假名(平假名、片假名)字符(例如あア)
  • 18:符号(如 、 。)
  • 19:韩语字符(例如 아 하)-- 仅在 upTeX 中可用

在 upTeX 中,还允许使用特殊\kcatcode值 15;它表示该字符是不是解释为日语字符标记,正常值\catcode将生效。此功能旨在与 Western TeX 兼容,包括 inputenc 包的 UTF-8 处理(另请参阅 ptex-guide-en.pdf 中的“6.6.2 检测 upTeX”)。

允许在控制序列中使用 kcatcode 为 16、17、19 的字符(类似于 catcode 11)。允许在控制符号中使用 kcatcode 为 18 的字符(类似于 catcode 12)。无论上述情况如何,\meaning任何日语字符的结果始终为kanji character <something>


笔记:

[*1] 不同\catcode\kcatcode设置有效不是不是针对单个字符,而是针对一些预定义的字符块。 (例如,“あ”和“い”都是平假名字符,因此它们共享相同的\kcatcode值。)此外,pTeX 和 upTeX 之间的分类略有不同(pTeX:基于 JIS ku-ten 代码,upTeX:基于 Unicode 块),这是在 WEB 源中硬连线的。


另请参阅:H. Kitagawa,“区分 (u)pTeX 中的 8 位字符和日语字符”(TUGboat 41:3,2020 年)https://tug.org/TUGboat/Contents/contents41-3.html--- 提到的“(u)pTeX 的实验版本”尚未合并。

另请参阅:T. Tanaka,“upTeX --- 带有 CJK 扩展的 Unicode 版 pTeX”(TUGboat 34:3,2013 年)https://tug.org/TUGboat/Contents/contents34-3.html

相关内容