Current File : //usr/share/texlive/texmf-dist/tex/latex/base/utf8.def |
%%
%% This is file `utf8.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% utf8ienc.dtx (with options: `utf8')
%%
%% This is a generated file.
%%
%% The source is maintained by the LaTeX Project team and bug
%% reports for it can be opened at https://latex-project.org/bugs.html
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file was generated from file(s) of the LaTeX base system.
%% --------------------------------------------------------------
%%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008 or later.
%%
%% This file has the LPPL maintenance status "maintained".
%%
%% This file may only be distributed together with a copy of the LaTeX
%% base system. You may however distribute the LaTeX base system without
%% such generated files.
%%
%% The list of all files belonging to the LaTeX base distribution is
%% given in the file `manifest.txt'. See also `legal.txt' for additional
%% information.
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{utf8.def}
[2019/11/14 v1.2k UTF-8 support for inputenc]
\ifx\ifincsname\@undefined % old e-pTeX or e-upTeX engines
\input utf8-2018.def
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
\endinput
\makeatletter
\catcode`\ \saved@space@catcode
\long\def\UTFviii@two@octets{%
\ifincsname
\expandafter \UTF@two@octets@string
\else
\ifx \protect\@typeset@protect \else
\expandafter\expandafter\expandafter \UTF@two@octets@noexpand
\fi
\fi
\UTFviii@two@octets@combine
}
\long\def\UTFviii@three@octets{%
\ifincsname
\expandafter \UTF@three@octets@string
\else
\ifx \protect\@typeset@protect \else
\expandafter\expandafter\expandafter \UTF@three@octets@noexpand
\fi
\fi
\UTFviii@three@octets@combine
}
\long\def\UTFviii@four@octets{%
\ifincsname
\expandafter \UTF@four@octets@string
\else
\ifx \protect\@typeset@protect \else
\expandafter\expandafter\expandafter \UTF@four@octets@noexpand
\fi
\fi
\UTFviii@four@octets@combine
}
\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@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\UTFviii@two@octets@combine#1#2{\expandafter
\UTFviii@defined\csname u8:\string#1\string#2\endcsname}
\long\def\UTFviii@three@octets@combine#1#2#3{\expandafter
\UTFviii@defined\csname u8:\string#1\string#2\string#3\endcsname}
\long\def\UTFviii@four@octets@combine#1#2#3#4{\expandafter
\UTFviii@defined\csname u8:\string#1\string#2\string#3\string#4\endcsname}
\def\UTFviii@defined#1{%
\ifx#1\relax
\if\relax\expandafter\UTFviii@checkseq\string#1\relax\relax
\UTFviii@undefined@err{#1}%
\else
\PackageError{inputenc}{Invalid UTF-8 byte sequence}%
\UTFviii@invalid@help
\fi
\else\expandafter
#1%
\fi
}
\def\UTFviii@invalid@err#1{%
\PackageError{inputenc}{Invalid UTF-8 byte "\UTFviii@hexnumber{`#1}}%
\UTFviii@invalid@help}
\def\UTFviii@invalid@help{%
The document does not appear to be in UTF-8 encoding.\MessageBreak
Try adding \noexpand\UseRawInputEncoding as the first line of the file\MessageBreak
or specify an encoding such as \noexpand\usepackage[latin1]{inputenc}\MessageBreak
in the document preamble.\MessageBreak
Alternatively, save the file in UTF-8 using your editor or another tool}
\def\UTFviii@undefined@err#1{%
\PackageError{inputenc}{Unicode character \expandafter
\UTFviii@splitcsname\string#1\relax
\MessageBreak
not set up for use with LaTeX}%
{You may provide a definition with\MessageBreak
\noexpand\DeclareUnicodeCharacter}%
}
\def\UTFviii@checkseq#1:#2#3{%
\ifnum`#2<"80 %
\ifx\relax#3\else1\fi
\else
\ifnum`#2<"C0 %
1 %
\else
\expandafter\expandafter\expandafter\UTFviii@check@continue
\expandafter\expandafter\expandafter#3%
\fi
\fi}
\def\UTFviii@check@continue#1{%
\ifx\relax#1%
\else
\ifnum`#1<"80 1\else\ifnum`#1>"BF 1\fi\fi
\expandafter\UTFviii@check@continue
\fi
}
\begingroup
\catcode`\~13
\catcode`\"12
\def\UTFviii@loop{%
\uccode`\~\count@
\uppercase\expandafter{\UTFviii@tmp}%
\advance\count@\@ne
\ifnum\count@<\@tempcnta
\expandafter\UTFviii@loop
\fi}
\def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@undefined@err{:\string~}}}
\count@"1
\@tempcnta9
\UTFviii@loop
\count@11
\@tempcnta12
\UTFviii@loop
\count@14
\@tempcnta32
\UTFviii@loop
\count@"80
\@tempcnta"C2
\def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@invalid@err\string~}}
\UTFviii@loop
\count@"C2
\@tempcnta"E0
\def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@two@octets\noexpand~}}
\UTFviii@loop
\count@"E0
\@tempcnta"F0
\def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@three@octets\noexpand~}}
\UTFviii@loop
\count@"F0
\@tempcnta"F5
\def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@four@octets\noexpand~}}
\UTFviii@loop
\count@"F5
\@tempcnta"100
\def\UTFviii@tmp{\xdef~{\noexpand\UTFviii@invalid@err\string~}}
\UTFviii@loop
\endgroup
\@inpenc@test
\ifx\@begindocumenthook\@undefined
\makeatother
\endinput \fi
\begingroup
\catcode`\"=12
\catcode`\<=12
\catcode`\.=12
\catcode`\,=12
\catcode`\;=12
\catcode`\!=12
\catcode`\~=13
\gdef\DeclareUnicodeCharacter#1#2{%
\count@"#1\relax
\wlog{ \space\space defining Unicode char U+#1 (decimal \the\count@)}%
\begingroup
\parse@XML@charref
\def\UTFviii@two@octets##1##2{\csname u8:##1\string##2\endcsname}%
\def\UTFviii@three@octets##1##2##3{\csname u8:##1%
\string##2\string##3\endcsname}%
\def\UTFviii@four@octets##1##2##3##4{\csname u8:##1%
\string##2\string##3\string##4\endcsname}%
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter
\expandafter
\gdef\UTFviii@tmp{\IeC{#2}}%
\endgroup
}
\gdef\parse@XML@charref{%
\ifnum\count@<"A0\relax
\ifnum\catcode\count@=13
\uccode`\~=\count@\uppercase{\def\UTFviii@tmp{\@empty\@empty~}}%
\else
\PackageError{inputenc}%
{Cannot define non-active Unicode char value < 00A0}%
\@eha
\def\UTFviii@tmp{\UTFviii@tmp}%
\fi
\else\ifnum\count@<"800\relax
\parse@UTFviii@a,%
\parse@UTFviii@b C\UTFviii@two@octets.,%
\else\ifnum\count@<"10000\relax
\parse@UTFviii@a;%
\parse@UTFviii@a,%
\parse@UTFviii@b E\UTFviii@three@octets.{,;}%
\else
\ifnum\count@>"10FFFF\relax
\PackageError{inputenc}%
{\UTFviii@hexnumber\count@\space too large for Unicode}%
{Values between 0 and 10FFFF are permitted}%
\fi
\parse@UTFviii@a;%
\parse@UTFviii@a,%
\parse@UTFviii@a!%
\parse@UTFviii@b F\UTFviii@four@octets.{!,;}%
\fi
\fi
\fi
}
\gdef\parse@UTFviii@a#1{%
\@tempcnta\count@
\divide\count@ 64
\@tempcntb\count@
\multiply\count@ 64
\advance\@tempcnta-\count@
\advance\@tempcnta 128
\uccode`#1\@tempcnta
\count@\@tempcntb}
\gdef\parse@UTFviii@b#1#2#3#4{%
\advance\count@ "#10\relax
\uccode`#3\count@
\uppercase{\gdef\UTFviii@tmp{#2#3#4}}}
\ifx\numexpr\@undefined
\gdef\decode@UTFviii#1{0}
\else
\gdef\decode@UTFviii#1\relax{%
\expandafter\UTFviii@cleanup
\the\numexpr\dec@de@UTFviii#1\relax)))))\@empty}
\gdef\UTFviii@cleanup#1)#2\@empty{#1}
\gdef\dec@de@UTFviii#1{%
\ifx\relax#1%
\else
\ifnum`#1>"EF
((((`#1-"F0)%
\else
\ifnum`#1>"DF
(((`#1-"E0)%
\else
\ifnum`#1>"BF
((`#1-"C0)%
\else
\ifnum`#1>"7F
)*64+(`#1-"80)%
\else
+`#1 %
\fi
\fi
\fi
\fi
\expandafter\dec@de@UTFviii
\fi}
\fi
\ifx\numexpr\@undefined
\global\let\UTFviii@hexnumber\@firstofone
\global\UTFviii@hexdigit\hexnumber@
\else
\gdef\UTFviii@hexnumber#1{%
\ifnum#1>15 %
\expandafter\UTFviii@hexnumber\expandafter{\the\numexpr(#1-8)/16\relax}%
\fi
\UTFviii@hexdigit{\numexpr#1\ifnum#1>0-((#1-8)/16)*16\fi\relax}%
}
\gdef\UTFviii@hexdigit#1{\ifcase\numexpr#1\relax
0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or
A\or B\or C\or D\or E\or F\fi}
\fi
\gdef\UTFviii@hexcodepoint#1{U+%
\ifnum#1<16 0\fi
\ifnum#1<256 0\fi
\ifnum#1<4096 0\fi
\UTFviii@hexnumber{#1}%
}%
\gdef\UTFviii@splitcsname#1:#2\relax{%
#2 (\expandafter\UTFviii@hexcodepoint\expandafter{%
\the\numexpr\decode@UTFviii#2\relax})%
}
\endgroup
\@onlypreamble\DeclareUnicodeCharacter
\@onlypreamble\parse@XML@charref
\@onlypreamble\parse@UTFviii@a
\@onlypreamble\parse@UTFviii@b
\begingroup
\def\cdp@elt#1#2#3#4{%
\wlog{Now handling font encoding #1 ...}%
\lowercase{%
\InputIfFileExists{#1enc.dfu}}%
{\wlog{... processing UTF-8 mapping file for font %
encoding #1}%
\catcode`\ 9\relax}%
{\wlog{... no UTF-8 mapping file for font encoding #1}}%
}
\cdp@list
\endgroup
\def\DeclareFontEncoding@#1#2#3{%
\expandafter
\ifx\csname T@#1\endcsname\relax
\def\cdp@elt{\noexpand\cdp@elt}%
\xdef\cdp@list{\cdp@list\cdp@elt{#1}%
{\default@family}{\default@series}%
{\default@shape}}%
\expandafter\let\csname#1-cmd\endcsname\@changed@cmd
\begingroup
\wlog{Now handling font encoding #1 ...}%
\lowercase{%
\InputIfFileExists{#1enc.dfu}}%
{\wlog{... processing UTF-8 mapping file for font %
encoding #1}}%
{\wlog{... no UTF-8 mapping file for font encoding #1}}%
\endgroup
\else
\@font@info{Redeclaring font encoding #1}%
\fi
\global\@namedef{T@#1}{#2}%
\global\@namedef{M@#1}{\default@M#3}%
\xdef\LastDeclaredEncoding{#1}%
}
\DeclareUnicodeCharacter{00A9}{\textcopyright}
\DeclareUnicodeCharacter{00AA}{\textordfeminine}
\DeclareUnicodeCharacter{00AE}{\textregistered}
\DeclareUnicodeCharacter{00BA}{\textordmasculine}
\DeclareUnicodeCharacter{02C6}{\textasciicircum}
\DeclareUnicodeCharacter{02DC}{\textasciitilde}
\DeclareUnicodeCharacter{200C}{\textcompwordmark}
\DeclareUnicodeCharacter{2026}{\textellipsis}
\DeclareUnicodeCharacter{2122}{\texttrademark}
\DeclareUnicodeCharacter{2423}{\textvisiblespace}
\DeclareUnicodeCharacter{FEFF}{\ifhmode\nobreak\fi}
\endinput
%%
%% End of file `utf8.def'.