summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/ctex/engine/ctex-engine-pdftex.def
diff options
context:
space:
mode:
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.def162
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: ,