summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/hanzibox
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-09-30 20:13:28 +0000
committerKarl Berry <karl@freefriends.org>2021-09-30 20:13:28 +0000
commit7922f119be5a0399890a6a2cb688574cc119f78e (patch)
treecee84901daa37f895eb1d15c83bf6f60360d8aa0 /Master/texmf-dist/tex/xelatex/hanzibox
parentc6d4778f317f035f213344e49aa5afb18d2e2a81 (diff)
hanzibox (30sep21)
git-svn-id: svn://tug.org/texlive/trunk@60661 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/hanzibox')
-rw-r--r--Master/texmf-dist/tex/xelatex/hanzibox/hanzibox.sty450
1 files changed, 306 insertions, 144 deletions
diff --git a/Master/texmf-dist/tex/xelatex/hanzibox/hanzibox.sty b/Master/texmf-dist/tex/xelatex/hanzibox/hanzibox.sty
index c45171e06c4..e86b73715aa 100644
--- a/Master/texmf-dist/tex/xelatex/hanzibox/hanzibox.sty
+++ b/Master/texmf-dist/tex/xelatex/hanzibox/hanzibox.sty
@@ -27,7 +27,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{expl3}
-\GetIdInfo$Id: hanzibox.dtx 2.0.0 2021-09-28 08:00:00 +0800 Nan Geng <nangeng@nwafu.edu.cn> $
+\GetIdInfo$Id: hanzibox.dtx 2.1.0 2021-09-30 08:00:00 +0800 Nan Geng <nangeng@nwafu.edu.cn> $
{Boxed Chinese characters with Pinyin above and translation below.}
\ProvidesExplPackage{\ExplFileName}
{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -54,7 +54,7 @@
{
\bool_set_false:N \l__hanzibox_autopinyin_bool
}{
- \bool_set_true:N \l__hanzibox_autopinyin_bool
+ \bool_set_true:N \l__hanzibox_autopinyin_bool
}
\group_begin:
\__hanzibox_handle:nnnn { #2 } { #3 } { #4 } { #5 }
@@ -70,7 +70,7 @@
}
\bool_new:N \l__hanzibox_autopinyin_bool
-\bool_new:N \l__hanzibox_withinitials_bool
+\bool_new:N \l__hanzibox_withinitial_bool
\bool_new:N \l__hanzibox_withvowel_bool
\bool_new:N \l__hanzibox_withtone_bool
\bool_new:N \l__hanzibox_withpinyin_bool
@@ -89,6 +89,8 @@
\dim_new:N \l__hanzibox_box_height_dim
\dim_new:N \l__hanzibox_linewidth_dim
+\clist_new:N \l__hanzibox_tone_pinyin_clist
+
\coffin_new:N \l__hanzibox_str_box_coffin
\coffin_new:N \l__hanzibox_box_coffin
\coffin_new:N \l__hanzibox_pinyin_box_coffin
@@ -98,11 +100,6 @@
\dim_new:N \hanziboxwidth
\dim_new:N \hanziboxheight
-\dim_new:N \hanziboxboxwd
-\dim_new:N \hanziboxboxht
-\dim_new:N \hanziboxboxdp
-\tl_new:N \hanziboxxscaleratio
-\tl_new:N \hanziboxyscaleratio
\tl_new:N \l__hanzibox_pinyin_tl
\tl_new:N \l__hanzibox_character_tl
@@ -448,7 +445,7 @@
autopinyin .default:n = true,
autopinyin .initial:n = true,
- initial .bool_set:N = \l__hanzibox_withinitials_bool,
+ initial .bool_set:N = \l__hanzibox_withinitial_bool,
initial .default:n = true,
initial .initial:n = true,
@@ -532,14 +529,239 @@
{ l } { b } { 0pt } { 0pt }
\group_end:
}
+\cs_new:Npn \__hanzibox_multi_str_coffin_construct:
+ {
+ \bool_if:NTF \l__hanzibox_autopinyin_bool
+ {
+ \hcoffin_set:Nn \l__hanzibox_str_box_coffin
+ {
+ \tl_map_inline:Nn \l__hanzibox_character_tl
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \__hanzibox_single_handle:N ##1
+ }
+
+ \bool_if:NT \l__hanzibox_withpinyin_bool
+ {
+ \__hanzibox_get_hanzi_pinyin:n { ##1 }
+ \__hanzibox_single_pinyin:V \l__hanzibox_hanzi_pinyin_tl
+
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
+ { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+ }
+ }
+ {
+ \__hanzibox_get_tone_pinyin:V \l__hanzibox_pinyin_tl
+ \clist_clear:N \l__hanzibox_tone_pinyin_clist
+ \clist_set:NV \l__hanzibox_tone_pinyin_clist \l__hanzibox_tone_pinyin_tl
+ \int_set:Nn \l_tmpa_int {\clist_count:N \l__hanzibox_tone_pinyin_clist}
+ \hcoffin_set:Nn \l__hanzibox_str_box_coffin
+ {
+ \int_compare:nNnTF { \l__hanzibox_character_int } = { \l_tmpa_int }
+ {
+ \tl_map_inline:Nn \l__hanzibox_character_tl
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \__hanzibox_single_handle:N ##1
+ }
+
+ \bool_if:NT \l__hanzibox_withpinyin_bool
+ {
+ \clist_pop:NN \l__hanzibox_tone_pinyin_clist \l_tmpb_tl
+ \__hanzibox_single_pinyin:V \l_tmpb_tl
+
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
+ { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+ }
+ {
+ \int_compare:nNnTF { \l__hanzibox_character_int } > { \l_tmpa_int }
+ {
+ \int_step_inline:nn { \l_tmpa_int }
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l__hanzibox_character_tl { ##1 }}
+ \__hanzibox_single_handle:N \l_tmpa_tl
+ }
+ \bool_if:NT \l__hanzibox_withpinyin_bool
+ {
+ \clist_pop:NN \l__hanzibox_tone_pinyin_clist \l_tmpb_tl
+ \__hanzibox_single_pinyin:V \l_tmpb_tl
+
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
+ { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+ \int_step_inline:nnn { \l_tmpa_int + 1 } { \l__hanzibox_character_int }
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l__hanzibox_character_tl { ##1 }}
+ \__hanzibox_single_handle:N \l_tmpa_tl
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+ }
+ {
+ \int_step_inline:nn { \l__hanzibox_character_int }
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l__hanzibox_character_tl { ##1 }}
+ \__hanzibox_single_handle:N \l_tmpa_tl
+ }
+ \bool_if:NT \l__hanzibox_withpinyin_bool
+ {
+ \clist_pop:NN \l__hanzibox_tone_pinyin_clist \l_tmpb_tl
+ \__hanzibox_single_pinyin:V \l_tmpb_tl
+
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
+ { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+
+ \bool_if:NTF \l__hanzibox_withhanzi_bool
+ {
+ \bool_set_false:N \l__hanzibox_withhanzi_bool
+ \int_step_inline:nnn { \l__hanzibox_character_int + 1 } { \l_tmpa_int }
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \__hanzibox_single_handle:N \c__hanzibox_basechar_tl
+ }
+ \bool_if:NT \l__hanzibox_withpinyin_bool
+ {
+ \clist_pop:NN \l__hanzibox_tone_pinyin_clist \l_tmpb_tl
+ \__hanzibox_single_pinyin:V \l_tmpb_tl
+
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
+ { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+ \bool_set_true:N \l__hanzibox_withhanzi_bool
+ }
+ {
+ \int_step_inline:nnn { \l__hanzibox_character_int + 1 } { \l_tmpa_int }
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \__hanzibox_single_handle:N \c__hanzibox_basechar_tl
+ }
+ \bool_if:NT \l__hanzibox_withpinyin_bool
+ {
+ \clist_pop:NN \l__hanzibox_tone_pinyin_clist \l_tmpb_tl
+ \__hanzibox_single_pinyin:V \l_tmpb_tl
+
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
+ { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+\cs_new:Npn \__hanzibox_single_str_coffin_construct:
+ {
+ \bool_if:NTF \l__hanzibox_autopinyin_bool
+ {
+ \__hanzibox_multi_str_coffin_construct:
+ }
+ {
+ \hcoffin_set:Nn \l__hanzibox_str_box_coffin
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \__hanzibox_single_handle:N \l__hanzibox_character_tl
+ }
+
+ \bool_if:NT \l__hanzibox_withpinyin_bool
+ {
+ \hcoffin_set:Nn \l__hanzibox_pinyin_box_coffin
+ {
+ \color_select:n { hanziboxcharcolor }
+ \tl_use:N \l__hanzibox_pinyin_format_tl
+ \__hanzibox_get_tone_pinyin:V \l__hanzibox_pinyin_tl
+ \clist_clear:N \l__hanzibox_tone_pinyin_clist
+ \clist_set:NV \l__hanzibox_tone_pinyin_clist \l__hanzibox_tone_pinyin_tl
+ \clist_use:Nn \l__hanzibox_tone_pinyin_clist {}
+ }
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
+ { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+ }
+ }
+\cs_new:Npn \__hanzibox_null_str_coffin_construct:
+ {
+ \hcoffin_set:Nn \l__hanzibox_str_box_coffin
+ {
+ \bool_set_false:N \l__hanzibox_withhanzi_bool
+
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \__hanzibox_single_handle:N \c__hanzibox_basechar_tl
+ }
+
+ \bool_if:NT \l__hanzibox_withpinyin_bool
+ {
+ \hcoffin_set:Nn \l__hanzibox_pinyin_box_coffin
+ {
+ \color_select:n { hanziboxcharcolor }
+ \tl_use:N \l__hanzibox_pinyin_format_tl
+ \__hanzibox_get_tone_pinyin:V \l__hanzibox_pinyin_tl
+ \clist_clear:N \l__hanzibox_tone_pinyin_clist
+ \clist_set:NV \l__hanzibox_tone_pinyin_clist \l__hanzibox_tone_pinyin_tl
+ \clist_use:Nn \l__hanzibox_tone_pinyin_clist {}
+ % \__hanzibox_get_tone_pinyin:V \l__hanzibox_pinyin_tl
+ % \l__hanzibox_tone_pinyin_tl
+ }
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
+ { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
+ }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin
+ { l } { b } { 0pt } { 0pt }
+ \allowbreak
+ }
+ }
\cs_new:Npn \__hanzibox_handle:nnnn #1#2#3#4
{
\group_begin:
\keys_set:nn { hanzibox } { #1 }
- \tl_set:Nx \l__hanzibox_character_tl {#2}
- \tl_set:Nx \l__hanzibox_pinyin_tl {#3}
- \tl_set:Nx \l__hanzibox_translation_tl {#4}
+ \tl_gset:Nx \l__hanzibox_character_tl {#2}
+ \tl_gset:Nx \l__hanzibox_pinyin_tl {#3}
+ \tl_gset:Nx \l__hanzibox_translation_tl {#4}
\int_set:Nn \l__hanzibox_character_int
{
@@ -554,138 +776,17 @@
\tl_count:V \l__hanzibox_pinyin_tl
}
- \bool_if:NTF \l__hanzibox_autopinyin_bool
+ \int_compare:nNnTF { \l__hanzibox_character_int } > { 1 }
{
- \int_compare:nNnTF { \l__hanzibox_character_int } > { 0 }
- {
- \hcoffin_set:Nn \l__hanzibox_str_box_coffin
- {
- \tl_map_inline:Nn \l__hanzibox_character_tl
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \__hanzibox_single_handle:N ##1
- }
-
- \bool_if:NT \l__hanzibox_withpinyin_bool
- {
- \tl_gset_eq:Nc \l__hanzibox_pinyin_tl
- {
- c__xpinyin_ \int_to_arabic:n { `##1 } _tl
- }
- \__hanzibox_single_pinyin:V \l__hanzibox_pinyin_tl
-
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- }
- }
- {
- \hcoffin_set:Nn \l__hanzibox_str_box_coffin
- {
- \bool_set_false:N \l__hanzibox_withhanzi_bool
- \tl_set:Nn \l__hanzibox_character_tl {好}
-
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \__hanzibox_single_handle:N \l__hanzibox_character_tl
- }
-
- \bool_if:NT \l__hanzibox_withpinyin_bool
- {
- \hcoffin_set:Nn \l__hanzibox_pinyin_box_coffin
- {
- \color_select:n { hanziboxcharcolor }
- \tl_use:N \l__hanzibox_pinyin_format_tl
- \__hanzibox_pinyinaux:x {\l__hanzibox_pinyin_tl}
- }
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- }
+ \__hanzibox_multi_str_coffin_construct:
}
{
- \int_compare:nNnTF { \l__hanzibox_character_int } > { 1 }
+ \int_compare:nNnTF { \l__hanzibox_character_int } = { 1 }
{
- \hcoffin_set:Nn \l__hanzibox_str_box_coffin
- {
- \tl_map_inline:Nn \l__hanzibox_character_tl
- {
- \__hanzibox_single_handle:N ##1 \allowbreak
- }
- }
- \bool_if:NT \l__hanzibox_withpinyin_bool
- {
- \hcoffin_set:Nn \l__hanzibox_pinyin_box_coffin
- {
- \color_select:n { hanziboxcharcolor }
- \__hanzibox_pinyinaux:x {\l__hanzibox_pinyin_tl}
- }
- }
- \coffin_join:NnnNnnnn \l__hanzibox_str_box_coffin
- { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 7pt }
+ \__hanzibox_single_str_coffin_construct:
}
{
- \int_compare:nNnTF { \l__hanzibox_character_int } = { 1 }
- {
- \hcoffin_set:Nn \l__hanzibox_str_box_coffin
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \__hanzibox_single_handle:N \l__hanzibox_character_tl
- }
-
- \bool_if:NT \l__hanzibox_withpinyin_bool
- {
- \hcoffin_set:Nn \l__hanzibox_pinyin_box_coffin
- {
- \color_select:n { hanziboxcharcolor }
- \tl_use:N \l__hanzibox_pinyin_format_tl
- \__hanzibox_pinyinaux:x {\l__hanzibox_pinyin_tl}
- }
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- }
- {
- \hcoffin_set:Nn \l__hanzibox_str_box_coffin
- {
- \bool_set_false:N \l__hanzibox_withhanzi_bool
- \tl_set:Nn \l__hanzibox_character_tl {好}
-
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \__hanzibox_single_handle:N \l__hanzibox_character_tl
- }
-
- \bool_if:NT \l__hanzibox_withpinyin_bool
- {
- \hcoffin_set:Nn \l__hanzibox_pinyin_box_coffin
- {
- \color_select:n { hanziboxcharcolor }
- \tl_use:N \l__hanzibox_pinyin_format_tl
- \__hanzibox_pinyinaux:x {\l__hanzibox_pinyin_tl}
- }
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l__hanzibox_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- }
+ \__hanzibox_null_str_coffin_construct:
}
}
\bool_if:NT \l__hanzibox_withtran_bool
@@ -712,7 +813,7 @@
{
\bool_if:NTF \l__hanzibox_withtone_bool
{
- \bool_if:nTF { !(\l__hanzibox_withinitials_bool) || !(\l__hanzibox_withvowel_bool) }
+ \bool_if:nTF { !(\l__hanzibox_withinitial_bool) || !(\l__hanzibox_withvowel_bool) }
{
\__hanzibox_split_pinyin_withtone:n { #1 }
\hcoffin_set:Nn \l__hanzibox_pinyin_box_coffin
@@ -720,7 +821,7 @@
\color_select:n { hanziboxcharcolor }
\tl_use:N \l__hanzibox_pinyin_format_tl
- \bool_if:NTF \l__hanzibox_withinitials_bool
+ \bool_if:NTF \l__hanzibox_withinitial_bool
{
\bool_if:NTF \l__hanzibox_withvowel_bool
{
@@ -824,13 +925,76 @@
\exp_after:wN \draw_path_corner_arc:nn \l__hanzibox_frame_arc_tl
\draw_path_scope_begin:
- \draw_transform_shift:n { -1.00pt, -1.50pt }
\__hanzibox_frame_type_c:n { \l__hanzibox_frame_type_tl }
{ 0 } { 0 } { \hanziboxwidth } { \hanziboxheight } { 1.0 } { 1.0 }
+ \draw_transform_shift:n {\hanziboxwidth / 2.0, \hanziboxheight / 2.0 }
+ \draw_coffin_use:Nnn \l__hanzibox_box_coffin { hc } { vc }
\draw_path_scope_end:
- \draw_coffin_use:Nnn \l__hanzibox_box_coffin { l } { b }
\draw_end:
}
+\tl_new:N \l__hanzibox_save_tl
+\tl_new:N \l__hanzibox_hanzi_pinyin_tl
+\tl_new:N \l__hanzibox_tone_pinyin_tl
+\clist_const:Nn \c__hanzibox_tone_a_clist { ā,á,ǎ,à,a }
+\clist_const:Nn \c__hanzibox_tone_o_clist { ō,ó,ǒ,ò,o }
+\clist_const:Nn \c__hanzibox_tone_e_clist { ē,é,ě,è,e }
+\clist_const:Nn \c__hanzibox_tone_u_clist { ū,ú,ǔ,ù,u }
+\clist_const:Nn \c__hanzibox_tone_i_clist { ī,í,ǐ,ì,i }
+\clist_const:Nn \c__hanzibox_tone_v_clist { ǖ,ǘ,ǚ,ǜ,ü }
+\cs_new_protected:Npn \__hanzibox_pinyin_aux:n #1
+ {
+ \quark_if_recursion_tail_stop_do:nn {#1}
+ {
+ \bool_if:NT \l__xpinyin_first_bool
+ { \tl_set:NV \l__hanzibox_tone_pinyin_tl \l__xpinyin_item_tl }
+ }
+ \__xpinyin_if_number:nTF {#1}
+ {
+ \bool_if:NT \l__xpinyin_first_bool
+ { \bool_set_false:N \l__xpinyin_first_bool }
+ \tl_put_right:NV \l__hanzibox_tone_pinyin_tl \l__xpinyin_pre_tl
+ \tl_put_right:Nx \l__hanzibox_tone_pinyin_tl
+ { \clist_item:cn { c__hanzibox_tone_ \l__xpinyin_tone_tl _clist } {#1} }
+ \tl_put_right:NV \l__hanzibox_tone_pinyin_tl \l__xpinyin_post_tl
+ \bool_if:NF \l__hanzibox_autopinyin_bool
+ {
+ \tl_put_right:Nn \l__hanzibox_tone_pinyin_tl {,}
+ }
+ \__xpinyin_pinyin_init:
+ }
+ {
+ \int_compare:nNnTF
+ { 0 \cs_if_exist_use:c { c__xpinyin_ \tl_to_str:N \l__xpinyin_tone_tl _tl } } >
+ { 0 \cs_if_exist_use:c { c__xpinyin_ \tl_to_str:n {#1} _tl } }
+ { \tl_put_right:Nn \l__xpinyin_post_tl {#1} }
+ {
+ \tl_set:Nn \l__xpinyin_tone_tl {#1}
+ \tl_set_eq:NN \l__xpinyin_pre_tl \l__xpinyin_item_tl
+ \tl_clear:N \l__xpinyin_post_tl
+ }
+ \tl_put_right:Nx \l__xpinyin_item_tl { \__xpinyin_replace_v:n {#1} }
+ }
+ \__hanzibox_pinyin_aux:n
+ }
+\cs_new:Npn \__hanzibox_get_tone_pinyin:n #1
+ {
+ \tl_clear:N \l__hanzibox_tone_pinyin_tl
+ \__xpinyin_pinyin_init:
+ \tl_set:Nn \l__hanzibox_save_tl {#1}
+ \bool_set_true:N \l__xpinyin_first_bool
+ \__hanzibox_pinyin_aux:n #1 \q_recursion_tail \q_recursion_stop
+ }
+\cs_generate_variant:Nn \__hanzibox_get_tone_pinyin:n { V }
+\cs_new:Npn \__hanzibox_get_hanzi_pinyin:n #1
+ {
+ \tl_set_eq:Nc \l_tmpa_tl { c__xpinyin_ \__xpinyin_char_to_unicode:n {#1} _tl }
+ \exp_args:No \tl_if_head_eq_meaning:nNTF { \l_tmpa_tl } \__xpinyin_pinyin:n
+ {
+ \exp_args:Nf \__hanzibox_get_tone_pinyin:n { \exp_after:wN \use_ii:nn \l_tmpa_tl }
+ \tl_set_eq:NN \l__hanzibox_hanzi_pinyin_tl \l__hanzibox_tone_pinyin_tl
+ }
+ { \tl_set_eq:NN \l__hanzibox_hanzi_pinyin_tl \l_tmpa_tl }
+ }
\clist_set:Nn \l__hanzibox_initials_clist
{
{zh} , {ch} , {sh} , {b} , {p} , {m} , {f} ,
@@ -945,7 +1109,6 @@
}
}
}
-\cs_generate_variant:Nn \__hanzibox_split_pinyin:n { V }
\cs_new_protected:Npn \__hanzibox_split_pinyin_withouttone:n #1
{
\int_zero:N \l__hanzibox_tone_int
@@ -984,7 +1147,6 @@
}
}
}
-\cs_generate_variant:Nn \__hanzibox_split_pinyin:n { V }
%%
%% This package consists of the file hanzibox.dtx,
%% and the derived files hanzibox.sty,