使用 CJK 包替换表意符号

使用 CJK 包替换表意符号

将表意字符句号 ( ) 替换为全宽句号 ( )的常用方法是更改​​ catcode:

\catcode`\。 = \active
\let。=.

但是,当使用带有 pdfLaTeX 的包时,此方法会失效,CJK因为此包已经制作成宏了。那么如何使用来实现这种效果呢CJK

PS:我使用UTF8编码。

答案1

我发现了一个类似问题但对于 GBK 编码(中文)。解决方案如下:

% For GBK
% Put it after \begin{document}
\let\oldaone^^a1
\def^^a1#1{\ifnum`#1=`^^a3\relax ^^a3^^ae\else \oldaone #1\fi}

我已将其修改为UTF8:

% For UTF8
% Put it after \begin{document}
\makeatletter
\let\old@e@iii=^^e3
\def^^e3^^80#1{%
  \ifnum`#1=`^^82\relax
    ^^ef^^bc^^8e%
  \else
    \old@e@iii ^^80#1%
  \fi}
\makeatother

诸如此类的事情^^xx其实就是字符在某些编码下的表示方式:在UTF8中^^e3^^80^^82是“。”,^^ef^^bc^^8e在UTF8中是“.”。

相关内容