博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CJK专题
阅读量:6296 次
发布时间:2019-06-22

本文共 4246 字,大约阅读时间需要 14 分钟。

1)由来与特点。
    CJK是由Werner Lemberg开发的支持中、日、韩、英文字的宏包。目前的最新版本为4.5.1,可以从
url.gif
网站免费下载。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}
%
%

转载地址:http://qelta.baihongyu.com/

你可能感兴趣的文章
正文提取算法
查看>>
轻松学PHP
查看>>
Linux中的网络监控命令
查看>>
this的用法
查看>>
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>