diff options
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3text-purify.dtx')
-rw-r--r-- | macros/latex/contrib/l3kernel/l3text-purify.dtx | 797 |
1 files changed, 0 insertions, 797 deletions
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx deleted file mode 100644 index 8f92c1eae9..0000000000 --- a/macros/latex/contrib/l3kernel/l3text-purify.dtx +++ /dev/null @@ -1,797 +0,0 @@ -% \iffalse meta-comment -% -%% File: l3text-purify.dtx -% -% Copyright (C) 2020-2024 The LaTeX Project -% -% It may be distributed and/or modified under the conditions of the -% LaTeX Project Public License (LPPL), either version 1.3c of this -% license or (at your option) any later version. The latest version -% of this license is in the file -% -% https://www.latex-project.org/lppl.txt -% -% This file is part of the "l3kernel bundle" (The Work in LPPL) -% and all files in that bundle must be distributed together. -% -% ----------------------------------------------------------------------- -% -% The development version of the bundle can be found at -% -% https://github.com/latex3/latex3 -% -% for those people who are interested. -% -%<*driver> -\documentclass[full,kernel]{l3doc} -\begin{document} - \DocInput{\jobname.dtx} -\end{document} -%</driver> -% \fi -% -% \title{^^A -% The \pkg{l3text-purify} module\\ Text processing (purification)^^A -% } -% -% \author{^^A -% The \LaTeX{} Project\thanks -% {^^A -% E-mail: -% \href{mailto:latex-team@latex-project.org} -% {latex-team@latex-project.org}^^A -% }^^A -% } -% -% \date{Released 2024-03-14} -% -% \maketitle -% -% \begin{documentation} -% -% \end{documentation} -% -% \begin{implementation} -% -% \section{\pkg{l3text-purify} implementation} -% -% \begin{macrocode} -%<*package> -% \end{macrocode} -% -% \begin{macrocode} -%<@@=text> -% \end{macrocode} -% -% \subsection{Purifying text} -% -% \begin{macro}[EXP]{\@@_if_recursion_tail_stop:N} -% Functions to query recursion quarks. -% \begin{macrocode} -\__kernel_quark_new_test:N \@@_if_recursion_tail_stop:N -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\text_purify:n, \@@_purify:n} -% \begin{macro}[EXP]{\@@_purify_store:n} -% \begin{macro}[EXP]{\@@_purify_store:nw} -% \begin{macro}[EXP]{\@@_purify_end:w} -% \begin{macro}[EXP]{\@@_purify_loop:w} -% \begin{macro}[EXP]{\@@_purify_group:n} -% \begin{macro}[EXP]{\@@_purify_space:w} -% \begin{macro}[EXP]{\@@_purify_N_type:N, \@@_purify_N_type_aux:N} -% \begin{macro}[EXP]{\@@_purify_math_search:NNN} -% \begin{macro}[EXP]{\@@_purify_math_start:NNw} -% \begin{macro}[EXP]{\@@_purify_math_store:n} -% \begin{macro}[EXP]{\@@_purify_math_store:nw} -% \begin{macro}[EXP]{\@@_purify_math_end:w} -% \begin{macro}[EXP]{\@@_purify_math_loop:NNw} -% \begin{macro}[EXP]{\@@_purify_math_N_type:NNN} -% \begin{macro}[EXP]{\@@_purify_math_group:NNn} -% \begin{macro}[EXP]{\@@_purify_math_space:NNw} -% \begin{macro}[EXP]{\@@_purify_math_cmd:N} -% \begin{macro}[EXP]{\@@_purify_math_cmd:NN} -% \begin{macro}[EXP]{\@@_purify_math_cmd:Nn} -% \begin{macro}[EXP]{\@@_purify_replace:N} -% \begin{macro}[EXP]{\@@_purify_replace_auxi:n, \@@_purify_replace_auxii:n} -% \begin{macro}[EXP]{\@@_purify_expand:N, \@@_purify_protect:N, \@@_purify_encoding:N} -% \begin{macro}[EXP]{\@@_purify_encoding_escape:NN} -% As in the other parts of the module, we start off with a standard -% \enquote{action} loop, with expansion applied up-front. -% \begin{macrocode} -\cs_new:Npn \text_purify:n #1 - { - \__kernel_exp_not:w \exp_after:wN - { - \exp:w - \exp_args:Ne \@@_purify:n - { \text_expand:n {#1} } - } - } -\cs_new:Npn \@@_purify:n #1 - { - \group_align_safe_begin: - \@@_purify_loop:w #1 - \q_@@_recursion_tail \q_@@_recursion_stop - \@@_purify_result:n { } - } -% \end{macrocode} -% As for expansion, collect up the tokens for future use. -% \begin{macrocode} -\cs_new:Npn \@@_purify_store:n #1 - { \@@_purify_store:nw {#1} } -\cs_new:Npn \@@_purify_store:nw #1#2 \@@_purify_result:n #3 - { #2 \@@_purify_result:n { #3 #1 } } -\cs_new:Npn \@@_purify_end:w #1 \@@_purify_result:n #2 - { - \group_align_safe_end: - \exp_end: - #2 - } -% \end{macrocode} -% The main loop is a standard \enquote{tl action}. Unlike the expansion -% or case changing, here any groups have to be run inline. Most of the -% business end is as before in the \texttt{N}-type token processing. -% \begin{macrocode} -\cs_new:Npn \@@_purify_loop:w #1 \q_@@_recursion_stop - { - \tl_if_head_is_N_type:nTF {#1} - { \@@_purify_N_type:N } - { - \tl_if_head_is_group:nTF {#1} - { \@@_purify_group:n } - { \@@_purify_space:w } - } - #1 \q_@@_recursion_stop - } -\cs_new:Npn \@@_purify_group:n #1 { \@@_purify_loop:w #1 } -\exp_last_unbraced:NNo \cs_new:Npn \@@_purify_space:w \c_space_tl - { - \@@_purify_store:n { ~ } - \@@_purify_loop:w - } -% \end{macrocode} -% The first part of handling math mode is exactly the same as in the -% other functions: look for a start-of-math mode token and if found start -% a new loop tracking the closing token. -% \begin{macrocode} -\cs_new:Npn \@@_purify_N_type:N #1 - { - \@@_if_q_recursion_tail_stop_do:Nn #1 { \@@_purify_end:w } - \@@_purify_N_type_aux:N #1 - } -\cs_new:Npn \@@_purify_N_type_aux:N #1 - { - \exp_after:wN \@@_purify_math_search:NNN - \exp_after:wN #1 \l_text_math_delims_tl - \q_@@_recursion_tail ? - \q_@@_recursion_stop - } -\cs_new:Npn \@@_purify_math_search:NNN #1#2#3 - { - \@@_if_q_recursion_tail_stop_do:Nn #2 - { \@@_purify_math_cmd:N #1 } - \token_if_eq_meaning:NNTF #1 #2 - { - \@@_use_i_delimit_by_q_recursion_stop:nw - { \@@_purify_math_start:NNw #2 #3 } - } - { \@@_purify_math_search:NNN #1 } - } -\cs_new:Npn \@@_purify_math_start:NNw #1#2#3 \q_@@_recursion_stop - { - \@@_purify_math_loop:NNw #1#2#3 \q_@@_recursion_stop - \@@_purify_math_result:n { } - } -\cs_new:Npn \@@_purify_math_store:n #1 - { \@@_purify_math_store:nw {#1} } -\cs_new:Npn \@@_purify_math_store:nw #1#2 \@@_purify_math_result:n #3 - { #2 \@@_purify_math_result:n { #3 #1 } } -\cs_new:Npn \@@_purify_math_end:w #1 \@@_purify_math_result:n #2 - { - \@@_purify_store:n { $ #2 $ } - \@@_purify_loop:w #1 - } -\cs_new:Npn \@@_purify_math_stop:Nw #1 \@@_purify_math_result:n #2 - { - \@@_purify_store:n {#1#2} - \@@_purify_end:w - } -\cs_new:Npn \@@_purify_math_loop:NNw #1#2#3 \q_@@_recursion_stop - { - \tl_if_head_is_N_type:nTF {#3} - { \@@_purify_math_N_type:NNN } - { - \tl_if_head_is_group:nTF {#3} - { \@@_purify_math_group:NNn } - { \@@_purify_math_space:NNw } - } - #1#2#3 \q_@@_recursion_stop - } -\cs_new:Npn \@@_purify_math_N_type:NNN #1#2#3 - { - \@@_if_q_recursion_tail_stop_do:Nn #3 - { \@@_purify_math_stop:Nw #1 } - \token_if_eq_meaning:NNTF #3 #2 - { \@@_purify_math_end:w } - { - \@@_purify_math_store:n {#3} - \@@_purify_math_loop:NNw #1#2 - } - } -\cs_new:Npn \@@_purify_math_group:NNn #1#2#3 - { - \@@_purify_math_store:n { {#3} } - \@@_purify_math_loop:NNw #1#2 - } -\exp_after:wN \cs_new:Npn \exp_after:wN \@@_purify_math_space:NNw - \exp_after:wN # \exp_after:wN 1 - \exp_after:wN # \exp_after:wN 2 \c_space_tl - { - \@@_purify_math_store:n { ~ } - \@@_purify_math_loop:NNw #1#2 - } -% \end{macrocode} -% Then handle math mode as an argument: same outcomes, different input -% syntax. -% \begin{macrocode} -\cs_new:Npn \@@_purify_math_cmd:N #1 - { - \exp_after:wN \@@_purify_math_cmd:NN \exp_after:wN #1 - \l_text_math_arg_tl \q_@@_recursion_tail \q_@@_recursion_stop - } -\cs_new:Npn \@@_purify_math_cmd:NN #1#2 - { - \@@_if_q_recursion_tail_stop_do:Nn #2 - { \@@_purify_replace:N #1 } - \cs_if_eq:NNTF #2 #1 - { - \@@_use_i_delimit_by_q_recursion_stop:nw - { \@@_purify_math_cmd:n } - } - { \@@_purify_math_cmd:NN #1 } - } -\cs_new:Npn \@@_purify_math_cmd:n #1 - { \@@_purify_math_end:w \@@_purify_math_result:n {#1} } -% \end{macrocode} -% For \texttt{N}-type tokens, we first look for a string-context replacement -% before anything else: this can therefore cover anything. Assuming we don't -% find one, check to see if we can expand control sequences: if not, they have -% to be dropped. We also allow for \LaTeXe{} \tn{protect}: there's an -% assumption that we don't have |\protect { \oops }| or similar, but that's -% also in the expansion code and seems like a reasonable balance. -% \begin{macrocode} -\cs_new:Npn \@@_purify_replace:N #1 - { - \bool_lazy_and:nnTF - { \cs_if_exist_p:c { l_@@_purify_ \token_to_str:N #1 _tl } } - { - \bool_lazy_or_p:nn - { \token_if_cs_p:N #1 } - { \token_if_active_p:N #1 } - } - { - \exp_args:Nv \@@_purify_replace_auxi:n - { l_@@_purify_ \token_to_str:N #1 _tl } - } - { - \exp_args:Ne \@@_purify_replace_auxii:n - { \@@_token_to_explicit:N #1 } - } - } -\cs_new:Npn \@@_purify_replace_auxi:n #1 { \@@_purify_loop:w #1 } -\cs_new:Npn \@@_purify_replace_auxii:n #1 - { - \token_if_cs:NTF #1 - { \@@_purify_expand:N #1 } - { - \@@_purify_store:n {#1} - \@@_purify_loop:w - } - } -\cs_new:Npn \@@_purify_expand:N #1 - { - \str_if_eq:nnTF {#1} { \protect } - { \@@_purify_protect:N } - { \@@_purify_encoding:N #1 } - } -\cs_new:Npn \@@_purify_protect:N #1 - { - \@@_if_q_recursion_tail_stop_do:Nn #1 { \@@_purify_end:w } - \@@_purify_loop:w - } -% \end{macrocode} -% Handle encoding commands, as detailed for expansion. -% \begin{macrocode} -\cs_new:Npn \@@_purify_encoding:N #1 - { - \bool_lazy_or:nnTF - { \cs_if_eq_p:NN #1 \@current@cmd } - { \cs_if_eq_p:NN #1 \@changed@cmd } - { \@@_purify_encoding_escape:NN } - { - \@@_if_expandable:NTF #1 - { \exp_after:wN \@@_purify_loop:w #1 } - { \@@_purify_loop:w } - } - } -\cs_new:Npn \@@_purify_encoding_escape:NN #1#2 - { - \@@_purify_store:n {#1} - \@@_purify_loop:w - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro} -% { -% \text_declare_purify_equivalent:Nn, -% \text_declare_purify_equivalent:Ne -% } -% \begin{macrocode} -\cs_new_protected:Npn \text_declare_purify_equivalent:Nn #1#2 - { - \tl_clear_new:c { l_@@_purify_ \token_to_str:N #1 _tl } - \tl_set:cn { l_@@_purify_ \token_to_str:N #1 _tl } {#2} - } -\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Ne } -% \end{macrocode} -% \end{macro} -% -% Now pre-define a range of standard commands that need dedicated definitions -% in purified text. First handle font-related stuff: all of this needs to be -% disabled. -% \begin{macrocode} -\tl_map_inline:nn - { - \fontencoding - \fontfamily - \fontseries - \fontshape - } - { \text_declare_purify_equivalent:Nn #1 { \use_none:n } } -\text_declare_purify_equivalent:Nn \fontsize { \use_none:nn } -\text_declare_purify_equivalent:Nn \selectfont { } -\text_declare_purify_equivalent:Nn \usefont { \use_none:nnnn } -\tl_map_inline:nn - { - \emph - \text - \textnormal - \textrm - \textsf - \texttt - \textbf - \textmd - \textit - \textsl - \textup - \textsc - \textulc - } - { \text_declare_purify_equivalent:Nn #1 { \use:n } } -\tl_map_inline:nn - { - \normalfont - \rmfamily - \sffamily - \ttfamily - \bfseries - \mdseries - \itshape - \scshape - \slshape - \upshape - \em - \Huge - \LARGE - \Large - \footnotesize - \huge - \large - \normalsize - \scriptsize - \small - \tiny - } - { \text_declare_purify_equivalent:Nn #1 { } } -\exp_args:Nc \text_declare_purify_equivalent:Nn - { @protected@testopt } { \use_none:nnn } -% \end{macrocode} -% Environments have to be handled by pure expansion. -% -% \begin{macro}{\@@_end_env:n} -% \begin{macrocode} -\text_declare_purify_equivalent:Nn \begin { \use:c } -\text_declare_purify_equivalent:Nn \end { \@@_end_env:n } -\cs_new:Npn \@@_end_env:n #1 { \cs:w end #1 \cs_end: } -% \end{macrocode} -% \end{macro} -% -% Some common symbols and similar ideas. -% \begin{macrocode} -\text_declare_purify_equivalent:Nn \\ { } -\tl_map_inline:nn - { \{ \} \# \$ \% \_ } - { \text_declare_purify_equivalent:Ne #1 { \cs_to_str:N #1 } } -% \end{macrocode} -% Cross-referencing. -% \begin{macrocode} -\text_declare_purify_equivalent:Nn \label { \use_none:n } -% \end{macrocode} -% Spaces. -% \begin{macrocode} -\group_begin: -\char_set_catcode_active:N \~ -\use:n - { - \group_end: - \text_declare_purify_equivalent:Ne ~ { \c_space_tl } - } -\text_declare_purify_equivalent:Nn \nobreakspace { ~ } -\text_declare_purify_equivalent:Nn \ { ~ } -\text_declare_purify_equivalent:Nn \, { ~ } -% \end{macrocode} -% -% \subsection{Accent and letter-like data for purifying text} -% -% In contrast to case changing, both $8$-bit and Unicode engines need -% information for text purification to handle accents and letter-like -% functions: these all need to be removed. However, the results are -% of course engine-dependent. -% -% For the letter-like commands, life is relatively easy: they are all -% simply added as standard exceptions. The only oddity is \tn{SS}, which -% gets converted to two letters. (At some stage an alternative version -% can presumably be added to \pkg{babel} or similar.) -% \begin{macrocode} -\cs_set_protected:Npn \@@_loop:Nn #1#2 - { - \quark_if_recursion_tail_stop:N #1 - \text_declare_purify_equivalent:Ne #1 - { - \codepoint_generate:nn {"#2} - { \char_value_catcode:n {"#2} } - } - \@@_loop:Nn - } -\@@_loop:Nn - \AA { 00C5 } - \AE { 00C6 } - \DH { 00D0 } - \DJ { 0110 } - \IJ { 0132 } - \L { 0141 } - \NG { 014A } - \O { 00D8 } - \OE { 0152 } - \TH { 00DE } - \aa { 00E5 } - \ae { 00E6 } - \dh { 00F0 } - \dj { 0111 } - \i { 0131 } - \j { 0237 } - \ij { 0132 } - \l { 0142 } - \ng { 014B } - \o { 00F8 } - \oe { 0153 } - \ss { 00DF } - \th { 00FE } - \q_recursion_tail ? - \q_recursion_stop -\text_declare_purify_equivalent:Nn \SS { SS } -% \end{macrocode} -% -% \begin{macro}[rEXP]{\@@_purify_accent:NN} -% Accent \textsc{licr} handling is a little more complex. Accents may exist -% as pre-composed codepoints or as independent glyphs. The former are all -% saved as single token lists, whilst for the latter the combining accent -% needs to be re-ordered compared to the character it applies to. -% \begin{macrocode} -\cs_new:Npn \@@_purify_accent:NN #1#2 - { - \cs_if_exist:cTF - { c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl } - { - \exp_not:v - { c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl } - } - { - \exp_not:n {#2} - \exp_not:v { c_@@_purify_ \token_to_str:N #1 _tl } - } - } -\tl_map_inline:nn { \` \' \^ \~ \= \u \. \" \r \H \v \d \c \k \b \t } - { \text_declare_purify_equivalent:Nn #1 { \@@_purify_accent:NN #1 } } -% \end{macrocode} -% First set up the combining accents. -% \begin{macrocode} -\group_begin: - \cs_set_protected:Npn \@@_loop:Nn #1#2 - { - \quark_if_recursion_tail_stop:N #1 - \tl_const:ce { c_@@_purify_ \token_to_str:N #1 _tl } - { \codepoint_generate:nn {"#2} { \char_value_catcode:n { "#2 } } } - \@@_loop:Nn - } - \@@_loop:Nn - \` { 0300 } - \' { 0301 } - \^ { 0302 } - \~ { 0303 } - \= { 0304 } - \u { 0306 } - \. { 0307 } - \" { 0308 } - \r { 030A } - \H { 030B } - \v { 030C } - \d { 0323 } - \c { 0327 } - \k { 0328 } - \b { 0331 } - \t { 0361 } - \q_recursion_tail { } - \q_recursion_stop -% \end{macrocode} -% Now we handle the pre-composed accents: the list here is taken from -% \texttt{puenc.def}. All of the precomposed cases take a single letter -% as their second argument. We do not try to cover the case where an accent -% is added to a \enquote{real} dotless-i or -j, or a \ae/\AE. Rather, we -% assume that if the \textsc{utf}-8 character is used, it will have the -% real accent character too. -% \begin{macrocode} - \cs_set_protected:Npn \@@_loop:NNn #1#2#3 - { - \quark_if_recursion_tail_stop:N #1 - \tl_const:ce - { c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl } - { \codepoint_generate:nn {"#3} { \char_value_catcode:n { "#3 } } } - \@@_loop:NNn - } - \@@_loop:NNn - \` A { 00C0 } - \' A { 00C1 } - \^ A { 00C2 } - \~ A { 00C3 } - \" A { 00C4 } - \r A { 00C5 } - \c C { 00C7 } - \` E { 00C8 } - \' E { 00C9 } - \^ E { 00CA } - \" E { 00CB } - \` I { 00CC } - \' I { 00CD } - \^ I { 00CE } - \" I { 00CF } - \~ N { 00D1 } - \` O { 00D2 } - \' O { 00D3 } - \^ O { 00D4 } - \~ O { 00D5 } - \" O { 00D6 } - \` U { 00D9 } - \' U { 00DA } - \^ U { 00DB } - \" U { 00DC } - \' Y { 00DD } - \` a { 00E0 } - \' a { 00E1 } - \^ a { 00E2 } - \~ a { 00E3 } - \" a { 00E4 } - \r a { 00E5 } - \c c { 00E7 } - \` e { 00E8 } - \' e { 00E9 } - \^ e { 00EA } - \" e { 00EB } - \` i { 00EC } - \` \i { 00EC } - \' i { 00ED } - \' \i { 00ED } - \^ i { 00EE } - \^ \i { 00EE } - \" i { 00EF } - \" \i { 00EF } - \~ n { 00F1 } - \` o { 00F2 } - \' o { 00F3 } - \^ o { 00F4 } - \~ o { 00F5 } - \" o { 00F6 } - \` u { 00F9 } - \' u { 00FA } - \^ u { 00FB } - \" u { 00FC } - \' y { 00FD } - \" y { 00FF } - \= A { 0100 } - \= a { 0101 } - \u A { 0102 } - \u a { 0103 } - \k A { 0104 } - \k a { 0105 } - \' C { 0106 } - \' c { 0107 } - \^ C { 0108 } - \^ c { 0109 } - \. C { 010A } - \. c { 010B } - \v C { 010C } - \v c { 010D } - \v D { 010E } - \v d { 010F } - \= E { 0112 } - \= e { 0113 } - \u E { 0114 } - \u e { 0115 } - \. E { 0116 } - \. e { 0117 } - \k E { 0118 } - \k e { 0119 } - \v E { 011A } - \v e { 011B } - \^ G { 011C } - \^ g { 011D } - \u G { 011E } - \u g { 011F } - \. G { 0120 } - \. g { 0121 } - \c G { 0122 } - \c g { 0123 } - \^ H { 0124 } - \^ h { 0125 } - \~ I { 0128 } - \~ i { 0129 } - \~ \i { 0129 } - \= I { 012A } - \= i { 012B } - \= \i { 012B } - \u I { 012C } - \u i { 012D } - \u \i { 012D } - \k I { 012E } - \k i { 012F } - \k \i { 012F } - \. I { 0130 } - \^ J { 0134 } - \^ j { 0135 } - \^ \j { 0135 } - \c K { 0136 } - \c k { 0137 } - \' L { 0139 } - \' l { 013A } - \c L { 013B } - \c l { 013C } - \v L { 013D } - \v l { 013E } - \. L { 013F } - \. l { 0140 } - \' N { 0143 } - \' n { 0144 } - \c N { 0145 } - \c n { 0146 } - \v N { 0147 } - \v n { 0148 } - \= O { 014C } - \= o { 014D } - \u O { 014E } - \u o { 014F } - \H O { 0150 } - \H o { 0151 } - \' R { 0154 } - \' r { 0155 } - \c R { 0156 } - \c r { 0157 } - \v R { 0158 } - \v r { 0159 } - \' S { 015A } - \' s { 015B } - \^ S { 015C } - \^ s { 015D } - \c S { 015E } - \c s { 015F } - \v S { 0160 } - \v s { 0161 } - \c T { 0162 } - \c t { 0163 } - \v T { 0164 } - \v t { 0165 } - \~ U { 0168 } - \~ u { 0169 } - \= U { 016A } - \= u { 016B } - \u U { 016C } - \u u { 016D } - \r U { 016E } - \r u { 016F } - \H U { 0170 } - \H u { 0171 } - \k U { 0172 } - \k u { 0173 } - \^ W { 0174 } - \^ w { 0175 } - \^ Y { 0176 } - \^ y { 0177 } - \" Y { 0178 } - \' Z { 0179 } - \' z { 017A } - \. Z { 017B } - \. z { 017C } - \v Z { 017D } - \v z { 017E } - \v A { 01CD } - \v a { 01CE } - \v I { 01CF } - \v \i { 01D0 } - \v i { 01D0 } - \v O { 01D1 } - \v o { 01D2 } - \v U { 01D3 } - \v u { 01D4 } - \v G { 01E6 } - \v g { 01E7 } - \v K { 01E8 } - \v k { 01E9 } - \k O { 01EA } - \k o { 01EB } - \v \j { 01F0 } - \v j { 01F0 } - \' G { 01F4 } - \' g { 01F5 } - \` N { 01F8 } - \` n { 01F9 } - \' \AE { 01FC } - \' \ae { 01FD } - \' \O { 01FE } - \' \o { 01FF } - \v H { 021E } - \v h { 021F } - \. A { 0226 } - \. a { 0227 } - \c E { 0228 } - \c e { 0229 } - \. O { 022E } - \. o { 022F } - \= Y { 0232 } - \= y { 0233 } - \q_recursion_tail ? { } - \q_recursion_stop -\group_end: -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -%</package> -% \end{macrocode} -% -% \end{implementation} -% -% \PrintIndex |