Closed qinglee closed 6 years ago
目前 GBK 和 Big5 编码的文件为了回避汉字第二个字节是 TeX 特殊字符 \/{/} 而采用 CJK 包的工具处理过,导致文件面目狰狞。我们可以不用 CJK 的工具,而是在定义这些文本的时候,临时改变 \/{/} 的类别码来回避这个问题。下面提供了一个初步的例子。
\
{
}
% !TEX encoding = Big5 % !TEX program = pdfLaTeX \RequirePackage{expl3} \ExplSyntaxOn \char_set_catcode_letter:N \@ \cs_new_protected:Npn \@@_new_text:n { \int_gincr:N \g_@@_text_int \group_begin: \@@_set_special_catcode: \char_set_catcode_group_begin:N \< \char_set_catcode_group_end:N \> \tex_afterassignment:D \group_end: \tl_const:cn { c_@@_ \int_use:N \g_@@_text_int _tl } } \int_new:N \g_@@_text_int \cs_new_protected_nopar:Npn \@@_set_special_catcode: { \@@_active_first_byte: \char_set_catcode_other:N \\ \char_set_catcode_other:N \{ \char_set_catcode_other:N \} } \cs_new_protected_nopar:Npx \@@_active_first_byte: { \int_step_function:nnnN { "81 } { 1 } { "FE } \char_set_catcode_active:n } \@@_new_text:n < 開稀飼 認程臨 > \tl_show:c { c_@@_ \int_use:N \g_@@_text_int _tl } \tex_end:D
因为现在改用了 \clist_map_inline 来大量定义假文,仅仅修改 \__zhlipsum_new:nn 的类别码仍然不足以解决问题。如果连着外面的函数一起修改,又会比较麻烦,所以我的处理是在直接在假文文件中(也就是声明假文的时候)切换类别码。
\clist_map_inline
\__zhlipsum_new:nn
目前看来使用上应该没有问题,但如果要定义新的假文片段,还需要由用户自行修改类别码,不是很方便(不过并不知道有什么非要用 GBK 和 Big5 的理由)。
目前 GBK 和 Big5 编码的文件为了回避汉字第二个字节是 TeX 特殊字符
\
/{
/}
而采用 CJK 包的工具处理过,导致文件面目狰狞。我们可以不用 CJK 的工具,而是在定义这些文本的时候,临时改变\
/{
/}
的类别码来回避这个问题。下面提供了一个初步的例子。