xeCJK 宏包

Size: px
Start display at page:

Download "xeCJK 宏包"

Transcription

1 xecjk 宏包 CTEX.ORG 2018/04/30 v3.7.1 目录 第 1 节简介 1 第 2 节基本用法 1 第 3 节用户手册 宏包选项 字体设置与选择 CJK 分区字体设置 设置 CJK 字符范围 标点符号的处理 xecjkfntef 用法说明 其他 第 4 节已知问题和兼容性 17 第 5 节 xecjk 代码实现 17 版本历史 162 代码索引 165 第 1 节 简介 xecjk 是一个 XƎLATEX 宏包, 用于排版中日韩 (CJK) 文字 主要功能 : 1. 分别设置 CJK 和英文字体 ; 2. 自动忽略 CJK 文字间的空格而保留其它空格, 允许在非标点汉字和英文字母 (a z, A Z) 间断行 ; 3. 提供多种标点处理方式 : 全角式 半角式 开明式 行末半角式和 CCT 式 ; 4. 自动调整中英文间空白 xecjk 使用了 XƎTEX 的一些最新特性, 需要 XƎTEX (2009/06/29) 以后的版本 xecjk 依赖 LATEX3 项目的宏包套件 l3kernel 和 l3packages xecjk 还需要通过 fontspec 宏包来调用系统字体 xecjk 会自动根据需要载入这些宏包 xecjk 的原始作者是孙文昌,2009 年 5 月起宏包被收入 ctex-kit 项目进行维护, 目前主要维护者是刘海洋 1 和李清 2 第 2 节 基本用法 与其他 LATEX 宏包一样, 引入 xecjk 宏包只要在导言区使用 \usepackage{xecjk} ctex-kit rev. b leoliu.pku@gmail.com 2 sobenlee@gmail.com 1

2 第 3 节用户手册 2 在引入 xecjk 宏包之后, 只要设置 CJK 文字的字体, 就可以在文档中使用中日韩文字了 可以在各种文档类中使用 xecjk 宏包, 最简单的示例是 : \documentclass{article} \usepackage{xecjk} \setcjkmainfont{simsun} \begin{document} 中文 \LaTeX 示例 \end{document} 例 1 上述示例设置了中文字体 SimSun( 宋体 ) 运行此示例要求系统安装了设置的字体, 源文件用 UTF-8 编码保存, 使用 XƎLATEX 编译 xecjk 只提供了字体和标点控制等基本 CJK 语言支持 对于中文文档, 可以使用更为高层的 ctex 宏包或文档类, 它将自动调用 xecjk 并设置好中文字体, 同时提供了进一步的本地化支持 详细内容参看 ctex 宏包套件的说明 xecjk 提供了大量选项, 可以在宏包调用时作为宏包选项或用 \xecjksetup 命令进行设置, 详见 3.1 节 除了 \setcjkmainfont 命令,xeCJK 还提供了许多其他命令设置和选择中文字体, 详见 3.2 节 其他更详细的功能也都将在下面详细说明 在本文档所在的文件夹的 example 目录下面也有一些例子可以参考 第 3 节 用户手册 3.1 宏包选项 xecjk 以 key = var 的形式提供宏包选项, 你可以在调用宏包的时候直接设置这些选项, 也可以在调用宏包之后使用 \xecjksetup 来设置这些选项 xecjk 内部调用 fontspec 宏包, 可以在调用 xecjk 的时候, 使用它的宏包选项 xecjk 会将 fontspec 的选项传递给它 \xecjksetup \xecjksetup { key 1 = val 1, key 2 = val 2,...} 其中 key 1, key 2 是设置选项, 而 val 1, val 2 则是对应选项的设置内容 多个选项可以在一个语句中完成设置 例如 \usepackage[punctstyle=kaiming]{xecjk} 例 2 等价于 \usepackage{xecjk}... \xecjksetup{punctstyle=kaiming} 例 3 有些选项或命令后面带有 号, 这表示这个选项或命令只能在导言区中使用, 而 号则表示这个选项或命令只能在导言区使用, 并且只影响随后定义的 CJK 字体 其余不带特殊标记的选项或命令, 如果没有特别说明, 可以在导言区或正文中使用 使用粗体来表示 xecjk 的默认设置

3 第 3 节用户手册 3 LocalConfig New: LocalConfig = { true false name } 是否使用本地配置文件 xecjk- name.cfg name 可以是不包含空格的任意使文件名合法的字符串 如果设置为 true, 则使用的是 xecjk.cfg; 设置为 false 则不载入配置文件 可以把将要在下文介绍到的对 xecjk 的一些设置 ( 例如设置常用 CJK 字体 修改字符范围和定义新的标点输出格式等 ) 保存到文件 xecjk- name.cfg 然后把这个文件放在本地的 TDS 目录下的适当位置 使用 TEX Live 的用户, 可以新建下列目录, 然后再把 xecjk- name.cfg 放在里面 : texlive/texmf-local/tex/xelatex/xecjk 最后还需要在命令行下执行 mktexlsr, 刷新文件名数据库以便 TEX 系统能够找到它 请注意,xeCJK 宏包中只有上述 LocalConfig 选项需要在调用 xecjk 时设置, 而不能通过 \xecjksetup 来设置 xecjkactive xecjkactive = true false 打开 / 关闭对中文的特殊处理 事实上, 这个选项会打开 / 关闭 XƎTEX 的整个字符类机制, 依赖这个机制的宏包都会受到影响 CJKspace CJKspace = true false 缺省状态下,xeCJK 会忽略 CJK 文字之间的空格, 使用这一选项来保留它们之间的空格 CJKmath CJKmath = true false Updated: CJKglue 是否支持在数学环境中直接输入 CJK 字符 使用这个选项后, 可以直接在数学环境中输出 CJK 字符 url 宏包将一个 URL 放在一个特殊的数学环境中排版, 所以如果在 \path 等命令的路径参数中含有汉字, 则需要启用这个选项, 路径中的汉字才能显示 CJKglue = {\hskip 0pt plus 0.08\baselineskip} 设置 CJK 文字之间插入的 glue, 上边是 xecjk 的默认值 一般来说, 除非有特殊需要 ( 例如, 改变文字间距等 ), 否则不需要设置这个选项, 使用默认值即可 如果要设置这个选项, 为了行末的对齐, 设置的 glue 最好有一定的弹性 CJKecglue CJKecglue = { glue } 设置 CJK 文字与西文 CJK 文字与行内数学公式之间的间距, 默认值是一个空格 使用这个选项设置的 glue 最好也要用一定的弹性 请注意, 这里设置的 glue 只影响 xecjk 根据需要自动添加的空白, 源文件中直接输入的 CJK 文字与西文之间的空格不受影响 ( 直接输出 ) 有时候 xecjk 可能不能正确地调整间距, 需要手动加空格 xcjkecglue xcjkecglue = { true false glue } 缺省状态下,xeCJK 不对源文件中直接输入的 CJK 文字与西文之间的空格进行调整, 如果需要调整, 请使用这个选项 如果使用这个选项, 将使用 CJKecglue 替换源文件中直接输入的 CJK 文字与西文之间的空格 CheckSingle Updated: WidowPenalty New: CheckSingle = true false 是否避免单个 CJK 文字单独占一个段落的最后一行 需要说明的是, 这个选项只有在段末的最后一个字是 CJK 文字或者标点符号, 并且倒数第二和第三个字都是文字才能正确处理处理孤字的问题 如果这倒数三个字有作为控制序列的参数的情况, 那么一般来说也不能正确处理 WidowPenalty = { penalty } 使用 CheckSingle 选项后, 设置段末三个汉字之间的 penalty 初始值为 10000, 即禁止在它们之间折行

