Skip to content

Commit

Permalink
ctex: 兼容 LaTeX 2020-02-02 之前的版本
Browse files Browse the repository at this point in the history
fixed #507
  • Loading branch information
qinglee committed May 6, 2020
1 parent d207c48 commit 6d4cb80
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 89 deletions.
203 changes: 116 additions & 87 deletions ctex/ctex.dtx
Original file line number Diff line number Diff line change
Expand Up @@ -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{6094}
%
% \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
Expand Down Expand Up @@ -4214,18 +4214,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:
Expand Down Expand Up @@ -5576,28 +5564,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} 确实存在。
Expand Down Expand Up @@ -6139,17 +6107,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}
Expand All @@ -6167,16 +6126,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| 命令的重定义,恢复
Expand Down Expand Up @@ -6295,7 +6244,87 @@ 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:NN,\CTEX@rmfamilyhook}
% 给 \tn{rmfamily} 等字体命令加钩子,钩子名字统一为 \tn{CTEX@rmfamilyhook} 等。
% \begin{macrocode}
\cs_new_protected:Npn \ctex_provide_font_hook:NN #1#2
{
\exp_args:Nc \@@_provide_font_hook_aux:NNN
{ CTEX \cs_to_str:N #2 } #1#2
}
\cs_new_protected:Npn \@@_provide_font_hook_aux:NNN #1#2#3
{
\tl_new:N #1
\cs_if_exist:NTF #3
{ \tl_gput_right:Nn #3 {#1} }
{
\ctex_patch_cmd:Nnn #2
{ \selectfont }
{ #1 \selectfont }
}
}
\ctex_provide_font_hook:NN \rmfamily \@rmfamilyhook
\ctex_provide_font_hook:NN \sffamily \@sffamilyhook
\ctex_provide_font_hook:NN \ttfamily \@ttfamilyhook
%<pdftex|luatex>\ctex_provide_font_hook:NN \normalfont \@defaultfamilyhook
% \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}。}
Expand All @@ -6304,7 +6333,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
Expand All @@ -6328,9 +6356,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}
Expand All @@ -6346,10 +6372,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}{操作系统检测移动至载入中文字库处,且不再需要
% 依赖特定引擎。}
Expand Down Expand Up @@ -6953,35 +6982,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}
Expand Down Expand Up @@ -9673,7 +9706,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
Expand All @@ -9685,7 +9718,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}
Expand Down Expand Up @@ -10454,11 +10487,7 @@ Copyright and Licence
\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
Expand Down
2 changes: 1 addition & 1 deletion ctex/test/testfiles/files01.uptex.tlg
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ ctexopts.cfg
article.cls
size10.clo
ctex-engine-uptex.def
pxeverysel.sty
jt2zhrm.fd
jy2zhrm.fd
pxeverysel.sty
zhnumber.sty
zhnumber-utf8.cfg
ctex-scheme-chinese-article.def
Expand Down
2 changes: 1 addition & 1 deletion ctex/test/testfiles/files02.uptex.tlg
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ ts1enc.def
everysel.sty
ctexopts.cfg
ctex-engine-uptex.def
pxeverysel.sty
jt2zhrm.fd
jy2zhrm.fd
pxeverysel.sty
zhnumber.sty
zhnumber-utf8.cfg
ctex-scheme-chinese.def
Expand Down

0 comments on commit 6d4cb80

Please sign in to comment.