From bcd63dd9814f27dfadde30f6a94c2c376ea0a9fd Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Mon, 25 Apr 2016 21:49:35 +0000
Subject: ctex (25apr16)

git-svn-id: svn://tug.org/texlive/trunk@40745 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/ctex/ctex.dtx | 1202 +++++++++++++++++++++-----
 1 file changed, 982 insertions(+), 220 deletions(-)

(limited to 'Master/texmf-dist/source/latex/ctex/ctex.dtx')

diff --git a/Master/texmf-dist/source/latex/ctex/ctex.dtx b/Master/texmf-dist/source/latex/ctex/ctex.dtx
index 8a702ca8d30..42507c1bb6a 100644
--- a/Master/texmf-dist/source/latex/ctex/ctex.dtx
+++ b/Master/texmf-dist/source/latex/ctex/ctex.dtx
@@ -60,6 +60,7 @@ This package consists of the file ctex.dtx, and the derived files
     ctexart.cls,
     ctexbook.cls,
     ctexrep.cls,
+    ctexbeamer.cls,
     ctexcap.sty,
     ctexhook.sty,
     ctexpatch.sty,
@@ -68,14 +69,17 @@ This package consists of the file ctex.dtx, and the derived files
     ctex-article.def,
     ctex-book.def,
     ctex-report.def,
+    ctex-beamer.def,
     ctex-scheme-plain.def,
     ctex-scheme-plain-article.def,
     ctex-scheme-plain-book.def,
     ctex-scheme-plain-report.def,
+    ctex-scheme-plain-beamer.def,
     ctex-scheme-chinese.def,
     ctex-scheme-chinese-article.def,
     ctex-scheme-chinese-book.def,
     ctex-scheme-chinese-report.def,
+    ctex-scheme-chinese-beamer.def,
     ctex-name-gbk.cfg,
     ctex-name-utf8.cfg,
     ctex.cfg,
@@ -83,6 +87,7 @@ This package consists of the file ctex.dtx, and the derived files
     ctex-engine-pdftex.def,
     ctex-engine-xetex.def,
     ctex-engine-luatex.def,
+    ctex-engine-uptex.def,
     c19rm.fd,
     c19sf.fd,
     c19tt.fd,
@@ -105,7 +110,9 @@ This package consists of the file ctex.dtx, and the derived files
     zhfandolfonts.tex,
     zhfounderfonts.tex,
     zhubuntufonts.tex,
-    zhwindowsfonts.tex, and
+    zhwindowsfonts.tex,
+    translator-theorem-dictionary-ChineseGBK.dict,
+    translator-theorem-dictionary-ChineseUTF8.dict, and
     README (this file).
 
 %</readme>
@@ -165,7 +172,7 @@ This package consists of the file ctex.dtx, and the derived files
 
 \preamble
 
-    Copyright (C) 2003--2015
+    Copyright (C) 2003--2016
     CTEX.ORG and any individual authors listed in the documentation.
 ------------------------------------------------------------------------------
 
@@ -198,6 +205,7 @@ This package consists of the file ctex.dtx, and the derived files
                                        ctexart.cls,
                                        ctexbook.cls,
                                        ctexrep.cls,
+                                       ctexbeamer.cls,
                                        ctexcap.sty,
                                        ctexhook.sty,
                                        ctexpatch.sty,
@@ -206,14 +214,17 @@ This package consists of the file ctex.dtx, and the derived files
                                        ctex-article.def,
                                        ctex-book.def,
                                        ctex-report.def,
+                                       ctex-beamer.def,
                                        ctex-scheme-plain.def,
                                        ctex-scheme-plain-article.def,
                                        ctex-scheme-plain-book.def,
                                        ctex-scheme-plain-report.def,
+                                       ctex-scheme-plain-beamer.def,
                                        ctex-scheme-chinese.def,
                                        ctex-scheme-chinese-article.def,
                                        ctex-scheme-chinese-book.def,
                                        ctex-scheme-chinese-report.def,
+                                       ctex-scheme-chinese-beamer.def,
                                        ctex-name-gbk.cfg,
                                        ctex-name-utf8.cfg,
                                        ctex.cfg,
@@ -221,6 +232,7 @@ This package consists of the file ctex.dtx, and the derived files
                                        ctex-engine-pdftex.def,
                                        ctex-engine-xetex.def,
                                        ctex-engine-luatex.def,
+                                       ctex-engine-uptex.def,
                                        c19rm.fd,
                                        c19sf.fd,
                                        c19tt.fd,
@@ -243,7 +255,9 @@ This package consists of the file ctex.dtx, and the derived files
                                        zhfandolfonts.tex,
                                        zhfounderfonts.tex,
                                        zhubuntufonts.tex,
-                                       zhwindowsfonts.tex, and
+                                       zhwindowsfonts.tex,
+                                       translator-theorem-dictionary-ChineseGBK.dict,
+                                       translator-theorem-dictionary-ChineseUTF8.dict, and
                                        README.
 \endpostamble
 
@@ -260,6 +274,7 @@ This package consists of the file ctex.dtx, and the derived files
     \file{ctexart.cls}                     {\from{\jobname.dtx}{class,article}}
     \file{ctexbook.cls}                    {\from{\jobname.dtx}{class,book}}
     \file{ctexrep.cls}                     {\from{\jobname.dtx}{class,report}}
+    \file{ctexbeamer.cls}                  {\from{\jobname.dtx}{class,beamer}}
     \usepostamble\emptypostamble
     \file{ctexcap.sty}                     {\from{\jobname.dtx}{ctexcap}}
     \file{ctexhook.sty}                    {\from{\jobname.dtx}{ctexhook}}
@@ -269,21 +284,25 @@ This package consists of the file ctex.dtx, and the derived files
     \file{ctex-article.def}                {\from{\jobname.dtx}{heading,article}}
     \file{ctex-book.def}                   {\from{\jobname.dtx}{heading,book}}
     \file{ctex-report.def}                 {\from{\jobname.dtx}{heading,report}}
+    \file{ctex-beamer.def}                 {\from{\jobname.dtx}{heading,beamer}}
     \file{ctex-scheme-plain.def}           {\from{\jobname.dtx}{scheme,generic,plain}}
     \file{ctex-scheme-plain-article.def}   {\from{\jobname.dtx}{scheme,article,plain}}
     \file{ctex-scheme-plain-book.def}      {\from{\jobname.dtx}{scheme,book,plain}}
     \file{ctex-scheme-plain-report.def}    {\from{\jobname.dtx}{scheme,report,plain}}
+    \file{ctex-scheme-plain-beamer.def}    {\from{\jobname.dtx}{scheme,beamer,plain}}
     \file{ctex-scheme-chinese.def}         {\from{\jobname.dtx}{scheme,generic,chinese}}
     \file{ctex-scheme-chinese-article.def} {\from{\jobname.dtx}{scheme,article,chinese}}
     \file{ctex-scheme-chinese-book.def}    {\from{\jobname.dtx}{scheme,book,chinese}}
     \file{ctex-scheme-chinese-report.def}  {\from{\jobname.dtx}{scheme,report,chinese}}
-    \file{ctex-name-gbk.cfg}               {\from{\jobname.dtx}{GBK}}
-    \file{ctex-name-utf8.cfg}              {\from{\jobname.dtx}{UTF8}}
+    \file{ctex-scheme-chinese-beamer.def}  {\from{\jobname.dtx}{scheme,beamer,chinese}}
+    \file{ctex-name-gbk.cfg}               {\from{\jobname.dtx}{name,GBK}}
+    \file{ctex-name-utf8.cfg}              {\from{\jobname.dtx}{name,UTF8}}
     \file{ctex.cfg}                        {\from{\jobname.dtx}{config}}
     \file{ctexopts.cfg}                    {\from{\jobname.dtx}{ctexopts}}
     \file{ctex-engine-pdftex.def}          {\from{\jobname.dtx}{pdftex}}
     \file{ctex-engine-xetex.def}           {\from{\jobname.dtx}{xetex}}
     \file{ctex-engine-luatex.def}          {\from{\jobname.dtx}{luatex}}
+    \file{ctex-engine-uptex.def}           {\from{\jobname.dtx}{uptex}}
     \file{c19rm.fd}                        {\from{\jobname.dtx}{rm,c19}}
     \file{c19sf.fd}                        {\from{\jobname.dtx}{sf,c19}}
     \file{c19tt.fd}                        {\from{\jobname.dtx}{tt,c19}}
@@ -310,6 +329,10 @@ This package consists of the file ctex.dtx, and the derived files
     \file{zhfounderfonts.tex}              {\from{\jobname.dtx}{zhmap,founder}}
     \file{zhubuntufonts.tex}               {\from{\jobname.dtx}{zhmap,ubuntu}}
     \file{zhwindowsfonts.tex}              {\from{\jobname.dtx}{zhmap,windows}}
+    \file{translator-theorem-dictionary-ChineseGBK.dict}
+                                           {\from{\jobname.dtx}{dict,theorem,GBK}}
+    \file{translator-theorem-dictionary-ChineseUTF8.dict}
+                                           {\from{\jobname.dtx}{dict,theorem,UTF8}}
     \usedir{source/latex/ctex}
     \file{\jobname.ins}                    {\from{\jobname.dtx}{install}}
     \nopreamble\nopostamble
@@ -332,6 +355,7 @@ This package consists of the file ctex.dtx, and the derived files
 \Msg{*     ctexart.cls                                           *}
 \Msg{*     ctexbook.cls                                          *}
 \Msg{*     ctexrep.cls                                           *}
+\Msg{*     ctexbeamer.cls                                        *}
 \Msg{*     ctexcap.sty                                           *}
 \Msg{*     ctexhook.sty                                          *}
 \Msg{*     ctexpatch.sty                                         *}
@@ -340,14 +364,17 @@ This package consists of the file ctex.dtx, and the derived files
 \Msg{*     ctex-article.def                                      *}
 \Msg{*     ctex-book.def                                         *}
 \Msg{*     ctex-report.def                                       *}
+\Msg{*     ctex-beamer.def                                       *}
 \Msg{*     ctex-scheme-plain.def                                 *}
 \Msg{*     ctex-scheme-plain-article.def                         *}
 \Msg{*     ctex-scheme-plain-book.def                            *}
 \Msg{*     ctex-scheme-plain-report.def                          *}
+\Msg{*     ctex-scheme-plain-beamer.def                          *}
 \Msg{*     ctex-scheme-chinese.def                               *}
 \Msg{*     ctex-scheme-chinese-article.def                       *}
 \Msg{*     ctex-scheme-chinese-book.def                          *}
 \Msg{*     ctex-scheme-chinese-report.def                        *}
+\Msg{*     ctex-scheme-chinese-beamer.def                        *}
 \Msg{*     ctex-name-gbk.cfg                                     *}
 \Msg{*     ctex-name-utf8.cfg                                    *}
 \Msg{*     ctex.cfg                                              *}
@@ -355,6 +382,7 @@ This package consists of the file ctex.dtx, and the derived files
 \Msg{*     ctex-engine-pdftex.def                                *}
 \Msg{*     ctex-engine-xetex.def                                 *}
 \Msg{*     ctex-engine-luatex.def                                *}
+\Msg{*     ctex-engine-uptex.def                                 *}
 \Msg{*     c19rm.fd                                              *}
 \Msg{*     c19sf.fd                                              *}
 \Msg{*     c19tt.fd                                              *}
@@ -377,6 +405,8 @@ This package consists of the file ctex.dtx, and the derived files
 \Msg{*     zhfounderfonts.tex                                    *}
 \Msg{*     zhubuntufonts.tex                                     *}
 \Msg{*     zhwindowsfonts.tex                                    *}
+\Msg{*     translator-theorem-dictionary-ChineseGBK.dict         *}
+\Msg{*     translator-theorem-dictionary-ChineseUTF8.dict        *}
 \Msg{*                                                           *}
 \Msg{* To produce the documentation run the file ctex.dtx        *}
 \Msg{* through XeLaTeX.                                          *}
@@ -391,7 +421,7 @@ This package consists of the file ctex.dtx, and the derived files
 \fi
 %</internal>
 %<*!(readme|install|zhmap|spa)>
-%<*!(c19|c70|ctexspa)>
+%<*!(c19|c70|ctexspa|dict)>
 %<*driver|class|style|ctexcap|ctexhook|ctexpatch>
 \NeedsTeXFormat{LaTeX2e}
 \RequirePackage{expl3}
@@ -416,6 +446,8 @@ This package consists of the file ctex.dtx, and the derived files
 %<class&book>\ProvidesExplClass{ctexbook}
 %<class&report>  {Chinese adapter for class report (CTEX)}
 %<class&report>\ProvidesExplClass{ctexrep}
+%<class&beamer>  {Chinese adapter for class beamer (CTEX)}
+%<class&beamer>\ProvidesExplClass{ctexbeamer}
 %<ctexcap>  {Chinese adapter in LaTeX (CTEX)}
 %<ctexcap>\ProvidesExplPackage{ctexcap}
 %<ctexhook>  {Document and package hooks (CTEX)}
@@ -432,6 +464,8 @@ This package consists of the file ctex.dtx, and the derived files
 %<heading&book>\ProvidesExplFile{ctex-book.def}
 %<heading&report>  {Heading modification for report (CTEX)}
 %<heading&report>\ProvidesExplFile{ctex-report.def}
+%<heading&beamer>  {Heading modification for beamer (CTEX)}
+%<heading&beamer>\ProvidesExplFile{ctex-beamer.def}
 %<scheme&plain&generic>  {Plain scheme for generic (CTEX)}
 %<scheme&plain&generic>\ProvidesExplFile{ctex-scheme-plain.def}
 %<scheme&plain&article>  {Plain scheme for article (CTEX)}
@@ -440,6 +474,8 @@ This package consists of the file ctex.dtx, and the derived files
 %<scheme&plain&book>\ProvidesExplFile{ctex-scheme-plain-book.def}
 %<scheme&plain&report>  {Plain scheme for report (CTEX)}
 %<scheme&plain&report>\ProvidesExplFile{ctex-scheme-plain-report.def}
+%<scheme&plain&beamer>  {Plain scheme for beamer (CTEX)}
+%<scheme&plain&beamer>\ProvidesExplFile{ctex-scheme-plain-beamer.def}
 %<scheme&chinese&generic>  {Chinese scheme for generic (CTEX)}
 %<scheme&chinese&generic>\ProvidesExplFile{ctex-scheme-chinese.def}
 %<scheme&chinese&article>  {Chinese scheme for article (CTEX)}
@@ -448,10 +484,12 @@ This package consists of the file ctex.dtx, and the derived files
 %<scheme&chinese&book>\ProvidesExplFile{ctex-scheme-chinese-book.def}
 %<scheme&chinese&report>  {Chinese scheme for report (CTEX)}
 %<scheme&chinese&report>\ProvidesExplFile{ctex-scheme-chinese-report.def}
