CJK专题

1)由来与特点。
    CJK是由Werner Lemberg开发的支持中、日、韩、英文字的宏包。目前的最新版本为4.5.1,可以从
url.gif
http://cjk.ffii.org/ 网站免费下载。CJK的特点是不需要象CCT那样预处理,支持PDFLatex和Type1字
体等,因此越来得到中国TeXer的喜爱,逐渐成为中文LaTeX的主流。CTEX2.0以后的中文套装都包含这
个宏包。

(2)两种环境。
   CJK定义了两个环境,它们是:
   (A)CJK*环境。
   \begin{CJK*}[字模编码]{编码}{字体族}
     ............
   \end{CJK*}

   (B)CJK环境。
   \begin{CJK}[字模编码]{编码}{字体族}
     ............
   \end{CJK}
   两个环境的区别是:CJK*环境将忽略汉字之间的空格以及换行,只考虑象'\空格'那样受保护的空白。
而CJK环境与之相反。根据我们汉字习惯,应该使用CJK*环境。
   两个环境之间切换的命令为:
   \CJKspace,   CJK*切换到CJK
   \CJKnospace, CJK切换到CJK*

   一个例子:
   \begin{CJK*}{GBK}{song}
      %里面的汉字默认为宋体
   \end{CJK*}

(3)六种中文字体及字体切换。
   CTEX中文套装中定义了六种中文字体,分别是
   song, 宋体
   fs,   仿宋
   kai,  楷书
   hei,  黑体
   li,   隶书
   yuan, 幼圆

   在一个CJK环境中字体之间切换的可以使用下面命令:
   \CJKenc{编码}
   \CJKfamily{字体}

   例如切换成繁体宋,
   \CJKenc{Big5}
   \CJKfamily{song}

(4)两种使用方法。
   有两种使用CJK的方法
   (A)常规方法:
   \documentclass{book}
   \usepackage{CJK}
   \begin{CJK*}{GBK}{song}
     ......%导言中含有中文
   \end{CJK*}
   \begin{document}
   \begin{CJK*}{GBK}{song}

     ......%正文中含有中文

   \newpage
   \end{CJK*}
   \end{document}

   (B)非常用法。
   \documentclass{book}
   \usepackage{CJK}
   \begin{CJK*}{GBK}{song}
     ......%导言中含有中文
   \begin{document}

     ......%正文中含有中文

   \newpage
   \end{CJK*}
   \end{document}
   后者可以解决页眉、页脚、装订线等在常规用法中不能正确显示的问题。副作用是在文章最后产生了
一个空白页。

(5)相关排版命令
   (1)\CJKcaption{GB} 章节标题为中文
   (2)\CJKtilde 重新定义“~”的值,使得中英文之间能产生合适的间距。例如,变量~$x$~的范围。
   (3)\standardtilde 恢复原来“~”的定义。如果不想恢复原来的定义而要用的话可以使用\nbs代替“~”。
   (4)\CJKindent  CJK缩进命令,最好与indentfirst宏包结合使用,它是CJK4.5.1新增的命令。
   (5)\CJKglue,\CJKkern,\CJKboldshift等的功能不详,好象也不常用。


(6)关于CJK中汉字间距的问题。(Shredder提供)
\CJKglue 很简单,就是插在每个汉字之间的 glue
它的缺省大小定义在 CJK.sty 里:
\newcommand{\CJKglue}{\hskip \z@ \@plus .08\baselineskip}
是 0pt plus 0.08\baselineskip 稍微可以伸长,而且这个伸长量跟字体大小有关系。
TeX 选择断行点的时候会这样看:这个点如果断开,行里的 glue 如果在原位,那么就是很好的。否则,如果 glue 有伸长,TeX 的算法会认为这一行有 100r^{3} 的 penalty, 其中 r 代表伸长的比例。比如如果你这行一共有 10 个pt的伸长容量,如果你的这样算下来,那些 glue 一共伸长了 9pt, 那么 penalty 是 100*(9/10)^3=72.9。最后,TeX 会综合很多很多因素,从中选出最优的断行方法。
你知道 TeX 为什么如此完美了吧?呵呵。


