summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/xelatex/xecjk/example/xunicode-symbols.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/xelatex/xecjk/example/xunicode-symbols.tex')
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/example/xunicode-symbols.tex184
1 files changed, 184 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/example/xunicode-symbols.tex b/Master/texmf-dist/doc/xelatex/xecjk/example/xunicode-symbols.tex
new file mode 100644
index 00000000000..646b27f2489
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xecjk/example/xunicode-symbols.tex
@@ -0,0 +1,184 @@
+%%
+%% This is file `xunicode-symbols.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xeCJK.dtx (with options: `xunicode-symbols')
+%%
+\documentclass{article}
+\usepackage[margin=2cm]{geometry}
+\usepackage{fontspec}
+\usepackage{xunicode-addon}
+\usepackage{l3str}
+\usepackage{longtable,tabu,booktabs}
+\usepackage{zref-base}
+
+\setmainfont{FreeSerif}
+\newfontfamily\falllbackfont{Segoe UI Symbol}
+
+\makeatletter
+\ExplSyntaxOn
+\cs_new_protected_nopar:Npx \__xunsym_restore_catcode:
+ { \char_set_catcode:nn { \c_zero } { \char_value_catcode:n { \c_zero } } }
+\file_if_exist:nTF { xunicode-commands.tex }
+ { \char_set_catcode_comment:n { \c_zero } }
+ { \char_set_catcode_ignore:n { \c_zero } }
+^^@ \tl_new:N \l__xunsym_command_tl
+^^@ \int_new:N \l__xunsym_command_int
+^^@ \iow_new:N \g__xunsym_command_iow
+^^@ \iow_new:N \g__xunsym_combine_mark_iow
+^^@ \ior_new:N \g__xunsym_unicode_ior
+^^@ \prop_new:N \l__xunsym_command_prop
+^^@ \prop_new:N \l__xunsym_combine_mark_prop
+^^@ \prop_new:N \l__xunsym_combine_marks_prop
+^^@ \cs_new_protected_nopar:Npn \SaveUTFCommands
+^^@ {
+^^@ \group_begin:
+^^@ \__xunsym_restore_catcode:
+^^@ \cs_set_eq:NN \DeclareTextAccent \use_none:nnn
+^^@ \cs_set_eq:NN \DeclareUTFComposite \use_none:n
+^^@ \cs_set_eq:NN \DeclareUTFEncodedAccent \use_none:nnn
+^^@ \cs_set_eq:NN \DeclareUTFCommand \use_none:nn
+^^@ \cs_set_eq:NN \DeclareUTFCompositeCommand \use_none:nnn
+^^@ \cs_set_eq:NN \DeclareUTFSymbol \__xunsym_save_UTF_command:Nn
+^^@ \cs_set_eq:NN \DeclareUTFCompositeSymbol \__xunsym_save_UTF_command:Nnn
+^^@ \cs_set_eq:NN \DeclareEncodedCompositeCharacter \__xunsym_save_combine_mark:nnnn
+^^@ \cs_set_eq:NN \DeclareEncodedCompositeAccents \__xunsym_save_combine_marks:nnnn
+^^@ \DeclareDocumentCommand \DeclareUTFcharacter { O { \UTFencname } m m }
+^^@ { \__xunsym_save_UTF_command:NNn \l__xunsym_command_prop {##3} {##2} }
+^^@ \DeclareDocumentCommand \DeclareUTFcomposite { O { \UTFencname } m m m }
+^^@ { \__xunsym_save_UTF_command:NNnn \l__xunsym_command_prop {##3} {##4} {##2} }
+^^@ \ReloadXunicode { \UTFencname }
+^^@ \ior_open:NnTF \g__xunsym_unicode_ior { UnicodeData.txt }
+^^@ {
+^^@ \iow_open:Nn \g__xunsym_command_iow { xunicode-commands.tex }
+^^@ \iow_open:Nn \g__xunsym_combine_mark_iow { xunicode-combine-marks.tex }
+^^@ \ior_map_inline:Nn \g__xunsym_unicode_ior { \__xunsym_make_table:w ##1 \q_stop }
+^^@ \__xunsym_write_combine_marks:
+^^@ \ior_close:N \g__xunsym_unicode_ior
+^^@ \iow_close:N \g__xunsym_command_iow
+^^@ \iow_close:N \g__xunsym_combine_mark_iow
+^^@ \group_end:
+^^@ }
+^^@ {
+^^@ \group_end:
+^^@ \msg_fatal:nn { __xunsym } { UnicodeData }
+^^@ }
+^^@ }
+^^@ \msg_new:nnn { __xunsym } { UnicodeData }
+^^@ { File~`UnicodeData.txt`~not~found. }
+^^@ \cs_new_protected:Npn \__xunsym_save_UTF_command:Nn
+^^@ { \__xunsym_save_UTF_command:NNn \l__xunsym_command_prop }
+^^@ \cs_new_protected:Npn \__xunsym_save_UTF_command:Nnn
+^^@ { \__xunsym_save_UTF_command:NNnn \l__xunsym_command_prop }
+^^@ \cs_new_protected:Npn \__xunsym_save_UTF_command:NNn #1#2#3
+^^@ { \__xunsym_save_UTF_text_command:Nxx #1 { \use_none:n #3 } { \token_to_str:N #2 } }
+^^@ \cs_new_protected:Npn \__xunsym_save_UTF_command:NNnn #1#2#3#4
+^^@ {
+^^@ \__xunsym_save_UTF_text_command:Nxx #1 { \use_none:n #4 }
+^^@ {
+^^@ \token_to_str:N #2 \c_left_brace_str
+^^@ \tl_if_single:nTF {#3} { \token_to_str:N #3 } { \tl_to_str:n {#3} }
+^^@ \c_right_brace_str
+^^@ }
+^^@ }
+^^@ \cs_new_protected:Npn \__xunsym_save_combine_mark:nnnn #1#2#3#4
+^^@ { \__xunsym_save_UTF_text_command:Nxx \l__xunsym_combine_mark_prop {#3} { \token_to_str:N #2 } }
+^^@ \cs_new_protected:Npn \__xunsym_save_combine_marks:nnnn #1#2#3#4
+^^@ { \__xunsym_save_UTF_text_command:Nxx \l__xunsym_combine_marks_prop { { "#4 } { "#3 } } { \token_to_str:N #2 } }
+^^@ \cs_new_protected:Npn \__xunsym_save_UTF_text_command:Nxx #1#2#3
+^^@ { \use:x { \__xunsym_save_UTF_text_command:Nnn \exp_not:N #1 {#2} {#3} } }
+^^@ \cs_new_protected:Npn \__xunsym_save_UTF_text_command:Nnn #1#2#3
+^^@ {
+^^@ \prop_get:NnNTF #1 {#2} \l__xunsym_command_tl
+^^@ { \prop_put:Nno #1 {#2} { \l__xunsym_command_tl , #3 } }
+^^@ { \prop_put:Nnn #1 {#2} {#3} }
+^^@ }
+^^@ \cs_new_protected:Npn \__xunsym_make_table:w #1 ; #2 ; #3 \q_stop
+^^@ {
+^^@ \prop_get:NnNT \l__xunsym_command_prop {#1} \l__xunsym_command_tl
+^^@ {
+^^@ \iow_now:Nx \g__xunsym_command_iow
+^^@ { \token_to_str:N \UnicodeTextSymbol { "#1 } { \l__xunsym_command_tl } {#2} }
+^^@ }
+^^@ \prop_get:NnNT \l__xunsym_combine_mark_prop {#1} \l__xunsym_command_tl
+^^@ {
+^^@ \iow_now:Nx \g__xunsym_combine_mark_iow
+^^@ { \token_to_str:N \UnicodeCombineMark { "#1 } { \l__xunsym_command_tl } {#2} }
+^^@ }
+^^@ }
+^^@ \cs_new_protected:Npn \__xunsym_write_combine_marks:
+^^@ {
+^^@ \prop_map_inline:Nn \l__xunsym_combine_marks_prop
+^^@ {
+^^@ \iow_now:Nx \g__xunsym_combine_mark_iow
+^^@ { \token_to_str:N \UnicodeCombineMarks ##1 {##2} }
+^^@ }
+^^@ }
+^^@ \ExplSyntaxOff
+^^@ \SaveUTFCommands
+^^@ \ExplSyntaxOn
+\__xunsym_restore_catcode:
+\int_new:N \g__xunsym_symbol_int
+\int_new:N \g__xunsym_table_int
+\DeclareDocumentCommand \UnicodeTextSymbol { m v m }
+ {
+ \int_gincr:N \g__xunsym_symbol_int
+ \use_none:n #1 &
+ \scan_align_safe_stop:
+ \reverse_if:N \etex_iffontchar:D \tex_font:D #1 \exp_stop_f: \falllbackfont \fi:
+ \tex_char:D #1 \exp_stop_f: &
+ \tl_set:Nn \l_tmpa_clist {#2}
+ \clist_use:Nnnn \l_tmpa_clist
+ { \par } { \par } { \par }
+ \strut
+ & #3 \\
+ }
+\cs_set_eq:NN \UnicodeCombineMark \UnicodeTextSymbol
+\DeclareDocumentCommand \UnicodeCombineMarks { m m v }
+ {
+ \int_gincr:N \g__xunsym_symbol_int
+ \use_none:n #1 ~ \use_none:n #2 &
+ \tex_char:D #1 \exp_stop_f: \tex_char:D #2 \exp_stop_f: &
+ \tl_set:Nn \l_tmpa_clist {#3}
+ \clist_use:Nnnn \l_tmpa_clist
+ { \par } { \par } { \par }
+ \strut \\
+ }
+\DeclareDocumentCommand \UTFTABLE { m m }
+ {
+ \int_gincr:N \g__xunsym_table_int
+ \exp_args:Nx \__xunsym_make_table:nnn { UTFTABLE - \int_use:N \g__xunsym_table_int } {#1} {#2}
+ }
+\cs_new_protected_nopar:Npn \__xunsym_make_table:nnn #1#2#3
+ {
+ \section{#2~(\zref@extractdefault{#1}{default}{0})}
+ \zref@refused{#1}
+ \noindent
+ \begin{longtabu} to \linewidth {>{\ttfamily\footnotesize}rc>{\ttfamily\footnotesize}X>{\tiny}X}
+ \toprule\rowfont{\normalfont\normalsize}
+ \multicolumn1c{USV} & Symbol & Macro(s) & Description \\
+ \midrule \endhead
+ \bottomrule \endfoot
+ \int_gzero:N \g__xunsym_symbol_int
+ \input{#3}
+ \end{longtabu}
+ \group_begin:
+ \zref@setcurrent{default}{\int_use:N\g__xunsym_symbol_int}
+ \zref@wrapper@immediate{\zref@labelbyprops{#1}{default}}
+ \group_end:
+ }
+\cs_generate_variant:Nn \__xunsym_make_table:nnn { x }
+\ExplSyntaxOff
+
+\begin{document}
+
+\UTFTABLE{Symbols}{xunicode-commands.tex}
+
+\UTFTABLE{Combining Marks}{xunicode-combine-marks.tex}
+
+\end{document}
+%%
+%%
+%% End of file `xunicode-symbols.tex'.