-%<GBK>  {Caption with encoding GBK (CTEX)}
-%<GBK>\ProvidesExplFile{ctex-name-gbk.cfg}
-%<UTF8>  {Caption with encoding UTF8 (CTEX)}
-%<UTF8>\ProvidesExplFile{ctex-name-utf8.cfg}
+%<scheme&chinese&beamer>  {Chinese scheme for beamer (CTEX)}
+%<scheme&chinese&beamer>\ProvidesExplFile{ctex-scheme-chinese-beamer.def}
+%<name&GBK>  {Caption with encoding GBK (CTEX)}
+%<name&GBK>\ProvidesExplFile{ctex-name-gbk.cfg}
+%<name&UTF8>  {Caption with encoding UTF8 (CTEX)}
+%<name&UTF8>\ProvidesExplFile{ctex-name-utf8.cfg}
 %<config>  {Configuration file (CTEX)}
 %<config>\ProvidesExplFile{\ExplFileName.cfg}
 %<ctexopts>  {Option configuration file (CTEX)}
@@ -462,6 +500,8 @@ This package consists of the file ctex.dtx, and the derived files
 %<xetex>\ProvidesExplFile{ctex-engine-xetex.def}
 %<luatex>  {LuaLaTeX adapter (CTEX)}
 %<luatex>\ProvidesExplFile{ctex-engine-luatex.def}
+%<uptex>  {upTeX adapter (CTEX)}
+%<uptex>\ProvidesExplFile{ctex-engine-uptex.def}
 %<windows>  {Windows fonts definition (CTEX)}
 %<windows>\ProvidesExplFile{ctex-fontset-windows.def}
 %<windowsnew>  {Windows fonts definition for Vista or later version (CTEX)}
@@ -478,8 +518,8 @@ 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.3}{\ExplFileDescription}
-%</!(c19|c70|ctexspa)>
+  {\ExplFileDate}{2.4}{\ExplFileDescription}
+%</!(c19|c70|ctexspa|dict)>
 %<rm&c19>\ProvidesFile{c19rm.fd}%
 %<sf&c19>\ProvidesFile{c19sf.fd}%
 %<tt&c19>\ProvidesFile{c19tt.fd}%
@@ -487,8 +527,11 @@ 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>  [2016/02/02 v2.3 Chinese font definition (CTEX)]
-%<ctexspa>  [2016/02/02 v2.3 Space info for CJKpunct (CTEX)]
+%<dict&theorem&GBK>\ProvidesDictionary{translator-theorem-dictionary}{ChineseGBK}%
+%<dict&theorem&UTF8>\ProvidesDictionary{translator-theorem-dictionary}{ChineseUTF8}%
+%<c19|c70>  [2016/04/23 v2.4 Chinese font definition (CTEX)]
+%<ctexspa>  [2016/04/23 v2.4 Space info for CJKpunct (CTEX)]
+%<dict&theorem>  [2016/02/20 v1.0 Chinese translation for theorem name (CTEX)]
 %</!(readme|install|zhmap|spa)>
 %<*driver>
 \ExplSyntaxOff
@@ -516,9 +559,7 @@ This package consists of the file ctex.dtx, and the derived files
 \setcounter{tocdepth}{2}
 \newcommand*\email{\nolinkurl}
 \setmainfont{TeX Gyre Pagella}
-\setsansfont[
-  BoldFont = * Semibold,
-  BoldItalicFont = * Semibold Italic]{Source Sans Pro}
+\setsansfont{TeX Gyre Heros}
 \setmonofont[
   UprightFont=* Light, BoldFont=* Bold,
   SlantedFont=* Light Oblique]{CMU Typewriter Text}
@@ -686,7 +727,9 @@ This package consists of the file ctex.dtx, and the derived files
 \cs_generate_variant:Nn \__codedoc_cmd_aux:nn { no }
 \AtBeginEnvironment { syntax }
   {
+    \char_set_catcode_active:N \|
     \char_set_active_eq:NN \| \orbar
+    \char_set_catcode_active:N \(
     \char_set_active_eq:NN \( \defaultvalaux
   }
 %% 不对目录中出现的 \cs 和 \tn 等编索引
@@ -718,6 +761,8 @@ This package consists of the file ctex.dtx, and the derived files
 \def\LaTeXe{\hologo{LaTeX2e}}
 \def\LaTeXiii{\hologo{LaTeX3}}
 \def\dvipdfmx{DVIPDFM\textit{x}}
+\def\upTeX{up\TeX}
+\def\upLaTeX{up\LaTeX}
 \def\ctexkitrev#1{%
   \href{https://github.com/CTeX-org/ctex-kit/commit/#1}{\texttt{ctex-kit} rev. #1}}
 \patchcmd\theCodelineNo{\sffamily\tiny}{\normalfont\sffamily\tiny}{}{}
@@ -738,6 +783,8 @@ This package consists of the file ctex.dtx, and the derived files
   \input{ctex-name-utf8.cfg}%
   \ExplSyntaxOff
   \MakePercentIgnore}{}
+\newcommand*\BSTACK{\begin{tabular}[t]{@{}l@{}}}
+\newcommand*\ESTACK{\end{tabular}}
 \makeatother
 \EnableCrossrefs
 \CodelineIndex
@@ -749,6 +796,7 @@ This package consists of the file ctex.dtx, and the derived files
   \textit{意大利体的数字表示描述对应索引项的页码；
   带下划线的数字表示定义对应索引项的代码行号；
   罗马字体的数字表示使用对应索引项的代码行号。}}
+\setlength\IndexMin{.4\textheight}
 \usepackage{makecell}
 \newcommand{\bashcmd}{\texttt}
 \newcommand{\TeXLive}{\TeX\ Live}
@@ -770,9 +818,10 @@ This package consists of the file ctex.dtx, and the derived files
 % \changes{v2.1}{2015/05/18}{将章节标题设置功能提取到可以独立使用的宏包
 %   \pkg{ctexheading} 中。}
 % \changes{v2.2}{2015/06/24}{不再依赖 \pkg{etoolbox} 宏包。}
+% \changes{v2.4}{2015/02/19}{加强 \pkg{beamer} 宏包支持。}
 %
 %
-% \CheckSum{5056}
+% \CheckSum{5506}
 %
 % \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
@@ -802,9 +851,9 @@ This package consists of the file ctex.dtx, and the derived files
 % 提供了汉字输出支持、标点压缩、字体字号命令、标题文字汉化、中文版式调整、数字
 % 日期转换等支持功能，可适应论文、报告、书籍、幻灯片等不同类型的中文文档。
 %
-% \CTeX{} 宏集支持 \LaTeX{}、\pdfLaTeX{}、\XeLaTeX{} 和 \LuaLaTeX{} 等多种不同
+% \CTeX{} 宏集支持 \LaTeX、\pdfLaTeX、\XeLaTeX、\LuaLaTeX、\upLaTeX{} 等多种不同
 % 的编译方式，并为它们提供了统一的界面。主要功能由宏包 \pkg{ctex} 和中文文档类
-% \cls{ctexart}、\cls{ctexrep}、\cls{ctexbook} 实现。
+% \cls{ctexart}、\cls{ctexrep}、\cls{ctexbook} 和 \cls{ctexbeamer} 实现。
 % \end{abstract}
 %
 % \tableofcontents
@@ -879,8 +928,8 @@ This package consists of the file ctex.dtx, and the derived files
 %
 % \subsection{\CTeX{} 宏集的组成}
 %
-% 为了适应用户不同的需求，我们将 \CTeX{} 宏集的主要功能分散在三个中文文档类和
-% 四个宏包当中，具体的组成见表~\ref{tab:ctex}。
+% 为了适应用户不同的需求，我们将 \CTeX{} 宏集的主要功能分散在四个中文文档类和
+% 三个宏包当中，具体的组成见表~\ref{tab:ctex}。
 %
 % \begin{table}[htbp]
 % \centering
@@ -895,14 +944,14 @@ This package consists of the file ctex.dtx, and the derived files
 %                                  中篇幅的报告 \\
 %          & \file{ctexbook.cls} & 标准文档类 \cls{book} 的汉化版本，一般适用于
 %                                  长篇幅的书籍 \\
+%          & \file{ctexbeamer.cls} & 文档类 \cls{beamer} 的汉化版本，适用于
+%                                    幻灯片演示 \\
 % \midrule
 %   宏包   & \file{ctex.sty}     & 提供全部功能，但\emph{默认不开启章节标题设置功能}，
 %                                  需要使用 \opt{heading} 选项来开启 \\
-%          & \file{ctexcap.sty}  & \emph{过时宏包，仅作兼容使用}，相当于开启章节标题
-%                                  设置功能的 \file{ctex.sty} \\
 %          & \file{ctexsize.sty} & 定义和调整中文字号，在 \pkg{ctex} 宏包
 %                                  或 \CTeX{} 中文文档类之外单独调用 \\
-%          & \file{ctexheading.sty} & 提供章节标题设置功能的（见 \ref{sec:secstyle}
+%          & \file{ctexheading.sty} & 提供章节标题设置功能（见 \ref{sec:secstyle}
 %                                     节），在 \pkg{ctex} 宏包或 \CTeX{} 中文
 %                                     文档类之外单独调用 \\
 % \bottomrule
@@ -957,38 +1006,32 @@ This package consists of the file ctex.dtx, and the derived files
 % \subsection{使用 \CTeX{} 文档类}
 %
 % \emph{如果用户需要在标准文档类的基础上添加中文支持和中文版式支持，我们建议用户使用 \CTeX{}
-% 宏集提供的三个中文文档类。}
+% 宏集提供的四个中文文档类。}
 %
-% \CTeX{} 宏集提供了三个中文文档类：\cls{ctexart}、\cls{ctexrep} 和 \cls{ctexbook}，
-% 分别对应 \LaTeX{} 的标准文档类 \cls{article}、\cls{report} 和 \cls{book}。使用它们
-% 的时候，需要将涉及到的所有源文件使用 UTF-8 编码保存^^A
-% \footnote{使用 (pdf)\LaTeX{} 时也能够使用 GBK 编码，但不推荐。
-% （见 \ref{subs:encoding}~节）}。
+% \CTeX{} 宏集提供了四个中文文档类：\cls{ctexart}、\cls{ctexrep}、\cls{ctexbook} 和
+% \cls{ctexbeamer}，分别对应 \LaTeX{} 的标准文档类 \cls{article}、\cls{report}、
+% \cls{book} 和 \cls{beamer}。使用它们的时候，需要将涉及到的所有源文件使用 UTF-8
+% 编码保存\footnote{使用 (pdf)\LaTeX{} 时也能够使用 GBK 编码，但不推荐。（见
+% \ref{subs:encoding}~节）}。
 %
 % \begin{ctexexam}
 %   \documentclass[UTF8]{ctexart}
 %   \begin{document}
 %   中文文档类测试。你需要将所有源文件保存为 UTF-8 编码。
 %
-%   你可以使用 XeLaTeX 或 LuaLaTeX 编译，也可以使用 (pdf)LaTeX 编译。
+%   你可以使用 XeLaTeX、LuaLaTeX 或 upLaTeX 编译，也可以使用 (pdf)LaTeX 编译。
 %   推荐使用 XeLaTeX 或 LuaLaTeX 编译。
 %   \end{document}
 % \end{ctexexam}
 %
-% \subsection{使用 \pkg{ctex} 宏包}
-%
-% \emph{用户在使用非标准文档类时，如果需要添加中文支持或中文版式支持，则可以使用 \pkg{ctex}
-% 宏包。}
-%
-% 以下是使用 \cls{beamer} 文档类编写中文演示文稿的一个示例。
+% 以下是使用 \cls{ctexbeamer} 文档类编写中文演示文稿的一个示例。
 % \begin{ctexexam}
-%   \documentclass{beamer}
-%   \usepackage[UTF8]{ctex}
+%   \documentclass[UTF8]{ctexbeamer}
 %   \begin{document}
 %   \begin{frame}{中文演示文档}
 %   \begin{itemize}
 %     \item 你需要将所有源文件保存为 UTF-8 编码
-%     \item 你可以使用 XeLaTeX 或 LuaLaTeX 编译
+%     \item 你可以使用 XeLaTeX、LuaLaTeX 或 upLaTeX 编译
 %     \item 也可以使用 (pdf)LaTeX 编译
 %     \item 推荐使用 XeLaTeX 或 LuaLaTeX 编译
 %   \end{itemize}
@@ -996,6 +1039,11 @@ This package consists of the file ctex.dtx, and the derived files
 %   \end{document}
 % \end{ctexexam}
 %
+% \subsection{使用 \pkg{ctex} 宏包}
+%
+% \emph{用户在使用非标准文档类时，如果需要添加中文支持或中文版式支持，则可以使用 \pkg{ctex}
+% 宏包。}
+%
 % 有些文档类是建立在 \LaTeX{} 标准文档类之上开发的。这时，给 \pkg{ctex} 宏包
 % 加上 \opt{heading} 选项，可以将章节标题设置为中文风格。
 % \begin{ctexexam}
@@ -1012,7 +1060,7 @@ This package consists of the file ctex.dtx, and the derived files
 %
 % \CTeX{} 宏集已经尽可能就中文的行文和版式习惯做了调整和配置，通常而言，这些配置
 % 已经够用。因此，除非必要，我们不建议普通用户修改这些默认配置。如果你认为 \CTeX{} 宏集
-% 的默认配置还可以完善，可以在项目主页上
+% 的默认配置还可以完善，可以在项目主页上%
 % \href{https://github.com/CTeX-org/ctex-kit/issues}{提交 issue}，
 % 向我们反映，我们会酌情在后续版本中予以改进。
 %
@@ -1059,25 +1107,37 @@ This package consists of the file ctex.dtx, and the derived files
 % \subsection{编译方式}
 % \label{subs:compile}
 %
-% \CTeX{} 宏集会根据用户使用的编译方式\footnote{\LaTeX、\pdfLaTeX、\XeLaTeX 以及
-% \LuaLaTeX。}，在底层选择不同的中文支持方式（见表 \ref{tab:chinese-support}）。
+% \CTeX{} 宏集会根据用户使用的编译方式\footnote{\LaTeX、\pdfLaTeX、\XeLaTeX、
+% \LuaLaTeX{} 及 \upLaTeX。}，在底层选择不同的中文支持方式（见
+% 表~\ref{tab:chinese-support}）。
 %
 % \begin{table}[htbp]
 % \centering
+% \begin{threeparttable}
 % \caption{\CTeX{} 宏集的中文支持方式}
-% \begin{tabular}{ccc}
+% \label{tab:chinese-support}
+% \begin{tabular}{ll}
 %   \toprule
-%   (pdf)\LaTeX & \XeLaTeX & \LuaLaTeX \\
+%   编译方式 & 支持宏包 \\
 %   \midrule
-%   \pkg{CJK} & \pkg{xeCJK} & \pkg{LuaTeX-ja} \\
+%   (pdf)\LaTeX & \pkg{CJK} \\
+%   \XeLaTeX & \pkg{xeCJK} \\
+%   \LuaLaTeX & \pkg{LuaTeX-ja} \\
+%   \upLaTeX\tnote{*} & 原生 \\
 %   \bottomrule
 % \end{tabular}
-% \label{tab:chinese-support}
+% \smallskip
+% \begin{tablenotes}
+% \item[*] p\LaTeX-ng（或称 Ap\LaTeX）与 \upLaTeX{} 兼容。使用 p\LaTeX-ng 编译
+% 时，\pkg{ctex} 采用与 \upLaTeX{} 相同的设置。
+% \end{tablenotes}
+% \end{threeparttable}
 % \end{table}
 %
-% 不同的编译方式和中文支持方式会在一定程度上影响 \CTeX{} 宏集的行为，比如宏包对编码的处理。
-% 在用户使用 \XeLaTeX{} 及 \LuaLaTeX{} 编译时，\CTeX{} 宏集使用（且仅能
-% 使用）UTF-8 编码；而因为历史原因，在用户使用 \LaTeX{} 及 \pdfLaTeX{} 编译
+% 不同的编译方式和中文支持方式会在一定程度上影响 \CTeX{} 宏集的行为，比如宏包对
+% 编码的处理。
+% 在用户使用 \XeLaTeX、\LuaLaTeX{} 及 \upLaTeX{} 编译时，\CTeX{} 宏集使用（且仅
+% 能使用）UTF-8 编码；而因为历史原因，在用户使用 \LaTeX{} 及 \pdfLaTeX{} 编译
 % 时，宏包默认使用 GBK 编码。用户需要\emph{保证编译方式、
 % 源文件编码、宏包编码选项三者一致}。
 % 关于宏包编码选项，可以参考 \ref{subs:encoding}~节。
@@ -1091,10 +1151,10 @@ This package consists of the file ctex.dtx, and the derived files
 % \begin{function}[rEXP]{GBK, UTF8}
 %   指明编写文档时使用的编码格式。\CTeX{} 宏集无法检测用户编写文档时使用的编码格式，因此
 %   需要用户自行指定编码。\emph{我们建议用户总是使用 UTF-8 编码，并显式指定 \opt{UTF8}
-%   选项，并使用 \XeLaTeX{} 或 \LuaLaTeX{} 编译。}
+%   选项，并使用 \XeLaTeX、\LuaLaTeX{} 或 \upLaTeX{} 编译。}
 %
