diff options
author | Norbert Preining <norbert@preining.info> | 2022-06-09 03:01:00 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-06-09 03:01:00 +0000 |
commit | 16559ce13a74c7a182875559b379cac00b07efda (patch) | |
tree | 6ee63e6aadfabf9a7334e6667fa32646fd812667 /macros/latex/base/utf8ienc.dtx | |
parent | b3aac3ae7b628835121d1f485fd49998308170e7 (diff) |
CTAN sync 202206090300
Diffstat (limited to 'macros/latex/base/utf8ienc.dtx')
-rw-r--r-- | macros/latex/base/utf8ienc.dtx | 80 |
1 files changed, 57 insertions, 23 deletions
diff --git a/macros/latex/base/utf8ienc.dtx b/macros/latex/base/utf8ienc.dtx index 75990d1b03..363998a853 100644 --- a/macros/latex/base/utf8ienc.dtx +++ b/macros/latex/base/utf8ienc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2021 +% Copyright (C) 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -190,7 +190,7 @@ % information. % % -% \StopEventually{} +% \MaybeStop{} % % % @@ -216,7 +216,7 @@ %<+ts1> \ProvidesFile{ts1enc.dfu} %<+x2> \ProvidesFile{x2enc.dfu} %<+all> \ProvidesFile{utf8enc.dfu} -%<-utf8-2018> [2021/06/21 v1.2n UTF-8 support] +%<-utf8-2018> [2022/06/07 v1.3c UTF-8 support] % \end{macrocode} % % \begin{macrocode} @@ -363,11 +363,12 @@ % \begin{macro}{\UTFviii@two@octets@noexpand} % \begin{macro}{\UTFviii@three@octets@noexpand} % \begin{macro}{\UTFviii@four@octets@noexpand} +% \changes{v1.3a}{2022/02/19}{Use \cs{unexpanded} rather than \cs{noexpand} so only takes one expansion step}% % These temporarily prevent the active chars from expanding. % \begin{macrocode} -\long\def\UTF@two@octets@noexpand#1#2{\noexpand#2\noexpand} -\long\def\UTF@three@octets@noexpand#1#2#3{\noexpand#2\noexpand#3\noexpand} -\long\def\UTF@four@octets@noexpand#1#2#3#4{\noexpand#2\noexpand#3\noexpand#4\noexpand} +\long\def\UTF@two@octets@noexpand#1#2#3{\unexpanded{#2#3}} +\long\def\UTF@three@octets@noexpand#1#2#3#4{\unexpanded{#2#3#4}} +\long\def\UTF@four@octets@noexpand#1#2#3#4#5{\unexpanded{#2#3#4#5}} % \end{macrocode} % \end{macro} % \end{macro} @@ -376,11 +377,12 @@ % \begin{macro}{\UTFviii@two@octets@string} % \begin{macro}{\UTFviii@three@octets@string} % \begin{macro}{\UTFviii@four@octets@string} +% \changes{v1.3a}{2022/02/19}{Use \cs{detokenize} rather than \cs{string} so only takes one expansion step}% % And the same with \cs{string} for use in \cs{csname} constructions. % \begin{macrocode} -\long\def\UTF@two@octets@string#1#2{\string#2\string} -\long\def\UTF@three@octets@string#1#2#3{\string#2\string#3\string} -\long\def\UTF@four@octets@string#1#2#3#4{\string#2\string#3\string#4\string} +\long\def\UTF@two@octets@string#1#2#3{\detokenize{#2#3}} +\long\def\UTF@three@octets@string#1#2#3#4{\detokenize{#2#3#4}} +\long\def\UTF@four@octets@string#1#2#3#4#5{\detokenize{#2#3#4#5}} % \end{macrocode} % \end{macro} % \end{macro} @@ -542,15 +544,24 @@ % |\count@| and ending at |\@tempcnta|${} - 1$, each time executing % the code in |\UTFviii@tmp|. % -% All this is done in a group so that temporary catcode changes -% etc.~vanish after everything is set up. +% Store current settings so can restore after the loops without using a group (gh/762). +% +% \begin{macrocode} +\edef\reserved@a{% +\catcode`\noexpand\~=\the\catcode`\~\relax +\catcode`\noexpand\"=\the\catcode`\"\relax +\uccode`\noexpand\~=\the\uccode`\~\relax +\count@=\the\count@\relax +\@tempcnta=\the\@tempcnta\relax +\let\noexpand\reserved@a\relax} +% \end{macrocode} % % \begin{macrocode} -\begingroup \catcode`\~13 \catcode`\"12 % \end{macrocode} % +% \changes{v1.3a}{2022/02/19}{Use local protected definitions in the character definitions}% % \begin{macrocode} \def\UTFviii@loop{% \uccode`\~\count@ @@ -566,7 +577,7 @@ % C0 controls are valid UTF-8 but defined to give the ``Character not defined error'' % They may be defined with |\DeclareUnicodeCharacter|. % \begin{macrocode} - \def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@undefined@err{:\string~}}} + \def\UTFviii@tmp{\protected\edef~{\noexpand\UTFviii@undefined@err{:\string~}}} % 0 ^^@ null \count@"1 \@tempcnta9 @@ -588,7 +599,7 @@ % \begin{macrocode} \count@"80 \@tempcnta"C2 - \def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@invalid@err\string~}} + \def\UTFviii@tmp{\protected\edef~{\noexpand\UTFviii@invalid@err\string~}} \UTFviii@loop % \end{macrocode} % @@ -597,7 +608,7 @@ % \begin{macrocode} \count@"C2 \@tempcnta"E0 - \def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@two@octets\noexpand~}} + \def\UTFviii@tmp{\protected\edef~{\noexpand\UTFviii@two@octets\noexpand~}} \UTFviii@loop % \end{macrocode} % @@ -605,7 +616,7 @@ % \begin{macrocode} \count@"E0 \@tempcnta"F0 - \def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@three@octets\noexpand~}} + \def\UTFviii@tmp{\protected\edef~{\noexpand\UTFviii@three@octets\noexpand~}} \UTFviii@loop % \end{macrocode} % @@ -614,7 +625,7 @@ % \begin{macrocode} \count@"F0 \@tempcnta"F5 - \def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@four@octets\noexpand~}} + \def\UTFviii@tmp{\protected\edef~{\noexpand\UTFviii@four@octets\noexpand~}} \UTFviii@loop % \end{macrocode} % @@ -623,12 +634,13 @@ % \begin{macrocode} \count@"F5 \@tempcnta"100 - \def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@invalid@err\string~}} + \def\UTFviii@tmp{\protected\edef~{\noexpand\UTFviii@invalid@err\string~}} \UTFviii@loop % \end{macrocode} % +% Restore values after the loops. % \begin{macrocode} -\endgroup +\reserved@a % \end{macrocode} % % \end{macro} @@ -773,12 +785,13 @@ % looks slightly strange but is designed for the sequence of |\expandafter| % in |\DeclareUnicodeCharacter|. % +% \changes{v1.2o}{2021/12/13}{Use 80 not A0 to test for single byte UTF-8} % \begin{macrocode} - \ifnum\count@<"A0\relax + \ifnum\count@<"80\relax \ifnum\catcode\count@=13 \uccode`\~=\count@\uppercase{\def\UTFviii@tmp{\@empty\@empty~}}% \else - \@latex@error{Cannot define non-active Unicode char value < 00A0}% + \@latex@error{Cannot define non-active Unicode char value < 0080}% \@eha \def\UTFviii@tmp{\UTFviii@tmp}% \fi @@ -1139,6 +1152,7 @@ % \changes{v1.1r}{2015/12/03}{Add some more ogonek cases} % \changes{v1.1s}{2016/01/11}{Add some more caron and acute} % \changes{v1.1t}{2017/01/28}{Add caron combinations for GgYy} +% \changes{v1.3c}{2022/06/07}{Fix \cs{guillemetleft} and \cs{guillemetright} also in dfu files (gh/65)}% % \begin{macrocode} %<all,t1,ot1,ly1>\DeclareUnicodeCharacter{00A0}{\nobreakspace} %<all,t1,ot1,ly1>\DeclareUnicodeCharacter{00A1}{\textexclamdown} @@ -1152,7 +1166,8 @@ %<all,ts1,utf8>\DeclareUnicodeCharacter{00A9}{\textcopyright} %<all,ts1,ly1,utf8>\DeclareUnicodeCharacter{00AA}{\textordfeminine} %<*all,x2,t2c,t2b,t2a,t1,ot2,ly1,lcy> -\DeclareUnicodeCharacter{00AB}{\guillemotleft} +%\DeclareUnicodeCharacter{00AB}{\guillemotleft} % wrong Adobe name +\DeclareUnicodeCharacter{00AB}{\guillemetleft} %</all,x2,t2c,t2b,t2a,t1,ot2,ly1,lcy> %<all,ts1>\DeclareUnicodeCharacter{00AC}{\textlnot} %<all,t1,ot1,ly1>\DeclareUnicodeCharacter{00AD}{\-} @@ -1170,7 +1185,8 @@ %<all,ts1>\DeclareUnicodeCharacter{00B9}{\textonesuperior} %<all,ts1,ly1,utf8>\DeclareUnicodeCharacter{00BA}{\textordmasculine} %<*all,x2,t2c,t2b,t2a,t1,ot2,ly1,lcy> -\DeclareUnicodeCharacter{00BB}{\guillemotright} +%\DeclareUnicodeCharacter{00BB}{\guillemotright} % wrong Adobe name +\DeclareUnicodeCharacter{00BB}{\guillemetright} %</all,x2,t2c,t2b,t2a,t1,ot2,ly1,lcy> %<all,ts1,ly1>\DeclareUnicodeCharacter{00BC}{\textonequarter} %<all,ts1,ly1>\DeclareUnicodeCharacter{00BD}{\textonehalf} @@ -1368,6 +1384,18 @@ %<all,t1,ly1>\DeclareUnicodeCharacter{017E}{\v z} %<all,ts1,ly1>\DeclareUnicodeCharacter{0192}{\textflorin} % \end{macrocode} +% \changes{v1.2n}{2021/12/10}{add 01C4-01CC} +% \begin{macrocode} +%<all,t1>\DeclareUnicodeCharacter{01C4}{D\v Z} +%<all,t1>\DeclareUnicodeCharacter{01C5}{D\v z} +%<all,t1>\DeclareUnicodeCharacter{01C6}{d\v z} +%<all,t1>\DeclareUnicodeCharacter{01C7}{LJ} +%<all,t1>\DeclareUnicodeCharacter{01C8}{Lj} +%<all,t1>\DeclareUnicodeCharacter{01C9}{lj} +%<all,t1>\DeclareUnicodeCharacter{01CA}{NJ} +%<all,t1>\DeclareUnicodeCharacter{01CB}{Nj} +%<all,t1>\DeclareUnicodeCharacter{01CC}{nj} +% \end{macrocode} % \changes{v1.1s}{2016/01/11}{add 01CD-01F4} % \begin{macrocode} %<all,t1>\DeclareUnicodeCharacter{01CD}{\v A} @@ -1795,8 +1823,14 @@ %<all,ts1>\DeclareUnicodeCharacter{2191}{\textuparrow} %<all,ts1>\DeclareUnicodeCharacter{2192}{\textrightarrow} %<all,ts1>\DeclareUnicodeCharacter{2193}{\textdownarrow} +% \end{macrocode} +% \changes{v1.3b}{2022/05/08}{Declare Unicode codepoints U+3008/U+3009 to +% better support normalized documents} +% \begin{macrocode} %<all,x2,ts1,t2c,t2b,t2a>\DeclareUnicodeCharacter{2329}{\textlangle} +%<all,x2,ts1,t2c,t2b,t2a>\DeclareUnicodeCharacter{3008}{\textlangle} %<all,x2,ts1,t2c,t2b,t2a>\DeclareUnicodeCharacter{232A}{\textrangle} +%<all,x2,ts1,t2c,t2b,t2a>\DeclareUnicodeCharacter{3009}{\textrangle} %<all,ts1>\DeclareUnicodeCharacter{2422}{\textblank} %<all,x2,t2c,t2b,t2a,t1,utf8>\DeclareUnicodeCharacter{2423}{\textvisiblespace} %<all,ts1>\DeclareUnicodeCharacter{25E6}{\textopenbullet} |