diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-pdftex.def')
-rw-r--r-- | Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-pdftex.def | 162 |
1 files changed, 98 insertions, 64 deletions
diff --git a/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-pdftex.def b/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-pdftex.def index bd049cb81ec..3f197ac4d8d 100644 --- a/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-pdftex.def +++ b/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-pdftex.def @@ -24,23 +24,29 @@ %% %% --------------------------------------------------------------------- %% -\GetIdInfo$Id: ctex.dtx 07425fe 2021-03-14 16:43:36 +0800 Xiangdong Zeng <xdzeng96@gmail.com> $ +\GetIdInfo$Id: ctex.dtx 6604451 2021-06-20 17:08:49 +0800 Qing Lee <sobenlee@gmail.com> $ {(pdf)LaTeX adapter (CTEX)} \ProvidesExplFile{ctex-engine-pdftex.def} - {\ExplFileDate}{2.5.6}{\ExplFileDescription} + {\ExplFileDate}{2.5.7}{\ExplFileDescription} \cs_new_protected:Npn \ctex_set_zhmap:n { \tl_gput_right:Nx \g__ctex_zhmap_tl } \cs_new_protected:Npn \ctex_use_zhmap: { \tl_use:N \g__ctex_zhmap_tl } \cs_if_exist:NTF \ctex_gadd_ltxhook:nn - { \ctex_gadd_ltxhook:nn { shipout/firstpage } { \ctex_use_zhmap: } } + { + \cs_new_protected:Npn \ctex_at_shipout_first:n + { \ctex_gadd_ltxhook:nn { shipout/firstpage } } + \ctex_at_shipout_first:n { \ctex_use_zhmap: } + } { \cs_new_protected:Npn \ctex_add_dvi_zhmap: { \AtBeginDvi { \ctex_use_zhmap: } } \ctex_after_end_preamble:n { \ctex_add_dvi_zhmap: } \ctex_at_end_package:nn { atbegshi } { - \AtBeginShipoutFirst { \ctex_use_zhmap: } + \cs_new_protected:Npn \ctex_at_shipout_first:n + { \AtBeginShipoutFirst } + \ctex_at_shipout_first:n { \ctex_use_zhmap: } \cs_gset_eq:NN \ctex_add_dvi_zhmap: \prg_do_nothing: } } @@ -61,24 +67,31 @@ \cs_new_protected:Npn \ctex_add_cmap:n #1 { \cs_if_free:NF \CJK@plane - { \ctex_add_cmap:cn { __ctex_add_cmap_ #1 \CJK@plane : } {#1} } + { \exp_args:Ne \__ctex_add_cmap_auxi:n { #1 \CJK@plane } } } -\cs_new_protected:Npn \ctex_add_cmap:Nn #1#2 +\cs_new_protected:Npn \__ctex_add_cmap_auxi:n #1 + { \exp_args:Nc \__ctex_add_cmap_auxii:Nn { __ctex_add_cmap_ #1 : } {#1} } +\cs_new_protected:Npn \__ctex_add_cmap_auxii:Nn #1#2 { \cs_if_exist:NF #1 { \__ctex_save_cmap:Nn #1 {#2} } #1 } -\cs_generate_variant:Nn \ctex_add_cmap:Nn { c } \cs_new_protected:Npn \__ctex_save_cmap:Nn #1#2 { - \tl_set:Nx \l__ctex_tmp_tl { \str_lowercase:n {#2} \CJK@plane } - \tex_immediate:D \tex_pdfobj:D stream ~ file { \l__ctex_tmp_tl .cmap } - \cs_new_protected:Npx #1 + \exp_args:Ne \file_get_full_name:nNTF + { \str_lowercase:n {#2} .cmap } \l__ctex_cmap_file_tl { - \exp_not:N \tex_pdffontattr:D \exp_not:N \tex_font:D - { /ToUnicode ~ \int_use:N \tex_pdflastobj:D \c_space_tl 0 ~ R } + \tex_immediate:D \tex_pdfobj:D stream ~ file { \l__ctex_cmap_file_tl } + \cs_new_protected:Npx #1 + { + \pdfnobuiltintounicode \tex_font:D + \tex_pdffontattr:D \tex_font:D + { /ToUnicode ~ \int_value:w \tex_pdflastobj:D \c_space_tl 0 ~ R } + } } + { \cs_new_eq:NN #1 \prg_do_nothing: } } +\tl_new:N \l__ctex_cmap_file_tl \group_begin: \char_set_catcode_other:N \# \sys_if_output_pdf:TF @@ -88,7 +101,10 @@ { \CTEX@Family@CMap {#1} {#2} } { \ctex_at_end_package:nn { cmap } - { \cs_gset_eq:NN \CTEX@Family@CMap \use_none:nn } + { + \cs_gset_eq:NN \ctex_add_cmap:n \use_none:n + \cs_gset_eq:NN \CTEX@Family@CMap \use_none:nn + } } { \ctex_patch_failure:N \DeclareFontFamily } } @@ -118,27 +134,36 @@ \ctex_pop_file: } \cs_set_eq:NN \CJK@input \ctex_CJK_input:n -\if_cs_exist:N \CJK@surr - \cs_new_protected:Npn \ctex_plane_to_utfxvibe:Nn #1#2 - { - \tl_set:Nx \l__ctex_tmp_tl {#2} - \int_set:Nn \l__ctex_tmp_int - { \exp_args:No \int_from_hex:n { \l__ctex_tmp_tl } } - \int_compare:nNnTF \l__ctex_tmp_int < { 256 } - { \tl_gset:Nx #1 { \int_to_Hex:n { \l__ctex_tmp_int } } } - { - \int_sub:Nn \l__ctex_tmp_int { 256 } - \tl_gset:Nx #1 - { - \int_to_Hex:n - { \int_div_truncate:nn { \l__ctex_tmp_int } { 4 } + "D800 } - \int_to_Hex:n - { \int_mod:nn { \l__ctex_tmp_int } { 4 } + "DC } - } - } - } - \cs_set_eq:NN \CJK@surr \ctex_plane_to_utfxvibe:Nn -\fi: +\cs_if_free:NF \CJK@surr + { + \cs_new_protected:Npn \ctex_plane_to_utfxvibe:Nn #1#2 + { + \int_set:Nn \l__ctex_tmp_int + { \exp_args:Ne \int_from_hex:n {#2} } + \int_compare:nNnTF \l__ctex_tmp_int < { 256 } + { \tl_gset:Nx #1 { \int_to_Hex:n { \l__ctex_tmp_int } } } + { + \int_sub:Nn \l__ctex_tmp_int { 256 } + \tl_gset:Nx #1 + { + \int_to_Hex:n + { \int_div_truncate:nn { \l__ctex_tmp_int } { 4 } + "D800 } + \int_to_Hex:n + { \int_mod:nn { \l__ctex_tmp_int } { 4 } + "DC } + } + } + } + \cs_set_eq:NN \CJK@surr \ctex_plane_to_utfxvibe:Nn + } +\cs_if_free:NF \CJK@addcmap + { + \ctex_patch_cmd:Nnn \CJK@addcmap + { \pdffontattr \font@name } + { + \pdfnobuiltintounicode \font@name + \pdffontattr \font@name + } + } \AtBeginDocument { \str_if_eq:eeF { \l__ctex_punct_tl } { quanjiao } @@ -294,11 +319,12 @@ \sys_if_output_pdf:TF { \ctex_at_end_package:nn { hyperref } { \RequirePackage { xCJK2uni } } } { + \ctex_hypersetup:n { pdfencoding = pdfdoc } \ctex_at_end_package:nn { hyperref } { \str_if_eq:onTF { \Hy@driver } { hdvipdfm } { - \AtBeginShipoutFirst + \ctex_at_shipout_first:n { \special { pdf:tounicode~GBK-EUC-UCS2 } } } { \RequirePackage { xCJK2uni } } @@ -341,36 +367,44 @@ { \exp_not:o { \CTEX@selectfont@hook #1 } } } \cs_new_eq:NN \CTEX@selectfont@hook \prg_do_nothing: -\if_cs_exist:N \@EverySelectfont@Init - \group_begin: - \cs_set:Npn \__ctex_tmp:N #1 - { - \tl_set:Nn \l__ctex_tmp_tl {#1} - \cs_new_eq:NN \CTEX@selectfont@save #1 - \cs_new_protected:Npn \__ctex_restore_selectfont: - { - \cs_if_free:NF \scr@new@selectfont - { - \cs_if_free:NF \par@update - { \tl_put_right:Nn #1 { \par@update } } - \cs_set_eq:NN \scr@selectfont \CTEX@selectfont@save - \cs_set_eq:NN \scr@new@selectfont #1 - } - \tl_put_left:Nn \@EverySelectfont@Init - { \cs_set_eq:NN #1 \CTEX@selectfont@save } - \cs_undefine:N \__ctex_restore_selectfont: - } - } - \ctex_parse_name:NN \__ctex_tmp:N \selectfont - \exp_last_unbraced:NNo \group_end: - \ctex_patch_cmd_once:NnnnTF { \l__ctex_tmp_tl } - { \ExplSyntaxOff } - { \size@update } - { \CTEX@selectfont@hook \size@update } - { \__ctex_restore_selectfont: } - { \ctex_patch_failure:N \selectfont } +\if_bool:N \c__ctex_everysel_loaded_bool + \if_cs_exist:N \@EverySelectfont@Init + \group_begin: + \cs_set:Npn \__ctex_tmp:N #1 + { + \tl_set:Nn \l__ctex_tmp_tl {#1} + \cs_new_eq:NN \CTEX@selectfont@save #1 + \cs_new_protected:Npn \__ctex_restore_selectfont: + { + \cs_if_free:NF \scr@new@selectfont + { + \cs_if_free:NF \par@update + { \tl_put_right:Nn #1 { \par@update } } + \cs_set_eq:NN \scr@selectfont \CTEX@selectfont@save + \cs_set_eq:NN \scr@new@selectfont #1 + } + \tl_put_left:Nn \@EverySelectfont@Init + { \cs_set_eq:NN #1 \CTEX@selectfont@save } + \cs_undefine:N \__ctex_restore_selectfont: + } + } + \ctex_parse_name:NN \__ctex_tmp:N \selectfont + \exp_last_unbraced:NNo \group_end: + \ctex_patch_cmd_once:NnnnTF { \l__ctex_tmp_tl } + { \ExplSyntaxOff } + { \size@update } + { \CTEX@selectfont@hook \size@update } + { \__ctex_restore_selectfont: } + { \ctex_patch_failure:N \selectfont } + \fi: + \cs_new_protected:Npn \ctex_gadd_selectfont_hook:n + { \EverySelectfont } +\else: + \cs_new_protected:Npn \ctex_gadd_selectfont_hook:n + { \ctex_gadd_ltxhook:nn { selectfont } } \fi: -\EverySelectfont { \cs_if_exist:NF \CJK@plane { \CTEX@selectfont@hook } } +\ctex_gadd_selectfont_hook:n + { \cs_if_exist:NF \CJK@plane { \CTEX@selectfont@hook } } \ctex_define:n { space .choice: , |