summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/ctex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-06-19 22:32:36 +0000
committerKarl Berry <karl@freefriends.org>2015-06-19 22:32:36 +0000
commit24a26d6f89a97e7ba548a2c42c0e6a6c80e6fb2a (patch)
treec87c15ce0105a3b7f9dfef8548ea2b0bb368d91c /Master/texmf-dist/source/latex/ctex
parent28cb2b214ad9bcb5ac65fdf512b438f388a68b1e (diff)
ctex (19jun15)
git-svn-id: svn://tug.org/texlive/trunk@37615 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/ctex')
-rw-r--r--Master/texmf-dist/source/latex/ctex/ctex.dtx1414
1 files changed, 879 insertions, 535 deletions
diff --git a/Master/texmf-dist/source/latex/ctex/ctex.dtx b/Master/texmf-dist/source/latex/ctex/ctex.dtx
index af7f077cb5b..b635785a8d9 100644
--- a/Master/texmf-dist/source/latex/ctex/ctex.dtx
+++ b/Master/texmf-dist/source/latex/ctex/ctex.dtx
@@ -57,6 +57,7 @@ This package consists of the file ctex.dtx, and the derived files
ctex.sty,
ctexcap.sty,
ctexsize.sty,
+ ctexheading.sty,
ctexart.cls,
ctexbook.cls,
ctexrep.cls,
@@ -192,6 +193,7 @@ This package consists of the file ctex.dtx, and the derived files
ctex.sty,
ctexcap.sty,
ctexsize.sty,
+ ctexheading.sty,
ctexart.cls,
ctexbook.cls,
ctexrep.cls,
@@ -248,9 +250,10 @@ This package consists of the file ctex.dtx, and the derived files
\generate
{
\usedir{tex/latex/ctex}
- \file{ctex.sty} {\from{\jobname.dtx}{package,style}}
- \file{ctexcap.sty} {\from{\jobname.dtx}{package,ctexcap}}
- \file{ctexsize.sty} {\from{\jobname.dtx}{package,ctexsize}}
+ \file{ctex.sty} {\from{\jobname.dtx}{style,ctex}}
+ \file{ctexcap.sty} {\from{\jobname.dtx}{ctexcap}}
+ \file{ctexsize.sty} {\from{\jobname.dtx}{style,ctexsize}}
+ \file{ctexheading.sty} {\from{\jobname.dtx}{style,ctexheading}}
\file{ctexart.cls} {\from{\jobname.dtx}{class,article}}
\file{ctexbook.cls} {\from{\jobname.dtx}{class,book}}
\file{ctexrep.cls} {\from{\jobname.dtx}{class,report}}
@@ -320,6 +323,7 @@ This package consists of the file ctex.dtx, and the derived files
\Msg{* ctex.sty *}
\Msg{* ctexcap.sty *}
\Msg{* ctexsize.sty *}
+\Msg{* ctexheading.sty *}
\Msg{* ctexart.cls *}
\Msg{* ctexbook.cls *}
\Msg{* ctexrep.cls *}
@@ -380,10 +384,10 @@ This package consists of the file ctex.dtx, and the derived files
%</internal>
%<*!(readme|install|zhmap|spa)>
%<*!(c19|c70|ctexspa)>
-%<*driver|package|class>
+%<*driver|class|style|ctexcap>
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-%</driver|package|class>
+%</driver|class|style|ctexcap>
%<.!(readme|install|zhmap|spa|c19|c70|ctexspa)>\ctexPutVersion
%<*driver>
\InputIfFileExists{ctex.ver}{}{
@@ -392,12 +396,14 @@ This package consists of the file ctex.dtx, and the derived files
{ctex source file}
\ProvidesExplFile{\ExplFileName.\ExplFileExtension}
%</driver>
-%<style> {Chinese adapter in LaTeX (CTEX)}
-%<style>\ProvidesExplPackage{\ExplFileName}
+%<ctex> {Chinese adapter in LaTeX (CTEX)}
+%<ctex>\ProvidesExplPackage{\ExplFileName}
%<ctexcap> {Chinese adapter in LaTeX (CTEX)}
%<ctexcap>\ProvidesExplPackage{ctexcap}
%<ctexsize> {Chinese font size definition (CTEX)}
%<ctexsize>\ProvidesExplPackage{ctexsize}
+%<ctexheading> {Heading style modification (CTEX)}
+%<ctexheading>\ProvidesExplPackage{ctexheading}
%<class&article> {Chinese adapter for class article (CTEX)}
%<class&article>\ProvidesExplClass{ctexart}
%<class&book> {Chinese adapter for class book (CTEX)}
@@ -460,7 +466,7 @@ This package consists of the file ctex.dtx, and the derived files
%<founder>\ProvidesExplFile{ctex-fontset-founder.def}
%<ubuntu> {Ubuntu fonts definition (CTEX)}
%<ubuntu>\ProvidesExplFile{ctex-fontset-ubuntu.def}
- {\ExplFileDate}{2.0.2}{\ExplFileDescription}
+ {\ExplFileDate}{2.1}{\ExplFileDescription}
%</!(c19|c70|ctexspa)>
%<rm&c19>\ProvidesFile{c19rm.fd}%
%<sf&c19>\ProvidesFile{c19sf.fd}%
@@ -469,8 +475,8 @@ This package consists of the file ctex.dtx, and the derived files
%<sf&c70>\ProvidesFile{c70sf.fd}%
%<tt&c70>\ProvidesFile{c70tt.fd}%
%<ctexspa>\ProvidesFile{ctexspa.def}%
-%<c19|c70> [2015/05/15 v2.0.2 Chinese font definition (CTEX)]
-%<ctexspa> [2015/05/15 v2.0.2 Space info for CJKpunct (CTEX)]
+%<c19|c70> [2015/05/15 v2.1 Chinese font definition (CTEX)]
+%<ctexspa> [2015/05/15 v2.1 Space info for CJKpunct (CTEX)]
%</!(readme|install|zhmap|spa)>
%<*driver>
\ExplSyntaxOff
@@ -491,14 +497,17 @@ This package consists of the file ctex.dtx, and the derived files
\usepackage[toc]{multitoc}
\usepackage{geometry}
\usepackage{tabularx}
+\usepackage{siunitx}
\usepackage{unicode-math}
\geometry{includemp,hmargin={0mm,15mm},vmargin={25mm,15mm},footskip=7mm}
-\hypersetup{pdfstartview=FitH,bookmarksdepth=subsubsection}
+\hypersetup{pdfstartview=FitH,bookmarksdepth=subparagraph}
\setcounter{secnumdepth}{4}
\setcounter{tocdepth}{2}
\newcommand*\email{\nolinkurl}
\setmainfont{TeX Gyre Pagella}
-\setsansfont{CMU Sans Serif}
+\setsansfont[
+ BoldFont = * Semibold,
+ BoldItalicFont = * Semibold Italic]{Source Sans Pro}
\setmonofont[
UprightFont=* Light, BoldFont=* Bold,
SlantedFont=* Light Oblique]{CMU Typewriter Text}
@@ -535,6 +544,11 @@ This package consists of the file ctex.dtx, and the derived files
\patchcmd{\@getpen}{\@M}{\@Mi}
{\typeout{*** SUCCESS ***}}{\typeout{*** FAIL ***}}
%% --->
+%% 不对代码实现的 \section 以下标题编目录。
+\AtBeginEnvironment{implementation}{%
+ \ifnum\value{tocdepth}>\@ne
+ \addtocontents{toc}{\noexpand\value{tocdepth}=1\relax}%
+ \fi}
\ifxetex
\let\ctexdocverbaddon\xeCJKVerbAddon
\def\ctexdisableecglue{\xeCJKsetup{CJKecglue}}
@@ -545,10 +559,12 @@ This package consists of the file ctex.dtx, and the derived files
\appto\meta@font@select{\ctexdisableecglue}
\fi
\setlist{noitemsep,topsep=\smallskipamount}
+\setlist[1]{labelindent=\parindent}
+\setlist[itemize]{leftmargin=*}
\newlist{optdesc}{description}{3}
%% 设置间距为 \marginparsep,与 l3doc 一致
\setlist[optdesc]{%
- font=\mdseries\ttfamily,align=right,
+ font=\mdseries\small\ttfamily,align=right,
labelsep=\marginparsep,labelindent=-\marginparsep,leftmargin=*}
\fvset{
fontsize=\small,baselinestretch=1,numbersep=5pt,
@@ -559,6 +575,7 @@ This package consists of the file ctex.dtx, and the derived files
frame=single,framesep=10pt,
label=\rule{0pt}{12pt}\textnormal{\bfseries 例 \arabic{ctexexam}},
listparameters=
+ \setlength\topsep{\bigskipamount}%
\refstepcounter{ctexexam}\ctexexamlabelref
\appto\FV@EndList{\nointerlineskip}}
\define@key{FV}{labelref}{\def\ctexexamlabelref{\label{#1}}}
@@ -581,8 +598,14 @@ This package consists of the file ctex.dtx, and the derived files
\appto\MacroFont{\hyphenchar\font\m@ne\ctexdocverbaddon}
\preto\AltMacroFont{\linespread{1}}
\appto\AltMacroFont{\hyphenchar\font\m@ne\ctexdocverbaddon}
-\def\Module#1{\mbox{\normalfont\sffamily\textlangle#1\textrangle}}
+\def\Module#1{\mbox{%
+ \color{purple}\footnotesize\normalfont\sffamily\textlangle#1\textrangle}}
\ExplSyntaxOn
+\cs_new_nopar:Npn \zihaopt #1
+ {
+ \exp_last_unbraced:Nf \tl_head:w
+ { \prop_item:Nn \c__ctex_font_size_prop {#1} } { } \q_stop
+ }
%% 用 \vtop 让函数名字和语法盒子首行对齐
\patchcmd \__codedoc_syntax:w
{ { minipage } { \l__codedoc_syntax_dim } }
@@ -680,7 +703,11 @@ This package consists of the file ctex.dtx, and the derived files
\patchcmd\l@section{2.5em}{1.5em}{}{}
\patchcmd\l@subsection{2.5em}{1.5em}{}{}
\patchcmd\changes@{\space}{\lbrack}{}{}
-\patchcmd\@wrglossary{hdpindex}{hdclindex{\the\c@HD@hypercount}}{}{}
+\patchcmd\@wrglossary{hdpindex}{%
+ \ifnum\c@HD@hypercount=\z@
+ hdpindex%
+ \else
+ hdclindex{\the\c@HD@hypercount}\fi}{}{}
\newenvironment{defaultcapconfig}{%
\MakePercentComment
\input{ctex-name-utf8.cfg}%
@@ -719,9 +746,11 @@ This package consists of the file ctex.dtx, and the derived files
%
% \changes{v2.0}{2014/03/06}{应用 \LTXIII{} 重新整理代码。}
% \changes{v2.0}{2014/03/12}{删除 \file{c19gbsn.fd} 和 \file{c19gkai.fd}。}
+% \changes{v2.1}{2015/05/18}{将章节标题设置功能提取到可以独立使用的宏包
+% \pkg{ctexheading} 中。}
%
%
-% \CheckSum{4369}
+% \CheckSum{4523}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -741,23 +770,23 @@ This package consists of the file ctex.dtx, and the derived files
%
% \GetFileInfo{\jobname.dtx}%
%
-% \title{\bfseries \CTeX{} 套件手册}
+% \title{\bfseries \CTeX{} 宏集手册}
% \author{\href{http://www.ctex.org}{ctex.org}}
% \date{\filedate\qquad\fileversion\thanks{\ctexkitrev{\ctexrevnum}.}}
% \maketitle
%
% \begin{abstract}
-% \CTeX{} 套件是面向中文排版的通用 \LaTeX{} 排版框架,为中文 \LaTeX{} 文档
+% \CTeX{} 宏集是面向中文排版的通用 \LaTeX{} 排版框架,为中文 \LaTeX{} 文档
% 提供了汉字输出支持、标点压缩、字体字号命令、标题文字汉化、中文版式调整、数字
% 日期转换等支持功能,可适应论文、报告、书籍、幻灯片等不同类型的中文文档。
%
-% \CTeX{} 套件支持 \LaTeX{}、\pdfLaTeX{}、\XeLaTeX{} 和 \LuaLaTeX{} 等多种不同
+% \CTeX{} 宏集支持 \LaTeX{}、\pdfLaTeX{}、\XeLaTeX{} 和 \LuaLaTeX{} 等多种不同
% 的编译方式,并为它们提供了统一的界面。主要功能由宏包 \pkg{ctex} 和中文文档类
% \cls{ctexart}、\cls{ctexrep}、\cls{ctexbook} 实现。
% \end{abstract}
%
-% \clearpage
% \tableofcontents
+%
% \clearpage
% \setlength{\parskip}{0.8ex}
%
@@ -767,7 +796,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsection*{历史}
%
-% \CTeX{} 套件的源头有两个:一是王磊编写的 \cls{cjkbook} 文档类,二是吴凌云编写的
+% \CTeX{} 宏集的源头有两个:一是王磊编写的 \cls{cjkbook} 文档类,二是吴凌云编写的
% \file{GB.cap}。
% 这些工作没有经过认真、系统的设计,也没有用户文档,不利于维护和改进。
%
@@ -783,7 +812,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% 2014 年 3 月,为了适应 \LaTeX{} 的最新发展,特别是 \LTXIII{} 的逐渐成熟,李清用
% \LTXIII{} 重构了整个宏包的代码,并重新使用 \pkg{doc} 和 \pkg{DocStrip} 工具进行代码
-% 的管理,升级版本号为 2.0,并改称 \CTeX{} 套件。
+% 的管理,升级版本号为 2.0,并改称 \CTeX{} 宏集。
%
% 2015 年 3 月,由于 Google Code 即将停止服务,ctex-kit 项目迁移至
% \href{https://github.com/CTeX-org/ctex-kit}{GitHub}^^A
@@ -796,60 +825,64 @@ This package consists of the file ctex.dtx, and the derived files
% 这些困难里,以章节标题的中文化为最。由于中文和西文语言习惯的差异,用户很难使用标准
% 文档类中的代码结构来表达中文标题。于是,用户不得不对标准文档类做较大的修改。
% 除此之外,日期格式、首行缩进、中文字号和字距等细节问题,也需要精细的调校。
-% 我们设计 \CTeX{} 套件的目的之一就是解决这些 \LaTeX{} 文档的汉化难题。
+% 我们设计 \CTeX{} 宏集的目的之一就是解决这些 \LaTeX{} 文档的汉化难题。
%
% 另一方面,随着 \TeX{} 引擎和 \LaTeX{} 宏包的不断发展,\LaTeX{} 的中文支持方式从早期的
% 专用系统(如 \pkg{CCT})发展为适用于不同引擎的多种方式^^A
% \footnote{比如:\pdfTeX{} 引擎下的 \pkg{CJK}、\pkg{zhmCJK}宏包、
% \XeTeX{} 引擎下的 \pkg{xeCJK} 宏包和 \LuaTeX{} 引擎下的 \pkg{LuaTeX-ja} 宏
% 包}。这些方式的适用情况和使用方式有不少细节上的差异,同时操作系统的不同、语言环境的不同等
-% 客观情况又进一步带来了更多的细节差异。我们设计 \CTeX{} 套件的另一个主要目的就是
+% 客观情况又进一步带来了更多的细节差异。我们设计 \CTeX{} 宏集的另一个主要目的就是
% 尽可能消除这些差异带来的影响,使用户能够以一个统一的接口来使用不同的中文支持方式,
% 使得同一份文档能够在不同环境下交换使用。
%
-% \CTeX{} 套件的许多实现细节离不开热心朋友们在 \url{bbs.ctex.org} 论坛上的讨论,
+% \CTeX{} 宏集的许多实现细节离不开热心朋友们在 \url{bbs.ctex.org} 论坛上的讨论,
% 在此对参与讨论的朋友们表示感谢。
%
-% \subsection*{关于套件名字的说明}
+% \subsection*{关于宏集名字的说明}
%
% \CTeX{} 之名是英文单词 China(中国)或 Chinese(中文)的首字母“C”与 “\TeX{}”
% 结合而成的。在纯文本环境下,该名字应写作“CTeX”。
%
-% \CTeX{} 套件是由 \href{http://bbs.ctex.org}{\CTeX{} 社区} 发起并维护的
-% LaTeX 宏包和文档类的集合。
+% \CTeX{} 宏集是由 \href{http://bbs.ctex.org}{\CTeX{} 社区} 发起并维护的
+% LaTeX \emph{宏包和文档类的集合}。
% 社区另有发布名为 \href{http://www.ctex.org/CTeX}{\CTeX{} 套装}
-% 的 \TeX{} 发行版,与本文档所述的 \CTeX{} 套件并非是同一事物。
+% 的 \TeX{} 发行版,与本文档所述的 \CTeX{} 宏集并非是同一事物。
%
-% ctex 则是本套件中的 \pkg{ctex.sty} 的名字。这一完全小写的名称,在过去也被用来指代
-% 整个 \CTeX{} 套件,不过现在则特指 \pkg{ctex.sty} 这一宏包。
+% \pkg{ctex} 则是本宏集中的 \pkg{ctex.sty} 的名字。这一完全小写的名称,在过去
+% 也被用来指代整个 \CTeX{} 宏集,不过现在则特指 \pkg{ctex.sty} 这一宏包。
+% 在不引起歧义的情况下,它也可以沿用过去的习惯,代指整个宏集。
%
% \section{简明教程}
%
-% \subsection{\CTeX{} 套件的组成}
+% \subsection{\CTeX{} 宏集的组成}
%
-% 为了适应用户不同的需求,我们将 \CTeX{} 套件的主要功能分散在三个中文文档类和三个宏包当中,
-% 具体的组成见表~\ref{tab:ctex}。
+% 为了适应用户不同的需求,我们将 \CTeX{} 宏集的主要功能分散在三个中文文档类和
+% 四个宏包当中,具体的组成见表~\ref{tab:ctex}。
%
% \begin{table}[htbp]
% \centering
-% \caption{\CTeX{} 套件的组成}\label{tab:ctex}
+% \caption{\CTeX{} 宏集的组成}\label{tab:ctex}
% \begin{tabularx}{\linewidth}{llX}
% \toprule
% 类别 & 文件 & 说明 \\
% \midrule
-% 文档类 & \file{ctexart.cls} & 标准文档类 \cls{article} 的中文化版本,一般适用于
+% 文档类 & \file{ctexart.cls} & 标准文档类 \cls{article} 的汉化版本,一般适用于
% 短篇幅的文章 \\
-% & \file{ctexrep.cls} & 标准文档类 \cls{report} 的中文化版本,一般适用于
+% & \file{ctexrep.cls} & 标准文档类 \cls{report} 的汉化版本,一般适用于
% 中篇幅的报告 \\
-% & \file{ctexbook.cls} & 标准文档类 \cls{book} 的中文化版本,一般适用于
+% & \file{ctexbook.cls} & 标准文档类 \cls{book} 的汉化版本,一般适用于
% 长篇幅的书籍 \\
% \midrule
% 宏包 & \file{ctex.sty} & 提供全部功能,但\emph{默认不开启章节标题设置功能},
% 需要使用 \opt{heading} 选项来开启 \\
% & \file{ctexcap.sty} & \emph{过时宏包,仅作兼容使用},相当于开启章节标题
% 设置功能的 \file{ctex.sty} \\
-% & \file{ctexsize.sty} & 定义和调整中文字号,可在 \pkg{ctex} 宏包
-% 或 \CTeX{} 中文文档类之外单独调用 \\
+% & \file{ctexsize.sty} & 定义和调整中文字号,在 \pkg{ctex} 宏包
+% 或 \CTeX{} 中文文档类之外单独调用 \\
+% & \file{ctexheading.sty} & 提供章节标题设置功能的(见 \ref{sec:secstyle}
+% 节),在 \pkg{ctex} 宏包或 \CTeX{} 中文
+% 文档类之外单独调用 \\
% \bottomrule
% \end{tabularx}
% \end{table}
@@ -857,9 +890,9 @@ This package consists of the file ctex.dtx, and the derived files
% \subsection{使用 \CTeX{} 文档类}
%
% \emph{如果用户需要在标准文档类的基础上添加中文支持和中文版式支持,我们建议用户使用 \CTeX{}
-% 套件提供的三个中文文档类。}
+% 宏集提供的三个中文文档类。}
%
-% \CTeX{} 套件提供了三个中文文档类:\cls{ctexart}、\cls{ctexrep} 和 \cls{ctexbook},
+% \CTeX{} 宏集提供了三个中文文档类:\cls{ctexart}、\cls{ctexrep} 和 \cls{ctexbook},
% 分别对应 \LaTeX{} 的标准文档类 \cls{article}、\cls{report} 和 \cls{book}。使用它们
% 的时候,需要将涉及到的所有源文件使用 UTF-8 编码保存^^A
% \footnote{使用 (pdf)\LaTeX{} 时也能够使用 GBK 编码,但不推荐。
@@ -910,25 +943,26 @@ This package consists of the file ctex.dtx, and the derived files
% \section{依赖与安装}
%
% \CTeX{} 是一个 \LaTeX{} 宏包,只有一个源文件 \file{ctex.dtx}。
-% 使用不同的编译方式时,\CTeX{} 依赖的宏包略有不同。在安装 \CTeX{} 套件之前,请确保
+% 使用不同的编译方式时,\CTeX{} 依赖的宏包略有不同。在安装 \CTeX{} 宏集之前,请确保
% 你的系统里已经正确安装了这些宏包。\CTeX{} 依赖宏包的详情叙述如下:
%
% \begin{itemize}
% \item \pkg{expl3}、\pkg{xparse} 和 \pkg{l3keys2e} 宏包。它们属于 \pkg{l3kernel}
-% 和 \pkg{l3packages} 套件,它们还依赖
+% 和 \pkg{l3packages} 宏集,它们还依赖
% \begin{itemize}
% \item \pkg{etex} 宏包。
% \end{itemize}
-% \item \pkg{ifpdf} 宏包,属于 \pkg{oberdiek} 套件。
+% \item \pkg{indentfirst} 宏包,属于 \pkg{tools} 宏集。
% \item \pkg{etoolbox} 宏包。
-% \item \pkg{everysel} 宏包,属于 \pkg{ms} 套件。
+% \item \pkg{everysel} 宏包,属于 \pkg{ms} 宏集。
% \item \pkg{zhnumber} 宏包。
-% \item[$\Rightarrow$] 以上是各种编译方式都必需的依赖项。
-% \item \pkg{CJK} 套件,它的下划线功能依赖 \pkg{ulem} 宏包。
+% \item[\ding{229}] 以上是各种编译方式都必需的依赖项。
+% \item \pkg{CJK} 宏集,它的下划线功能依赖 \pkg{ulem} 宏包。
% \item \pkg{CJKpunct} 宏包。
+% \item \pkg{xCJK2uni} 宏包。
% \item \pkg{zhmetrics} 宏包。
% \item \pkg{zhmCJK} 宏包。
-% \item[$\Rightarrow$] 以上是使用 \pdfLaTeX{} 或 \LaTeX{} + \dvipdfmx{} 的编译方式所需要
+% \item[\ding{229}] 以上是使用 \pdfLaTeX{} 或 \LaTeX{} + \dvipdfmx{} 的编译方式所需要
% 的依赖项,其中 \pkg{zhmCJK} 是可选的。
% \item \pkg{xeCJK} 宏包,它还依赖
% \begin{itemize}
@@ -938,22 +972,22 @@ This package consists of the file ctex.dtx, and the derived files
% \item \pkg{xunicode} 宏包,它还依赖 \pkg{tipa} 宏包。
% \end{itemize}
% \end{itemize}
-% \item[$\Rightarrow$] 以上是使用 \XeLaTeX{} 编译时的依赖项。
-% \item \pkg{LuaTeX-ja} 套件,它还依赖
+% \item[\ding{229}] 以上是使用 \XeLaTeX{} 编译时的依赖项。
+% \item \pkg{LuaTeX-ja} 宏集,它还依赖
% \begin{itemize}
% \item \pkg{luaotfload} 宏包,它还依赖 \pkg{luatexbase} 宏包。
% \item \pkg{xkeyval} 宏包。
% \end{itemize}
-% \item[$\Rightarrow$] 以上是使用 \LuaLaTeX{} 编译时的依赖项。
+% \item[\ding{229}] 以上是使用 \LuaLaTeX{} 编译时的依赖项。
% \end{itemize}
%
-% \CTeX{} 依赖的各个宏包和套件均已被 \TeXLive{} 和 \hologo{MiKTeX} 收录。如果
+% \CTeX{} 依赖的各个宏包和宏集均已被 \TeXLive{} 和 \hologo{MiKTeX} 收录。如果
% 你是这两个 \TeX{} 发行版的用户,可以使用他们提供的宏包管理器来安装这些宏包,或将他们
% 更新到最新版本。如果你不使用这两个发行版,请参考你使用的 \TeX{} 发行版和相关宏包
% 的说明文档。
%
% 出于一些原因,\pkg{zhmCJK} 尚未被收入 \TeXLive{} 和 \hologo{MiKTeX}。因此,若
-% 你希望使用 \pkg{zhmCJK} 作为 \CTeX{} 套件的底层中文支持方式,需要自行安装该宏包。
+% 你希望使用 \pkg{zhmCJK} 作为 \CTeX{} 宏集的底层中文支持方式,需要自行安装该宏包。
% \pkg{zhmCJK} 的安装较为复杂。我们建议你从 CTAN 下载 \pkg{zhmCJK} 的
% \href{http://mirrors.ctan.org/install/language/chinese/zhmcjk.tds.zip}{TDS
% 安装包},按目录结构将文件复制到 \TeX{} 发行版的本地 TDS 根目录,然后刷新文件
@@ -971,19 +1005,19 @@ This package consists of the file ctex.dtx, and the derived files
% \section{宏包选项与 \tn{ctexset} 命令}
% \label{sec:options}
%
-% \CTeX{} 套件已经尽可能就中文的行文和版式习惯做了调整和配置,通常而言,这些配置
-% 已经够用。因此,除非必要,我们不建议普通用户修改这些默认配置。如果你认为 \CTeX{} 套件
+% \CTeX{} 宏集已经尽可能就中文的行文和版式习惯做了调整和配置,通常而言,这些配置
+% 已经够用。因此,除非必要,我们不建议普通用户修改这些默认配置。如果你认为 \CTeX{} 宏集
% 的默认配置还可以完善,可以在项目主页上
% \href{https://github.com/CTeX-org/ctex-kit/issues}{提交 issue},
% 向我们反映,我们会酌情在后续版本中予以改进。
%
-% 不过,\CTeX{} 套件也提供了一系列选项。用户可以使用这些选项来控制 \CTeX{} 套件的行为。
+% 不过,\CTeX{} 宏集也提供了一系列选项。用户可以使用这些选项来控制 \CTeX{} 宏集的行为。
% 具体来说,这些选项里,有的以传统的方式提供,
% 也有的以 \meta{key}|=|\meta{value} 的形式提供。对于以键值对形式提供的选项,
% 在下面的说明中使用\textbf{粗体}来表示 \CTeX{} 的默认设置。
%
% 另一方面,在这些选项里,有些选项只能作为宏包/文档类选项,需要在引入宏包/文档类的时候指定;
-% 有些选项只能通过 \CTeX{} 套件提供的用户接口 \tn{ctexset} 来设定;
+% 有些选项只能通过 \CTeX{} 宏集提供的用户接口 \tn{ctexset} 来设定;
% 也有一些选项既可以作为宏包/文档类选项,也可以通过 \tn{ctexset} 来设定。
% 后续文档中将在使用说明中对每个选项的使用方式做说明。
%
@@ -991,7 +1025,7 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{syntax}
% \tn{ctexset} \Arg{键值列表}
% \end{syntax}
-% 是 \CTeX{} 套件的通用控制命令,用来在宏包载入后控制宏包的各项功能。
+% 是 \CTeX{} 宏集的通用控制命令,用来在宏包载入后控制宏包的各项功能。
% \tn{ctexset} 的参数是一个键值列表,以通用的接口完成各项设置。
% \end{function}
%
@@ -1014,12 +1048,12 @@ This package consists of the file ctex.dtx, and the derived files
% \subsection{编译方式}
% \label{subs:compile}
%
-% \CTeX{} 套件会根据用户使用的编译方式\footnote{\LaTeX、\pdfLaTeX、\XeLaTeX 以及
+% \CTeX{} 宏集会根据用户使用的编译方式\footnote{\LaTeX、\pdfLaTeX、\XeLaTeX 以及
% \LuaLaTeX。},在底层选择不同的中文支持方式(见表 \ref{tab:chinese-support})。
%
% \begin{table}[htbp]
% \centering
-% \caption{\CTeX{} 套件的中文支持方式}
+% \caption{\CTeX{} 宏集的中文支持方式}
% \begin{tabular}{ccc}
% \toprule
% (pdf)\LaTeX & \XeLaTeX & \LuaLaTeX \\
@@ -1030,14 +1064,14 @@ This package consists of the file ctex.dtx, and the derived files
% \label{tab:chinese-support}
% \end{table}
%
-% 不同的编译方式和中文支持方式会在一定程度上影响 \CTeX{} 套件的行为,比如宏包对编码的处理。
-% 在用户使用 \XeLaTeX{} 及 \LuaLaTeX{} 编译时,\CTeX{} 套件使用(且仅能
+% 不同的编译方式和中文支持方式会在一定程度上影响 \CTeX{} 宏集的行为,比如宏包对编码的处理。
+% 在用户使用 \XeLaTeX{} 及 \LuaLaTeX{} 编译时,\CTeX{} 宏集使用(且仅能
% 使用)UTF-8 编码;而因为历史原因,在用户使用 \LaTeX{} 及 \pdfLaTeX{} 编译
% 时,宏包默认使用 GBK 编码。用户需要\emph{保证编译方式、
% 源文件编码、宏包编码选项三者一致}。
% 关于宏包编码选项,可以参考 \ref{subs:encoding}~节。
%
-% 除去文档编码之外,选择不同的编译方式还可能影响 \CTeX{} 套件对字体选择、空格处理、
+% 除去文档编码之外,选择不同的编译方式还可能影响 \CTeX{} 宏集对字体选择、空格处理、
% 标点处理的处理。具体的影响将在本文档后续内容中进行阐述。
%
% \subsection{中文编码}
@@ -1047,29 +1081,29 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{syntax}
% \OPC
% \end{syntax}
-% 指明编写文档时使用的编码格式。\CTeX{} 套件无法检测用户编写文档时使用的编码格式,因此
+% 指明编写文档时使用的编码格式。\CTeX{} 宏集无法检测用户编写文档时使用的编码格式,因此
% 需要用户自行指定编码。\emph{我们建议用户总是使用 UTF-8 编码,并显式指定 \opt{UTF8}
% 选项,并使用 \XeLaTeX{} 或 \LuaLaTeX{} 编译。}
%
-% 使用 \XeLaTeX{} 或 \LuaLaTeX{} 编译时,\CTeX{} 套件强制使用 UTF-8 编码,
+% 使用 \XeLaTeX{} 或 \LuaLaTeX{} 编译时,\CTeX{} 宏集强制使用 UTF-8 编码,
% 此时 \opt{GBK} 选项无效。
-% 使用 (pdf)\LaTeX{} 编译时,\CTeX{} 套件默认启用 \opt{GBK} 选项;不过,用户也可以
-% 显式声明 \opt{UTF8} 选项,使 \CTeX{} 套件工作在 UTF-8 编码下。
+% 使用 (pdf)\LaTeX{} 编译时,\CTeX{} 宏集默认启用 \opt{GBK} 选项;不过,用户也可以
+% 显式声明 \opt{UTF8} 选项,使 \CTeX{} 宏集工作在 UTF-8 编码下。
% \end{function}
%
% \subsection{中文字库}
% \label{subs:options-CJK-font}
%
% 以往,为 \LaTeX{} 文档配置中文支持是一件相当繁琐的事情。默认情况下,
-% \CTeX{} 套件能自动检测用户使用的编译方式(参见 \ref{subs:compile}~节)和
-% 操作系统\footnote{\CTeX{} 套件现在能够识别 Mac~OS~X 系统以及 Windows 系统。},
+% \CTeX{} 宏集能自动检测用户使用的编译方式(参见 \ref{subs:compile}~节)和
+% 操作系统\footnote{\CTeX{} 宏集现在能够识别 Mac~OS~X 系统以及 Windows 系统。},
% 选择合适的底层支持和字库,从而简化配置过程。自动配置的情况参见
% 表~\ref{tab:default-font-select}。
%
% \begin{table}[htbp]
% \centering
% \begin{threeparttable}
-% \caption{\CTeX{} 套件自动配置字体策略}
+% \caption{\CTeX{} 宏集自动配置字体策略}
% \label{tab:default-font-select}
% \begin{tabular}{*{5}{c}}
% \toprule
@@ -1106,7 +1140,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{threeparttable}
% \end{table}
%
-% 通常,由 \CTeX{} 套件进行的自动配置已经足够使用,无需用户手工干预;但
+% 通常,由 \CTeX{} 宏集进行的自动配置已经足够使用,无需用户手工干预;但
% 是 \CTeX{} 仍然提供了一系列选项,供在 \CTeX{} 的自动选择机制因为
% 意外情况失效,或者在用户有特殊需求的情况下使用。\emph{除非必要,用户不
% 应使用这些选项。}
@@ -1118,15 +1152,18 @@ This package consists of the file ctex.dtx, and the derived files
% \end{syntax}
% 指定字体映射机制。
% \end{function}
+% \begin{optdesc}
+% \item[true] 使用 \pkg{zhmetrics} 宏包,将 CJK 字库通过 \tn{special}
+% 命令映射到 \file{.ttf} 文件。
%
-% 选项为 \opt{true} 时,使用 \pkg{zhmetrics} 宏包,将 CJK 字库
-% 通过 \tn{special} 命令映射到 \file{.ttf} 文件;
-% 选项为 \opt{false} 时,使用传统的 CJK 字库(Type 1)^^A
-% \footnote{如果需要使用自定义的字体映射文件,或者希望使用 Type1 字库,请禁用本选项。};
-% 选项为 \opt{zhmCJK} 时,将载入 \pkg{zhmCJK} 宏包^^A
+% \item[false] 使用传统的 CJK 字库(Type 1)^^A
+% \footnote{如果需要使用自定义的字体映射文件,或者希望使用 Type1 字库,请禁用本选项。}。
+%
+% \item[zhmCJK] 载入 \pkg{zhmCJK} 宏包^^A
% \footnote{\pkg{zhmCJK} 宏包基于 \pkg{zhmetrics} 和 \pkg{CJK} 宏包,提供与
% \pkg{xeCJK} 宏包类似的用户接口。}^^A
% ,由 \pkg{zhmCJK} 宏包提供从 CJK 字库到 \file{.ttf} 的映射。
+% \end{optdesc}
%
% \begin{function}{fontset}
% \begin{syntax}
@@ -1134,9 +1171,9 @@ This package consists of the file ctex.dtx, and the derived files
% <none|adobe|fandol|founder|mac|ubuntu|windows|windowsnew|windowsold...>
% \OBOTH
% \end{syntax}
-% 指定 \CTeX{} 套件加载的字库。
+% 指定 \CTeX{} 宏集加载的字库。
%
-% 如果没有指定 \opt{fontset} 的值,\CTeX{} 套件将自动检测用户使用的操作系统,配置
+% 如果没有指定 \opt{fontset} 的值,\CTeX{} 宏集将自动检测用户使用的操作系统,配置
% 相应的字体(参见表~\ref{tab:default-font-select})。
% \end{function}
%
@@ -1167,11 +1204,11 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{optdesc}
% \item[none] 不配置中文字体,需要用户自己配置。
% \item[\meta{name}] 这里 \meta{name} 为自定义的名字。
-% \CTeX{} 套件将载入名为 |ctex-fontset-|\meta{name}|.def| 的文件作为字体配置
+% \CTeX{} 宏集将载入名为 |ctex-fontset-|\meta{name}|.def| 的文件作为字体配置
% 文件。因此,请先保证文件的存在。可以在当前工作目录或者本地 \texttt{TDS} 目录
% 树下合适位置建立一个名为 |ctex-fontset-|\meta{name}|.def| 的文件,在这个文件
% 里面自定义中文字体。然后通过使用 |fontset=|\meta{name} 选项来调用它。字体配置
-% 文件的具体写法可以参考 \CTeX{} 套件 \texttt{fontset} 目录下的字体配置文件。
+% 文件的具体写法可以参考 \CTeX{} 宏集 \texttt{fontset} 目录下的字体配置文件。
% \end{optdesc}
%
% 注意:\emph{如果希望使用 \tn{ctexset} 在导言区指定字库,则需要先在宏包/文档类选项中指定
@@ -1185,7 +1222,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{document}
% \end{ctexexam}
%
-% \CTeX{} 套件预定义的中文字库还定义了一些字体命令。
+% \CTeX{} 宏集预定义的中文字库还定义了一些字体命令。
%
% \begin{optdesc}
% \item[\tn{songti}] 宋体,CJK 等价命令 |\CJKfamily{zhsong}|。
@@ -1214,16 +1251,14 @@ This package consists of the file ctex.dtx, and the derived files
% zihao = <-4|5|false>
% \OPC
% \end{syntax}
-% 将文章默认字号(\tn{normalsize})设置为小四号字或五号字,\tn{false} 禁用本功能。
-% 这两个选项可以用于三个 \CTeX{} 文档类和 \pkg{ctex} 宏包,
+% 将文章默认字号(\tn{normalsize})设置为小四号字或五号字,
+% 具体情况见表 \ref{tab:fontsize}。\opt{false} 禁用本功能。
+% 本选项可以用于三个 \CTeX{} 文档类和 \pkg{ctex} 宏包,
% 也可以用于 \pkg{ctexsize} 宏包。
%
% \opt{scheme = chinese} 时,默认值为 |5|,即设置 \tn{normalsize} 为五号字。
% \end{function}
%
-% \opt{cs4size} 和 \opt{c5size} 选项还会将标准文档类中的字体大小命令调整为
-% 中文字号(见表 \ref{tab:fontsize})。
-%
% \begin{table}[htbp]
% \centering
% \setlength\tabcolsep{1em}
@@ -1277,14 +1312,14 @@ This package consists of the file ctex.dtx, and the derived files
% heading = <\TFF>
% \opos{该选项只能在调用 \pkg{ctex.sty} 时作为宏包选项使用}
% \end{syntax}
-% \CTeX{} 套件提供了一套用于修改文档章节标题格式的接口。该选项用于选择是否
+% \CTeX{} 宏集提供了一套用于修改文档章节标题格式的接口。该选项用于选择是否
% 启用该功能。详细的设置方法请参见
% \ref{sec:secstyle}~节和 \ref{subs:pagestyle}~节。
% \end{function}
%
-% \CTeX{} 套件提供的三个文档类总是启用该功能。如果在 \pkg{ctex.sty} 下启用该选项,
+% \CTeX{} 宏集提供的三个文档类总是启用该功能。如果在 \pkg{ctex.sty} 下启用该选项,
% 将会检查当前是否使用 \LaTeX{} 标准文档类。
-% 若然,则该选项将会使得 \pkg{ctex.sty} 宏包的行为和 \CTeX{} 套件提供的
+% 若然,则该选项将会使得 \pkg{ctex.sty} 宏包的行为和 \CTeX{} 宏集提供的
% 三个中文文档类\emph{完全}一致;若不然,则会根据 \tn{chapter}
% 是否有定义来使用 \cls{ctexbook} 或者 \cls{ctexart} 的标题设置。
%
@@ -1317,6 +1352,7 @@ This package consists of the file ctex.dtx, and the derived files
% \OPC
% \end{syntax}
% 选择文章的排版方案,预设有 \opt{chinese} 和 \opt{plain} 两种方案。%
+% \end{function}
% \begin{optdesc}
% \item[chinese] 调整默认字号为五号字,并调整行距为 |1.3|;
% 汉化文档中的标题名字(如“图”、“表”、“目录”和“参考文献”,
@@ -1327,11 +1363,10 @@ This package consists of the file ctex.dtx, and the derived files
% 中文样式(见 \ref{sec:secstyle}~节)。当 \pkg{ctex} 宏包与标准文档类及其
% 衍生文档类联用时,会载入 \pkg{indentfirst} 宏包,
% 以实现章节标题后的段首缩进。
-% \item[plain] 不调整默认字号和行距,不会汉化文档中的标题名字,也不会将章节标题风格
-% 修改为中文样式,同时不会 \tn{pagestyle},并禁用 \opt{autoindent}
-% 选项。事实上,此时的 \CTeX{} 套件只提供了中文支持功能,而不对文章版式进行任何修改。
+% \item[plain] 不调整默认字号和行距,不会汉化文档中的标题名字,也不会将章节
+% 标题风格修改为中文样式,同时不会调整 \tn{pagestyle},并禁用 \opt{autoindent}
+% 选项。事实上,此时的 \CTeX{} 宏集只提供了中文支持功能,而不对文章版式进行任何修改。
% \end{optdesc}
-% \end{function}
%
% \begin{function}{punct}
% \begin{syntax}
@@ -1340,7 +1375,6 @@ This package consists of the file ctex.dtx, and the derived files
% \end{syntax}
% 设置标点处理格式。预定义好的格式有:
% \end{function}
-%
% \begin{optdesc}
% \item[quanjiao] 全角式:所有标点占一个汉字宽度,相邻两个标点占 1.5 汉字宽度;
% \item[banjiao] 半角式:所有标点占半个汉字宽度;
@@ -1391,14 +1425,15 @@ This package consists of the file ctex.dtx, and the derived files
% linespread = <数值>
% \OPC
% \end{syntax}
-% 接受一个浮点数值,设置行距倍数。
-%
-% \opt{scheme = chinese} 时,默认值为 1.3,即 1.3 倍行距。此时,相邻两行的基线
+% 接受一个浮点数值,设置行距倍数。本选项的初始值与 \opt{scheme} 有关。
+% \end{function}
+% \begin{optdesc}
+% \item[scheme = chinese] 初始值为 $1.3$,即 $1.3$ 倍行距。此时,相邻两行的基线
% (\tn{baselineskip})距离为 $1.3\times 1.2=1.56$ 倍字体高度。
%
-% \opt{scheme = plain} 时,\CTeX{} 套件默认不调整行距倍数,文档中的行距由所选文档类和
+% \item[scheme = plain] \CTeX{} 宏集默认不调整行距倍数,文档中的行距由所选文档类和
% 其他宏包或用户设置决定。
-% \end{function}
+% \end{optdesc}
%
% \begin{function}{autoindent}
% \begin{syntax}
@@ -1406,19 +1441,19 @@ This package consists of the file ctex.dtx, and the derived files
% \OBOTH
% \end{syntax}
% 在字体大小发生变化时,是否自动调整段首缩进(\tn{parindent})的大小。
-%
-% \meta{数值 \orbar 带单位的数值} 用于设置段首缩进的长度。如果不带单位,则默认
+% \end{function}
+% \begin{optdesc}
+% \item[\meta{数值或带单位的数值}] 用于设置段首缩进的长度。如果不带单位,则默认
% 单位是单个汉字字宽 \tn{ccwd};如果带单位,则使用该单位。
%
-% \opt{autoindent = true} 等价于设置 \opt{autoindent = 2}。
+% \item[true] 等价于设置 \opt{autoindent = 2}。
%
-% 当 \opt{autoindent = false} 时,可以设置固定长度的段首缩进。如设
-% 置每段缩进 40 点:
+% \item[false] 禁用自动调整功能,可以设置固定长度的段首缩进。如设置每段缩进 40 点:
% \begin{ctexexam}
% \ctexset{autoindent=false}
% \setlength\parindent{40pt}
% \end{ctexexam}
-% \end{function}
+% \end{optdesc}
%
% \begin{function}{linestretch}
% \begin{syntax}
@@ -1428,6 +1463,7 @@ This package consists of the file ctex.dtx, and the derived files
% \opt{linestretch} 是一个比较特殊的选项,它用来设置汉字之间弹性间距的弹性程
% 度。如果有单位,则可以在选项中直接写;如果是数字,单位则是汉字宽度
% \tn{ccwd} 的倍数。
+% \end{function}
%
% 如果行宽不是汉字宽度的整数倍,为了让段落左右两端对齐,自然就要求伸展汉字之
% 间的间距,而 \opt{linestretch} 选项就是设置每行总的允许伸行量。初始值是允
@@ -1441,7 +1477,6 @@ This package consists of the file ctex.dtx, and the derived files
% 如果将 \opt{linestretch} 选项的值设置为 \tn{maxdimen},则可以禁止按字号自
% 动修改每行的允许伸长量。此时汉字间的弹性间距则固定为 \tn{baselineskip} 的
% $0.08$ 倍。
-% \end{function}
%
% \section{文档汉化}
% \label{sec:chinese-localization}
@@ -1667,6 +1702,10 @@ This package consists of the file ctex.dtx, and the derived files
% 节标题的格式设置功能。本节就来介绍有关章节标题的格式选项,所有选项使用
% \tn{ctexset} 命令设置。
%
+% 第 \ref{subs:pagestyle} 节和本节介绍的功能已经被提取到 \pkg{ctexheading}
+% 宏包之中,可以在 \pkg{ctex} 宏包和 \cls{ctexart} 等文档类之外独立使用。
+% 各选项的默认值与 \opt{scheme = plain} 时的情形相同。
+%
% \changes{v2.0}{2015/03/21}{\tn{CTEXsetup}, \tn{CTEXoptions} 是过时命令。}
% 章节标题的格式选项是分层设置的。顶层的选项是章节标题名称,次一级的选项是章节
% 标题的格式。章节标题名包括 |part|, |chapter|, |section|, |subsection|,
@@ -1678,6 +1717,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% 多级选项之间用斜线分开,例如,\opt{part/name} 选项设置 \tn{part} 标题的在数
% 字前后的名称,而 \opt{section/number} 选项设置 \tn{section} 标题的数字类型。
+% 注意斜线前后都不要有空格。
%
% \begin{function}{part/name, chapter/name, section/name, subsection/name,
% subsubsection/name, paragraph/name, subparagraph/name}
@@ -1703,8 +1743,8 @@ This package consists of the file ctex.dtx, and the derived files
% \caption{\opt{name} 选项的默认设置}
% \begin{tabular}{llll}
% \toprule
-% 标题名 & \makecell{\opt{scheme = chinese} \\ 的默认值} &
-% \makecell{\opt{scheme = plain} \\ 的默认值} & 注 \\
+% 标题名 & \opt{scheme = chinese} &
+% \opt{scheme = plain} & 注 \\
% \midrule
% part & |{第,部分}| & |{\partname\space}| & 原 \tn{partname} 为 Part \\
% chapter & |{第,章}| & |{\chaptername\space}|
@@ -1746,8 +1786,8 @@ This package consists of the file ctex.dtx, and the derived files
% \setlength\leftskip{0pt plus 1 fil minus \marginparwidth}
% \begin{tabular}{llll}
% \toprule
-% 标题名 & \makecell{\opt{scheme = chinese} \\ 的默认值} &
-% \makecell{\opt{scheme = plain} \\ 的默认值}
+% 标题名 & \opt{scheme = chinese} &
+% \opt{scheme = plain}
% & 原 |\the|\meta{标题} 等价定义 \\
% \midrule
% part & |\chinese{part}| & |\thepart| & |\Roman{part}| \\
@@ -1815,8 +1855,8 @@ This package consists of the file ctex.dtx, and the derived files
% \caption{\opt{format} 选项的默认设置}
% \begin{tabular}{lll}
% \toprule
-% 标题名 & \makecell{\opt{scheme = chinese} \\ 的默认值} &
-% \makecell{\opt{scheme = plain} \\ 的默认值} \\
+% 标题名 & \opt{scheme = chinese} &
+% \opt{scheme = plain} \\
% \midrule
% part (article) & |\centering| & |\raggedright| \\
% part & 同右 & |\centering| \\
@@ -1844,6 +1884,9 @@ This package consists of the file ctex.dtx, and the derived files
% \opt{titleformat} 选项。
%
% \opt{nameformat+} 用于在已有的章节名字格式后附加内容。
+%
+% \opt{nameformat} 选项的最后一个格式命令可以是一个有一个参数的命令。
+% 这个命令的参数用于接受章节名字和编号,实现特殊效果(见例~\ref{exam:miscopt})。
% \end{function}
%
% \begin{table}[htbp]
@@ -1851,8 +1894,8 @@ This package consists of the file ctex.dtx, and the derived files
% \caption{\opt{nameformat} 选项的默认设置}
% \begin{tabular}{lll}
% \toprule
-% 标题名 & \makecell{\opt{scheme = chinese} \\ 的默认值} &
-% \makecell{\opt{scheme = plain} \\ 的默认值} \\
+% 标题名 & \opt{scheme = chinese} &
+% \opt{scheme = plain} \\
% \midrule
% part (article) & 同右 & |\Large\bfseries| \\
% part & 同右 & |\huge\bfseries| \\
@@ -1880,6 +1923,10 @@ This package consists of the file ctex.dtx, and the derived files
%
% \opt{numberformat+} 选项用于在原有编号格式后面附加格式命令。
%
+% \opt{numberformat} 选项的最后一个格式命令可以是一个有一个参数的命令。
+% 这个命令的参数用于接受编号数字。
+% \end{function}
+%
% 例如,我们可以使用 \opt{numberformat} 特别强调章标题中的数字:
% \begin{ctexexam}
% \ctexset{
@@ -1887,22 +1934,25 @@ This package consists of the file ctex.dtx, and the derived files
% chapter/numberformat = \color{blue}\zihao{0}\itshape,
% }
% \end{ctexexam}
-% 上面的代码在 |cap| 选项下可以做出类似这样的章标题效果:
+% 上面的代码在 \opt{scheme = chinese} 时可以做出类似这样的章标题效果:
% \begin{center}
% \huge\bfseries 第 \textit{\color{blue}\zihao{0}4} 章
% \end{center}
-% \end{function}
%
% \begin{function}{part/aftername, chapter/aftername, section/aftername,
% subsection/aftername, subsubsection/aftername, paragraph/aftername,
-% subparagraph/aftername}
+% subparagraph/aftername,
+% .../aftername+}
% \begin{syntax}
-% aftername=\Arg{代码}
+% aftername = \Arg{代码}
+% aftername+= \Arg{代码}
% \OSET
% \end{syntax}
% \opt{aftername} 选项的参数 \meta{代码} 将被插入到章节编号与其后的标题内容之
% 间,用于控制格式变换。常用于控制章节编号与标题内容之间的距离,或者控制标题
% 是否另起一行。
+%
+% \opt{aftername+} 选项用于在原有代码后面附加代码。
% \end{function}
%
% \begin{table}[htbp]
@@ -1910,8 +1960,8 @@ This package consists of the file ctex.dtx, and the derived files
% \caption{\opt{aftername} 选项的默认设置}
% \begin{tabular}{lll}
% \toprule
-% 标题名 & \makecell{\opt{scheme = chinese} \\ 的默认值} &
-% \makecell{\opt{scheme = plain} \\ 的默认值} \\
+% 标题名 & \opt{scheme = chinese} &
+% \opt{scheme = plain} \\
% \midrule
% part (article) & |\quad| & |\par\nobreak| \\
% part & 同右 & |\par\vskip 20pt| \\
@@ -1967,8 +2017,8 @@ This package consists of the file ctex.dtx, and the derived files
% \caption{\opt{titleformat} 选项的默认设置}
% \begin{tabular}{lll}
% \toprule
-% 标题名 & \makecell{\opt{scheme = chinese} \\ 的默认值} &
-% \makecell{\opt{scheme = plain} \\ 的默认值} \\
+% 标题名 & \opt{scheme = chinese} &
+% \opt{scheme = plain} \\
% \midrule
% part (article) & |\Large\bfseries| & |\huge\bfseries| \\
% part & |\huge\bfseries| & |\Huge\bfseries| \\
@@ -1982,6 +2032,27 @@ This package consists of the file ctex.dtx, and the derived files
% \end{tabular}
% \end{table}
%
+% \begin{function}{part/aftertitle, chapter/aftertitle, section/aftertitle,
+% subsection/aftertitle, subsubsection/aftertitle, paragraph/aftertitle,
+% subparagraph/aftertitle,
+% .../aftertitle+}
+% \begin{syntax}
+% aftertitle = \Arg{代码}
+% aftertitle+= \Arg{代码}
+% \OSET
+% \end{syntax}
+% \opt{aftertitle} 选项的参数 \meta{代码} 将被插入到章节标题内容之后。
+% 可用于控制标题内容结束后是否另起一段。
+%
+% \opt{aftertitle+} 选项用于在原有代码后面附加代码。
+%
+% \opt{aftertitle} 选项的默认值,在 \opt{scheme} 选项的不同取值下相同。
+%
+% 使用 \opt{sub3section} 或 \opt{sub4section} 宏包选项(见
+% \ref{subs:options-heading}~节)后,\tn{paragraph} 与 \tn{subparagraph}
+% 这两级标题会改为排在不同段,会影响 \opt{aftertitle} 选项的默认值。
+% \end{function}
+%
% \begin{function}{part/beforeskip, chapter/beforeskip, section/beforeskip,
% subsection/beforeskip, subsubsection/beforeskip, paragraph/beforeskip,
% subparagraph/beforeskip}
@@ -2005,8 +2076,8 @@ This package consists of the file ctex.dtx, and the derived files
% \caption{\opt{beforeskip} 选项的默认设置}
% \begin{tabular}{lll}
% \toprule
-% 标题名 & \makecell{\opt{scheme = chinese} \\ 的默认值} &
-% \makecell{\opt{scheme = plain} \\ 的默认值} \\
+% 标题名 & \opt{scheme = chinese} &
+% \opt{scheme = plain} \\
% \midrule
% part (article) & |4ex| & |-4ex| \\
% part & 无效 & 无效 \\
@@ -2046,6 +2117,26 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{table}[htbp]
% \begin{minipage}[t]{.5\linewidth}
% \small\centering
+% \caption{\opt{aftertitle} 选项的默认设置}
+% \begin{tabular}{ll}
+% \toprule
+% 标题名 & 默认值 \\
+% \midrule
+% part & |\par| \\
+% chapter & |\par| \\
+% section & |\@@par| \\
+% subsection & |\@@par| \\
+% subsubsection & |\@@par| \\
+% paragraph & |{}| \\
+% \qquad(sub3section) & |\@@par| \\
+% \qquad(sub4section) & 同上 \\
+% subparagraph & |{}| \\
+% \qquad(sub4section) & |\@@par| \\
+% \bottomrule
+% \end{tabular}
+% \end{minipage}%
+% \begin{minipage}[t]{.5\linewidth}
+% \small\centering
% \caption{\opt{afterskip} 选项的默认设置}
% \begin{tabular}{ll}
% \toprule
@@ -2065,26 +2156,6 @@ This package consists of the file ctex.dtx, and the derived files
% \bottomrule
% \end{tabular}
% \end{minipage}%
-% \begin{minipage}[t]{.5\linewidth}
-% \small\centering
-% \caption{\opt{indent} 选项的默认设置}
-% \begin{tabular}{ll}
-% \toprule
-% 标题名 & 默认值 \\
-% \midrule
-% part (article) & |0pt| \\
-% part & 无效 \\
-% chapter & |0pt| \\
-% section & |0pt| \\
-% subsection & |0pt| \\
-% subsubsection & |0pt| \\
-% paragraph & |0pt| \\
-% subparagraph & |\parindent| \\
-% \qquad(sub3section) & |0pt| \\
-% \qquad(sub4section) & |0pt| \\
-% \bottomrule
-% \end{tabular}
-% \end{minipage}%
% \end{table}
%
% \begin{function}{part/indent, chapter/indent, section/indent,
@@ -2109,16 +2180,28 @@ This package consists of the file ctex.dtx, and the derived files
% \noindent 无缩进的正文。
% \end{ctexexam}
%
-% \begin{function}{part/pagestyle, chapter/pagestyle}
-% \begin{syntax}
-% pagestyle = \Arg{页面格式}
-% \OSET
-% \end{syntax}
-% 设置 \cls{book}/\cls{ctexbook} 或 \cls{report}/\cls{ctexrep} 文档类
-% 中,\tn{part} 与 \tn{chapter} 标题所在页的页面格式(page style)。
-% \end{function}
-%
% \begin{table}[htbp]
+% \begin{minipage}[t]{.5\linewidth}
+% \small\centering
+% \caption{\opt{indent} 选项的默认设置}
+% \begin{tabular}{ll}
+% \toprule
+% 标题名 & 默认值 \\
+% \midrule
+% part (article) & |0pt| \\
+% part & 无效 \\
+% chapter & |0pt| \\
+% section & |0pt| \\
+% subsection & |0pt| \\
+% subsubsection & |0pt| \\
+% paragraph & |0pt| \\
+% subparagraph & |\parindent| \\
+% \qquad(sub3section) & |0pt| \\
+% \qquad(sub4section) & |0pt| \\
+% \bottomrule
+% \end{tabular}
+% \end{minipage}%
+% \begin{minipage}[t]{.5\linewidth}
% \small\centering
% \caption{\opt{pagestyle} 选项的默认设置}
% \begin{tabular}{ll}
@@ -2130,8 +2213,17 @@ This package consists of the file ctex.dtx, and the derived files
% chapter & |plain| \\
% \bottomrule
% \end{tabular}
+% \end{minipage}%
% \end{table}
%
+% \begin{function}{part/pagestyle, chapter/pagestyle}
+% \begin{syntax}
+% pagestyle = \Arg{页面格式}
+% \OSET
+% \end{syntax}
+% 设置 \cls{book}/\cls{ctexbook} 或 \cls{report}/\cls{ctexrep} 文档类
+% 中,\tn{part} 与 \tn{chapter} 标题所在页的页面格式(page style)。
+% \end{function}
%
% \begin{function}{appendix/name}
% \begin{syntax}
@@ -2153,12 +2245,12 @@ This package consists of the file ctex.dtx, and the derived files
% \caption{\opt{appendix/name} 选项的默认设置}
% \begin{tabular}{llllll}
% \toprule
-% 文档类 & 影响命令 & \makecell{\opt{scheme = chinese} \\ 的默认值} & 实际定义
-% & \makecell{\opt{scheme = plain} \\ 的默认值} & 实际定义 \\
+% 文档类 & 影响命令 & \opt{scheme = chinese} & 实际定义
+% & \opt{scheme = plain} & 实际定义 \\
% \midrule
% article & \tn{section} & |{}| & & |{}| & \\
-% book, report & \tn{chapter} & |\appendixname| & |附录|
-% & |\appendixname| & |Appendix| \\
+% book, report & \tn{chapter} & |\appendixname\space| & \verb*|附录 |
+% & |\appendixname\space| & \verb*|Appendix | \\
% \bottomrule
% \end{tabular}
% \end{table}
@@ -2190,6 +2282,36 @@ This package consists of the file ctex.dtx, and the derived files
% \end{tabular}
% \end{table}
%
+% 我们最后举一个稍微复杂的例子,来看看上述选项的综合应用。
+%
+% \begin{ctexexam}[labelref=exam:miscopt]
+% \ctexset {
+% chapter = {
+% format = \Huge\bfseries,
+% nameformat = \hrule height 1bp \relax\bigskip\hfill\chapternamebox,
+% number = \arabic{chapter},
+% aftername = \par\medskip,
+% titleformat = {},
+% aftertitle = \bigskip\hrule height 2bp \relax
+% }
+% }
+% \newcommand\chapternamebox[1]{%
+% \parbox{\ccwd}{\linespread{1}\selectfont\centering #1}}
+% ......
+% \chapter{熟悉 \LaTeX}
+% \end{ctexexam}
+% 本例的设置效果大致如下:
+% \begin{center}
+% \begin{minipage}{.75\linewidth}\Large\bfseries
+% \hrule height .5bp \relax
+% \medskip
+% \hfill\parbox{\ccwd}{\linespread{1}\selectfont\centering 第 1 章}
+% \par\smallskip
+% \noindent 熟悉 \LaTeX
+% \medskip\hrule height 1bp \relax
+% \end{minipage}
+% \end{center}
+%
% \section{实用命令}
% \label{sec:useful-commands}
% \subsection{字号与间距}
@@ -2204,31 +2326,30 @@ This package consists of the file ctex.dtx, and the derived files
%
% \begin{table}[htbp]
% \centering
-% \catcode`*\active
-% \def*{\phantom{.}}
-% \def~{\phantom{0}}
+% \def\ZH#1{\zihaopt{#1} & \zihao{#1}}
% \tabcolsep=1em
% \caption{中文字号}\label{tab:zihao}
-% \begin{tabular}{>{\ttfamily}ccl}
+% \begin{tabular}{>{\ttfamily}S[mode=text,detect-family,table-format=-1]
+% S[table-format=2.1]S[table-format=2.5]l}
% \toprule
-% $\meta{字号}$ & 大小(bp) & 意义 \\
+% {\meta{字号}} & {大小(bp)} & {大小(pt)} & 意义 \\
% \midrule
-% ~0 & 42*~ & \zihao{0} 初号 \\
-% -0 & 36*~ & \zihao{-0} 小初号 \\
-% ~1 & 26*~ & \zihao{1} 一号 \\
-% -1 & 24*~ & \zihao{-1} 小一号 \\
-% ~2 & 22*~ & \zihao{2} 二号 \\
-% -2 & 18*~ & \zihao{-2} 小二号 \\
-% ~3 & 16*~ & \zihao{3} 三号 \\
-% -3 & 15*~ & \zihao{-3} 小三号 \\
-% ~4 & 14*~ & \zihao{4} 四号 \\
-% -4 & 12*~ & \zihao{-4} 小四号 \\
-% ~5 & 10.5 & \zihao{5} 五号 \\
-% -5 & ~9*~ & \zihao{-5} 小五号 \\
-% ~6 & ~7.5 & \zihao{6} 六号 \\
-% -6 & ~6.5 & \zihao{-6} 小六号 \\
-% ~7 & ~5.5 & \zihao{7} 七号 \\
-% ~8 & ~5*~ & \zihao{8} 八号 \\
+% 0 & 42 & \ZH{0} 初号 \\
+% {−0} & 36 & \ZH{-0} 小初号 \\
+% 1 & 26 & \ZH{1} 一号 \\
+% -1 & 24 & \ZH{-1} 小一号 \\
+% 2 & 22 & \ZH{2} 二号 \\
+% -2 & 18 & \ZH{-2} 小二号 \\
+% 3 & 16 & \ZH{3} 三号 \\
+% -3 & 15 & \ZH{-3} 小三号 \\
+% 4 & 14 & \ZH{4} 四号 \\
+% -4 & 12 & \ZH{-4} 小四号 \\
+% 5 & 10.5 & \ZH{5} 五号 \\
+% -5 & 9 & \ZH{-5} 小五号 \\
+% 6 & 7.5 & \ZH{6} 六号 \\
+% -6 & 6.5 & \ZH{-6} 小六号 \\
+% 7 & 5.5 & \ZH{7} 七号 \\
+% 8 & 5 & \ZH{8} 八号 \\
% \bottomrule
% \end{tabular}
% \end{table}
@@ -2256,7 +2377,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsection{中文数字转换}
%
-% \CTeX{} 套件的中文数字转换功能实际上是调用 \pkg{zhnumber} 宏包来完成。下面只
+% \CTeX{} 宏集的中文数字转换功能实际上是调用 \pkg{zhnumber} 宏包来完成。下面只
% 介绍一些基本的用法,更高级的用法可以查阅 \pkg{zhnumber} 宏包的文档。
%
% \begin{function}{\chinese}
@@ -2312,7 +2433,7 @@ This package consists of the file ctex.dtx, and the derived files
% \section{\LuaLaTeX{} 下的中文支持方式}
% \label{sec:lualatex-chinese}
%
-% 在 \LuaLaTeX{} 下,\CTeX{} 套件依赖 \pkg{LuaTeX-ja} 宏包来完成中文支持。
+% 在 \LuaLaTeX{} 下,\CTeX{} 宏集依赖 \pkg{LuaTeX-ja} 宏包来完成中文支持。
% 该宏包是日本 \TeX{} 社区的北川弘典、前田一贵、八登崇之等人开发的,设计目的主要
% 是在 \LuaTeX{} 引擎下实现日本 p\TeX{} 引擎的(大部分)功能。它为了兼容 p\LaTeX
% 的使用习惯,对 \LaTeXe 的 \pkg{NFSS} 作了不少修改和扩充。这对于简体中文用户来说
@@ -2401,13 +2522,13 @@ This package consists of the file ctex.dtx, and the derived files
% 当前 CJK 字体族。清除与重置操作总是全局的。
% \end{function}
%
-% \section{\CTeX{} 套件的配置文件}
+% \section{\CTeX{} 宏集的配置文件}
%
-% \CTeX{} 套件提供了不同的配置文件,可以通过修改配置文件来改变 \CTeX{} 套件的
+% \CTeX{} 宏集提供了不同的配置文件,可以通过修改配置文件来改变 \CTeX{} 宏集的
% 默认行为。
%
-% 在多数情况下,并不需要修改配置文件,\CTeX{} 套件的默认设置已经能满足大多数用
-% 户的需要。不恰当地修改 \CTeX{} 套件的默认行为也可能导致同一文件在别处无法正
+% 在多数情况下,并不需要修改配置文件,\CTeX{} 宏集的默认设置已经能满足大多数用
+% 户的需要。不恰当地修改 \CTeX{} 宏集的默认行为也可能导致同一文件在别处无法正
% 常编译或排版效果完全不同,因此修改应该慎重。
%
% 但在一些情况下,直接修改配置文件仍是必要的,例如:
@@ -2417,10 +2538,10 @@ This package consists of the file ctex.dtx, and the derived files
% 与本机不同。
% \end{itemize}
%
-% 与 \CTeX{} 套件的源代码一样,配置文件采用 \LaTeX3 的语法编写。
+% 与 \CTeX{} 宏集的源代码一样,配置文件采用 \LaTeX3 的语法编写。
%
-% \CTeX{} 套件的配置文件随宏包其他文件一起安装在 \TeX{} 系统 TDS 目录树中,文
-% 件后缀是 \file{.cfg}。为了避免本地配置文件内容因 \CTeX{} 套件的更新而丢失,
+% \CTeX{} 宏集的配置文件随宏包其他文件一起安装在 \TeX{} 系统 TDS 目录树中,文
+% 件后缀是 \file{.cfg}。为了避免本地配置文件内容因 \CTeX{} 宏集的更新而丢失,
% 不要直接修改系统 TDS 目录树中的配置文件,而应该将系统自带的配置文件复制到本
% 地的或用户私有的 TDS 目录树中修改,并运行 |texhash| 命令刷新文件名数据库。
%
@@ -2451,7 +2572,7 @@ This package consists of the file ctex.dtx, and the derived files
% 第一个参数是固定的子模块 |ctex/option|,第二个参数中是用户定义的新的默认宏包
% 选项。
%
-% \file{ctexopts.cfg} 中的设置将在 \CTeX{} 套件的开始处,定义过宏包选项之后,
+% \file{ctexopts.cfg} 中的设置将在 \CTeX{} 宏集的开始处,定义过宏包选项之后,
% \tn{ProcessKeysOptions} 命令之前生效。最好只使用此配置文件修改宏包默认选项。
%
% \subsection{宏包载入后的配置}
@@ -2482,7 +2603,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsection{配置标题中文翻译}
%
-% 由于 \CTeX{} 套件需要同时支持 GBK 和 UTF-8 两种编码,因此对标题的中文翻译写
+% 由于 \CTeX{} 宏集需要同时支持 GBK 和 UTF-8 两种编码,因此对标题的中文翻译写
% 在两个配置文件当中:\file{ctex-name-gbk.cfg} 和 \file{ctex-name-utf8.cfg}。
% 两个文件的设置相同,只是编码不同。
%
@@ -2491,7 +2612,7 @@ This package consists of the file ctex.dtx, and the derived files
% \subsection{自定义字体集}
%
% \ref{subs:options-CJK-font}~节介绍的用于 |fontset| 选项的自定义字库文件,
-% 类似于 \CTeX{} 套件的配置文件,也应该与其他本地配置文件一起保存在本地
+% 类似于 \CTeX{} 宏集的配置文件,也应该与其他本地配置文件一起保存在本地
% \texttt{TDS} 目录树下,并可以配合 \file{ctexopts.cfg} 等配置文件使用。
%
% \section{对旧版本的兼容性}
@@ -2598,7 +2719,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \begin{function}{fntef}
% 旧版本的 \opt{fntef} 选项用于统一 \pkg{CCTfntef} 与 \pkg{CJKfntef} 的界面,
-% 新版本 \CTeX{} 套件不再支持 \pkg{CCT},而是直接载入 \pkg{CJKfntef} 或
+% 新版本 \CTeX{} 宏集不再支持 \pkg{CCT},而是直接载入 \pkg{CJKfntef} 或
% \pkg{xeCJKfntef} 宏包并禁用其彩色设置。该选项是过时选项。
% \end{function}
%
@@ -2606,7 +2727,7 @@ This package consists of the file ctex.dtx, and the derived files
% \CTEXunderwave, \CTEXsout, \CTEXxout, \CTEXfilltwosides}
% 在调用 \opt{fntef} 宏包选项的同时,旧版本 \CTeX{} 宏包由于需要支持 \pkg{CCT}
% 系统,会将以 |\CJK| 开头的 \tn{CJKunderline} 等宏换名为以 |\CTEX| 开头的
-% \tn{CTEXunderline} 等宏。此功能在新版本的 \CTeX{} 套件中已失去意义。
+% \tn{CTEXunderline} 等宏。此功能在新版本的 \CTeX{} 宏集中已失去意义。
%
% 此外,在 \pdfTeX{} 引擎下,用于设置格式的 \tn{CJKunderdotbasesep} 等宏也被换
% 名为 \tn{CTEXunderdotbasesep} 等宏。
@@ -2642,9 +2763,9 @@ This package consists of the file ctex.dtx, and the derived files
%
% \begin{function}{\Chinese}
% \begin{syntax}
-% \tn{Chinese}\oarg{counter}
+% \tn{Chinese}\Arg{counter}
% \end{syntax}
-% 新版套件中 \tn{chinese} 统一了旧版本中 \tn{chinese} 和 \tn{Chinese} 的功能。因此,
+% 新版宏集中 \tn{chinese} 统一了旧版本中 \tn{chinese} 和 \tn{Chinese} 的功能。因此,
% 该命令已过时。
% \end{function}
%
@@ -2711,6 +2832,7 @@ This package consists of the file ctex.dtx, and the derived files
%<@@=ctex>
% \end{macrocode}
%
+% \pkg{ctexcap} 是默认打开 \opt{heading} 选项的 \pkg{ctex}。
% \begin{macrocode}
%<*ctexcap>
\PassOptionsToPackage { heading = true } { ctexcap }
@@ -2718,10 +2840,38 @@ This package consists of the file ctex.dtx, and the derived files
%</ctexcap>
% \end{macrocode}
%
+% 宏包载入检查。
+% \begin{macrocode}
+%<*class|ctex>
+\tl_const:Nx \c_@@_version_tl
+ { \cs_if_exist_use:cF { ver@ \@currname . \@currext } { 9999/99/99 } }
+%<*class>
+\cs_new_eq:cN { ver@ctex. \@pkgextension } \c_@@_version_tl
+\cs_new_eq:cN { ver@ctexcap. \@pkgextension } \c_@@_version_tl
+\cs_new_eq:cN { ver@ctexsize. \@pkgextension } \c_@@_version_tl
+\cs_new_eq:cN { ver@ctexheading. \@pkgextension } \c_@@_version_tl
+%</class>
+%<*ctex>
+\msg_new:nnnn { ctex } { subpackage-loaded }
+ { Package~`#1'~can~not~be~loaded~with~`ctex'. }
+ {
+ `#1'~is~actually~a~part~of~`ctex'.\\
+ It~is~not~necessary~to~load~it~separately.
+ }
+\@ifpackageloaded { ctexsize }
+ { \msg_error:nnn { ctex } { subpackage-loaded } { ctexsize } }
+ { \cs_new_eq:cN { ver@ctexsize. \@pkgextension } \c_@@_version_tl }
+\@ifpackageloaded { ctexheading }
+ { \msg_error:nnn { ctex } { subpackage-loaded } { ctexheading } }
+ { \cs_new_eq:cN { ver@ctexheading. \@pkgextension } \c_@@_version_tl }
+%</ctex>
+%</class|ctex>
+% \end{macrocode}
+%
% \begin{macrocode}
-%<*class|style|ctexsize>
+%<*class|style>
\RequirePackage { xparse , l3keys2e }
-%</class|style|ctexsize>
+%</class|style>
% \end{macrocode}
%
% 检查 \pkg{expl3} 和 \pkg{l3keys2e} 的版本。
@@ -2742,89 +2892,48 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \begin{macrocode}
-%<*class|style>
-\RequirePackage { etoolbox , ifpdf , fix-cm , everysel }
+%<*class|ctex|ctexheading>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage { etoolbox }
+%<!ctexheading>\RequirePackage { fix-cm , everysel }
% \end{macrocode}
%
% \subsection{内部函数与变量}
%
-% \begin{variable}[internal]
+% \begin{variable}[int]
% {\l_@@_tmp_tl,\l_@@_tmp_int,\l_@@_tmp_dim,\l_@@_tmp_box}
% \begin{macrocode}
\tl_new:N \l_@@_tmp_tl
\int_new:N \l_@@_tmp_int
-\dim_new:N \l_@@_tmp_dim
+%<!ctexheading>\dim_new:N \l_@@_tmp_dim
\box_new:N \l_@@_tmp_box
% \end{macrocode}
% \end{variable}
%
-% 对旧版本的宏包给出错误信息。
-% \begin{macrocode}
-\msg_new:nnnn { ctex } { package-too-old }
- { Support~package~`#1'~too~old. }
- {
- Please~update~an~up~to~date~version~of~the~package~`#1'\\
- using~your~TeX~package~manager~or~from~CTAN.
- }
-% \end{macrocode}
-%
-% \begin{macro}[internal]{\ctex_lua_now_x:n}
-% 最新的 \pkg{expl3} 去掉了 \pkg{l3luatex} 模块,因而 \cs{lua_now_x:n} 不再有定义。
-% \begin{macrocode}
-\cs_new_eq:NN \ctex_lua_now_x:n \luatex_directlua:D
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[internal]{\ctex_if_pdfmode:TF}
-% \tn{ifpdf} 的简单 wrapper。
-% \begin{macrocode}
-\ifpdf
- \cs_new_eq:NN \ctex_if_pdfmode:TF \use_i:nn
-\else:
- \cs_new_eq:NN \ctex_if_pdfmode:TF \use_ii:nn
-\fi:
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[internal]{\ctex_if_preamble:TF}
-% 测试是否在 \LaTeXe{} 的导言区。\LaTeXe{} 中的 \tn{@onlypreamble} 命令可以处
-% 理宏参数,使其在 \env{document} 环境后被重定义为 \tn{@notprerr},而又由于
-% \tn{@onlypreamble} 本身也被这样处理过,因此可以测试 \tn{@onlypreamble} 是否
-% 与 \tn{@notprerr} 相同来确定是否在导言区。
-% \begin{macrocode}
-\prg_new_conditional:Npnn \ctex_if_preamble: { TF }
- {
- \if_meaning:w \@onlypreamble \@notprerr
- \prg_return_false:
- \else:
- \prg_return_true:
- \fi:
- }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[int]{\ctex_at_end_package:nn}
% 与 \pkg{filehook} 的 \tn{AtEndOfPackageFile*} 类似,如果原来没有在载入宏包则
% 在宏包末尾执行语句,否则立即执行。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_at_end_package:nn #1#2
{
- \@ifpackageloaded { #1 }
- { #2 }
- { \ctex_add_hook:cn { g_@@_at_end_ #1 _hook_tl } { #2 } }
+ \@ifpackageloaded {#1}
+ {#2}
+ { \ctex_gadd_hook:cn { g_@@_at_end_ #1 _hook_tl } {#2} }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int]{\ctex_add_hook:Nn, \ctex_add_hook:cn}
+% \begin{macro}[int]{\ctex_gadd_hook:Nn, \ctex_gadd_hook:cn}
% 给钩子附加内容。
% \begin{macrocode}
-\cs_new_protected:Npn \ctex_add_hook:Nn #1#2
+\cs_new_protected:Npn \ctex_gadd_hook:Nn #1#2
{
\tl_if_exist:NF #1 { \tl_new:N #1 }
- \tl_gput_right:Nn #1 { #2 }
+ \tl_gput_right:Nn #1 {#2}
}
-\cs_generate_variant:Nn \ctex_add_hook:Nn { c }
+\cs_generate_variant:Nn \ctex_gadd_hook:Nn { c }
% \end{macrocode}
% \end{macro}
%
@@ -2843,10 +2952,13 @@ This package consists of the file ctex.dtx, and the derived files
% 对 \tn{@popfilename} 做补丁来实现 \cs{ctex_at_end_package:nn} 的功能。
% \begin{macrocode}
\tl_put_left:Nn \@popfilename
- { \ctex_package_end_hook:o { \@currname } }
+ {
+ \cs_if_eq:NNT \@currext \@pkgextension
+ { \ctex_package_end_hook:o { \@currname } }
+ }
% \end{macrocode}
%
-% \begin{macro}[internal]{\ctex_file_wrapper:nnn}
+% \begin{macro}[int]{\ctex_file_wrapper:nnn}
% 设置文件操作的 \tn{catcode} 环境,参数 |#1| 是设置,|#2| 是文件操作,|#3| 是恢复。
% 默认关闭 \LTXIII{} 语法环境,并设置 |@| 的 \tn{catcode} 为 $11$。
% \begin{macrocode}
@@ -2868,7 +2980,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_file_input:n}
+% \begin{macro}[int]{\ctex_file_input:n}
% 输入文件。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_file_input:n #1
@@ -2876,7 +2988,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_scheme_input:n}
+% \begin{macro}[int]{\ctex_scheme_input:n}
% 输入 \opt{scheme} 文件。先查找当前文档类下的 \meta{scheme},找不到再查找一般的文件。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_scheme_input:n #1
@@ -2897,7 +3009,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_parse_name:NN}
+% \begin{macro}[int]{\ctex_parse_name:NN}
% 用 \tn{DeclareRobustCommand} 定义的宏或者由 \tn{newcommand} 或 \tn{newrobustcmd}
% 定义的带一个可选参数的宏第一次展开的结果都不是其实际定义,实际定义被保存在另外的
% 宏中。由这些命令定义的宏的第一次展开结果可以有下面的形式(细节可查阅 \pkg{xpatch}
@@ -2935,15 +3047,15 @@ This package consists of the file ctex.dtx, and the derived files
\group_begin:
\use:x
{
+ \group_end:
\@@_parse_name:nNNNnN { \token_get_replacement_spec:N #2 }
- \exp_not:N #2 \exp_not:c { #3 ~ } \exp_not:c { /#3 } {#3}
- } #1
+ \exp_not:N #2 \exp_not:c { #3 ~ } \exp_not:c { /#3 }
+ } {#3} #1
}
{ #1#2 }
}
\cs_new_protected:Npn \@@_parse_name:nNNNnN #1#2#3#4#5#6
{
- \group_end:
\exp_args:Nc #6
{
\str_case:nnTF {#1}
@@ -2975,17 +3087,17 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]
+% \begin{macro}[int]
% {\ctex_patch_cmd:NnnTF,\ctex_preto_cmd:NnTF,\ctex_appto_cmd:NnTF}
% 在打补丁前先解析实际名字。
% \begin{macrocode}
-\cs_new_protected:Npn \ctex_patch_cmd:NnnTF { \ctex_parse_name:NN \patchcmd }
-\cs_new_protected:Npn \ctex_preto_cmd:NnTF { \ctex_parse_name:NN \pretocmd }
-\cs_new_protected:Npn \ctex_appto_cmd:NnTF { \ctex_parse_name:NN \apptocmd }
+\cs_new_protected_nopar:Npn \ctex_patch_cmd:NnnTF { \ctex_parse_name:NN \patchcmd }
+\cs_new_protected_nopar:Npn \ctex_preto_cmd:NnTF { \ctex_parse_name:NN \pretocmd }
+\cs_new_protected_nopar:Npn \ctex_appto_cmd:NnTF { \ctex_parse_name:NN \apptocmd }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_patch_cmd:Nnn}
+% \begin{macro}[int]{\ctex_patch_cmd:Nnn}
% 参数记号 |#| 作为宏的参数被读入时,总是会双写,会影响随后的字符串替换。需要先
% 将它转换为普通符号。并且在补丁的时候关闭 \LTXIII{} 语法。
% \begin{macrocode}
@@ -3019,7 +3131,68 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_set_default_ccwd:Nn}
+% \begin{variable}[int]{\g_@@_section_depth_flag}
+% 若大于 |3|,则 \tn{paragraph} 和 \tn{subparagraph} 标题单独占一行;若为 |3|,则
+% \tn{paragraph} 单独占一行。
+% \begin{macrocode}
+\cs_new_eq:NN \g_@@_section_depth_flag \c_two
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macrocode}
+%</class|ctex|ctexheading>
+%<*class|ctex>
+% \end{macrocode}
+%
+% 对旧版本的宏包给出错误信息。
+% \begin{macrocode}
+\msg_new:nnnn { ctex } { package-too-old }
+ { Support~package~`#1'~too~old. }
+ {
+ Please~update~an~up~to~date~version~of~the~package~`#1'\\
+ using~your~TeX~package~manager~or~from~CTAN.
+ }
+% \end{macrocode}
+%
+% \begin{macro}[int]{\ctex_lua_now_x:n}
+% 最新的 \pkg{expl3} 去掉了 \pkg{l3luatex} 模块,因而 \cs{lua_now_x:n} 不再有定义。
+% \begin{macrocode}
+\cs_new_eq:NN \ctex_lua_now_x:n \luatex_directlua:D
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.1}{2015/05/25}{不依赖 \pkg{ifpdf} 宏包。}
+%
+% \begin{macro}[int]{\ctex_if_pdfmode:TF}
+% \pkg{ifpdf} 宏包的简单实现。
+% \begin{macrocode}
+\cs_if_exist:NTF \pdftex_pdfoutput:D
+ {
+ \int_compare:nNnTF \pdftex_pdfoutput:D > \c_zero
+ {
+ \cs_new_eq:NN \ifctexpdf \tex_iftrue:D
+ \cs_new_eq:NN \ctex_if_pdfmode:TF \use_i:nn
+ }
+ }
+ { \use:n }
+ {
+ \cs_new_eq:NN \ifctexpdf \tex_iffalse:D
+ \cs_new_eq:NN \ctex_if_pdfmode:TF \use_ii:nn
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\ctex_if_preamble:TF}
+% 测试是否在 \LaTeXe{} 的导言区。在宏包内部初始为真,在 \tn{AfterEndPreamble}
+% 钩子中再设置为假。注意,\tn{AfterEndPreamble} 在 \tn{AtBeginDocument} 之后执行,
+% 可以与 \tn{@onlypreamble} 的行为一致。
+% \begin{macrocode}
+\cs_new_eq:NN \ctex_if_preamble:TF \use_i:nn
+\AfterEndPreamble { \cs_set_eq:NN \ctex_if_preamble:TF \use_ii:nn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\ctex_set_default_ccwd:Nn}
% 若参数 |#2| 带长度单位,则设置它为 |tl| 变量 |#1| 的值,否则以 \tn{ccwd} 为单位。
% \begin{macrocode}
\cs_new:Npn \ctex_set_default_ccwd:Nn #1#2
@@ -3032,7 +3205,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_default_pt:n}
+% \begin{macro}[int]{\ctex_default_pt:n}
% 最新版本的 \pkg{expl3} 已经不允许 \cs{dim_to_decimal:n} 的参数带额外的单位。
% 然而我们需要这个特性实现可展的 \tn{@defaultunits}。
% \begin{macrocode}
@@ -3052,7 +3225,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}[internal]{\l_@@_encoding_tl}
+% \begin{variable}[int]{\l_@@_encoding_tl}
% (pdf)\LaTeX{} 初始化编码为 GBK,其它则是 UTF8。
% \begin{macrocode}
\tl_new:N \l_@@_encoding_tl
@@ -3061,51 +3234,43 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}[internal]{\g_@@_section_depth_flag}
-% 若大于 |3|,则 \tn{paragraph} 和 \tn{subparagraph} 标题单独占一行;若为 |3|,则
-% \tn{paragraph} 单独占一行。
-% \begin{macrocode}
-\cs_new_eq:NN \g_@@_section_depth_flag \c_two
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{variable}[internal]{\g_@@_zhmCJK_bool}
+% \begin{variable}[int]{\g_@@_zhmCJK_bool}
% 是否使用 \pkg{zhmCJK} 宏包。
% \begin{macrocode}
\bool_new:N \g_@@_zhmCJK_bool
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}[internal]{\l_@@_autoindent_tl}
+% \begin{variable}[int]{\l_@@_autoindent_tl}
% 保存 \opt{autoindent} 选项的值,空值表示不自动调整首行缩进。
% \begin{macrocode}
\tl_new:N \l_@@_autoindent_tl
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}[internal]{\ctex_if_autoindent_touched:F}
+% \begin{macro}[int]{\ctex_if_autoindent_touched:F}
% 检查 \opt{autoindent} 选项是否被用户设置。
% \begin{macrocode}
\cs_new_eq:NN \ctex_if_autoindent_touched:F \use:n
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_zhmap_case:nnn}
+% \begin{macro}[int]{\ctex_zhmap_case:nnn}
% 参数 |#1| 是 \pkg{zhmCJK} 的内容,|#2| 是 \pkg{zhmetrics}。
% \begin{macrocode}
\cs_new_eq:NN \ctex_zhmap_case:nnn \use_ii:nnn
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_at_end:n}
+% \begin{macro}[int]{\ctex_at_end:n}
% 区分 \tn{AtEndOfClass} 和 \tn{AtEndOfPackage},虽然它们的意思都是一样的。
% \begin{macrocode}
%<class>\cs_new_protected_nopar:Npn \ctex_at_end:n { \AtEndOfClass }
-%<style>\cs_new_protected_nopar:Npn \ctex_at_end:n { \AtEndOfPackage }
+%<ctex>\cs_new_protected_nopar:Npn \ctex_at_end:n { \AtEndOfPackage }
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}[internal]{\g_@@_std_options_clist}
+% \begin{variable}[int]{\g_@@_std_options_clist}
% 保存传递给标准文档类的选项。
% \begin{macrocode}
%<*class>
@@ -3133,22 +3298,25 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \begin{macrocode}
-%</class|style>
-%<*class|style|ctexsize>
+%</class|ctex>
% \end{macrocode}
%
-% \begin{variable}[internal]{\g_@@_font_size_flag}
+% \begin{variable}[int]{\g_@@_font_size_flag}
% |0| 表示修改默认字体大小为五号,|1| 为小四号,其它值则不作修改。
% \begin{macrocode}
+%<*class|ctex|ctexsize>
\cs_new_eq:NN \g_@@_font_size_flag \c_minus_one
+%</class|ctex|ctexsize>
% \end{macrocode}
% \end{variable}
%
% \subsection{宏包选项}
%
% \begin{macrocode}
+%<*class|style>
\keys_define:nn { ctex / option }
{
+%</class|style>
% \end{macrocode}
%
% \changes{v2.0}{2015/05/06}{新增 \opt{zihao} 选项。}
@@ -3156,14 +3324,15 @@ This package consists of the file ctex.dtx, and the derived files
%
% \begin{macro}{zihao}
% \begin{macrocode}
+%<*class|ctex|ctexsize>
zihao .choice: ,
zihao .default:n = { 5 } ,
zihao / 5 .code:n = { \cs_gset_eq:NN \g_@@_font_size_flag \c_zero } ,
zihao / -4 .code:n = { \cs_gset_eq:NN \g_@@_font_size_flag \c_one } ,
zihao / false .code:n = { \cs_gset_eq:NN \g_@@_font_size_flag \c_two } ,
%<ctexsize> }
-%</class|style|ctexsize>
-%<*class|style>
+%</class|ctex|ctexsize>
+%<*class|ctex>
c5size .code:n =
{
\msg_warning:nnn { ctex } { deprecated-option }
@@ -3278,7 +3447,7 @@ This package consists of the file ctex.dtx, and the derived files
Option~ `fontset=adobe'~ is~ set.~ It~ is~ better~ to~ use~
fontset~ option.
}
- \keys_set:nn { ctex / option } { fontset = none }
+ \keys_set:nn { ctex / option } { fontset = adobe }
} ,
winfonts .code:n =
{
@@ -3287,7 +3456,7 @@ This package consists of the file ctex.dtx, and the derived files
Option~ `fontset=windows'~ is~ set.~ It~ is~ better~ to~ use~
fontset~ option.
}
- \keys_set:nn { ctex / option } { fontset = none }
+ \keys_set:nn { ctex / option } { fontset = windows }
} ,
nofonts .value_forbidden: ,
winfonts .value_forbidden: ,
@@ -3374,13 +3543,44 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
+% \begin{macrocode}
+%</class|ctex>
+%<*class|ctex|ctexheading>
+% \end{macrocode}
+%
+% \begin{macro}{sub3section,sub4section}
+% \begin{macrocode}
+ sub3section .code:n =
+ { \cs_gset_eq:NN \g_@@_section_depth_flag \c_three } ,
+ sub4section .code:n =
+ { \cs_gset_eq:NN \g_@@_section_depth_flag \c_four } ,
+ sub3section .value_forbidden: ,
+ sub4section .value_forbidden: ,
+% \end{macrocode}
+% \end{macro}
+%
% \changes{v2.0}{2015/04/15}{新增 \opt{scheme} 选项,并将 \opt{cap} 和 \opt{nocap}
-% 列为过时选项}
+% 列为过时选项。}
% \begin{macro}{scheme}
% \begin{macrocode}
scheme .tl_set:N = \l_@@_scheme_tl ,
- scheme .default:n = { chinese },
- scheme .initial:n = { chinese },
+%<*ctexheading>
+ scheme .default:n = { plain } ,
+ scheme .initial:n = { plain }
+ }
+%</ctexheading>
+%<*!ctexheading>
+ scheme .default:n = { chinese } ,
+ scheme .initial:n = { chinese } ,
+%</!ctexheading>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class|ctex|ctexheading>
+%<*class|ctex>
+% \end{macrocode}
+%
+% \begin{macrocode}
cap .code:n =
{
\msg_warning:nnn { ctex } { deprecated-option }
@@ -3398,21 +3598,12 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{sub3section,sub4section}
-% \begin{macrocode}
- sub3section .code:n =
- { \cs_gset_eq:NN \g_@@_section_depth_flag \c_three } ,
- sub4section .code:n =
- { \cs_gset_eq:NN \g_@@_section_depth_flag \c_four } ,
- sub3section .value_forbidden: ,
- sub4section .value_forbidden: ,
-% \end{macrocode}
-% \end{macro}
-%
% \changes{v2.0}{2015/04/20}{\opt{hyperref} 成为过时选项,原选项功能总是打开。}
% \changes{v2.0}{2015/04/20}{\opt{fancyhdr} 成为过时选项,原选项功能总是打开。}
% \changes{v2.0}{2015/04/20}{\opt{fntef} 成为过时选项,原选项功能总是打开。}
% \begin{macro}{fntef,fancyhdr,hyperref}
+% \changes{v2.1}{2015/06/03}{补充定义 \tn{hypersetup}。}
+% 这些都是过时的宏包兼容选项,原选项功能总是打开的。
% \begin{macrocode}
fntef .code:n =
{
@@ -3423,12 +3614,17 @@ This package consists of the file ctex.dtx, and the derived files
{
\msg_warning:nnn { ctex } { deprecated-option }
{ `fancyhdr'~ package~ is~ loaded. }
- \RequirePackage{ fancyhdr }
+ \RequirePackage { fancyhdr }
} ,
hyperref .code:n =
{
\msg_warning:nnn { ctex } { deprecated-option }
{ `hyperref'~ package~ will~ be~ loaded. }
+ \ctex_at_end:n
+ {
+ \cs_if_exist:NF \hypersetup
+ { \cs_new_eq:NN \hypersetup \ctex_hypersetup:n }
+ }
\AtEndPreamble { \RequirePackage { hyperref } }
} ,
}
@@ -3436,8 +3632,8 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macro}
%
% \begin{macrocode}
-%</class|style>
-%<*class|style|ctexsize>
+%</class|ctex>
+%<*class|ctex|ctexsize>
% \end{macrocode}
%
% \changes{v2.0}{2015/05/06}{兼容 \pkg{extsizes} 宏包、\cls{beamer}、\pkg{memoir}
@@ -3487,20 +3683,21 @@ This package consists of the file ctex.dtx, and the derived files
%
% \begin{macrocode}
%<!ctexsize>\ctex_file_input:n { ctexopts.cfg }
+%</class|ctex|ctexsize>
% \end{macrocode}
%
% \begin{macrocode}
+%<*class|style>
\ProcessKeysOptions { ctex / option }
+%</class|style>
% \end{macrocode}
%
% \begin{macrocode}
-%</class|style|ctexsize>
-%<*class|style>
+%<*class>
% \end{macrocode}
%
% 五号字使用标准文档类的 |10pt| 字体大小设置,小四号字则使用 |12pt|。
% \begin{macrocode}
-%<*class>
\if_case:w \g_@@_font_size_flag
\clist_gput_right:Nn \g_@@_std_options_clist { 10pt }
\or:
@@ -3525,27 +3722,10 @@ This package consists of the file ctex.dtx, and the derived files
\PassOptionsToClass { \g_@@_std_options_clist } { report }
\LoadClass { report }
%</report>
-%</class>
% \end{macrocode}
%
% \begin{macrocode}
-\tl_set_eq:Nc \l_@@_tmp_tl { ver@ \@currname . \@currext }
-%<*class>
-\cs_new_eq:cN { ver@ctex. \@pkgextension } \l_@@_tmp_tl
-\cs_new_eq:cN { ver@ctexcap. \@pkgextension } \l_@@_tmp_tl
-\cs_new_eq:cN { ver@ctexsize. \@pkgextension } \l_@@_tmp_tl
%</class>
-%<*style>
-\msg_new:nnnn { ctex } { ctexsize-loaded }
- { Package~`ctexsize'~can~not~be~loaded~before~`ctex'. }
- {
- `ctexsize'~is~actually~a~part~of~`ctex'.\\
- It~is~not~necessary~to~load~it~separately.
- }
-\@ifpackageloaded { ctexsize }
- { \msg_error:nn { ctex } { ctexsize-loaded } }
- { \cs_new_eq:cN { ver@ctexsize. \@pkgextension } \l_@@_tmp_tl }
-%</style>
% \end{macrocode}
%
% \subsection{用户设置接口}
@@ -3554,8 +3734,9 @@ This package consists of the file ctex.dtx, and the derived files
%
% \begin{macro}{\ctexset}
% \begin{macrocode}
-\NewDocumentCommand \ctexset { +m }
- { \keys_set:nn { ctex } {#1} }
+%<*class|ctex|ctexheading>
+\NewDocumentCommand \ctexset { } { \keys_set:nn { ctex } }
+%</class|ctex|ctexheading>
% \end{macrocode}
% \end{macro}
%
@@ -3563,6 +3744,7 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{macro}{\CTEXsetup,\CTEXoptions}
% 过时命令。
% \begin{macrocode}
+%<*class|ctex>
\NewDocumentCommand \CTEXsetup { +o > { \TrimSpaces } m }
{
\msg_warning:nnnn { ctex } { deprecated-command } { \CTEXsetup }
@@ -3575,13 +3757,10 @@ This package consists of the file ctex.dtx, and the derived files
{ \ctexset~ {~ #1~ }~ is~ set. }
\IfNoValueF {#1} { \keys_set:nn { ctex } {#1} }
}
+%</class|ctex>
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-%</class|style>
-% \end{macrocode}
-%
% \subsection{特定引擎支持与设置}
%
% \subsubsection{\pkg{ctex-engine-pdftex.def}}
@@ -3590,6 +3769,81 @@ This package consists of the file ctex.dtx, and the derived files
%<*pdftex>
% \end{macrocode}
%
+% \changes{v2.1}{2015/05/18}{给 \pdfLaTeX{} 下的非 UTF8 编码 CJK 字体族加上 CMap。}
+%
+% \begin{variable}[int]{\c_@@_cmap_encoding_seq}
+% 需要加上 CMap 的 CJK 字体编码。
+% \begin{macrocode}
+\seq_new:N \c_@@_cmap_encoding_seq
+\seq_set_from_clist:Nn \c_@@_cmap_encoding_seq
+ { C19 , C10 , C00 , C09 , C40 , C60 }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[int]{\ctex_family_cmap:nn}
+% 在 \tn{DeclareFontFamily} 的 \meta{loading-settings} 中给 CJK 字体族加上 CMap。
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \ctex_family_cmap:nn #1#2
+ {
+ \cs_if_free:cF { #1 + #2 }
+ {
+ \seq_if_in:NnT \c_@@_cmap_encoding_seq {#1}
+ { \tl_gput_right:cn { #1 + #2 } { \ctex_add_cmap:n {#1} } }
+ }
+ }
+\cs_generate_variant:Nn \ctex_family_cmap:nn { x }
+\cs_new_eq:NN \CTEX@Family@CMap \ctex_family_cmap:xn
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\ctex_add_cmap:n}
+% 给 |#1| 编码的 CJK 字体加上 CMap。
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \ctex_add_cmap:n #1
+ {
+ \cs_if_free:NF \CJK@plane
+ { \ctex_add_cmap:cn { @@_add_cmap_ #1 \CJK@plane : } {#1} }
+ }
+\cs_new_protected_nopar:Npn \ctex_add_cmap:Nn #1#2
+ {
+ \cs_if_exist:NF #1 { \@@_save_cmap:Nn #1 {#2} }
+ #1
+ }
+\cs_generate_variant:Nn \ctex_add_cmap:Nn { c }
+\cs_new_protected_nopar:Npn \@@_save_cmap:Nn #1#2
+ {
+ \tex_lowercase:D { \tl_set:Nx \l_@@_tmp_tl { #2 \CJK@plane } }
+ \tex_immediate:D \pdfobj stream ~ file { \l_@@_tmp_tl .cmap }
+ \cs_new_protected_nopar:Npx #1
+ {
+ \exp_not:N \pdffontattr \exp_not:N \font
+ { /ToUnicode ~ \int_use:N \pdflastobj \c_space_tl 0 ~ R }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\DeclareFontFamily}
+% 只在 \pdfLaTeX{} 下加 CMap。如 \pkg{cmap} 宏包被引入,则不重复设置。
+% \begin{macrocode}
+\group_begin:
+\char_set_catcode_other:N \#
+\ctex_if_pdfmode:TF
+ {
+ \group_end:
+ \ExplSyntaxOff
+ \ctex_appto_cmd:NnTF \DeclareFontFamily { \CTEX@Family@CMap {#1} {#2} }
+ {
+ \ctex_at_end_package:nn { cmap }
+ { \cs_gset_eq:NN \CTEX@Family@CMap \use_none:nn }
+ }
+ { \ctex_patch_failure:N \DeclareFontFamily }
+ \ExplSyntaxOn
+ }
+ { \group_end: }
+% \end{macrocode}
+% \end{macro}
+%
% 首先检查选项,决定是否载入 \pkg{zhmCJK} 宏包。
% \begin{macrocode}
\if_bool:N \g_@@_zhmCJK_bool
@@ -3605,7 +3859,7 @@ This package consists of the file ctex.dtx, and the derived files
\RequirePackage { CJKpunct , CJKspace }
% \end{macrocode}
%
-% \begin{macro}[internal]{\ctex_load_zhmap:nnnn}
+% \begin{macro}[int]{\ctex_load_zhmap:nnnn}
% 载入 \pkg{zhmetrics} 的字体映射文件,同时设置 \tn{CJKrmdefault} 等。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_load_zhmap:nnnn #1#2#3#4
@@ -3643,7 +3897,7 @@ This package consists of the file ctex.dtx, and the derived files
\fi:
% \end{macrocode}
%
-% \begin{macro}[internal]{\ctex_CJK_input:n,\CJK@input}
+% \begin{macro}[int]{\ctex_CJK_input:n,\CJK@input}
% \pkg{breqn} 包可能会在正文中将 |^| 的 \tn{catcode} 改为 $12$ 或 $13$,这将
% 破坏 \pkg{CJK} 对汉字的首字节的定义(\tn{CJK@loadBinding} 和
% \tn{CJK@loadEncoding})。因此需要确保载入 \file{.enc} 和 \file{.bdg} 文件时,
@@ -3668,7 +3922,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_plane_to_utfxvibe:Nn,\CJK@surr}
+% \begin{macro}[int]{\ctex_plane_to_utfxvibe:Nn,\CJK@surr}
% \changes{v2.0}{2014/04/08}{解决与 \tn{nouppercase} 的冲突。}
% \pkg{fancyhdr} 宏包的 \tn{nouppercase} 会将 \tn{uppercase} 定义为 \tn{relax},而
% \tn{CJK@surr} 需要用它将 \tn{CJK@plane} 转化成大写字母,这就造成了冲突^^A
@@ -3765,7 +4019,7 @@ This package consists of the file ctex.dtx, and the derived files
\fi:
% \end{macrocode}
%
-% \begin{macro}[internal]{\ctex_auto_ignorespaces:}
+% \begin{macro}[int]{\ctex_auto_ignorespaces:}
% 关闭名字空间,保存 \tn{CJK@@ignorespaces} 的定义,方便使用。
% \begin{macrocode}
%<@@=>
@@ -3777,7 +4031,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ignorespaces_case:N,\ctex_set_ignorespaces:}
+% \begin{macro}[int]{\ctex_ignorespaces_case:N,\ctex_set_ignorespaces:}
% 设置忽略空格的的方式。根据 \opt{space} 选项的值重定义 \tn{CJK@ignorespaces},
% 并保存起来供 \tn{CJKhook} 备用。
% \begin{macrocode}
@@ -3792,16 +4046,16 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\CJKhook}
+% \begin{macro}[int]{\CJKhook}
% \env{CJK} 和 \env{CJK*} 环境都会重新定义 \tn{CJK@ignorespaces}。我们在 \pkg{CJK}
% 宏包提供的 \tn{CJKhook} 里重新设置它,让这两个环境忽略空格的方式都受 \opt{space}
% 选项的控制。这对 \pkg{zhmCJK} 是必要的。
% \begin{macrocode}
-\ctex_add_hook:Nn \CJKhook { \ctex_set_ignorespaces: }
+\ctex_gadd_hook:Nn \CJKhook { \ctex_set_ignorespaces: }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_punct_set:n}
+% \begin{macro}[int]{\ctex_punct_set:n}
% 设置 CJK 族对应到实际的字体。|#1| 是 \opt{fontset} 的名字。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_punct_set:n #1
@@ -3824,7 +4078,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_punct_map_family:nn}
+% \begin{macro}[int]{\ctex_punct_map_family:nn}
% CJK 族 |#1| 使用族 |#2| 的边界信息。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_punct_map_family:nn #1#2
@@ -3835,7 +4089,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_punct_map_bfseries:nn}
+% \begin{macro}[int]{\ctex_punct_map_bfseries:nn}
% CJK 族 |#1| 的 \tn{bfseries} 使用族 |#2| 的边界信息。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_punct_map_bfseries:nn #1#2
@@ -3858,7 +4112,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_punct_map_itshape:nn}
+% \begin{macro}[int]{\ctex_punct_map_itshape:nn}
% CJK 族 |#1| 的 \tn{itshape} 使用族 |#2| 的边界信息。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_punct_map_itshape:nn #1#2
@@ -3873,7 +4127,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_punct_space:nn,\ctexspadef}
+% \begin{macro}[int]{\ctex_punct_space:nn,\ctexspadef}
% 定义标点的边界信息。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_punct_space:nn #1#2
@@ -4069,7 +4323,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \paragraph{字体切换方式}
%
-% \begin{macro}[internal]{\ctex_ltj_select_font:,\CJK@family}
+% \begin{macro}[int]{\ctex_ltj_select_font:,\CJK@family}
% \tn{CJK@family} 保存的是当前 CJK 实际的字体族名,如果为空表示没有设置过字体。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_select_font:
@@ -4084,7 +4338,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_select_font_aux:}
+% \begin{macro}[int]{\@@_select_font_aux:}
% 使用 \tn{pickup@font} 取得字体名称前,总需要先设置 \tn{font@name}。在这里将
% \tn{f@family} 换成 CJK 字体族,并确保编码正确。
% \begin{macrocode}
@@ -4117,7 +4371,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_pickup_font:}
+% \begin{macro}[int]{\ctex_ltj_pickup_font:}
% 替换 \tn{define@newfont} 内部调用的 \tn{extract@font} 和 \tn{do@subst@correction}。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_pickup_font:
@@ -4135,7 +4389,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_extract_font:}
+% \begin{macro}[int]{\ctex_ltj_extract_font:}
% \pkg{LuaTeX-ja} 的 \tn{globaljfont} 在 \pkg{luatexja-core} 中定义:
% \begin{verbatim}
% %%%%%%%% \jfont\CS={...:...;jfm=metric;...}, \globaljfont
@@ -4170,14 +4424,14 @@ This package consists of the file ctex.dtx, and the derived files
% 赋值总是全局的,不会受到分组的影响。
% \begin{macrocode}
\font@name
- \ctex_lua_now_x:n { font.current(tex.attribute['ltj@curjfnt']) }
+ \ctex_lua_now_x:n { font.current(tex.getattribute('ltj@curjfnt')) }
\use:c { \f@encoding + \f@family }
\use:c { \curr@fontshape }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_subst_font:}
+% \begin{macro}[int]{\ctex_ltj_subst_font:}
% \tn{do@subst@correction} 在设置通过 \texttt{sub} 或者 \texttt{ssub} 函数定义的
% 字体时会用到。如果没有设置 \opt{SlantedFont},\pkg{fontspec} 会设置
% \tn{itdefault} 作为 \tn{sldefault} 的替代字形,因而会用到这个函数。它的本来定义是:
@@ -4217,7 +4471,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal,TF]{\ctex_ltj_if_alternate_shape_exist:n}
+% \begin{macro}[int,TF]{\ctex_ltj_if_alternate_shape_exist:n}
% 即 \pkg{LuaTeX-ja} 中的 \tn{ltj@@does@alt@set},判断是否存在替代字体。
% \begin{macrocode}
\prg_new_conditional:Npnn \ctex_ltj_if_alternate_shape_exist:n #1 { T , F , TF }
@@ -4245,7 +4499,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_select_alternate_font:}
+% \begin{macro}[int]{\ctex_ltj_select_alternate_font:}
% 在 \tn{selectfont} 中更新替代字体。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_select_alternate_font:
@@ -4266,7 +4520,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ltj@pickup@altfont@auxy}
+% \begin{macro}[int]{\ltj@pickup@altfont@auxy}
% 被用在函数 |output_alt_font_cmd| 中,作用是定义替代字体。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ltj@pickup@altfont@auxy #1
@@ -4288,7 +4542,7 @@ This package consists of the file ctex.dtx, and the derived files
%<@@=>
% \end{macrocode}
%
-% \begin{macro}[internal]{\ltj@pickup@altfont@copy}
+% \begin{macro}[int]{\ltj@pickup@altfont@copy}
% 被用在函数 |pickup_alt_font_a| 中。\tn{ltj@@getjfontnumber} 的作用是将字体命令
% |#1| 对应的 \texttt{font.id} 保存到 \tn{ltj@tempcntc} 中。
% \begin{macrocode}
@@ -4355,7 +4609,7 @@ This package consists of the file ctex.dtx, and the derived files
\ExplSyntaxOn
% \end{macrocode}
%
-% \begin{macro}[internal]{\ctex_mono_jfm:n,\l_@@_jfm_tl}
+% \begin{macro}[int]{\ctex_mono_jfm:n,\l_@@_jfm_tl}
% \pkg{LuaTeX-ja} 中与标点格式 \opt{plain} 对应的 \texttt{JFM} 是 \opt{mono}。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_mono_jfm:n #1
@@ -4370,7 +4624,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\CJK@encoding,\@@_change_encoding:}
+% \begin{macro}[int]{\CJK@encoding,\@@_change_encoding:}
% 在 \LaTeX 下,\pkg{LuaTeX-ja} 依赖字体编码来实现特殊设置。例如上述的
% \tn{ltj@@IsFontJapanese} 就是通过判断编码来实现的,它在设置数学字体时会用到。所以
% 不应该与西文共用 \texttt{EU2}。定义字体族 song 为 \tn{CJK@encoding} 的默认替换
@@ -4416,7 +4670,7 @@ This package consists of the file ctex.dtx, and the derived files
\cs_new:Npn \@@_noembed_wrap:n #1 { psft: #1 }
% \end{macrocode}
%
-% \begin{macro}[internal]{\ctex_ltj_set_family:nnn}
+% \begin{macro}[int]{\ctex_ltj_set_family:nnn}
% 将自定义的字体族名与 \pkg{fontspec} 实际设置的名字对应起来。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_ltj_set_family:nnn #1#2#3
@@ -4450,7 +4704,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}[internal]
+% \begin{variable}[int]
% {\g_@@_family_name_prop,\g_@@_family_font_name_prop,\g_@@_family_font_options_prop}
% 分别保存 \pkg{fontspec} 设置的字体族名、字体名称和字体选项。
% \begin{macrocode}
@@ -4460,7 +4714,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}[internal]{\@@_check_family:n}
+% \begin{macro}[int]{\@@_check_family:n}
% 删除重复的定义,清除替代字体的先前设置。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_check_family:n #1
@@ -4485,7 +4739,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_gset_family_cs:nn}
+% \begin{macro}[int]{\@@_gset_family_cs:nn}
% 在设置字体时,实际上并不是马上就定义。而是只保存相关参数,在通过 \tn{CJKfamily}
% 第一次使用时才定义。需要注意将编码改为 \tn{CJK@encoding}。
% \begin{macrocode}
@@ -4520,7 +4774,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\CJKfamily}
+% \begin{macro}[int]{\CJKfamily}
% 切换字体。
% \begin{macrocode}
\NewDocumentCommand \CJKfamily { m }
@@ -4539,7 +4793,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal,TF]{\ctex_ltj_family_if_exist:n}
+% \begin{macro}[int,TF]{\ctex_ltj_family_if_exist:n}
% 判断 CJK 字体族 |#1| 是否存在,若存在则把实际族名保存到 |#2| 中。
% \begin{macrocode}
\prg_new_protected_conditional:Npnn \ctex_ltj_family_if_exist:xN #1#2 { T , F , TF }
@@ -4559,7 +4813,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_family_unknown_warning:n}
+% \begin{macro}[int]{\@@_family_unknown_warning:n}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_family_unknown_warning:n #1
{
@@ -4602,7 +4856,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_fontspec:nn}
+% \begin{macro}[int]{\ctex_ltj_fontspec:nn}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_fontspec:nn #1#2
{
@@ -4643,7 +4897,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]
+% \begin{macro}[int]
% {\ctex_ltj_add_font_features:n,\ctex_ltj_add_font_features:nn}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_add_font_features:n #1
@@ -4674,7 +4928,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]
+% \begin{macro}[int]
% {\setCJKfamilyfont,\newCJKfontfamily,\CJKfontspec,\addCJKfontfeatures}
% \begin{macrocode}
\NewDocumentCommand \setCJKfamilyfont { m O { } m }
@@ -4701,7 +4955,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]
+% \begin{macro}[int]
% {\setCJKmainfont,\setCJKsansfont,\setCJKmonofont,
% \setCJKmathfont,\defaultCJKfontfeatures}
% \begin{macrocode}
@@ -4752,7 +5006,7 @@ This package consists of the file ctex.dtx, and the derived files
{ \ctex_patch_failure:N \normalfont }
% \end{macrocode}
%
-% \begin{macro}[internal]{\ctex_ltj_ensure_default_family:}
+% \begin{macro}[int]{\ctex_ltj_ensure_default_family:}
% 在导言区结束确认 \tn{CJKfamilydefault} 确实存在。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_ensure_default_family:
@@ -4783,7 +5037,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_update_mathfont:}
+% \begin{macro}[int]{\ctex_ltj_update_mathfont:}
% 更新数学字体为实际的字体。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_update_mathfont:
@@ -4829,7 +5083,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_set_alternate_seq:n}
+% \begin{macro}[int]{\ctex_ltj_set_alternate_seq:n}
% 我们使用 \verb=||= 作为替代字体序列的分隔标志。它可能被设置为活动字符,为此
% 需要先“消毒”,同时过滤掉空元素。
% \begin{macrocode}
@@ -4858,7 +5112,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_set_alternate_family:nnF}
+% \begin{macro}[int]{\ctex_ltj_set_alternate_family:nnF}
% 如果在字体的选项中设置了 \opt{CharRange},则只设置替代字体。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_set_alternate_family:nnF #1#2#3
@@ -4875,7 +5129,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]
+% \begin{macro}[int]
% {\ctex_ltj_save_alternate_seq:Nn,\ctex_ltj_save_alternate_seq:Nnnwn}
% 保存由 \opt{AlternateFont} 设置的替代字体序列。
% \begin{macrocode}
@@ -4909,7 +5163,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_set_alternate_family:nn}
+% \begin{macro}[int]{\ctex_ltj_set_alternate_family:nn}
% 设置选项 \opt{CharRange} 范围内的替代字体。如果已经定义了主字体,我们也马上
% 定义替代字体,否则只保存起来备用。
% \begin{macrocode}
@@ -4932,7 +5186,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_save_alternate_family:Nnnn}
+% \begin{macro}[int]{\ctex_ltj_save_alternate_family:Nnnn}
% 保存替代字体序列的定义,以备定义主字体时使用。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_save_alternate_family:Nnnn #1#2#3#4
@@ -4944,7 +5198,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_set_alternate_family:nnn}
+% \begin{macro}[int]{\ctex_ltj_set_alternate_family:nnn}
% 实际定义替代字体族。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_set_alternate_family:nnn #1#2#3
@@ -4962,7 +5216,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_swap_cs:NN}
+% \begin{macro}[int]{\ctex_ltj_swap_cs:NN}
% 交换两个控制序列的意义。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_ltj_swap_cs:NN #1#2
@@ -4975,7 +5229,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{LTJFONTUID,\@@_update_family_uid:N}
+% \begin{macro}[int]{LTJFONTUID,\@@_update_family_uid:N}
% \pkg{fontspec} 在一个字体族的选项和字体名称相同的时候,就不定义新字体。为了
% 避免混淆替代字体的设置,我们新定义一个虚拟的选项 \opt{LTJFONTUID},确保
% \pkg{fontspec} 对 CJK 字体族总是定义新字体。
@@ -4990,7 +5244,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_declare_alternate_shape:nnnnnn}
+% \begin{macro}[int]{\ctex_ltj_declare_alternate_shape:nnnnnn}
% 在定义替代字体的字形时,通过字符范围与主字体的对应字形关联起来。
% \tn{DeclareFontShape@} 一个有六个参数,我们只需要使用它的第三个参数 \meta{series}
% 和第四个参数 \meta{shape}。
@@ -5005,7 +5259,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_set_alternate_shape:Nnnnnnn}
+% \begin{macro}[int]{\ctex_ltj_set_alternate_shape:Nnnnnnn}
% 与 \pkg{LuaTeX-ja} 的 \tn{DeclareAlternateKanjiFont} 的功能类似,区别是固定编码
% 为 \tn{CJK@encoding}。这个设置总是全局的。
% \begin{macrocode}
@@ -5028,7 +5282,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_set_alternate_shape:nnn}
+% \begin{macro}[int]{\ctex_ltj_set_alternate_shape:nnn}
% 我们使用 \texttt{->} 而不是像 \pkg{LuaTeX-ja} 一样使用 \texttt{-} 作为区间的
% 分隔符。\pkg{LuaTeX-ja} 支持使用负数来引用由 \texttt{JFM} 设置的字符类。如果
% 使用 \texttt{-} 作为分隔符,那么负数单独使用时,就需要把它放在两层花括号之内
@@ -5061,7 +5315,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_set_alternate_shape:nnN}
+% \begin{macro}[int]{\ctex_ltj_set_alternate_shape:nnN}
% 若字符范围预先由 \texttt{declarecharrange} 声明,则可以直接使用。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_set_alternate_shape:nnN #1#2#3
@@ -5158,7 +5412,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_declare_char_range:nn,\g_@@_char_range_prop}
+% \begin{macro}[int]{\ctex_ltj_declare_char_range:nn,\g_@@_char_range_prop}
% |#1| 是名字,|#2| 是范围。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_declare_char_range:nn #1#2
@@ -5174,7 +5428,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_save_char_range:n}
+% \begin{macro}[int]{\ctex_ltj_save_char_range:n}
% 预先解释字符区间的意义。
% \begin{macrocode}
\NewDocumentCommand \ctex_ltj_save_char_range:n
@@ -5195,7 +5449,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_def_char_range_key:n}
+% \begin{macro}[int]{\ctex_ltj_def_char_range_key:n}
% 在字体设置选项中定义字符范围键。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_ltj_def_char_range_key:n #1
@@ -5209,7 +5463,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_ltj_char_range_key:nn}
+% \begin{macro}[int]{\ctex_ltj_char_range_key:nn}
% 如果字符范围键没有值,则只设置的这个字符范围内的替代字体。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_ltj_char_range_key:nn #1#2
@@ -5227,7 +5481,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_char_range_parse_feature:w}
+% \begin{macro}[int]{\@@_char_range_parse_feature:w}
% 可以使用加方括号的方式,通过文件名来调用字体。这容易与字体选项混淆。例如,需要
% 将 |[simsun.ttc]| 设置为 \opt{range} 的主字体,就需要使用
% |range={{[simsun.ttc]}}| 或者 |[]{[simsun.ttc]}|。下面的目的是,支持直接使用
@@ -5252,7 +5506,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \paragraph{其它设置}
%
-% \begin{macro}[internal]{\ctex_ltj_update_xkanjiskip:,\l_@@_xkanjiskip_skip}
+% \begin{macro}[int]{\ctex_ltj_update_xkanjiskip:,\l_@@_xkanjiskip_skip}
% \tn{ltjsetparameter} 对 \opt{xkanjiskip} 是即时赋值。\tn{zw} 与字体相关,因此
% 需要每次 \tn{selectfont} 的时候更新一次 \opt{xkanjiskip}。如果用户设置过
% \opt{xkanjiskip},就不更新。注意,同 \TeX{} 的 \tn{baselineskip} 一样,如果在
@@ -5312,7 +5566,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{调整 \tn{CJKfamilydefault}}
%
-% \begin{macro}[internal]{\ctex_update_default_family:}
+% \begin{macro}[int]{\ctex_update_default_family:}
% 在导言区结束,如果 \tn{CJKfamilydefault} 没有被更改,则在此时根据西文字体的情况
% 更新 \tn{CJKfamilydefault}。\pkg{xeCJK} 已经有这个功能,不需要再调整。
% \begin{macrocode}
@@ -5347,7 +5601,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\l_@@_family_default_init_tl}
+% \begin{macro}[int]{\l_@@_family_default_init_tl}
% 往 \tn{CJKfamilydefault} 中加入标志,用于判断它是否被更改。
% \begin{macrocode}
\tl_new:N \l_@@_family_default_init_tl
@@ -5366,7 +5620,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \changes{v2.0}{2014/04/16}{自动检测操作系统,载入对应的字体配置。}
%
-% \begin{macro}[internal]{\ctex_detected_platform:}
+% \begin{macro}[int]{\ctex_detected_platform:}
% 在 \LuaTeX{} 下直接用调用 |os.name| 来判断。
% \begin{macrocode}
%<*luatex>
@@ -5415,8 +5669,9 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_if_macosx:TF}
-% 以 \file{/mach_kernel} 为特征文件判断 Mac~OS~X。
+% \begin{macro}[int]{\ctex_if_macosx:TF}
+% \changes{v2.1}{2015/06/17}{改用 \file{/Library/Fonts/Songti.ttc} 为特征文件。}
+% 以 \file{/Library/Fonts/Songti.ttc} 为特征文件判断 Mac~OS~X。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_if_macosx:TF #1#2
{
@@ -5424,23 +5679,25 @@ This package consists of the file ctex.dtx, and the derived files
{ \tl_gset:Nn \g_@@_fontset_tl {#1} }
{ \tl_gset:Nn \g_@@_fontset_tl {#2} }
}
-\tl_const:Nn \c_@@_macosx_file_tl { /mach_kernel }
+\tl_const:Nn \c_@@_macosx_file_tl { /Library/Fonts/Songti.ttc }
%</xetex|pdftex>
% \end{macrocode}
% \end{macro}
%
% \subsubsection{\pkg{hyperref} 兼容性处理}
%
+% \changes{v2.1}{2015/06/16}{不再设置 \pkg{hyperref} 宏包的 \opt{colorlinks} 选项。}
+%
% 现在处理各个引擎下的 PDF 中文书签问题。根据编译引擎与文件编码的不
% 同,\pkg{ctex} 向 \pkg{hyperref} 传递适当的参数,完成中文书签的正确设置。用
% 户仍需要自己载入 \pkg{hyperref} 宏包。
%
-% \begin{macro}[internal]{\ctex_hypersetup:n}
+% \begin{macro}[int]{\ctex_hypersetup:n}
% 如果已经载入 \pkg{hyperref} 宏包,则直接使用其定义设置选项;否则
% \cs{ctex_hypersetup:n} 的效果与 \tn{PassOptionsToPackage} 一致,只传递宏包参
% 数。如果用户不载入 \pkg{hyperref} 宏包,相关参数即被丢弃。
% \begin{macrocode}
-%<*class|style>
+%<*class|ctex>
\@ifpackageloaded { hyperref }
{
\cs_new_protected_nopar:Npn \ctex_hypersetup:n #1
@@ -5450,8 +5707,7 @@ This package consists of the file ctex.dtx, and the derived files
\cs_new_protected_nopar:Npn \ctex_hypersetup:n #1
{ \PassOptionsToPackage {#1} { hyperref } }
}
-\ctex_hypersetup:n { colorlinks = true }
-%</class|style>
+%</class|ctex>
% \end{macrocode}
% \end{macro}
%
@@ -5536,7 +5792,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{\pkg{CJKfntef}、\pkg{xeCJKfntef} 相关设置}
%
-% \CTeX{} 套件对 \pdfTeX{} 与 \XeTeX{} 引擎,分别载入 \pkg{CJKfntef} 或
+% \CTeX{} 宏集对 \pdfTeX{} 与 \XeTeX{} 引擎,分别载入 \pkg{CJKfntef} 或
% \pkg{xeCJKfntef} 宏包,并关闭宏包默认的彩色等多余格式。
%
% \changes{v2.0}{2015/03/25}{默认关闭 \pkg{CJKfntef} 或 \pkg{xeCJKfntef} 的彩
@@ -5549,8 +5805,25 @@ This package consists of the file ctex.dtx, and the derived files
% 的宏定义是过时命令,仅做兼容性保留。
%
% \begin{macrocode}
-%<pdftex>\RequirePackage { CJKfntef } \normalem
-%<xetex>\RequirePackage { xeCJKfntef }
+%<*pdftex>
+\RequirePackage { CJKfntef }
+\normalem
+\cs_new_protected_nopar:Npn \@@_clear_fntef_color:n #1
+ { \tl_clear:c { CJK#1color } }
+%</pdftex>
+%<*xetex>
+\RequirePackage { xeCJKfntef }
+\@ifpackagelater { xeCJKfntef } { 2014/11/04 }
+ {
+
+ \cs_new_protected_nopar:Npn \@@_clear_fntef_color:n #1
+ { \xeCJKsetup { #1 / format = { } } }
+ }
+ {
+ \cs_new_protected_nopar:Npn \@@_clear_fntef_color:n #1
+ { \tl_clear:c { CJK#1color } }
+ }
+%</xetex>
%<*luatex>
\msg_new:nnn { ctex } { fntef-not-available }
{ Functions~ of~ `CJKfntef'~ is~ not~ available~ in~ LuaLaTeX. }
@@ -5560,8 +5833,7 @@ This package consists of the file ctex.dtx, and the derived files
{ underdot , underline , underdblline , underwave , sout , xout }
%<*pdftex|xetex>
{
-%<pdftex> \tl_clear:c { CJK#1color }
-%<xetex> \keys_set:nn { xeCJK / options } { #1 / format = { } }
+ \@@_clear_fntef_color:n {#1}
\cs_new_protected_nopar:cpx { CTEX#1 }
{
\msg_warning:nnnn { ctex } { deprecated-command } { \exp_not:c { CTEX#1 } }
@@ -5600,7 +5872,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{\tn{ccwd} 的更新}
%
-% \begin{macro}[internal]{\ctex_update_ccwd:,\ccwd}
+% \begin{macro}[int]{\ctex_update_ccwd:,\ccwd}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_update_ccwd:
%<*pdftex|xetex>
@@ -5616,7 +5888,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_update_ccglue:}
+% \begin{macro}[int]{\ctex_update_ccglue:}
% 更新字间距。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_update_ccglue:
@@ -5636,7 +5908,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal,pTF]{\ctex_if_ccglue_touched:}
+% \begin{macro}[int,pTF]{\ctex_if_ccglue_touched:}
% 检查用户是否修改过汉字间距。
% \begin{macrocode}
\prg_new_conditional:Npnn \ctex_if_ccglue_touched: { TF }
@@ -5660,7 +5932,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_update_em_unit:}
+% \begin{macro}[int]{\ctex_update_em_unit:}
% 将当前汉字的宽度保存到 \tn{ccwd} 中备用。不采用 \texttt{1 em},因为这时的
% \texttt{1 em} 实际上来自西文字体的信息,未必等于汉字的宽度,这似乎在传统的
% \file{.tfm} 字体上表现更明显。在 \pdfTeX{} 和 \XeTeX{} 下,直接使用 |\f@size\p@|
@@ -5678,7 +5950,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{其它}
%
-% \begin{macro}[internal]{\ctex_add_to_selectfont:n,\CTEX@selectfont@hook}
+% \begin{macro}[int]{\ctex_add_to_selectfont:n,\CTEX@selectfont@hook}
% \tn{EverySelectfont} 直到文档开始时才有效。为了 \tn{ccwd} 和 \pkg{LuaTeX-ja} 的
% 字体设置在导言区也可用,我们还需要在这里手工修改 \tn{selectfont}。\pkg{everysel}
% 宏包会用 \tn{CheckCommand} 来检查 \tn{selectfont} 是否为标准定义。我们修改了
@@ -5779,7 +6051,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \begin{macrocode}
%</pdftex|xetex|luatex>
-%<*class|style>
+%<*class|ctex>
% \end{macrocode}
%
% \subsubsection{载入引擎定义文件}
@@ -5833,7 +6105,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_update_size:}
+% \begin{macro}[int]{\ctex_update_size:}
% 在字号变化时更新 \tn{ccwd}、\tn{parindent} 和汉字间距。字距为零则恢复正常设置。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_update_size:
@@ -5876,7 +6148,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_update_stretch:}
+% \begin{macro}[int]{\ctex_update_stretch:}
% 首先计算一行上汉字的字数,\tn{CJKglue} 相当于将 \tn{linewidth} 与汉字总宽度之差
% 均匀地填充到汉字之间。\hologo{eTeX} 的除法是四舍五入,而我们这里应该用截断。由于
% 没有可展性的要求,直接用原语 \cs{tex_divide:D} 要比 \cs{int_div_truncate:nn}
@@ -5923,7 +6195,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_update_parindent:}
+% \begin{macro}[int]{\ctex_update_parindent:}
% 更新段落首行缩进。此函数在字号变化时调用。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_update_parindent:
@@ -5950,7 +6222,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_update_ziju:}
+% \begin{macro}[int]{\ctex_update_ziju:}
% 更新字距。若字距不大于 $-1$,即 \tn{ccwd} 为非正值,则不计算伸缩值。
% 否则,首先假定汉字的宽度为正常宽度加上字距,看一行上能正常放下多少个汉字。
% \begin{macrocode}
@@ -6092,7 +6364,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \begin{macrocode}
-%<*style>
+%<*ctex>
\msg_new:nnn { ctex } { ctexbibname }
{
Neither~`\token_to_str:N \bibname'~nor~`\token_to_str:N \refname'~can~be~found.\\
@@ -6108,11 +6380,11 @@ This package consists of the file ctex.dtx, and the derived files
\keys_define:nn { ctex } { bibname .tl_set:N = \ctexbibname }
}
}
-%</style>
+%</ctex>
% \end{macrocode}
%
% \begin{macrocode}
-%</class|style>
+%</class|ctex>
% \end{macrocode}
%
% \subsection{中文化的标题结构}
@@ -6124,7 +6396,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{定义标题格式选项}
%
-% \begin{variable}[internal]{\c_@@_headings_seq}
+% \begin{variable}[int]{\c_@@_headings_seq}
% \begin{macrocode}
\seq_new:N \c_@@_headings_seq
\seq_gset_from_clist:Nn \c_@@_headings_seq
@@ -6136,7 +6408,9 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}[internal]{\@@_initial_heading:n}
+% \changes{v2.1}{2015/06/19}{\opt{nameformat} 可以接受章节名字为参数。}
+%
+% \begin{macro}[int]{\@@_initial_heading:n}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_initial_heading:n #1
{
@@ -6151,23 +6425,29 @@ This package consists of the file ctex.dtx, and the derived files
\tl_const:cx { CTEX@#1name }
{
\exp_not:c { CTEX@#1@nameformat }
- \exp_not:c { CTEX@pre#1 }
- \exp_not:N \tl_if_empty:NTF \exp_not:c { CTEX@#1@numberformat }
- { \exp_not:c { CTEX@the#1 } }
{
- \group_begin:
- \exp_not:c { CTEX@#1@numberformat }
- \exp_not:c { CTEX@the#1 }
- \group_end:
+ \exp_not:c { CTEX@pre#1 }
+ \exp_not:N \tl_if_empty:NTF \exp_not:c { CTEX@#1@numberformat }
+ { \exp_not:c { CTEX@the#1 } }
+ {
+ \group_begin:
+ \exp_not:c { CTEX@#1@numberformat }
+ \exp_not:c { CTEX@the#1 }
+ \group_end:
+ }
+ \exp_not:c { CTEX@post#1 }
}
- \exp_not:c { CTEX@post#1 }
\exp_not:c { CTEX@#1@aftername }
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_def_heading_keys:n}
+% \changes{v2.1}{2015/05/22}{\opt{format+}, \opt{nameformat+} 等带加号的选项,
+% 加号与前面的文字之间可以有可选的空格。}
+% \changes{v2.1}{2015/06/19}{新的标题格式选项 \opt{aftertitle}。}
+%
+% \begin{macro}[int]{\@@_def_heading_keys:n}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_def_heading_keys:n #1
{
@@ -6182,19 +6462,34 @@ This package consists of the file ctex.dtx, and the derived files
#1 / numberformat .tl_set:N = \exp_not:c { CTEX@#1@numberformat } ,
#1 / aftername .tl_set:N = \exp_not:c { CTEX@#1@aftername } ,
#1 / titleformat .tl_set:N = \exp_not:c { CTEX@#1@titleformat } ,
+ #1 / aftertitle .tl_set:N = \exp_not:c { CTEX@#1@aftertitle } ,
#1 / beforeskip .tl_set:N = \exp_not:c { CTEX@#1@beforeskip } ,
#1 / afterskip .tl_set:N = \exp_not:c { CTEX@#1@afterskip} ,
#1 / indent .tl_set:N = \exp_not:c { CTEX@#1@indent } ,
#1 / format+ .code:n =
{ \tl_put_right:Nn \exp_not:c { CTEX@#1@format } { ####1 } } ,
+ #1 / format~+ .code:n =
+ { \tl_put_right:Nn \exp_not:c { CTEX@#1@format } { ####1 } } ,
#1 / nameformat+ .code:n =
{ \tl_put_right:Nn \exp_not:c { CTEX@#1@nameformat } { ####1 } } ,
+ #1 / nameformat~+ .code:n =
+ { \tl_put_right:Nn \exp_not:c { CTEX@#1@nameformat } { ####1 } } ,
#1 / numberformat+ .code:n =
{ \tl_put_right:Nn \exp_not:c { CTEX@#1@numberformat } { ####1 } } ,
+ #1 / numberformat~+ .code:n =
+ { \tl_put_right:Nn \exp_not:c { CTEX@#1@numberformat } { ####1 } } ,
#1 / aftername+ .code:n =
{ \tl_put_right:Nn \exp_not:c { CTEX@#1@aftername } { ####1 } } ,
+ #1 / aftername~+ .code:n =
+ { \tl_put_right:Nn \exp_not:c { CTEX@#1@aftername } { ####1 } } ,
#1 / titleformat+ .code:n =
{ \tl_put_right:Nn \exp_not:c { CTEX@#1@titleformat } { ####1 } } ,
+ #1 / titleformat~+ .code:n =
+ { \tl_put_right:Nn \exp_not:c { CTEX@#1@titleformat } { ####1 } } ,
+ #1 / aftertitle+ .code:n =
+ { \tl_put_right:Nn \exp_not:c { CTEX@#1@aftertitle } { ####1 } } ,
+ #1 / aftertitle~+ .code:n =
+ { \tl_put_right:Nn \exp_not:c { CTEX@#1@aftertitle } { ####1 } } ,
#1 / beforeskip .initial:n = \c_zero_skip ,
#1 / afterskip .initial:n = \c_zero_skip ,
#1 / indent .initial:n = \c_zero_dim ,
@@ -6206,7 +6501,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_assign_heading_name:nn,\@@_assign_heading_name:nnn}
+% \begin{macro}[int]{\ctex_assign_heading_name:nn,\@@_assign_heading_name:nnn}
% \opt{name} 的值是一个至多两个元素的逗号分隔列表。由于 \LTXIII{} 的
% \texttt{clist} 总是会自动忽略空元素,所以设置 |name={,章}| 后,第一个元素将会
% 是“章”,必须用空的分组保护空元素:|name={{},章}|,这在使用中有些许不便。我们
@@ -6226,32 +6521,32 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-\tl_clear:N \l_@@_tmp_tl
-\seq_map_inline:Nn \c_@@_headings_seq
- {
- \@@_initial_heading:n {#1}
- \@@_def_heading_keys:n {#1}
- }
-\use:x { \keys_define:nn { ctex } { \exp_not:o { \l_@@_tmp_tl } } }
-\tl_clear:N \l_@@_tmp_tl
-% \end{macrocode}
-%
% \changes{v2.0}{2014/03/21}{标题设置新增 \opt{pagestyle} 选项。}
%
-% \begin{macro}{pagestyle}
+% \begin{macro}{part/pagestyle,chapter/pagestyle}
% 只在 \cls{ctexbook} 和 \cls{ctexrep} 下有定义。
% \begin{macrocode}
%<*book|report>
-\keys_define:nn { ctex }
+\tl_set:Nn \l_@@_tmp_tl
{
part / pagestyle .tl_set:N = \CTEX@part@pagestyle ,
- chapter / pagestyle .tl_set:N = \CTEX@chapter@pagestyle
+ chapter / pagestyle .tl_set:N = \CTEX@chapter@pagestyle ,
}
%</book|report>
% \end{macrocode}
% \end{macro}
%
+% 定义标题键值选项。
+% \begin{macrocode}
+\seq_map_inline:Nn \c_@@_headings_seq
+ {
+ \@@_initial_heading:n {#1}
+ \@@_def_heading_keys:n {#1}
+ }
+\use:x { \keys_define:nn { ctex } { \exp_not:o { \l_@@_tmp_tl } } }
+\tl_clear:N \l_@@_tmp_tl
+% \end{macrocode}
+%
%
% \subsubsection{标准标题命令的修改}
%
@@ -6261,7 +6556,7 @@ This package consists of the file ctex.dtx, and the derived files
%<@@=>
% \end{macrocode}
%
-% \begin{macro}[internal]{\part}
+% \begin{macro}[int]{\part}
% \begin{macrocode}
%<*article>
\renewcommand\part{%
@@ -6280,7 +6575,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@part}
+% \begin{macro}[int]{\@part}
% \begin{macrocode}
%<*article>
\def\@part[#1]#2{%
@@ -6300,7 +6595,8 @@ This package consists of the file ctex.dtx, and the derived files
\fi
% \huge\bfseries #2%
\CTEX@part@titleformat{#2}%
- \markboth{}{}\par}%
+ \markboth{}{}%
+ \CTEX@part@aftertitle}%
\nobreak
% \vskip 3ex
\vskip \CTEX@part@afterskip
@@ -6330,13 +6626,14 @@ This package consists of the file ctex.dtx, and the derived files
\CTEX@partname
\fi
% \Huge\bfseries #2\par}%
- \CTEX@part@titleformat{#2}\par}%
+ \CTEX@part@titleformat{#2}%
+ \CTEX@part@aftertitle}%
\@endpart}
%</book|report>
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@spart}
+% \begin{macro}[int]{\@spart}
% \begin{macrocode}
%<*article>
\def\@spart#1{%
@@ -6344,7 +6641,8 @@ This package consists of the file ctex.dtx, and the derived files
% \normalfont \parindent \z@ \raggedright
\normalfont \parindent \CTEX@part@indent \CTEX@part@format
% \huge \bfseries #1\par}%
- \CTEX@part@titleformat{#1}\par}%
+ \CTEX@part@titleformat{#1}%
+ \CTEX@part@aftertitle}%
\nobreak
% \vskip 3ex
\vskip \CTEX@part@afterskip
@@ -6356,7 +6654,8 @@ This package consists of the file ctex.dtx, and the derived files
% \normalfont \centering
\normalfont \CTEX@part@format
% \Huge \bfseries #1\par}%
- \CTEX@part@titleformat{#1}\par}%
+ \CTEX@part@titleformat{#1}%
+ \CTEX@part@aftertitle}%
\@endpart}
%</book|report>
% \end{macrocode}
@@ -6368,7 +6667,7 @@ This package consists of the file ctex.dtx, and the derived files
%<*book|report>
% \end{macrocode}
%
-% \begin{macro}[internal]{\@chapter}
+% \begin{macro}[int]{\@chapter}
% \begin{macrocode}
\def\@chapter[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
@@ -6397,7 +6696,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@makechapterhead}
+% \begin{macro}[int]{\@makechapterhead}
% \begin{macrocode}
\def\@makechapterhead#1{%
\thispagestyle{\CTEX@chapter@pagestyle}%
@@ -6419,14 +6718,16 @@ This package consists of the file ctex.dtx, and the derived files
\fi
\interlinepenalty\@M
% \Huge \bfseries #1\par\nobreak
- \CTEX@chapter@titleformat{#1}\par\nobreak
+ \CTEX@chapter@titleformat{#1}%
+ \CTEX@chapter@aftertitle
+ \nobreak
% \vskip 40\p@
\vskip \CTEX@chapter@afterskip
}}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@makeschapterhead}
+% \begin{macro}[int]{\@makeschapterhead}
% \begin{macrocode}
\def\@makeschapterhead#1{%
\thispagestyle{\CTEX@chapter@pagestyle}%
@@ -6442,7 +6743,9 @@ This package consists of the file ctex.dtx, and the derived files
{\normalfont \parindent \CTEX@chapter@indent \CTEX@chapter@format
\interlinepenalty\@M
% \Huge \bfseries #1\par\nobreak
- \CTEX@chapter@titleformat{#1}\par\nobreak
+ \CTEX@chapter@titleformat{#1}
+ \CTEX@chapter@aftertitle
+ \nobreak
% \vskip 40\p@
\vskip \CTEX@chapter@afterskip
}}
@@ -6455,7 +6758,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \paragraph{section 类的标题}
%
-% \begin{macro}[internal]{\@seccntformat}
+% \begin{macro}[int]{\@seccntformat}
% \begin{macrocode}
\def\@seccntformat#1{%
\@ifundefined{CTEX@#1name}%
@@ -6464,7 +6767,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@sect}
+% \begin{macro}[int]{\@sect}
% \begin{macrocode}
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
@@ -6480,7 +6783,8 @@ This package consists of the file ctex.dtx, and the derived files
\@hangfrom{\hskip #3\relax\@svsec}%
% \interlinepenalty \@M #8\@@par}%
\interlinepenalty \@M
- \csname CTEX@#1@titleformat\endcsname{#8}\@@par}%
+ \csname CTEX@#1@titleformat\endcsname{#8}%
+ \csname CTEX@#1@aftertitle\endcsname}%
\endgroup
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
@@ -6495,7 +6799,9 @@ This package consists of the file ctex.dtx, and the derived files
\def\@svsechd{%
#6{\hskip #3\relax
% \@svsec #8}%
- \@svsec \csname CTEX@#1@titleformat\endcsname{#8}}%
+ \@svsec
+ \csname CTEX@#1@titleformat\endcsname{#8}%
+ \csname CTEX@#1@aftertitle\endcsname}%
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
@@ -6510,7 +6816,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@ssect}
+% \begin{macro}[int]{\@ssect}
% \tn{@ssect} 并没有参数给出当前标题的名字,扩展它的参数会与 \pkg{hyperref} 冲突。
% 它的第二个参数是 BEFORESKIP(\tn{@startsection} 的第四个参数),在定义中并没有
% 被用到,应该可以用它来传递名字。我们这里通过函数 \tn{CTEX@titleformat@n} 来传递,
@@ -6524,11 +6830,12 @@ This package consists of the file ctex.dtx, and the derived files
\@hangfrom{\hskip #1}%
% \interlinepenalty \@M #5\@@par}%
\interlinepenalty \@M
- \CTEX@titleformat@n{#5}\@@par}%
+ \CTEX@titleformat@n{#5}%
+ \CTEX@aftertitle}%
\endgroup
\else
% \def\@svsechd{#4{\hskip #1\relax #5}}%
- \def\@svsechd{#4{\hskip #1\relax \CTEX@titleformat@n{#5}}}%
+ \def\@svsechd{#4{\hskip #1\relax \CTEX@titleformat@n{#5}\CTEX@aftertitle}}%
\fi
\@xsect{#3}}
% \end{macrocode}
@@ -6538,12 +6845,16 @@ This package consists of the file ctex.dtx, and the derived files
%<@@=ctex>
% \end{macrocode}
%
-% \begin{macro}[internal]{\CTEX@set@titleformat@n, \CTEX@titleformat@n}
+% \begin{macro}[int]{\CTEX@set@titleformat@n, \CTEX@titleformat@n}
% 在 \tn{@startsection} 中设置 \tn{CTEX@titleformat@n} 为相应函数。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \CTEX@set@titleformat@n #1
- { \cs_set_eq:Nc \CTEX@titleformat@n { CTEX@#1@titleformat } }
+ {
+ \cs_set_eq:Nc \CTEX@titleformat@n { CTEX@#1@titleformat }
+ \cs_set_eq:Nc \CTEX@aftertitle { CTEX@#1@aftertitle }
+ }
\cs_new_eq:NN \CTEX@titleformat@n \use:n
+\cs_new_eq:NN \CTEX@aftertitle \prg_do_nothing:
% \end{macrocode}
% \end{macro}
%
@@ -6571,19 +6882,21 @@ This package consists of the file ctex.dtx, and the derived files
%
% \paragraph{附录标题}
%
+% \begin{macro}[int]{appendix/name,appendix/number}
% \begin{macrocode}
-\tl_new:N \CTEX@preappendix
-\tl_new:N \CTEX@postappendix
\keys_define:nn { ctex }
- { appendix .meta:nn = { ctex / appendix } {#1} }
-\keys_define:nn { ctex / appendix }
{
- name .code:n = { \ctex_assign_heading_name:nn { appendix } {#1} } ,
- number .tl_set:N = \CTEX@appendixnumber
+ appendix .meta:nn = { ctex / appendix } {#1} ,
+ appendix / name .code:n =
+ { \ctex_assign_heading_name:nn { appendix } {#1} } ,
+ appendix / number .tl_set:N = \CTEX@appendixnumber
}
+\tl_new:N \CTEX@preappendix
+\tl_new:N \CTEX@postappendix
% \end{macrocode}
+% \end{macro}
%
-% \begin{macro}[internal]{\appendix}
+% \begin{macro}[int]{\appendix}
% \begin{macrocode}
\cs_new_eq:NN \CTEX@save@appendix \appendix
\cs_gset_protected_nopar:Npn \appendix
@@ -6605,7 +6918,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{目录标签的宽度}
%
-% \begin{macro}[internal]{\numberline}
+% \begin{macro}[int]{\numberline}
% \begin{macrocode}
\cs_new_protected:Npn \CTEX@toc@width@n #1
{
@@ -6640,7 +6953,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{页眉信息的修改}
%
-% \begin{macro}[internal]{\ps@headings}
+% \begin{macro}[int]{\ps@headings}
% \begin{macrocode}
%<*article>
\ctex_patch_cmd:Nnn \ps@headings { \thesection } { \CTEXthesection }
@@ -6659,7 +6972,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macro}
%
%
-% \begin{macro}[internal]{\ps@fancy}
+% \begin{macro}[int]{\ps@fancy}
% 这里对 \pkg{fancyhdr} 宏包打补丁。原来 \pkg{fancyhdr} 宏包中使用
% \tn{thesection} 等宏表示页眉中的章节编号,这里改用 \pkg{ctex} 包所用的
% \tn{CTEXthesection} 系列宏。
@@ -6685,7 +6998,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{标签引用数字的汉化}
%
-% \begin{macro}[internal]{\refstepcounter}
+% \begin{macro}[int]{\refstepcounter}
% 对标题进行引用时,设置标签为通过 \opt{number} 选项设置的形式。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \CTEX@setcurrentlabel@n #1
@@ -6700,7 +7013,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_varioref_hook:}
+% \begin{macro}[int]{\ctex_varioref_hook:}
% 关于标签引用的宏包可能会修改 \tn{refstepcounter}。其中 \pkg{cleveref} 和
% \pkg{hyperref} 宏包都会保存之前的定义,并且它们都要求尽可能晚的被载入,所以
% 对我们上述的修改影响不大。需要注意的是 \pkg{varioref} 宏包,如果它在
@@ -6714,7 +7027,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_fix_varioref_label:n}
+% \begin{macro}[int]{\@@_fix_varioref_label:n}
% \pkg{varioref} 宏包的 \tn{labelformat} 实际上是定义一个以 |\the<#1>| 为参数的宏
% |\p@<#1>|。\LaTeX{} 在定义计数器 |<#1>| 时,都会将 |\p@<#1>| 初始化为 \tn{@empty}。
% 如果这个宏非空,说明用户自定义了标签格式,我们就不再修改。这里不能使用
@@ -6767,13 +7080,19 @@ This package consists of the file ctex.dtx, and the derived files
%<*scheme&(article|book|report)>
% \end{macrocode}
%
+% \changes{v2.1}{2015/05/30}{修复 \cls{ctexbook} 和 \cls{ctexrep} 类的中文
+% \opt{part/number} 选项初值为空的错误。}
% \begin{macrocode}
\keys_set:nn { ctex / part }
{
+ aftertitle = \par ,
%<*plain>
name = \partname \space ,
number = \thepart ,
%</plain>
+%<*chinese>
+ number = \chinese { part } ,
+%</chinese>
%<*article>
nameformat = \Large \bfseries ,
afterskip = 3ex ,
@@ -6784,7 +7103,6 @@ This package consists of the file ctex.dtx, and the derived files
beforeskip = -4ex
%</plain>
%<*chinese>
- number = \chinese { part } ,
format = \centering ,
aftername = \quad ,
titleformat = \Large \bfseries ,
@@ -6812,6 +7130,7 @@ This package consists of the file ctex.dtx, and the derived files
{
pagestyle = plain ,
nameformat = \huge \bfseries ,
+ aftertitle = \par ,
afterskip = 40 \p@ ,
%<*plain>
name = \chaptername \space ,
@@ -6833,10 +7152,15 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \begin{macrocode}
+%<@@=>
+% \end{macrocode}
+%
+% \begin{macrocode}
\keys_set:nn { ctex / section }
{
number = \thesection ,
aftername = \quad ,
+ aftertitle = \@@par ,
afterskip = 2.3ex \@plus .2ex ,
%<*plain>
format = \Large \bfseries ,
@@ -6855,6 +7179,7 @@ This package consists of the file ctex.dtx, and the derived files
number = \thesubsection ,
format = \large \bfseries ,
aftername = \quad ,
+ aftertitle = \@@par ,
afterskip = 1.5ex \@plus .2ex ,
%<*plain>
beforeskip = -3.25ex \@plus -1ex \@minus -.2ex
@@ -6871,6 +7196,7 @@ This package consists of the file ctex.dtx, and the derived files
number = \thesubsubsection ,
format = \normalsize \bfseries ,
aftername = \quad ,
+ aftertitle = \@@par ,
afterskip = 1.5ex \@plus .2ex ,
%<*plain>
beforeskip = -3.25ex \@plus -1ex \@minus -.2ex
@@ -6901,10 +7227,11 @@ This package consists of the file ctex.dtx, and the derived files
%
% 处理 \opt{sub3section} 与 \opt{sub4section} 的格式。
% \begin{macrocode}
-\int_compare:nNnTF \g_@@_section_depth_flag > \c_two
+\int_compare:nNnTF \g__ctex_section_depth_flag > \c_two
{
\keys_set:nn { ctex / paragraph }
{
+ aftertitle = \@@par ,
%<*plain>
beforeskip = -3.25ex \@plus -1ex \@minus -.2ex ,
%</plain>
@@ -6921,10 +7248,11 @@ This package consists of the file ctex.dtx, and the derived files
afterskip = -1em
}
}
-\int_compare:nNnTF \g_@@_section_depth_flag > \c_three
+\int_compare:nNnTF \g__ctex_section_depth_flag > \c_three
{
\keys_set:nn { ctex / subparagraph }
{
+ aftertitle = \@@par ,
%<*plain>
beforeskip = -3.25ex \@plus -1ex \@minus -.2ex ,
%</plain>
@@ -6941,11 +7269,15 @@ This package consists of the file ctex.dtx, and the derived files
afterskip = -1em
}
}
-\int_compare:nNnTF \g_@@_section_depth_flag > \c_two
+\int_compare:nNnTF \g__ctex_section_depth_flag > \c_two
{ \keys_set:nn { ctex / subparagraph } { indent = \c_zero_dim } }
{ \keys_set:nn { ctex / subparagraph } { indent = \parindent } }
% \end{macrocode}
%
+% \begin{macrocode}
+%<@@=ctex>
+% \end{macrocode}
+%
% 处理附录的格式。
% \begin{macrocode}
\keys_set:nn { ctex / appendix }
@@ -6967,9 +7299,23 @@ This package consists of the file ctex.dtx, and the derived files
% \subsubsection{\pkg{ctex.sty} 的 \opt{heading} 选项}
%
% \begin{macrocode}
-%<*style>
+%<*ctex|ctexheading>
+% \end{macrocode}
+%
+% \begin{variable}[int]{\c_@@_std_class_tl}
+% 用于记录被引入的标准文档类。
+% \begin{macrocode}
+\clist_map_inline:nn { article , book , report }
+ {
+ \@ifclassloaded {#1}
+ { \clist_map_break:n { \tl_const:Nn \c_@@_std_class_tl {#1} } }
+ { }
+ }
% \end{macrocode}
+% \end{variable}
%
+% 若标准文档类被引入,则载入对应的标题定义文件。否则视 \tn{chapter} 是否有定义来
+% 引入 \cls{book} 或者 \cls{article}。
% \begin{macrocode}
\msg_new:nnn { ctex } { not-standard-class }
{
@@ -6977,14 +7323,11 @@ This package consists of the file ctex.dtx, and the derived files
Heading~`#1'~is~selected.\\
ctex~may~not~work~as~expected.
}
-\bool_if:NTF \l_@@_heading_bool
+%<ctex>\bool_if:NTF \l_@@_heading_bool
+%<ctexheading>\use:n
{
- \clist_map_inline:nn { article , book , report }
- {
- \@ifclassloaded {#1}
- { \clist_map_break:n { \tl_const:Nn \c_@@_class_tl {#1} } } { }
- }
- \tl_if_exist:NF \c_@@_class_tl
+ \tl_if_exist:NTF \c_@@_std_class_tl
+ { \cs_new_eq:NN \c_@@_class_tl \c_@@_std_class_tl }
{
\cs_if_exist:NTF \chapter
{
@@ -6997,11 +7340,11 @@ This package consists of the file ctex.dtx, and the derived files
}
\ctex_file_input:n { ctex- \c_@@_class_tl .def }
}
- { \ctex_scheme_input:o { \l_@@_scheme_tl } }
+%<ctex> { \ctex_scheme_input:o { \l_@@_scheme_tl } }
% \end{macrocode}
%
% \begin{macrocode}
-%</style>
+%</ctex|ctexheading>
% \end{macrocode}
%
% \subsubsection{标题配置文件}
@@ -7081,17 +7424,14 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \changes{v2.0.2}{2015/05/16}{修复加载 \pkg{ctex} 宏包后章节标题后第一段
-% 无段首缩进的问题}
+% 无段首缩进的问题。}
% 若 \pkg{ctex} 宏包与标准文档类及其衍生文档类联用,则将载入 \pkg{indentfirst} 宏包,
% 实现章节标题后首个段落的段首缩进。
% \begin{macrocode}
-%<*!(article|book|report)>
-\clist_map_inline:nn { article , book , report }
- {
- \@ifclassloaded {#1}
- { \RequirePackage{ indentfirst } } { }
- }
-%</!(article|book|report)>
+%<*generic>
+\tl_if_exist:NT \c_@@_std_class_tl
+ { \RequirePackage{ indentfirst } }
+%</generic>
% \end{macrocode}
%
% \begin{macrocode}
@@ -7101,7 +7441,7 @@ This package consists of the file ctex.dtx, and the derived files
% \subsection{中文字号}
%
% \begin{macrocode}
-%<*class|style|ctexsize>
+%<*class|ctex|ctexsize>
% \end{macrocode}
%
% \changes{v2.0}{2014/03/08}{将中文字号功能提取到可以独立使用的 \pkg{ctexsize}。}
@@ -7113,7 +7453,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_zihao:n}
+% \begin{macro}[int]{\ctex_zihao:n}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_zihao:n #1
{
@@ -7135,7 +7475,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \changes{v2.0}{2014/03/08}{中文字号不再采用近似值。}
%
-% \begin{variable}[internal]{\c_@@_font_size_prop}
+% \begin{variable}[int]{\c_@@_font_size_prop}
% \begin{macro}[aux]{\@@_save_font_size:nn}
% 基础行距是字号的 $1.2$ 倍,采用 \hologo{eTeX} 的 scaling 运算得到的结果
% 要比简单的 |1.2\dimexpr| 精确^^A
@@ -7179,7 +7519,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macro}
% \end{variable}
%
-% \begin{macro}[internal]{\ctex_declare_math_sizes:nnnn}
+% \begin{macro}[int]{\ctex_declare_math_sizes:nnnn}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_declare_math_sizes:nnnn #1#2#3#4
{
@@ -7229,7 +7569,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsubsection{修改默认字号大小}
%
-% \begin{macro}[internal]{\ctex_set_font_size:Nnn}
+% \begin{macro}[int]{\ctex_set_font_size:Nnn}
% \begin{macrocode}
\cs_new_protected:Npn \ctex_set_font_size:Nnn #1#2#3
{
@@ -7251,7 +7591,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \begin{macrocode}
-%</class|style|ctexsize>
+%</class|ctex|ctexsize>
% \end{macrocode}
%
% \begin{macrocode}
@@ -7340,7 +7680,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \begin{macrocode}
-%<*class|style>
+%<*class|ctex>
% \end{macrocode}
%
% \subsection{更新行距}
@@ -7354,7 +7694,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \changes{v2.0}{2014/04/23}{调整 \tn{footnotesep} 的大小,以适合行距的变化。}
%
-% \begin{variable}[internal]{\footnotesep}
+% \begin{variable}[int]{\footnotesep}
% 我们调整了行距,可能导致脚注的间距与行距不协调,需要调整 \tn{footnotesep}。标准
% 文档类对 \tn{footnotesep} 的设置是,字体大小为 \tn{footnotesize} 时 \tn{strutbox}
% 的高度(默认值是 |.7\baselineskip|)。我们沿用这个设置方法,只需要更新具体的大小。
@@ -7382,16 +7722,13 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{macrocode}
\NewDocumentCommand \CTeX { }
{ \ifincsname CTeX \else: C \TeX \fi: }
-\AtBeginDocument
- {
- \cs_if_exist_use:NT \pdfstringdefDisableCommands
- { { \tl_set:Nn \CTeX { CTeX } } }
- }
+\ctex_at_end_package:nn { hyperref }
+ { \pdfstringdefDisableCommands { \tl_set:Nn \CTeX { CTeX } } }
% \end{macrocode}
% \end{macro}
%
% \changes{v2.0}{2014/03/28}{\opt{captiondelimiter} 是过时选项。}
-% \begin{macro}[internal]{captiondelimiter}
+% \begin{macro}{captiondelimiter}
% 过时选项。
% \begin{macrocode}
\keys_define:nn { ctex }
@@ -7406,12 +7743,12 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macro}
%
% \begin{macrocode}
-%</class|style>
+%</class|ctex>
% \end{macrocode}
%
% \subsubsection{列表环境的缩进}
%
-% \begin{macro}[internal]{\verse,\quotation}
+% \begin{macro}[int]{\verse,\quotation}
% 只在使用文档类的时候修改诗歌和引用环境的缩进。
% \begin{macrocode}
%<*scheme&!generic&chinese>
@@ -7423,12 +7760,12 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macro}
%
% \begin{macrocode}
-%<*class|style>
+%<*class|ctex>
% \end{macrocode}
%
% \subsubsection{其他兼容性修改}
%
-% \begin{macro}[internal]{\end}
+% \begin{macro}[int]{\end}
% \changes{v2.0}{2014/03/09}
% {解决 \pkg{etoolbox} 与 \pkg{breqn} 关于 \tn{end} 的冲突。}
% \pkg{breqn} 宏包对 \tn{end} 作了如下处理,然而这个处理并不保险。
@@ -7469,7 +7806,7 @@ This package consists of the file ctex.dtx, and the derived files
%
% \subsection{载入中文字体}
%
-% \begin{macro}[internal]{\ctex_fontset_error:n}
+% \begin{macro}[int]{\ctex_fontset_error:n}
% 字库不可用时给出紧急错误信息,停止读取定义文件。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_fontset_error:n #1
@@ -7479,7 +7816,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ctex_load_fontset:}
+% \begin{macro}[int]{\ctex_load_fontset:}
% 如果用户没有指定字体,则探测操作系统,载入相应的字体配置。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_load_fontset:
@@ -7567,7 +7904,7 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \begin{macrocode}
-%</class|style>
+%</class|ctex>
% \end{macrocode}
%
% \begin{macrocode}
@@ -7712,7 +8049,7 @@ This package consists of the file ctex.dtx, and the derived files
% 旧的 Windows 字体设置使用黑体作为无衬线体,楷体和仿宋是 GB2312 编码;新的
% Windows 字体设置使用微软雅黑作为无衬线体,楷体和仿宋是大字库。
% \begin{macrocode}
-%<*windowsnew,windowsold>
+%<*windowsnew|windowsold>
\pdftex_if_engine:TF
{
\ctex_zhmap_case:nnn
@@ -7795,7 +8132,7 @@ This package consists of the file ctex.dtx, and the derived files
[ BoldFont = { *~Bold } ] { Microsoft~YaHei }
%</windowsnew>
}
-%</windowsnew,windowsold>
+%</windowsnew|windowsold>
% \end{macrocode}
%
% \subsubsection{\pkg{ctex-fontset-adobe.def}}
@@ -8130,7 +8467,8 @@ This package consists of the file ctex.dtx, and the derived files
{ \ctex_fontset_error:n { ubuntu } }
}
{
- \setCJKmainfont [ ItalicFont = AR~PL~UKai~CN ] { AR~PL~UMing~CN }
+ \setCJKmainfont
+ [ BoldFont = WenQuanYi~Zen~Hei , ItalicFont = AR~PL~UKai~CN ] { AR~PL~UMing~CN }
\setCJKsansfont { WenQuanYi~Zen~Hei }
\setCJKmonofont { AR~PL~UMing~CN }
\setCJKfamilyfont { zhsong } { AR~PL~UMing~CN }
@@ -8207,7 +8545,13 @@ This package consists of the file ctex.dtx, and the derived files
% \end{macrocode}
%
% \begin{macrocode}
-\input ifpdf.sty\relax
+\begingroup\expandafter\endgroup
+\expandafter\let\csname ifzhmappdf\expandafter\endcsname\csname
+ \expandafter\ifx\csname ifctexpdf\endcsname\relax
+ \expandafter\ifx\csname pdfoutput\endcsname\relax
+ iffalse\else\ifnum\pdfoutput < 1 iffalse\else iftrue\fi\fi
+ \else ifctexpdf\fi
+\endcsname
% \end{macrocode}
%
% 提供非 \LaTeX{} 格式下的 \tn{ProvidesFile}。
@@ -8228,9 +8572,9 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{macrocode}
%<*windows>
\ProvidesFile{zhwindowsfonts.tex}%
- [2014/06/03 v2.0 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)]
+ [2015/05/25 v2.1 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)]
-\ifpdf
+\ifzhmappdf
\pdfmapline{=gbk@UGBK@ <simsun.ttc}
\pdfmapline{=gbksong@UGBK@ <simsun.ttc}
\pdfmapline{=gbkkai@UGBK@ <simkai.ttf}
@@ -8300,9 +8644,9 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{macrocode}
%<*adobe>
\ProvidesFile{zhadobefonts.tex}%
- [2014/06/03 v2.0 Adobe font map loader for DVIPDFMx (CTEX)]
+ [2015/05/25 v2.1 Adobe font map loader for DVIPDFMx (CTEX)]
-\ifpdf
+\ifzhmappdf
%% pdfTeX does not support OTF fonts
\else
@@ -8336,9 +8680,9 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{macrocode}
%<*fandol>
\ProvidesFile{zhfandolfonts.tex}%
- [2014/06/03 v2.0 Fandol font map loader for DVIPDFMx (CTEX)]
+ [2015/05/25 v2.1 Fandol font map loader for DVIPDFMx (CTEX)]
-\ifpdf
+\ifzhmappdf
%% pdfTeX does not support OTF fonts
\else
@@ -8372,9 +8716,9 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{macrocode}
%<*founder>
\ProvidesFile{zhfounderfonts.tex}%
- [2014/06/03 v2.0 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)]
+ [2015/05/25 v2.1 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)]
-\ifpdf
+\ifzhmappdf
\pdfmapline{=gbk@UGBK@ <FZSSK.TTF}
\pdfmapline{=gbksong@UGBK@ <FZSSK.TTF}
\pdfmapline{=gbkkai@UGBK@ <FZKTK.TTF}
@@ -8444,9 +8788,9 @@ This package consists of the file ctex.dtx, and the derived files
% \begin{macrocode}
%<*ubuntu>
\ProvidesFile{zhubuntufonts.tex}%
- [2014/06/03 v2.0 Ubuntu font map loader for pdfTeX and DVIPDFMx (CTEX)]
+ [2015/05/25 v2.1 Ubuntu font map loader for pdfTeX and DVIPDFMx (CTEX)]
-\ifpdf
+\ifzhmappdf
\pdfmapline{=gbk@UGBK@ <uming.ttc}
\pdfmapline{=gbksong@UGBK@ <uming.ttc}
\pdfmapline{=gbkkai@UGBK@ <ukai.ttc}
@@ -8542,7 +8886,7 @@ This package consists of the file ctex.dtx, and the derived files
}
% \end{macrocode}
%
-% \begin{macro}[internal]{\ctex_make_spa:nn}
+% \begin{macro}[int]{\ctex_make_spa:nn}
% |#1| 是 \file{spa} 文件名,|#2| 是由 CJK 族名与字体构成的逗号列表。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \ctex_make_spa:nn #1#2