summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-08-23 20:53:47 +0000
committerKarl Berry <karl@freefriends.org>2020-08-23 20:53:47 +0000
commitb1cf361795a720dbfa84ca6546355be360964437 (patch)
tree0f4e7ab3eb499669e27d35feb127efc305f2c69c /Master/texmf-dist/source
parent20b89567543c9ede8bcd65a562ce3abff8eaa617 (diff)
ctex (23aug20)
git-svn-id: svn://tug.org/texlive/trunk@56161 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/ctex/ctex.dtx294
1 files changed, 149 insertions, 145 deletions
diff --git a/Master/texmf-dist/source/latex/ctex/ctex.dtx b/Master/texmf-dist/source/latex/ctex/ctex.dtx
index c0a472bab2b..8937946de81 100644
--- a/Master/texmf-dist/source/latex/ctex/ctex.dtx
+++ b/Master/texmf-dist/source/latex/ctex/ctex.dtx
@@ -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 76d4e94 2020-06-06 23:22:18 +0800 Qing Lee <sobenlee@gmail.com> $
+%<+!driver>\GetIdInfo$Id: ctex.dtx e805781 2020-08-23 21:30:35 +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.3}{\ExplFileDescription}
+%<!driver> {\ExplFileDate}{2.5.4}{\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/06/06 v2.5.3 Chinese font definition (CTEX)]
-%<ctexspa> [2020/06/06 v2.5.3 Space info for CJKpunct (CTEX)]
-%<backend> [2020/06/06 v2.5.3 Backend configuration file (CTEX)]
-%<dict&theorem> [2020/06/06 v2.5.3 Chinese translation for theorem name (CTEX)]
+%<fd> [2020/08/23 v2.5.4 Chinese font definition (CTEX)]
+%<ctexspa> [2020/08/23 v2.5.4 Space info for CJKpunct (CTEX)]
+%<backend> [2020/08/23 v2.5.4 Backend configuration file (CTEX)]
+%<dict&theorem> [2020/08/23 v2.5.4 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{6222}
+% \CheckSum{6228}
%
% \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
@@ -1171,9 +1171,9 @@ Copyright and Licence
% 的格式。启用 \opt{sub4section} 会将 \tn{paragraph} 和 \tn{subparagraph} 的格式
% 都修改为类似 \tn{section} 的格式。
%
-% 启用该选项通常还需要将计数器 |secnumdepth| 的值为设置为 4 或 5。
+% 启用该选项通常还需要将计数器 |secnumdepth| 的值为设置为 |4| 或 |5|。
%
-% 具体格式可参考 \ref{sec:secstyle}~节中的 \opt{runin} 和 \opt{afterskip} 选项。
+% 具体格式可参考 \ref{subsec:sec-spacing}~小节中的 \opt{runin} 和 \opt{afterskip} 选项。
%
% 注意,上述两个选项只有在非 \cls{beamer} 文档类下 \opt{heading} 选项启用的时候
% 才有意义。亦即,只有在使用除了 \cls{ctexbeamer} 的三个 \CTeX{} 文档类或启用了
@@ -1492,7 +1492,7 @@ Copyright and Licence
% 的包提供了以下宏供使用:
% \begin{itemize}
% \item \tn{CTEXthechapter}、\tn{CTEXthesection} 等章节编号(见
-% \ref{sec:secstyle} 节)。它们用来代替英文文档类中的
+% \ref{subsec:sec-commands}~小节)。它们用来代替英文文档类中的
% \tn{thechapter}、\tn{thesection} 等宏。
%
% \item \tn{leftmark}、\tn{rightmark},它们是在使用章节标题命令后,自动设置的
@@ -2538,10 +2538,10 @@ Copyright and Licence
% \end{tabular}
% \end{table}
%
-% \subsection{有关命令}
+% \subsection{辅助命令}
% \label{subsec:sec-commands}
%
-% \CTeX{} 宏集还提供了一些命令(宏),用于存储章节标题格式,或进行一些条件判断。
+% \CTeX{} 宏集还提供了一些辅助命令(宏),用于存储章节标题格式,或进行一些条件判断。
%
% \begin{function}{\CTEXthepart, \CTEXthechapter, \CTEXthesection,
% \CTEXthesubsection, \CTEXthesubsubsection, \CTEXtheparagraph,
@@ -3346,7 +3346,7 @@ Copyright and Licence
`l3kernel'~and~`l3packages'\\\\
using~your~TeX~package~manager~or~from~CTAN.
}
-\@ifpackagelater { expl3 } { 2020/04/06 } { }
+\@ifpackagelater { expl3 } { 2020/07/17 } { }
{ \msg_error:nnn { ctex } { l3-too-old } { expl3 } }
%<*class>
\@ifpackagelater { l3keys2e } { 2015/12/20 } { }
@@ -3417,68 +3417,44 @@ Copyright and Licence
{ \keys_set:nn { ctex } }
\cs_new_protected:Npn \ctex_set:nn #1
{ \keys_set:nn { ctex / #1 } }
+%</!ctexsize>
% \end{macrocode}
% \end{macro}
%
% \changes{v2.5.3}{2020/06/06}{正确关闭和恢复 \LaTeXiii 语法环境。}
+% \changes{v2.5.4}{2020/08/02}{应用 \pkg{l3cctab}。}
%
-% \begin{macro}[int]{\ctex_file_wrapper:nnn}
-% 设置文件操作的 \tn{catcode} 环境,参数 |#1| 是设置,|#2| 是文件操作,|#3| 是恢复。
-% 默认关闭 \LaTeXiii{} 语法环境,并设置 |@| 的 \tn{catcode} 为 $11$。
-% 这里最自然的使用 \pkg{l3cctab} 来实现,但目前 \pkg{l3cctab} 还属于
-% \pkg{l3experimental},我们暂时不依赖它。
+% \begin{macro}[int]{\ctex_file_input:n}
+% 输入文件,关闭 \LaTeXiii 语法环境,并设置 |@| 为字母类。
% \begin{macrocode}
-%</!ctexsize>
-\cs_new_protected:Npn \ctex_file_wrapper:nnn
+\cs_new_protected:Npn \ctex_file_input:n #1
{
- \exp_args:NNx \ExplSyntaxOff
- \@@_file_wrapper_aux:nnnn
- {
- \bool_if:NTF \l__kernel_expl_bool
- { \ExplSyntaxOn }
- { \ExplSyntaxOff }
- }
+ \cctab_begin:N \c_@@_package_cctab
+ \file_input:n {#1}
+ \cctab_end:
}
-\cs_new_protected:Npn \@@_file_wrapper_aux:nnnn #1#2#3#4
+\cctab_const:Nn \c_@@_package_cctab
{
- \use:x
- {
- \char_set_catcode_letter:n { 64 }
- #2
- \exp_not:n {#3}
- \char_set_catcode:nn { 64 } { \char_value_catcode:n { 64 } }
- #4
- }
- #1
+ \cctab_select:N \c_document_cctab
+ \char_set_catcode_letter:n { 64 }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int]{\ctex_file_input:n}
-% 输入文件。
-% \begin{macrocode}
-\cs_new_protected:Npn \ctex_file_input:n #1
- { \ctex_file_wrapper:nnn { } { \file_input:n {#1} } { } }
-%<*!ctexsize>
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[int]{\ctex_scheme_input:n}
% 输入 \opt{scheme} 文件。先查找当前文档类下的 \meta{scheme},找不到再查找一般的文件。
% \begin{macrocode}
+%<*!ctexsize>
\cs_new_protected:Npn \ctex_scheme_input:n #1
{
- \ctex_file_wrapper:nnn
- { }
- {
- \tl_if_exist:NTF \c_@@_class_tl
- {
- \file_if_exist_input:nF { ctex-scheme- #1 - \c_@@_class_tl .def }
- { \file_input:n { ctex-scheme- #1 .def } }
- }
- { \file_input:n { ctex-scheme- #1 .def } }
- }
- { }
+ \cctab_begin:N \c_@@_package_cctab
+ \tl_if_exist:NTF \c_@@_class_tl
+ {
+ \file_if_exist_input:nF { ctex-scheme- #1 - \c_@@_class_tl .def }
+ { \file_input:n { ctex-scheme- #1 .def } }
+ }
+ { \file_input:n { ctex-scheme- #1 .def } }
+ \cctab_end:
}
\cs_generate_variant:Nn \ctex_scheme_input:n { o }
% \end{macrocode}
@@ -4241,6 +4217,8 @@ Copyright and Licence
\RequirePackage { CJKpunct , CJKspace }
% \end{macrocode}
%
+% \changes{v2.4.4}{2016/09/09}{解决 \opt{zhmap} 文件的 \tn{catcode} 问题。}
+%
% \begin{macro}[int]{\ctex_load_zhmap:nnnn}
% 载入 \pkg{zhmetrics} 的字体映射文件,同时设置 \tn{CJKrmdefault} 等。
% \begin{macrocode}
@@ -4249,32 +4227,12 @@ 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 { ctex-zhmap- #4 .tex } }
+ \ctex_set_zhmap:n { \ctex_file_input:n { ctex-zhmap- #4 .tex } }
}
\@onlypreamble \ctex_load_zhmap:nnnn
% \end{macrocode}
% \end{macro}
%
-% \changes{v2.4.4}{2016/09/09}{解决 \opt{zhmap} 文件的 \tn{catcode} 问题。}
-% \begin{macro}[int]{\ctex_zhmap_input:n}
-% 载入字体映射文件时,确认 |%| 和 |\| 的 \tn{catcode}。
-% \begin{macrocode}
- \cs_new_protected:Npn \ctex_zhmap_input:n #1
- {
- \ctex_file_wrapper:nnn
- {
- \char_set_catcode_comment:n { 37 } % %
- \char_set_catcode_escape:n { 92 } % \
- }
- { \file_input:n {#1} }
- {
- \char_set_catcode:nn { 37 } { \char_value_catcode:n { 37 } }
- \char_set_catcode:nn { 92 } { \char_value_catcode:n { 92 } }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
% \pkg{zhmCJK} 判断结束。
% \begin{macrocode}
\fi:
@@ -4284,22 +4242,18 @@ Copyright and Licence
% \pkg{breqn} 包可能会在正文中将 |^| 的 \tn{catcode} 改为 $12$ 或 $13$,这将
% 破坏 \pkg{CJK} 对汉字的首字节的定义(\tn{CJK@loadBinding} 和
% \tn{CJK@loadEncoding})。因此需要确保载入 \file{.enc} 和 \file{.bdg} 文件时,
-% |^| 的 \tn{catcode} 为 $7$。
+% |^| 的 \tn{catcode} 为 $7$。同时要设置 \tn{endlinechar} 为 $-1$。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_CJK_input:n #1
{
- \ctex_file_wrapper:nnn
- {
- \char_set_catcode_other:n { 60 } % <
- \char_set_catcode_math_superscript:n { 94 } % ^
- \int_set:Nn \tex_endlinechar:D { -1 }
- }
- { \file_input:n {#1} }
- {
- \char_set_catcode:nn { 60 } { \char_value_catcode:n { 60 } }
- \char_set_catcode:nn { 94 } { \char_value_catcode:n { 94 } }
- \int_set:Nn \tex_endlinechar:D { \int_use:N \tex_endlinechar:D }
- }
+ \cctab_begin:N \c_@@_CJK_cctab
+ \file_input:n {#1}
+ \cctab_end:
+ }
+\cctab_const:Nn \c_@@_CJK_cctab
+ {
+ \cctab_select:N \c_@@_package_cctab
+ \int_set:Nn \tex_endlinechar:D { -1 }
}
\cs_set_eq:NN \CJK@input \ctex_CJK_input:n
% \end{macrocode}
@@ -4567,6 +4521,7 @@ Copyright and Licence
% \changes{v2.0}{2014/03/08}{通过 \pkg{LuaTeX-ja} 宏包支持 \LuaLaTeX。}
% \changes{v2.3}{2015/09/25}{更新 \pkg{LuaTeX-ja} 支持(20150922.0)。}
% \changes{v2.5}{2020/04/18}{更新 \pkg{LuaTeX-ja} 支持(20200412.0)。}
+% \changes{v2.5.4}{2020/08/16}{更新 \pkg{LuaTeX-ja} 支持(20200808.0)。}
%
% \pkg{LuaTeX-ja} 为了兼容 p\LaTeX 的使用习惯,对 \LaTeXe 的 \pkg{NFSS} 作了不少
% 修改和扩充,这对于简体中文用户来说不是必要的。我们在这里禁用它。
@@ -4593,6 +4548,13 @@ Copyright and Licence
{ \msg_error:nnn { ctex } { package-too-old } { fontspec } }
% \end{macrocode}
%
+% 引擎文件是通过 \cs{ctex_file_input:n} 载入的,其中的 \tn{catcodetable} 机制会完整恢复
+% 文件载入之前的 \tn{catcode} 状态,在引擎文件中的 \tn{catcode} 设置都无效。
+% 因此,对 \tn{ltjlineendcomment} 的设置要放到文件之外进行。
+% \begin{macrocode}
+\ctex_at_end:n { \char_set_catcode_comment:n { \ltjlineendcomment } }
+% \end{macrocode}
+%
% \paragraph{\pkg{LuaTeX-ja} 的默认设置}
%
% \begin{macrocode}
@@ -4636,18 +4598,23 @@ Copyright and Licence
\directlua{for x=128,255 do luatexja.math.is_math_letters[x] = true end}
% \end{macrocode}
%
-% 以下设置抄录自 \file{ltj-latex.sty}。
+% 以下设置抄录自 2020/08/08 之前的 \file{ltj-latex.sty}。
+% 自 2020/08/08 开始,\pkg{LuaTeX-ja} 引入新的缓存机制,此段设置被整合进 \file{luatexja.lua}。
% \begin{macrocode}
-\directlua{
- local s = kpse.find_file('ltj-kinsoku.lua', 'tex')
- luatexja.stack.charprop_stack_table[0] = s and dofile(s) or {}
-}
-\ltjsetparameter{kanjiskip=\z@ plus .4pt minus .5pt,
- xkanjiskip=.25\zw plus 1pt minus 1pt,
- autospacing, autoxspacing, jacharrange={-1},
- yalbaselineshift=\z@, yjabaselineshift=\z@,
- jcharwidowpenalty=500, differentjfm=paverage
-}
+\@ifpackagelater{luatexja}{2020/08/08}
+ { \ltjsetparameter { autospacing, autoxspacing, differentjfm = paverage } }
+ {
+ \directlua{
+ local s = kpse.find_file('ltj-kinsoku.lua', 'tex')
+ luatexja.stack.charprop_stack_table[0] = s and dofile(s) or {}
+ }
+ \ltjsetparameter{kanjiskip=\z@ plus .4pt minus .5pt,
+ xkanjiskip=.25\zw plus 1pt minus 1pt,
+ autospacing, autoxspacing, jacharrange={-1},
+ yalbaselineshift=\z@, yjabaselineshift=\z@,
+ jcharwidowpenalty=500, differentjfm=paverage
+ }
+ }
% \end{macrocode}
%
% \begin{macrocode}
@@ -6411,6 +6378,7 @@ Copyright and Licence
% \subsubsection{修改主要字体命令}
%
% \changes{v2.5.2}{2020/05/06}{兼容 \LaTeX\ 2020-02-02 之前的版本。}
+% \changes{v2.5.4}{2020/06/07}{修正主要字体命令补丁。}
%
% 修改 \tn{rmfamily} 等主要字体命令,使得中文字体能随西文主要字体更新。
% \LaTeX\ 2020-02-02 以后的版本可以直接使用 \tn{@rmfamilyhook} 等钩子。
@@ -6435,7 +6403,12 @@ Copyright and Licence
\tl_new:N #1
\cs_if_exist:NTF #3
{ \tl_gput_right:Nn #3 {#1} }
- { \ctex_patch_cmd:Nnn #2 {#4} { #1#4 } }
+% \end{macrocode}
+% 注意此处不能用 \cs{ctex_patch_cmd:Nnn} 来打补丁,因其会关闭 \LaTeXiii 语法,
+% 但 \pkg{fontspec} 会在 \tn{rmfamily} 的命令中相应加入
+% \cs{l__fontspec_rmfamily_encoding_tl} 等,导致补丁失败。
+% \begin{macrocode}
+ { \ctex_parse_name:NN \tl_replace_once:Nnn #2 {#4} { #1#4 } }
}
\ctex_provide_font_hook:NNN \rmfamily \@rmfamilyhook \selectfont
\ctex_provide_font_hook:NNN \sffamily \@sffamilyhook \selectfont
@@ -9025,17 +8998,31 @@ Copyright and Licence
% \end{macro}
%
% \changes{v2.5.3}{2020/06/04}{兼容 \pkg{cleveref}。}
-% \begin{macro}{\ctex_cleveref_hook:}
+% \changes{v2.5.4}{2020/06/17}{同时兼容 \pkg{cleveref} 和 \pkg{hyperref}。}
+% \begin{macro}{\ctex_cleveref_hook:,\@@_cleveref_hook_aux:N}
% 需要将\pkg{cleveref} 包对应命令中 |\p@|\meta{counter} 的参数及时展开,以兼容 \tn{labelformat}。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_cleveref_hook:
{
- \ctex_patch_cmd:Nnn \refstepcounter@noarg
- { \endcsname \csname the }
- { \expandafter \endcsname \csname the }
- \ctex_patch_cmd:Nnn \refstepcounter@optarg
+ \@ifpackageloaded { hyperref }
+ { \@@_cleveref_hook_aux:N \H@refstepcounter }
+ {
+ \@@_cleveref_hook_aux:N \refstepcounter@noarg
+ \@@_cleveref_hook_aux:N \refstepcounter@optarg
+ }
+ \@@_cleveref_hook_aux:N \appendix
+ }
+\cs_new_protected:Npn \@@_cleveref_hook_aux:N #1
+ {
+ \ctex_patch_cmd_all:NnnnTF #1
+ {
+ \ExplSyntaxOff
+ \char_set_catcode_letter:n { 64 }
+ }
{ \endcsname \csname the }
{ \expandafter \endcsname \csname the }
+ { }
+ { \ctex_patch_failure:N #1 }
}
% \end{macrocode}
% \end{macro}
@@ -10766,9 +10753,10 @@ Copyright and Licence
% \begin{macrocode}
%<*zhmap>
\begingroup\catcode61\catcode48\catcode32=10\relax%
- \catcode 35=6 % #
- \catcode123=1 % {
- \catcode125=2 % }
+ \catcode 35=6 % #
+ \catcode 45=12 % -
+ \catcode123=1 % {
+ \catcode125=2 % }
\toks0{\endlinechar=\the\endlinechar\relax}%
\toks2{\endlinechar=-1 }%
\def\x#1 #2 {%
@@ -10830,17 +10818,17 @@ Copyright and Licence
% 文件标识信息。
% \begin{macrocode}
%<adobe>\ProvidesFile{ctex-zhmap-adobe.tex}%
-%<adobe> [2020/06/06 v2.5.3 Adobe font map loader for DVIPDFMx (CTEX)]
+%<adobe> [2020/08/23 v2.5.4 Adobe font map loader for DVIPDFMx (CTEX)]
%<fandol>\ProvidesFile{ctex-zhmap-fandol.tex}%
-%<fandol> [2020/06/06 v2.5.3 Fandol font map loader for DVIPDFMx (CTEX)]
+%<fandol> [2020/08/23 v2.5.4 Fandol font map loader for DVIPDFMx (CTEX)]
%<founder>\ProvidesFile{ctex-zhmap-founder.tex}%
-%<founder> [2020/06/06 v2.5.3 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)]
+%<founder> [2020/08/23 v2.5.4 Founder font map loader for pdfTeX and DVIPDFMx (CTEX)]
%<mac>\ProvidesFile{ctex-zhmap-mac.tex}%
-%<mac> [2020/06/06 v2.5.3 Mac font map loader for DVIPDFMx (CTEX)]
+%<mac> [2020/08/23 v2.5.4 Mac font map loader for DVIPDFMx (CTEX)]
%<ubuntu>\ProvidesFile{ctex-zhmap-ubuntu.tex}%
-%<ubuntu> [2020/06/06 v2.5.3 Ubuntu font map loader for DVIPDFMx (CTEX)]
+%<ubuntu> [2020/08/23 v2.5.4 Ubuntu font map loader for DVIPDFMx (CTEX)]
%<windows>\ProvidesFile{ctex-zhmap-windows.tex}%
-%<windows> [2020/06/06 v2.5.3 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)]
+%<windows> [2020/08/23 v2.5.4 Windows font map loader for pdfTeX and DVIPDFMx (CTEX)]
% \end{macrocode}
%
% \paragraph{\pkg{ctex-zhmap-adobe.tex}}
@@ -11396,42 +11384,20 @@ Copyright and Licence
%
% \changes{v2.2}{2015/06/26}{将文档开头和宏包末尾钩子提取到 \pkg{ctexhook} 宏包中。}
% \changes{v2.5}{2020/04/21}{增加宏包开头钩子。}
+% \changes{v2.5.4}{2020/08/02}{兼容 \LaTeX \ 2020/10/01 的钩子机制。}
%
% \begin{macrocode}
%<*ctexhook>
% \end{macrocode}
%
-% \begin{macro}[int]{\ctex_at_end_preamble:n,\ctex_after_end_preamble:n}
-% 实现 \pkg{etoolbox} 宏包的 \tn{AtEndPreamble} 和 \tn{AfterEndPreamble}。
-% \begin{macrocode}
-\cs_new_protected:Npn \ctex_at_end_preamble:n
- { \tl_gput_right:Nn \g_@@_end_preamble_hook_tl }
-\cs_new_protected:Npn \ctex_after_end_preamble:n
- { \tl_gput_right:Nn \g_@@_after_end_preamble_hook_tl }
-\cs_new_protected:Npn \CTEX@document@left@hook
- { \group_end: \g_@@_end_preamble_hook_tl \group_begin: }
-\cs_new_protected:Npn \CTEX@document@right@hook
- { \scan_stop: \g_@@_after_end_preamble_hook_tl \tex_ignorespaces:D }
-\cs_set_nopar:Npx \document
- {
- \CTEX@document@left@hook
- \exp_not:o { \document }
- \CTEX@document@right@hook
- }
-\tl_new:N \g_@@_end_preamble_hook_tl
-\tl_new:N \g_@@_after_end_preamble_hook_tl
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[int]{\ctex_at_begin_package:nn}
% 如果宏包已经被载入,则钩子无效,给出警告。
-% 在 \pkg{filehook} 的钩子\emph{之前}起作用。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_at_begin_package:nn #1
{
\@ifpackageloaded {#1}
{ \@@_package_loaded_warning:nn {#1} }
- { \ctex_gadd_package_hook:nnn { begin } {#1} }
+ { \ctex_gadd_package_hook:nnn { before } {#1} }
}
\cs_new_protected:Npn \@@_package_loaded_warning:nn #1#2
{ \msg_warning:nnx { ctex } { invalid-hook } {#1} }
@@ -11446,17 +11412,55 @@ Copyright and Licence
% \begin{macro}[int]{\ctex_at_end_package:nn}
% 与 \pkg{filehook} 的 \tn{AtEndOfPackageFile*} 类似,如果原来没有在载入宏包则
% 在宏包末尾执行语句,否则立即执行。
-% 在 \pkg{filehook} 的钩子\emph{之后}起作用。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_at_end_package:nn #1
{
\@ifpackageloaded {#1}
{ \use:n }
- { \ctex_gadd_package_hook:nnn { end } {#1} }
+ { \ctex_gadd_package_hook:nnn { after } {#1} }
}
% \end{macrocode}
% \end{macro}
%
+% \LaTeX \ 2020/10/01 开始提供常用钩子管理机制。在新机制下,我们只需要做简单的包装。
+% \begin{macrocode}
+\@ifl@t@r \fmtversion { 2020/10/01 }
+ {
+ \cs_new_protected:Npx \ctex_at_end_preamble:n
+ { \hook_gput_code:nnn { env/document/before } { \c_novalue_tl } }
+ \cs_new_protected:Npx \ctex_after_end_preamble:n
+ { \hook_gput_code:nnn { begindocument/end } { \c_novalue_tl } }
+ \cs_new_protected:Npx \ctex_gadd_package_hook:nnn #1#2
+ { \hook_gput_code:nnn { package/#1/#2 } { \c_novalue_tl } }
+ \file_input_stop:
+ }
+ { }
+% \end{macrocode}
+%
+% 对于 \LaTeX \ 2020/10/01 之前的版本,需要自行补丁。
+%
+% \begin{macro}[int]{\ctex_at_end_preamble:n,\ctex_after_end_preamble:n}
+% 实现 \pkg{etoolbox} 宏包的 \tn{AtEndPreamble} 和 \tn{AfterEndPreamble}。
+% \begin{macrocode}
+\cs_new_protected:Npn \ctex_at_end_preamble:n
+ { \tl_gput_right:Nn \g_@@_end_preamble_hook_tl }
+\cs_new_protected:Npn \ctex_after_end_preamble:n
+ { \tl_gput_right:Nn \g_@@_after_end_preamble_hook_tl }
+\cs_new_protected:Npn \CTEX@document@left@hook
+ { \group_end: \g_@@_end_preamble_hook_tl \group_begin: }
+\cs_new_protected:Npn \CTEX@document@right@hook
+ { \scan_stop: \g_@@_after_end_preamble_hook_tl \tex_ignorespaces:D }
+\cs_set_nopar:Npx \document
+ {
+ \CTEX@document@left@hook
+ \exp_not:o { \document }
+ \CTEX@document@right@hook
+ }
+\tl_new:N \g_@@_end_preamble_hook_tl
+\tl_new:N \g_@@_after_end_preamble_hook_tl
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[int]{\ctex_gadd_package_hook:nnn,
% \ctex_gadd_hook:Nn, \ctex_gadd_hook:cn}
% 给钩子附加内容。
@@ -11494,7 +11498,7 @@ Copyright and Licence
\cs_new_protected:Npn \CTEX@reset@ptions@hook
{
\cs_if_eq:NNT \@currext \@pkgextension
- { \ctex_use_package_hook:nn { begin } { \@currname } }
+ { \ctex_use_package_hook:nn { before } { \@currname } }
}
% \end{macrocode}
% \end{macro}
@@ -11506,7 +11510,7 @@ Copyright and Licence
\cs_new_protected:Npn \CTEX@popfilename@hook
{
\cs_if_eq:NNT \@currext \@pkgextension
- { \ctex_use_package_hook:nn { end } { \@currname } }
+ { \ctex_use_package_hook:nn { after } { \@currname } }
}
% \end{macrocode}
% \end{macro}