CCT 的\ziju相当于是没有伸缩功能的 glue, 它可以定义为:
\newcommand\ziju[1]{\renewcommand{\CJKglue}{\hskip #1pt}}
(我不知道CCT的字距的单位是什么?pt? 就当是pt吧。不是的话你自己改改。)

你可以试试以下的内容改变字距,体会一下 glue 是什么东西 

%=====================================================================
\newcommand\ziju[1]{\renewcommand{\CJKglue}{\hskip #1pt}}
\begin{verbatim}
\newcommand\ziju[1]{\renewcommand{\CJKglue}{\hskip #1pt}}
\end{verbatim}

\ziju{2.3}
\begin{verbatim}
\ziju{2.3}
\end{verbatim}
现在的字距是 2.3pt.

\ziju{1}
\begin{verbatim}
\ziju{1}
\end{verbatim}
现在的字距是 1pt.

\renewcommand{\CJKglue}{\hskip 2.3pt}
\begin{verbatim}
\renewcommand{\CJKglue}{\hskip 2.3pt}
\end{verbatim}
现在的字距是 2.3pt.

\renewcommand{\CJKglue}{\hskip 1em}
\begin{verbatim}
\renewcommand{\CJKglue}{\hskip 1em}
\end{verbatim}
现在的字距是 1em(一个汉字的宽度).

\renewcommand{\CJKglue}{\hskip 2.3pt plus 3pt}
\begin{verbatim}
\renewcommand{\CJKglue}{\hskip 2.3pt plus 3pt}
\end{verbatim}
现在的字距是 2.3pt plus 3pt (有 3pt 的伸长容量).

\framebox[1.2\width][s]{现在的字距是 2.3pt plus 3pt (有 3pt 的伸长容量).}

\renewcommand{\CJKglue}{\hskip 2.3pt plus 3pt minus 2.3pt}
\begin{verbatim}
\renewcommand{\CJKglue}{\hskip 2.3pt plus 3pt minus 2.3pt}
\end{verbatim}
现在的字距是 2.3pt plus 3pt (有 3pt 的伸长容量和 2.3pt 的收缩容量).

\framebox[3in][s]{现在的字距是 2.3pt plus 3pt minus 2.3pt(有 3pt 的伸长容量和 2.3pt 的收缩容量).}

\renewcommand{\CJKglue}{\hskip 2.3pt plus 3pt minus 10pt}
\begin{verbatim}
\renewcommand{\CJKglue}{\hskip 2.3pt plus 3pt minus 10pt}
\end{verbatim}
\framebox[3in][s]{现在的字距是 2.3pt plus 3pt minus 10pt (有 3pt 的伸长容量和 10pt 的收缩容量).}


(7)CJK中的字号的定义。摘自cxterm的cjkcct宏包。
%
% define the size of CJK characters. but not recommend to use
%
\newcount\CJK@ZihaoNo
\def\defCJKfontsize#1#2#3#4{%
         \fontsize{#1}{#2 plus#3 minus #4}\selectfont\CJKindent}
\def\zihao#1{\CJK@ZihaoNo=#1
             \ifnum \CJK@ZihaoNo=0  \defCJKfontsize{34pt}{46pt}{.5pt}{.3pt}
        \else\ifnum \CJK@ZihaoNo=1  \defCJKfontsize{26pt}{35pt}{.5pt}{.3pt}
        \else\ifnum \CJK@ZihaoNo=2  \defCJKfontsize{20pt}{28.5pt}{.5pt}{.3pt}
        \else\ifnum \CJK@ZihaoNo=3  \defCJKfontsize{15pt}{20pt}{.3pt}{.2pt}
        \else\ifnum \CJK@ZihaoNo=4  \defCJKfontsize{13.75pt}{19pt}{.3pt}{.2pt}
        \else\ifnum \CJK@ZihaoNo=-4 \defCJKfontsize{11.32pt}{18pt}{.3pt}{.2pt}
        \else\ifnum \CJK@ZihaoNo=5  \defCJKfontsize{9.9pt}{13pt}{.3pt}{.2pt}
        \else\ifnum \CJK@ZihaoNo=-5 \defCJKfontsize{8.5pt}{12pt}{.2pt}{.1pt}
        \else\ifnum \CJK@ZihaoNo=6  \defCJKfontsize{7.5pt}{10pt}{.2pt}{.1pt}
        \else\ifnum \CJK@ZihaoNo=7  \defCJKfontsize{5pt}{8pt}{.1pt}{.1pt}
        \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
%
%

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值