4 第 3 节用户手册 4 PlainEquation New: NewLineCS NewLineCS+ NewLineCS- New: PlainEquation = true false 如果使用了 $$...$$ 的形式来输入行间数学公式, 就需要启用本选项, 以便 CheckSingle 选项能够正确识别 推荐使用 \[...\] 的形式来输入行间数学公式 NewLineCS = { \par \[ } 设置造成断行的控制序列, 以便 CheckSingle 选项能够正确识别 以上是 xecjk 的初始设置 EnvCS EnvCS+ EnvCS- New: EnvCS = { \begin \end } 设置 LATEX 环境开始和结束的控制序列, 以便 CheckSingle 选项能够正确识别 以上是 xecjk 的初始设置 InlineEnv InlineEnv+ InlineEnv- Updated: InlineEnv = { env 1, env 2, env 3,...} 在使用 CheckSingle 选项的时候, xecjk 会将 CJK 文字后接着的 LATEX 环境的开始 \begin{...} 和结束 \end{...} 视为断行的地方, 如果有某些特殊的 LATEX 环境没有造成断行, 可以使用这个选项来声明它, 以便 CheckSingle 能正确识别 AutoFallBack AutoFallBack = true false 当文档中有个别生僻字时, 可以使用这个选项, 自动使用预先设置好的后备字体来输出这些生僻字 后备字体的设置方法将在 3.2 节中介绍 AutoFakeBold AutoFakeBold = { true false 数字 } 全局设定当没有声明对应的粗体时, 是否使用 ; 当输入的是数字时, 将使用伪粗体, 并将使用输入的数字作为伪粗体的默认粗细程度 AutoFakeSlant AutoFakeSlant = { true false 数字 } 全局设定当没有声明对应的斜体时, 是否使用 ; 当输入的是数字时, 将使用伪斜体, 并将使用输入的数字作为伪斜体的默认倾斜程度 倾斜程度的取值范围是 [ 0.999, 0.999] EmboldenFactor EmboldenFactor = { 数字 4 } 设置伪粗体的默认粗细程度 SlantFactor SlantFactor = { 数字 } 设置伪斜体的倾斜程度, 范围是 [ 0.999, 0.999] PunctStyle Updated: PunctStyle = { quanjiao banjiao kaiming hangmobanjiao CCT plain... } 设置标点处理格式 xecjk 中预先定义好的格式为 quanjiao 全角式 : 所有标点占一个汉字宽度, 相邻两个标点占 1.5 汉字宽度 ; banjiao 半角式 : 所有标点占半个汉字宽度 ; kaiming 开明式 : 句末点号用全角, 其他半角 ; hangmobanjiao 行末半角式 : 所有标点占一个汉字宽度, 行首行末对齐 ; CCT CCT 格式 : 所有标点符号的宽度略小于一个汉字宽度 ; plain 原样 ( 不调整标点间距 ) 可以使用 中介绍的 \xecjkdeclarepunctstyle 定义新的标点格式 PunctFamily New: PunctFamily = { false family } 默认情况下,CJK 标点符号的字体与 CJK 正文一致,PunctFamily 用于单独对标点符号设置字体 family 需要使用随后说明的 \setcjkfamilyfont 或 \newcjkfontfamily 预先定义 false 表示取消本选项的作用, 让标点符号字体与正文一致

5 第 3 节用户手册 5 KaiMingPunct KaiMingPunct+ KaiMingPunct- LongPunct LongPunct+ LongPunct- MiddlePunct MiddlePunct+ MiddlePunct- PunctWidth PunctBoundWidth New: AllowBreakBetweenPuncts RubberPunctSkip Updated: CheckFullRight Verb New: NoBreakCS NoBreakCS+ NoBreakCS- New: Updated: LoadFandol New: KaiMingPunct = {.?! } 设置开明 (kaiming) 标点处理格式时的句末点号,KaiMingPunct 后带的 + 与 - 分别表示从已有的开明句末点号中增加或减少标点 LongPunct = { } 设置长标点, 例如破折号 与省略号, 允许在长标点前后断行, 但是禁止在它们之间断行 MiddlePunct = { ~ } 设置居中显示的标点, 例如间隔号 对于在 CJK 文字之间的居中标点,xeCJK 会根据不同的标点处理格式, 调整居中标点与前后文字之间的空白, 保证其确实居中 对于行末出现的居中标点, 允许在其后面断行, 但禁止在它前面断行 PunctWidth = { length } 缺省状态下,xeCJK 会根据所选择的标点处理格式自动计算标点所占的宽度, 如果对缺省设置不满意, 可以通过这一选项来改变它 为了使得标点所占的宽度能够适应字体大小的变化, 这里设置的 length 的单位最好用 em 等相对距离单位, 而不建议使用诸如 pt 之类的绝对距离单位 这里的设置可用于除了 plain 以外的所有标点处理格式 同时, 这里的设置对所有的 CJK 标点都生效, 如果只要设置部分标点, 请使用 节的 \xecjksetwidth PunctBoundWidth = { length } 与以上选项类似, 但设置的是标点符号出现在行首 / 尾时的宽度 AllowBreakBetweenPuncts = true false 缺省状态下,xeCJK 禁止在相邻 CJK 右标点和 CJK 左标点之间换行, 可以使用这一选项改变这一设置 RubberPunctSkip = true false plus minus 缺省状态下, 标点符号前 / 后的间距有一定的弹性 可以伸长到原始边界宽度, 可以收缩到标点另一侧的边界宽度 将本选项设置为 plus, 将只允许伸长 ; 设置为 minus 只允许收缩 设置为 false 将禁用这一特性, 从而使得前 / 后的间距为固定值 CheckFullRight = true false 某些控制序列要求不能在它的前面断行 但是在缺省状态下, 单个全角右标点的后面总是可以断行的 因此当这些控制序列出现在全角右标点后面时, 可能会出现意料之外的断行 此时可以使用这个选项来避免这个情况 NoBreakCS = { \footnote \footnotemark \nobreak } 设置不能在全角右标点后断行的控制序列 以上是 xecjk 的默认设置 如果这些控制序列在文档中只出现少量几次, 也可以不必使用 CheckFullRight 选项, 而是手工在这些控制序列前面加上 3.7 节介绍的 \xecjknobreak Verb = true false env env+ true 表示在 \verb 命令或 verbatim 环境里不自动调整中英文之间的间距 env 选项在 verbatim 环境里自动计算中西文间距和中文之间的间距, 以便于保持代码的对齐 ;env 选项不调整 \verb 里的间距,env+ 选项还将正文里设置的间距应用到 \verb 里 这个选项对使用到 \verbatim@font 命令的情形均有效, 更一般的情况可以使用 3.7 节介绍的 \xecjkverbaddon false 表示不作任何处理 以上选项的值除 false 外, 都禁止在汉字之间和汉字与西文之间自动换行 LoadFandol = true false 当没有在导言区设置 CJK 字体时, 是否使用 Fandol 字体 如果启用这个选项, 需要安装 Fandol 字体系列

6 第 3 节用户手册 字体设置与选择 \setcjkmainfont Updated: AutoFakeBold AutoFakeSlant Mapping New: \setcjksansfont Updated: \setcjkmonofont Updated: \setcjkfamilyfont Updated: \CJKfamily Updated: \newcjkfontfamily Updated: \setcjkmainfont { font name }[ font features ] 或 \setcjkmainfont [ font features ] { font name } 设置正文罗马族的 CJK 字体, 影响 \rmfamily 和 \textrm 的字体 后面两个参数继承自 fontspec 宏包, font features 表示字体属性选项, font name 是字体名 字体名可以是字体族名, 也可以是字体的文件名, 查找字体名见 节 ; 可用的字体属性选项参见 fontspec 宏包的文档 需要说明的是 xecjk 修改了 AutoFakeBold 和 AutoFakeSlant 选项, 以便配合全局伪粗体和伪斜体的设定 出于兼容性考虑, 字体属性可选项可以放在字体名称前面, 也可以放在后面 如果可选项放在后面, 字体名称与可选项之间不要有空格或者换行 AutoFakeBold = { true false 数字 } AutoFakeSlant = { true false 数字 } 局部设置当前字体族的伪粗和伪斜属性 如果没有在局部给出这些选项, 将使用全局设定 Mapping = { fullwidth-stop full-stop han-trad han-simp... } xecjk 提供了以上四个 TECKit 映射文件, 可以在设置字体的时候通过 Mapping 选项来使用它们 其中 fullwidth-stop 用于将正常句号 转换成全角实心句号.,full-stop 的作用相反 han-trad 用于将简体中文转换成繁体中文,han-simp 的作用相反 需要注意的是, 简繁互换都是简单机械的字字对译, 不能做到完全准确, 使用时要小心 例如简体的 发挥 和 头发 被转换成繁体的 發揮 和 頭發, 显然后者应作 頭髮 也可以根据实际需要, 制作新的映射文件, 请参考 TECKit 的文档 \setcjksansfont { font name }[ font features ] 或 \setcjksansfont [ font features ] { font name } 设置正文无衬线族的 CJK 字体, 影响 \sffamily 和 \textsf 的字体 \setcjkmonofont { font name }[ font features ] 或 \setcjkmonofont [ font features ] { font name } 设置正文等宽族的 CJK 字体, 影响 \ttfamily 和 \texttt 的字体 \setcjkfamilyfont { family } { font name }[ font features ] 或 \setcjkfamilyfont { family } [ font features ] { font name } 声明新的 CJK 字体族 family 并指定字体 \CJKfamily { family } \CJKfamily + { family } \CJKfamily - { family } 用于在文档中切换 CJK 字体族, family 必须预先声明 \CJKfamily 仅对 CJK 字符类有效, \CJKfamily+ 对所有字符类均有效,\CJKfamily- 对非 CJK 字符类有效 当 \CJKfamily+ 和 \CJKfamily- 的参数为空时, 则使用当前的 CJK 字体族 \newcjkfontfamily [ family ] \ font-switch { font name }[ font features ] 或 \newcjkfontfamily [ family ] \ font-switch [ font features ] { font name } 声明新的 CJK 字体族 family 并指定字体, 并定义 \ font-switch, 在文档中可以使用它来切换 CJK 字体族 可以不必指定 family, 这时候 family 将等于 font-switch 事实上,\newCJKfontfamily 是 \setcjkfamilyfont 和 \CJKfamily 的合并 例如 \newcjkfontfamily[song]\songti{simsun} 例 4 等价于

7 第 3 节用户手册 7 \setcjkfamilyfont{song}{simsun} \newcommand*{\songti}{\cjkfamily{song}} 例 5 \CJKfontspec Updated: \defaultcjkfontfeatures \CJKfontspec { font name }[ font features ] 或 \CJKfontspec [ font features ] { font name } 在文档中随机定义新的 CJK 字体族, 并马上使用它 \defaultcjkfontfeatures { font features } 全局设置 CJK 字体族的默认选项 例如, 使用 \defaultcjkfontfeatures{scale= } 例 6 可以将全部 CJK 字体缩小为 xecjk 宏包的初始化设置是 \defaultcjkfontfeatures{script=cjk} \addcjkfontfeatures Updated: \addcjkfontfeatures { font features } \addcjkfontfeatures * { font features } \addcjkfontfeatures [ block 1, block 2,... ] { font features } \addcjkfontfeatures * [ block 1, block 2,... ] { font features } 临时增加当前使用的 CJK 字体的选项 第一条命令, 仅对当前 CJK 主分区字体有效 ; 第二条对主分区和其它分区的字体都有效 ; 第三条仅对可选参数中指定的分区有效 ; 第四条对主分区和可选参数中指定的分区有效 例如, 使用 \addcjkfontfeatures{scale=1.1} 例 7 可以将文档中当前使用的 CJK 主分区字体放大为 1.1 \CJKrmdefault \CJKsfdefault \CJKttdefault \CJKfamilydefault Updated: 保存 \textrm 和 \rmfamily 所使用的 CJK 字体族, 默认值是 rm 保存 \textsf 和 \sffamily 所使用的 CJK 字体族, 默认值是 sf 保存 \texttt 和 \ttfamily 所使用的 CJK 字体族, 默认值是 tt 保存 \textnormal 和 \normalfont 所使用的 CJK 字体族 类似西文字体的 \familydefault 初始值是 \CJKrmdefault 如果没有在导言区中修改它,xeCJK 会在导言区结束的时候根据西文字体的情况自动更新 \CJKfamilydefault 因此, 在导言区里使用 \renewcommand\familydefault{\sfdefault} 就可以将全文的 CJK 和西文默认字体都改为无衬线字体族 \setcjkmathfont Updated: \setcjkmathfont { font name }[ font features ] 或 \setcjkmathfont [ font features ] { font name } 设置数学公式中的 CJK 字体族 如果使用了 CJKmath 选项, 但是没有使用 \setcjkmathfont 设置数学公式中的 CJK 字体, 那么将使用 \CJKfamilydefault 作为数学公式中的 CJK 字体

8 第 3 节用户手册 8 \setcjkfallbackfamilyfont Updated: \setcjkfallbackfamilyfont { family } { font name }[ font features ] 或 \setcjkfallbackfamilyfont { family } [ font features ] { font name } 设置 CJK 字体族 family 的备用字体 例如, 使用 例 8 \setcjkmainfont{simsun} \setcjkfallbackfamilyfont{\cjkrmdefault}{simsun-extb} 可以将 SimSun-ExtB 作为 SimSun 的备用字体 FallBack FallBack = {[ font features ]{ font name }} xecjk 在 font features 里增加了 FallBack 这个选项 用来在声明主字体的时候, 同时设置备用字体 例如, 上面的例子等价于 : 例 9 \setcjkmainfont[fallback=simsun-extb]{simsun} 如果 FallBack 的值为空, 将设置的是备用字体 例如, 例 10 \setcjkmainfont[fallback,autofakebold,scale=.97]{simsun-extb} 等价于 例 11 \setcjkfallbackfamilyfont{\cjkrmdefault}[autofakebold,scale=.97]{simsun-extb} \setcjkfallbackfamilyfont Updated: \setcjkfallbackfamilyfont { family } { {[ font features 1 ] { font name 1 }}, {[ font features 2 ] { font name 2 }},... }[ common font features ] 或 \setcjkfallbackfamilyfont { family } [ common font features ] { {[ font features 1 ] { font name 1 }}, {[ font features 2 ] { font name 2 }},... } \setcjkfallbackfamilyfont 还可以用于设置多层的备用字体 例如, 使用 例 12 \setcjkmainfont[autofakebold,autofakeslant]{kaiti_gb2312} \setcjkfallbackfamilyfont{\cjkrmdefault}[autofakeslant] { [BoldFont=SimHei]{SimSun}, [AutoFakeBold] {SimSun-ExtB} } 之后, 就设置了 SimSun 是 KaiTi_GB2312 的备用字体, 而 SimSun-ExtB 是 SimSun 的备用字体 若当前字体族缺字, 并没有备用字体, 则尝试使用 \CJKfamilydefault 的备用字体 XƎTEX 的字体名查找 由于在 fontspec 宏包文档中缺少关于如何查看 XƎTEX 可用字体名的说明, 这里略作说明

9 第 3 节用户手册 9 XƎTEX 通常使用 fontconfig 库查找和调用字体, 因此, 可以用 fc-list 命令显示可用的字体 在命令行 (Windows 的 命令提示符,Linux 的 Console) 下运行以下命令 : fc-list > fontlist.txt 可以将系统中所有安装的字体列表存入 fontlist.txt 文件中 ( 可能很长 ) fc-list 命令列出的信息很多, 而且在安装字体较多的 Windows 系统上的输出将非常庞大, 如其中可能包含 : Times New Roman:style=cursiva,kurzíva,kursiv,Πλάγια,Italic, Kursivoitu,Italique,Dőlt,Corsivo,Cursief,kursywa,Itálico,Курсив, İtalik,Poševno,nghiêng,Etzana Times New Roman:style=Negreta cursiva,tučné kurzíva,fed kursiv, Fett Kursiv,Έντονα Πλάγια,Bold Italic,Negrita Cursiva, Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,grassetto Corsivo, Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,negrito Itálico, Полужирный Курсив,Tučná kurzíva,fet Kursiv,Kalın İtalik, Krepko poševno,nghiêng đậm,lodi etzana Times New Roman:style=Negreta,tučné,fed,Fett,Έντονα,Bold,Negrita, Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiona,Negrito, Полужирный,Fet,Kalın,Krepko,đậm,Lodia Times New Roman:style=Normal,obyčejné,Standard,Κανονικά,Regular, Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno, thường,arrunta 宋体,SimSun:style=Regular 黑体,SimHei:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali, Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta 在 fontspec 或 xecjk 中使用的字体族名是上面列表中冒号前的部分 例如可以使用 例 13 \setmainfont{times New Roman} \setcjkmainfont{simsun} % 或者 \setcjkmainfont{ 宋体 } 来设置字体 为了方便起见,fc-list 命令也可以加上各种选项控制输出格式, 例如如果只要列出所有的中文字体的字体族名, 可以用命令 : fc-list -f "%{family}\n" :lang=zh > zhfont.txt 这样就把字体列表保存在文件 zhfont.txt 中 3 这样列出的字体列表就比较简明易用, 如 Windows 下预装的中文字体 : Arial Unicode MS FangSong, 仿宋 KaiTi, 楷体 Microsoft YaHei, 微软雅黑 MingLiU, 細明體 NSimSun, 新宋体 PMingLiU, 新細明體 SimHei, 黑体 SimSun, 宋体 要列出日文和韩文的字体, 可以把 :lang=zh 选项中的 zh 改成 ja 或 ko fontspec 和 xecjk 也可以使用字体的文件名访问字体 例如 Windows 下的宋体也可以使用命令 : \setcjkmainfont{simsun.ttc} 3 由于汉字编码原因,Windows 下总需要把字体列表输出的文件中防止乱码

10 第 3 节用户手册 10 来设置 设置字体文件名的相关选项和语法在 fontspec 宏包手册中叙述甚详, 这里不再赘述 有个别字体名不规范的中文字体,xeCJK 宏包可能无法正确地通过字体名访问, 那么也可以使用这种方式设置 3.3 CJK 分区字体设置 众所周知,CJK 文字数量极其庞大, 单一的字体不可能涵盖所有的 CJK 文字 xecjk 可以在同一 CJK 字体族下, 自动使用不同的字体输出 CJK 字符范围内不同区块里的文字 首先要声明 CJK 子分区 \xecjkdeclaresubcjkblock \xecjkdeclaresubcjkblock { block } { block range } \xecjkdeclaresubcjkblock * { block } { block range } 其中 block range 是逗号列表, 可以是 CJK 字符的 Unicode 范围, 也可以是单个字符的 Unicode 例如 例 14 { ` 中 -> ` 文, "3400 -> "4DBF, "5000 -> "7000, ` 汉, ` 字, "3500 } 的形式 需要注意的是, 这里设置的 block range 除非确实需要 ( 例如某些特殊字体使用了 Unicode 中的私人使用区的情况 ), 否则不要超出源代码中预设的 CJK 文字范围 使用 例 15 \xecjkdeclaresubcjkblock{spua}{ "E400 -> "E4DA, "E500 -> "E5E8, "E600 -> "E6CE } \xecjkdeclaresubcjkblock{ext-b}{ " > "2A6DF } 就声明了 SPUA 和 Ext-B 这两个个子分区 同时在 3.2 节介绍的 CJK 字体设置命令的 font features 里新建了 SPUA 和 Ext-B 这两个选项 新建的这两个选项的使用方法跟 3.2 介绍的 FallBack 类似 可以通过它们来设置字体 例如, 可以使用 例 16 \setcjkmainfont[spua=sunmanpua,ext-b=simsun-extb]{simsun} 设置文档的主字体是 SimSun,SPUA 分区的字体是 SunmanPUA, 而 Ext-B 分区的字体是 SimSun-ExtB \xecjkdeclaresubcjkblock 应该在声明所有的 CJK 字体族之前使用 如果有某个 CJK 字体族没有设置 block 选项, 将使用 \CJKfamilydefault 的 block 选项作为该 CJK 字体族的 block 选项 如果希望在使用某 CJK 字体族时, 不在 CJK 主分区与 block 之间切换字体, 可以使用 block =* 选项 带星号的命令除了设置 CJK 子分区以外, 还重置标点符号所属的字符类 \xecjkcancelsubcjkblock \xecjkrestoresubcjkblock \xecjkcancelsubcjkblock { block 1, block 2,... } \xecjkcancelsubcjkblock { block 1, block 2,... } 在文档中取消对 CJK 分区的声明 带星号的命令还重置标点符号所属的字符类 \xecjkrestoresubcjkblock { block 1, block 2,... } \xecjkrestoresubcjkblock * { block 1, block 2,... } 在文档中恢复对 CJK 分区的声明 带星号的命令还重置标点符号所属的字符类

11 第 3 节用户手册 设置 CJK 字符范围 \xecjkdeclarecharclass \xecjkresetcharclass \xecjkresetpunctclass \xecjkdeclarecharclass { class } { class range } \xecjkdeclarecharclass * { class } { class range } class range 的格式和 3.3 节的 block range 相同 class 的有效值见源代码 ( 第 5.4 节 ) xecjk 已经支持 Unicode 中所有 CJK 文字和标点 一般来说, 不要轻易改变字符类别 带星号的命令除了设置字符类别以外, 为了确保标点处理的正确性, 还重置标点符号所属的字符类 用于恢复 xecjk 对各个字符类别的初始化设置 用于重置标点符号所属的字符类 \normalspacedchars \normalspacedchars { char list } 在 char list 中出现的字符两端不自动添加空格, 初始设置是 / \ 和 - (U+002D) 3.5 标点符号的处理 xecjk 对标点符号的输出宽度的调整是通过调整其左边或右边的空白宽度来实现的 按照目前的处理方式, 对于位于左边的标点符号 ( 如左引号 ),xecjk 只能调整它左边的空白 ; 对于位于右边的标点符号 ( 如右引号 ),xecjk 只能调整它右边的空白 ; 对于居中的标点符号, 则调整其左右空白, 以保证其居中 对于标点符号的相关设置, 只能在导言区中进行 设置特定标点符号的宽度和间距 这里的设置可用于除 plain 以外的所有标点处理格式 \xecjksetwidth Updated: \xecjksetwidth { 标点列表 } { length } \xecjksetwidth * { 标点列表 } { length } 标点列表 可以是单个标点, 也可以是多个标点 例如, 例 17 \xecjksetwidth{?}{0.7em} 将设置句号和问号所占的宽度为 0.7em 带星号的命令, 设置标点符号出现在行首 / 尾时的宽度 \xecjksetkern \xecjksetkern { 前标点 } { 后标点 } { length } xecjk 会根据选定的标点处理格式自动调整相邻的前后两个 CJK 标点符号的空白宽度 如果需要对个别情况进行特殊调整, 可以使用这个命令 例如, \xecjksetkern{:}{ }{0.3em} 例 18 将设置冒号与左双引号之间的空白宽度为 0.3em 定义标点符号处理格式 \xecjkdeclarepunctstyle Updated: \xecjkdeclarepunctstyle { style } { options } 定义新的标点符号处理格式, 已经存在的同名格式将被覆盖 可以设置的选项将在下面介绍

12 第 3 节用户手册 12 \xecjkeditpunctstyle Updated: \xecjkeditpunctstyle { style } { options } 修改已有的标点符号处理格式 下面是可以设置的标点符号格式选项 其中左边一栏是选项名称, 中间是选项的输入值类型, 右边则是相关说明 某些选项之间是互斥的, 具有优先级关系 要使下一级的选项有效, 则需要先禁用上一级的设置 : 对于 boolean 类型的选项, 将其设置为 false, 对于 length 类型的选项, 将其设置为 \maxdimen, 而对于 real 类型的选项, 将其设置为 nan enabled-global-setting boolean 是否使用 \xecjksetup 的 PunctWidth PunctBoundWidth 选项和 \xecjksetwidth \xecjksetkern 的设置 默认值是 true fixed-punct-width length 设置单个标点符号的宽度 默认值是 \maxdimen fixed-punct-ratio real 设置单个标点符号的输出宽度与实际宽度的比例 默认值是 1.0 mixed-punct-width length 设置句末标点符号的宽度 其中句末标点符号通过 \xecjksetup 的 KaiMingPunct 来设置 默认值是与 fixed-punct-width 选项的值相同 mixed-punct-width real 设置句末标点符号的宽度比例 默认值是与 fixed-punct-ratio 选项的值相同 middle-punct-width length 设置居中标点符号的宽度 其中居中标点符号通过 \xecjksetup 的 MiddlePunct 来设置 默认值是与 fixed-punct-width 选项的值相同 middle-punct-width real 设置居中标点符号的宽度比例 默认值是与 fixed-punct-ratio 选项的值相同 以上三个选项设置的是标点的固定宽度或比例,xeCJK 会根据设定的选项计算标点符号左 / 右的空白宽度 下面的选项设置的是标点符号左 / 右的空白宽度或比例, 因此不同标点符号的宽度可能会不同 为了使下面的选项生效, 需要先禁用上面的相应选项 优先级自上而下 fixed-margin-width length 设置标点的左 / 右空白宽度 默认值是 \maxdimen fixed-margin-ratio real 设置标点的左 / 右空白宽度与字体中该标点的相应实际边界宽度的比例 默认值是 1.0 mixed-margin-width length 设置句末标点的左 / 右空白宽度 默认值是与 fixed-margin-width 的值相同 mixed-margin-ratio real 设置句末标点的左 / 右空白宽度的比例 默认值是与 fixed-margin-ratio 的值相同 middle-margin-width length 设置居中标点的两边空白宽度 默认值是与 fixed-margin-width 的值相同 middle-margin-ratio real 设置居中标点的两边空白宽度之和与两边实际两边边界宽度之和的比例 默认值是与 fixed-margin-ratio 的值相同 下面选项设置标点符号出现在行首或者行尾时的宽度或比例 bound-punct-width length 设置标点符号出现在行首 / 尾时的宽度 默认值是 \maxdimen bound-punct-ratio real 设置标点符号出现在行首 / 尾时的输出宽度与实际宽度的比例 默认值是 nan bound-margin-width length 设置标点符号出现在行首 / 尾时的左 / 右空白宽度 默认值是 \maxdimen bound-margin-ratio real 设置标点符号出现在行首 / 尾时的左 / 右空白宽度与相应实际边界宽度的比例 默认值是 0 enabled-hanging boolean 当以上选项的计算结果得到的宽度小于标点符号的实际边界宽度时, 是否允许标点符号悬挂出页面边界 默认值是 false add-min-bound-to-margin boolean 是否在以上计算结果的基础上再加上标点的左右实际边界宽度中的最小值 这个选项对居中的标点无效 默认值是 false optimize-margin boolean 使用以上设置空白宽度或比例的选项时, 最终输出的标点符号左 / 右的空白宽度可能大于原来的实际边界宽度 若此时本选项被设置为 true, 则使用原来的实际边界宽度 而使用 fixed-punct-width 选项计算得出的左 / 右宽度可能小于该标点的另一侧宽度, 若此时本选项被启用, 则使用该标点的另一侧宽度 默认值为 false

13 第 3 节用户手册 13 margin-minimum length 指定标点符号左 / 右的最小空白宽度 当经过以上选项设置的空白宽度小于这个选项的值时, 则使用这个选项的值 默认值是 0pt 下面的选项处理的是前后相邻的两个标点符号之间的空白宽度 这些选项是互斥的, 优先级自上而下 enabled-kerning boolean 是否调整前后相邻的两个标点之间的空白宽度 如果设置为 false, 则每个标点都按原来的输出宽度输出 默认值是 true min-bound-to-kerning boolean 是否使用当前字体中前面标点实际左右边界的最小值与后面标点实际左右边界的最小值中的最大值作为两个标点之间的空白宽度 默认值是 false kerning-total-width length 设置两个标点的总共宽度 此时 xecjk 会自动计算两个标点之间的空白宽度 默认值是 \maxdimen kerning-total-ratio real 设置两个标点的总共输出宽度与实际宽度的比例 默认值是 0.75 same-align-margin length 前后两个标点位于同侧时, 它们之间的空白宽度 默认值是 \maxdimen same-align-ratio real 前后两个标点位于同侧时, 它们之间的空白宽度与实际输出宽度的比例 默认值是 nan different-align-margin length 前后两个标点位于异侧时, 它们之间的空白宽度 默认值是 \maxdimen different-align-ratio real 前后两个标点位于异侧时, 它们之间的空白宽度与实际输出宽度的比例 默认值是 nan kerning-margin-width length 设置前后两个标点之间的空白宽度 默认值是 \maxdimen kerning-margin-ratio real 设置前后两个标点之间的空白宽度与实际输出空白的比例 默认值是 1.0 optimize-kerning boolean 使用以上选项计算出两个标点之间的空白宽度可能小于通过 min-bound-to-kerning 选项得出的结果 当出现这一情况时, 若此选项被设置为 true, 则使用该选项的空白宽度 默认值为 false kerning-margin-minimum length 指定两个标点之间的最小空白宽度 当经过以上选项设置的空白宽度小于这个选项的值时, 则使用这个选项的值 默认值是 0pt 事实上,xeCJK 的默认设置就相当于中文全角 (quanjiao) 格式 可以使用上面说明的选项定义新的标点处理格式 例如, 使用 \xecjkdeclarepunctstyle { mine } { fixed-punct-ratio = nan, fixed-margin-width = 0 pt, mixed-margin-width = \maxdimen, mixed-margin-ratio = 0.5, middle-margin-width = \maxdimen, middle-margin-ratio = 0.5, add-min-bound-to-margin = true, bound-punct-width = 0 em, enabled-hanging = true, min-bound-to-kerning = true, kerning-margin-minimum = 0.1 em } 例 19 就定义了一个名为 mine 的标点处理格式 可以在导言区通过 \xecjksetup{punctstyle=mine} 在文档中使用这个格式 它的意义是 : 使用标点符号的实际左右边界中的最小值作为其左 / 右空白的宽度, 对于句末标点和居中标点, 再加上实际边界空白的一半 ; 当标点出现在行首或行尾时宽度为零, 允许悬挂出页面边界 ; 使用相邻两个标点的实际边界中的较小值作为它们之间的空白宽度, 并且最小的空白宽度是 0.1em 再例如, 使用

14 第 3 节用户手册 14 例 20 \xecjkeditpunctstyle { hangmobanjiao } { enabled-global-setting = false } 将使得 \xecjksetkern 等的设置对 hangmobanjiao 这一格式无效 \CJKunderline \CJKunderdblline \CJKunderwave \CJKsout \CJKxout Updated: xecjkfntef 用法说明 xecjk 包含有一个子宏包 xecjkfntef, 可以用它来实现. 汉. 字. 加. 点和可断行的下划线等 它是 CJKfntef 宏包在 XƎLATEX 下的替换版本, 基本用法完全一致 xecjkfntef 基于 ulem 宏包, 除了兼容 ulem 定义的一些命令外, 还进行了一些扩充 : \CJKunderline [*] [-] [ 选项 ] { 内容 } 虚室生白, 吉祥止止虚室生白, 吉祥止止虚室生白, 吉祥止止 虚室生白, 吉祥止止 /// 虚 //// 室 /// 生 //// 白,/// 吉 //// 祥 /// 止 //// 止 1 \CJKunderline{ 虚室生白, 吉祥止止 }\\ 2 \CJKunderdblline{ 虚室生白, 吉祥止止 }\\ 3 \CJKunderwave{ 虚室生白, 吉祥止止 }\\ 4 \CJKsout{ 虚室生白, 吉祥止止 }\\ 5 \CJKxout{ 虚室生白, 吉祥止止 } 1 \CJKunderline-{ 南朝 }\CJKunderline-{ 梁 }\CJKunderline-{ 劉勰 }% 2 \CJKunderwave-{ 文心雕龍 }\CJKunderwave-{ 養氣 }\\ 3 \CJKunderline*[thickness=1pt, hidden=true]{ 瞻彼阕者, 虚室生白, 吉祥止止 } 南朝梁劉勰文心雕龍養氣 \CJKunderdot Updated: \CJKunderdot [ 选项 ] { 内容 } 在汉字下加点, 可以和上述下划线命令嵌套使用 例如 虚室生白, 吉. 祥止止. 虚. 室. 生. 白., 吉. 祥. 止. 止. 1 \CJKunderline{ 虚室生白,\CJKunderdot{ 吉祥 } 止止 }\\ 2 \CJKunderdot{ 虚室生白,\CJKunderline{ 吉祥 } 止止 } 对上述六种对象,xeCJKfntef 提供了一些选项, 设置点或线的位置和颜色 可以用 \xecjksetup 预先统一设置它们, 也可以在使用时特别设置 skip New: subtract hidden \xecjksetup { underline/skip = true false } \xecjksetup { underline = { skip = true false,... } } 默认情况下, 下划线会自动跳过中文标点符号, 可以设置本选项为 false, 禁用这一功能 相应下划线命令后加上 * 号, 具有相同的效果 设置本选项为 true, 使得下划线的首尾减少一定距离, 避免前后的下划线连在一起, 适用于古籍标点整理中的专名号和书名号 在相应下划线命令后加上 - 号, 具有相同的效果 设置本选项为 true, 将隐藏文本内容, 只画下划线 format \xecjksetup { underline/format = \color{red} } \xecjksetup { underwave = { format = \color{red},... } } 设置线或点的格式, 比如颜色 textformat New: 设置下划线或点的正文的格式 例如 : 1 \CJKunderline[textformat=\color{red}]{ 虚室生白, 吉祥止止 }\\ 2 \CJKunderdot[textformat=\bfseries, format=\color{blue}]{ 虚室生白, 吉祥止止 } 虚室生白, 吉祥止止. 虚. 室. 生. 白,. 吉. 祥. 止. 止

15 第 3 节用户手册 15 symbol 设置 \CJKunderwave 或 \CJKunderdot 的符号 例如, 波浪线 \CJKunderwave 的符号不会随字号而变化, 在小字号下不好看 我们可以将它改为随字号而变化大小 : 瞻 彼 阕 者, 虚室生 白, 吉祥止止 1 % \usepackage{fix-cm} 2 \xecjksetup{% 3 underwave/symbol= 4 \fontsize{0.5em}{0pt}% 5 \fontencoding{u}\fontfamily{lasy}\selectfont 6 \char 58\relax} 7 \footnotesize 8 \CJKunderwave{ 瞻彼阕者, 虚室生白, 吉祥止止 } thickness depth boxdepth sep gap height 设置 \CJKunderline \CJKunderdblline 和 \CJKsout 的线的厚度 初始值是 \ULthickness 设置线或点的深度 ( 基线到线或点的顶部的距离 ) 初始值都是 0.2em \CJKunderdot 可能会影响到行距, 可以设置本选项进行调整 如果不希望 \CJKunderdot 影响行距, 可以将本选项设置为 0pt 设置 \CJKunderdot 与 \CJKunderline \CJKunderdblline 或 \CJKunderwave 嵌套使用时, 点与线或者线与点的距离 设置 \CJKunderdblline 的两条线之间的距离 初始值是 1.1pt 设置删除线 \CJKsout 的高度 ( 线的中心到基线的距离 ) 初始值是 0.35em 例如, 我们可以设置 \CJKsout 的厚度和颜色, 让它具有类似高亮的效果 : 1 \CJKsout*[thickness=2.5ex, format=\color{yellow}]{ 瞻彼阕者, 虚室生白, 吉祥止止 } 瞻彼阕者, 虚室生白, 吉祥止止 xecjkfntef 还提供给了自定义下划线和符号的 \CJKunderanyline 和 \CJKunderanysymbol \CJKunderanyline Updated: \CJKunderanyline [*] [-] [ 选项 ] { 深度 } { 下划内容 } { 文本内容 } xecjkfntef 先将 下划内容 放进一个盒子 (\xecjkfntefbox) 里, 然后向下移动 深度 给定的距离, 再用于填充 可用的 选项 是 textformat skip hidden subtract sep 和 boxdepth 选项 sep 和 boxdepth 的初始值是空, 表示禁用该选项的功能 可以在 \xecjksetup 中通过对象 ulem 来设置 例如, 高亮效果也可以如下实现 : 1 \CJKunderanyline*{0.5ex}{\color{yellow}\rule{2pt}{2.5ex}}{ 虚室生白, 吉祥止止 } 虚室生白, 吉祥止止 \CJKunderanysymbol Updated: \CJKunderanysymbol [ 选项 ] { 深度 } { 符号 } { 文本内容 } xecjkfntef 将 符号 放进一个盒子 (\xecjkfntefbox) 里 深度 参数用于设置盒子顶部的深度 ( 基线到盒子顶部的距离 ) 可用的 选项 是 textformat sep 和 boxdepth, 意义与 \CJKunderdot 的相同 例如, 给汉字加三角形, 可以如下设置 : 1 \CJKunderanysymbol[sep=0.1em]{0.2em}{\tiny$\triangle$} 2 { 瞻彼阕者, 虚室生白,\CJKunderline{ 吉祥止止 }}

16 第 3 节用户手册 16 瞻彼阕者, 虚室生白, 吉祥止止 \xecjkfntefon Updated: \xecjkfntefon [*] [-] [ 选项 ] 功能与用法 ulem 宏包的 \ULon 相同, 扩展了可选参数符号 * 和 -, 可用的 选项 是 textformat skip hidden 和 subtract 这四个选项对 ulem 宏包定义的 \uline 等命令也有效, 需要在 \xecjksetup 中通过对象 ulem 来设置 例如 1 \xecjksetup{ulem={textformat=\bfseries\color{red}, skip=true}} 2 \uline{ 虚室生白, 吉祥止止 } 虚室生白, 吉祥止止 此外,xeCJKfntef 还提供了指定宽度, 让汉字分散对齐的的环境 CJKfilltwosides 和 CJKfilltwosides* CJKfilltwosides Updated: \begin{cjkfilltwosides} [ 位置 ] { 宽度 } 文本内容 \\ 文本内容 \end{cjkfilltwosides} 环境中的内容被放入垂直盒子中, 可选参数 位置 指定盒子的基线位置 可以使用 t( 顶部 ) c( 居中 ) 和 b( 底部 ), 默认是 c 宽度 参数指定盒子的宽度 CJKfilltwosides* 环境与 CJKfilltwosides 的区别是, 当 宽度 不大于零或者不大于盒子的自然宽度时, 就取盒子的自然宽度 例如 瞻彼阕者, 虚室生白, 吉祥止止 瞻彼阕者, 虚室生白, 吉祥止止 1 \begin{cjkfilltwosides}{.8\linewidth} 2 瞻彼阕者,\\ 3 虚室生白, 吉祥止止 4 \end{cjkfilltwosides} 1 \begin{cjkfilltwosides*}{0pt} 2 瞻彼阕者,\\ 3 虚室生白, 吉祥止止 4 \end{cjkfilltwosides*} 3.7 其他 \xecjkverbaddon \xecjkoffverbaddon Updated: \xecjknobreak New: 调整文字间距以便于让 CJK 字符占的宽度等于西文等宽字体中两个空格的宽度 如果这两个空格的宽度小于当前 CJK 正常文字的宽度, 将对 CJK 字体进行适当地缩小 这有利于等宽字体的代码对齐等情形 需要注意的是,\xeCJKVerbAddon 对 xecjk 的内部进行了比较大的修改, 使用它之后, 将禁止在 CJK 字符类之间自动换行, 这与西文在抄录环境中的情况是一致的 所以不应该单独使用, 应该放在分组里限制其作用域, 否则是无效的 当然它可以和其它关于代码抄录的宏包配合使用 例如, 可以使用于 fancyvrb 宏包的 formatcom 选项 此时设置的西文字体应该确实是等宽的以保证对齐 若西文等宽字体发生变动 ( 包括字体大小 ), 则需要在其后面使用 \xecjkverbaddon, 重新计算间距的宽度 \xecjkoffverbaddon 用于在使用 \xecjkverbaddon 的环境中局部取消它的作用 由于 listings 宏包有自己的代码对齐机制, 所以 \xecjkverbaddon 在由 listings 定义的代码环境中无效 汉字 \xecjknobreak\footnote{ 脚注 } \xecjknobreak 用在全角标点符号后面, 目的是确保不能在此处断行 如果已经启用了前面介绍的 CheckFullRight 选项, 则不需要再用此命令

17 第 4 节已知问题和兼容性 17 \xecjkshipouthook New: xecjk 在正文中的一些特殊设置 ( 汉字下加点 在 verbatim 或 lstlisting 环境中分页 ) 可能会影响到 TEX 的输出例行程序 (output routine) 中的内容 ( 比如页眉和页脚 ) \xecjkshipouthook 用于恢复正文中的普通设置 xecjk 已经处理了页眉和页脚的情况, 其它的就需要根据情况自行调用 比如若使用 eso-pic 或者 atbegshi 实现文字水印, 并且正文中使用了以上所列的特殊形式, 就需要在命令 \AtBeginShipout 的参数的最前面使用 \xecjkshipouthook 第 4 节 已知问题和兼容性 XƎTEX 在配置文件 unicode-letters.tex 中将所有 CJK 表意文字的 \catcode 设置为 11 因此汉字可以直接用作控制序列的名字, 但是当汉字出现在控制序列后面的时候, 要用空格分隔开, 否则就会出现! Undefined control sequence. 的错误 xecjk 使用并重新定义了 CJK 宏包的部分宏命令, 如 \CJKfamily \CJKsymbol 和 \CJKglue 等 需要指出,xeCJK 不需要 CJK 的支持, 并且 xecjk 自动禁止在它之后载入 CJK 宏包 可以在 xecjk 之后载入 CJKnumb 宏包, 实现数字的中文化, 也可以用功能更完善的 zhnumber 宏包 xecjk 进行了一些处理, 使得在使用 XƎTEX 时 listings 宏包可以支持 Unicode, 因此在 listings 定义的代码环境中可以直接使用中文, 不再需要通过 escapechar 新版本 (3.x) 的 xecjk 完全使用 LATEX3 的语法来编写 LATEX3 放弃了 \outer 宏的概念, 因此相关工具在遇到 \outer 宏时可能会存在问题 按照目前 xecjk 的实现方式, 在 CJK 文字后面遇到 \outer 宏时会出现类似! Forbidden control sequence found while scanning use of \use_i:nn 的错误 目前已知的有 cprotect 宏包提供的 \cprotect 它的定义是 \outer\long\def\cprotect{\icprotect} 因此, 这时可以暂时用 \icprotect 代替 \cprotect 事实上, 当 cprotect 被引入时,xeCJK 将使用 \let\cprotect\icprotect 来取消 \cprotect 的外部宏限制 但由于 \cprotect 的特殊性, 应该只在外部使用它, 即不要让它出现在任何宏的参数中 其它 \outer 宏的情况, 可以在它前面加上 \relax 来回避上面的错误 xecjk 依赖 XƎTEX 的 \XeTeXinterchartoks 机制, 与使用相同机制的宏包 ( 例如 polyglossia 和 xesearch) 可能会存在大小不一的冲突 xecjk 虽然为此作了一些处理, 但与它们共同使用时应该小心 第 5 节 xecjk 代码实现 1 *package 5.1 运行环境检查 xecjk 必须使用 XƎTEX 引擎的支持 3 \msg_new:nnn { xecjk } { Require-XeTeX } 4 { 5 The~xeCJK~package~requires~XeTeX~to~function.\\\\ 6 You~must~change~your~typesetting~engine~to~"xelatex" \\

18 第 5 节 xecjk 代码实现 18 7 instead~of~plain~"latex"~or~"pdflatex"~or~"lualatex".\\ 8 Loading~xeCJK~will~abort! 9 } 10 \sys_if_engine_xetex:f { \msg_critical:nn { xecjk } { Require-XeTeX } } 应该使用较新版本的 expl3 宏包 11 \msg_new:nnn { xecjk } { l3-too-old } 12 { 13 Support~package~`#1'~too~old. \\\\ 14 Please~update~an~up~to~date~version~of~the~bundles\\\\ 15 `l3kernel'~and~`l3packages'\\\\ 16 using~your~tex~package~manager~or~from~ctan.\\ 17 \str_if_eq:nnt {#1} { expl3 } { Loading~xeCJK~will~abort! } 18 } 19 \@ifpackagelater { expl3 } { 2017/12/16 } { } 20 { \msg_critical:nnn { xecjk } { l3-too-old } { expl3 } } \xecjk_if_package_loaded_p:n \xecjk_if_package_loaded:ntf 判断宏包是否被引入, 可用于文档正文中 21 \prg_new_conditional:npnn \xecjk_if_package_loaded:n #1 { p, T, F, TF } 22 { 23 \tl_if_exist:ctf { ver@ #1. \c xecjk_package_ext_tl } 24 { \prg_return_true: } { \prg_return_false: } 25 } 26 \tl_const:nx \c xecjk_package_ext_tl { \@pkgextension } 下面这些 CJK 系列宏包不应该被使用 27 \msg_new:nnn { xecjk } { incompatible-package } 28 { 29 The~`#1'~package~and~xeCJK~are~incompatible.\\\\ 30 Please~do~not~use~it. 31 } 32 \msg_new:nnn { xecjk } { after-package } 33 { 34 The~`#1'~package~and~xeCJK~are~incompatible.\\\\ 35 Please~load~it~after~xeCJK. 36 } 37 \clist_map_inline:nn { CJKfntef, CJKnumb } 38 { 39 \xecjk_if_package_loaded:nt {#1} 40 { \msg_error:nnn { xecjk } { after-package } {#1} } 41 } 42 \clist_map_inline:nn { CJKulem, CJKvert, CJKpunct, CJKutf8, CJK } 43 { 44 \xecjk_if_package_loaded:ntf {#1} 45 { \msg_error:nnn { xecjk } { incompatible-package } {#1} } 46 { \tl_const:cn { ver@ #1. \c xecjk_package_ext_tl } { 9999/99/99 } } 47 } 以下日期以前的 xtemplate 宏包关于 \KeyValue 的 Bug 会影响到后面标点符号的处理 48 \RequirePackage { xtemplate } 49 \@ifpackagelater { xtemplate } { 2012/11/10 } { } 50 { \msg_error:nnn { xecjk } { l3-too-old } { xtemplate } } 51 \RequirePackage { xparse, l3keys2e } 5.2 内部工具 分配临时变量 52 \tl_new:n \l xecjk_tmp_tl 53 \int_new:n \l xecjk_tmp_int 54 \box_new:n \l xecjk_tmp_box 55 \dim_new:n \l xecjk_tmp_dim 56 \bool_new:n \l xecjk_tmp_bool 57 \skip_new:n \l xecjk_tmp_skip 58 \clist_new:n \l xecjk_tmp_clist

19 第 5 节 xecjk 代码实现 19 \ xecjk_msg_new:nn \ xecjk_error:n \ xecjk_error:nx \ xecjk_warning:nx \ xecjk_info:nxx \xecjk_allow_break: \xecjk_no_break: \ xecjk_at_end_preamble:n \ xecjk_after_preamble:n \ xecjk_after_end_preamble:n 各种信息函数的缩略形式 59 \cs_new_protected_nopar:npn \ xecjk_msg_new:nn { \msg_new:nnn { xecjk } } 60 \cs_new_protected_nopar:npn \ xecjk_msg_new:nnn { \msg_new:nnnn { xecjk } } 61 \cs_new_protected_nopar:npn \ xecjk_error:n { \msg_error:nn { xecjk } } 62 \cs_new_protected_nopar:npn \ xecjk_error:nx { \msg_error:nnx { xecjk } } 63 \cs_new_protected_nopar:npn \ xecjk_warning:n { \msg_warning:nn { xecjk } } 64 \cs_new_protected_nopar:npn \ xecjk_warning:nx { \msg_warning:nnx { xecjk } } 65 \cs_new_protected_nopar:npn \ xecjk_warning:nxx { \msg_warning:nnxx { xecjk } } 66 \cs_new_protected_nopar:npn \ xecjk_warning:nxxx { \msg_warning:nnxxx { xecjk } } 67 \cs_new_protected_nopar:npn \ xecjk_info:nxx { \msg_info:nnxx { xecjk } } 68 \cs_new_protected_nopar:npn \xecjk_allow_break: 69 { \tex_penalty:d \c_zero } 70 \cs_new_protected_nopar:npn \xecjk_no_break: 71 { \tex_penalty:d \c_ten_thousand } 在 \document 前后加上各种钩子 72 \tl_new:n \g xecjk_at_end_preamble_hook_tl 73 \tl_new:n \g xecjk_after_preamble_hook_tl 74 \tl_new:n \g xecjk_after_end_preamble_hook_tl 75 \cs_new_protected:npn \ xecjk_at_end_preamble:n #1 76 { \tl_gput_right:nn \g xecjk_at_end_preamble_hook_tl {#1} } 77 \cs_new_protected:npn \ xecjk_after_preamble:n #1 78 { \tl_gput_right:nn \g xecjk_after_preamble_hook_tl {#1} } 79 \cs_new_protected:npn \ xecjk_after_end_preamble:n #1 80 { \tl_gput_right:nn \g xecjk_after_end_preamble_hook_tl {#1} } 81 \xecjk_if_package_loaded:ntf { etoolbox } 82 { 83 \AtEndPreamble { \g xecjk_at_end_preamble_hook_tl } 84 \AfterPreamble { \g xecjk_after_preamble_hook_tl } 85 \AfterEndPreamble { \g xecjk_after_end_preamble_hook_tl } 86 } 87 { 88 \AtBeginDocument { \g xecjk_after_preamble_hook_tl } 89 \cs_new_protected_nopar:npn \xecjk@document@left@hook 90 { \group_end: \g xecjk_at_end_preamble_hook_tl \group_begin: } 91 \cs_new_protected_nopar:npn \xecjk@document@right@hook 92 { \scan_stop: \g xecjk_after_end_preamble_hook_tl \tex_ignorespaces:d } 93 \cs_gset_nopar:npx \document 94 { 95 \xecjk@document@left@hook 96 \exp_not:o { \document } 97 \xecjk@document@right@hook 98 } 99 } \xecjkshipouthook 在 \shipout 盒子里加钩子, 可以影响到页眉页脚 \AtBeginDvi 将参数保存在盒子中, 而 atbegshi 的 \AtBeginShipout 在 \shipout 盒子构建好之后才起作用, 所以它们都影响不到页眉页脚 我们通过往 \@begindvi 里加入钩子来完成 注意, 第一次使用 \@begindvi 之后, 它会将自身定义为 \@empty 100 \ xecjk_after_preamble:n 101 { \tl_put_right:nn \@begindvi { \xecjk@first@begindvi } } 102 \cs_new_protected_nopar:npn \xecjk@first@begindvi 103 { 104 \xecjkshipouthook 105 \cs_if_exist:ntf \@begindvi 106 { \tl_gput_right:nn } 107 { \tl_const:nn } 108 \@begindvi { \xecjkshipouthook } 109 } 110 \NewDocumentCommand \xecjkshipouthook { } 111 { 112 \bool_if:nf \l xecjk_shipout_hook_bool 113 {

20 第 5 节 xecjk 代码实现 \bool_set_true:n \l xecjk_shipout_hook_bool 115 \tl_use:n \l xecjk_shipout_hook_tl 116 } 117 } \xecjk_add_to_shipout:n \xecjk_tl_remove_outer_braces:n \xecjk_tl_remove_outer_braces:n \xecjk_cs_clear:n \xecjk_cs_gclear:n \xecjk_swap_cs:nn \xecjk_font_gset_to_current:c \xecjk_glyph_if_exist_p:n \xecjk_glyph_if_exist:ntf 往 \shipout 盒子中加入钩子 118 \cs_new_protected:npn \xecjk_add_to_shipout:n 119 { \tl_put_right:nn \l xecjk_shipout_hook_tl } 120 \tl_new:n \l xecjk_shipout_hook_tl 121 \bool_new:n \l xecjk_shipout_hook_bool 去掉 #1 外层的分组括号 122 \cs_new_protected_nopar:npn \xecjk_tl_remove_outer_braces:n #1 123 { \tl_set:nx #1 { \exp_args:no \xecjk_tl_remove_outer_braces:n {#1} } } 124 \cs_new:npn \xecjk_tl_remove_outer_braces:n #1 125 { 126 \exp_last_unbraced:nf 127 \ xecjk_tl_remove_outer_braces:w { \tl_trim_spaces:n {#1} } \s stop 128 } 129 \cs_new:npn \ xecjk_tl_remove_outer_braces:w #1 \s stop 130 { 131 \tl_if_single:ntf {#1} 132 { 133 \tl_if_head_is_n_type:ntf {#1} 134 { \tl_trim_spaces:n } 135 { \xecjk_tl_remove_outer_braces:n } 136 } 137 { \tl_trim_spaces:n } 138 {#1} 139 } 让控制序列的意义为空 140 \cs_new_protected:npn \xecjk_cs_clear:n #1 141 { \cs_set_eq:nn #1 \prg_do_nothing: } 142 \cs_new_protected:npn \xecjk_cs_gclear:n #1 143 { \cs_gset_eq:nn #1 \prg_do_nothing: } 交换 #1 和 #2 的意义 144 \cs_new_protected:npn \xecjk_swap_cs:nn #1#2 145 { 146 \cs_set_eq:nn \ xecjk_swap_cs_aux:w #1 147 \cs_set_eq:nn #1 #2 148 \cs_set_eq:nn #2 \ xecjk_swap_cs_aux:w 149 \cs_undefine:n \ xecjk_swap_cs_aux:w 150 } #1 是控制序列的名字, 令它等于当前字体命令 151 \cs_new_protected_nopar:npn \xecjk_font_gset_to_current:c #1 152 { 153 \exp_after:wn \cs_gset_eq:nn 154 \cs:w #1 \exp_after:wn \cs_end: \tex_the:d \tex_font:d 155 } 判断当前字体中是否含有字符 #1 fontspec 中的类似函数在判断为真的时候, 会留有一个 \scan_stop:, 造成不必要的边界, 同时也不完全可展 因此, 我们重新定义它 156 \prg_new_conditional:npnn \xecjk_glyph_if_exist:n #1 { p, T, F, TF } 157 { 158 \etex_iffontchar:d \tex_font:d `#1 \exp_stop_f: 159 \prg_return_true: \else: \prg_return_false: \fi: 160 }

21 第 5 节 xecjk 代码实现 21 \c_xecjk_space_skip_tl \xecjk_glue_to_skip:nn 当前字体状态下, 一个字间空格产生的 glue 的长度, 包括伸展和收缩部分 161 \tl_const:nn \c_xecjk_space_skip_tl 162 { 163 \int_compare:nnntf \g xecjk_space_factor_int = \c_one_thousand 164 { 165 \skip_if_eq:nntf \tex_spaceskip:d \c_zero_skip 166 { 167 \tex_fontdimen:d \c_two \tex_font:d 168 plus \tex_fontdimen:d \c_three \tex_font:d 169 minus \tex_fontdimen:d \c_four \tex_font:d 170 } 171 { \tex_spaceskip:d } 172 } 173 { 174 \skip_if_eq:nntf \tex_spaceskip:d \c_zero_skip 175 { 176 \int_compare:nnntf \g xecjk_space_factor_int < { 2000 } 177 { 178 \ xecjk_space_skip_scale:nnn 179 { \tex_fontdimen:d \c_two \tex_font:d } 180 } 181 { 182 \skip_if_eq:nntf \tex_xspaceskip:d \c_zero_skip 183 { 184 \ xecjk_space_skip_scale:nnn 185 { 186 \tex_fontdimen:d \c_two \tex_font:d \tex_fontdimen:d \c_seven \tex_font:d 188 } 189 } 190 { \tex_xspaceskip:d \use_none:nn } 191 } 192 { \tex_fontdimen:d \c_three \tex_font:d } 193 { \tex_fontdimen:d \c_four \tex_font:d } 194 } 195 { 196 \int_compare:nnntf \g xecjk_space_factor_int < { 2000 } 197 { \ xecjk_space_skip_scale:nnn { \tex_spaceskip:d } } 198 { 199 \skip_if_eq:nntf \tex_xspaceskip:d \c_zero_skip 200 { 201 \ xecjk_space_skip_scale:nnn 202 { 203 \tex_spaceskip:d \tex_fontdimen:d \c_seven \tex_font:d 205 } 206 } 207 { \tex_xspaceskip:d \use_none:nn } 208 } 209 { \etex_gluestretch:d \tex_spaceskip:d } 210 { \etex_glueshrink:d \tex_spaceskip:d } 211 } 212 } 213 } 214 \cs_new_nopar:npn \ xecjk_space_skip_scale:nnn #1#2#3 215 { 216 \dim_eval:n {#1} 217 plus \fp_eval:n { \g xecjk_space_factor_int / 1000 } #2 218 minus 219 \int_div_truncate:nn 220 { 1000 * \tex_number:d #3 } { \g xecjk_space_factor_int } sp 221 } 222 \int_new:n \g xecjk_space_factor_int 223 \int_gset_eq:nn \g xecjk_space_factor_int \c_one_thousand 取得一个 glue 的长度, 包括伸展和收缩部分 如果参数不是 glue, 则取其宽度 224 \cs_new_protected_nopar:npn \xecjk_glue_to_skip:nn #1#2

22 第 5 节 xecjk 代码实现 { 226 \group_begin: 227 \hbox_set:nw \l xecjk_tmp_box #1 \scan_stop: 228 \int_compare:nnntf \etex_lastnodetype:d = \c_eleven 229 { 230 \exp_after:wn \hbox_set_end: \exp_after:wn \group_end: \exp_after:wn 231 \skip_set:nn \exp_after:wn #2 \exp_after:wn 232 { \skip_use:n \tex_lastskip:d } 233 } 234 { 235 \hbox_set_end: \exp_after:wn \group_end: \exp_after:wn 236 \skip_set:nn \exp_after:wn #2 \exp_after:wn 237 { \dim_use:n \box_wd:n \l xecjk_tmp_box } 238 } 239 } \xecjk_if_blank_x_p:n \xecjk_if_blank_x:ntf \xecjk_int_until_do:nn \ xecjk_int_until_do:wn \xecjk_peek_catcode_ignore_spaces:ntf 判断是否为空或者仅含一个空格 240 \prg_new_conditional:npnn \xecjk_if_blank_x:n #1 { p, T, F, TF } 241 { 242 \if_case:w \pdftex_strcmp:d { } {#1} \exp_stop_f: 243 \prg_return_true: 244 \else: 245 \if_case:w \pdftex_strcmp:d { ~ } {#1} \exp_stop_f: 246 \prg_return_true: \else: \prg_return_false: \fi: 247 \fi: 248 } 由于定义较为简单, 可以比 \int_until_do:nnnn 稍微快一点点 249 \cs_new_protected:npn \xecjk_int_until_do:nn #1#2 250 { 251 \ xecjk_int_until_do:wn \use_none:n 252 { \reverse_if:n \if_int_compare:w #1#2 } 253 } 254 \cs_new_protected:npn \ xecjk_int_until_do:wn \use_none:n #1 255 { #1 \exp_after:wn \ xecjk_int_until_do:wn \fi: \use_none:n {#1} } 256 \int_new:n \l xecjk_begin_int 257 \int_new:n \l xecjk_end_int 我们在里面设置了一个变量 \l xecjk_peek_ignore_spaces_bool 用于标识后面的空格是否被省略掉了 258 \cs_new_protected:npn \xecjk_peek_catcode_ignore_spaces:ntf #1#2#3 259 { 260 \cs_set_eq:nn \l xecjk_peek_search_token #1 \scan_stop: 261 \tl_set:nn \ xecjk_peek_catcode_true:w { \group_align_safe_end: #2 } 262 \tl_set:nn \ xecjk_peek_catcode_false:w { \group_align_safe_end: #3 } 263 \bool_set_false:n \l xecjk_peek_ignore_spaces_bool 264 \group_align_safe_begin: 265 \peek_after:nw \ xecjk_peek_catcode_ignore_spaces_branches:w 266 } 267 \cs_new_protected_nopar:npn \ xecjk_peek_catcode_ignore_spaces_branches:w 268 { 269 \if_meaning:w \l_peek_token \c_space_token 270 \bool_set_true:n \l xecjk_peek_ignore_spaces_bool 271 \exp_after:wn \peek_after:nw 272 \exp_after:wn \ xecjk_peek_catcode_ignore_spaces_branches:w 273 \tex_romannumeral:d \else: 275 \if_catcode:w 276 \exp_not:n \l_peek_token \exp_not:n \l xecjk_peek_search_token 277 \exp_after:wn \exp_after:wn 278 \exp_after:wn \ xecjk_peek_catcode_true:w 279 \else: 280 \exp_after:wn \exp_after:wn 281 \exp_after:wn \ xecjk_peek_catcode_false:w 282 \fi:

23 第 5 节 xecjk 代码实现 \fi: 284 } 285 \cs_new_eq:nn \l xecjk_peek_search_token? 286 \tl_new:n \ xecjk_peek_catcode_true:w 287 \tl_new:n \ xecjk_peek_catcode_false:w 288 \bool_new:n \l xecjk_peek_ignore_spaces_bool \xecjk_peek_after_ignore_spaces:nw \xecjk_token_value_class:n \xecjk_token_value_charcode:n 与 \@ifnextchar 和 \futurenonspacelet 类似, 会省略掉后面的空格 289 \cs_new_protected:npn \xecjk_peek_after_ignore_spaces:nw #1 290 { 291 \tl_set:nn \ xecjk_peek_after_do:w { \group_align_safe_end: #1 } 292 \group_align_safe_begin: 293 \peek_after:nw \ xecjk_peek_ignore_spaces_branches:w 294 } 295 \cs_new_protected_nopar:npn \ xecjk_peek_ignore_spaces_branches:w 296 { 297 \if_meaning:w \l_peek_token \c_space_token 298 \exp_after:wn \peek_after:nw 299 \exp_after:wn \ xecjk_peek_ignore_spaces_branches:w 300 \tex_romannumeral:d \else: 302 \exp_after:wn \ xecjk_peek_after_do:w 303 \fi: 304 } 用于取得记号 #1 所在的 XƎTEX 字符类 #1 应为 \catcode 为 11 或 12 的显性或隐性记号 305 \cs_new_nopar:npn \xecjk_token_value_class:n #1 306 { \xetex_charclass:d \xecjk_token_value_charcode:n #1 } 当记号 #1 的 charcode 大于等于 0x10000 时,XƎTEX 版以前的 \meaning 的返回结果比较特殊 4, 需要特别处理 版以后的 XƎTEX 的 \meaning 对于超出 BMP 的字符, 会返回两个字符, 分别对应于其 UTF-16 编码的首尾代理 5 这一 Bug 在 TeX Live 2015 的 版中得到修复 \cs_new_nopar:npn \xecjk_token_value_charcode:n #1 308 { \exp_after:wn \ xecjk_get_charcode:w \token_to_meaning:n #1 \q_stop } 309 \group_begin: 310 \cs_set:npn \ xecjk_tmp:w #1 ~ #2 ~ #3#4#5 \q_stop 311 { 312 \tl_if_empty:ntf { #4#5 } 313 { 314 \cs_new_nopar:npn \ xecjk_get_charcode:w ##1 ~ ##2 ~ ##3 \q_stop 315 { \int_eval:n { `##3 } } 316 } 317 { 318 \tl_if_empty:ntf {#5} 319 { 320 \cs_new_nopar:npn \ xecjk_get_charcode:w ##1 ~ ##2 ~ ##3##4 \q_stop 321 { 322 \int_eval:n 323 { 324 \tl_if_empty:ntf { ##4 } 325 { `##3 } 326 { ( `##3 - "D800 ) * "400 + ( `##4 - "DC00 ) + "10000 } 327 } 328 } 329 } 330 { 331 \cs_new_nopar:npn \ xecjk_get_charcode:w ##1 ~ ##2 ~ ##3##4 \q_stop 332 { \int_eval:n { \tl_if_empty:ntf { ##4 } { `##3 } { "20000 } } } 333 } 334 } 4 参见 和 5 参见 6 参见

24 第 5 节 xecjk 代码实现 } 336 \exp_after:wn \ xecjk_tmp:w \token_to_meaning:n ^^^^^20000 { } \q_stop 337 \group_end: \xecjk_if_cjk_class_p:n \xecjk_if_cjk_class:ntf \xecjk_if_same_class_p:nn \xecjk_if_same_class:nntf \xecjk_make_boundary: 判断字符 #1 是否为 CJK 字符类, 包括文字和标点符号 338 \prg_new_conditional:npnn \xecjk_if_cjk_class:n #1 { p, T, F, TF } 339 { 340 \if_cs_exist:w 341 \ xecjk_cjk_class_tl:n { \xecjk_token_value_class:n #1 } 342 \cs_end: 343 \prg_return_true: \else: \prg_return_false: \fi: 344 } 345 \cs_new_nopar:npn \ xecjk_cjk_class_tl:n #1 346 { c xecjk_cjk_class_ \int_eval:n {#1} _tl } 判断两个字符是否同属于一个字符类 347 \prg_new_conditional:npnn \xecjk_if_same_class:nn #1#2 { p, T, F, TF } 348 { 349 \if_int_compare:w \xecjk_token_value_class:n #1 = 350 \xecjk_token_value_class:n #2 \exp_stop_f: 351 \prg_return_true: \else: \prg_return_false: \fi: 352 } 利用 \scan_stop: 结束 CJK 分组, 用于恢复字体等 353 \cs_new_protected_nopar:npn \xecjk_make_boundary: 354 { \bool_if:nt \l xecjk_cjk_group_bool { \scan_stop: } } 5.3 功能开关 xecjkactive \makexecjkactive \makexecjkinactive 事实上, 将开启或关闭 XƎTEX 的整个字符类机制 355 \keys_define:nn { xecjk / options } 356 { 357 xecjkactive.choice:, 358 xecjkactive / true.code:n = { \makexecjkactive }, 359 xecjkactive / false.code:n = { \makexecjkinactive }, 360 xecjkactive.default:n = { true } 361 } 362 \NewDocumentCommand \makexecjkactive { } 363 { \xetex_interchartokenstate:d = \c_one } 364 \NewDocumentCommand \makexecjkinactive { } 365 { \xetex_interchartokenstate:d = \c_zero } 抑制 BOM 366 \char_set_catcode_ignore:n { "FEFF } 5.4 字符类别设定 \g xecjk_class_seq \g xecjk_new_class_seq \xecjk_new_class:n 分别用于记录在 xecjk 中使用的字符类别名称和新建的字符类别的编号 367 \seq_new:n \g xecjk_class_seq 368 \seq_new:n \g xecjk_new_class_seq 新建一个字符类别 #1 是自定义名称 369 \cs_new_protected_nopar:npn \xecjk_new_class:n #1 370 { 371 \int_if_exist:ctf { \ xecjk_class_csname:n {#1} } 372 { \ xecjk_error:nx { class-already-defined } {#1} } 373 { 374 \exp_args:nc \newxetexintercharclass 375 { \ xecjk_class_csname:n {#1} } 376 \clist_new:c { g xecjk_#1_range_clist } 377 \seq_gput_right:nn \g xecjk_class_seq {#1}

25 第 5 节 xecjk 代码实现 \seq_gput_right:nv \g xecjk_new_class_seq 379 { \ xecjk_class_csname:n {#1} } 380 } 381 } \xecjk_save_class:nn \ xecjk_class_csname:n 保存 XƎTEX 预定义的字符类别 #1 是自定义名称,#2 是编号 382 \cs_new_protected_nopar:npn \xecjk_save_class:nn #1#2 383 { 384 \int_if_exist:ctf { \ xecjk_class_csname:n {#1} } 385 { \ xecjk_error:nx { class-already-defined } {#1} } 386 { 387 \int_const:cn { \ xecjk_class_csname:n {#1} } {#2} 388 \clist_new:c { g xecjk_#1_range_clist } 389 \seq_gput_right:nn \g xecjk_class_seq {#1} 390 } 391 } 字符类名称对应的控制序列名字 392 \cs_new_nopar:npn \ xecjk_class_csname:n #1 { c xecjk_#1_class_int } 393 \cs_new_eq:cn { \ xecjk_class_csname:n { Others } } \l xecjk_tmp_int 394 \ xecjk_msg_new:nn { class-already-defined } 395 { 396 XeTeX~character~class~`#1'~has~been~already~defined.\\\\ 397 Please~take~another~name. \\ 398 } xecjk 需要以下字符类别用于字符输出 其中 Default CJK FullLeft FullRight Boundary 为 XƎTEX 中预定义的类别,xeCJK 新增加了 HalfLeft HalfRight NormalSpace 和 CM 其中异体字选择符 (Ideographic Variation Selectors) 7 需要 XƎTEX 以上的版本 8 和相关字体的支持 类别说明例子 Default 西文一般符号 abc123 CJK CJK 表意符号 汉字ぁぃぅ FullLeft 全角左标点 ( : FullRight 全角右标点, ) HalfLeft 半角左标点 ( [ { HalfRight 半角右标点,.? ) ] } NormalSpace 前后原始间距的符号 / Boundary 边界 空格 CM 组合标识 异体字选择符 HangulJamo 朝鲜文字母 ᄻᆟᇫ Default CJK FullLeft FullRight Boundary 399 \xecjk_save_class:nn { Default } { \c_zero } XƎTEX 将字符类总数扩大到 \tl_set:nx \l xecjk_tmp_tl 401 { \int_use:n \xetex_xetexversion:d \xetex_xetexrevision:d } 402 \fp_compare:nnntf { \l xecjk_tmp_tl } > { } 403 { \xecjk_save_class:nn { Boundary } { 4095 } } 404 { \xecjk_save_class:nn { Boundary } { \c_two_hundred_fifty_five } } LATEX 2ε 2016/02/01 不再预设置 CJK 字符类 405 \int_compare:nnntf { \xetex_charclass:d "4E00 } = \c_one 406 { 407 \xecjk_save_class:nn { CJK } { \c_one }

26 第 5 节 xecjk 代码实现 \xecjk_save_class:nn { FullLeft } { \c_two } 409 \xecjk_save_class:nn { FullRight } { \c_three } 410 \int_const:nn \c xecjk_class_begin_int { \c_three } 411 } 412 { 413 \xecjk_new_class:n { CJK } 414 \xecjk_new_class:n { FullLeft } 415 \xecjk_new_class:n { FullRight } 416 \int_const:nn \c xecjk_class_begin_int { \c_zero } 417 } HalfLeft HalfRight NormalSpace CM HangulJamo 新增西文半角左 / 右标点 前后原始间距的符号和异体字选择符类 418 \xecjk_new_class:n { HalfLeft } 419 \xecjk_new_class:n { HalfRight } 420 \xecjk_new_class:n { NormalSpace } 421 \xecjk_new_class:n { CM } 422 \xecjk_new_class:n { HangulJamo } \c xecjk_halfleft_chars_clist \c xecjk_halfright_chars_clist \c xecjk_normalspace_chars_clist 西文半角左 / 右标点和前后原始间距的字符类 423 \clist_const:nn \c xecjk_halfleft_chars_clist 424 { "28, "5B, "60, "7B, "2329 } 425 \clist_const:nn \c xecjk_halfright_chars_clist 426 { "21, "22, "25, "27, "29, "2C, "2E, "3A, "3B, "3F, "5D, "7D, "232A } 427 \clist_const:nn \c xecjk_normalspace_chars_clist { "2D, "2F, "5C } 以下对全角标点符号的归类来源于 XƎTEX 的脚本 unicode-char-prep.pl 和 Unicode 数据库 10 \c xecjk_op_chars_clist \c xecjk_pr_chars_clist \c xecjk_fullleft_chars_clist Open Punctuation (OP) U+2018 U+201C U+3008 U+300A U+300C U+300E U+3010 U+3014 U+3016 U+3018 U+301A U+301D U+FE17 U+FE35 ( U+FE37 { U+FE39 U+FE3B U+FE3D U+FE3F U+FE41 U+FE43 U+FE47 [ U+FE59 ( U+FE5B { U+FE5D U+FF08 ( U+FF3B [ U+FF5B { U+FF5F U+FF62 以下代码的第一行是中西文共用的左引号 428 \clist_const:nn \c xecjk_op_chars_clist 429 { 430 "2018, "201C, 431 "3008, "300A, "300C, "300E, "3010, "3014, "3016, "3018, "301A, "301D, 432 "FE17, "FE35, "FE37, "FE39, "FE3B, "FE3D, "FE3F, "FE41, "FE43, "FE47, 433 "FE59, "FE5B, "FE5D, "FF08, "FF3B, "FF5B, "FF5F, "FF } Prefix Numeric (PR) U+FE69 $ U+FF04 $ U+FFE1 U+FFE5 U+FFE6 435 \clist_const:nn \c xecjk_pr_chars_clist 436 { "FE69, "FF04, "FFE1, "FFE5, "FFE6 } 以上两类标点符号出现在文字的左边, 不应出现在行尾位置 437 \clist_new:n \c xecjk_fullleft_chars_clist 438 \clist_gconcat:nnn \c xecjk_fullleft_chars_clist 439 \c xecjk_op_chars_clist 440 \c xecjk_pr_chars_clist 10

27 第 5 节 xecjk 代码实现 27 \c xecjk_cl_chars_clist Close Punctuation (CL) U+00B7 U+2019 U+201D U+2013 U+2014 U+2025 U+2026 U+2027 U+2E3A U+3001 U+3002 U+3009 U+300B U+300D U+300F U+3011 U+3015 U+3017 U+3019 U+301B U+301E U+301F U+FE11 U+FE12 U+FE18 U+FE36 ) U+FE38 } U+FE3A U+FE3C U+FE3E U+FE40 U+FE42 U+FE44 U+FE48 ] U+FE50, U+FE52. U+FE5A ) U+FE5C } U+FE5E U+FF09 ) U+FF0C, U+FF0E. U+FF3D ] U+FF5D } U+FF60 U+FF61 U+FF63 U+FF64 以下代码的第一行是中西文共用的一些标点符号 441 \clist_const:nn \c xecjk_cl_chars_clist 442 { 443 "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2027, "2E3A, 444 "3001, "3002, "3009, "300B, "300D, "300F, "3011, "3015, "3017, "3019, 445 "301B, "301E, "301F, "FE11, "FE12, "FE18, "FE36, "FE38, "FE3A, "FE3C, 446 "FE3E, "FE40, "FE42, "FE44, "FE48, "FE50, "FE52, "FE5A, "FE5C, "FE5E, 447 "FF09, "FF0C, "FF0E, "FF3D, "FF5D, "FF60, "FF61, "FF63, "FF } \c xecjk_ns_chars_clist \c xecjk_ex_chars_clist \c xecjk_is_chars_clist \c xecjk_cj_chars_clist Nonstarter (NS) U+30FB U+FE54 ; U+FE55 : U+FF1A U+FF1B U+FF65 U+16FE0 Hyphens (cl-03) Iteration marks (cl-09) U+301C U+30A0 U+FF5E U+3005 々 U+303B 〻 U+309D ゝ U+309E ゞ U+30FD ヽ U+30FE ヾ 根据 W3C 的资料 11,cl-03 和 cl-09 在非常松散的情况下可以没有禁则 我们仅将全角浪线 U+FF5E 等连接号归入 FullRight 类并在宏包末尾设为 MiddlePunct 449 \clist_const:nn \c xecjk_hyphens_chars_clist 450 { "301C, "30A0, "FF5E } 451 \clist_const:nn \c xecjk_iteration_marks_chars_clist 452 { "3005, "303B, "309D, "309E, "30FD, "30FE } 453 \clist_const:nn \c xecjk_ns_chars_clist 454 { "30FB, "FE54, "FE55, "FF1A, "FF1B, "FF65, "16FE0 } 455 \AtEndOfPackage 456 { 457 \cs_set:npn \ xecjk_tmp:w #1 458 { \char_generate:nn {#1} { \c_twelve } } 459 \ xecjk_add_special_punct:nn { middle } 460 { \clist_map_function:nn \c xecjk_hyphens_chars_clist \ xecjk_tmp:w } 461 \cs_undefine:n \ xecjk_tmp:w 462 } Exclamation/Interrogation (EX) U+FE15! U+FE16? U+FE56? U+FE57! U+FF01 U+FF1F 463 \clist_const:nn \c xecjk_ex_chars_clist 464 { "FE15, "FE16, "FE56, "FE57, "FF01, "FF1F } Infix Numeric Separator (IS) U+FE10, U+FE13 : U+FE14 ; 465 \clist_const:nn \c xecjk_is_chars_clist { "FE10, "FE13, "FE14 } Conditional Japanese Starter (CJ) 这类字符的禁则是可选的 12, 为实现的简单计, 我们把它们归入 CJK 类, 即没有禁则