-%   使用 \XeLaTeX{} 或 \LuaLaTeX{} 编译时，\CTeX{} 宏集强制使用 UTF-8 编码，
-%   此时 \opt{GBK} 选项无效。
+%   使用 \XeLaTeX、\LuaLaTeX{} 或 \upLaTeX{} 编译时，\CTeX{} 宏集强制使用 UTF-8
+%   编码，此时 \opt{GBK} 选项无效。
 %   使用 (pdf)\LaTeX{} 编译时，\CTeX{} 宏集默认启用 \opt{GBK} 选项；不过，用户也可以
 %   显式声明 \opt{UTF8} 选项，使 \CTeX{} 宏集工作在 UTF-8 编码下。
 % \end{function}
@@ -1127,14 +1187,19 @@ This package consists of the file ctex.dtx, and the derived files
 %     \makecell{\pkg{LuaTeX-ja}\\中易字库} &
 %     \makecell{\pkg{LuaTeX-ja}\\Fandol 字库} \\
 %   \cmidrule(lr){1-5}
-%   \pdfLaTeX{} & 不可用 &
+%   \pdfLaTeX{} & 不可用\tnote{5} &
 %     \makecell{\pkg{CJK} + \pkg{zhmetrics}\\中易字库 + 微软雅黑} &
-%     \makecell{\pkg{CJK} + \pkg{zhmetrics}\\中易字库} & 不可用 \\
+%     \makecell{\pkg{CJK} + \pkg{zhmetrics}\\中易字库} & 不可用\tnote{5} \\
 %   \cmidrule(lr){1-5}
-%   \makecell{\LaTeX{} + \\\dvipdfmx{}} & 不可用 &
+%   \makecell{\LaTeX{} + \\\dvipdfmx{}} & 不可用\tnote{6} &
 %     \makecell{\pkg{CJK} + \pkg{zhmetrics}\\中易字库 + 微软雅黑} &
 %     \makecell{\pkg{CJK} + \pkg{zhmetrics}\\中易字库} &
 %     \makecell{\pkg{CJK} + \pkg{zhmetrics}\\Fandol 字库} \\
+%   \cmidrule(lr){1-5}
+%   \makecell{\upLaTeX{} + \\\dvipdfmx{}} & 不可用\tnote{6} &
+%     \makecell{\pkg{zhmetrics-uptex}\\中易字库 + 微软雅黑} &
+%     \makecell{\pkg{zhmetrics-uptex}\\中易字库} &
+%     \makecell{\pkg{zhmetrics-uptex}\\Fandol 字库} \\
 %   \bottomrule
 % \end{tabular}
 % \smallskip
@@ -1145,6 +1210,8 @@ This package consists of the file ctex.dtx, and the derived files
 %     参见：\url{https://github.com/clerkma/fandol-fonts}。
 %   \item [4] \LuaLaTeX{} 编译时使用 \pkg{LuaTeX-ja} 宏包。对此，
 %     第 \ref{sec:lualatex-chinese}~节有特别说明。
+%   \item [5] 受 \pdfTeX{} 的限制，无法嵌入 OpenType 字体。
+%   \item [6] 目前受 \dvipdfmx{} 的限制，Mac OS X 系统上的黑体和仿宋无法读取。
 % \end{tablenotes}
 % \end{threeparttable}
 % \end{table}
@@ -1259,7 +1326,7 @@ This package consists of the file ctex.dtx, and the derived files
 %   \end{syntax}
 %   将文章默认字号（\tn{normalsize}）设置为小四号字或五号字，
 %   具体情况见表 \ref{tab:fontsize}。\opt{false} 禁用本功能。
-%   本选项可以用于三个 \CTeX{} 文档类和 \pkg{ctex} 宏包，
+%   本选项可以用于四个 \CTeX{} 文档类和 \pkg{ctex} 宏包，
 %   也可以用于 \pkg{ctexsize} 宏包。
 %
 %   \opt{scheme = chinese} 时，默认值为 |5|，即设置 \tn{normalsize} 为五号字。
@@ -1321,10 +1388,10 @@ This package consists of the file ctex.dtx, and the derived files
 %   \ref{sec:secstyle}~节和 \ref{subs:pagestyle}~节。
 % \end{function}
 %
-% \CTeX{} 宏集提供的三个文档类总是启用该功能。如果在 \pkg{ctex.sty} 下启用该选项，
+% \CTeX{} 宏集提供的四个文档类总是启用该功能。如果在 \pkg{ctex.sty} 下启用该选项，
 % 将会检查当前是否使用 \LaTeX{} 标准文档类。
 % 若然，则该选项将会使得 \pkg{ctex.sty} 宏包的行为和 \CTeX{} 宏集提供的
-% 三个中文文档类\emph{完全}一致；若不然，则会根据 \tn{chapter}
+% 四个中文文档类\emph{完全}一致；若不然，则会根据 \tn{chapter}
 % 是否有定义来使用 \cls{ctexbook} 或者 \cls{ctexart} 的标题设置。
 %
 % \begin{function}[rEXP]{sub3section, sub4section}
@@ -1338,10 +1405,11 @@ This package consists of the file ctex.dtx, and the derived files
 %
 %   启用该选项通常需要将计数器 |secnumdepth| 的值为设置为 4 或 5。
 %
-%   具体格式可参考 \ref{sec:secstyle}~节中的 \opt{afterskip} 等选项。
+%   具体格式可参考 \ref{sec:secstyle}~节中的 \opt{runin} 和 \opt{afterskip} 选项。
 %
-%   注意，上述两个选项只有在 \opt{heading} 选项启用的时候才有意义。亦即，只有在使用
-%   三个 \CTeX{} 文档类或启用了 \opt{heading} 的 \pkg{ctex.sty} 的时候才有意义。
+%   注意，上述两个选项只有在非 \cls{beamer} 文档类下 \opt{heading} 选项启用的时候
+%   才有意义。亦即，只有在使用除了 \cls{ctexbeamer} 的三个 \CTeX{} 文档类或启用了
+%   \opt{heading} 的 \pkg{ctex.sty} 的时候才有意义。
 % \end{function}
 %
 % \subsection{排版方案选项}
@@ -1355,7 +1423,7 @@ This package consists of the file ctex.dtx, and the derived files
 % \end{function}
 %   \begin{optdesc}[itemsep=\medskipamount]
 %     \item[chinese] 调整默认字号为五号字，并调整行距为 |1.3|；
-%       汉化文档中的标题名字（如“图”、“表”、“目录”和“参考文献”，
+%       汉化文档中的标题名字（如“图”、“表”、“目录”和“参考文献”等，
 %       见 \ref{subs:capname}~节）；
 %       在 \opt{heading = true} 的情况下^^A
 %       \footnote{使用 \CTeX{} 文档类，或者使用 \pkg{ctex} 宏包且开启该选项时。}^^A
@@ -1416,8 +1484,9 @@ This package consists of the file ctex.dtx, and the derived files
 %   \end{ctexexam}
 %   则会得到“{\ctexset{space=auto}汉字 分词 技术 English}”。
 %
-% \emph{使用 \textup{\LuaLaTeX} 编译的时候，该选项无效：汉字间的空格以及汉字与西文字符
-%   之间的空格总是有效，不会被忽略，但可以自动忽略掉由换行产生的空格。}
+% \emph{使用 \textup{\LuaLaTeX{} 及 \upLaTeX} 编译的时候，该选项无效：汉字间的
+% 空格以及汉字与西文字符之间的空格总是有效，不会被忽略，但可以自动忽略掉由换行
+% 产生的空格。}
 %
 % \begin{function}[rEXP,added=2014-04-23]{linespread}
 %   \begin{syntax}
@@ -1578,7 +1647,40 @@ This package consists of the file ctex.dtx, and the derived files
 %     bibname = <名字>
 %   \end{syntax}
 % 设置参考文献标题名 \tn{refname}（对 \cls{article}）或 \tn{bibname}（对
-% \cls{report} 和 \cls{book}）。中文默认为“\refname”。
+% \cls{report}、\cls{book} 和 \cls{beamer}）。中文默认为“\refname”。
+% \end{function}
+%
+% \begin{function}[EXP]{proofname}
+%   \begin{syntax}
+%     proofname = <名字>
+%   \end{syntax}
+% 设置证明环境的名称 \tn{proofname}。中文默认为“\proofname”。
+% \end{function}
+%
+% 如果使用 \cls{ctexbeamer} 文档类或者在 \cls{beamer} 文档类下使用 \pkg{ctex} 包，
+% 还会汉化常用定理类环境的诸如“定义”、“定理”和“引理”等名称。此时，还有下列
+% 三个选项。
+%
+% \begin{function}[EXP]{refname}
+%   \begin{syntax}
+%     refname = <名字>
+%   \end{syntax}
+% 设置参考文献标题名 \tn{refname}。中文默认为“\refname”。
+% \end{function}
+%
+% \begin{function}[EXP]{algorithmname}
+%   \begin{syntax}
+%     algorithmname = <名字>
+%   \end{syntax}
+% 设置算法环境标题名 \tn{algorithmname}。中文默认为“算法”。
+% \end{function}
+%
+% \begin{function}[EXP]{continuation}
+%   \begin{syntax}
+%     continuation = <名字>
+%   \end{syntax}
+% 设置 \cls{beamer} 可断页的帧在续页标题中的延续标识 \tn{insertcontinuationtext}。
+% 中文默认为“（续）”。
 % \end{function}
 %
 % \end{defaultcapconfig}
@@ -1683,8 +1785,8 @@ This package consists of the file ctex.dtx, and the derived files
 % \label{sec:secstyle}
 %
 % \CTeX 宏包对 \LaTeX 的标准文档类（\cls{article}、\cls{report} 和
-% \cls{book}）进行了扩充。当以 \opt{heading} 选项调用 \CTeX 宏包时
-% （\ref{subs:options-heading}~节），则会启用章
+% \cls{book}）和 \cls{beamer} 进行了扩充。当以 \opt{heading} 选项调用 \CTeX
+% 宏包时（\ref{subs:options-heading}~节），则会启用章
 % 节标题的格式设置功能。本节就来介绍有关章节标题的格式选项，所有选项使用
 % \tn{ctexset} 命令设置。
 %
@@ -1699,8 +1801,13 @@ This package consists of the file ctex.dtx, and the derived files
 % \opt{name}, \opt{number}, \opt{format}, \opt{nameformat}, \opt{numberformat},
 % \opt{aftername}, \opt{titleformat}, \opt{aftertitle}, \opt{runin},
 % \opt{afterindent}, \opt{beforeskip}, \opt{afterskip}, \opt{indent},
-% \opt{pagestyle} 等。但注意，对 \cls{article} 及其衍生的
-% \cls{ctexart} 等文档类，没有 |chapter| 级别的标题。
+% \opt{pagestyle} 等。
+%
+% 注意，对 \cls{article} 及其衍生的 \cls{ctexart} 等文档类，没有 |chapter|
+% 级别的标题。而对于 \cls{beamer} 文档类，这些选项控制的是由 \tn{partpage}、
+% \tn{sectionpage} 和 \tn{subsectionpage} 产生的标题格式，此时只有 |part|、
+% |section| 和 |subsection| 这三层级别，并且 \opt{runin} 和 \opt{afterindent}
+% 这两个格式无效。
 %
 % 多级选项之间用斜线分开，例如，\opt{part/name} 选项设置 \tn{part} 标题的在数
 % 字前后的名称，而 \opt{section/number} 选项设置 \tn{section} 标题的数字类型。
@@ -1770,7 +1877,11 @@ This package consists of the file ctex.dtx, and the derived files
 % part & |{第,部分}| & |{\partname\space}| & 原 \tn{partname} 为 Part \\
 % chapter & |{第,章}| & |{\chaptername\space}|
 %   & 原 \tn{chaptername} 为 Chapter \\
+% section (beamer) & |{}| & |{\sectionname\space}|
+%   & \BSTACK 原 \tn{sectionname} 为\\ |\translate{Section}| \ESTACK \\
 % section & 同右 & |{}| & \\
+% subsection (beamer) & |{}| & |{\subsectionname\space}|
+%   & \BSTACK 原 \tn{subsectionname} 为\\ |\translate{Subsection}| \ESTACK \\
 % subsection & 同右 & |{}| & \\
 % subsubsection & 同右 & |{}| & \\
 % paragraph & 同右 & |{}| & \\
@@ -1790,6 +1901,7 @@ This package consists of the file ctex.dtx, and the derived files
 %     section/number = \Roman{section}
 %   }
 %   \end{ctexexam}
+% \end{function}
 %
 %   \opt{number} 选项的定义同时将控制对章节计数器的交叉引用。在引用计数器时，
 %   记录在 \LaTeX{} 辅助文件中的是 \opt{number} 选项的定义。
@@ -1797,7 +1909,6 @@ This package consists of the file ctex.dtx, and the derived files
 %   但是，\opt{number} 选项不会影响计数器本身的输出。即设置 |section/number|
 %   不会影响 \tn{thesection} 的定义。（但该选项会影响 \tn{CTEXthesection} 的定
 %   义，见后。）
-% \end{function}
 %
 % \begin{table}[htbp]
 % \small\centering
@@ -1808,9 +1919,14 @@ This package consists of the file ctex.dtx, and the derived files
 % 标题名 & \opt{scheme = chinese} & \opt{scheme = plain}
 %   & 原 |\the|\meta{标题} 等价定义 \\
 % \midrule
