日文 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