diff options
author | Karl Berry <karl@freefriends.org> | 2020-05-16 21:26:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-05-16 21:26:14 +0000 |
commit | bc3f8ae7a070c0635a7f6aa2febefcc6bd639677 (patch) | |
tree | 8c74427547bb691ef1dbe4a7edffa535251c4702 /Master/texmf-dist/source/latex/ctex/ctex.dtx | |
parent | 74dfa355b56ae4ff3cde96e2b636198c15bcf1fc (diff) |
ctex (16may20)
git-svn-id: svn://tug.org/texlive/trunk@55162 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/ctex/ctex.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/ctex/ctex.dtx | 556 |
1 files changed, 354 insertions, 202 deletions
diff --git a/Master/texmf-dist/source/latex/ctex/ctex.dtx b/Master/texmf-dist/source/latex/ctex/ctex.dtx index f61198ac369..bc86f369f79 100644 --- a/Master/texmf-dist/source/latex/ctex/ctex.dtx +++ b/Master/texmf-dist/source/latex/ctex/ctex.dtx @@ -137,14 +137,14 @@ Copyright and Licence ctex-fontset-windows.def, ctexspa.def, ctexpunct.spa, - ctexmakespa.tex, - ctexspamacro.tex, - zhadobefonts.tex, - zhfandolfonts.tex, - zhfounderfonts.tex, - zhmacfonts.tex, - zhubuntufonts.tex, - zhwindowsfonts.tex, + ctex-spa-make.tex, + ctex-spa-macro.tex, + ctex-zhmap-adobe.tex, + ctex-zhmap-fandol.tex, + ctex-zhmap-founder.tex, + ctex-zhmap-mac.tex, + ctex-zhmap-ubuntu.tex, + ctex-zhmap-windows.tex, ctex-zhconv-index.lua, translator-theorem-dictionary-ChineseGBK.dict, translator-theorem-dictionary-ChineseUTF8.dict, and @@ -249,14 +249,14 @@ Copyright and Licence ctex-fontset-windows.def, ctexspa.def, ctexpunct.spa, - ctexmakespa.tex, - ctexspamacro.tex, - zhadobefonts.tex, - zhfandolfonts.tex, - zhfounderfonts.tex, - zhmacfonts.tex, - zhubuntufonts.tex, - zhwindowsfonts.tex, + ctex-spa-make.tex, + ctex-spa-macro.tex, + ctex-zhmap-adobe.tex, + ctex-zhmap-fandol.tex, + ctex-zhmap-founder.tex, + ctex-zhmap-mac.tex, + ctex-zhmap-ubuntu.tex, + ctex-zhmap-windows.tex, ctex-zhconv-index.lua, translator-theorem-dictionary-ChineseGBK.dict, translator-theorem-dictionary-ChineseUTF8.dict, and @@ -330,14 +330,14 @@ Copyright and Licence \file{ctexspa.def} {\from{\jobname.dtx}{ctexspa} \from{ctexpunct.spa}{}} \usedir{tex/generic/ctex} - \file{ctexmakespa.tex} {\from{\jobname.dtx}{spa,make}} - \file{ctexspamacro.tex} {\from{\jobname.dtx}{spa,macro}} - \file{zhadobefonts.tex} {\from{\jobname.dtx}{zhmap,adobe}} - \file{zhfandolfonts.tex} {\from{\jobname.dtx}{zhmap,fandol}} - \file{zhfounderfonts.tex} {\from{\jobname.dtx}{zhmap,founder}} - \file{zhmacfonts.tex} {\from{\jobname.dtx}{zhmap,mac}} - \file{zhubuntufonts.tex} {\from{\jobname.dtx}{zhmap,ubuntu}} - \file{zhwindowsfonts.tex} {\from{\jobname.dtx}{zhmap,windows}} + \file{ctex-spa-make.tex} {\from{\jobname.dtx}{spa,make}} + \file{ctex-spa-macro.tex} {\from{\jobname.dtx}{spa,macro}} + \file{ctex-zhmap-adobe.tex} {\from{\jobname.dtx}{zhmap,adobe}} + \file{ctex-zhmap-fandol.tex} {\from{\jobname.dtx}{zhmap,fandol}} + \file{ctex-zhmap-founder.tex} {\from{\jobname.dtx}{zhmap,founder}} + \file{ctex-zhmap-mac.tex} {\from{\jobname.dtx}{zhmap,mac}} + \file{ctex-zhmap-ubuntu.tex} {\from{\jobname.dtx}{zhmap,ubuntu}} + \file{ctex-zhmap-windows.tex} {\from{\jobname.dtx}{zhmap,windows}} %</install> %<*internal> \usedir{source/latex/ctex} @@ -415,14 +415,14 @@ Copyright and Licence \Msg{* ctex-fontset-ubuntu.def *} \Msg{* ctex-fontset-windows.def *} \Msg{* ctexspa.def *} -\Msg{* ctexmakespa.tex *} -\Msg{* ctexspamacro.tex *} -\Msg{* zhadobefonts.tex *} -\Msg{* zhfandolfonts.tex *} -\Msg{* zhfounderfonts.tex *} -\Msg{* zhmacfonts.tex *} -\Msg{* zhubuntufonts.tex *} -\Msg{* zhwindowsfonts.tex *} +\Msg{* ctex-spa-make.tex *} +\Msg{* ctex-spa-macro.tex *} +\Msg{* ctex-zhmap-adobe.tex *} +\Msg{* ctex-zhmap-fandol.tex *} +\Msg{* ctex-zhmap-founder.tex *} +\Msg{* ctex-zhmap-mac.tex *} +\Msg{* ctex-zhmap-ubuntu.tex *} +\Msg{* ctex-zhmap-windows.tex *} \Msg{* translator-theorem-dictionary-ChineseGBK.dict *} \Msg{* translator-theorem-dictionary-ChineseUTF8.dict *} \Msg{* *} @@ -443,7 +443,7 @@ Copyright and Licence %<class|style|ctexcap|ctexhook|ctexpatch>\NeedsTeXFormat{LaTeX2e} %<class>\input{ctexbackend.cfg} %<class|style|ctexcap|ctexhook|ctexpatch>\RequirePackage{expl3} -%<+!driver>\GetIdInfo$Id: ctex.dtx 320df30 2020-05-02 06:45:05 +0800 Qing Lee <sobenlee@gmail.com> $ +%<+!driver>\GetIdInfo$Id: ctex.dtx 4819efe 2020-05-16 21:20:43 +0800 Qing Lee <sobenlee@gmail.com> $ %<ctex> {Chinese adapter in LaTeX (CTEX)} %<ctex>\ProvidesExplPackage{\ExplFileName} %<ctexsize> {Chinese font size definition (CTEX)} @@ -530,7 +530,7 @@ Copyright and Licence %<founder>\ProvidesExplFile{ctex-fontset-founder.def} %<ubuntu> {Ubuntu fonts definition (CTEX)} %<ubuntu>\ProvidesExplFile{ctex-fontset-ubuntu.def} -%<!driver> {\ExplFileDate}{2.5.1}{\ExplFileDescription} +%<!driver> {\ExplFileDate}{2.5.2}{\ExplFileDescription} %</!(fd|ctexspa|dict|backend)> %<c19&rm>\ProvidesFile{c19rm.fd}% %<c19&sf>\ProvidesFile{c19sf.fd}% @@ -548,10 +548,10 @@ Copyright and Licence %<backend>\ProvidesFile{ctexbackend.cfg}% %<dict&theorem&GBK>\ProvidesDictionary{translator-theorem-dictionary}{ChineseGBK}% %<dict&theorem&UTF8>\ProvidesDictionary{translator-theorem-dictionary}{ChineseUTF8}% -%<fd> [2020/05/02 v2.5.1 Chinese font definition (CTEX)] -%<ctexspa> [2020/05/02 v2.5.1 Space info for CJKpunct (CTEX)] -%<backend> [2020/05/02 v2.5.1 Backend configuration file (CTEX)] -%<dict&theorem> [2020/05/02 v2.5.1 Chinese translation for theorem name (CTEX)] +%<fd> [2020/05/16 v2.5.2 Chinese font definition (CTEX)] +%<ctexspa> [2020/05/16 v2.5.2 Space info for CJKpunct (CTEX)] +%<backend> [2020/05/16 v2.5.2 Backend configuration file (CTEX)] +%<dict&theorem> [2020/05/16 v2.5.2 Chinese translation for theorem name (CTEX)] %</!(driver|readme|install|zhmap|spa|docstrip)> %<*driver> \documentclass{ctxdoc} @@ -575,7 +575,7 @@ Copyright and Licence % \changes{v2.4.15}{2019/03/23}{同步 \LaTeXiii{} 2019/03/05。} % \changes{v2.5.1}{2020/05/02}{\pkg{zhconv} 更名为 \pkg{ctex-zhconv}。} % -% \CheckSum{6105} +% \CheckSum{6116} % % \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 @@ -1661,14 +1661,63 @@ Copyright and Licence % 三章的标题分别为“第一章\quad A”、“B”和“C”,但在目录中则只出现 % “第一章\quad A”和“C”。 % -% 注意,章节标题是否编号还要受到 \LaTeX{} 计数器 |secnumdepth| 的控制。 +% 注意,章节标题是否编号还要受到 \LaTeX{} 计数器 |secnumdepth| 的控制^^A +% (可通过以下介绍的 \opt{secnumdepth} 选项设置)。 % 例如,对于 |section| 而言,其深度为 1。因此,|section| 会被编号,当且仅当 % |secnumdepth| 不小于 1,并且 \opt{section/numbering} 为 \opt{true}, % 并且使用不带星号的章节标题命令(即 \tn{section})。 +% \end{function} % -% 如果没有特别说明,以下将用 “|...|” 代表各级章节标题名。 +% \begin{function}[EXP,added=2020-05-06]{secnumdepth} +% \begin{syntax} +% secnumdepth = <整数或章节名称> +% \end{syntax} +% 设置对章节标题进行编号的层次数。\opt{secnumdepth} 的值可以是一个整数,也可以是 +% |part|, |chapter| 等名称。 +% 层次数与名称的对应关系见表~\ref{tab:heading-level}。 +% 章节层次的默认设置见表~\ref{tab:heading-level-default}。 +% +% 本选项对 \cls{beamer}/\cls{ctexbeamer} 文档类无效。 % \end{function} % +% \begin{table}[htbp] +% \begin{minipage}[t]{.43\linewidth} +% \small\centering +% \caption{章节层次} +% \label{tab:heading-level} +% \begin{tabular}{rll} +% \toprule +% 层次 & 名称 & 注 \\ +% \midrule +% |-1| & part & \cls{book}/\cls{report} 类 \\ +% |0| & chapter & \cls{book}/\cls{report} 类 \\ +% |0| & part & \cls{article} 类 \\ +% |1| & section \\ +% |2| & subsection \\ +% |3| & subsubsection \\ +% |4| & paragraph \\ +% |5| & subparagraph \\ +% \bottomrule +% \end{tabular} +% \end{minipage}^^A +% \begin{minipage}[t]{.57\linewidth} +% \small\centering +% \caption{章节层次的默认设置} +% \label{tab:heading-level-default} +% \begin{tabular}{lll} +% \toprule +% 文档类 & \opt{secnumdepth} & \opt{tocdepth} \\ +% \midrule +% \cls{article} & |3| (subsubsection) & |3| (subsubsection) \\ +% \cls{book}/\cls{report} & |2| (subsection) & |2| (subsection) \\ +% \cls{beamer} & 无效 & |3| (subsubsection) \\ +% \bottomrule +% \end{tabular} +% \end{minipage} +% \end{table} +% +% 如果没有特别说明,以下将用 “|...|” 代表各级章节标题名。 +% % \begin{function}[EXP,updated=2014-03-08]{.../name} % \begin{syntax} % name = \{<前名字>,<后名字>\} @@ -1799,7 +1848,7 @@ Copyright and Licence % % \opt{format} 选项的最后一个格式命令可以带有一个参数。 % 这一参数用于接受章节名字、编号和标题内容(以及由 \opt{nameformat}, \opt{numberformat}, -% \opt{aftername},\opt{titleformat}, \opt{aftertitle}, \opt{indent} +% \opt{aftername}, \opt{titleformat}, \opt{aftertitle}, \opt{indent} % 及 \opt{hang} 选项设定的,应用于这些内容之上的格式),以实现特殊效果。 % % 例如,设置章标题为无衬线字体左对齐、为节标题增加无衬线字体设置、 @@ -2125,34 +2174,6 @@ Copyright and Licence % 该选项的默认设置见表~\ref{tab:hang-default}。 % \end{function} % -% \begin{function}[EXP,updated=2020-04-23]{.../indent} -% \begin{syntax} -% indent = \Arg{缩进间距} -% \end{syntax} -% \opt{indent} 选项用于设置章节标题本身的首行缩进。 -% 该选项的默认设置见表~\ref{tab:indent-default}。 -% -% 如果 \opt{indent} 的值是以 \texttt{em}、\texttt{ex} 或 \cs{ccwd} 为单位, -% 那么缩进间距的大小是相对于 \opt{format} 中指定的字号大小。 -% 例如,设置 \tn{part} 标题缩进三个字、\tn{section} 标题缩进 \SI{20}{pt}: -% \begin{ctexexam} -% \ctexset{ -% part = { -% format += \raggedright, -% indent = 3\ccwd, -% }, -% section = { -% format = \Large\bfseries, -% indent = 20pt, -% } -% } -% \part{首行缩进的标题} -% \noindent 无缩进的正文。 -% \section{首行缩进的标题} -% \noindent 无缩进的正文。 -% \end{ctexexam} -% \end{function} -% % \begin{table}[htbp] % \begin{minipage}[t]{.5\linewidth} % \small\centering @@ -2174,7 +2195,7 @@ Copyright and Licence % \qquad(sub4section) & |true| \\ % \bottomrule % \end{tabular} -% \end{minipage} +% \end{minipage}^^A % \begin{minipage}[t]{.5\linewidth} % \small\centering % \caption{\opt{indent} 选项的默认设置} @@ -2197,6 +2218,34 @@ Copyright and Licence % \end{minipage} % \end{table} % +% \begin{function}[EXP,updated=2020-04-23]{.../indent} +% \begin{syntax} +% indent = \Arg{缩进间距} +% \end{syntax} +% \opt{indent} 选项用于设置章节标题本身的首行缩进。 +% 该选项的默认设置见表~\ref{tab:indent-default}。 +% +% 如果 \opt{indent} 的值是以 \texttt{em}、\texttt{ex} 或 \cs{ccwd} 为单位, +% 那么缩进间距的大小是相对于 \opt{format} 中指定的字号大小。 +% 例如,设置 \tn{part} 标题缩进三个字、\tn{section} 标题缩进 \SI{20}{pt}: +% \begin{ctexexam} +% \ctexset{ +% part = { +% format += \raggedright, +% indent = 3\ccwd, +% }, +% section = { +% format = \Large\bfseries, +% indent = 20pt, +% } +% } +% \part{首行缩进的标题} +% \noindent 无缩进的正文。 +% \section{首行缩进的标题} +% \noindent 无缩进的正文。 +% \end{ctexexam} +% \end{function} +% % \begin{function}[EXP,updated=2016-05-10]{.../beforeskip} % \begin{syntax} % beforeskip = \Arg{弹性间距} @@ -2356,6 +2405,16 @@ Copyright and Licence % \subsection{目录、附录相关} % \label{subsec:sec-toc-appendix} % +% \begin{function}[EXP,added=2020-05-06]{tocdepth} +% \begin{syntax} +% tocdepth = <整数或章节名称> +% \end{syntax} +% 设置对章节标题编入目录的层次数。\opt{tocdepth} 的值可以是一个整数,也可以是 +% |part|, |chapter| 等名称。 +% 层次数与名称的对应关系见表~\ref{tab:heading-level}。 +% 章节层次的默认设置见表~\ref{tab:heading-level-default}。 +% \end{function} +% % \begin{function}[EXP,added=2016-10-25]{.../tocline} % \begin{syntax} % tocline = \Arg{格式定义} @@ -2443,9 +2502,10 @@ Copyright and Licence % 文档类 & 影响命令 & \opt{scheme = chinese} & 实际定义 % & \opt{scheme = plain} & 实际定义 \\ % \midrule -% article & \tn{section} & |{}| & & |{}| & \\ -% book, report & \tn{chapter} & |\appendixname\space| & \verb*|附录 | -% & |\appendixname\space| & \verb*|Appendix | \\ +% \cls{article} & \tn{section} & |{}| & & |{}| & \\ +% \cls{book}, \cls{report} +% & \tn{chapter} & |\appendixname\space| & \verb*|附录 | +% & |\appendixname\space| & \verb*|Appendix | \\ % \bottomrule % \end{tabular} % \end{table} @@ -2472,8 +2532,8 @@ Copyright and Licence % \toprule % 文档类 & 影响命令 & 默认值 \\ % \midrule -% article & \tn{section} & |\Alph{section}| \\ -% book, report & \tn{chapter} & |\Alph{chapter}| \\ +% \cls{article} & \tn{section} & |\Alph{section}| \\ +% \cls{book}, \cls{report} & \tn{chapter} & |\Alph{chapter}| \\ % \bottomrule % \end{tabular} % \end{table} @@ -4188,7 +4248,7 @@ Copyright and Licence \tl_set:Nn \CJKrmdefault {#1} \tl_set:Nn \CJKsfdefault {#2} \tl_set:Nn \CJKttdefault {#3} - \ctex_set_zhmap:n { \ctex_zhmap_input:n {#4} } + \ctex_set_zhmap:n { \ctex_zhmap_input:n { ctex-zhmap- #4 .tex } } } \@onlypreamble \ctex_load_zhmap:nnnn % \end{macrocode} @@ -4214,18 +4274,6 @@ Copyright and Licence % \end{macrocode} % \end{macro} % -% \begin{macrocode} - \tl_if_exist:NF \CJKfamilydefault - { \tl_const:Nn \CJKfamilydefault { \CJKrmdefault } } - \tl_if_exist:NF \CJKrmdefault { \tl_new:N \CJKrmdefault } - \tl_if_exist:NF \CJKsfdefault { \tl_new:N \CJKsfdefault } - \tl_if_exist:NF \CJKttdefault { \tl_new:N \CJKttdefault } - \g@addto@macro \@rmfamilyhook { \CJKfamily { \CJKrmdefault } } - \g@addto@macro \@sffamilyhook { \CJKfamily { \CJKsfdefault } } - \g@addto@macro \@ttfamilyhook { \CJKfamily { \CJKttdefault } } - \g@addto@macro \@defaultfamilyhook { \CJKfamily { \CJKfamilydefault } } -% \end{macrocode} -% % \pkg{zhmCJK} 判断结束。 % \begin{macrocode} \fi: @@ -4408,7 +4456,8 @@ Copyright and Licence \clist_const:Nn \c_@@_punct_family_clist { zhsong , zhhei , zhfs , zhkai , zhli , zhyou , - zhsongb , zhheil , zhheib , zhyoub , zhyahei , zhyaheib + zhsongb , zhheil , zhheib , zhyoub , + zhyahei , zhyaheib , zhpf , zhpfb } % \end{macrocode} % \end{macro} @@ -5576,28 +5625,8 @@ Copyright and Licence % \end{macrocode} % \end{macro} % -% \begin{macrocode} -\tl_if_exist:NF \CJKfamilydefault - { \tl_const:Nn \CJKfamilydefault { \CJKrmdefault } } -\tl_if_exist:NF \CJKrmdefault { \tl_const:Nn \CJKrmdefault { rm } } -\tl_if_exist:NF \CJKsfdefault { \tl_const:Nn \CJKsfdefault { sf } } -\tl_if_exist:NF \CJKttdefault { \tl_const:Nn \CJKttdefault { tt } } -% \end{macrocode} -% % \changes{v2.4.8}{2017/02/23} % {解决与 \pkg{fontspec} 2017/01/24 v2.5d 的字体族匹配兼容问题。} -% 使用 \LaTeXe \ 提供的钩子,使主要 |CJK| 字体族能随西文主要字体更新。 -% \begin{macrocode} -\g@addto@macro \@rmfamilyhook { \CJKfamily { \CJKrmdefault } } -\g@addto@macro \@sffamilyhook { \CJKfamily { \CJKsfdefault } } -\g@addto@macro \@ttfamilyhook { \CJKfamily { \CJKttdefault } } -\g@addto@macro \@defaultfamilyhook { \CJKfamily { \CJKfamilydefault } } -% \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} 确实存在。 @@ -5998,7 +6027,7 @@ Copyright and Licence { \clist_map_inline:nn {#1} { \@@_declare_char_range:nn ##1 } } \cs_generate_variant:Nn \ctex_ltj_declare_char_range:n { e } \cs_new_protected:Npn \@@_declare_char_range:nn #1 - { \exp_args:Ne \ctex_ltj_declare_char_range:nn { \tl_trim_spaces:n {#1} } } + { \tl_trim_spaces_apply:nN {#1} \ctex_ltj_declare_char_range:nn } % \end{macrocode} % \end{macro} % @@ -6139,17 +6168,8 @@ Copyright and Licence % \changes{v2.4}{2016/02/28}{初步支持 \upLaTeX。} % \changes{v2.4.15}{2019/04/05}{显式补丁 \upLaTeX 的 \tn{rmfamily} 等字体命令。} % -% 按 \pkg{CJK} 的命名习惯模拟部分命令,并设置默认字体。 +% 按 \pkg{CJK} 的命名习惯模拟 \tn{CJKfamily}。 % \begin{macrocode} -\tl_if_exist:NF \CJKfamilydefault - { \tl_const:Nn \CJKfamilydefault { \CJKrmdefault } } -\tl_if_exist:NF \CJKrmdefault { \tl_const:Nn \CJKrmdefault { zhrm } } -\tl_if_exist:NF \CJKsfdefault { \tl_const:Nn \CJKsfdefault { zhsf } } -\tl_if_exist:NF \CJKttdefault { \tl_const:Nn \CJKttdefault { zhtt } } -\tl_set:Nn \kanjifamilydefault { \CJKfamilydefault } -\g@addto@macro \@rmfamilyhook { \kanjifamily { \CJKrmdefault } } -\g@addto@macro \@sffamilyhook { \kanjifamily { \CJKsfdefault } } -\g@addto@macro \@ttfamilyhook { \kanjifamily { \CJKttdefault } } \NewDocumentCommand \CJKfamily { m } { \kanjifamily {#1} \selectfont } % \end{macrocode} @@ -6167,16 +6187,6 @@ Copyright and Licence \jfam \symmincho % \end{macrocode} % -% 在导言区末尾更新 \tn{CJKfamilydefault}。 -% \begin{macrocode} -\ctex_at_end_preamble:n { \ctex_update_default_family: } -% \end{macrocode} -% -% 使修改立刻生效,保证导言区字体族正确。 -% \begin{macrocode} -\normalfont -% \end{macrocode} -% % \begin{macro}[int]{\em} % \changes{v2.4.2}{2016/05/15}{兼容 \upLaTeX{} 2016/05/07u00 的定义。} % 取消 \upLaTeX{} 对 \tn{em} 使用 |\mcfamily|、|\gtfamily| 命令的重定义,恢复 @@ -6295,7 +6305,83 @@ Copyright and Licence %</uptex|aptex> % \end{macrocode} % -% \subsubsection{调整 \tn{CJKfamilydefault}} +% \subsubsection{修改主要字体命令} +% +% \changes{v2.5.2}{2020/05/06}{兼容 \LaTeX\ 2020-02-02 之前的版本。} +% +% 修改 \tn{rmfamily} 等主要字体命令,使得中文字体能随西文主要字体更新。 +% \LaTeX\ 2020-02-02 以后的版本可以直接使用 \tn{@rmfamilyhook} 等钩子。 +% 我们暂时需要处理旧内核的情况,以保持兼容性。 +% +% \pkg{xeCJK} 和 \pkg{zhmCJK} 已经有相同的工作,本段代码不需要对他们使用。 +% \begin{macrocode} +%<*pdftex|luatex|uptex|aptex> +%<pdftex>\reverse_if:N \if_bool:N \g_@@_zhmCJK_bool +% \end{macrocode} +% +% \begin{macro}[int]{\ctex_provide_font_hook:NNN,\CTEX@rmfamilyhook} +% 给 \tn{rmfamily} 等字体命令加钩子,钩子名字统一为 \tn{CTEX@rmfamilyhook} 等。 +% \begin{macrocode} +\cs_new_protected:Npn \ctex_provide_font_hook:NNN #1#2 + { + \exp_args:Nc \@@_provide_font_hook_aux:NNNN + { CTEX \cs_to_str:N #2 } #1#2 + } +\cs_new_protected:Npn \@@_provide_font_hook_aux:NNNN #1#2#3#4 + { + \tl_new:N #1 + \cs_if_exist:NTF #3 + { \tl_gput_right:Nn #3 {#1} } + { \ctex_patch_cmd:Nnn #2 {#4} { #1#4 } } + } +\ctex_provide_font_hook:NNN \rmfamily \@rmfamilyhook \selectfont +\ctex_provide_font_hook:NNN \sffamily \@sffamilyhook \selectfont +\ctex_provide_font_hook:NNN \ttfamily \@ttfamilyhook \selectfont +%<pdftex|luatex>\ctex_provide_font_hook:NNN \normalfont \@defaultfamilyhook \usefont +% \end{macrocode} +% \end{macro} +% +% 按 \pkg{CJK} 的命名习惯模拟部分命令,并设置默认字体。 +% \begin{macrocode} +\tl_if_exist:NF \CJKfamilydefault + { \tl_const:Nn \CJKfamilydefault { \CJKrmdefault } } +%<*pdftex|luatex> +\tl_if_exist:NF \CJKrmdefault { \tl_const:Nn \CJKrmdefault { rm } } +\tl_if_exist:NF \CJKsfdefault { \tl_const:Nn \CJKsfdefault { sf } } +\tl_if_exist:NF \CJKttdefault { \tl_const:Nn \CJKttdefault { tt } } +\tl_gput_right:Nn \CTEX@rmfamilyhook { \CJKfamily { \CJKrmdefault } } +\tl_gput_right:Nn \CTEX@sffamilyhook { \CJKfamily { \CJKsfdefault } } +\tl_gput_right:Nn \CTEX@ttfamilyhook { \CJKfamily { \CJKttdefault } } +\tl_gput_right:Nn \CTEX@defaultfamilyhook { \CJKfamily { \CJKfamilydefault } } +%</pdftex|luatex> +% \end{macrocode} +% \upLaTeX 不需要补丁 \tn{normalfont},只需要修改 \tn{kanjifamilydefault}。 +% \begin{macrocode} +%<*uptex|aptex> +\tl_if_exist:NF \CJKrmdefault { \tl_const:Nn \CJKrmdefault { zhrm } } +\tl_if_exist:NF \CJKsfdefault { \tl_const:Nn \CJKsfdefault { zhsf } } +\tl_if_exist:NF \CJKttdefault { \tl_const:Nn \CJKttdefault { zhtt } } +\tl_gput_right:Nn \CTEX@rmfamilyhook { \kanjifamily { \CJKrmdefault } } +\tl_gput_right:Nn \CTEX@sffamilyhook { \kanjifamily { \CJKsfdefault } } +\tl_gput_right:Nn \CTEX@ttfamilyhook { \kanjifamily { \CJKttdefault } } +\tl_gset:Nn \kanjifamilydefault { \CJKfamilydefault } +%</uptex|aptex> +% \end{macrocode} +% +% \pkg{zhmCJK} 判断结束。 +% \begin{macrocode} +%<pdftex>\fi: +% \end{macrocode} +% +% 使修改立刻生效,保证导言区字体族正确。 +% \begin{macrocode} +\normalfont +% \end{macrocode} +% +% 在导言区末尾更新 \tn{CJKfamilydefault},\pdfTeX 已经在之前使用过此处代码。 +% \begin{macrocode} +%<!pdftex>\ctex_at_end_preamble:n { \ctex_update_default_family: } +% \end{macrocode} % % \changes{v2.4}{2016/02/15}{正确更新 \pkg{CJK} 包的 \tn{CJKfamilydefault}。} % \changes{v2.4.1}{2016/04/26}{正确更新 \upLaTeX{} 的 \tn{CJKfamilydefault}。} @@ -6304,7 +6390,6 @@ Copyright and Licence % 在导言区结束,如果 \tn{CJKfamilydefault} 没有被更改,则在此时根据西文字体的情况 % 更新 \tn{CJKfamilydefault}。\pkg{xeCJK} 已经有这个功能,不需要再调整。 % \begin{macrocode} -%<*pdftex|luatex|uptex|aptex> \cs_new_protected:Npn \ctex_update_default_family: { \tl_if_eq:NNT \CJKfamilydefault \l_@@_family_default_init_tl @@ -6328,9 +6413,7 @@ Copyright and Licence % 确认它的存在性。使用 \pkg{CJK} 宏包或 \upLaTeX{} % 时,\texttt{C19rm}、\texttt{JY2rm} 等总是有定义的,不需要确认。 % \begin{macrocode} -%<*luatex> - \ctex_ltj_ensure_default_family: -%</luatex> +%<luatex> \ctex_ltj_ensure_default_family: } % \end{macrocode} % \end{macro} @@ -6346,10 +6429,13 @@ Copyright and Licence { \exp_not:o { \CJKfamilydefault } } } \tl_gset_eq:NN \CJKfamilydefault \l_@@_family_default_init_tl -%</pdftex|luatex|uptex|aptex> % \end{macrocode} % \end{variable} % +% \begin{macrocode} +%</pdftex|luatex|uptex|aptex> +% \end{macrocode} +% % \changes{v2.0}{2014/04/16}{自动检测操作系统,载入对应的字体配置。} % \changes{v2.5}{2019/10/25}{操作系统检测移动至载入中文字库处,且不再需要 % 依赖特定引擎。} @@ -6953,35 +7039,39 @@ Copyright and Licence \ctex_update_em_unit: \dim_set:Nn \l_@@_tmp_dim { \l_@@_line_stretch_tl } \dim_compare:nNnTF \l_@@_tmp_dim = \c_max_dim + { \@@_update_stretch_auxi: } + { \@@_update_stretch_auxii: } + } +\cs_new_protected:Npn \@@_update_stretch_auxi: + { + \ctex_if_ccglue_touched:TF + { \ctex_update_ccwd: } { - \ctex_if_ccglue_touched:TF - { \ctex_update_ccwd: } - { - \dim_set:Nn \l_@@_tmp_dim - { \baselinestretch \tex_glueexpr:D \f@baselineskip \scan_stop: } - \skip_set:Nn \l_@@_ccglue_skip - { \c_zero_dim plus .08 \l_@@_tmp_dim } - \ctex_update_ccglue: - } + \dim_set:Nn \l_@@_tmp_dim + { \baselinestretch \tex_glueexpr:D \f@baselineskip \scan_stop: } + \skip_set:Nn \l_@@_ccglue_skip + { \c_zero_dim plus .08 \l_@@_tmp_dim } + \ctex_update_ccglue: } + } +\cs_new_protected:Npn \@@_update_stretch_auxii: + { + \int_set:Nn \l_@@_tmp_int + { \tex_dimexpr:D \linewidth - \ccwd - \l_@@_tmp_dim \scan_stop: } + \tex_divide:D \l_@@_tmp_int \ccwd + \int_compare:nNnTF \l_@@_tmp_int > \c_zero_int { - \int_set:Nn \l_@@_tmp_int - { \tex_dimexpr:D \linewidth - \ccwd - \l_@@_tmp_dim \scan_stop: } - \tex_divide:D \l_@@_tmp_int \ccwd - \int_compare:nNnTF \l_@@_tmp_int > \c_zero_int + \skip_set:Nn \l_@@_ccglue_skip { - \skip_set:Nn \l_@@_ccglue_skip + \c_zero_dim plus \dim_eval:n { - \c_zero_dim plus \dim_eval:n - { - ( \linewidth - \ccwd - \l_@@_tmp_int \ccwd ) / - \l_@@_tmp_int - } + ( \linewidth - \ccwd - \l_@@_tmp_int \ccwd ) / + \l_@@_tmp_int } } - { \skip_zero:N \l_@@_ccglue_skip } - \ctex_update_ccglue: } + { \skip_zero:N \l_@@_ccglue_skip } + \ctex_update_ccglue: } % \end{macrocode} % \end{macro} @@ -8766,6 +8856,59 @@ Copyright and Licence %</beamer> % \end{macrocode} % +% \subsubsection{标题编号和目录的层次设置} +% +% \changes{v2.5.2}{2020/05/06}{新增标题选项 \opt{secnumdepth} 和 \opt{tocdepth}。} +% +% \begin{macro}{secnumdepth, tocdepth} +% \opt{secnumdepth} 在 \cls{beamer} 下无意义。 +% \begin{macrocode} +\ctex_define:n + { +%<*!beamer> + secnumdepth .code:n = \ctex_heading_depth:ne { secnumdepth } {#1} , + secnumdepth .value_required:n = true , +%</!beamer> + tocdepth .code:n = \ctex_heading_depth:ne { tocdepth } {#1} , + tocdepth .value_required:n = true + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\ctex_heading_depth:nn} +% 注意此处 \tn{setcounter} 的赋值是全局的。 +% \begin{macrocode} +\cs_new_protected:Npn \ctex_heading_depth:nn #1#2 + { + \prop_get:NnNTF \c_@@_heading_level_prop {#2} \l_@@_tmp_tl + { \setcounter {#1} { \l_@@_tmp_tl } } + { \setcounter {#1} { \int_eval:n {#2} } } + } +\cs_generate_variant:Nn \ctex_heading_depth:nn { ne } +% \end{macrocode} +% \end{macro} +% +% \begin{variable}[int]{\c_@@_heading_level_prop} +% 章节层次与名称的对应表。 +% \begin{macrocode} +\prop_const_from_keyval:Nn \c_@@_heading_level_prop + { +%<*article|beamer> + part = 0 , +%</article|beamer> +%<*book|report> + part = -1 , + chapter = 0 , +%</book|report> + section = 1 , + subsection = 2 , + subsubsection = 3 , + paragraph = 4 , + subparagraph = 5 + } +% \end{macrocode} +% \end{variable} +% % \subsubsection{标签引用数字的汉化} % % \begin{macro}[int]{\refstepcounter} @@ -9082,7 +9225,7 @@ Copyright and Licence % % 处理 \opt{sub3section} 与 \opt{sub4section} 的格式。 % \begin{macrocode} -\int_compare:nNnTF \g__ctex_section_depth_int > 2 +\int_compare:nNnTF \g_@@_section_depth_int > 2 { \ctex_set:nn { paragraph } { @@ -9098,7 +9241,7 @@ Copyright and Licence runin = true } } -\int_compare:nNnTF \g__ctex_section_depth_int > 3 +\int_compare:nNnTF \g_@@_section_depth_int > 3 { \ctex_set:nn { subparagraph } { @@ -9114,7 +9257,7 @@ Copyright and Licence runin = true } } -\int_compare:nNnTF \g__ctex_section_depth_int > 2 +\int_compare:nNnTF \g_@@_section_depth_int > 2 { \ctex_set:nn { subparagraph } { indent = \c_zero_dim } } { \ctex_set:nn { subparagraph } { indent = \parindent } } % \end{macrocode} @@ -9673,7 +9816,7 @@ Copyright and Licence % \end{macrocode} % \end{macro} % -% \begin{macro}{\ctex_fontset_case:nnn} +% \begin{macro}[int]{\ctex_fontset_case:nnn} % $3$ 个参数依次为 \pdfTeX、\upTeX\ 和 \XeTeX/\LuaTeX。 % \begin{macrocode} \cs_new:Npx \ctex_fontset_case:nnn #1#2#3 @@ -9685,7 +9828,7 @@ Copyright and Licence % \end{macrocode} % \end{macro} % -% \begin{macro}{\ctex_fontset_case:nnnn} +% \begin{macro}[int]{\ctex_fontset_case:nnnn} % $4$ 个参数依次为 \pdfTeX(生成 PDF)、\pdfTeX(生成 DVI)、\upTeX 和 % \XeTeX/\LuaTeX。 % \begin{macrocode} @@ -10028,7 +10171,7 @@ Copyright and Licence \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } } { - \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { zhadobefonts } + \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { adobe } \ctex_punct_set:n { adobe } \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } @@ -10098,7 +10241,7 @@ Copyright and Licence \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } } { - \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { zhfandolfonts } + \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { fandol } \ctex_punct_set:n { fandol } \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } @@ -10172,7 +10315,7 @@ Copyright and Licence \ctex_punct_map_bfseries:nn { zhyou } { zhyoub } } { - \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { zhfounderfonts } + \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { founder } \ctex_punct_set:n { founder } \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } @@ -10214,6 +10357,9 @@ Copyright and Licence %</founder> % \end{macrocode} % +% \changes{v2.5.2}{2020/05/06} +% {修正 \opt{macnew} 和 \opt{ubuntu} 字库的 \pkg{CJKpunct} 标点信息。} +% % \paragraph{\opt{mac} 相关} % % \changes{v2.4.14}{2018/05/01}{区分 \opt{macold} 及 \opt{macnew}。} @@ -10273,18 +10419,19 @@ Copyright and Licence \setCJKfamilyfont { zhyou } { :4:Yuanti.ttc } [ BoldFont = :0:Yuanti.ttc ] \ctex_punct_set:n { mac } \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_family:nn { \CJKsfdefault } { zhheil } + \ctex_punct_map_family:nn { \CJKsfdefault } { zhpf } \ctex_punct_map_family:nn { \CJKttdefault } { zhfs } \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } \ctex_punct_map_bfseries:nn { \CJKrmdefault, zhsong } { zhsongb } - \ctex_punct_map_bfseries:nn { \CJKsfdefault } { zhhei } + \ctex_punct_map_bfseries:nn { \CJKsfdefault, zhhei } { zhpfb } \ctex_punct_map_bfseries:nn { zhyou } { zhyoub } } { - \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { zhmacfonts } + \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { mac } \ctex_punct_set:n { mac } \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_family:nn { \CJKsfdefault } { zhpf } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhpf } \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } } { \ctex_fontset_error:n { macnew } } @@ -10359,15 +10506,18 @@ Copyright and Licence \setCJKfamilyfont { zhhei } { :2:NotoSansCJK-Regular.ttc } [ BoldFont = :2:NotoSansCJK-Bold.ttc ] \setCJKfamilyfont { zhkai } { gkai00mp.ttf } - \ctex_punct_set:n { fandol } - \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } - \ctex_punct_map_family:nn { \CJKsfdefault } { zhhei } - \ctex_punct_map_bfseries:nn { \CJKrmdefault, zhsong } { zhsongb } - \ctex_punct_map_bfseries:nn { \CJKsfdefault, zhhei } { zhheib } - \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + \ctex_punct_set:n { ubuntu } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_family:nn { \CJKsfdefault } { zhhei } + \ctex_punct_map_family:nn { \CJKttdefault } { zhsong } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + \ctex_punct_map_bfseries:nn { \CJKsfdefault, zhhei } { zhheib } + \ctex_punct_map_bfseries:nn + { \CJKrmdefault, \CJKttdefault, zhsong } + { zhsongb } } { - \ctex_load_zhmap:nnnn { rm } { zhhei } { zhsong } { zhubuntufonts } + \ctex_load_zhmap:nnnn { rm } { zhhei } { zhsong } { ubuntu } \ctex_punct_set:n { ubuntu } \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } @@ -10448,17 +10598,13 @@ Copyright and Licence \ctex_punct_map_family:nn { \CJKttdefault } { zhfs } } { - \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { zhwindowsfonts } + \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { windows } \ctex_punct_set:n { windows } \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } } - { - \tl_set:Nn \CJKrmdefault { rm } - \tl_set:Nn \CJKsfdefault { sf } - \tl_set:Nn \CJKttdefault { tt } - } + { } } { \ctex_set_upfonts:nnnnnn @@ -10533,6 +10679,9 @@ Copyright and Licence % % \subsubsection{\pkg{zhmetrics} 的字体映射} % +% \changes{v2.5.2}{2020/05/05}{\file{zhadobefonts.tex} 等字体映射文件更名为 +% \file{ctex-zhmap-*.tex}。} +% % 确认 \tn{catcode},没有重复载入检查。 % \begin{macrocode} %<*zhmap> @@ -10600,21 +10749,21 @@ Copyright and Licence % % 文件标识信息。 % \begin{macrocode} -%<adobe>\ProvidesFile{zhadobefonts.tex}% -%<adobe> [2020/05/02 v2.5.1 Adobe font map loader for DVIPDFMx (CTEX)] -%<fandol>\ProvidesFile{zhfandolfonts.tex}% -%<fandol> [2020/05/02 v2.5.1 Fandol font map loader for DVIPDFMx (CTEX)] -%<founder>\ProvidesFile{zhfounderfonts.tex}% -%<founder> [2020/05/02 v2.5.1 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)] -%<mac>\ProvidesFile{zhmacfonts.tex}% -%<mac> [2020/05/02 v2.5.1 Mac font map loader for pdfTeX and DVIPDFMx (CTEX)] -%<ubuntu>\ProvidesFile{zhubuntufonts.tex}% -%<ubuntu> [2020/05/02 v2.5.1 Ubuntu font map loader for pdfTeX and DVIPDFMx (CTEX)] -%<windows>\ProvidesFile{zhwindowsfonts.tex}% -%<windows> [2020/05/02 v2.5.1 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)] +%<adobe>\ProvidesFile{ctex-zhmap-adobe.tex}% +%<adobe> [2020/05/16 v2.5.2 Adobe font map loader for DVIPDFMx (CTEX)] +%<fandol>\ProvidesFile{ctex-zhmap-fandol.tex}% +%<fandol> [2020/05/16 v2.5.2 Fandol font map loader for DVIPDFMx (CTEX)] +%<founder>\ProvidesFile{ctex-zhmap-founder.tex}% +%<founder> [2020/05/16 v2.5.2 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)] +%<mac>\ProvidesFile{ctex-zhmap-mac.tex}% +%<mac> [2020/05/16 v2.5.2 Mac font map loader for DVIPDFMx (CTEX)] +%<ubuntu>\ProvidesFile{ctex-zhmap-ubuntu.tex}% +%<ubuntu> [2020/05/16 v2.5.2 Ubuntu font map loader for DVIPDFMx (CTEX)] +%<windows>\ProvidesFile{ctex-zhmap-windows.tex}% +%<windows> [2020/05/16 v2.5.2 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)] % \end{macrocode} % -% \paragraph{\pkg{zhadobefonts.tex}} +% \paragraph{\pkg{ctex-zhmap-adobe.tex}} % % \begin{macrocode} %<*adobe> @@ -10643,7 +10792,7 @@ Copyright and Licence %</adobe> % \end{macrocode} % -% \paragraph{\pkg{zhfandolfonts.tex}} +% \paragraph{\pkg{ctex-zhmap-fandol.tex}} % % \begin{macrocode} %<*fandol> @@ -10672,7 +10821,7 @@ Copyright and Licence %</fandol> % \end{macrocode} % -% \paragraph{\pkg{zhfounderfonts.tex}} +% \paragraph{\pkg{ctex-zhmap-founder.tex}} % % \begin{macrocode} %<*founder> @@ -10734,7 +10883,7 @@ Copyright and Licence %</founder> % \end{macrocode} % -% \paragraph{\pkg{zhmacfonts.tex}} +% \paragraph{\pkg{ctex-zhmap-mac.tex}} % % \changes{v2.5}{2020/01/15}{增加字体映射文件 \file{zhmacfonts.tex}。} % @@ -10773,7 +10922,7 @@ Copyright and Licence %</mac> % \end{macrocode} % -% \paragraph{\pkg{zhubuntufonts.tex}} +% \paragraph{\pkg{ctex-zhmap-ubuntu.tex}} % % \begin{macrocode} %<*ubuntu> @@ -10802,7 +10951,7 @@ Copyright and Licence %</ubuntu> % \end{macrocode} % -% \paragraph{\pkg{zhwindowsfonts.tex}} +% \paragraph{\pkg{ctex-zhmap-windows.tex}} % % \begin{macrocode} %<*windows> @@ -10871,6 +11020,9 @@ Copyright and Licence % % \subsubsection{制作 \texttt{spa} 文件} % +% \changes{v2.5.2}{2020/05/05}{\file{ctexmakespa.tex} 更名为 \file{ctex-spa-make.tex}。} +% \changes{v2.5.2}{2020/05/05}{\file{ctexspamacro.tex} 更名为 \file{ctex-spa-macro.tex}。} +% % 我们通过 \XeTeX{} 的 \tn{XeTeXglyphbounds} 取得字体中标点符号的边界信息,为 % \pkg{CJKpunct} 宏包制作 \file{spa}。 % @@ -10970,7 +11122,7 @@ Copyright and Licence % 下面是 \CTeX{} 定义的一些字体。 % \begin{macrocode} %<*make> -\input ctexspamacro % +\input ctex-spa-macro % \MAKESPA {ctexpunct.spa} { {adobezhsong} {AdobeSongStd-Light} , |