+% part (beamer) & |\chinese{part}| & |\insertromanpartnumber| & 意义为 |\Roman{part}| \\
 % part & |\chinese{part}| & |\thepart| & |\Roman{part}| \\
 % chapter & |\chinese{chapter}| & |\thechapter| & |\arabic{chapter}| \\
+% section (beamer) & 同右 & |\insertsectionnumber| & 意义为 |\arabic{section}| \\
 % section & 同右 & |\thesection| & |\arabic{section}| \\
+% subsection (beamer)
+%   & \BSTACK |\arabic{section}.|\\ |\arabic{subsection}| \ESTACK
+%   & |\insertsubsectionnumber| & 意义为 |\arabic{subsection}| \\
 % subsection & 同右 & |\thesubsection| & |\thesection.\arabic{subsection}| \\
 % subsubsection & 同右 & |\thesubsubsection|
 %   & |\thesubsection.\arabic{subsubsection}| \\
@@ -1860,9 +1976,12 @@ This package consists of the file ctex.dtx, and the derived files
 % 标题名 & \opt{scheme = chinese} & \opt{scheme = plain} \\
 % \midrule
 % part (article) & |\Large\bfseries\centering| & |\raggedright| \\
+% part (beamer) & 同右 & |\centering| \\
 % part & |\huge\bfseries\centering| & |\centering| \\
 % chapter & |\huge\bfseries\centering| & |\raggedright| \\
+% section (beamer) & 同右 & |\centering| \\
 % section & |\Large\bfseries\centering| & |\Large\bfseries| \\
+% subsection (beamer) & 同右 & |\centering| \\
 % subsection & 同右 & |\large\bfseries| \\
 % subsubsection & 同右 & |\normalsize\bfseries| \\
 % paragraph & 同右 & |\normalsize\bfseries| \\
@@ -1896,9 +2015,18 @@ This package consists of the file ctex.dtx, and the derived files
 % 标题名 & \opt{scheme = chinese} & \opt{scheme = plain} \\
 % \midrule
 % part (article) & |{}| & |\Large\bfseries| \\
+% part (beamer) & 同右
+%   & \BSTACK |\usebeamerfont{part name}| \\
+%             |\usebeamercolor[fg]{part name}| \ESTACK \\
 % part & |{}| & |\huge\bfseries| \\
 % chapter & |{}| & |\huge\bfseries| \\
+% section (beamer) & 同右
+%   & \BSTACK |\usebeamerfont{section name}| \\
+%             |\usebeamercolor[fg]{section name}| \ESTACK \\
 % section & 同右 & |{}| \\
+% subsection (beamer) & 同右
+%   & \BSTACK |\usebeamerfont{subsection name}| \\
+%             |\usebeamercolor[fg]{subsection name}| \ESTACK \\
 % subsection & 同右 & |{}| \\
 % subsubsection & 同右 & |{}| \\
 % paragraph & 同右 & |{}| \\
@@ -1953,9 +2081,12 @@ This package consists of the file ctex.dtx, and the derived files
 % 标题名 & \opt{scheme = chinese} & \opt{scheme = plain} \\
 % \midrule
 % part (article) & |\quad| & |\par\nobreak| \\
+% part (beamer) & 同右 & |\vskip 1em \par| \\
 % part & 同右 & |\par\vskip 20pt| \\
 % chapter & |\quad| & |\par\nobreak\vskip 20pt| \\
+% section (beamer) & 同右 & |\vskip 1em \par| \\
 % section & 同右 & |\quad| \\
+% subsection (beamer) & 同右 & |\vskip 1em \par| \\
 % subsection & 同右 & |\quad| \\
 % subsubsection & 同右 & |\quad| \\
 % paragraph & 同右 & |\quad| \\
@@ -2005,9 +2136,12 @@ This package consists of the file ctex.dtx, and the derived files
 % 标题名 & \opt{scheme = chinese} & \opt{scheme = plain} \\
 % \midrule
 % part (article) & |{}| & |\huge\bfseries| \\
+% part (beamer) & 同右 & |\usebeamerfont{part title}| \\
 % part & |{}| & |\Huge\bfseries| \\
 % chapter & |{}| & |\Huge\bfseries| \\
+% section (beamer) & 同右 & |\usebeamerfont{section title}| \\
 % section & 同右 & |{}| \\
+% subsection (beamer) & 同右 & |\usebeamerfont{subsection title}| \\
 % subsection & 同右 & |{}| \\
 % subsubsection & 同右 & |{}| \\
 % paragraph & 同右 & |{}| \\
@@ -2139,9 +2273,12 @@ This package consists of the file ctex.dtx, and the derived files
 % 标题名 & 默认值 \\
 % \midrule
 % part (article) & |4ex| \\
+% part (beamer) & |0pt| \\
 % part & |0pt plus 1fil| \\
 % chapter & |50pt| \\
+% section (beamer) & |0pt| \\
 % section & |3.5ex plus 1ex minus .2ex| \\
+% subsection (beamer) & |0pt| \\
 % subsection & |3.25ex plus 1ex minus .2ex| \\
 % subsubsection & |3.25ex plus 1ex minus .2ex| \\
 % paragraph & |3.25ex plus 1ex minus .2ex| \\
@@ -2175,9 +2312,12 @@ This package consists of the file ctex.dtx, and the derived files
 % 标题名 & 默认值 \\
 % \midrule
 % part (article) & |3ex| \\
+% part (beamer) & |0pt| \\
 % part & |0pt plus 1fil| \\
 % chapter & |40pt| \\
+% section (beamer) & |0pt| \\
 % section & |2.3ex plus .2ex| \\
+% subsection (beamer) & |0pt| \\
 % subsection & |1.5ex plus .2ex| \\
 % subsubsection & |1.5ex plus .2ex| \\
 % paragraph & |1em| \\
@@ -2196,6 +2336,7 @@ This package consists of the file ctex.dtx, and the derived files
 % 标题名 & 默认值 \\
 % \midrule
 % part (article) & |0pt| \\
+% part (beamer) & |0pt| \\
 % part & 无效 \\
 % chapter & |0pt| \\
 % section & |0pt| \\
@@ -2895,6 +3036,8 @@ This package consists of the file ctex.dtx, and the derived files
 %     \item \pkg{luaotfload} 宏包，它还依赖 \pkg{luatexbase} 宏包。
 %   \end{itemize}
 %   \item[\ding{229}] 以上是使用 \LuaLaTeX{} 编译时的依赖项。
+%   \item \pkg{zhmetrics-uptex} 宏包。
+%   \item[\ding{229}] 以上是使用 \upLaTeX{} 编译时的依赖项。
 % \end{itemize}
 %
 % 出于一些原因，\pkg{zhmCJK} 尚未被收入 \TeXLive{} 和 \MiKTeX。因此，若
@@ -3119,7 +3262,9 @@ This package consists of the file ctex.dtx, and the derived files
 % 若大于 |3|，则 \tn{paragraph} 和 \tn{subparagraph} 标题单独占一行；若为 |3|，则
 % \tn{paragraph} 单独占一行。
 %    \begin{macrocode}
+%<*!beamer>
 \cs_new_eq:NN \g_@@_section_depth_flag \c_two
+%</!beamer>
 %    \end{macrocode}
 % \end{variable}
 %
@@ -3520,12 +3665,14 @@ This package consists of the file ctex.dtx, and the derived files
 %
 % \begin{macro}{sub3section,sub4section}
 % \begin{macrocode}
+%<*!beamer>
     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:n = true ,
     sub4section .value_forbidden:n = true ,
+%</!beamer>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3692,6 +3839,11 @@ This package consists of the file ctex.dtx, and the derived files
 \PassOptionsToClass { \g_@@_std_options_clist } { report }
 \LoadClass { report }
 %</report>
+%<*beamer>
+\tl_const:Nn \c_@@_class_tl { beamer }
+\PassOptionsToClass { \g_@@_std_options_clist } { beamer }
+\LoadClass { beamer }
+%</beamer>
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -3735,6 +3887,22 @@ This package consists of the file ctex.dtx, and the derived files
 %
 % \subsubsection{\pkg{ctex-engine-pdftex.def}}
 %