28 第 5 节 xecjk 代码实现 28 U+3041 ぁ U+3043 ぃ U+3045 ぅ U+3047 ぇ U+3049 ぉ U+3063 っ U+3083 ゃ U+3085 ゅ U+3087 ょ U+308E ゎ U+3095 ゕ U+3096 ゖ U+30A1 ァ U+30A3 ィ U+30A5 ゥ U+30A7 ェ U+30A9 ォ U+30C3 ッ U+30E3 ャ U+30E5 ュ U+30E7 ョ U+30EE ヮ U+30F5 ヵ U+30F6 ヶ U+30FC ー U+31F0 ㇰ U+31F1 ㇱ U+31F2 ㇲ U+31F3 ㇳ U+31F4 ㇴ U+31F5 ㇵ U+31F6 ㇶ U+31F7 ㇷ U+31F8 ㇸ U+31F9 ㇹ U+31FA ㇺ U+31FB ㇻ U+31FC ㇼ U+31FD ㇽ U+31FE ㇾ U+31FF ㇿ U+FF67 ァ U+FF68 ィ U+FF69 ゥ U+FF6A ェ U+FF6B ォ U+FF6C ャ U+FF6D ュ U+FF6E ョ U+FF6F ッ U+FF70 ー 466 \clist_const:nn \c xecjk_cj_chars_clist 467 { 468 "3041, "3043, "3045, "3047, "3049, "3063, "3083, "3085, "3087, "308E, 469 "3095, "3096, "30A1, "30A3, "30A5, "30A7, "30A9, "30C3, "30E3, "30E5, 470 "30E7, "30EE, "30F5, "30F6, "30FC, "31F0, "31F1, "31F2, "31F3, "31F4, 471 "31F5, "31F6, "31F7, "31F8, "31F9, "31FA, "31FB, "31FC, "31FD, "31FE, 472 "31FF, "FF67, "FF68, "FF69, "FF6A, "FF6B, "FF6C, "FF6D, "FF6E, "FF6F, 473 "FF } \c xecjk_po_chars_clist Postfix Numeric (PO) U+FE6A % U+FF05 % U+FFE0 475 \clist_const:nn \c xecjk_po_chars_clist { "FE6A, "FF05, "FFE0 } \c xecjk_fullright_chars_clist 以上六类标点符号出现在文字的右边, 不应出现在行首位置 476 \clist_new:n \c xecjk_fullright_chars_clist 477 \tl_map_inline:nn 478 { 479 \c xecjk_cl_chars_clist 480 \c xecjk_ns_chars_clist 481 \c xecjk_ex_chars_clist 482 \c xecjk_is_chars_clist 483 \c xecjk_po_chars_clist 484 \c xecjk_hyphens_chars_clist 485 } 486 { 487 \clist_gconcat:nnn \c xecjk_fullright_chars_clist 488 \c xecjk_fullright_chars_clist #1 489 } \c xecjk_cjk_chars_clist CJK 字符类, 包括文字和标点符号 490 \clist_const:nn \c xecjk_cjk_chars_clist 491 { CJK Radicals Supplement( 中日韩部首补充 ) 492 "2E80 -> "2EFF, Kangxi Radicals( 康熙部首 ) 493 "2F00 -> "2FDF, Ideographic Description Characters( 表意文字描述符 ) 494 "2FF0 -> "2FFF, CJK Symbols and Punctuation( 中日韩符号和标点 ) 495 "3000 -> "303F, Hiragana( 日文平假名 ) 496 "3040 -> "309F, Katakana( 日文片假名 ) 497 "30A0 -> "30FF,

xeCJK 宏包

xeCJK 宏包 xecjk ctex.org 2012/12/13 3.1.1 1 1 2 2 3 2 3.1............. 2 3.2......... 5 3.2.1 XƎTEX... 7 3.3 CJK....... 8 3.4 CJK....... 9 3.5......... 9 3.5.1.......... 9 3.5.2.. 9 3.6............... 11 4 11 5

More information

xeCJK 宏包

xeCJK 宏包 xecjk ctex.org 2012/05/21 v3.0.6 1 2 2 2 3 3 3.1..................................... 3 3.2................................. 5 3.2.1 XƎTEX........................... 8 3.3 CJK...............................

More information

xeCJK 宏包

xeCJK 宏包 xecjk ctex.org 2014/12/26 v3.3.0 1 1 2 2 3 2 3.1............. 2 3.2......... 5 3.2.1 XƎTEX... 7 3.3 CJK....... 8 3.4 CJK....... 9 3.5......... 9 3.5.1.......... 9 3.5.2.. 10 3.6 xecjkfntef...... 11 3.7...............

More information

xeCJK 宏包

xeCJK 宏包 xecjk 宏包 CTEX.ORG 2017/08/07 v3.5.0 目录 第 1 节简介 1 第 2 节基本用法 1 第 3 节用户手册 2 3.1 宏包选项............ 2 3.2 字体设置与选择........ 6 3.3 CJK 分区字体设置....... 10 3.4 设置 CJK 字符范围...... 11 3.5 标点符号的处理........ 11 3.6 xecjkfntef

More information

xpinyin 宏包

xpinyin 宏包 xpinyin 宏包 李清 sobenlee@gmail.com 2018/01/28 v2.6 第 1 节 简介 xpinyin 是一个 LATEX 宏包, 提供了为汉字自动注音的功能 第 2 节 基本用法 xpinyin 支持采用 GBK 和 UTF-8 编码的 TEX 源文件, 建议总是使用 UTF-8 如果使用 LATEX 或 pdflatex 的编译方式, 则根据编码的情况,xpinyin

More information

ctex ctex.org v0.95 2009/10/20 ctex L A TEX CCT CJK xecjk L A TEX ctex L A TEX ctex CCT CJK xecjk ctexart.cls ctexrep.cls ctexbook.cls ctex.sty ctexcap.sty ctex ctex.org 1 2 2 3 2.1 CJK xecjk................................

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

ptex-ng ptex-ng ptex OpenType UTF-8 ptex-ng JIS X 4051 ptex ASCII ptex TEX Users Group ptex-ng 2012 LuaTEX Common TEX Y&Y TEX ptex

ptex-ng ptex-ng ptex OpenType UTF-8 ptex-ng JIS X 4051 ptex ASCII ptex TEX Users Group ptex-ng 2012 LuaTEX Common TEX Y&Y TEX ptex TEX 2015 5 TEX 2015 5 1 / 18 ptex-ng ptex-ng ptex OpenType UTF-8 ptex-ng JIS X 4051 ptex ASCII 2008 2010 ptex TEX Users Group ptex-ng 2012 LuaTEX 2013 2014 Common TEX Y&Y TEX ptex-ng 2014 10 GPL TEX 2015

More information

fduthesis: 复旦大学论文模板

fduthesis: 复旦大学论文模板 mú fduthesis: 复旦大学论文模板 曾祥东 2018 年 5 月 6 日 v0.7b https://github.com/stone-zeng/fduthesis. 1 目录 2 目录 第 1 节介绍 3 第 2 节安装 4 2.1 获取 fduthesis......... 4 2.1.1 标准安装........ 4 2.1.2 手动安装........ 4 2.1.3 扁平化安装.......

More information

Visualize CMap

Visualize CMap 0001 0020 0002 0021 0003 0022 0004 0023 0005 0024 0006 0025 0007 0026 0008 0027 0009 0028 000A 0029 000B 002A 000C 002B 000D 002C 000E 002D 000F 002E 0010 002F 0011 0030 0012 0031 0013 0032 0014 0033 0015

More information

lnag_ch_v2.01.doc

lnag_ch_v2.01.doc 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. % Any line starting with "%" is a comment. % "\" (backslash) is a special Latex character which introduces a Latex %

More information

第 3 章 数 据 在 计 算 机 中 的 表 示 43 在 进 位 计 数 制 中 有 数 码 数 位 ( 位 置 ) 基 数 和 位 权 等 用 语 数 码 是 在 一 个 计 数 制 中 用 来 表 示 数 值 的 符 号 ; 数 位 是 指 数 码 在 一 个 数 中 所 处 的 位 置 ;

第 3 章 数 据 在 计 算 机 中 的 表 示 43 在 进 位 计 数 制 中 有 数 码 数 位 ( 位 置 ) 基 数 和 位 权 等 用 语 数 码 是 在 一 个 计 数 制 中 用 来 表 示 数 值 的 符 号 ; 数 位 是 指 数 码 在 一 个 数 中 所 处 的 位 置 ; 第 3 章 数 据 在 计 算 机 中 的 表 示 3.1 数 据 与 数 制 计 算 机 中 使 用 的 数 据 一 般 可 以 分 为 两 大 类 : 数 值 数 据 和 字 符 数 据 数 值 数 据 常 用 于 表 示 数 的 大 小 与 正 负 ; 字 符 数 据 则 用 于 表 示 非 数 值 的 信 息, 例 如 : 英 文 汉 字 图 形 和 语 音 等 数 据 数 据 在 计 算

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

ebook37-4

ebook37-4 4 4.1 H T M L F r o n t P a g e i m a g e m a p H T M L We b We b 4.1.1 We b We b We b We b 4.1.2 We b 4 35 4.1.3 4-1 G I F 4-2 36 4-1 ( 4-2 ) 4.1.4 We b We b 4-3 4-3 4 37 Ly n x 4-4 4-4 4.1.5 We b We

More information

序 文 藝 社 (Society of Chinese Literature) 在 去 年 暑 假 開 始 籌 措 成 立, 二 零 一 三 年 九 月 正 式 展 開 所 有 活 動 文 藝 社 成 立 的 目 的 旨 在 讓 學 生 學 習 欣 賞 歷 代 名 篇 名 作, 其 中 以 古 典

序 文 藝 社 (Society of Chinese Literature) 在 去 年 暑 假 開 始 籌 措 成 立, 二 零 一 三 年 九 月 正 式 展 開 所 有 活 動 文 藝 社 成 立 的 目 的 旨 在 讓 學 生 學 習 欣 賞 歷 代 名 篇 名 作, 其 中 以 古 典 序 文 藝 社 (Society of Chinese Literature) 在 去 年 暑 假 開 始 籌 措 成 立, 二 零 一 三 年 九 月 正 式 展 開 所 有 活 動 文 藝 社 成 立 的 目 的 旨 在 讓 學 生 學 習 欣 賞 歷 代 名 篇 名 作, 其 中 以 古 典 散 文 為 主 ; 開 拓 學 生 的 文 藝 視 角 和 創 作 平 台 ; 強 化 對 外 的 創

More information

CTeX 宏集手册

CTeX 宏集手册 CTEX 宏集手册 ctex.org 2015/07/01 v2.2 简介 CTEX 宏集是面向中文排版的通用 L A TEX 排版框架, 为中文 L A TEX 文档提供了汉字输出支持 标点压缩 字体字号命令 标题文字汉化 中文版式调整 数字日期转换等支持功能, 可适应论文 报告 书籍 幻灯片等不同类型的中文文档 CTEX 宏集支持 L A TEX pdfl A TEX XƎL A TEX 和 LuaL

More information

嘉義市政府暨附(所)屬機關電話禮貌測試實施要點

嘉義市政府暨附(所)屬機關電話禮貌測試實施要點 嘉 義 市 政 府 暨 所 屬 機 關 電 話 禮 貌 測 試 實 施 要 點 83 年 8 月 17 日 83 府 計 研 字 第 50337 號 函 頒 90 年 10 月 12 日 90 府 企 研 字 第 87210 號 修 訂 95 年 12 月 20 日 95 府 企 研 字 第 0950141214 號 函 修 訂 97 年 3 月 21 日 97 府 企 研 字 第 0970110046

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探

付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探 付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探索建设中 成时间 : 2017-07-20 12:13:21 Since 8.6 定义键盘 定义键盘使

More information

MICROMASTER 410/420/430/440 DA kW 250kW MICROMASTER Eco & MIDIMASTER Eco MICROMASTER, MICROMASTER Vector DA64 MIDIMASTER Vector 90kW (Low

MICROMASTER 410/420/430/440 DA kW 250kW MICROMASTER Eco & MIDIMASTER Eco MICROMASTER, MICROMASTER Vector DA64 MIDIMASTER Vector 90kW (Low DA51.2 2002 micromaster MICROMASTER 410/420/430/440 0.12kW 250kW s MICROMASTER 410/420/430/440 DA51.2 2002 0.12kW 250kW MICROMASTER Eco & MIDIMASTER Eco MICROMASTER, MICROMASTER Vector DA64 MIDIMASTER

More information

研討會大綱/成果

研討會大綱/成果 2005 1 102 2005...5...6...9 ( )...10 ( )...13 (363 )...16 ( 114 )...27...48...50...54...65...72...76...77...79...80...82...95...100...102 2 102 2005 3 102 2005 4 102 2005 5 102 2005 6 102 2005 珉 7 102

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

國立暨南國際大學圖書館

國立暨南國際大學圖書館 國 立 暨 南 國 際 大 學 圖 書 館 學 位 論 文 繳 交 注 意 事 項 本 校 畢 業 生 辦 理 畢 業 離 校 手 續 須 完 成 圖 書 館 相 關 作 業 程 序, 請 參 見 以 下 說 明 壹 離 校 程 序 說 明 01 貳 繳 交 論 文 說 明 03 參 轉 檔 注 意 事 項 及 操 作 09 肆 上 傳 檔 案 注 意 事 項 及 操 作 16 伍 紙 本 論 文

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

目录 1 IPv6 PIM Snooping 配置命令 IPv6 PIM Snooping 配置命令 display pim-snooping ipv6 neighbor display pim-snooping ipv6 routing-ta

目录 1 IPv6 PIM Snooping 配置命令 IPv6 PIM Snooping 配置命令 display pim-snooping ipv6 neighbor display pim-snooping ipv6 routing-ta 目录 1 IPv6 PIM Snooping 配置命令 1-1 1.1 IPv6 PIM Snooping 配置命令 1-1 1.1.1 display pim-snooping ipv6 neighbor 1-1 1.1.2 display pim-snooping ipv6 routing-table 1-2 1.1.3 display pim-snooping ipv6 statistics

More information

<4D6963726F736F667420576F7264202D20D6D0CEC4B7A88C57B454CABF8C57CEBBD593CEC4D28EB9A0>

<4D6963726F736F667420576F7264202D20D6D0CEC4B7A88C57B454CABF8C57CEBBD593CEC4D28EB9A0> 澳 門 大 學 法 學 院 中 文 法 學 碩 士 學 位 論 文 規 範 一 適 用 範 圍 ( 一 ) 中 文 法 學 碩 士 學 位 論 文 是 中 文 法 學 碩 士 學 位 研 究 生 在 指 導 教 師 的 指 導 下 獨 立 完 成 的, 合 乎 嚴 格 的 寫 作 規 範 並 標 誌 著 獲 得 法 學 碩 士 學 位 的 一 篇 書 面 作 品 中 文 法 學 碩 士 研 究 生

More information

(Microsoft Word - \256g\275b\252\354\305\351\305\347.doc)

(Microsoft Word - \256g\275b\252\354\305\351\305\347.doc) 一 基 本 資 料 附 件 2 1. 參 賽 者 姓 名 : 方 慈 惠 2. 參 賽 者 ( 服 務 ) 單 位 : 國 立 台 南 女 子 高 級 中 學 3. 參 賽 者 ( 服 務 單 位 ) 地 址 : 台 南 市 大 埔 街 97 號 4. 聯 絡 電 話 : 06-2154626;06-2154608;0929082918 5. 設 計 理 念 簡 介 : 射 箭 運 動 列 入 國

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

CTeX 宏集手册

CTeX 宏集手册 CTEX 宏集手册 CTEX.ORG 2018/05/02 v2.4.14 简介 CTEX 宏集是面向中文排版的通用 L A TEX 排版框架, 为中文 L A TEX 文档提供了汉字输出支持 标点压缩 字体字号命令 标题文字汉化 中文版式调整 数字日期转换等支持功能, 可适应论文 报告 书籍 幻灯片等不同类型的中文文档 CTEX 宏集支持 L A TEX pdfl A TEX XƎL A TEX

More information

pair path pair path numeric sind cosd pair color beginfig(0) u := 2cm ; pair a ; draw ( 0u, 0u ) -- ( u, u ) ; draw ( u, 0u ) -- ( 0u, 1u ) ;

pair path pair path numeric sind cosd pair color beginfig(0) u := 2cm ; pair a ; draw ( 0u, 0u ) -- ( u, u ) ; draw ( u, 0u ) -- ( 0u, 1u ) ; 12 22 METAPOST 1 METAPOST ps TEX METAPOST 1. METAPOST 2. METAPOST mpost.exe 3. TEX dvi ps pdf [1] METAPOST beginfig(0) path pp ; u := 2cm ; Angle := 10 ; n = 360 / Angle ; pp := (-u,-u )--(-u,u )--(u,u

More information

coverage2.ppt

coverage2.ppt Satellite Tool Kit STK/Coverage STK 82 0715 010-68745117 1 Coverage Definition Figure of Merit 2 STK Basic Grid Assets Interval Description 3 Grid Global Latitude Bounds Longitude Lines Custom Regions

More information

目录 1 H3C R4900 G2 服务器可选部件与操作系统兼容性列表 控制卡 GPU 卡 网卡 FC HBA 卡 TPM/TCM 模块 NVMe SSD PCle 加速卡 1-31 i

目录 1 H3C R4900 G2 服务器可选部件与操作系统兼容性列表 控制卡 GPU 卡 网卡 FC HBA 卡 TPM/TCM 模块 NVMe SSD PCle 加速卡 1-31 i 目录 1 H3C R4900 G2 服务器可选部件与操作系统兼容性列表 1-1 1.1 控制卡 1-1 1.2 GPU 卡 1-5 1.3 网卡 1-8 1.4 FC HBA 卡 1-21 1.5 TPM/TCM 模块 1-29 1.6 NVMe SSD PCle 加速卡 1-31 i 1 H3C R4900 G2 服务器可选部件与操作系统兼容性列表 本手册为产品通用资料 对于定制化产品, 请用户以产品实际情况为准

More information

领导,我不想写CSS代码.key

领导,我不想写CSS代码.key 领导 我不想写 CSS 张鑫旭 25MIN 2018-03-31 YUEWEN USER EXPERIENCE DESIGN 01 1 YUEWEN USER EXPERIENCE DESIGN 砖家 02 CSS - 艺术家 YUEWEN USER EXPERIENCE DESIGN 03 CSS - 砖家 艺术家 YUEWEN USER EXPERIENCE DESIGN 04 领导, 我不想写

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

EM EM EM EM PH TDS EM EM E M E M 1 EM EM PH T D S EM EM EM EM PH T D S 50cm 50cm 50cm 60cm 30cm 20cm EM 2 5 3 6 9 12 15 20 3 4 () 21 23 23 25 25 24 22 23 22 25 18 18 18 20 23 27 29 29 35 37 36 39 40 39

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

目錄

目錄 file:///c /Documents and Settings/f16//91history/_vti_cnf/0.htm vti_encoding:sr utf8-nl vti_timelastmodified:tr 04 Feb 2005 02:49:14-0000 vti_extenderversion:sr 5.0.2.6417 vti_author:sr F16\\f16 vti_modifiedby:sr

More information

Contents 1 Typing Simplified Chinese in LATEXOn Mac Way One: Using XeLaTeX Way Two: Copy localtexmf from instal

Contents 1 Typing Simplified Chinese in LATEXOn Mac Way One: Using XeLaTeX Way Two: Copy localtexmf from instal Typesetting (Simplied and Traditional) Chinese Characters in L A TEXOn Mac Fanglu Sun Rice University Draft date January 2, 2017 Contents 1 Typing Simplified Chinese in LATEXOn Mac 3 1.1 Way One: Using

More information

jsj0.nps

jsj0.nps 第 3 章 Word 基 础 应 用 制 作 求 职 简 历 3 畅 1 求 职 简 历 案 例 分 析 本 章 以 制 作 求 职 简 历 为 例, 介 绍 Word 强 有 力 的 文 字 处 理 功 能, 包 括 Word 的 字 符 格 式 的 设 置 段 落 格 式 的 设 置 表 格 的 制 作 图 片 的 插 入 制 表 位 的 使 用 页 面 边 框 的 设 置 打 印 输 出 等

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

Contents 1 Typing Simplified Chinese in LATEXOn Mac Way One: Using XeLaTeX Way Two: Copy localtexmf from instal

Contents 1 Typing Simplified Chinese in LATEXOn Mac Way One: Using XeLaTeX Way Two: Copy localtexmf from instal Typesetting (Simplied and Traditional) Chinese Characters in L A TEXOn Mac Fanglu Sun Rice University Draft date March 13, 2015 Contents 1 Typing Simplified Chinese in LATEXOn Mac 3 1.1 Way One: Using

More information

MICROMSTER 410/420/430/440 MICROMSTER kw 0.75 kw 0.12kW 250kW MICROMSTER kw 11 kw D C01 MICROMSTER kw 250kW E86060-

MICROMSTER 410/420/430/440 MICROMSTER kw 0.75 kw 0.12kW 250kW MICROMSTER kw 11 kw D C01 MICROMSTER kw 250kW E86060- D51.2 2003 MICROMSTER 410/420/430/440 D51.2 2003 micromaster MICROMSTER 410/420/430/440 0.12kW 250kW MICROMSTER 410/420/430/440 MICROMSTER 410 0.12 kw 0.75 kw 0.12kW 250kW MICROMSTER 420 0.12 kw 11 kw

More information

(08) (08)

(08) (08) 100 3 7 () 1000503791 100 100 3 8 (08) 7792045 (08) 7781824 Http://www.mhsh.ptc.edu.tw ... 1... 2...... 5... 5... 6... 7... 7... 8... 12... 13... 13... 14... 16... 18... 24... 28... 35... 35... 36... 37...

More information

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

标题

标题 第 二 章 城 市 的 经 济 竞 争 力 归 根 结 底 是 城 市 创 造 价 值 为 居 民 提 供 福 利 的 能 力, 而 财 富 追 根 溯 源 是 由 企 业 组 织 下 的 人 创 造 的 假 定 城 市 价 值 收 益 即 为 城 市 企 业 价 值 收 益 的 总 和, 可 以 从 分 析 城 市 企 业 价 值 收 益 入 手, 来 分 析 城 市 价 值 收 益 及 其 能

More information

第一章

第一章 第 二 章 建 築 研 究 與 分 析 第 二 章 建 築 研 究 與 分 析 第 一 節 清 代 科 舉 與 考 棚 建 築 一 科 舉 與 貢 院 建 築 清 代 政 府 拔 取 人 才, 大 體 延 續 明 代, 但 也 有 改 進 之 處, 例 如 詔 舉, 由 皇 帝 下 詔 徵 取 人 才 為 國 家 所 用, 有 博 學 鴻 詞 孝 廉 方 正 直 言 山 林 隱 逸 孝 子 等 科

More information

彩圖 6 彩圖 7 彩圖 8 3

彩圖 6 彩圖 7 彩圖 8 3 1 2 3 4 5 2 彩圖 6 彩圖 7 彩圖 8 3 彩圖 13 彩圖 14 彩圖 16 彩圖 15 5 彩圖 22 彩圖 20 彩圖 21 彩圖 23 7 24 25 26 8 31 32 33 34 10 彩圖 35 彩圖 38 彩圖 36 彩圖 39 彩圖 37 彩圖 40 11 03 1 2 3 4 10 8 6 4 2 0 3 2.1 1.2 0.3 0.6 1.5 2.4 3 1.2

More information

XeTeX about:fonts

XeTeX about:fonts X TX about:fonts -X TX - KMC 2008 4 25 L A TX X TX kmc.best@gmail.com 1 2 目录 1 X TX 的安装和使用 3 1.1.......................................... 3 1.2............................................ 3 1.3........................................

More information

论文,,, ( &, ), 1 ( -, : - ), ; (, ), ; ;, ( &, ),,,,,, (, ),,,, (, ) (, ),,, :. : ( ), ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ), ( ),,,, 1 原译作 修补者, 但在英译版本中, 被译作

论文,,, ( &, ), 1 ( -, : - ), ; (, ), ; ;, ( &, ),,,,,, (, ),,,, (, ) (, ),,, :. : ( ), ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ), ( ),,,, 1 原译作 修补者, 但在英译版本中, 被译作 * 夏传玲 : 本文简要回顾了国内外定性研究在最近 多年的发展概况, 总结 了定性研究的六个发展趋势和分析策略上的三种流派 在上述两种背景下, 本文探讨了计算机辅助的定性分析给定性研究带来的机遇和挑战, 特别是它和手工操作对比时的优势和劣势, 以及应用这种定性分析技术所可能面临的困难 : 定性研究定性分析 文化差异,, (, ),,,, ( - ) ( - ) ( - ) ( - ) ( - ) (

More information

山东轻工业学院

山东轻工业学院 3888.00 ( 16.00 ) ...1...4...16...19...22...25...28 ( )...32...34...39...42...47...48...50...51 I ( )...54...66...69...73...76... 101... 103... 105... 106... 107... 109...111... 112... 116... 118... 120...

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

diagbox Package (v2.2): Making Table Heads with Diagonal Lines

diagbox Package (v2.2): Making Table Heads with Diagonal Lines diagbox Package (v2.2) Making Table Heads with Diagonal Lines Leo Liu leoliu.pku@gmail.com 2016/12/28 1 Introduction diagbox is a replacement of old slashbox package 1. I write this package simply because

More information

第 4 章 Linux shell 程序设计 shell UNIX/Linux Linux shell shell if case while for shell Linux Linux 本章主要介绍 Linux shell( 默认是 bash) 的语法结构 变量定义及赋值引用 标点符号 控制语句等

第 4 章 Linux shell 程序设计 shell UNIX/Linux Linux shell shell if case while for shell Linux Linux 本章主要介绍 Linux shell( 默认是 bash) 的语法结构 变量定义及赋值引用 标点符号 控制语句等 第 4 章 Linux shell 程序设计 shell UNIX/Linux Linux shell shell if case while for shell Linux Linux 本章主要介绍 Linux shell( 默认是 bash) 的语法结构 变量定义及赋值引用 标点符号 控制语句等 本章的主要内容如下 : shell 的主要特点 类型 建立和执行方式 bash 变量的分类 定义形式及引用规则

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

ebook111-4

ebook111-4 Flash 4 Flash 4 F l a s h 5 Flash 4 Flash Flash 4 Flash 4 Flash 4 4.1 Flash 4 Flash 4 Flash 4 Flash Flash 4 Flash 4 4.2 Flash 4 Flash 4 A Flash 4 S h i f t F i l e P r e f e r e n c e s > > Flash 4 Flash

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法 ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 0 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板 public void TestExportToExcelByDataTable() string excelpath

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

第六章 中国中等收入者调查的三个发现

第六章   中国中等收入者调查的三个发现 1999 2003 1. 3 2. - 1 - 3. 4. 4 6-2 - 4 8000 ~50000 2002 18% 2.5 ~3 7.5 ~10 2003 6 22.83 48.5% 15 ~30 30 2 18% 60% 50%~60% 40%~50% 40% GDP 3000, 50% 2001 2020 GDP 3 1. 2002-3 - 1 3000 8000 8000 ~25000

More information

E170C2.PDF

E170C2.PDF IQ E170C2 2002.3. Rotork Rotork * ( ) * * RotorkIQ - IQ * * PC IQ Insight / Rotork * - Rotork IQ www.rotork.com 5 10 5.1 11 1 2 5.2 11 2 3 5.3 11 3 IQ 3 5.4 11 3.1 3 5.5 IQM12 3.2 3 5.6 IQML12 3.3 4 5.7

More information

Open topic Bellman-Ford算法与负环

Open topic   Bellman-Ford算法与负环 Open topic Bellman-Ford 2018 11 5 171860508@smail.nju.edu.cn 1/15 Contents 1. G s BF 2. BF 3. BF 2/15 BF G Bellman-Ford false 3/15 BF G Bellman-Ford false G c = v 0, v 1,..., v k (v 0 = v k ) k w(v i 1,

More information

你的第一本 Photoshop 书 图 1.3 图 1.4 RGB 图 1.5 图 三原色光的概念 R Red G Green B Blue RGB RGB R B 3 1 RGB RGB 256 0~ RGB

你的第一本 Photoshop 书 图 1.3 图 1.4 RGB 图 1.5 图 三原色光的概念 R Red G Green B Blue RGB RGB R B 3 1 RGB RGB 256 0~ RGB 第 1 章色彩基础知识 Photoshop Photoshop 1.1 RGB 色彩模式 1.1 1.2 图 1.1 图 1.2 Photoshop sample0101.png 1.3 > CTRL O Windows Photoshop Photoshop Photoshop F8 > 1.4 B R 你的第一本 Photoshop 书 图 1.3 图 1.4 RGB 1.5 1.6 图 1.5

More information

2

2 2 !iisamplegetlist!iisamplegetdata:!iisamplegetlast!iisampleeraseall!iihostfilegetdata Vangkroken 2 NO-1351 Rud Norway 3 example.log IMM>captureline!15HostFileGetData

More information

For example: Day Time Mon Tue Wed Morning used used fternoon used used 1 \begin{tabular}{ l ccc } 3 \diagbox{time}{day} & Mon & Tue & Wed \\ 5 Morning

For example: Day Time Mon Tue Wed Morning used used fternoon used used 1 \begin{tabular}{ l ccc } 3 \diagbox{time}{day} & Mon & Tue & Wed \\ 5 Morning diagbox Package (v2.0) 中文版 Making Table Heads with Diagonal Lines Leo Liu leoliu.pku@gmail.com 2011/11/23 1 Introduction diagbox is a replacement of old slashbox package 1. I write this package simply

More information

大漠 伪前端, 就职于淘宝

大漠 伪前端, 就职于淘宝 CSS Grid Layout 2016-12-17 @ 大漠. #CSSConf https://www.flickr.com/photos/19139526@n00/8331063530/ 大漠 伪前端, 就职于淘宝 古老的 table 布局 现代 Web 布局 Float inline-block display: table position (absolute 或 relative)

More information

!"!"# # $!""%& ()*+, - ". - "/!%,0 -.! $ " $ # $ $ $ 1 %%&0/! 2(3!""% "/%,.4 "/" -." "" - 5/" - "045 /"""" # # 999$ 6:8$ :;<$ =>

!!# # $!%& ()*+, - . - /!%,0 -.! $  $ # $ $ $ 1 %%&0/! 2(3!% /%,.4 / -.  - 5/ - 045 / # # 999$ 6:8$ :;<$ => !"!"# # $!""%& ()*+, - ". - "/!%,0 -.! $ " $ # $ - - - $ $ 1 %%&0/! 2(3!""% "/%,.4 "/" -."0.055 00 5"" - 5/" - "045 /""""4 6778 # # 999$ 6:8$ :; "/" -."/.".5 6778 # # 999$ 6:8$ =?@$ =>,5, A 4 " /

More information

Microsoft Word - install_manual-V _CN.docx

Microsoft Word - install_manual-V _CN.docx NO TASK Q-Sign Install Manual PAGE 1/28 Q-Sign INSTALL MANUAL Version 3.0 Server Manager Client Codec NO TASK Q-Sign Install Manual PAGE 2/28 History DATE Contents Name Ver. Remark 2009-02-11 Q-Sign Ver.

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information

ebook70-19

ebook70-19 1 9 S t a r O ff i c e Star Division S t a r O ff i c e h t t p / / w w w. s t a r d i v i s i o n. c o m S t a r O ff i c e O p e n L i n u x O p e n L i n u x StarOffice S t a r O ff i c e S t a r O

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

Converting image (bmp/jpg) file into binary format

Converting image (bmp/jpg) file into binary format RAiO Image Tool 操作说明 Version 1.0 July 26, 2016 RAiO Technology Inc. Copyright RAiO Technology Inc. 2013 RAiO TECHNOLOGY INC. www.raio.com.tw Revise History Version Date Description 0.1 September 01, 2014

More information

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) () (39mm E-Mail ( )( ), : : 1 1 ( ) 2 2 ( ) 29mm) WSK ( 1 2 / 3 1 A4 2 1 3 (2-1) 2-1 4 (2-2) 2-2 5 A4 6 A4 7 A4 8 A4 9 A4 10 11 ( () 4 A4, 5 6 7 8 A4 7 ) 1 (2-1) (2-2) () 1 2 (2-1) 3 (2-2) 4 5 6 7 (8 ) 9

More information

器之 间 向一致时为正 相反时则为负 ③大量电荷的定向移动形成电 流 单个电荷的定向移动同样形成电流 3 电势与电势差 1 陈述概念 电场中某点处 电荷的电势能 E p 与电荷量 q Ep 的比值叫做该点处的电势 表达式为 V 电场中两点之间的 q 电势之差叫做电势差 表达式为 UAB V A VB 2 理解概念 电势差是电场中任意两点之间的电势之差 与参考点的选择无关 电势是反映电场能的性质的物理量

More information

技 术 文 件

技  术  文  件 技术文件 技术文件名称 :IAlert 接口使用说明 技术文件编号 : 版 本 :V1.0 共页 ( 包括封面 ) 拟制 审核 会签 标准化 批准 中兴通讯股份有限公司 XX 软件模块详细设计说明 版本号 修改记录 文件编号 版本号 拟制人 / 修改人 拟制 / 修改日期 1 V1.0 胡曦 2005-08-12 新建 更改理由 主要更改内容 ( 写要点即可 ) 注 1: 每次更改归档文件 ( 指归档到事业部或公司档案室的文件

More information

4 / ( / / 5 / / ( / 6 ( / / 7 1 2 / 3 ( 4 ( 2003 8 ( 2

4 / ( / / 5 / / ( / 6 ( / / 7 1 2 / 3 ( 4 ( 2003 8 ( 2 : / ( 6 (2003 8 : ( 1 ( ( / / (,, ( ( - ( - (39mm 29mm 2 ( 1 2 3-6 3 6-24 6-48 12-24 8-12 WSK / WSK WSK 1 4 / ( / / 5 / / ( / 6 ( / / 7 1 2 / 3 ( 4 ( 2003 8 ( 2 9 5 ( 10 3 11 / (600 4 5 AA 710 AB 720 730

More information

ㅡㆂ㆔ ㅷ紊韄 裎 ㅌ 秥禡 ㇹ ㇱ 襆鋀 襆 褝眺 蓁 ㆔ Y 繧 耶 ㇹ ㇱ E SE 醕 字 293 褝 H ±30 ㇹ ㇱ E S500 醕 字 293 褝 H

ㅡㆂ㆔ ㅷ紊韄 裎 ㅌ 秥禡 ㇹ ㇱ 襆鋀 襆 褝眺 蓁 ㆔ Y 繧 耶 ㇹ ㇱ E SE 醕 字 293 褝 H ±30 ㇹ ㇱ E S500 醕 字 293 褝 H ㇹ ㇱ E-140032 300SE 醕 字 293 褝 H3.9.21-0 10 +10-20 10 10 ±30 ㇹ ㇱ E-140050 S500 醕 字 293 褝 H3.9.21-0 10 +10-20 10 10 ±30 ㇹ ㇱ E-140051 S500L 醕 字 293 褝 H3.9.21-0 10 +10-20 10 10 ±30 ㇹ ㇱ E-140057 S600L 醕 字 293

More information

Fuzzy Highlight.ppt

Fuzzy Highlight.ppt Fuzzy Highlight high light Openfind O(kn) n k O(nm) m Knuth O(n) m Knuth Unix grep regular expression exact match Yahoo agrep fuzzy match Gais agrep Openfind gais exact match fuzzy match fuzzy match O(kn)

More information

Microsoft Word - 《师范教育信息参考》 2011年第2期

Microsoft Word - 《师范教育信息参考》 2011年第2期 师 范 教 育 信 息 参 考 北 华 大 学 图 书 馆 参 考 咨 询 服 务 部 主 办 师 范 教 育 信 息 参 考 本 期 导 读 热 点 聚 焦 教 育 部 2011 年 工 作 要 点 ( 下 ) 温 总 理 在 东 北 师 大 免 费 师 范 生 来 信 上 作 出 重 要 批 示 首 届 免 费 师 范 生 全 部 到 中 小 学 任 教 教 育 基 础 道 德 : 通 往 幸

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

第3章

第3章 本 章 涵 盖 以 下 主 题 全 局 单 播 地 址 路 由 和 子 网 划 分 : 本 节 通 过 与 IPv4 相 比 较, 介 绍 了 IPv6 地 址 IPv4 路 由 的 概 念, 以 及 怎 样 进 行 IPv6 子 网 划 分 IPv6 全 局 单 播 地 址 的 分 配 : 本 节 探 讨 了 怎 样 将 全 局 单 播 地 址 分 配 到 主 机 或 其 他 设 备 上 IPv6

More information

WCA Regulations and Guidelines

WCA Regulations and Guidelines WCA Regulations and Guidelines WCA Regulations Committee WCA 競 賽 規 則 2015 版 本 :2015 年 7 月 1 日 [wca-regulations-translations:c77f738] 註 釋 繁 體 中 文 翻 譯 本 翻 譯 版 本 完 全 依 照 官 方 版 本 翻 譯, 但 難 免 有 不 精 確 的 地 方,

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30 0 配置 Host MIB 设备 V 1.1.2 ( 简体版 ) 0 Update: 2016/1/30 前言 N-Reporter 支持 Host Resource MIB 监控主机 (Host) 状态, 本文件描述 N-Reporter 用户如何配置 Host MIB 设备 文件章节如下 : 1. 配置 Windows Server 2003... 2 1-1.Windows Server 2003

More information

附件1

附件1 实际控制关系账户申报表 (K-1 表 ) 大连商品交易所 第一部分 : 申报人信息 * 姓名 * 个人客户 * 身份证号码 * 联系电话 * 组织机构代码 * 联系电话 单位客户 客户类型 主营业务 A. 生产企业 B. 加工企业 C. 贸易公司 D. 投资公司 E. 其他 ( 请详细说明 ) 第二部分 : 实际控制关系账户信息 1 是否实际控制其他主体 ( 个人客户或单位客户 ) 的期货交易? 如果是,

More information

1937 7 6 10 1937 7 12 1937 7 17 4 1937 7 15 1933 6 3 1939 10 12 1937 9 6 19 1871 1 1933 12 7 1934 1 19 1910 5 5 9 5 9 5 42 1932 5 25 9 32 9 32 1932 3 1934 3 38 2120 33 2132 11 17 1934 4 20 1935 2 21 1935

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

ebook65-5

ebook65-5 5 P e r l P e r l I / O P e r l P e r l P e r l P e r l P e r l I / O P e r l P e r l 5.1 P e r l P e r ( ) S T D I N P e r l S T D I N 2 $ @ P e r l f o r e a c h e l s e i f P e r l p e r l f u n c o

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8

els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8 els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8 Yamaha ELS-0/0C..8 LCD ELS-0/0C v. typeu LCD ELS-0/0C typeu / -6 / [SEARCH] / - ZH ELS-0/0C.8 els0xu_zh_nf_v8.book Page Wednesday, June,

More information

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 CIRCLE 1 Circle 描述 编写一个圆类 Circle, 实现半径的输入 面积的计算和输出 输入 圆的半径 (double 类型 ) 输出 圆的面积 ( 保留小数点后两位 ) 样例输入 3 样例输出 28.27 提示 圆周率的取值需要比较精确, 以保证计算结果的精度 #include

More information

HP LJ 4000 UG - ZHTW

HP LJ 4000 UG - ZHTW HP LaserJet 4000 4000 T 4000 N 及 4000 TN 雷 射 印 表 機 使 用 者 手 冊 版 權 所 有 惠 普 公 司 (Hewlett-Packard Company)1997 年 版 權 保 留 除 版 權 法 允 許 的 範 圍 之 外, 未 經 事 先 書 面 許 可, 不 得 複 製 修 改 或 翻 譯 本 手 冊 出 版 號 碼 C4118-90915

More information

安全注意事项 2. 设置对焦模式 3. 变焦 1. 安装和卸下镜头 4. 固定变焦环 1 2 CHI-2

安全注意事项 2. 设置对焦模式 3. 变焦 1. 安装和卸下镜头 4. 固定变焦环 1 2 CHI-2 CHI EF 镜头使用说明书 EF24-70mm f/4l IS USM 感谢您购买佳能产品! 使用注意事项 如果将镜头从寒冷的环境拿到温暖的环境中, 镜头表面和内部零件可能会发生结露 高温可能导致镜头故障 特点 安全注意事项 安全注意事项 请勿透过镜头或相机观看太阳或明亮的光源 无论镜头是否装在相机上, 请勿将没有盖上镜头盖的镜头置于太阳下 本说明中使用的符号 CHI-1 安全注意事项 2. 设置对焦模式

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 友乾营 报表的 SQL 植入风险 规避风险 : 让你的报表变的安全起来 SQL 植入的概念 恶意的 SQL 归根结底 : 执行了不该允许执行的 SQL 命令, 达到非法的目的 常见案例 骗过登录验证非法获取账号信息篡改 删除数据 为什么存在 SQL 植入 植入原理 如何攻击 特殊的输入参数 未处理特殊字符 -- # 数据库配置不合理 植入原理 : 案例 1, 特殊输入参数 union or 猜表名

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 按钮对象 (button) 当 JavaScript 读到 标记中的 type 属性值为 button 时, 自动建立一个按钮对象, 并将该对象放到表单对象的 elements 数组当中 按钮对象包括 : 普通按钮 (button) 提交按钮 (submit) 重置按钮 (reset) 1. 使用按钮对象的格式 document.forms[ 索引值 ].elements[ 索引值

More information