+% \begin{macro}[int]{\ctex_set_zhmap:n}
+% 设置 \upTeX{} 字体映射，同时作用于 \tn{AtBeginDvi} 与
+% \tn{AtBeginShipoutFirst}。该宏对 \pdfTeX{} 和 \upTeX{} 均有用。
+%     \begin{macrocode}
+%<*pdftex|uptex>
+\cs_new_protected_nopar:Npn \ctex_set_zhmap:n #1
+  {
+    \AtBeginDvi { #1 }
+    \ctex_at_end_package:nn { atbegshi }
+      { \AtBeginShipoutFirst { #1 } }
+  }
+\@onlypreamble \ctex_set_zhmap:n
+%</pdftex|uptex>
+%    \end{macrocode}
+% \end{macro}
+%
 %    \begin{macrocode}
 %<*pdftex>
 %    \end{macrocode}
@@ -3783,11 +3951,11 @@ This package consists of the file ctex.dtx, and the derived files
 \cs_new_protected_nopar:Npn \@@_save_cmap:Nn #1#2
   {
     \tl_set:Nx \l_@@_tmp_tl { \str_lower_case:n {#2} \CJK@plane }
-    \tex_immediate:D \pdfobj stream ~ file { \l_@@_tmp_tl .cmap }
+    \tex_immediate:D \pdftex_pdfobj:D 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 }
+        \exp_not:N \pdftex_pdffontattr:D \exp_not:N \tex_font:D
+          { /ToUnicode ~ \int_use:N \pdftex_pdflastobj:D \c_space_tl 0 ~ R }
       }
   }
 %    \end{macrocode}
@@ -3836,11 +4004,9 @@ This package consists of the file ctex.dtx, and the derived files
       \tl_set:Nn \CJKrmdefault {#1}
       \tl_set:Nn \CJKsfdefault {#2}
       \tl_set:Nn \CJKttdefault {#3}
-      \AtBeginDvi { \file_input:n {#4} }
-      \ctex_at_end_package:nn { atbegshi }
-        { \AtBeginShipoutFirst { \file_input:n {#4} } }
+      \ctex_set_zhmap:n { \file_input:n {#4} }
     }
-  \@onlypreamble \ctex_load_zhmap:n
+  \@onlypreamble \ctex_load_zhmap:nnnn
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3938,6 +4104,11 @@ This package consists of the file ctex.dtx, and the derived files
   }
 %    \end{macrocode}
 %
+% 在导言区末尾更新 \tn{CJKfamilydefault}，注意要在 \tn{CJK@envStart} 之前使用。
+%    \begin{macrocode}
+\ctex_at_end_preamble:n { \ctex_update_default_family: }
+%    \end{macrocode}
+%
 % 启用中文字符功能。\texttt{GBK} 编码时，将汉字的首字节设置为活动字符，并对这些
 % 字符初始化；\texttt{UTF8} 编码时，上游宏包已经处理好。
 % \tn{CJK@makeActive} 应该先于 \file{ctex-name-gbk.cfg} 等文件的载入。
@@ -3981,6 +4152,7 @@ This package consists of the file ctex.dtx, and the derived files
 % \tn{CJK@upperReset} 可能会有一定风险，因此我们直到导言区末尾才使用
 % \tn{CJK@envStart}。这样可以避免将 \env{CJK} 环境内置入 \env{document} 环境的
 % 最里层，最后也就不需要 \tn{clearpage}。\pkg{zhmCJK} 已经提供类似功能。
+% 注意先使用 \cs{ctex_update_default_family:} 更新 \tn{CJKfamilydefault}。
 %    \begin{macrocode}
   \exp_args:Nx \ctex_at_end_preamble:n
     {
@@ -5067,6 +5239,11 @@ This package consists of the file ctex.dtx, and the derived files
   { \ctex_patch_failure:N \normalfont }
 %    \end{macrocode}
 %
+% 在导言区末尾更新 \tn{CJKfamilydefault}。
+%    \begin{macrocode}
+\ctex_at_end_preamble:n { \ctex_update_default_family: }
+%    \end{macrocode}
+%
 % \begin{macro}[int]{\ctex_ltj_ensure_default_family:}
 % 在导言区结束确认 \tn{CJKfamilydefault} 确实存在。
 %    \begin{macrocode}
@@ -5640,8 +5817,139 @@ This package consists of the file ctex.dtx, and the derived files
 %</luatex>
 %    \end{macrocode}
 %
+% \subsubsection{\pkg{ctex-engine-uptex.def}}
+%
+%    \begin{macrocode}
+%<*uptex>
+%    \end{macrocode}
+%
+% \changes{v2.4}{2016/02/28}{初步支持 \upLaTeX。}
+%
+% 按 \pkg{CJK} 的命名习惯模拟部分命令，并设置默认字体。
+%    \begin{macrocode}
+\tl_set:Nn \CJKrmdefault { rm }
+\tl_set:Nn \CJKsfdefault { sf }
+\tl_set:Nn \CJKttdefault { tt }
+\tl_set:Nn \CJKfamilydefault { \CJKrmdefault }
+\tl_put_left:Nn \rmfamily { \kanjifamily { \CJKrmdefault } }
+\tl_put_left:Nn \sffamily { \kanjifamily { \CJKsfdefault } }
+\tl_put_left:Nn \ttfamily { \kanjifamily { \CJKttdefault } }
+\NewDocumentCommand \CJKfamily { m }
+  {
+    \kanjifamily { #1 }
+    \selectfont
+  }
+\tl_set:Nn \kanjifamilydefault { \CJKfamilydefault }
+%    \end{macrocode}
+%
+% \begin{macro}{\em}
+% 取消 \upLaTeX{} 对 \tn{em} 使用 |\mcfamily|、|\gtfamily| 命令的重定义，恢复
+% \LaTeXe{} 对 \tn{em} 的原始定义。如果用户已经重定义了 \tn{em}，则新定义保持
+% 不变。
+%    \begin{macrocode}
+\ctex_patch_cmd:Nnn \em
+  { \mcfamily \upshape \else \gtfamily \itshape }
+  { \eminnershape \else \itshape }
+%    \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.4}{2016/04/24}{正确设置 \upTeX{} 下字体命令。}
+% \begin{macro}[int]{\ctex_set_upfamily:nnn}
+% 将 NFSS 字体族 |#1| 设置为 JFM 字体名 |#2|，粗体形式字体名 |#3|。其中字体名
+% 形如 |upzhserif|，不包括表示方向的后缀 |-h| 与 |-v|。粗体字体名为空时不设置该
+% 字形。本命令不设置字体映射，需要复用已有的字体映射或另行设置。
+%    \begin{macrocode}
+\cs_new_protected_nopar:Npn \ctex_set_upfamily:nnn #1 #2 #3
+  {
+    \DeclareKanjiFamily{JY2}{#1}{}
+    \DeclareKanjiFamily{JT2}{#1}{}
+    \DeclareFontShape{JY2}{#1}{m}{n}{<->~ #2-h}{}
+    \DeclareFontShape{JT2}{#1}{m}{n}{<->~ #2-v}{}
+    \tl_if_empty:nF { #3 }
+      {
+        \DeclareFontShape{JY2}{#1}{bx}{n}{<->~ #3-h}{}
+        \DeclareFontShape{JT2}{#1}{bx}{n}{<->~ #3-v}{}
+      }
+  }
+\@onlypreamble \ctex_set_upfamily:nnn
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\ctex_set_upmap:nnn}
+% 设置 \upTeX{} 字体映射。|#1| 是形如 |upserif| 的 PS TFM 字体名，不带表示粗体
+% 的后缀 |b| 与表示排版方向的后缀 |-h| 与 |-v|。|#2| 与 |#3| 是普通与粗体的实际
+% 字体名。
+%    \begin{macrocode}
+\cs_new_protected_nopar:Npn \ctex_set_upmap:nnn #1 #2 #3
+  {
+    \ctex_set_zhmap:n
+      {
+        \special{ pdf:mapline~ #1-h~   UniGB-UTF16-H~ #2 }
+        \special{ pdf:mapline~ #1-v~   UniGB-UTF16-V~ #2 }
+        \tl_if_empty:nF { #3 }
+          {
+            \special{ pdf:mapline~ #1b-h~  UniGB-UTF16-H~ #3 }
+            \special{ pdf:mapline~ #1b-v~  UniGB-UTF16-V~ #3 }
+          }
+      }
+  }
+\@onlypreamble \ctex_set_upmap:nnn
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\ctex_set_upfonts:nnnnnn}
+% 设置 \upTeX{} 基本字体映射，按 \pkg{zhmetrics-uptex} 的定义，依次设置衬线体
+% 正、粗、意大利，无衬线体正、粗，等宽体正——共 6 种字体，并分横排及直排。
+%    \begin{macrocode}
+\cs_new_protected_nopar:Npn \ctex_set_upfonts:nnnnnn #1 #2 #3 #4 #5 #6
+  {
+    \ctex_set_upmap:nnn { upserif } { #1 } { #2 }
+    \ctex_set_upmap:nnn { upserifit } { #3 } {}
+    \ctex_set_upmap:nnn { upsans } { #4 } { #5 }
+    \ctex_set_upmap:nnn { upmono } { #6 } {}
+  }
+\@onlypreamble \ctex_set_upfonts:nnnnnn
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\@EverySelectfont@Init}
+% \pkg{everysel} 宏包（2011/10/28）未考虑 \upLaTeX{} 对 \tn{selectfont} 的修
+% 改，因此这里需要对其给出正确的定义。因为不会使用 \pkg{CJK}，这里忽略有关
+% \pkg{CJK} 的定义。
+%    \begin{macrocode}
+\cs_set_nopar:Npn \@EverySelectfont@Init
+  {
+    \ctex_patch_cmd:Nnn \selectfont
+      { \enc@update }
+      {
+        \@EverySelectfont@EveryHook
+        \@EverySelectfont@AtNextHook
+        \gdef \@EverySelectfont@AtNextHook { }
+        \enc@update
+      }
+    \@ifpackageloaded { tracefnt }
+      {
+        \EverySelectfont
+        {
+          \ifnum \tracingfonts > \tw@
+            \@font@info { Switching~ to~ \font@name }
+          \fi
+        }
+      }
+      { }
+    \let \@EverySelectfont@Init \undefined
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
+%</uptex>
+%    \end{macrocode}
+%
 % \subsubsection{调整 \tn{CJKfamilydefault}}
 %
+% \changes{v2.4}{2016/02/15}{正确更新 \pkg{CJK} 包的 \tn{CJKfamilydefault}。}
+%
 % \begin{macro}[int]{\ctex_update_default_family:}
 % 在导言区结束，如果 \tn{CJKfamilydefault} 没有被更改，则在此时根据西文字体的情况
 % 更新 \tn{CJKfamilydefault}。\pkg{xeCJK} 已经有这个功能，不需要再调整。
@@ -5673,7 +5981,6 @@ This package consists of the file ctex.dtx, and the derived files
     \ctex_ltj_ensure_default_family:
 %</luatex>
   }
-\ctex_at_end_preamble:n { \ctex_update_default_family: }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -5722,7 +6029,7 @@ This package consists of the file ctex.dtx, and the derived files
 % 文件系统的大小写敏感性来判断。Mac~OS~X 的大小写敏感性在安装时是可选的。为了
 % 保险起见，这里的判断很繁琐，最多要进行 4 次文件操作！
 %    \begin{macrocode}
-%<*xetex|pdftex>
+%<*xetex|pdftex|uptex>
 \cs_new_protected_nopar:Npn \ctex_detected_platform:
   {
     \file_if_exist:nTF { /dev/null }
@@ -5753,7 +6060,7 @@ This package consists of the file ctex.dtx, and the derived files
       { \tl_gset:Nn \g_@@_fontset_tl {#2} }
   }
 \str_const:Nn \c_@@_macosx_file_str { /Library/Fonts/Songti.ttc }
-%</xetex|pdftex>
+%</xetex|pdftex|uptex>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -5860,7 +6167,17 @@ This package consists of the file ctex.dtx, and the derived files
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-%<*pdftex|xetex|luatex>
+%<*uptex>
+\PassOptionsToPackage { dvipdfmx } { hyperref }
+\ctex_at_end_package:nn { hyperref }
+  {
+    \AtBeginShipoutFirst{ \special{ pdf:tounicode~ UTF8-UTF16 } }
+  }
+%</uptex>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*pdftex|xetex|luatex|uptex>
 %    \end{macrocode}
 %
 % \subsubsection{\pkg{CJKfntef}、\pkg{xeCJKfntef} 相关设置}
@@ -5921,11 +6238,11 @@ This package consists of the file ctex.dtx, and the derived files
   }
 \cs_new_protected_nopar:Npn { \endCTEXfilltwosides } { \endCJKfilltwosides }
 %</pdftex|xetex>
-%<*luatex>
+%<*luatex|uptex>
   { \cs_new_eq:cN { CTEX#1 } \use:n }
 \cs_new_eq:NN \CTEXfilltwosides \use_none:n
 \cs_new_eq:NN \endCTEXfilltwosides \prg_do_nothing:
-%</luatex>
+%</luatex|uptex>
 %<*pdftex>
 \clist_map_inline:nn
   {
@@ -5956,6 +6273,9 @@ This package consists of the file ctex.dtx, and the derived files
 %<*luatex>
   { \skip_set:Nn \ccwd { \ltjgetparameter { kanjiskip } + \zw } }
 %</luatex>
+%<*uptex>
+  { \skip_set:Nn \ccwd { 1zw } }
+%</uptex>
 \dim_new:N \ccwd
 %    \end{macrocode}
 % \end{macro}
@@ -5976,6 +6296,9 @@ This package consists of the file ctex.dtx, and the derived files
 %<*luatex>
   { \ltjsetkanjiskip \l_@@_ccglue_skip }
 %</luatex>
+%<*uptex>
+  { \kanjiskip \l_@@_ccglue_skip }
+%</uptex>
 \skip_new:N \l_@@_ccglue_skip
 %    \end{macrocode}
 % \end{macro}
@@ -5993,6 +6316,10 @@ This package consists of the file ctex.dtx, and the derived files
     \skip_if_eq:nnTF { \l_@@_ccglue_skip } { \ltjgetparameter { kanjiskip } }
       { \prg_return_false: } { \prg_return_true: }
 %</luatex>
+%<*uptex>
+    \skip_if_eq:nnTF { \l_@@_ccglue_skip } { \kanjiskip }
+      { \prg_return_false: } { \prg_return_true: }
+%</uptex>
   }
 %    \end{macrocode}
 % 注意下面的标记不能用 \verb"%<pdftex|xetex>"，它会导致旧版本的 \pkg{l3docstrip}
@@ -6012,11 +6339,12 @@ This package consists of the file ctex.dtx, and the derived files
 % 的特殊字体。在 \XeTeX{} 可以用 \tn{fontcharwd} 来改进。而在 \pdfTeX{} 下，若使用
 % \pkg{zhmetrics} 技术，所有的汉字共享同一个 \file{.tfm}，\tn{fontcharwd} 也就没有
 % 意义。在 \LuaTeX{} 下，\pkg{LuaTeX-ja} 总是按照 JFM 中的设置输出汉字的宽度，可以
-% 直接用 \tn{zw} 作为汉字宽度。
+% 直接用 \tn{zw} 作为汉字宽度。\upTeX{} 可以直接使用原生的长度单位 |zw|。
 %    \begin{macrocode}
 \cs_new_protected_nopar:Npn \ctex_update_em_unit:
 %<pdftex|xetex>  { \dim_set:Nn \ccwd { \f@size \p@ } }
 %<luatex>  { \dim_set:Nn \ccwd { \zw } }
+%<uptex>  { \dim_set:Nn \ccwd { 1zw } }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -6051,9 +6379,9 @@ This package consists of the file ctex.dtx, and the derived files
 %<*pdftex>
 \EverySelectfont { \cs_if_exist:NF \CJK@plane { \CTEX@selectfont@hook } }
 %</pdftex>
-%<*xetex|luatex>
+%<*xetex|luatex|uptex>
 \EverySelectfont { \CTEX@selectfont@hook }
-%</xetex|luatex>
+%</xetex|luatex|uptex>
 %    \end{macrocode}
 %
 % Attribute 寄存器 \tn{ltj@curjfnt} 的初始值是 $-1$，必须把它设置为一个有效的
@@ -6073,7 +6401,8 @@ This package consists of the file ctex.dtx, and the derived files
 %
 % \begin{macro}{space}
 % 在导言区或正文中设置忽略空格方式。
-% \pdfTeX{} 和 \XeTeX{} 下初始设置为 \opt{auto}，\LuaTeX{} 下是无效选项。
+% \pdfTeX{} 和 \XeTeX{} 下初始设置为 \opt{auto}，\LuaTeX{}、\upTeX{} 下是无效
+% 选项。
 %    \begin{macrocode}
 \keys_define:nn { ctex }
   {
@@ -6091,17 +6420,17 @@ This package consists of the file ctex.dtx, and the derived files
     space .default:n = { true } ,
     space .initial:n = { auto }
 %</pdftex|xetex>
-%<*luatex>
+%<*luatex|uptex>
     space .code:n =
       { \msg_warning:nn { ctex } { invalid-option } }
-%</luatex>
+%</luatex|uptex>
   }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{punct}
 % 在导言区或正文中设置标点符号输出格式。\pkg{LuaTeX-ja} 设置的是字体的默认 \texttt{JFM}，
-% 只会影响到之后设置的字体。
+% 只会影响到之后设置的字体。\upTeX{} 暂时无效。
 %    \begin{macrocode}
 \keys_define:nn { ctex }
   {
@@ -6111,21 +6440,22 @@ This package consists of the file ctex.dtx, and the derived files
 %<pdftex>        \punctstyle { \l_@@_punct_tl }
 %<xetex>        \xeCJKsetup { PunctStyle = \l_@@_punct_tl }
 %<luatex>        \ctex_mono_jfm:o { \l_@@_punct_tl }
+%<uptex>        \msg_warning:nn { ctex } { invalid-option }
       } ,
     punct .default:n = { quanjiao } ,
   }
 %    \end{macrocode}
 % \end{macro}
 %
-% \XeLaTeX{} 和 \LuaLaTeX{} 总是使用 \texttt{UTF8} 编码。
+% \XeLaTeX{}、\LuaLaTeX{} 和 \upLaTeX{} 总是使用 \texttt{UTF8} 编码。
 %    \begin{macrocode}
-%<*xetex|luatex>
+%<*xetex|luatex|uptex>
 \tl_set:Nn \l_@@_encoding_tl { UTF8 }
-%</xetex|luatex>
+%</xetex|luatex|uptex>
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-%</pdftex|xetex|luatex>
+%</pdftex|xetex|luatex|uptex>
 %<*class|ctex>
 %    \end{macrocode}
 %
@@ -6440,8 +6770,15 @@ This package consists of the file ctex.dtx, and the derived files
     abstractname   .tl_set:N = \abstractname ,
     indexname      .tl_set:N = \indexname ,
     appendixname   .tl_set:N = \appendixname ,
+    proofname      .tl_set:N = \proofname ,
 %<article>    bibname        .tl_set:N = \refname
 %<book|report>    bibname        .tl_set:N = \bibname
+%<*beamer>
+    algorithmname  .tl_set:N = \algorithmname ,
+    bibname        .tl_set:N = \bibname ,
+    refname        .tl_set:N = \refname ,
+    continuation   .tl_set:N = \insertcontinuationtext
+%</beamer>
   }
 %    \end{macrocode}
 %
@@ -6452,14 +6789,26 @@ This package consists of the file ctex.dtx, and the derived files
     Neither~`\token_to_str:N \bibname'~nor~`\token_to_str:N \refname'~can~be~found.\\
     The~key~`bibname'~will~set~`\token_to_str:N \ctexbibname'~to~the~given~value.
   }
-\tl_if_exist:NTF \bibname
-  { \keys_define:nn { ctex } { bibname .tl_set:N = \bibname } }
+\tl_if_exist:NTF \insertcontinuationtext
   {
-    \tl_if_exist:NTF \refname
-      { \keys_define:nn { ctex } { bibname .tl_set:N = \refname } }
+    \keys_define:nn { ctex }
       {
-        \msg_warning:nn { ctex } { ctexbibname }
-        \keys_define:nn { ctex } { bibname .tl_set:N = \ctexbibname }
+        algorithmname .tl_set:N = \algorithmname ,
+        bibname       .tl_set:N = \bibname ,
+        refname       .tl_set:N = \refname ,
+        continuation  .tl_set:N = \insertcontinuationtext
+      }
+  }
+  {
+    \tl_if_exist:NTF \bibname
+      { \keys_define:nn { ctex } { bibname .tl_set:N = \bibname } }
+      {
+        \tl_if_exist:NTF \refname
+          { \keys_define:nn { ctex } { bibname .tl_set:N = \refname } }
+          {
+            \msg_warning:nn { ctex } { ctexbibname }
+            \keys_define:nn { ctex } { bibname .tl_set:N = \ctexbibname }
+          }
       }
   }
 %</ctex>
@@ -6481,18 +6830,26 @@ This package consists of the file ctex.dtx, and the derived files
 % \begin{variable}[int]{\c_@@_section_headings_seq}
 % 保存 \tn{section} 级以下标题名字。
 %    \begin{macrocode}
+%<*article|book|report>
 \seq_new:N \c_@@_section_headings_seq
 \seq_gset_from_clist:Nn \c_@@_section_headings_seq
   { section , subsection , subsubsection , paragraph , subparagraph }
+%</article|book|report>
 %    \end{macrocode}
 % \end{variable}
 %
 % \begin{variable}[int]{\c_@@_headings_seq}
 %    \begin{macrocode}
 \seq_new:N \c_@@_headings_seq
+%<*article|book|report>
 \seq_gset_eq:NN \c_@@_headings_seq \c_@@_section_headings_seq
 %<book|report>\seq_gput_left:Nn \c_@@_headings_seq { chapter }
 \seq_gput_left:Nn \c_@@_headings_seq { part }
+%</article|book|report>
+%<*beamer>
+\seq_gset_from_clist:Nn \c_@@_headings_seq
+  { part , section , subsection }
+%</beamer>
 %    \end{macrocode}
 % \end{variable}
 %
@@ -6563,8 +6920,10 @@ This package consists of the file ctex.dtx, and the derived files
         #1 / afterskip     .tl_set:N = \exp_not:c { CTEX@#1@afterskip} ,
         #1 / indent        .tl_set:N = \exp_not:c { CTEX@#1@indent } ,
         #1 / numbering   .bool_set:N = \exp_not:c { CTEX@#1@numbering } ,
+%<*article|book|report>
         #1 / afterindent .bool_set:N = \exp_not:c { CTEX@#1@afterindent } ,
         #1 / runin       .bool_set:N = \exp_not:c { CTEX@#1@runin } ,
+%</article|book|report>
         #1 / format+         .code:n =
           { \tl_put_right:Nn \exp_not:c { CTEX@#1@format } { ####1 } } ,
         #1 / nameformat+     .code:n =
@@ -6635,6 +6994,9 @@ This package consists of the file ctex.dtx, and the derived files
 \tl_clear:N \l_@@_tmp_tl
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+%<*article|book|report>
+%    \end{macrocode}
 %
 % \subsubsection{标准标题命令的修改}
 %
@@ -7404,6 +7766,101 @@ This package consists of the file ctex.dtx, and the derived files
 %    \end{macrocode}
 % \end{macro}
 %
+%    \begin{macrocode}
+%</article|book|report>
+%    \end{macrocode}
+%
+% \subsubsection{\cls{beamer} 标题页模板的修改}
+%
+%    \begin{macrocode}
+%<*beamer>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+% 对应 \tn{partpage}。
+%    \begin{macrocode}
+\defbeamertemplate*{part page}{CTEX}[1][]{
+  \begingroup
+%    \centering
+%    {\usebeamerfont{part name}\usebeamercolor[fg]{part name}\partname~\insertromanpartnumber}
+%    \vskip1em\par
+    \par \addvspace{\glueexpr\CTEX@part@beforeskip\relax}%
+    \parindent \dimexpr \CTEX@part@indent \relax
+    \CTEX@part@format
+    \ifodd \CTEX@part@numbering
+      \CTEX@partname \CTEX@part@aftername
+    \fi
+    \begin{beamercolorbox}[sep=16pt,center,#1]{part title}
+%      \usebeamerfont{part title}\insertpart\par
+      \CTEX@part@titleformat \insertpart \CTEX@part@aftertitle
+    \end{beamercolorbox}
+    \par \addvspace{\glueexpr\CTEX@part@afterskip\relax}%
+  \endgroup
+}
+%    \end{macrocode}
+%
+% 对应 \tn{sectionpage}。
+%    \begin{macrocode}
+\defbeamertemplate*{section page}{CTEX}[1][]{
+  \begingroup
+%    \centering
+%    {\usebeamerfont{section name}\usebeamercolor[fg]{section name}\sectionname~\insertsectionnumber}
+%    \vskip1em\par
+    \par \addvspace{\glueexpr\CTEX@section@beforeskip\relax}%
+    \parindent \dimexpr \CTEX@section@indent \relax
+    \CTEX@section@format
+    \ifodd \CTEX@section@numbering
+      \CTEX@sectionname \CTEX@section@aftername
+    \fi
+    \begin{beamercolorbox}[sep=12pt,center,#1]{part title}
+%      \usebeamerfont{section title}\insertsection\par
+      \CTEX@section@titleformat \insertsection \CTEX@section@aftertitle
+    \end{beamercolorbox}
+    \par \addvspace{\glueexpr\CTEX@section@afterskip\relax}%
+  \endgroup
+}
+%    \end{macrocode}
+%
+% 对应 \tn{subsectionpage}。
+%    \begin{macrocode}
+\defbeamertemplate*{subsection page}{CTEX}[1][]{
+  \begingroup
+%    \centering
+%    {\usebeamerfont{subsection name}\usebeamercolor[fg]{subsection name}\subsectionname~\insertsubsectionnumber}
+%    \vskip1em\par
+    \par \addvspace{\glueexpr\CTEX@subsection@beforeskip\relax}%
+    \parindent \dimexpr \CTEX@subsection@indent \relax
+    \CTEX@subsection@format
+    \ifodd \CTEX@subsection@numbering
+      \CTEX@subsectionname \CTEX@subsection@aftername
+    \fi
+    \begin{beamercolorbox}[sep=8pt,center,#1]{part title}
+%      \usebeamerfont{subsection title}\insertsubsection\par
+      \CTEX@subsection@titleformat \insertsubsection \CTEX@subsection@aftertitle
+    \end{beamercolorbox}
+    \par \addvspace{\glueexpr\CTEX@subsection@afterskip\relax}%
+  \endgroup
+}
+%    \end{macrocode}
+%
+% 将 \cls{beamer} 的默认模板重定向为 \texttt{CTEX} 模板。
+%    \begin{macrocode}
+\defbeamertemplatealias{part page}{default}{CTEX}
+\defbeamertemplatealias{section page}{default}{CTEX}
+\defbeamertemplatealias{subsection page}{default}{CTEX}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOn
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</beamer>
+%    \end{macrocode}
+%
 % \subsubsection{标签引用数字的汉化}
 %
 % \begin{macro}[int]{\refstepcounter}
@@ -7485,7 +7942,7 @@ This package consists of the file ctex.dtx, and the derived files
 % \tn{@startsection} 设定的章节标题格式，\opt{chinese} 汉化的标题格式。
 %
 %    \begin{macrocode}
-%<*scheme&(article|book|report)>
+%<*scheme&(article|book|report|beamer)>
 %    \end{macrocode}
 %
 % \changes{v2.1}{2015/05/30}{修复 \cls{ctexbook} 和 \cls{ctexrep} 类的中文
@@ -7499,7 +7956,12 @@ This package consists of the file ctex.dtx, and the derived files
     aftertitle  = \par ,
 %<*plain>
     name        = \partname \space ,
+%<*article|book|report>
     number      = \thepart ,
+%</article|book|report>
+%<*beamer>
+    number      = \insertromanpartnumber ,
+%</beamer>
 %</plain>
 %<*chinese>
     number      = \chinese { part } ,
@@ -7534,6 +7996,13 @@ This package consists of the file ctex.dtx, and the derived files
     format      = \huge \bfseries \centering
 %</chinese>
 %</book|report>
+%<*beamer>
+    format      = \centering ,
+    nameformat  = \usebeamerfont { part ~ name }
+                  \usebeamercolor [fg] { part ~ name } ,
+    aftername   = \vskip 1em \par ,
+    titleformat = \usebeamerfont { part ~ title }
+%</beamer>
   }
 %    \end{macrocode}
 %
@@ -7571,6 +8040,7 @@ This package consists of the file ctex.dtx, and the derived files
 %    \begin{macrocode}
 \keys_set:nn { ctex / section }
   {
+%<*article|book|report>
     number      = \thesection ,
     aftername   = \quad ,
     aftertitle  = \@@par ,
@@ -7585,12 +8055,26 @@ This package consists of the file ctex.dtx, and the derived files
     format      = \Large \bfseries \centering ,
     afterindent = true
 %</chinese>
+%</article|book|report>
+%<*beamer>
+%<*plain>
+    name        = \sectionname \space ,
+%</plain>
+    format      = \centering ,
+    number      = \insertsectionnumber ,
+    nameformat  = \usebeamerfont { section ~ name }
+                  \usebeamercolor [fg] { section ~ name } ,
+    aftername   = \vskip 1em \par ,
+    titleformat = \usebeamerfont { section ~ title } ,
+    aftertitle  = \par
+%</beamer>
   }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
 \keys_set:nn { ctex / subsection }
   {
+%<*article|book|report>
     number      = \thesubsection ,
     format      = \large \bfseries ,
     aftername   = \quad ,
@@ -7604,10 +8088,30 @@ This package consists of the file ctex.dtx, and the derived files
 %<*chinese>
     afterindent = true
 %</chinese>
+%</article|book|report>
+%<*beamer>
+%<*plain>
+    name        = \subsectionname \space ,
+    number      = \insertsubsectionnumber ,
+%</plain>
+%<*chinese>
+    number      = \arabic { section } . \arabic { subsection } ,
+%</chinese>
+    format      = \centering ,
+    nameformat  = \usebeamerfont { subsection ~ name }
+                  \usebeamercolor [fg] { subsection ~ name } ,
+    aftername   = \vskip 1em \par ,
+    titleformat = \usebeamerfont { subsection ~ title } ,
+    aftertitle  = \par
+%</beamer>
   }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+%<*article|book|report>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \keys_set:nn { ctex / subsubsection }
   {
     number      = \thesubsubsection ,
@@ -7716,7 +8220,11 @@ This package consists of the file ctex.dtx, and the derived files
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-%</scheme&(article|book|report)>
+%</article|book|report>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</scheme&(article|book|report|beamer)>
 %    \end{macrocode}
 %
 % \subsubsection{\pkg{ctex.sty} 的 \opt{heading} 选项}
@@ -7728,7 +8236,7 @@ This package consists of the file ctex.dtx, and the derived files
 % \begin{variable}[int]{\c_@@_std_class_tl}
 % 用于记录被引入的标准文档类。
 %    \begin{macrocode}
-\clist_map_inline:nn { article , book , report }
+\clist_map_inline:nn { article , book , report , beamer }
   {
     \@ifclassloaded {#1}
       { \clist_map_break:n { \tl_const:Nn \c_@@_std_class_tl {#1} } }
@@ -7773,11 +8281,11 @@ This package consists of the file ctex.dtx, and the derived files
 % \subsubsection{标题配置文件}
 %
 %    \begin{macrocode}
-%<*UTF8|GBK>
+%<*name>
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\keys_set:nn { ctex }
+\keys_set_known:nn { ctex }
   {
     contentsname   = 目录 ,
     listfigurename = 插图 ,
@@ -7787,21 +8295,18 @@ This package consists of the file ctex.dtx, and the derived files
     abstractname   = 摘要 ,
     indexname      = 索引 ,
     bibname        = 参考文献 ,
-    appendixname   = 附录
+    appendixname   = 附录 ,
+    proofname      = 证明 ,
+    algorithmname  = 算法 ,
+    refname        = 参考文献 ,
+    continuation   = （续） ,
+    part    / name = { 第 , 部分 } ,
+    chapter / name = { 第 , 章 }
   }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\keys_if_exist:nnT { ctex / part } { name }
-  {
-    \keys_set:nn { ctex / part } { name = { 第 , 部分 } }
-    \keys_if_exist:nnT { ctex / chapter } { name }
-      { \keys_set:nn { ctex / chapter } { name = { 第 , 章 } } }
-  }
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-%</UTF8|GBK>
+%</name>
 %    \end{macrocode}
 %
 % \subsection{\opt{chinese} 方案的其他设置}
@@ -7817,9 +8322,63 @@ This package consists of the file ctex.dtx, and the derived files
 %
 % 汉化标题名字。
 %    \begin{macrocode}
+%<*generic>
+\tl_if_exist:NTF \c_@@_std_class_tl
+  {
+    \str_if_eq:onTF { \c_@@_std_class_tl } { beamer }
+      {
+        \str_if_eq:onTF { \l_@@_encoding_tl } { GBK }
+          {
+            \uselanguage { ChineseGBK }
+            \languagealias { chinese } { ChineseGBK }
+            \ctex_file_input:n { ctex-name-gbk.cfg }
+          }
+          {
+            \uselanguage { ChineseUTF8 }
+            \languagealias { chinese } { ChineseUTF8 }
+            \ctex_file_input:n { ctex-name-utf8.cfg }
+          }
+        \clist_put_left:Nn \trans@languagepath { chinese }
+      }
+      {
+        \str_if_eq:onTF { \l_@@_encoding_tl } { GBK }
+          { \ctex_file_input:n { ctex-name-gbk.cfg } }
+          { \ctex_file_input:n { ctex-name-utf8.cfg } }
+%    \end{macrocode}
+% \changes{v2.0.2}{2015/05/16}{修复加载 \pkg{ctex} 宏包后章节标题后第一段
+% 无段首缩进的问题。}
+% 若 \pkg{ctex} 宏包与标准文档类及其衍生文档类联用，则将载入 \pkg{indentfirst} 宏包，
+% 实现章节标题后首个段落的段首缩进。
+%    \begin{macrocode}
+        \RequirePackage { indentfirst }
+      }
+  }
+  {
+    \str_if_eq:onTF { \l_@@_encoding_tl } { GBK }
+      { \ctex_file_input:n { ctex-name-gbk.cfg } }
+      { \ctex_file_input:n { ctex-name-utf8.cfg } }
+  }
+%</generic>
+%<*!generic>
 \str_if_eq:onTF { \l_@@_encoding_tl } { GBK }
+%<*article|book|report>
   { \ctex_file_input:n { ctex-name-gbk.cfg } }
   { \ctex_file_input:n { ctex-name-utf8.cfg } }
+%</article|book|report>
+%<*beamer>
+  {
+    \uselanguage { ChineseGBK }
+    \languagealias { chinese } { ChineseGBK }
+    \ctex_file_input:n { ctex-name-gbk.cfg }
+  }
+  {
+    \uselanguage { ChineseUTF8 }
+    \languagealias { chinese } { ChineseUTF8 }
+    \ctex_file_input:n { ctex-name-utf8.cfg }
+  }
+\clist_put_left:Nn \trans@languagepath { chinese }
+%</beamer>
+%</!generic>
 %    \end{macrocode}
 %
 % 日期格式。
@@ -7846,17 +8405,6 @@ This package consists of the file ctex.dtx, and the derived files
   { \keys_set:nn { ctex } { autoindent = true } }
 %    \end{macrocode}
 %
-% \changes{v2.0.2}{2015/05/16}{修复加载 \pkg{ctex} 宏包后章节标题后第一段
-% 无段首缩进的问题。}
-% 若 \pkg{ctex} 宏包与标准文档类及其衍生文档类联用，则将载入 \pkg{indentfirst} 宏包，
-% 实现章节标题后首个段落的段首缩进。
-%    \begin{macrocode}
-%<*generic>
-\tl_if_exist:NT \c_@@_std_class_tl
-  { \RequirePackage { indentfirst } }
-%</generic>
-%    \end{macrocode}
-%
 %    \begin{macrocode}
 %</scheme&chinese>
 %    \end{macrocode}
@@ -8174,11 +8722,11 @@ This package consists of the file ctex.dtx, and the derived files
 % \begin{macro}[int]{\verse,\quotation}
 % 只在使用文档类的时候修改诗歌和引用环境的缩进。
 %    \begin{macrocode}
-%<*scheme&!generic&chinese>
+%<*scheme&chinese&(article|book|report)>
 \ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd }
 \ctex_patch_cmd:Nnn \verse {  1.5em } {  2 \ccwd }
 \ctex_patch_cmd:Nnn \quotation { 1.5em } { 2 \ccwd }
-%</scheme&!generic&chinese>
+%</scheme&chinese&(article|book|report)>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -8325,6 +8873,7 @@ This package consists of the file ctex.dtx, and the derived files
 %</c19|c70>
 %    \end{macrocode}
 %
+% \pkg{CJK} 宏包使用的字体族。
 %    \begin{macrocode}
 %<rm&c19>\DeclareFontFamily{C19}{rm}{\hyphenchar\font\m@ne}
 %<rm&c70>\DeclareFontFamily{C70}{rm}{\hyphenchar\font\m@ne}
@@ -8334,6 +8883,21 @@ This package consists of the file ctex.dtx, and the derived files
 %<tt&c70>\DeclareFontFamily{C70}{tt}{\hyphenchar\font\m@ne}
 %    \end{macrocode}
 %
+% \changes{v2.4}{2016/04/25}{提供 \upLaTeX{} 的 NFSS 字体定义。}
+% \upTeX{} 使用的字体族。\upLaTeX 在 NFSS 下使用字体编码 |JY2| 和 |JT2| 来分别
+% 表示横排与直排的日文。
+%    \begin{macrocode}
+%<*uptex>
+\DeclareKanjiFamily{JY2}{rm}{}
+\DeclareKanjiFamily{JY2}{sf}{}
+\DeclareKanjiFamily{JY2}{tt}{}
+\DeclareKanjiFamily{JT2}{rm}{}
+\DeclareKanjiFamily{JT2}{sf}{}
+\DeclareKanjiFamily{JT2}{tt}{}
+%</uptex>
+%    \end{macrocode}
+%
+%
 %    \begin{macrocode}
 %<*rm>
 %<*c19>
@@ -8359,6 +8923,14 @@ This package consists of the file ctex.dtx, and the derived files
 \DeclareFontShape{C70}{rm}{bx}{it}{<-> CJKb * unikai}{\CJKbold}
 %</c70>
 %</rm>
+%<*uptex>
+\DeclareFontShape{JY2}{rm}{m}{n}{<-> upzhserif-h}{}
+\DeclareFontShape{JY2}{rm}{m}{it}{<-> upzhserifit-h}{}
+\DeclareFontShape{JY2}{rm}{bx}{n}{<-> upzhserifb-h}{}
+\DeclareFontShape{JT2}{rm}{m}{n}{<-> upzhserif-v}{}
+\DeclareFontShape{JT2}{rm}{m}{it}{<-> upzhserifit-v}{}
+\DeclareFontShape{JT2}{rm}{bx}{n}{<-> upzhserifb-v}{}
+%</uptex>
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -8386,6 +8958,12 @@ This package consists of the file ctex.dtx, and the derived files
 \DeclareFontShape{C70}{sf}{bx}{it}{<-> CJKb * uniyou}{\CJKbold}
 %</c70>
 %</sf>
+%<*uptex>
+\DeclareFontShape{JY2}{sf}{m}{n}{<-> upzhsans-h}{}
+\DeclareFontShape{JY2}{sf}{bx}{n}{<-> upzhsansb-h}{}
+\DeclareFontShape{JT2}{sf}{m}{n}{<-> upzhsans-v}{}
+\DeclareFontShape{JT2}{sf}{bx}{n}{<-> upzhsansb-v}{}
+%</uptex>
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -8413,6 +8991,10 @@ This package consists of the file ctex.dtx, and the derived files
 \DeclareFontShape{C70}{tt}{bx}{it}{<-> CJKb * unifs}{\CJKbold}
 %</c70>
 %</tt>
+%<*uptex>
+\DeclareFontShape{JY2}{tt}{m}{n}{<-> upzhmono-h}{}
+\DeclareFontShape{JT2}{tt}{m}{n}{<-> upzhmono-v}{}
+%</uptex>
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -8434,7 +9016,18 @@ This package consists of the file ctex.dtx, and the derived files
 %
 % 旧的 Windows 字体设置使用黑体作为无衬线体，楷体和仿宋是 GB2312 编码；新的
 % Windows 字体设置使用微软雅黑作为无衬线体，楷体和仿宋是大字库。
+% Windows 8 以后，微软雅黑由原来的 \file{.ttf} 后缀改为 \file{.ttc} 后缀，需要
+% 加以区分。
 %    \begin{macrocode}
+%<*windowsnew>
+\tl_new:N \l_@@_msyh_suffix
+\tl_set:Nn \l_@@_msyh_suffix { .ttc }
+\file_if_exist:nF { C:/Windows/Fonts/msyh.ttc }
+  {
+    \file_if_exist:nF { msyh.ttc }
+      { \tl_set:Nn \l_@@_msyh_suffix { .ttf } }
+  }
+%</windowsnew>
 %<*windowsnew|windowsold>
 \sys_if_engine_pdftex:TF
   {
@@ -8447,22 +9040,10 @@ This package consists of the file ctex.dtx, and the derived files
         \setCJKsansfont { simhei.ttf }
         \ctex_punct_map_family:nn { \CJKsfdefault } { zhhei }
 %</windowsold>
-%    \end{macrocode}
-% Windows 8 以后，微软雅黑由原来的 \file{.ttf} 后缀改为 \file{.ttc} 后缀，需要
-% 加以区分。
-%    \begin{macrocode}
 %<*windowsnew>
-        \file_if_exist:nTF { C:/Windows/Fonts/msyh.ttc }
-          {
-            \setCJKsansfont [ BoldFont = msyhbd.ttc ] { msyh.ttc }
-            \setCJKfamilyfont { zhyahei }
-              [ BoldFont = msyhbd.ttc ] { msyh.ttc }
-          }
-          {
-            \setCJKsansfont [ BoldFont = msyhbd.ttf ] { msyh.ttf }
-            \setCJKfamilyfont { zhyahei }
-              [ BoldFont = msyhbd.ttf ] { msyh.ttf }
-          }
+        \setCJKsansfont [ BoldFont = msyhbd\l_@@_msyh_suffix ] { msyh\l_@@_msyh_suffix }
+        \setCJKfamilyfont { zhyahei }
+          [ BoldFont = msyhbd\l_@@_msyh_suffix ] { msyh\l_@@_msyh_suffix }
         \ctex_punct_map_family:nn { \CJKsfdefault } { zhyahei }
         \ctex_punct_map_bfseries:nn { \CJKsfdefault , zhyahei } { zhyaheib }
 %</windowsnew>
@@ -8492,31 +9073,50 @@ This package consists of the file ctex.dtx, and the derived files
       }
   }
   {
+    \sys_if_engine_uptex:TF
+      {
+        \ctex_set_upfonts:nnnnnn
+          {simsun.ttc} {simhei.ttf} {simkai.ttf}
+%<windowsnew>          {msyh\l_@@_msyh_suffix} {msyhbd\l_@@_msyh_suffix}
+%<windowsold>          {simhei.ttf} {simhei.ttf}
+          {simfang.ttf}
+        \ctex_set_upfamily:nnn { zhsong } { upzhserif } {}
+        \ctex_set_upfamily:nnn { zhhei } { upzhserifb } {}
+        \ctex_set_upfamily:nnn { zhfs } { upzhmono} {}
+        \ctex_set_upfamily:nnn { zhkai } { upzhserifit } {}
+%<windowsnew>        \ctex_set_upfamily:nnn { zhyahei } { upzhsans } { upzhsansb }
+        \ctex_set_upfamily:nnn { zhli } { upschrm } {}
+        \ctex_set_upmap:nnn { upstsl } { simli.ttf } {}
+        \ctex_set_upfamily:nnn { zhyou } { upschgt } {}
+        \ctex_set_upmap:nnn { upstht } { simyou.ttf } {}
+      }
+      {
 %<*windowsold>
-    \setCJKmainfont
-      [ BoldFont = SimHei , ItalicFont = KaiTi_GB2312 ] { SimSun }
-    \setCJKsansfont { SimHei }
-    \setCJKmonofont { FangSong_GB2312 }
-    \setCJKfamilyfont { zhkai } { KaiTi_GB2312 }
-    \setCJKfamilyfont { zhfs }  { FangSong_GB2312 }
+        \setCJKmainfont
+          [ BoldFont = SimHei , ItalicFont = KaiTi_GB2312 ] { SimSun }
+        \setCJKsansfont { SimHei }
+        \setCJKmonofont { FangSong_GB2312 }
+        \setCJKfamilyfont { zhkai } { KaiTi_GB2312 }
+        \setCJKfamilyfont { zhfs }  { FangSong_GB2312 }
 %</windowsold>
 %<*windowsnew>
-    \setCJKmainfont
-      [ BoldFont = SimHei , ItalicFont = KaiTi ] { SimSun }
-    \setCJKsansfont
-      [ BoldFont = { *~Bold } ] { Microsoft~YaHei }
-    \setCJKmonofont { FangSong }
-    \setCJKfamilyfont { zhkai } { KaiTi }
-    \setCJKfamilyfont { zhfs }  { FangSong }
+        \setCJKmainfont
+          [ BoldFont = SimHei , ItalicFont = KaiTi ] { SimSun }
+        \setCJKsansfont
+          [ BoldFont = { *~Bold } ] { Microsoft~YaHei }
+        \setCJKmonofont { FangSong }
+        \setCJKfamilyfont { zhkai } { KaiTi }
+        \setCJKfamilyfont { zhfs }  { FangSong }
 %</windowsnew>
-    \setCJKfamilyfont { zhsong }  { SimSun }
-    \setCJKfamilyfont { zhhei }   { SimHei }
-    \setCJKfamilyfont { zhli }    { LiSu }
-    \setCJKfamilyfont { zhyou }   { YouYuan }
+        \setCJKfamilyfont { zhsong }  { SimSun }
+        \setCJKfamilyfont { zhhei }   { SimHei }
+        \setCJKfamilyfont { zhli }    { LiSu }
+        \setCJKfamilyfont { zhyou }   { YouYuan }
 %<*windowsnew>
-    \setCJKfamilyfont { zhyahei }
-      [ BoldFont = { *~Bold } ] { Microsoft~YaHei }
+        \setCJKfamilyfont { zhyahei }
+          [ BoldFont = { *~Bold } ] { Microsoft~YaHei }
 %</windowsnew>
+      }
   }
 %</windowsnew|windowsold>
 %    \end{macrocode}
@@ -8571,17 +9171,30 @@ This package consists of the file ctex.dtx, and the derived files
       }
   }
   {
-    \setCJKmainfont
-      [
-          BoldFont = AdobeHeitiStd-Regular ,
-        ItalicFont = AdobeKaitiStd-Regular
-      ] { AdobeSongStd-Light }
-    \setCJKsansfont { AdobeHeitiStd-Regular}
-    \setCJKmonofont { AdobeFangsongStd-Regular}
-    \setCJKfamilyfont { zhsong } { AdobeSongStd-Light }
-    \setCJKfamilyfont { zhhei }  { AdobeHeitiStd-Regular }
-    \setCJKfamilyfont { zhfs }   { AdobeFangsongStd-Regular }
-    \setCJKfamilyfont { zhkai }  { AdobeKaitiStd-Regular }
+    \sys_if_engine_uptex:TF
+      {
+        \ctex_set_upfonts:nnnnnn
+          {AdobeSongStd-Light.otf} {AdobeHeitiStd-Regular.otf} {AdobeKaitiStd-Regular.otf}
+          {AdobeHeitiStd-Regular.otf} {AdobeHeitiStd-Regular.otf}
+          {AdobeFangsongStd-Regular.otf}
+        \ctex_set_upfamily:nnn { zhsong } { upzhserif } {}
+        \ctex_set_upfamily:nnn { zhhei } { upzhsans } {}
+        \ctex_set_upfamily:nnn { zhfs } { upzhmono} {}
+        \ctex_set_upfamily:nnn { zhkai } { upzhserifit } {}
+      }
+      {
+        \setCJKmainfont
+          [
+              BoldFont = AdobeHeitiStd-Regular ,
+            ItalicFont = AdobeKaitiStd-Regular
+          ] { AdobeSongStd-Light }
+        \setCJKsansfont { AdobeHeitiStd-Regular}
+        \setCJKmonofont { AdobeFangsongStd-Regular}
+        \setCJKfamilyfont { zhsong } { AdobeSongStd-Light }
+        \setCJKfamilyfont { zhhei }  { AdobeHeitiStd-Regular }
+        \setCJKfamilyfont { zhfs }   { AdobeFangsongStd-Regular }
+        \setCJKfamilyfont { zhkai }  { AdobeKaitiStd-Regular }
+      }
   }
 %    \end{macrocode}
 %
@@ -8645,17 +9258,30 @@ This package consists of the file ctex.dtx, and the derived files
       }
   }
   {
-    \setCJKmainfont
-      [ Extension = .otf , BoldFont = FandolSong-Bold , ItalicFont = FandolKai-Regular ]
-      { FandolSong-Regular }
-    \setCJKsansfont [ Extension = .otf , BoldFont = FandolHei-Bold ] { FandolHei-Regular }
-    \setCJKmonofont [ Extension = .otf ] { FandolFang-Regular }
-    \setCJKfamilyfont { zhsong }
-      [ Extension = .otf , BoldFont = FandolSong-Bold ] { FandolSong-Regular }
-    \setCJKfamilyfont { zhhei }
-      [ Extension = .otf , BoldFont = FandolHei-Bold ] { FandolHei-Regular }
-    \setCJKfamilyfont { zhfs }  [ Extension = .otf ] { FandolFang-Regular }
-    \setCJKfamilyfont { zhkai } [ Extension = .otf ] { FandolKai-Regular }
+    \sys_if_engine_uptex:TF
+      {
+        \ctex_set_upfonts:nnnnnn
+          {FandolSong-Regular.otf} {FandolSong-Bold.otf} {FandolKai-Regular.otf}
+          {FandolHei-Regular.otf} {FandolHei-Bold.otf}
+          {FandolFang-Regular.otf}
+        \ctex_set_upfamily:nnn { zhsong } { upzhserif } { upzhserifb }
+        \ctex_set_upfamily:nnn { zhhei } { upzhsans } { upzhsansb }
+        \ctex_set_upfamily:nnn { zhfs } { upzhmono} {}
+        \ctex_set_upfamily:nnn { zhkai } { upzhserifit } {}
+      }
+      {
+        \setCJKmainfont
+          [ Extension = .otf , BoldFont = FandolSong-Bold , ItalicFont = FandolKai-Regular ]
+          { FandolSong-Regular }
+        \setCJKsansfont [ Extension = .otf , BoldFont = FandolHei-Bold ] { FandolHei-Regular }
+        \setCJKmonofont [ Extension = .otf ] { FandolFang-Regular }
+        \setCJKfamilyfont { zhsong }
+          [ Extension = .otf , BoldFont = FandolSong-Bold ] { FandolSong-Regular }
+        \setCJKfamilyfont { zhhei }
+          [ Extension = .otf , BoldFont = FandolHei-Bold ] { FandolHei-Regular }
+        \setCJKfamilyfont { zhfs }  [ Extension = .otf ] { FandolFang-Regular }
+        \setCJKfamilyfont { zhkai } [ Extension = .otf ] { FandolKai-Regular }
+      }
   }
 %    \end{macrocode}
 %
@@ -8730,17 +9356,24 @@ This package consists of the file ctex.dtx, and the derived files
 % 在 \pdfTeX{} 下生成的 PDF 只有方框^^A
 % \footnote{\url{http://www.newsmth.net/bbscon.php?bid=460&id=312640}}。
 % 华文细黑和华文仿宋的情况类似。
+% 这确认为 \dvipdfmx{} 的 bug^^A
+% \begingroup\makeatletter\@makeother\#\@firstofone{\endgroup
+% \footnote{\url{https://github.com/clerkma/ptex-ng/blob/master/texk/libdpx/cidtype2.c#L597}}}。
 %    \begin{macrocode}
 \sys_if_engine_pdftex:TF
   { \ctex_fontset_error:n { mac } }
   {
-    \setCJKmainfont [ BoldFont = STHeiti , ItalicFont = STKaiti ]  { STSong }
-    \setCJKsansfont [ BoldFont = STHeiti ] { STXihei }
-    \setCJKmonofont { STFangsong }
-    \setCJKfamilyfont { zhsong } { STSong }
-    \setCJKfamilyfont { zhhei }  { STHeiti }
-    \setCJKfamilyfont { zhfs }   { STFangsong }
-    \setCJKfamilyfont { zhkai }  { STKaiti }
+    \sys_if_engine_uptex:TF
+      { \ctex_fontset_error:n { mac } }
+      {
+        \setCJKmainfont [ BoldFont = STHeiti , ItalicFont = STKaiti ]  { STSong }
+        \setCJKsansfont [ BoldFont = STHeiti ] { STXihei }
+        \setCJKmonofont { STFangsong }
+        \setCJKfamilyfont { zhsong } { STSong }
+        \setCJKfamilyfont { zhhei }  { STHeiti }
+        \setCJKfamilyfont { zhfs }   { STFangsong }
+        \setCJKfamilyfont { zhkai }  { STKaiti }
+      }
   }
 %    \end{macrocode}
 %
@@ -8785,8 +9418,24 @@ This package consists of the file ctex.dtx, and the derived files
       { \ctex_fontset_error:n { founder } }
   }
   {
-    \setCJKmainfont
-      [ BoldFont = FZXiaoBiaoSong-B05 , ItalicFont = FZKai-Z03 ] { FZShuSong-Z01 }
+    \sys_if_engine_uptex:TF
+      {
+        \ctex_set_upfonts:nnnnnn
+          { FZSSK.TTF } { FZXBSK.TTF } { FZKTK.TTF }
+          { FZXH1K.TTF } { FZHTK.TTF }
+          { FZFSK.TTF }
+        \ctex_set_upfamily:nnn { zhsong } { upzhserif } { upzhserifb }
+        \ctex_set_upfamily:nnn { zhhei } { upzhsans } { upzhsansb }
+        \ctex_set_upfamily:nnn { zhfs } { upzhmono} {}
+        \ctex_set_upfamily:nnn { zhkai } { upzhserifit } {}
+        \ctex_set_upfamily:nnn { zhli } { upschrm } {}
+        \ctex_set_upmap:nnn { upstsl } { FZLSK.TTF } {}
+        \ctex_set_upfamily:nnn { zhyou } { upschgt } {}
+        \ctex_set_upmap:nnn { upstht } { FZY1K.TTF } {}
+      }
+      {
+        \setCJKmainfont
+          [ BoldFont = FZXiaoBiaoSong-B05 , ItalicFont = FZKai-Z03 ] { FZShuSong-Z01 }
 %    \end{macrocode}
 %
 % 在 WPS For Linux 附带的 5.00 版和家庭版 5.20 版的“方正细黑一\_GBK”的字体名称
@@ -8797,15 +9446,16 @@ This package consists of the file ctex.dtx, and the derived files
 % 遂采用汉字名称。由于 \pkg{luaotfload} 不支持汉字名称，故使用 Postscript 名字，
 % 速度不受影响。
 %    \begin{macrocode}
-    \setCJKsansfont [ BoldFont = FZHei-B01 ]
-      { \sys_if_engine_xetex:TF { 方正细黑一_GBK } { FZXH1K--GBK1-0 } }
-    \setCJKmonofont { FZFangSong-Z02 }
-    \setCJKfamilyfont { zhsong } [ BoldFont = FZXiaoBiaoSong-B05 ] { FZShuSong-Z01 }
-    \setCJKfamilyfont { zhhei }  { FZHei-B01 }
-    \setCJKfamilyfont { zhkai }  { FZKai-Z03 }
-    \setCJKfamilyfont { zhfs }   { FZFangSong-Z02 }
-    \setCJKfamilyfont { zhli }   { FZLiShu-S01 }
-    \setCJKfamilyfont { zhyou } [ BoldFont = FZZhunYuan-M02 ] { FZXiYuan-M01 }
+        \setCJKsansfont [ BoldFont = FZHei-B01 ]
+          { \sys_if_engine_xetex:TF { 方正细黑一_GBK } { FZXH1K--GBK1-0 } }
+        \setCJKmonofont { FZFangSong-Z02 }
+        \setCJKfamilyfont { zhsong } [ BoldFont = FZXiaoBiaoSong-B05 ] { FZShuSong-Z01 }
+        \setCJKfamilyfont { zhhei }  { FZHei-B01 }
+        \setCJKfamilyfont { zhkai }  { FZKai-Z03 }
+        \setCJKfamilyfont { zhfs }   { FZFangSong-Z02 }
+        \setCJKfamilyfont { zhli }   { FZLiShu-S01 }
+        \setCJKfamilyfont { zhyou } [ BoldFont = FZZhunYuan-M02 ] { FZXiYuan-M01 }
+      }
   }
 %    \end{macrocode}
 %
@@ -8853,13 +9503,25 @@ This package consists of the file ctex.dtx, and the derived files
       { \ctex_fontset_error:n { ubuntu } }
   }
   {
-    \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 }
-    \setCJKfamilyfont { zhhei }  { WenQuanYi~Zen~Hei }
-    \setCJKfamilyfont { zhkai }  { AR~PL~UKai~CN }
+    \sys_if_engine_uptex:TF
+      {
+        \ctex_set_upfonts:nnnnnn
+          { uming.ttc } { wqy-zenhei.ttc } { ukai.ttc }
+          { wqy-zenhei.ttc } { wqy-zenhei.ttc }
+          { uming.ttc }
+        \ctex_set_upfamily:nnn { zhsong } { upzhserif } {}
+        \ctex_set_upfamily:nnn { zhhei } { upzhsans } {}
+        \ctex_set_upfamily:nnn { zhkai } { upzhserifit } {}
+      }
+      {
+        \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 }
+        \setCJKfamilyfont { zhhei }  { WenQuanYi~Zen~Hei }
+        \setCJKfamilyfont { zhkai }  { AR~PL~UKai~CN }
+      }
   }
 %    \end{macrocode}
 %
@@ -8958,7 +9620,7 @@ This package consists of the file ctex.dtx, and the derived files
 %    \begin{macrocode}
 %<*windows>
 \ProvidesFile{zhwindowsfonts.tex}%
-  [2016/02/02 v2.3 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)]
+  [2016/04/23 v2.4 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)]
 
 \ifzhmappdf
   \pdfmapline{=gbk@UGBK@     <simsun.ttc}
@@ -9030,7 +9692,7 @@ This package consists of the file ctex.dtx, and the derived files
 %    \begin{macrocode}
 %<*adobe>
 \ProvidesFile{zhadobefonts.tex}%
-  [2016/02/02 v2.3 Adobe font map loader for DVIPDFMx (CTEX)]
+  [2016/04/23 v2.4 Adobe font map loader for DVIPDFMx (CTEX)]
 
 \ifzhmappdf
 %% pdfTeX does not support OTF fonts
@@ -9066,7 +9728,7 @@ This package consists of the file ctex.dtx, and the derived files
 %    \begin{macrocode}
 %<*fandol>
 \ProvidesFile{zhfandolfonts.tex}%
-  [2016/02/02 v2.3 Fandol font map loader for DVIPDFMx (CTEX)]
+  [2016/04/23 v2.4 Fandol font map loader for DVIPDFMx (CTEX)]
 
 \ifzhmappdf
 %% pdfTeX does not support OTF fonts
@@ -9102,7 +9764,7 @@ This package consists of the file ctex.dtx, and the derived files
 %    \begin{macrocode}
 %<*founder>
 \ProvidesFile{zhfounderfonts.tex}%
-  [2016/02/02 v2.3 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)]
+  [2016/04/23 v2.4 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)]
 
 \ifzhmappdf
   \pdfmapline{=gbk@UGBK@     <FZSSK.TTF}
@@ -9174,7 +9836,7 @@ This package consists of the file ctex.dtx, and the derived files
 %    \begin{macrocode}
 %<*ubuntu>
 \ProvidesFile{zhubuntufonts.tex}%
-  [2016/02/02 v2.3 Ubuntu font map loader for pdfTeX and DVIPDFMx (CTEX)]
+  [2016/04/23 v2.4 Ubuntu font map loader for pdfTeX and DVIPDFMx (CTEX)]
 
 \ifzhmappdf
   \pdfmapline{=gbk@UGBK@     <uming.ttc}
@@ -9379,6 +10041,105 @@ This package consists of the file ctex.dtx, and the derived files
 %</spa>
 %    \end{macrocode}
 %
+% \subsection{\pkg{translator} 宏包的中文字典}
+%
+%    \begin{macrocode}
+%<*dict>
+%    \end{macrocode}
+%
+% \changes{v2.4}{2016/02/19}{提供 \pkg{translator} 宏包的中文定理名称翻译。}
+%
+% 包括 \pkg{ChineseGBK} 和 \pkg{ChineseUTF8} 两种形式，目前只翻译 \pkg{beamer}
+% 宏包需要的定理环境名称。
+%
+%    \begin{macrocode}
+%<*theorem>
+\providetranslation{Comments}{评论}
+\providetranslation{comments}{评论}
+\providetranslation{Comment}{评论}
+\providetranslation{comment}{评论}
+\providetranslation{Corollaries}{推论}
+\providetranslation{corollaries}{推论}
+\providetranslation{Corollary}{推论}
+\providetranslation{corollary}{推论}
+\providetranslation{Definitions}{定义}
+\providetranslation{definitions}{定义}
+\providetranslation{Definition}{定义}
+\providetranslation{definition}{定义}
+\providetranslation{Examples}{例}
+\providetranslation{examples}{例}
+\providetranslation{Example}{例}
+\providetranslation{example}{例}
+\providetranslation{Exercises}{练习}
+\providetranslation{exercises}{练习}
+\providetranslation{Exercise}{练习}
+\providetranslation{exercise}{练习}
+\providetranslation{Facts}{事实}
+\providetranslation{facts}{事实}
+\providetranslation{Fact}{事实}
+\providetranslation{fact}{事实}
+\providetranslation{Key Lemmas}{关键引理}
+\providetranslation{key lemmas}{关键引理}
+\providetranslation{Key Lemma}{关键引理}
+\providetranslation{key lemma}{关键引理}
+\providetranslation{Key Observations}{关键观察}
+\providetranslation{key observations}{关键观察}
+\providetranslation{Key Observation}{关键观察}
+\providetranslation{key observation}{关键观察}
+\providetranslation{Lemmas}{引理}
+\providetranslation{lemmas}{引理}
+\providetranslation{Lemma}{引理}
+\providetranslation{lemma}{引理}
+\providetranslation{Main Theorems}{主要定理}
+\providetranslation{main theorems}{主要定理}
+\providetranslation{Main Theorem}{主要定理}
+\providetranslation{main theorem}{主要定理}
+\providetranslation{Observations}{观察}
+\providetranslation{observations}{观察}
+\providetranslation{Observation}{观察}
+\providetranslation{observation}{观察}
+\providetranslation{Problems}{问题}
+\providetranslation{problems}{问题}
+\providetranslation{Problem}{问题}
+\providetranslation{problem}{问题}
+\providetranslation{Proofs}{证明}
+\providetranslation{proofs}{证明}
+\providetranslation{Proof}{证明}
+\providetranslation{proof}{证明}
+\providetranslation{Proof Sketch}{证明提要}
+\providetranslation{Proof sketch}{证明提要}
+\providetranslation{proof sketch}{证明提要}
+\providetranslation{Proof Sketches}{证明提要}
+\providetranslation{Proof sketches}{证明提要}
+\providetranslation{proof sketches}{证明提要}
+\providetranslation{Sketch of Proof}{证明提要}
+\providetranslation{Sketch of Proofs}{证明提要}
+\providetranslation{Sketch of proof}{证明提要}
+\providetranslation{Sketch of proofs}{证明提要}
+\providetranslation{sketch of proof}{证明提要}
+\providetranslation{sketch of proofs}{证明提要}
+\providetranslation{Propositions}{命题}
+\providetranslation{propositions}{命题}
+\providetranslation{Proposition}{命题}
+\providetranslation{proposition}{命题}
+\providetranslation{Remarks}{注}
+\providetranslation{remarks}{注}
+\providetranslation{Remark}{注}
+\providetranslation{remark}{注}
+\providetranslation{Solutions}{解}
+\providetranslation{solutions}{解}
+\providetranslation{Solution}{解}
+\providetranslation{solution}{解}
+\providetranslation{Theorems}{定理}
+\providetranslation{theorems}{定理}
+\providetranslation{Theorem}{定理}
+\providetranslation{theorem}{定理}
+%</theorem>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</dict>
+%    \end{macrocode}
 %
 % \subsection{\pkg{ctexcap} 宏包}
 %
@@ -9588,6 +10349,7 @@ This package consists of the file ctex.dtx, and the derived files
 % \end{macro}
 %
 % \begin{macro}[int]{\ctex_parse_name:NN}
+% \changes{v2.4}{2016/04/11}{修复宏名解析错误。}
 % 用 \tn{DeclareRobustCommand} 定义的宏或者由 \tn{newcommand} 或 \tn{newrobustcmd}
 % 定义的带一个可选参数的宏第一次展开的结果都不是其实际定义，实际定义被保存在另外的
 % 宏中。由这些命令定义的宏的第一次展开结果可以有下面的形式（细节可查阅 \pkg{xpatch}
@@ -9647,12 +10409,12 @@ This package consists of the file ctex.dtx, and the derived files
                   { \exp_not:n { #1@protected@ ##3 #1##3 } }
                   {
                     \exp_last_unbraced:Nf \@@_parse_name:w
-                      \token_get_replacement_spec:N ##3 #2 ~ #1 \q_stop
+                      \token_get_replacement_spec:N ##3 #3 ~ #2 \q_stop
                   }
                   { #1##5 ~ } { ##5 ~ }
               }
               {
-                \str_case:onTF { \@@_parse_name:w ##1 #2 ~ #1 \q_stop }
+                \str_case:onTF { \@@_parse_name:w ##1 #3 ~ #2 \q_stop }
                   {
                     { #1@protected@ ##2 ##4 } { }
                     { #1@ ##4 } { }
@@ -9661,7 +10423,7 @@ This package consists of the file ctex.dtx, and the derived files
               }
           }
       }
-    \cs_new:Npn \@@_parse_name:w ##1 #2 ~ ##2 #1 ##3 \q_stop { ##1##2 }
+    \cs_new:Npn \@@_parse_name:w ##1 #3 ~ ##2 #2 ##3 \q_stop { ##1##2 }
   }
 \use:x
   {
-- 
cgit v1.2.3

