diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/ucs')
46 files changed, 5912 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/ucs/FAQ b/Master/texmf-dist/doc/latex/ucs/FAQ new file mode 100644 index 00000000000..76f4949adaf --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/FAQ @@ -0,0 +1,77 @@ + +Question: LaTeX complains about missing commands I have not used. Why? + +Answer: The ucs package uses many macros from many packages. You have +to include these into your preamble. To find out which package +contains the missing macro, you can use e.g. + perl discovermacro.pl \themissingmacro +or + perl discovermacro.pl mydocument.log +or use the online version at + http://www.unruh.de/DniQ/cgi/discovermacro.cgi +or have a look at the human readable file + ltxmacrs.txt. + + + +Question: The package complains about the missing file uni-global.def +(and other files), but they are in the TeX search path. + +Answer: Perhaps you have put the ucs/data directory in a directory +where TeX does not search recursively (e.g. your private TeX directory +or the current directory). You can change this by putting the unicode +package into a recursively searched directory or by putting the files +in ucs/data directly into the searched directory at top level. + + + +Question: When I try to activate options in \usepackage[...]{ucs}, +LaTeX complains about an option clash. + +Answer: ucs.sty probably already got loaded via +\usepackage[utf8x]{inputenc}. Try loading ucs.sty first or set the +options with \SetUnicodeOption. + + + +Question: Why is the package named ucs.sty, but the directory unicode? +(Or: Why are you mixing the names of two different standards) + +Answer: I started with unicode.sty, but there was an name clash with +Sebastian Rahtz' jadetex/passivetex package. And I think, applying to +practical solutions like this one, it is OK to use Unicode and UCS as +synonyms. (UCS is an ISO standard, which has goals similar to those of +Unicode, both standards agreed to stay compatible.) + + + +Question: I get an "TeX capacity exceeded" error. What can I do? + +Answer: Try the option "savemem". This will reduce the memory +consumption of ucs.sty, especially if you use CJK glyphs, but will +also slow down operation significantly. Or increase TeX's capacity, if +this is feasible in your situation. + + + +Question (Esperanto): LATIN SMALL LETTER H WITH CIRCUMFLEX is ugly. ^h +with babel package option esperanto is not. Why? + +Answer: esperanto.ldf has its own macro for ^h, ucs uses the standard +\^h. Add + \DeclareTextCompositeCommand{\^}{T1}{h}{h\llap{\^{}}} + \DeclareTextCompositeCommand{\^}{OT1}{h}{h\llap{\^{}}} +to your preamble, then \^h and the corresponding unicode character will +yield the same as ^h. + + + +Question: When a line of my document displayed in the TeX terminal +output or logfile, the non ascii characters are replaced by garbage. Why? + +Answer: The first possibility is, that you don't read the output with +a unicode enabled terminal. The second is, that TeX replaces some +bytes by ^^XX sequences. I do not know how to tell TeX which +characters are to be escaped that way (tell me if you do). If no other +mean helps, you can use latexout.pl which converts such output to +UTF-8. diff --git a/Master/texmf-dist/doc/latex/ucs/INSTALL b/Master/texmf-dist/doc/latex/ucs/INSTALL new file mode 100644 index 00000000000..48af7a12277 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/INSTALL @@ -0,0 +1,35 @@ + +To install this LaTeX UTF-8 support, simply put the files ucs.sty, +utf8x.def, ucsencs.def and data/* somewhere in your TeX-path. If you +want CJK characters, you need the c??enc.def files, too. For Klingon +you need lklenc.def and lklkli.fd. + +You may have to run some command like mktexlsr, lest the files will +not be found by TeX. What to do, however, is distribution dependent. + +Warning: If you install the files into some directory, where TeX does +not search recursively (usually the current directory and your +personal TeX directory are of that kind), you have to put the contents +of data directly into that directory. + +If you don't install data/uninames.dat, you will save abount 300 KB, +but you won't get the full names of the characters in error messages. + +If you have added glyphs macros in one of the files in config (see +perldoc makeunidef.pl for information on the config file format), you +have to recreate the files in data. + +First you need UnicodeData.txt from + + http://www.unicode.org/Public/UNIDATA/UnicodeData.txt + +(you may gzip it after downloading) and then you can recreate the files +using + + perl makeunidef.pl -t data --nocomments config/*.ucf config/*.ucf.gz + +You may supply another target directory instead of data, e.g. some +directory in your TeX-path. makeunidef.pl will not delete or overwrite +any files it has not created itself. If you add "--exclude +cjkbg5,cjkgb,cjkjis,cjkhangul", no CJK characters will not be included, +saving more than 1 MB of disk space. diff --git a/Master/texmf-dist/doc/latex/ucs/LICENSE b/Master/texmf-dist/doc/latex/ucs/LICENSE new file mode 100644 index 00000000000..6aea924f946 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/LICENSE @@ -0,0 +1,49 @@ + +Copyright 2000 by Dominique Unruh <dominique@unruh.de> + +This program may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.2 of this +license or (at your option) any later version, with the following +extensions: + +- A distribution may omit the files data/uninames.dat and + ucs-doc.dvi + +- The directory structure may be changed + +- A distribution may split the package into smaller packages, as long + as this fact is visible to the user and the user may easily install + the complete UCS package (e.g. by installing all small packages). + +- The data/uni-*.def files may be regenerated via makeunidef.pl + from a valid set of config/*.def files without changing the former's + names, whereby a valid set of config/*.ucf files consists of the + original files and any local additions in separate files, whereby + any characters defined in these should only be accessible via an + option which starts with the five letters 'local'. (See the + documentation files for a description of the technical terms and + names in this paragraph). + +- Files in the unsupported/ directory may be omitted. + +- Scripts (i.e. executable files which are not TeX input), may be + renamed, as long as the original name without suffix is part of the + new name (e.g. discovermacro.pl -> latex-ucs-discovermacro) and as + long this is stated in some documentation file shipped with the + distribution. Occurrences of the scripts' names in the documentation + may be changed to match the new name. + +- Parts of files explicitly marked as "configuration data" may be + changed by distributions, as long this is stated in a comment near + the place of that modification and in some documentation file + shipped with the distribution. + +This program consists of all files found at +http://www.unruh.de/DniQ/latex/unicode/ucs. + +The latest version of this license (without the extensions mentioned +above) can be found in + http://www.latex-project.org/lppl.txt +and version 1.1 or later is part of all distributions of LaTeX +version 1999/06/01 or later. +
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/ucs/README b/Master/texmf-dist/doc/latex/ucs/README new file mode 100644 index 00000000000..1bc7e4c39b5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/README @@ -0,0 +1,33 @@ + +=== ucs.sty === + +This package contains support for using UTF-8 as input encoding in +LaTeX documents. + +See INSTALL for installation instructions. + +The simplest use of this package is to add + \usepackage{ucs} + \usepackage[utf8x]{inputenc} +to your header. You may even omit the first line in many cases. Often +however you need to load additional packages etc., see +languages.ps.gz for language-specific examples. + +The tables with LaTeX macros for the glyphs does not contain many +entries yet. If your particular script is not supported, and you add +the macros to the config files (see INSTALL and perldoc +makeunidef.pl), please mail me those config files, and together with +informations, if special packages or LaTeX versions are needed for +these macros. Please do only supply macros, which generate aesthetic +glyphs, no hacks. See also +http://www.unruh.de/DniQ/latex/unicode/submitchar.html. + +The most recent version of this package can be found here: +http://www.unruh.de/DniQ/latex/unicode/ + +========= + +(C) 2000 by Dominique Unruh <dominique@unruh.de> + +See the LICENSE file for licensing informations. + diff --git a/Master/texmf-dist/doc/latex/ucs/VERSION b/Master/texmf-dist/doc/latex/ucs/VERSION new file mode 100644 index 00000000000..4db275aacb1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/VERSION @@ -0,0 +1 @@ +Unicode support for LaTeX. Build date: 2004-17-10 21:38. diff --git a/Master/texmf-dist/doc/latex/ucs/config/ascii.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/ascii.ucf.gz Binary files differnew file mode 100644 index 00000000000..6edb3fe60ea --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/ascii.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/boxdraw.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/boxdraw.ucf.gz Binary files differnew file mode 100644 index 00000000000..b218e80fd01 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/boxdraw.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/braille.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/braille.ucf.gz Binary files differnew file mode 100644 index 00000000000..c3011e84a90 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/braille.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-bg5.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-bg5.ucf.gz Binary files differnew file mode 100644 index 00000000000..6c7ebb05d8c --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-bg5.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-gb.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-gb.ucf.gz Binary files differnew file mode 100644 index 00000000000..443794df27a --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-gb.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-globals.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-globals.ucf.gz Binary files differnew file mode 100644 index 00000000000..9bb2a9efb5e --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-globals.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-hangul.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-hangul.ucf.gz Binary files differnew file mode 100644 index 00000000000..e476f19fa5d --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-hangul.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/cjk-jis.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cjk-jis.ucf.gz Binary files differnew file mode 100644 index 00000000000..51fc9152302 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/cjk-jis.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/combining.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/combining.ucf.gz Binary files differnew file mode 100644 index 00000000000..191ce00af59 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/combining.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/control.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/control.ucf.gz Binary files differnew file mode 100644 index 00000000000..8b9b2a4da8e --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/control.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/ctrlglyphs.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/ctrlglyphs.ucf.gz Binary files differnew file mode 100644 index 00000000000..2f338e3ef37 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/ctrlglyphs.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/currency.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/currency.ucf.gz Binary files differnew file mode 100644 index 00000000000..2cce8b24dcc --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/currency.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/cyrillic.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/cyrillic.ucf.gz Binary files differnew file mode 100644 index 00000000000..a8ddbdd4507 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/cyrillic.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/devanagari.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/devanagari.ucf.gz Binary files differnew file mode 100644 index 00000000000..17d23863f87 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/devanagari.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/ethiopic.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/ethiopic.ucf.gz Binary files differnew file mode 100644 index 00000000000..da49e64cbdb --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/ethiopic.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/geometric.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/geometric.ucf.gz Binary files differnew file mode 100644 index 00000000000..d46932a4acb --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/geometric.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/greek.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/greek.ucf.gz Binary files differnew file mode 100644 index 00000000000..9a44778c7a3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/greek.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/hebrew.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/hebrew.ucf.gz Binary files differnew file mode 100644 index 00000000000..0ff881f52bf --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/hebrew.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/ipa.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/ipa.ucf.gz Binary files differnew file mode 100644 index 00000000000..a267dfa068d --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/ipa.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/klingon.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/klingon.ucf.gz Binary files differnew file mode 100644 index 00000000000..b52421e6e11 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/klingon.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/latin-a.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/latin-a.ucf.gz Binary files differnew file mode 100644 index 00000000000..46f8ca00843 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/latin-a.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/latin-b.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/latin-b.ucf.gz Binary files differnew file mode 100644 index 00000000000..55189a42cd7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/latin-b.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/latin-e-a.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/latin-e-a.ucf.gz Binary files differnew file mode 100644 index 00000000000..9f7b4046192 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/latin-e-a.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/latin1.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/latin1.ucf.gz Binary files differnew file mode 100644 index 00000000000..2dc80f3f284 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/latin1.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/math.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/math.ucf.gz Binary files differnew file mode 100644 index 00000000000..aefa1b541b0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/math.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/mathalpha.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/mathalpha.ucf.gz Binary files differnew file mode 100644 index 00000000000..c54806c343a --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/mathalpha.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/miscsymb.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/miscsymb.ucf.gz Binary files differnew file mode 100644 index 00000000000..30ccd283c0c --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/miscsymb.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/modifier.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/modifier.ucf.gz Binary files differnew file mode 100644 index 00000000000..8e6db2d5415 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/modifier.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/mongolian.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/mongolian.ucf.gz Binary files differnew file mode 100644 index 00000000000..169a5811a66 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/mongolian.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/pifont.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/pifont.ucf.gz Binary files differnew file mode 100644 index 00000000000..194a93c88f3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/pifont.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/punct.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/punct.ucf.gz Binary files differnew file mode 100644 index 00000000000..2175de16f05 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/punct.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/supersub.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/supersub.ucf.gz Binary files differnew file mode 100644 index 00000000000..4cd592845ec --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/supersub.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/tags.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/tags.ucf.gz Binary files differnew file mode 100644 index 00000000000..69f38ed63d3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/tags.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/telugu.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/telugu.ucf.gz Binary files differnew file mode 100644 index 00000000000..aebf0b6c2a1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/telugu.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/config/thai.ucf.gz b/Master/texmf-dist/doc/latex/ucs/config/thai.ucf.gz Binary files differnew file mode 100644 index 00000000000..5d3ebc3b997 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/config/thai.ucf.gz diff --git a/Master/texmf-dist/doc/latex/ucs/discovermacro.pl b/Master/texmf-dist/doc/latex/ucs/discovermacro.pl new file mode 100755 index 00000000000..8b595b48f3d --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/discovermacro.pl @@ -0,0 +1,745 @@ +#!/usr/bin/perl -T + +# The content of the following variable is configuration data: +@DiscoverMacro::datafile_path = ('program','.'); + +=head1 NAME + +discovermacro.pl - Discover which LaTeX package contains a missing macro + +=head1 SYNOPSIS + +B<discovermacro.pl> \I<themissingmacro> + +B<discovermacro.pl> I<mydocument.log> + +B<discovermacro.pl> + +=head1 DESCRIPTION + +The ucs package uses many macros from many packages which have to be +included with B<\usepackage> before the inclusion of F<ucs.sty>. + +The missing macro can be given directly as parameter. Note that the +backslash must be included, so with most shells you either need to +quote it or write a double backslash (e. g. \\cyrc or '\cyrc'). + +An alternative way is to give a LaTeX log file as parameter in which +case the missing macros are parsed from it. + +If no argument is given, the newest LaTeX log file in the current +directory is used as default. + +=head1 ALTERNATIVES + +B<discovermacro.pl> uses the data file F<ltxmacrs.txt> which is human +readable, thus can be used directly. + +F<http://www.unruh.de/DniQ/cgi/discovermacro.cgi> provides an online +version of this script. + +=cut + +use strict; + +package DiscoverMacro::H; + +sub cleanline($) { + my $line = shift; + chomp $line; + $line =~ s/^\s*//; + $line =~ s/^\#.*//; + return $line; +} + + +sub readline2($) { + my $file = shift; + my $line = <$file>; + while ($line =~ /\\\n?$/s) { + $line =~ s/\\\n?$//; + my $next = <$file>; + $next =~ s/^\s*//; + $line .= $next; + } + return $line; +} + +sub escape($$) { + my ($format,$text) = @_; + if ($format eq 'text/plain') { + $text =~ s/\[\[\[.*?\]\]\]//g; + } elsif ($format eq 'text/html') { + $text =~ s{[<>&]|(\n[ \t]*)}{ my $x=$&; + if ($x =~ /^\n/) { + $x=~s/\t/ /g; + $x=~s/ / /g; + "<br>$x"; + } else { + sprintf "&#%d;", ord $& }}egs; + $text =~ s{\[\[\[.+?\]\]\]}{ + my ($t) = ($& =~ /\[\[\[(.+?)\]\]\]/); + my @t = split / /,$t; + my $r = ''; + if ($t[0] eq 'NAME') { + $r = "<a name=\"$t[1]\">"; + } elsif ($t[0] eq 'HREF') { + $r = "<a href=\"$t[1]\">"; + } elsif ($t[0] eq '/NAME') { + $r = "</a>"; + } elsif ($t[0] eq '/HREF') { + $r = "</a>"; + } else { + warn "escape($format,[[[$t[0]...]]])"; + } + }ge; + return $text; + } elsif ($format eq 'identifier') { + $text =~ s/[^a-z0-9]/ + sprintf "_%02X", ord $&/ge; + } else { + warn "Unknown format $format"; + return escape('text/plain',$text); + } + return $text; +} + +sub header($$) { + my ($format,$header) = @_; + $header = escape($format,$header); + if ($format eq 'text/plain') { + my $len = length $header; + return "\n$header\n".('=' x $len)."\n"; + } elsif ($format eq 'text/html') { + return "<p><table border=1>\n<tr><th align=left colspan=2>$header</th></tr>\n"; + } else { + warn "Unknown format $format"; + return header('text/plain',$header); + } +} + +sub footer($) { + my ($format) = @_; + if ($format eq 'text/plain') { + return "\n"; + } elsif ($format eq 'text/html') { + return "</table></p>\n\n"; + } else { + warn "Unknown format $format"; + return footer('text/plain'); + } +} + +sub line($$) { + my ($format,$line) = @_; + $line = escape $format, $line; + if ($format eq 'text/plain') { + return "$line\n"; + } elsif ($format eq 'text/html') { + return "<tr><td colspan=2>$line</td></tr>\n"; + } else { + warn "Unknown format $format"; + return line($format,$line); + } +} + + +sub twocol($$$) { + my ($format,$col1,$col2) = @_; + $col1 = escape $format, $col1; + $col2 = escape $format, $col2; + if ($format eq 'text/plain') { + return "$col1\t$col2\n"; + } elsif ($format eq 'text/html') { + return "<tr><td>$col1 </td><td>$col2</td></tr>\n"; + } else { + warn "Unknown format $format"; + return twocol('text/plain',$col1,$col2); + } +} + + +package DiscoverMacro::Feature; + +use vars qw/$obj_count/; +$obj_count = 0; + +sub new($$$) { + my ($proto,$db,$name) = @_; + $obj_count++; + my $class = ref($proto) || $proto; + my $self = {}; + bless $self, $class; + $self->{name} = $name; + $self->{db} = $db; + $self->loadfeature(); + return $self; +} + +sub DESTROY { + $obj_count--; +} + +sub getfontenc($) { + my $self = shift; + return $self->{fontencoding}; +} + +sub getlatexcmd($) { + $_[0]->{latexcmd}; +} + +sub getneeds($) { + my $self = shift; + return $self->{needs}; +} + +sub getpackages($) { + my $self = shift; + return $self->{packages}; +} + +sub getpackages_ascode($) { + my $self = shift; + return join '', map { + my $p = $_; + $p = "{$_}" unless $p =~ /\}$/; + "\\usepackage$p\n"; + } @{$self->{packages}}; +} + + +sub loadfeature($) { + my $self = shift; + my $pos = $self->{db}->getfeaturepos($self->{name}); + unless (defined $pos) { + $self->{undefined} = 1; + return; + } + my $file = $self->{db}->getfileat($pos); + my $line; + my $lastfile = undef; + while (defined ($line = DiscoverMacro::H::readline2($file))) { + my $tlastfile; + $line = DiscoverMacro::H::cleanline $line; + next if $line eq ''; + my @line = split ' ',$line; + if ($line[0] eq 'FONTENCODING') { + warn "Two fontencodings in feature $self->{name}" + if defined $self->{fontencoding}; + $self->{fontencoding} = $line[1]; + } elsif ($line[0] eq 'CTAN') { + if (!defined $lastfile) { + die "CTAN not preceded by FILE in feature $self->{name}"; } + my $ctan = $self->{ctan}; + warn "Two CTAN locations defined for file $lastfile ". + "in feature $self->{name}" if defined $$ctan{$lastfile}; + $$ctan{$lastfile} = $line[1]; + $self->{ctan} = $ctan; + } elsif ($line[0] eq 'LATEXCMD') { + warn "Two LATEXCMDs in feature $self->{name}" + if defined $self->{latexcmd}; + $self->{latexcmd} = $line[1]; + } elsif ($line[0] eq 'NEEDS') { + warn "Two NEEDS lines in feature $self->{name}" + if defined $self->{needs}; + $self->{needs} = join ' ',@line[1..$#line]; + } elsif ($line[0] eq 'END') { + warn "FEATURE $self->{name} ended by END $line[1]" + if $line[1] ne 'FEATURE'; + last; + } elsif ($line[0] eq 'COMMENT') { + my $comment = readblock($file,'COMMENT',1); + if (defined $self->{comment}) { + warn "Two COMMENT sections in feature $self->{name}.". + "Concatenating"; + $comment = "$self->{comment}$comment"; } + $self->{comment} = $comment; + } elsif ($line[0] eq 'INSTALL') { + my $install = readblock($file,'INSTALL',1); + if (defined $self->{install}) { + warn "Two INSTALL sections in feature $self->{name}.". + "Concatenating"; + $install = "$self->{install}$install"; } + $self->{install} = $install; + } elsif ($line[0] eq 'FILE') { + push @{$self->{files}}, $line[1]; + $tlastfile = $line[1]; + } elsif ($line[0] eq 'PACKAGE') { + push @{$self->{packages}}, $line[1]; + } else { + warn "Unknown command in feature $self->{name}: $line[0]"; + } + $lastfile = $tlastfile; $tlastfile = undef; + } +} + +sub readblock($$$) { + my ($file,$blocktype,$raw) = @_; + my $line; + my $str = ''; + while (defined ($line = $raw?<$file>:DiscoverMacro::H::readline2($file))) { + return $str if ($line =~ /^\s*END\s+\Q$blocktype\E\s*$/); + $line = DiscoverMacro::H::cleanline $line unless $raw; + #print "L:$line\n"; + $str .= $line; + } + warn "EOF in $blocktype"; + return $str; +} + +sub isdefined($) { + my $self = shift; + return !$self->{undefined}; +} + +sub as_text($$) { + my ($self,$f) = @_; + my $link = "[[[NAME ". + DiscoverMacro::H::escape('identifier',$self->{name})."]]]"; + my $text = DiscoverMacro::H::header + ($f,"${link}Feature: $self->{name}\[[[/NAME]]]"); + if ($self->{undefined}) { + $text .= DiscoverMacro::H::line($f,"No information available"); + } + if (defined $self->{fontencoding}) { + $text .= DiscoverMacro::H::twocol($f,"Fontencoding:", + $self->{fontencoding}); + } + for my $i (@{$self->{packages}}) { + $text .= DiscoverMacro::H::twocol($f,"Package:",$i); + } + if (defined $self->{needs}) { + $text .= DiscoverMacro::H::twocol($f,"Needs:",$self->{needs}); + } + for my $i (@{$self->{files}}) { + my $ctan = ${$self->{ctan}}{$i}; + if (defined $ctan) { + $ctan = " (CTAN: [[[HREF http://www.ctan.org/tex-archive/". + "$ctan]]]$ctan\[[[/HREF]]])"; + } else { $ctan = ''; }; + $text .= DiscoverMacro::H::twocol($f,"Needed file:",$i.$ctan); + } + if ($self->{comment}) { + $text .= DiscoverMacro::H::twocol($f,"Comment:",$self->{comment}); + } + if ($self->{install}) { + $text .= DiscoverMacro::H::twocol($f,"Installation:",$self->{install}); + } + $text .= DiscoverMacro::H::footer $f; + return $text; +} + +package DiscoverMacro::Macro; + +use Data::Dumper; + +use vars qw/$obj_count/; +$obj_count = 0; + +sub new($$$) { + my ($proto,$db,$macro) = @_; + my $class = ref($proto) || $proto; + my $self = {}; + $obj_count++; + bless $self, $class; + $self->{macro} = $macro; + $self->{db} = $db; + $self->loadlist(); + return $self; +} + +sub DESTROY { + $obj_count--; +} + +sub isdefined($) { + my $self = shift; + return !$self->{undefined}; +} + +sub getname($) { + my $self = shift; + return $self->{macro}; +} + +sub getlist($) { + my $self = shift; + return $self->{list}; +} + +sub loadlist($) { + my $self = shift; + my $macros = $self->{db}->{macros}; + my $macro = $self->{macro}; + my $list = $$macros{$macro}; + unless (defined $list) { + my $regex = $self->{db}->{regexmacros}; + while (my ($re,$l) = each %$regex) { + #print "RE: $re\n"; + if ($macro =~ /$re/) { + $self->{regex} = $re; + $list = $l; last; } + } + } + unless (defined $list) { + $self->{undefined} = 1; + return; + } + $self->{list} = $list; + my %tlist; + my @list = grep { my $bad = $_ eq 'OR' || $_ eq 'AND' || $tlist{$_}; + $tlist{$_}=1; !$bad; } split ' ', $self->{list}; + my %features = (); + for my $i (@list) { + $features{$i} = new DiscoverMacro::Feature($self->{db},$i) + unless defined $features{$i}; + } + $self->{features} = \%features; +} + +sub getfeature($) { + my ($self,$name) = @_; + return ${$self->{features}}{$name}; +} + +sub as_text($$) { + my ($self,$f) = @_; + my $text = ''; + my $link = "[[[NAME ". + DiscoverMacro::H::escape('identifier',$self->{macro})."]]]"; + $text .= DiscoverMacro::H::header + ($f,"${link}Macro: $self->{macro}\[[[/NAME]]]"); + if ($self->{undefined}) { + $text .= DiscoverMacro::H::line($f,"Macro is unknown."); + } else { + my $list = $self->{list}; + my $features = $self->{features}; + $list =~ s{\S+}{ + my $w = $&; + if ($$features{$w}) { + $w = "[[[HREF #".DiscoverMacro::H::escape('identifier',$w). + "]]]$w\[[[/HREF]]]"; + } + $w; + }ge; + $text .= DiscoverMacro::H::twocol($f,"Available with:",$list); + } + $text .= DiscoverMacro::H::footer($f); + for my $feature (values %{$self->{features}}) { + $text .= $feature->as_text($f); + } + return $text; +} + +package DiscoverMacro; + +use IO::File; +use Data::Dumper; + +use vars qw/$obj_count @datafile_path/; +$obj_count = 0; + +sub new($) { + my ($proto) = @_; + my $class = ref($proto) || $proto; + my $self = {}; + $obj_count++; + bless $self, $class; + $self->{missingmacros} = {}; + $self->opendata(); + return $self; +} + +sub DESTROY { + $obj_count--; +} + +sub skip_to_end($$$) { + my ($file,$type,$lnr) = @_; + my $line; + while (defined ($line = DiscoverMacro::H::readline2($file))) { + return $file->getpos + if $line =~ /^\s*END\s*\Q$type\E\s*$/; + } + warn "Could not find end of $type-section started on line $lnr"; + return undef; +} + +sub lineinfo($) { + my $lnr = shift; + return "ltxmacrs.txt:$lnr: "; +} + +sub opendata($) { + my $self = shift; + my $macros = {}; + my $regexmacros = {}; + my $features = {}; + my $datafile = $self->{datafile}; + unless (defined $datafile) { + for my $dir (@datafile_path) { + if ($dir eq 'program') { + $datafile = $0; $datafile =~ s@[^/]*$@ltxmacrs.txt@; + } elsif (-d $dir) { + $datafile = "$dir/ltxmacrs.txt"; + } else { + $datafile = "$dir"; + } + if (-e $datafile) { last; } + else { $datafile = undef; } + } + die "Could not find data file ltxmacrs.txt in path ". + join ', ', map { + ($_ eq 'program')?'script location':$_ } @datafile_path + unless defined $datafile; + $self->{datafile} = $datafile; + } + my $data = new IO::File($datafile,"r") or + die "Could not open $datafile for reading"; + my $line; + while (defined ($line = DiscoverMacro::H::readline2($data))) { + $line = DiscoverMacro::H::cleanline($line); + next if $line eq ''; + my (@line) = split ' ', $line; + if ($line[0] eq 'MACRO') { +# print Dumper(\@line); + warn lineinfo($.)."Macro $line[1] given twice\n" + if defined $$macros{$line[1]}; + $$macros{$line[1]} = join ' ', @line[2..$#line]; + } elsif ($line[0] eq 'REGEX') { + warn lineinfo($.)."Regex macro $line[1] given twice\n" + if defined $$regexmacros{$line[1]}; + $$regexmacros{$line[1]} = join ' ', @line[2..$#line]; + } elsif ($line[0] eq 'FEATURE') { + $$features{$line[1]} = $data->getpos; + skip_to_end($data,'FEATURE',$.); + } else { + warn lineinfo($.)."Unknown command '$line[0]'\n"; + } + } + $self->{macros} = $macros; + $self->{regexmacros} = $regexmacros; + $self->{features} = $features; + $self->{datafile} = $data; + +# print Dumper($macros); +} + +sub getmacro($$) { + my ($self,$macro) = @_; + return new DiscoverMacro::Macro($self,$macro); +} + +sub getfeaturepos($$) { + my ($self,$feature) = @_; + my $features = $self->{features}; + return $$features{$feature}; +} + +sub readlog($$;$) { + my ($self,$filename,$file) = @_; + my $found = 0; + if (!defined $file) { + $file = new IO::File($filename,"r") + or die "Could not open log file '$filename' for reading: $!"; + } + my $line; + while (defined ($line = <$file>)) { + chomp $line; + if ($line =~ /^! Undefined control sequence\.$/) { + chomp ($line = <$file>); + #print "LINE: '$line'\n"; + my $dots = ''; + my ($macro) = ($line =~ /(\\.)$/); + ($dots,$macro) = + ($line =~ /(...)(\\[a-zA-Z@]+) ?$/) unless defined $macro; + ($dots,$macro) = + ($line =~ /(...)([a-zA-Z@]+) ?$/) unless defined $macro; + my $regex = 0; + if ($dots eq '...') { + $regex = 1; + $macro =~ s/^\\//; + $macro = "\\\\[a-zA-Z@]*\Q$macro"; + } else { + $macro = "\\$macro" unless $macro =~ /^\\/; + } + unless (defined $macro) { + warn "$filename:$.: Could not identify undefined control in:\n". + "\t$line\n"; + next; }; + #print "MACRO: '$macro'\n"; + if ($regex) { + $found = 0; + for my $m (keys %{$self->{macros}}) { + if ($m =~ /$macro/) { + $self->addmacro($m); + $found = 1; } + } + $self->addmacro("REGEX:$macro") unless $found; + } else { + $self->addmacro($macro); + } + $found = 1; + } elsif ($line =~ /^! Package babel Error: You haven\'t defined the language (.+) yet.$/) { + my $lang = $1; + $self->addmacro("\\selectlanguage{$lang}"); + $found = 1; + } elsif ($line =~ /^! LaTeX Error: Environment .* undefined\.$/) { + my ($env) = + ($line =~ /^! LaTeX Error: Environment (.*) undefined\.$/); + unless (defined $env) { + warn "$filename:$.: Could not identify environment in:\n". + "\t$line\n" unless defined $env; + next; }; + $self->addmacro("\\begin{$env}"); + $found = 1; + } elsif ($line =~ /^! LaTeX Error: Encoding scheme \`.*\' unknown\.$/) { + my ($fe) = + ($line =~ /^! LaTeX Error: Encoding scheme \`(.*)\' unknown\.$/); + unless (defined $fe) { + warn "$filename:$.: Could not identify fontencoding in:\n". + "\t$line\n" unless defined $fe; + next; }; + $self->addmacro("\\fontencoding{$fe}"); + $found = 1; + } elsif ($line =~ /^! LaTeX Error: Command .* (not provided|unavailable)/) { + my ($macro) = + ($line =~ /^! LaTeX Error: Command (.*) (not provided|unavailable)/); + unless (defined $macro) { + warn "$filename:$.: Could not identify macro in:\n". + "\t$line\n" unless defined $macro; + next; }; + $macro = "\\$macro" unless $macro =~ /^\\/; + $self->addmacro("$macro"); + $found = 1; + } elsif ($line =~ /^! Package ucs Error: Unknown .* tag '.*' \((.*)\)\.$/) { + my ($macro) = + ($line =~ /^! Package ucs Error: Unknown .* tag '.*' \((.*)\)\.$/); + unless (defined $macro) { + warn "$filename:$.: Could not identify macro in:\n". + "\t$line\n"; + next; }; + $macro = "\\$macro" unless $macro =~ /^\\/; + $self->addmacro("$macro"); + $found = 1; + } elsif ($line =~ /^! Font .*=([^=]+) at .* not loadable: Metric \(TFM\)/) { + my ($tfm) = ($line =~ /^! Font .*=([^=]+) at .* not loadable: Metric \(TFM\)/); + unless (defined $tfm) { + warn "$filename:$.: Could not identify TFM filename in:\n". + "\t$line\n"; + next; }; + print "XXX: $tfm\n"; + $self->addmacro("$tfm.tfm"); + $found = 1; + } + } + close $file; + return $found; +} + +sub addmacro($$%) { + my ($self,$macro) = @_; + my $macros = $self->{missingmacros}; + return $$macros{$macro} if $$macros{$macro}; + my $res = $self->getmacro($macro); + $$macros{$macro} = $res if defined $res; + return $res; +} + +sub getfileat($$) { + my ($self,$pos) = @_; + my $file = $self->{datafile}; + $file->setpos($pos) or + die "Could not seek in datafile to pos $pos"; + return $file; +} + +sub getmissingmacros($) { + my $self = shift; + return $self->{missingmacros}; +} + +sub as_text($$) { + my ($self,$f) = @_; + my $macros = $self->{missingmacros}; + my $str = ''; + for my $m (keys %$macros) { + $str .= $$macros{$m}->as_text($f); + } + return $str; +} + +sub close($) { + my $self = shift; + $self->{macros} = undef; + $self->{features} = undef; + $self->{missingmacros} = undef; + close $self->{datafile}; +} + +sub getfeature($$) { + my ($self,$feature) = @_; + return new DiscoverMacro::Feature($self,$feature); +} + +sub scanformacro($%) { + my ($self,%args) = @_; + my $file = $args{file}; + my $fh = new IO::File($file,"r") or + die "Could not open $file for reading: $!"; + my $line; + # {\newenvironment}{\renewenvironment}{\newif} + my $newcommand = '\\\\newcommand|\\\\renewcommand|\\\\providecommand|'. + '\\\\DeclareRobustCommand|\\\\def'; + my $newenvironment = '\\\\newenvironment|\\\\renewenvironment'; + my @macros; + while (defined ($line = <$fh>)) { + chomp $line; + print "L: $line\n"; + $line =~ s{($newcommand) \s* \{? (\\[a-zA-Z@]+) \}?}{ + print "MACRO: $2\n"; + my ($env) = ($2 =~ /^\\end(.*)$/); + if (defined $env) { + print "ENV: $env\n"; } + }gxeo; + $line =~ s{($newenvironment) \s* \{ ([^\}]+) \} }{ + print "ENV: $2\n"; + }gxeo; + } + print Dumper [\@macros]; +} + + +sub main(@) { + if (@_) { + for my $file (@_) { + my $obj = new DiscoverMacro; + if (-e $file) { + $obj->readlog($file); + } else { + $obj->addmacro($file); + } + print $obj->as_text('text/plain'); + }; + } else { + my ($file) = + sort { my @a = stat $a; my @b = stat $b; $b[9] <=> $a[9] } + grep { $_ ne 'missfont.log' } (<*.log>); + die "No logfile found" if (!defined $file); + print "Using logfile $file.\n"; + &main($file); + } +} + +sub test() { + my $obj = new DiscoverMacro; + $obj->scanformacro(file => 'test.tex'); + exit; +} + +#test; + +caller || &main(@ARGV); + +1; diff --git a/Master/texmf-dist/doc/latex/ucs/languages.ps.gz b/Master/texmf-dist/doc/latex/ucs/languages.ps.gz Binary files differnew file mode 100644 index 00000000000..b3c8eaedf7e --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/languages.ps.gz diff --git a/Master/texmf-dist/doc/latex/ucs/latexout.pl b/Master/texmf-dist/doc/latex/ucs/latexout.pl new file mode 100755 index 00000000000..d61cbe2ccc5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/latexout.pl @@ -0,0 +1,36 @@ +#! /usr/bin/perl -T -w + +=head1 NAME + +latexout.pl - Filters the LaTeX log and output, so that UTF8 stays UTF8. + +=head1 SYNOPSIS + +latex I<arguments> | latexout.pl + +=head1 DESCRIPTION + +TeX replaces bytes in the range of 0x80 to 0x9F by ^^xx +sequences. This filter restores them. + +=head1 BUGS + +Only complete lines are parsed, so when TeX wants input, the prompt is +not displayed. + +=head1 AUTHOR + +Dominique Unruh <I<dominique@unruh.de>>. + +=head1 SEE ALSO + +The LaTeX package B<ucs.sty>. + +=cut + +$| = 1; + +while (<>) { + s/\^\^([0-9a-f]{2})/chr hex $1/egi; + print $_; +} diff --git a/Master/texmf-dist/doc/latex/ucs/ltxmacrs.txt b/Master/texmf-dist/doc/latex/ucs/ltxmacrs.txt new file mode 100644 index 00000000000..49811d0543d --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/ltxmacrs.txt @@ -0,0 +1,3371 @@ +# BEGIN AUTOGENERATED DATA +MACRO \" cyrillic-lcy OR greek-lgr \ + OR cyrillic-lmc OR latin-ot1 \ + OR cyrillic-ot2 OR latin-ot4 \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR ipa-t3 OR latin-t5 \ + OR cyrillic-x2 +MACRO \' cyrillic-lcy OR devanagari-ldv \ + OR greek-lgr OR latin-ot1 \ + OR cyrillic-ot2 OR latin-ot4 \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR ipa-t3 OR latin-t5 \ + OR cyrillic-x2 +MACRO \. cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR ipa-t3 OR latin-t5 \ + OR cyrillic-x2 +MACRO \= cyrillic-lcy OR greek-lgr \ + OR latin-ot1 OR latin-ot4 OR latin-qx \ + OR latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR ipa-t3 OR latin-t5 OR cyrillic-x2 +MACRO \^ cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR ipa-t3 OR latin-t5 \ + OR cyrillic-x2 +MACRO \` cyrillic-lcy OR devanagari-ldv \ + OR greek-lgr OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR ipa-t3 OR latin-t5 \ + OR cyrillic-x2 +MACRO \AA latin-qx +MACRO \aa latin-qx +MACRO \ABREVE latin-t5 +MACRO \abreve latin-t5 +MACRO \ACIRCUMFLEX latin-t5 +MACRO \acircumflex latin-t5 +MACRO \AE cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 +MACRO \ae cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR ipa-t3 +MACRO \b cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR ipa-t3 OR latin-t5 \ + OR cyrillic-x2 +MACRO \bagodoisuul mongolian-lms +MACRO \biodoisuul mongolian-lms +MACRO \bituushilbe mongolian-lms +MACRO \bituuzardigt mongolian-lms +MACRO \bosooshilbe mongolian-lms +MACRO \buruuxarsangedes mongolian-lms +MACRO \C cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \c cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR ipa-t3 OR latin-t5 \ + OR cyrillic-x2 +MACRO \capitalacute symbols-ts1 +MACRO \capitalbreve symbols-ts1 +MACRO \capitalcaron symbols-ts1 +MACRO \capitalcedilla symbols-ts1 +MACRO \capitalcircumflex symbols-ts1 +MACRO \capitaldieresis symbols-ts1 +MACRO \capitaldotaccent symbols-ts1 +MACRO \capitalgrave symbols-ts1 +MACRO \capitalhungarumlaut symbols-ts1 +MACRO \capitalmacron symbols-ts1 +MACRO \capitalnewtie symbols-ts1 +MACRO \capitalogonek symbols-ts1 +MACRO \capitalring symbols-ts1 +MACRO \capitaltie symbols-ts1 +MACRO \capitaltilde symbols-ts1 +MACRO \ceg mongolian-lms +MACRO \cegteishud mongolian-lms +MACRO \Ch cyrillic-lmc +MACRO \ch cyrillic-lmc +# \clqq: IL2 +MACRO \copyright thai-lth OR latin-qx +# \crqq: IL2 +MACRO \CYRA cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyra cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRABHCH cyrillic-t2c OR cyrillic-x2 +MACRO \cyrabhch cyrillic-t2c OR cyrillic-x2 +MACRO \CYRABHCHDSC cyrillic-t2c OR cyrillic-x2 +MACRO \cyrabhchdsc cyrillic-t2c OR cyrillic-x2 +MACRO \CYRABHDZE cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \cyrabhdze cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \CYRABHHA cyrillic-t2c OR cyrillic-x2 +MACRO \cyrabhha cyrillic-t2c OR cyrillic-x2 +MACRO \CYRaccte cyrillic-xs +MACRO \CYRAE cyrillic-t2a OR cyrillic-x2 +MACRO \cyrae cyrillic-t2a OR cyrillic-x2 +MACRO \CYRAZ cyrillic-t2d OR cyrillic-xs +MACRO \cyraz cyrillic-t2d OR cyrillic-xs +MACRO \CYRB cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrb cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRBYUS cyrillic-t2d OR cyrillic-x2 \ + OR cyrillic-xs +MACRO \cyrbyus cyrillic-t2d OR cyrillic-x2 \ + OR cyrillic-xs +MACRO \CYRC cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrc cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRCH cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrch cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRCHERV cyrillic-t2d OR cyrillic-xs +MACRO \cyrcherv cyrillic-t2d OR cyrillic-xs +MACRO \CYRCHLDSC cyrillic-t2b OR cyrillic-x2 +MACRO \cyrchldsc cyrillic-t2b OR cyrillic-x2 +MACRO \CYRCHRDSC cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrchrdsc cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRCHVCRS cyrillic-t2a OR cyrillic-x2 +MACRO \cyrchvcrs cyrillic-t2a OR cyrillic-x2 +MACRO \CYRD cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrd cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrdash cyrillic-lcy OR cyrillic-ot2 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \CYRdasia cyrillic-t2d OR cyrillic-xs +MACRO \CYRDELTA cyrillic-t2b OR cyrillic-x2 +MACRO \cyrdelta cyrillic-t2b OR cyrillic-x2 +MACRO \CYRDJE cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-x2 +MACRO \cyrdje cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-x2 +MACRO \CYRDZE cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 \ + OR cyrillic-xs +MACRO \cyrdze cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 \ + OR cyrillic-xs +MACRO \CYRDZHE cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrdzhe cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRE cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyre cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYREPS cyrillic-t2b OR cyrillic-t2d \ + OR cyrillic-x2 +MACRO \cyreps cyrillic-t2b OR cyrillic-t2d \ + OR cyrillic-x2 +MACRO \CYREREV cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrerev cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRERY cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrery cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRF cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrf cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRFITA cyrillic-ot2 OR cyrillic-t2d \ + OR cyrillic-xs +MACRO \cyrfita cyrillic-ot2 OR cyrillic-t2d \ + OR cyrillic-xs +MACRO \CYRG cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrg cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRGDSC cyrillic-t2b OR cyrillic-x2 +MACRO \cyrgdsc cyrillic-t2b OR cyrillic-x2 +MACRO \CYRGDSCHCRS cyrillic-t2b +MACRO \cyrgdschcrs cyrillic-t2b +MACRO \CYRGERV cyrillic-t2d OR cyrillic-xs +MACRO \cyrgerv cyrillic-t2d OR cyrillic-xs +MACRO \CYRGHCRS cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-x2 +MACRO \cyrghcrs cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-x2 +MACRO \CYRGHK cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \cyrghk cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \CYRGUP cyrillic-lcy OR cyrillic-t2a \ + OR cyrillic-x2 +MACRO \cyrgup cyrillic-lcy OR cyrillic-t2a \ + OR cyrillic-x2 +MACRO \CYRH cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrh cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRHDSC cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrhdsc cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRHHCRS cyrillic-t2b +MACRO \cyrhhcrs cyrillic-t2b +MACRO \CYRHHK cyrillic-t2b OR cyrillic-x2 +MACRO \cyrhhk cyrillic-t2b OR cyrillic-x2 +MACRO \CYRHRDSN cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrhrdsn cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRHSHA cyrillic-lmc +MACRO \cyrhsha cyrillic-lmc +MACRO \CYRI cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyri cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRIAZ cyrillic-t2d OR cyrillic-xs +MACRO \cyriaz cyrillic-t2d OR cyrillic-xs +MACRO \CYRIE cyrillic-lcy OR cyrillic-ot2 \ + OR cyrillic-t2a OR cyrillic-t2d \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \cyrie cyrillic-lcy OR cyrillic-ot2 \ + OR cyrillic-t2a OR cyrillic-t2d \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \CYRII cyrillic-lcy OR cyrillic-ot2 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 \ + OR cyrillic-xs +MACRO \cyrii cyrillic-lcy OR cyrillic-ot2 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 \ + OR cyrillic-xs +MACRO \CYRIOTBYUS cyrillic-t2d OR cyrillic-xs +MACRO \cyriotbyus cyrillic-t2d OR cyrillic-xs +# \CYRIOTE: PU +# \cyriote: PU +MACRO \CYRIOTEST cyrillic-t2d OR cyrillic-xs +MACRO \cyriotest cyrillic-t2d OR cyrillic-xs +MACRO \CYRIOTLYUS cyrillic-t2d OR cyrillic-xs +MACRO \cyriotlyus cyrillic-t2d OR cyrillic-xs +MACRO \CYRISHRT cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrishrt cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRISHRTDSC cyrillic-t2c +MACRO \cyrishrtdsc cyrillic-t2c +MACRO \CYRIZH cyrillic-ot2 OR cyrillic-t2d \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \cyrizh cyrillic-ot2 OR cyrillic-t2d \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \CYRIZHDGR cyrillic-xs +MACRO \cyrizhdgr cyrillic-xs +MACRO \CYRIZHE cyrillic-t2d OR cyrillic-xs +MACRO \cyrizhe cyrillic-t2d OR cyrillic-xs +MACRO \CYRIZHUML cyrillic-xs +MACRO \cyrizhuml cyrillic-xs +MACRO \CYRJE cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \cyrje cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \CYRK cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrk cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRkamora cyrillic-t2d OR cyrillic-xs +MACRO \CYRKBEAK cyrillic-t2a OR cyrillic-x2 +MACRO \cyrkbeak cyrillic-t2a OR cyrillic-x2 +MACRO \CYRKDSC cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrkdsc cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRKHCRS cyrillic-t2c OR cyrillic-x2 +MACRO \cyrkhcrs cyrillic-t2c OR cyrillic-x2 +MACRO \CYRKHK cyrillic-t2b OR cyrillic-x2 +MACRO \cyrkhk cyrillic-t2b OR cyrillic-x2 +MACRO \CYRkoloda cyrillic-xs +MACRO \CYRKOPPA cyrillic-t2d OR cyrillic-xs +MACRO \cyrkoppa cyrillic-t2d OR cyrillic-xs +MACRO \CYRKSI cyrillic-t2d OR cyrillic-xs +MACRO \cyrksi cyrillic-t2d OR cyrillic-xs +MACRO \CYRKVCRS cyrillic-t2a OR cyrillic-x2 +MACRO \cyrkvcrs cyrillic-t2a OR cyrillic-x2 +MACRO \CYRL cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrl cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrlangle cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR cyrillic-x2 +MACRO \CYRLDSC cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \cyrldsc cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \CYRlegion cyrillic-xs +MACRO \CYRleodr cyrillic-xs +MACRO \CYRLHK cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \cyrlhk cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \CYRLJE cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-x2 +MACRO \cyrlje cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-x2 +MACRO \CYRLYUS cyrillic-t2d OR cyrillic-xs +MACRO \cyrlyus cyrillic-t2d OR cyrillic-xs +MACRO \CYRM cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrm cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRMDSC cyrillic-t2c OR cyrillic-x2 +MACRO \cyrmdsc cyrillic-t2c OR cyrillic-x2 +MACRO \CYRMHK cyrillic-t2c +MACRO \cyrmhk cyrillic-t2c +MACRO \CYRN cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrn cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRNARROWE cyrillic-t2d OR cyrillic-xs +MACRO \cyrnarrowe cyrillic-t2d OR cyrillic-xs +MACRO \CYRNASH cyrillic-t2d OR cyrillic-xs +MACRO \cyrnash cyrillic-t2d OR cyrillic-xs +MACRO \CYRNDSC cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrndsc cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRNG cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \cyrng cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \CYRNHK cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \cyrnhk cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \CYRNJE cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-x2 +MACRO \cyrnje cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-x2 +MACRO \CYRNLHK cyrillic-t2c OR cyrillic-x2 +MACRO \cyrnlhk cyrillic-t2c OR cyrillic-x2 +MACRO \CYRNo cyrillic-t2d +MACRO \CYRO cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyro cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYROERY cyrillic-xs +MACRO \cyroery cyrillic-xs +MACRO \CYROHSN cyrillic-xs +MACRO \cyrohsn cyrillic-xs +MACRO \CYROLG cyrillic-xs +MACRO \cyrolg cyrillic-xs +# \CYROMEGA: PU +# \cyromega: PU +# \CYROMEGARND: PU +# \cyromegarnd: PU +# \CYROMEGATITLO: PU +# \cyromegatitlo: PU +MACRO \CYROMGA cyrillic-t2d OR cyrillic-xs +MACRO \cyromga cyrillic-t2d OR cyrillic-xs +MACRO \CYROMRND cyrillic-t2d OR cyrillic-xs +MACRO \cyromrnd cyrillic-t2d OR cyrillic-xs +MACRO \CYROMTLO cyrillic-t2d OR cyrillic-xs +MACRO \cyromtlo cyrillic-t2d OR cyrillic-xs +MACRO \CYROOCDDOT cyrillic-xs +MACRO \cyroocddot cyrillic-xs +MACRO \CYROOCDOT cyrillic-xs +MACRO \cyroocdot cyrillic-xs +MACRO \CYROT cyrillic-t2d OR cyrillic-xs +MACRO \cyrot cyrillic-t2d OR cyrillic-xs +MACRO \CYROTLD cyrillic-lmc OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \cyrotld cyrillic-lmc OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-x2 +MACRO \CYRP cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrp cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRpaerok cyrillic-t2d OR cyrillic-xs +MACRO \CYRpalatal cyrillic-t2d OR cyrillic-xs +MACRO \CYRpalochka cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRPHK cyrillic-t2c OR cyrillic-x2 +MACRO \cyrphk cyrillic-t2c OR cyrillic-x2 +MACRO \CYRpneuac cyrillic-t2d OR cyrillic-xs +MACRO \CYRpneugrav cyrillic-t2d OR cyrillic-xs +MACRO \CYRPPETER cyrillic-xs +MACRO \cyrppeter cyrillic-xs +MACRO \CYRPSI cyrillic-t2d OR cyrillic-xs +MACRO \cyrpsi cyrillic-t2d OR cyrillic-xs +MACRO \CYRpsili cyrillic-t2d OR cyrillic-xs +MACRO \CYRQ cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrq cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRR cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrr cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrrangle cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR cyrillic-x2 +MACRO \CYRRDSC cyrillic-t2c OR cyrillic-x2 +MACRO \cyrrdsc cyrillic-t2c OR cyrillic-x2 +MACRO \CYRRHK cyrillic-t2c +MACRO \cyrrhk cyrillic-t2c +MACRO \CYRRTICK cyrillic-t2c +MACRO \cyrrtick cyrillic-t2c +MACRO \CYRS cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrs cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRSACRS cyrillic-t2b +MACRO \cyrsacrs cyrillic-t2b +MACRO \CYRSCHWA cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrschwa cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRSDSC cyrillic-t2a OR cyrillic-x2 +MACRO \cyrsdsc cyrillic-t2a OR cyrillic-x2 +MACRO \CYRSEMISFTSN cyrillic-t2c +MACRO \cyrsemisftsn cyrillic-t2c +MACRO \CYRSFTSN cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrsftsn cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRSH cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrsh cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRSHCH cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrshch cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRSHHA cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrshha cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRSHTA cyrillic-t2d OR cyrillic-xs +MACRO \cyrshta cyrillic-t2d OR cyrillic-xs +MACRO \CYRT cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrt cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRTDSC cyrillic-t2c OR cyrillic-x2 +MACRO \cyrtdsc cyrillic-t2c OR cyrillic-x2 +MACRO \CYRTETSE cyrillic-t2c OR cyrillic-x2 +MACRO \cyrtetse cyrillic-t2c OR cyrillic-x2 +MACRO \CYRthousands cyrillic-t2d OR cyrillic-xs +# \cyrthousands: PU +MACRO \CYRtitlo cyrillic-t2d OR cyrillic-xs +MACRO \CYRtma cyrillic-xs +MACRO \CYRtmatem cyrillic-xs +MACRO \CYRTPETER cyrillic-xs +MACRO \cyrtpeter cyrillic-xs +MACRO \CYRTSHE cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-x2 +MACRO \cyrtshe cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-x2 +MACRO \CYRU cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyru cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRUK cyrillic-t2d OR cyrillic-xs +MACRO \cyruk cyrillic-t2d OR cyrillic-xs +MACRO \CYRUSHRT cyrillic-lcy OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-x2 +MACRO \cyrushrt cyrillic-lcy OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-x2 +MACRO \CYRV cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrv cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRVARIZHE cyrillic-t2d OR cyrillic-xs +MACRO \cyrvarizhe cyrillic-t2d OR cyrillic-xs +MACRO \CYRVARUK cyrillic-xs +MACRO \cyrvaruk cyrillic-xs +MACRO \CYRvdasia cyrillic-xs +MACRO \CYRVIA cyrillic-xs +MACRO \cyrvia cyrillic-xs +MACRO \CYRVIZH cyrillic-xs +MACRO \cyrvizh cyrillic-xs +MACRO \CYRVLYUS cyrillic-xs +MACRO \cyrvlyus cyrillic-xs +MACRO \CYRvpneuac cyrillic-xs +MACRO \CYRvpneugrav cyrillic-xs +MACRO \CYRvpsili cyrillic-xs +MACRO \CYRvran cyrillic-xs +MACRO \CYRvzvat cyrillic-xs +MACRO \CYRW cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \cyrw cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +MACRO \CYRY cyrillic-lmc OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-x2 +MACRO \cyry cyrillic-lmc OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-x2 +MACRO \CYRYA cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrya cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRYAT cyrillic-ot2 OR cyrillic-t2d \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \cyryat cyrillic-ot2 OR cyrillic-t2d \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \CYRYHCRS cyrillic-t2a OR cyrillic-x2 +MACRO \cyryhcrs cyrillic-t2a OR cyrillic-x2 +MACRO \CYRYI cyrillic-lcy OR cyrillic-t2a \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \cyryi cyrillic-lcy OR cyrillic-t2a \ + OR cyrillic-x2 OR cyrillic-xs +MACRO \CYRYO cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyryo cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRYU cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyryu cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRZ cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrz cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRZDSC cyrillic-t2a OR cyrillic-x2 +MACRO \cyrzdsc cyrillic-t2a OR cyrillic-x2 +MACRO \CYRZELO cyrillic-xs +MACRO \cyrzelo cyrillic-xs +MACRO \CYRZELOM cyrillic-xs +MACRO \cyrzelom cyrillic-xs +MACRO \CYRZEMLA cyrillic-t2d OR cyrillic-xs +MACRO \cyrzemla cyrillic-t2d OR cyrillic-xs +MACRO \CYRZH cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \cyrzh cyrillic-lcy OR cyrillic-lmc \ + OR cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 +MACRO \CYRZHDSC cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-x2 +MACRO \cyrzhdsc cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-x2 +MACRO \CYRzvat cyrillic-t2d OR cyrillic-xs +MACRO \d cyrillic-lcy OR latin-ot1 \ + OR cyrillic-ot2 OR latin-ot4 \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR ipa-t3 OR latin-t5 \ + OR cyrillic-x2 +MACRO \dagesh hebrew-he8 OR hebrew-mkr +MACRO \dawxarcegtxewteeqix mongolian-lms +MACRO \dawxarcegtzawj mongolian-lms +MACRO \DH latin-qx OR latin-t1 +MACRO \dh latin-qx OR latin-t1 OR ipa-t3 +MACRO \DJ ( latin-ot1 AND babel ) OR latin-qx \ + OR latin-t1 OR latin-t5 +MACRO \dj ( latin-ot1 AND babel ) OR latin-qx \ + OR latin-t1 OR latin-t5 +MACRO \dorwoljin mongolian-lms +MACRO \doublevav hebrew-he8 OR hebrew-mkr +MACRO \doubleyod hebrew-he8 OR hebrew-mkr +MACRO \ECIRCUMFLEX latin-t5 +MACRO \ecircumflex latin-t5 +MACRO \erweeljinshilbe mongolian-lms +MACRO \etgershilbe mongolian-lms +MACRO \F cyrillic-t2d OR cyrillic-xs +MACRO \f cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-x2 +# \flqq: IL2 +# \frqq: IL2 +MACRO \gceg mongolian-lms +MACRO \gedes mongolian-lms +MACRO \gedesteishilbe mongolian-lms +MACRO \geresh hebrew-mkr +MACRO \gershayim hebrew-mkr +MACRO \grq latin-ot1 OR latin-t1 +MACRO \grqq latin-ot1 OR latin-t1 +MACRO \guillemotleft cyrillic-lcy OR devanagari-ldv \ + OR greek-lgr OR thai-lta \ + OR telugu-ltg \ + OR ( latin-ot1 AND babel ) \ + OR cyrillic-ot2 OR latin-ot4 \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR latin-t5 OR cyrillic-x2 +MACRO \guillemotright cyrillic-lcy OR devanagari-ldv \ + OR greek-lgr OR thai-lta \ + OR telugu-ltg \ + OR ( latin-ot1 AND babel ) \ + OR cyrillic-ot2 OR latin-ot4 \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR latin-t5 OR cyrillic-x2 +MACRO \guilsinglleft devanagari-ldv OR thai-lta \ + OR telugu-ltg \ + OR ( latin-ot1 AND babel ) \ + OR latin-t1 OR latin-t5 +MACRO \guilsinglright devanagari-ldv OR thai-lta \ + OR telugu-ltg \ + OR ( latin-ot1 AND babel ) \ + OR latin-t1 OR latin-t5 +MACRO \H cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR ipa-t3 OR cyrillic-x2 +MACRO \h latin-t5 +MACRO \halfnum mongolian-lms +MACRO \halfnumtgedes mongolian-lms +MACRO \hatafpatah hebrew-he8 OR hebrew-mkr +MACRO \hatafqamats hebrew-he8 OR hebrew-mkr +MACRO \hatafsegol hebrew-he8 OR hebrew-mkr +MACRO \hebalef hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebaleflamed hebrew-mkr +MACRO \hebayin hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebbet hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebdalet hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebfinalkaf hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebfinalmem hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebfinalnun hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebfinalpe hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebfinaltsadi hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebgimel hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebhe hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebhet hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebkaf hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \heblamed hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebmem hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebnun hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebpe hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebqof hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebresh hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebsamekh hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebshin hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebtav hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebtet hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebtsadi hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebvav hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebyod hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hebzayin hebrew-he8 OR hebrew-lhe \ + OR hebrew-mkr +MACRO \hiriq hebrew-he8 OR hebrew-mkr +MACRO \holam hebrew-he8 OR hebrew-mkr +MACRO \I cyrillic-lmc +MACRO \i cyrillic-lcy OR devanagari-ldv \ + OR cyrillic-lmc OR thai-lta \ + OR telugu-ltg OR latin-ot1 \ + OR cyrillic-ot2 OR latin-ot4 \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR ipa-t3 OR latin-t5 +MACRO \IJ latin-ot1 OR latin-t1 +MACRO \ij latin-ot1 OR latin-t1 +MACRO \j cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR ipa-t3 +MACRO \jischar japanese-c40 OR japanese-c42 +MACRO \k latin-qx OR latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR ipa-t3 OR cyrillic-x2 +MACRO \klingona klingon-lkl +MACRO \klingonb klingon-lkl +MACRO \klingonch klingon-lkl +MACRO \klingonD klingon-lkl +MACRO \klingone klingon-lkl +MACRO \klingoneight klingon-lkl +MACRO \klingonfive klingon-lkl +MACRO \klingonfour klingon-lkl +MACRO \klingongh klingon-lkl +MACRO \klingonglotstop klingon-lkl +MACRO \klingonH klingon-lkl +MACRO \klingonI klingon-lkl +MACRO \klingonj klingon-lkl +MACRO \klingonl klingon-lkl +MACRO \klingonm klingon-lkl +MACRO \klingonn klingon-lkl +MACRO \klingonng klingon-lkl +MACRO \klingonnine klingon-lkl +MACRO \klingono klingon-lkl +MACRO \klingonone klingon-lkl +MACRO \klingonp klingon-lkl +MACRO \klingonQ klingon-lkl +MACRO \klingonq klingon-lkl +MACRO \klingonr klingon-lkl +MACRO \klingonS klingon-lkl +MACRO \klingonseven klingon-lkl +MACRO \klingonsix klingon-lkl +MACRO \klingont klingon-lkl +MACRO \klingonthree klingon-lkl +MACRO \klingontlh klingon-lkl +MACRO \klingontwo klingon-lkl +MACRO \klingonu klingon-lkl +MACRO \klingonv klingon-lkl +MACRO \klingonw klingon-lkl +MACRO \klingony klingon-lkl +MACRO \klingonzero klingon-lkl +MACRO \L cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 +MACRO \l cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 +MACRO \leftguillemot cyrillic-lmc +MACRO \lewer mongolian-lms +MACRO \malgaitaititem mongolian-lms +MACRO \maqaf hebrew-he8 OR hebrew-mkr +MACRO \matgarshilbe mongolian-lms +MACRO \meteg hebrew-he8 OR hebrew-mkr +MACRO \mewer mongolian-lms +MACRO \MyTogrog cyrillic-lmc +MACRO \mytogrog cyrillic-lmc +MACRO \nceg mongolian-lms +MACRO \newtie symbols-ts1 +MACRO \NG latin-t1 +MACRO \ng latin-t1 OR ipa-t3 +MACRO \No cyrillic-lmc +MACRO \num mongolian-lms +MACRO \numtaigedes mongolian-lms +MACRO \numtdelbenqix mongolian-lms +MACRO \O cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 +MACRO \o cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR ipa-t3 +MACRO \OCIRCUMFLEX latin-t5 +MACRO \ocircumflex latin-t5 +MACRO \OE cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR ipa-t3 +MACRO \oe cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR ipa-t3 +MACRO \OHORN latin-t5 +MACRO \ohorn latin-t5 +MACRO \orxic mongolian-lms +MACRO \paseq hebrew-he8 +MACRO \patah hebrew-he8 OR hebrew-mkr +MACRO \perthousand cyrillic-t2d +MACRO \qagt mongolian-lms +MACRO \qamats hebrew-he8 OR hebrew-mkr +MACRO \Qh cyrillic-lmc +MACRO \qh cyrillic-lmc +MACRO \qubuts hebrew-he8 OR hebrew-mkr +MACRO \quotedblbase cyrillic-lcy OR devanagari-ldv \ + OR thai-lta OR telugu-ltg \ + OR ( latin-ot1 AND babel ) \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR latin-t5 OR cyrillic-x2 +MACRO \quotesinglbase devanagari-ldv OR thai-lta \ + OR telugu-ltg \ + OR ( latin-ot1 AND babel ) \ + OR latin-t1 OR latin-t5 +MACRO \r cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR ipa-t3 OR latin-t5 OR cyrillic-x2 +MACRO \rafe hebrew-he8 +MACRO \rightguillemot cyrillic-lmc +MACRO \Sc cyrillic-lmc +MACRO \sc cyrillic-lmc +MACRO \secerweeljin mongolian-lms +MACRO \secnumtdelbenqix mongolian-lms +MACRO \secondarygedes mongolian-lms +MACRO \secondaryqagt mongolian-lms +MACRO \secondaryshud mongolian-lms +MACRO \secsertenqixtnum mongolian-lms +MACRO \segol hebrew-he8 OR hebrew-mkr +MACRO \sereeewer mongolian-lms +MACRO \sertenqixtnum mongolian-lms +MACRO \Sh cyrillic-lmc +MACRO \sh cyrillic-lmc +MACRO \sheva hebrew-he8 OR hebrew-mkr +MACRO \shilbe mongolian-lms +MACRO \shindot hebrew-he8 OR hebrew-mkr +MACRO \shud mongolian-lms +MACRO \sindot hebrew-he8 OR hebrew-mkr +MACRO \sofpasuq hebrew-he8 OR hebrew-mkr +MACRO \SS greek-lgr OR thai-lth OR latin-ot1 \ + OR latin-t1 +MACRO \ss cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 +MACRO \suul mongolian-lms +MACRO \suuliinlewer mongolian-lms +MACRO \suuliinmewer mongolian-lms +MACRO \suuliinzawj mongolian-lms +MACRO \t math-oml OR ipa-t3 OR symbols-ts1 +MACRO \tengwarAare tengwar-ltw +MACRO \tengwarAareNuquerna tengwar-ltw +MACRO \tengwarAcute tengwar-ltw +MACRO \tengwarAlda tengwar-ltw +MACRO \tengwarAmaticse tengwar-ltw +MACRO \tengwarAmpa tengwar-ltw +MACRO \tengwarAnca tengwar-ltw +MACRO \tengwarAndo tengwar-ltw +MACRO \tengwarAnga tengwar-ltw +MACRO \tengwarAnna tengwar-ltw +MACRO \tengwarAnnaSindarinwa tengwar-ltw +MACRO \tengwarAnto tengwar-ltw +MACRO \tengwarArda tengwar-ltw +MACRO \tengwarBreve tengwar-ltw +MACRO \tengwarCalma tengwar-ltw +MACRO \tengwarDoubleAcute tengwar-ltw +MACRO \tengwarDoubleAcuteBelow tengwar-ltw +MACRO \tengwarDoubleLeftCurl tengwar-ltw +MACRO \tengwarDoublePusta tengwar-ltw +MACRO \tengwarDoubler tengwar-ltw +MACRO \tengwarDoubleRightCurl tengwar-ltw +MACRO \tengwarEight tengwar-ltw +MACRO \tengwarEleven tengwar-ltw +MACRO \tengwarExclam tengwar-ltw +MACRO \tengwarExtAmpa tengwar-ltw +MACRO \tengwarExtAnca tengwar-ltw +MACRO \tengwarExtAnto tengwar-ltw +MACRO \tengwarExtFormen tengwar-ltw +MACRO \tengwarExtHarma tengwar-ltw +MACRO \tengwarExtHwesta tengwar-ltw +MACRO \tengwarExtThuule tengwar-ltw +MACRO \tengwarExtUnque tengwar-ltw +MACRO \tengwarFive tengwar-ltw +MACRO \tengwarFormen tengwar-ltw +MACRO \tengwarFour tengwar-ltw +MACRO \tengwarHalla tengwar-ltw +MACRO \tengwarHarma tengwar-ltw +MACRO \tengwarHwesta tengwar-ltw +MACRO \tengwarHwestaSindarinwa tengwar-ltw +MACRO \tengwarHyarmen tengwar-ltw +MACRO \tengwarLambe tengwar-ltw +MACRO \tengwarLeftCurl tengwar-ltw +MACRO \tengwarLeftCurlBelow tengwar-ltw +MACRO \tengwarLongCarrier tengwar-ltw +MACRO \tengwarLongCarrierBelow tengwar-ltw +MACRO \tengwarLongSection tengwar-ltw +MACRO \tengwarMalta tengwar-ltw +MACRO \tengwarNasalizer tengwar-ltw +MACRO \tengwarNine tengwar-ltw +MACRO \tengwarNoldo tengwar-ltw +MACRO \tengwarNunticse tengwar-ltw +MACRO \tengwarNuumen tengwar-ltw +MACRO \tengwarNwalme tengwar-ltw +MACRO \tengwarOore tengwar-ltw +MACRO \tengwarParma tengwar-ltw +MACRO \tengwarPusta tengwar-ltw +MACRO \tengwarQuesse tengwar-ltw +MACRO \tengwarQuestion tengwar-ltw +MACRO \tengwarRightCurl tengwar-ltw +MACRO \tengwarRightCurlBelow tengwar-ltw +MACRO \tengwarRoomen tengwar-ltw +MACRO \tengwarSection tengwar-ltw +MACRO \tengwarSeven tengwar-ltw +MACRO \tengwarShortCarrier tengwar-ltw +MACRO \tengwarSilme tengwar-ltw +MACRO \tengwarSilmeNuquerna tengwar-ltw +MACRO \tengwarSix tengwar-ltw +MACRO \tengwarStemlessAnna tengwar-ltw +MACRO \tengwarStemlessOore tengwar-ltw +MACRO \tengwarStemlessVala tengwar-ltw +MACRO \tengwarStemlessVilya tengwar-ltw +MACRO \tengwarTen tengwar-ltw +MACRO \tengwarThree tengwar-ltw +MACRO \tengwarThreeDotsAbove tengwar-ltw +MACRO \tengwarThreeDotsBelow tengwar-ltw +MACRO \tengwarThuule tengwar-ltw +MACRO \tengwarTilde tengwar-ltw +MACRO \tengwarTinco tengwar-ltw +MACRO \tengwarTwo tengwar-ltw +MACRO \tengwarTwoDotsAbove tengwar-ltw +MACRO \tengwarTwoDotsBelow tengwar-ltw +MACRO \tengwarUmbar tengwar-ltw +MACRO \tengwarUngwe tengwar-ltw +MACRO \tengwarUnque tengwar-ltw +MACRO \tengwarUure tengwar-ltw +MACRO \tengwarVala tengwar-ltw +MACRO \tengwarVilya tengwar-ltw +MACRO \tengwarYanta tengwar-ltw +MACRO \tertiarylewer mongolian-lms +# \textacute: PD1, PU +MACRO \textacutedbl symbols-ts1 +MACRO \textacutemacron ipa-t3 +MACRO \textacutewedge ipa-t3 +MACRO \textadvancing ipa-t3 +MACRO \textAlpha greek-lgr +MACRO \textalpha greek-lgr OR latin-qx +# \textampersand: PD1, PU +MACRO \textangkhankhu thai-lth +MACRO \textanglearc latin-qx +MACRO \textanoteleia greek-lgr +MACRO \textaolig ipa-ts3 +MACRO \textapprox latin-qx +MACRO \textaristerikeraia greek-lgr +MACRO \textascendercompwordmark symbols-ts1 +MACRO \textascii ethiopic-let OR greek-lgr \ + OR telugu-ltl OR unicode-luc \ + OR hebrew-mkr OR ipa-t3 +MACRO \textasciiacute symbols-ts1 +MACRO \textasciibreve symbols-ts1 +MACRO \textasciicaron symbols-ts1 +MACRO \textasciicircum devanagari-ldv OR thai-lta \ + OR telugu-ltg OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textasciidieresis symbols-ts1 +MACRO \textasciigrave symbols-ts1 +MACRO \textasciimacron symbols-ts1 +MACRO \textasciitilde devanagari-ldv OR thai-lta \ + OR telugu-ltg OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textasteriskcentered math-oms OR symbols-ts1 +MACRO \textautosigma greek-lgr +MACRO \textbabygamma ipa-t3 +MACRO \textbackslash devanagari-ldv OR thai-lta \ + OR telugu-ltg OR math-oms OR latin-qx \ + OR latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR latin-t5 OR cyrillic-x2 +MACRO \textbaht thai-c90 OR thai-lta OR symbols-ts1 +MACRO \textbar thai-c90 OR devanagari-ldv \ + OR thai-lta OR telugu-ltg OR math-oms \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textbarb ipa-t3 +MACRO \textbarc ipa-t3 +MACRO \textbard ipa-t3 +MACRO \textbardbl symbols-ts1 +MACRO \textbardotlessj ipa-t3 +MACRO \textbarg ipa-t3 +MACRO \textbarglotstop ipa-t3 +MACRO \textbari ipa-t3 +MACRO \textbarl ipa-t3 +MACRO \textbaro ipa-t3 +MACRO \textbarrevglotstop ipa-t3 +MACRO \textbaru ipa-t3 +MACRO \textbeltl ipa-t3 +MACRO \textbenttailyogh ipa-ts3 +MACRO \textBeta greek-lgr +MACRO \textbeta greek-lgr OR latin-qx OR ipa-t3 +MACRO \textBhook latin-t4 +MACRO \textbhook latin-t4 +MACRO \textbigcircle symbols-ts1 +MACRO \textbktailgamma ipa-ts3 +MACRO \textblank symbols-ts1 +MACRO \textborn symbols-ts1 +MACRO \textbottomtiebar ipa-t3 +MACRO \textbraceleft thai-c90 OR devanagari-ldv \ + OR thai-lta OR telugu-ltg OR math-oms \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textbraceright thai-c90 OR devanagari-ldv \ + OR thai-lta OR telugu-ltg OR math-oms \ + OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +# \textbreve: PD1, PU +MACRO \textbrevemacron ipa-t3 +MACRO \textbrokenbar symbols-ts1 +# \textBS: PD1, PU +MACRO \textbullet thai-lth OR math-oms OR latin-qx \ + OR symbols-ts1 +MACRO \textbullseye ipa-t3 +MACRO \textcapitalcompwordmark symbols-ts1 +# \textcaron: PD1, PU +# \textcdot: PD1, PU +# \textcedilla: PD1, PU +MACRO \textcelsius symbols-ts1 +MACRO \textceltpal ipa-t3 +MACRO \textcent symbols-ts1 +MACRO \textcentoldstyle symbols-ts1 +MACRO \textChi greek-lgr +MACRO \textchi greek-lgr OR ipa-t3 +MACRO \textChook latin-t4 +MACRO \textchook latin-t4 +MACRO \textcircled math-oms OR symbols-ts1 +MACRO \textcircledP symbols-ts1 +MACRO \textcircumacute ipa-t3 +MACRO \textcircumdot ipa-t3 +# \textcircumflex: PD1, PU +MACRO \textcloseepsilon ipa-t3 +MACRO \textcloseomega ipa-t3 +MACRO \textcloserevepsilon ipa-t3 +MACRO \textcolonmonetary symbols-ts1 +MACRO \textcommatailz ipa-t3 +MACRO \textcompwordmark latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR latin-t5 OR cyrillic-x2 +MACRO \textcopyleft symbols-ts1 +MACRO \textcopyright hebrew-he8 OR greek-lgr OR hebrew-lhe \ + OR symbols-ts1 +MACRO \textcorner ipa-t3 +# \textCR: PD1, PU +MACRO \textcrb ipa-t3 +MACRO \textcrd ipa-t3 +MACRO \textcrg ipa-t3 +MACRO \textcrh ipa-t3 +MACRO \textcrinvglotstop ipa-t3 +MACRO \textcrlambda ipa-t3 +MACRO \textcrtwo ipa-t3 +MACRO \textctc ipa-t3 +MACRO \textctd ipa-t3 +MACRO \textctdctzlig ipa-t3 +MACRO \textctesh ipa-t3 +MACRO \textctinvglotstop ipa-ts3 +MACRO \textctj ipa-t3 +MACRO \textctjvar ipa-ts3 +MACRO \textctn ipa-t3 +MACRO \textctstretchc ipa-ts3 +MACRO \textctstretchcvar ipa-ts3 +MACRO \textctt ipa-t3 +MACRO \textcttctclig ipa-t3 +MACRO \textctturnt ipa-ts3 +MACRO \textctyogh ipa-t3 +MACRO \textctz ipa-t3 +MACRO \textcurrency cyrillic-lcy OR latin-qx \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR symbols-ts1 \ + OR cyrillic-x2 +MACRO \textDafrican latin-t4 +MACRO \textdagger math-oms OR latin-qx OR symbols-ts1 +MACRO \textdaggerdbl math-oms OR latin-qx OR symbols-ts1 +MACRO \textdasia greek-lgr +MACRO \textdasiaiota greek-lgr +MACRO \textdasiaoxia greek-lgr +MACRO \textdasiaoxiaiota greek-lgr +MACRO \textdasiaperispomeni greek-lgr +MACRO \textdasiaperispomeniiota greek-lgr +MACRO \textdasiavaria greek-lgr +MACRO \textdasiavariaiota greek-lgr +MACRO \textdblgravecmb latin-t4 +MACRO \textdblhyphen symbols-ts1 +MACRO \textdblhyphenchar symbols-ts1 +MACRO \textdblig ipa-ts3 +MACRO \textdctzlig ipa-t3 +MACRO \textdegree latin-qx OR symbols-ts1 +MACRO \textDelta greek-lgr OR latin-qx +MACRO \textdelta greek-lgr OR latin-qx +MACRO \textdevanagaria devanagari-ldv +MACRO \textdevanagariaa devanagari-ldv +MACRO \textdevanagariabbreviation devanagari-ldv +MACRO \textdevanagariai devanagari-ldv +MACRO \textdevanagarianudatta devanagari-ldv +MACRO \textdevanagarianusvara devanagari-ldv +MACRO \textdevanagariau devanagari-ldv +MACRO \textdevanagariavagraha devanagari-ldv +MACRO \textdevanagariba devanagari-ldv +MACRO \textdevanagaribha devanagari-ldv +MACRO \textdevanagarica devanagari-ldv +MACRO \textdevanagaricandrabindu devanagari-ldv +MACRO \textdevanagaricandrae devanagari-ldv +MACRO \textdevanagaricandrao devanagari-ldv +MACRO \textdevanagaricha devanagari-ldv +MACRO \textdevanagarida devanagari-ldv +MACRO \textdevanagaridanda devanagari-ldv +MACRO \textdevanagaridda devanagari-ldv +MACRO \textdevanagaridddha devanagari-ldv +MACRO \textdevanagariddha devanagari-ldv +MACRO \textdevanagaridha devanagari-ldv +MACRO \textdevanagaridoubledanda devanagari-ldv +MACRO \textdevanagarie devanagari-ldv +MACRO \textdevanagarieight devanagari-ldv +MACRO \textdevanagarifa devanagari-ldv +MACRO \textdevanagarifive devanagari-ldv +MACRO \textdevanagarifour devanagari-ldv +MACRO \textdevanagariga devanagari-ldv +MACRO \textdevanagarigha devanagari-ldv +MACRO \textdevanagarighha devanagari-ldv +MACRO \textdevanagariha devanagari-ldv +MACRO \textdevanagarii devanagari-ldv +MACRO \textdevanagariii devanagari-ldv +MACRO \textdevanagarija devanagari-ldv +MACRO \textdevanagarijha devanagari-ldv +MACRO \textdevanagarika devanagari-ldv +MACRO \textdevanagarikha devanagari-ldv +MACRO \textdevanagarikhha devanagari-ldv +MACRO \textdevanagarila devanagari-ldv +MACRO \textdevanagarilla devanagari-ldv +MACRO \textdevanagarillla devanagari-ldv +MACRO \textdevanagarima devanagari-ldv +MACRO \textdevanagarina devanagari-ldv +MACRO \textdevanagaringa devanagari-ldv +MACRO \textdevanagarinine devanagari-ldv +MACRO \textdevanagarinna devanagari-ldv +MACRO \textdevanagarinnna devanagari-ldv +MACRO \textdevanagarinukta devanagari-ldv +MACRO \textdevanagarinya devanagari-ldv +MACRO \textdevanagario devanagari-ldv +MACRO \textdevanagariom devanagari-ldv +MACRO \textdevanagarione devanagari-ldv +MACRO \textdevanagaripa devanagari-ldv +MACRO \textdevanagaripha devanagari-ldv +MACRO \textdevanagariqa devanagari-ldv +MACRO \textdevanagarira devanagari-ldv +MACRO \textdevanagarirha devanagari-ldv +MACRO \textdevanagarirra devanagari-ldv +MACRO \textdevanagarisa devanagari-ldv +MACRO \textdevanagariseven devanagari-ldv +MACRO \textdevanagarisha devanagari-ldv +MACRO \textdevanagarishorte devanagari-ldv +MACRO \textdevanagarishorto devanagari-ldv +MACRO \textdevanagarisix devanagari-ldv +MACRO \textdevanagarissa devanagari-ldv +MACRO \textdevanagarita devanagari-ldv +MACRO \textdevanagaritha devanagari-ldv +MACRO \textdevanagarithree devanagari-ldv +MACRO \textdevanagaritta devanagari-ldv +MACRO \textdevanagarittha devanagari-ldv +MACRO \textdevanagaritwo devanagari-ldv +MACRO \textdevanagariu devanagari-ldv +MACRO \textdevanagariudatta devanagari-ldv +MACRO \textdevanagariuu devanagari-ldv +MACRO \textdevanagariva devanagari-ldv +MACRO \textdevanagarivirama devanagari-ldv +MACRO \textdevanagarivisarga devanagari-ldv +MACRO \textdevanagarivocalicl devanagari-ldv +MACRO \textdevanagarivocalicll devanagari-ldv +MACRO \textdevanagarivocalicr devanagari-ldv +MACRO \textdevanagarivocalicrr devanagari-ldv +MACRO \textdevanagarivowelaa devanagari-ldv +MACRO \textdevanagarivowelai devanagari-ldv +MACRO \textdevanagarivowelau devanagari-ldv +MACRO \textdevanagarivowelcandrae devanagari-ldv +MACRO \textdevanagarivowelcandrao devanagari-ldv +MACRO \textdevanagarivowele devanagari-ldv +MACRO \textdevanagarivoweli devanagari-ldv +MACRO \textdevanagarivowelii devanagari-ldv +MACRO \textdevanagarivowelo devanagari-ldv +MACRO \textdevanagarivowelshorte devanagari-ldv +MACRO \textdevanagarivowelshorto devanagari-ldv +MACRO \textdevanagarivowelu devanagari-ldv +MACRO \textdevanagarivoweluu devanagari-ldv +MACRO \textdevanagarivowelvocalicl devanagari-ldv +MACRO \textdevanagarivowelvocalicll devanagari-ldv +MACRO \textdevanagarivowelvocalicr devanagari-ldv +MACRO \textdevanagarivowelvocalicrr devanagari-ldv +MACRO \textdevanagariya devanagari-ldv +MACRO \textdevanagariyya devanagari-ldv +MACRO \textdevanagariza devanagari-ldv +MACRO \textdevanagarizero devanagari-ldv +MACRO \textdexiakeraia greek-lgr +MACRO \textDhook latin-t4 +MACRO \textdhook latin-t4 +MACRO \textdialytikaoxia greek-lgr +MACRO \textdialytikaperispomeni greek-lgr +MACRO \textdialytikatonos greek-lgr +MACRO \textdialytikavaria greek-lgr +MACRO \textdiameter latin-qx +MACRO \textdied symbols-ts1 +# \textdieresis: PD1, PU +MACRO \textDigamma greek-lgr +MACRO \textdigamma greek-lgr +MACRO \textdiscount symbols-ts1 +MACRO \textdiv latin-qx OR symbols-ts1 +# \textdivide: LY1, PD1, PU +MACRO \textdivorced symbols-ts1 +MACRO \textdollar cyrillic-lcy OR devanagari-ldv \ + OR thai-lta OR telugu-ltg \ + OR latin-ot1 OR latin-ot4 OR latin-qx \ + OR latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR latin-t5 OR symbols-ts1 \ + OR cyrillic-x2 +MACRO \textdollaroldstyle symbols-ts1 +MACRO \textdong symbols-ts1 +# \textdotaccent: PD1, PU +MACRO \textdotacute ipa-t3 +MACRO \textdotbreve ipa-t3 +MACRO \textdoublebaresh ipa-t3 +MACRO \textdoublebarpipe ipa-t3 +MACRO \textdoublebarpipevar ipa-ts3 +MACRO \textdoublebarslash ipa-t3 +MACRO \textdoublegrave ipa-t3 +MACRO \textdoublepipe ipa-t3 +MACRO \textdoublepipevar ipa-ts3 +MACRO \textdoublevbaraccent ipa-t3 +MACRO \textdoublevertline ipa-t3 +MACRO \textdownarrow symbols-ts1 +MACRO \textdownfullarrow ipa-ts3 +MACRO \textdownstep ipa-t3 +MACRO \textdtail latin-t4 +MACRO \textdyoghlig ipa-t3 +MACRO \textdzlig ipa-t3 +MACRO \texteightoldstyle symbols-ts1 +MACRO \textell latin-qx +MACRO \textellipsis latin-qx +MACRO \textemdash thai-c90 OR cyrillic-lcy \ + OR devanagari-ldv OR greek-lgr \ + OR thai-lta OR telugu-ltg OR thai-lth \ + OR latin-ot1 OR cyrillic-ot2 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textendash thai-c90 OR cyrillic-lcy \ + OR devanagari-ldv OR thai-lta \ + OR telugu-ltg OR thai-lth \ + OR latin-ot1 OR cyrillic-ot2 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textEopen latin-t4 +MACRO \texteopen latin-t4 +MACRO \textEpsilon greek-lgr +MACRO \textepsilon greek-lgr OR ipa-t3 +MACRO \textEreversed latin-t4 +MACRO \textEsh latin-t4 +MACRO \textesh ipa-t3 OR latin-t4 +MACRO \textestimated symbols-ts1 +MACRO \textEta greek-lgr +MACRO \texteta greek-lgr +MACRO \textethiopicba ethiopic-let +MACRO \textethiopicbaa ethiopic-let +MACRO \textethiopicbe ethiopic-let +MACRO \textethiopicbee ethiopic-let +MACRO \textethiopicbi ethiopic-let +MACRO \textethiopicbo ethiopic-let +MACRO \textethiopicbu ethiopic-let +MACRO \textethiopicbwa ethiopic-let +MACRO \textethiopicca ethiopic-let +MACRO \textethiopiccaa ethiopic-let +MACRO \textethiopicce ethiopic-let +MACRO \textethiopiccee ethiopic-let +MACRO \textethiopiccha ethiopic-let +MACRO \textethiopicchaa ethiopic-let +MACRO \textethiopicche ethiopic-let +MACRO \textethiopicchee ethiopic-let +MACRO \textethiopicchi ethiopic-let +MACRO \textethiopiccho ethiopic-let +MACRO \textethiopicchu ethiopic-let +MACRO \textethiopicchwa ethiopic-let +MACRO \textethiopicci ethiopic-let +MACRO \textethiopicco ethiopic-let +MACRO \textethiopiccolon ethiopic-let +MACRO \textethiopiccomma ethiopic-let +MACRO \textethiopiccu ethiopic-let +MACRO \textethiopiccwa ethiopic-let +MACRO \textethiopicda ethiopic-let +MACRO \textethiopicdaa ethiopic-let +MACRO \textethiopicdda ethiopic-let +MACRO \textethiopicddaa ethiopic-let +MACRO \textethiopicdde ethiopic-let +MACRO \textethiopicddee ethiopic-let +MACRO \textethiopicddi ethiopic-let +MACRO \textethiopicddo ethiopic-let +MACRO \textethiopicddu ethiopic-let +MACRO \textethiopicddwa ethiopic-let +MACRO \textethiopicde ethiopic-let +MACRO \textethiopicdee ethiopic-let +MACRO \textethiopicdi ethiopic-let +MACRO \textethiopicdo ethiopic-let +MACRO \textethiopicdu ethiopic-let +MACRO \textethiopicdwa ethiopic-let +MACRO \textethiopiceight ethiopic-let +MACRO \textethiopiceighty ethiopic-let +MACRO \textethiopicfa ethiopic-let +MACRO \textethiopicfaa ethiopic-let +MACRO \textethiopicfe ethiopic-let +MACRO \textethiopicfee ethiopic-let +MACRO \textethiopicfi ethiopic-let +MACRO \textethiopicfifty ethiopic-let +MACRO \textethiopicfive ethiopic-let +MACRO \textethiopicfo ethiopic-let +MACRO \textethiopicforty ethiopic-let +MACRO \textethiopicfour ethiopic-let +MACRO \textethiopicfu ethiopic-let +MACRO \textethiopicfullstop ethiopic-let +MACRO \textethiopicfwa ethiopic-let +MACRO \textethiopicfya ethiopic-let +MACRO \textethiopicga ethiopic-let +MACRO \textethiopicgaa ethiopic-let +MACRO \textethiopicge ethiopic-let +MACRO \textethiopicgee ethiopic-let +MACRO \textethiopicgga ethiopic-let +MACRO \textethiopicggaa ethiopic-let +MACRO \textethiopicgge ethiopic-let +MACRO \textethiopicggee ethiopic-let +MACRO \textethiopicggi ethiopic-let +MACRO \textethiopicggo ethiopic-let +MACRO \textethiopicggu ethiopic-let +MACRO \textethiopicgi ethiopic-let +MACRO \textethiopicglottala ethiopic-let +MACRO \textethiopicglottalaa ethiopic-let +MACRO \textethiopicglottale ethiopic-let +MACRO \textethiopicglottalee ethiopic-let +MACRO \textethiopicglottali ethiopic-let +MACRO \textethiopicglottalo ethiopic-let +MACRO \textethiopicglottalu ethiopic-let +MACRO \textethiopicglottalwa ethiopic-let +MACRO \textethiopicgo ethiopic-let +MACRO \textethiopicgu ethiopic-let +MACRO \textethiopicgwa ethiopic-let +MACRO \textethiopicgwaa ethiopic-let +MACRO \textethiopicgwe ethiopic-let +MACRO \textethiopicgwee ethiopic-let +MACRO \textethiopicgwi ethiopic-let +MACRO \textethiopicha ethiopic-let +MACRO \textethiopichaa ethiopic-let +MACRO \textethiopiche ethiopic-let +MACRO \textethiopichee ethiopic-let +MACRO \textethiopichha ethiopic-let +MACRO \textethiopichhaa ethiopic-let +MACRO \textethiopichhe ethiopic-let +MACRO \textethiopichhee ethiopic-let +MACRO \textethiopichhi ethiopic-let +MACRO \textethiopichho ethiopic-let +MACRO \textethiopichhu ethiopic-let +MACRO \textethiopichhwa ethiopic-let +MACRO \textethiopichi ethiopic-let +MACRO \textethiopicho ethiopic-let +MACRO \textethiopichu ethiopic-let +MACRO \textethiopichundred ethiopic-let +MACRO \textethiopicja ethiopic-let +MACRO \textethiopicjaa ethiopic-let +MACRO \textethiopicje ethiopic-let +MACRO \textethiopicjee ethiopic-let +MACRO \textethiopicji ethiopic-let +MACRO \textethiopicjo ethiopic-let +MACRO \textethiopicju ethiopic-let +MACRO \textethiopicjwa ethiopic-let +MACRO \textethiopicka ethiopic-let +MACRO \textethiopickaa ethiopic-let +MACRO \textethiopicke ethiopic-let +MACRO \textethiopickee ethiopic-let +MACRO \textethiopicki ethiopic-let +MACRO \textethiopicko ethiopic-let +MACRO \textethiopicku ethiopic-let +MACRO \textethiopickwa ethiopic-let +MACRO \textethiopickwaa ethiopic-let +MACRO \textethiopickwe ethiopic-let +MACRO \textethiopickwee ethiopic-let +MACRO \textethiopickwi ethiopic-let +MACRO \textethiopickxa ethiopic-let +MACRO \textethiopickxaa ethiopic-let +MACRO \textethiopickxe ethiopic-let +MACRO \textethiopickxee ethiopic-let +MACRO \textethiopickxi ethiopic-let +MACRO \textethiopickxo ethiopic-let +MACRO \textethiopickxu ethiopic-let +MACRO \textethiopickxwa ethiopic-let +MACRO \textethiopickxwaa ethiopic-let +MACRO \textethiopickxwe ethiopic-let +MACRO \textethiopickxwee ethiopic-let +MACRO \textethiopickxwi ethiopic-let +MACRO \textethiopicla ethiopic-let +MACRO \textethiopiclaa ethiopic-let +MACRO \textethiopicle ethiopic-let +MACRO \textethiopiclee ethiopic-let +MACRO \textethiopicli ethiopic-let +MACRO \textethiopiclo ethiopic-let +MACRO \textethiopiclu ethiopic-let +MACRO \textethiopiclwa ethiopic-let +MACRO \textethiopicma ethiopic-let +MACRO \textethiopicmaa ethiopic-let +MACRO \textethiopicme ethiopic-let +MACRO \textethiopicmee ethiopic-let +MACRO \textethiopicmi ethiopic-let +MACRO \textethiopicmo ethiopic-let +MACRO \textethiopicmu ethiopic-let +MACRO \textethiopicmwa ethiopic-let +MACRO \textethiopicmya ethiopic-let +MACRO \textethiopicna ethiopic-let +MACRO \textethiopicnaa ethiopic-let +MACRO \textethiopicne ethiopic-let +MACRO \textethiopicnee ethiopic-let +MACRO \textethiopicni ethiopic-let +MACRO \textethiopicnine ethiopic-let +MACRO \textethiopicninety ethiopic-let +MACRO \textethiopicno ethiopic-let +MACRO \textethiopicnu ethiopic-let +MACRO \textethiopicnwa ethiopic-let +MACRO \textethiopicnya ethiopic-let +MACRO \textethiopicnyaa ethiopic-let +MACRO \textethiopicnye ethiopic-let +MACRO \textethiopicnyee ethiopic-let +MACRO \textethiopicnyi ethiopic-let +MACRO \textethiopicnyo ethiopic-let +MACRO \textethiopicnyu ethiopic-let +MACRO \textethiopicnywa ethiopic-let +MACRO \textethiopicone ethiopic-let +MACRO \textethiopicpa ethiopic-let +MACRO \textethiopicpaa ethiopic-let +MACRO \textethiopicparagraph ethiopic-let +MACRO \textethiopicpe ethiopic-let +MACRO \textethiopicpee ethiopic-let +MACRO \textethiopicpha ethiopic-let +MACRO \textethiopicphaa ethiopic-let +MACRO \textethiopicpharyngeala ethiopic-let +MACRO \textethiopicpharyngealaa ethiopic-let +MACRO \textethiopicpharyngeale ethiopic-let +MACRO \textethiopicpharyngealee ethiopic-let +MACRO \textethiopicpharyngeali ethiopic-let +MACRO \textethiopicpharyngealo ethiopic-let +MACRO \textethiopicpharyngealu ethiopic-let +MACRO \textethiopicphe ethiopic-let +MACRO \textethiopicphee ethiopic-let +MACRO \textethiopicphi ethiopic-let +MACRO \textethiopicpho ethiopic-let +MACRO \textethiopicphu ethiopic-let +MACRO \textethiopicphwa ethiopic-let +MACRO \textethiopicpi ethiopic-let +MACRO \textethiopicpo ethiopic-let +MACRO \textethiopicprefacecolon ethiopic-let +MACRO \textethiopicpu ethiopic-let +MACRO \textethiopicpwa ethiopic-let +MACRO \textethiopicqa ethiopic-let +MACRO \textethiopicqaa ethiopic-let +MACRO \textethiopicqe ethiopic-let +MACRO \textethiopicqee ethiopic-let +MACRO \textethiopicqha ethiopic-let +MACRO \textethiopicqhaa ethiopic-let +MACRO \textethiopicqhe ethiopic-let +MACRO \textethiopicqhee ethiopic-let +MACRO \textethiopicqhi ethiopic-let +MACRO \textethiopicqho ethiopic-let +MACRO \textethiopicqhu ethiopic-let +MACRO \textethiopicqhwa ethiopic-let +MACRO \textethiopicqhwaa ethiopic-let +MACRO \textethiopicqhwe ethiopic-let +MACRO \textethiopicqhwee ethiopic-let +MACRO \textethiopicqhwi ethiopic-let +MACRO \textethiopicqi ethiopic-let +MACRO \textethiopicqo ethiopic-let +MACRO \textethiopicqu ethiopic-let +MACRO \textethiopicquestionmark ethiopic-let +MACRO \textethiopicqwa ethiopic-let +MACRO \textethiopicqwaa ethiopic-let +MACRO \textethiopicqwe ethiopic-let +MACRO \textethiopicqwee ethiopic-let +MACRO \textethiopicqwi ethiopic-let +MACRO \textethiopicra ethiopic-let +MACRO \textethiopicraa ethiopic-let +MACRO \textethiopicre ethiopic-let +MACRO \textethiopicree ethiopic-let +MACRO \textethiopicri ethiopic-let +MACRO \textethiopicro ethiopic-let +MACRO \textethiopicru ethiopic-let +MACRO \textethiopicrwa ethiopic-let +MACRO \textethiopicrya ethiopic-let +MACRO \textethiopicsa ethiopic-let +MACRO \textethiopicsaa ethiopic-let +MACRO \textethiopicse ethiopic-let +MACRO \textethiopicsee ethiopic-let +MACRO \textethiopicsemicolon ethiopic-let +MACRO \textethiopicseven ethiopic-let +MACRO \textethiopicseventy ethiopic-let +MACRO \textethiopicsha ethiopic-let +MACRO \textethiopicshaa ethiopic-let +MACRO \textethiopicshe ethiopic-let +MACRO \textethiopicshee ethiopic-let +MACRO \textethiopicshi ethiopic-let +MACRO \textethiopicsho ethiopic-let +MACRO \textethiopicshu ethiopic-let +MACRO \textethiopicshwa ethiopic-let +MACRO \textethiopicsi ethiopic-let +MACRO \textethiopicsix ethiopic-let +MACRO \textethiopicsixty ethiopic-let +MACRO \textethiopicso ethiopic-let +MACRO \textethiopicsu ethiopic-let +MACRO \textethiopicswa ethiopic-let +MACRO \textethiopicsza ethiopic-let +MACRO \textethiopicszaa ethiopic-let +MACRO \textethiopicsze ethiopic-let +MACRO \textethiopicszee ethiopic-let +MACRO \textethiopicszi ethiopic-let +MACRO \textethiopicszo ethiopic-let +MACRO \textethiopicszu ethiopic-let +MACRO \textethiopicszwa ethiopic-let +MACRO \textethiopicta ethiopic-let +MACRO \textethiopictaa ethiopic-let +MACRO \textethiopicte ethiopic-let +MACRO \textethiopictee ethiopic-let +MACRO \textethiopicten ethiopic-let +MACRO \textethiopictenthousand ethiopic-let +MACRO \textethiopictha ethiopic-let +MACRO \textethiopicthaa ethiopic-let +MACRO \textethiopicthe ethiopic-let +MACRO \textethiopicthee ethiopic-let +MACRO \textethiopicthi ethiopic-let +MACRO \textethiopicthirty ethiopic-let +MACRO \textethiopictho ethiopic-let +MACRO \textethiopicthree ethiopic-let +MACRO \textethiopicthu ethiopic-let +MACRO \textethiopicthwa ethiopic-let +MACRO \textethiopicti ethiopic-let +MACRO \textethiopicto ethiopic-let +MACRO \textethiopictsa ethiopic-let +MACRO \textethiopictsaa ethiopic-let +MACRO \textethiopictse ethiopic-let +MACRO \textethiopictsee ethiopic-let +MACRO \textethiopictsi ethiopic-let +MACRO \textethiopictso ethiopic-let +MACRO \textethiopictsu ethiopic-let +MACRO \textethiopictswa ethiopic-let +MACRO \textethiopictu ethiopic-let +MACRO \textethiopictwa ethiopic-let +MACRO \textethiopictwenty ethiopic-let +MACRO \textethiopictwo ethiopic-let +MACRO \textethiopictza ethiopic-let +MACRO \textethiopictzaa ethiopic-let +MACRO \textethiopictze ethiopic-let +MACRO \textethiopictzee ethiopic-let +MACRO \textethiopictzi ethiopic-let +MACRO \textethiopictzo ethiopic-let +MACRO \textethiopictzu ethiopic-let +MACRO \textethiopicva ethiopic-let +MACRO \textethiopicvaa ethiopic-let +MACRO \textethiopicve ethiopic-let +MACRO \textethiopicvee ethiopic-let +MACRO \textethiopicvi ethiopic-let +MACRO \textethiopicvo ethiopic-let +MACRO \textethiopicvu ethiopic-let +MACRO \textethiopicvwa ethiopic-let +MACRO \textethiopicwa ethiopic-let +MACRO \textethiopicwaa ethiopic-let +MACRO \textethiopicwe ethiopic-let +MACRO \textethiopicwee ethiopic-let +MACRO \textethiopicwi ethiopic-let +MACRO \textethiopicwo ethiopic-let +MACRO \textethiopicwordspace ethiopic-let +MACRO \textethiopicwu ethiopic-let +MACRO \textethiopicxa ethiopic-let +MACRO \textethiopicxaa ethiopic-let +MACRO \textethiopicxe ethiopic-let +MACRO \textethiopicxee ethiopic-let +MACRO \textethiopicxi ethiopic-let +MACRO \textethiopicxo ethiopic-let +MACRO \textethiopicxu ethiopic-let +MACRO \textethiopicxwa ethiopic-let +MACRO \textethiopicxwaa ethiopic-let +MACRO \textethiopicxwe ethiopic-let +MACRO \textethiopicxwee ethiopic-let +MACRO \textethiopicxwi ethiopic-let +MACRO \textethiopicya ethiopic-let +MACRO \textethiopicyaa ethiopic-let +MACRO \textethiopicye ethiopic-let +MACRO \textethiopicyee ethiopic-let +MACRO \textethiopicyi ethiopic-let +MACRO \textethiopicyo ethiopic-let +MACRO \textethiopicyu ethiopic-let +MACRO \textethiopicza ethiopic-let +MACRO \textethiopiczaa ethiopic-let +MACRO \textethiopicze ethiopic-let +MACRO \textethiopiczee ethiopic-let +MACRO \textethiopiczha ethiopic-let +MACRO \textethiopiczhaa ethiopic-let +MACRO \textethiopiczhe ethiopic-let +MACRO \textethiopiczhee ethiopic-let +MACRO \textethiopiczhi ethiopic-let +MACRO \textethiopiczho ethiopic-let +MACRO \textethiopiczhu ethiopic-let +MACRO \textethiopiczhwa ethiopic-let +MACRO \textethiopiczi ethiopic-let +MACRO \textethiopiczo ethiopic-let +MACRO \textethiopiczu ethiopic-let +MACRO \textethiopiczwa ethiopic-let +MACRO \texteturned latin-t4 +MACRO \textEuro latin-qx +MACRO \texteuro greek-lgr OR latin-qx OR symbols-ts1 +MACRO \textexclamdown cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR latin-t4 +MACRO \textEzh latin-t4 +MACRO \textezh latin-t4 +MACRO \textfallrise ipa-t3 +MACRO \textfemale ipa-ts3 +# \textFF: PD1, PU +MACRO \textFhook latin-t4 +# \textfi: PD1, PU +MACRO \textfishhookr ipa-t3 +MACRO \textfiveoldstyle symbols-ts1 +# \textfl: PD1, PU +MACRO \textflorin latin-t4 OR symbols-ts1 +# \textflq: PD1, PU +# \textflqq: PD1, PU +MACRO \textfongmun thai-lth +MACRO \textfouroldstyle symbols-ts1 +# \textfractionmark: PD1, PU +MACRO \textfractionsolidus symbols-ts1 +MACRO \textfrbarn ipa-ts3 +MACRO \textfrhookd ipa-ts3 +MACRO \textfrhookdvar ipa-ts3 +MACRO \textfrhookt ipa-ts3 +# \textfrq: PD1, PU +# \textfrqq: PD1, PU +MACRO \textfrtailgamma ipa-ts3 +MACRO \textg ipa-t3 +MACRO \textGamma greek-lgr +MACRO \textgamma greek-lgr OR ipa-t3 +MACRO \textGammaafrican latin-t4 +MACRO \textgammalatinsmall latin-t4 +MACRO \textglobfall ipa-t3 +MACRO \textglobrise ipa-t3 +MACRO \textglotstop ipa-t3 +MACRO \textglotstopvari ipa-ts3 +MACRO \textglotstopvarii ipa-ts3 +MACRO \textglotstopvariii ipa-ts3 +# \textglq: PD1, PU +# \textglqq: PD1, PU +# \textgrave: PD1, PU +MACRO \textgravecircum ipa-t3 +MACRO \textgravedbl symbols-ts1 +MACRO \textgravedot ipa-t3 +MACRO \textgravemacron ipa-t3 +MACRO \textgravemid ipa-t3 +MACRO \textgreater devanagari-ldv OR thai-lta \ + OR telugu-ltg OR math-oml OR latin-qx \ + OR latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR latin-t5 OR cyrillic-x2 +MACRO \textgrgamma ipa-ts3 +# \textgrq: PD1, PU +# \textgrqq: PD1, PU +# \textGslash: PU +# \textgslash: PU +MACRO \textguarani symbols-ts1 +MACRO \texthalflength ipa-t3 +MACRO \texthardsign ipa-t3 +MACRO \textHbar latin-t4 +MACRO \texthbar latin-t4 +MACRO \textheng ipa-ts3 +MACRO \texthighrise ipa-t3 +MACRO \texthmlig ipa-ts3 +MACRO \texthooktop ipa-t3 +# \textHslash: PU +# \texthslash: PU +# \textHT: PD1, PU +MACRO \texthtb ipa-t3 +MACRO \texthtbardotlessj ipa-t3 +MACRO \texthtbardotlessjvar ipa-ts3 +MACRO \texthtc ipa-t3 +MACRO \texthtd ipa-t3 +MACRO \texthtg ipa-t3 +MACRO \texthth ipa-t3 +MACRO \texththeng ipa-t3 +MACRO \texthtk ipa-t3 +MACRO \texthtp ipa-t3 +MACRO \texthtq ipa-t3 +MACRO \texthtrtaild ipa-t3 +MACRO \texthtscg ipa-t3 +MACRO \texthtt ipa-t3 +# \texthungarumlaut: PD1, PU +MACRO \texthvlig ipa-t3 +MACRO \textinfty latin-qx +MACRO \textinterrobang symbols-ts1 +MACRO \textinterrobangdown symbols-ts1 +MACRO \textinvglotstop ipa-t3 +MACRO \textinvomega ipa-ts3 +MACRO \textinvsca ipa-ts3 +MACRO \textinvscr ipa-t3 +MACRO \textinvscripta ipa-ts3 +MACRO \textinvsubbridge ipa-t3 +MACRO \textIota greek-lgr +MACRO \textiota greek-lgr OR ipa-t3 +MACRO \textIotaafrican latin-t4 +# \textIotadieresis: PU +MACRO \textiotalatin latin-t4 +MACRO \textKappa greek-lgr +MACRO \textkappa greek-lgr +MACRO \textkhomut thai-lth +MACRO \textKhook latin-t4 +MACRO \textkhook latin-t4 +MACRO \textLambda greek-lgr +MACRO \textlambda greek-lgr OR ipa-t3 +MACRO \textlangle symbols-ts1 +MACRO \textlbrackdbl symbols-ts1 +MACRO \textleaf symbols-ts1 +MACRO \textleftarrow symbols-ts1 +MACRO \textlengthmark ipa-t3 +MACRO \textless devanagari-ldv OR thai-lta \ + OR telugu-ltg OR math-oml OR latin-qx \ + OR latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR latin-t5 OR cyrillic-x2 +# \textLF: PD1, PU +MACRO \textlfishhookrlig ipa-ts3 +MACRO \textlhookfour ipa-ts3 +MACRO \textlhookp ipa-ts3 +MACRO \textlhookt ipa-t3 +MACRO \textlhti ipa-ts3 +MACRO \textlhtlongi ipa-t3 +MACRO \textlhtlongy ipa-t3 +MACRO \textlira symbols-ts1 +MACRO \textlnot symbols-ts1 +# \textlogicalnot: LY1, PD1, PU +MACRO \textlonglegr ipa-t3 +MACRO \textlooptoprevesh ipa-ts3 +MACRO \textlowering ipa-t3 +MACRO \textlowrise ipa-t3 +MACRO \textlptr ipa-t3 +MACRO \textlquill symbols-ts1 +MACRO \textltailm ipa-t3 +MACRO \textltailn ipa-t3 +MACRO \textltilde ipa-t3 +MACRO \textlyoghlig ipa-t3 +# \textmacron: PD1, PU +MACRO \textmarried symbols-ts1 +MACRO \textmho symbols-ts1 +MACRO \textmidacute ipa-t3 +MACRO \textminus latin-qx OR symbols-ts1 +MACRO \textmongoliana mongolian-lma OR mongolian-lmo +MACRO \textmongolianaligalianusvaraone mongolian-lmo +MACRO \textmongolianang mongolian-lmo +MACRO \textmongolianba mongolian-lma OR mongolian-lmo +MACRO \textmongoliancha mongolian-lma OR mongolian-lmo +MACRO \textmongoliancolon mongolian-lma OR mongolian-lmo +MACRO \textmongoliancomma mongolian-lmo +MACRO \textmongolianda mongolian-lmo +MACRO \textmongoliane mongolian-lmo +MACRO \textmongolianeight mongolian-lma OR mongolian-lmo +MACRO \textmongolianellipsis mongolian-lma OR mongolian-lmo +MACRO \textmongolianfa mongolian-lmo +MACRO \textmongolianfive mongolian-lma OR mongolian-lmo +MACRO \textmongolianfour mongolian-lma OR mongolian-lmo +MACRO \textmongolianfourdots mongolian-lma OR mongolian-lmo +MACRO \textmongolianfreevariationselectorone mongolian-lma OR mongolian-lmo +MACRO \textmongolianfreevariationselectortwo mongolian-lma OR mongolian-lmo +MACRO \textmongolianfullstop mongolian-lmo +MACRO \textmongolianga mongolian-lmo +MACRO \textmongolianhaa mongolian-lmo +MACRO \textmongoliani mongolian-lma OR mongolian-lmo +MACRO \textmongolianja mongolian-lma OR mongolian-lmo +MACRO \textmongolianka mongolian-lmo +MACRO \textmongoliankha mongolian-lmo +MACRO \textmongolianla mongolian-lma OR mongolian-lmo +MACRO \textmongolianma mongolian-lma OR mongolian-lmo +MACRO \textmongolianmanchualigalica mongolian-lma +MACRO \textmongolianmanchualigalinga mongolian-lma +MACRO \textmongolianmanchualigaliza mongolian-lma +MACRO \textmongolianmanchualigalizha mongolian-lma +MACRO \textmongolianmanchucomma mongolian-lma +MACRO \textmongolianmanchufa mongolian-lma +MACRO \textmongolianmanchufullstop mongolian-lma +MACRO \textmongolianmanchuka mongolian-lma +MACRO \textmongolianmanchura mongolian-lma +MACRO \textmongolianmanchuzha mongolian-lma +MACRO \textmongolianna mongolian-lma OR mongolian-lmo +MACRO \textmongoliannine mongolian-lma OR mongolian-lmo +MACRO \textmongoliannirugu mongolian-lma OR mongolian-lmo +MACRO \textmongoliano mongolian-lma OR mongolian-lmo +MACRO \textmongolianone mongolian-lma OR mongolian-lmo +MACRO \textmongolianpa mongolian-lmo +MACRO \textmongolianqa mongolian-lmo +MACRO \textmongolianra mongolian-lmo +MACRO \textmongoliansa mongolian-lma OR mongolian-lmo +MACRO \textmongolianseven mongolian-lma OR mongolian-lmo +MACRO \textmongoliansha mongolian-lmo +MACRO \textmongoliansibeang mongolian-lma +MACRO \textmongoliansibecha mongolian-lma +MACRO \textmongoliansibeda mongolian-lma +MACRO \textmongoliansibee mongolian-lma +MACRO \textmongoliansibega mongolian-lma +MACRO \textmongoliansibegaa mongolian-lma +MACRO \textmongoliansibeha mongolian-lma +MACRO \textmongoliansibehaa mongolian-lma +MACRO \textmongoliansibepa mongolian-lma +MACRO \textmongoliansiberaa mongolian-lma +MACRO \textmongoliansibesha mongolian-lma +MACRO \textmongoliansibeta mongolian-lma +MACRO \textmongoliansibetsa mongolian-lma +MACRO \textmongoliansibeu mongolian-lma +MACRO \textmongoliansibeue mongolian-lma +MACRO \textmongoliansibeza mongolian-lma +MACRO \textmongoliansix mongolian-lma OR mongolian-lmo +MACRO \textmongolianta mongolian-lmo +MACRO \textmongolianthree mongolian-lma OR mongolian-lmo +MACRO \textmongoliantsa mongolian-lmo +MACRO \textmongoliantwo mongolian-lma OR mongolian-lmo +MACRO \textmongolianu mongolian-lmo +MACRO \textmongolianvowelseparator mongolian-lma OR mongolian-lmo +MACRO \textmongolianwa mongolian-lmo +MACRO \textmongolianya mongolian-lma OR mongolian-lmo +MACRO \textmongolianza mongolian-lmo +MACRO \textmongolianzero mongolian-lma OR mongolian-lmo +MACRO \textmongolianzra mongolian-lmo +MACRO \textMu greek-lgr +MACRO \textmu greek-lgr OR latin-qx OR symbols-ts1 +# \textmultiply: LY1, PD1, PU +MACRO \textmusicalnote symbols-ts1 +MACRO \textnaira symbols-ts1 +# \textneg: PD1, PU +MACRO \textNhookleft latin-t4 +MACRO \textnhookleft latin-t4 +MACRO \textnineoldstyle symbols-ts1 +MACRO \textnrleg ipa-ts3 +MACRO \textNu greek-lgr +MACRO \textnu greek-lgr +# \textnumbersign: PD1, PU +MACRO \textnumero cyrillic-lcy OR cyrillic-ot2 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR symbols-ts1 \ + OR cyrillic-x2 +MACRO \textObardotlessj ipa-t3 +MACRO \textObullseye ipa-ts3 +# \textogonek: PD1, PU +MACRO \textohm symbols-ts1 +MACRO \textOlyoghlig ipa-t3 +MACRO \textOmega greek-lgr OR latin-qx +MACRO \textomega greek-lgr OR ipa-t3 +MACRO \textOmicron greek-lgr +MACRO \textomicron greek-lgr +MACRO \textonehalf symbols-ts1 +MACRO \textoneoldstyle symbols-ts1 +MACRO \textonequarter symbols-ts1 +MACRO \textonesuperior symbols-ts1 +MACRO \textOopen latin-t4 +MACRO \textoopen latin-t4 +MACRO \textopenbullet symbols-ts1 +MACRO \textopencorner ipa-t3 +MACRO \textopeno ipa-t3 +MACRO \textordfeminine symbols-ts1 +MACRO \textordmasculine symbols-ts1 +MACRO \textovercross ipa-t3 +MACRO \textoverw ipa-t3 +MACRO \textoxia greek-lgr +MACRO \textoxiaiota greek-lgr +MACRO \textpalhook ipa-t3 +MACRO \textpalhooklong ipa-ts3 +MACRO \textpalhookvar ipa-ts3 +MACRO \textparagraph math-oms OR latin-qx OR symbols-ts1 +MACRO \textparenleft greek-lgr +MACRO \textparenright greek-lgr +MACRO \textpentedeka greek-lgr +MACRO \textpentehkaton greek-lgr +MACRO \textpentemuria greek-lgr +MACRO \textpenteqilioi greek-lgr +MACRO \textpercent greek-lgr +MACRO \textperiodcentered greek-lgr OR math-oms OR latin-qx \ + OR symbols-ts1 +MACRO \textperispomeniiota greek-lgr +MACRO \textpertenthousand latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR latin-t5 OR symbols-ts1 \ + OR cyrillic-x2 +MACRO \textperthousand greek-lgr OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR symbols-ts1 OR cyrillic-x2 +MACRO \textpeso symbols-ts1 +MACRO \textPhi greek-lgr +MACRO \textphi greek-lgr OR ipa-t3 +MACRO \textPhook latin-t4 +MACRO \textphook latin-t4 +MACRO \textPi greek-lgr OR latin-qx +MACRO \textpi greek-lgr OR latin-qx +MACRO \textpilcrow symbols-ts1 +MACRO \textpipe ipa-t3 +MACRO \textpipevar ipa-ts3 +# \textplusminus: LY1, PD1, PU +MACRO \textpm latin-qx OR symbols-ts1 +MACRO \textpolhook ipa-t3 +MACRO \textprimstress ipa-t3 +MACRO \textPsi greek-lgr +MACRO \textpsi greek-lgr +MACRO \textpsili greek-lgr +MACRO \textpsiliiota greek-lgr +MACRO \textpsilioxia greek-lgr +MACRO \textpsilioxiaiota greek-lgr +MACRO \textpsiliperispomeni greek-lgr +MACRO \textpsiliperispomeniiota greek-lgr +MACRO \textpsilivaria greek-lgr +MACRO \textpsilivariaiota greek-lgr +MACRO \textqoppa greek-lgr +MACRO \textqoppavariant greek-lgr +MACRO \textqplig ipa-ts3 +MACRO \textquestion greek-lgr +MACRO \textquestiondown cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR latin-t4 +MACRO \textquotedbl thai-c90 OR devanagari-ldv \ + OR thai-lta OR telugu-ltg OR latin-qx \ + OR latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR latin-t5 OR cyrillic-x2 +# \textquotedblbase: LY1 +MACRO \textquotedblleft thai-c90 OR cyrillic-lcy \ + OR devanagari-ldv OR thai-lta \ + OR telugu-ltg OR thai-lth \ + OR latin-ot1 OR cyrillic-ot2 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textquotedblright thai-c90 OR cyrillic-lcy \ + OR devanagari-ldv OR thai-lta \ + OR telugu-ltg OR thai-lth \ + OR latin-ot1 OR cyrillic-ot2 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textquoteleft thai-c90 OR cyrillic-lcy \ + OR devanagari-ldv OR greek-lgr \ + OR thai-lta OR telugu-ltg OR thai-lth \ + OR latin-ot1 OR cyrillic-ot2 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textquoteright thai-c90 OR cyrillic-lcy \ + OR devanagari-ldv OR greek-lgr \ + OR thai-lta OR telugu-ltg OR thai-lth \ + OR latin-ot1 OR cyrillic-ot2 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +# \textquotesingl: mTT +# \textquotesinglbase: LY1 +MACRO \textquotesingle latin-qx OR symbols-ts1 +MACRO \textquotestraightbase symbols-ts1 +MACRO \textquotestraightdblbase symbols-ts1 +MACRO \textrademark thai-lth +MACRO \textraiseglotstop ipa-t3 +MACRO \textraisevibyi ipa-t3 +MACRO \textraising ipa-t3 +MACRO \textramshorns ipa-t3 +MACRO \textrangle symbols-ts1 +MACRO \textrbrackdbl symbols-ts1 +MACRO \textrecipe symbols-ts1 +MACRO \textrectangle ipa-ts3 +MACRO \textreferencemark symbols-ts1 +MACRO \textregistered hebrew-he8 OR greek-lgr OR hebrew-lhe \ + OR thai-lth OR latin-qx \ + OR symbols-ts1 +MACRO \textretracting ipa-t3 +MACRO \textretractingvar ipa-ts3 +MACRO \textrevapostrophe ipa-t3 +MACRO \textreve ipa-t3 +MACRO \textrevepsilon ipa-t3 +MACRO \textrevglotstop ipa-t3 +MACRO \textrevscl ipa-ts3 +MACRO \textrevscr ipa-ts3 +MACRO \textrevyogh ipa-t3 +MACRO \textRho greek-lgr +MACRO \textrho greek-lgr +MACRO \textrhooka ipa-ts3 +MACRO \textrhooke ipa-ts3 +MACRO \textrhookepsilon ipa-ts3 +MACRO \textrhookopeno ipa-ts3 +MACRO \textrhookrevepsilon ipa-t3 +MACRO \textrhookschwa ipa-t3 +MACRO \textrhoticity ipa-t3 +MACRO \textrightarrow symbols-ts1 +# \textring: PD1, PU +MACRO \textringmacron ipa-t3 +MACRO \textrisefall ipa-t3 +MACRO \textroundcap ipa-t3 +MACRO \textrptr ipa-t3 +MACRO \textrquill symbols-ts1 +MACRO \textrtaild ipa-t3 +MACRO \textrtailhth ipa-ts3 +MACRO \textrtaill ipa-t3 +MACRO \textrtailn ipa-t3 +MACRO \textrtailr ipa-t3 +MACRO \textrtails ipa-t3 +MACRO \textrtailt ipa-t3 +MACRO \textrtailz ipa-t3 +MACRO \textrthook ipa-t3 +MACRO \textrthooklong ipa-ts3 +MACRO \textsanpi greek-lgr +MACRO \textsca ipa-t3 +MACRO \textscaolig ipa-ts3 +MACRO \textscb ipa-t3 +MACRO \textscdelta ipa-ts3 +MACRO \textsce ipa-t3 +MACRO \textscf ipa-ts3 +MACRO \textscg ipa-t3 +MACRO \textsch ipa-t3 +MACRO \textschwa ipa-t3 OR latin-t4 +MACRO \textsci ipa-t3 +MACRO \textscj ipa-t3 +MACRO \textsck ipa-ts3 +MACRO \textscl ipa-t3 +MACRO \textscm ipa-ts3 +MACRO \textscn ipa-t3 +MACRO \textscoelig ipa-t3 +MACRO \textscomega ipa-t3 +MACRO \textscp ipa-ts3 +MACRO \textscq ipa-ts3 +MACRO \textscr ipa-t3 +MACRO \textscripta ipa-t3 +MACRO \textscriptg ipa-t3 +MACRO \textscriptv ipa-t3 +MACRO \textscu ipa-t3 +MACRO \textscy ipa-t3 +MACRO \textseagull ipa-t3 +MACRO \textsecstress ipa-t3 +MACRO \textsection math-oms OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR symbols-ts1 OR cyrillic-x2 +MACRO \textservicemark symbols-ts1 +MACRO \textsevenoldstyle symbols-ts1 +MACRO \textSigma greek-lgr OR latin-qx +MACRO \textsigma greek-lgr +MACRO \textsixoldstyle symbols-ts1 +MACRO \textsoftsign ipa-t3 +# \textspace: LY1 +MACRO \textspleftarrow ipa-ts3 +MACRO \textsterling cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-t1 \ + OR symbols-ts1 +MACRO \textstigma greek-lgr +MACRO \textstigmavariant greek-lgr +MACRO \textstretchc ipa-t3 +MACRO \textstretchcvar ipa-ts3 +MACRO \textsubacute ipa-t3 +MACRO \textsubarch ipa-t3 +MACRO \textsubbar ipa-t3 +MACRO \textsubbridge ipa-t3 +MACRO \textsubcircum ipa-t3 +MACRO \textsubdot ipa-t3 +MACRO \textsubdoublearrow ipa-ts3 +MACRO \textsubgrave ipa-t3 +MACRO \textsubiota greek-lgr +MACRO \textsublhalfring ipa-t3 +MACRO \textsubplus ipa-t3 +MACRO \textsubrhalfring ipa-t3 +MACRO \textsubrightarrow ipa-ts3 +MACRO \textsubring ipa-t3 +MACRO \textsubsquare ipa-t3 +MACRO \textsubtilde ipa-t3 +MACRO \textsubumlaut ipa-t3 +MACRO \textsubw ipa-t3 +MACRO \textsubwedge ipa-t3 +MACRO \textsuperimposetilde ipa-t3 +MACRO \textsurd symbols-ts1 +MACRO \textsyllabic ipa-t3 +MACRO \textTau greek-lgr +MACRO \texttau greek-lgr +MACRO \textTbar latin-t4 +MACRO \texttbar latin-t4 +MACRO \texttctclig ipa-t3 +MACRO \texttelugua telugu-ltg OR telugu-ltl +MACRO \textteluguaa telugu-ltg OR telugu-ltl +MACRO \textteluguai telugu-ltg OR telugu-ltl +MACRO \textteluguailengthmark telugu-ltg +MACRO \textteluguanusvara telugu-ltg OR telugu-ltl +MACRO \textteluguau telugu-ltg OR telugu-ltl +MACRO \textteluguba telugu-ltg OR telugu-ltl +MACRO \texttelugubha telugu-ltg OR telugu-ltl +MACRO \texttelugublackbox telugu-ltl +MACRO \textteluguca telugu-ltg OR telugu-ltl +MACRO \texttelugucandrabindu telugu-ltg OR telugu-ltl +MACRO \texttelugucha telugu-ltg OR telugu-ltl +MACRO \textteluguda telugu-ltg OR telugu-ltl +MACRO \texttelugudda telugu-ltg OR telugu-ltl +MACRO \textteluguddha telugu-ltg OR telugu-ltl +MACRO \texttelugudha telugu-ltg OR telugu-ltl +MACRO \texttelugue telugu-ltg OR telugu-ltl +MACRO \textteluguee telugu-ltg OR telugu-ltl +MACRO \texttelugueight telugu-ltg OR telugu-ltl +MACRO \textteluguemptybox telugu-ltl +MACRO \texttelugufive telugu-ltg OR telugu-ltl +MACRO \texttelugufour telugu-ltg OR telugu-ltl +MACRO \textteluguga telugu-ltg OR telugu-ltl +MACRO \texttelugugha telugu-ltg OR telugu-ltl +MACRO \textteluguha telugu-ltg OR telugu-ltl +MACRO \texttelugui telugu-ltg OR telugu-ltl +MACRO \textteluguii telugu-ltg OR telugu-ltl +MACRO \textteluguja telugu-ltg OR telugu-ltl +MACRO \texttelugujha telugu-ltg OR telugu-ltl +MACRO \textteluguka telugu-ltg OR telugu-ltl +MACRO \texttelugukha telugu-ltg OR telugu-ltl +MACRO \texttelugula telugu-ltg OR telugu-ltl +MACRO \texttelugulengthmark telugu-ltg +MACRO \texttelugulla telugu-ltg OR telugu-ltl +MACRO \textteluguma telugu-ltg OR telugu-ltl +MACRO \textteluguna telugu-ltg OR telugu-ltl +MACRO \texttelugunga telugu-ltg OR telugu-ltl +MACRO \texttelugunine telugu-ltg OR telugu-ltl +MACRO \texttelugunna telugu-ltg OR telugu-ltl +MACRO \texttelugunya telugu-ltg OR telugu-ltl +MACRO \textteluguo telugu-ltg OR telugu-ltl +MACRO \textteluguone telugu-ltg OR telugu-ltl +MACRO \textteluguoo telugu-ltg OR telugu-ltl +MACRO \textteluguoutlinebox telugu-ltl +MACRO \texttelugupa telugu-ltg OR telugu-ltl +MACRO \texttelugupha telugu-ltg OR telugu-ltl +MACRO \texttelugura telugu-ltg OR telugu-ltl +MACRO \texttelugurra telugu-ltg OR telugu-ltl +MACRO \texttelugusa telugu-ltg OR telugu-ltl +MACRO \textteluguseven telugu-ltg OR telugu-ltl +MACRO \texttelugusha telugu-ltg OR telugu-ltl +MACRO \texttelugusix telugu-ltg OR telugu-ltl +MACRO \texttelugussa telugu-ltg OR telugu-ltl +MACRO \texttelugustart telugu-ltg OR telugu-ltl +MACRO \texttelugustop telugu-ltg OR telugu-ltl +MACRO \textteluguta telugu-ltg OR telugu-ltl +MACRO \texttelugutha telugu-ltg OR telugu-ltl +MACRO \textteluguthree telugu-ltg OR telugu-ltl +MACRO \texttelugutta telugu-ltg OR telugu-ltl +MACRO \textteluguttha telugu-ltg OR telugu-ltl +MACRO \texttelugutwo telugu-ltg OR telugu-ltl +MACRO \textteluguu telugu-ltg OR telugu-ltl +MACRO \textteluguuu telugu-ltg OR telugu-ltl +MACRO \textteluguva telugu-ltg OR telugu-ltl +MACRO \textteluguvirama telugu-ltg OR telugu-ltl +MACRO \textteluguvisarga telugu-ltg OR telugu-ltl +MACRO \textteluguvocalicl telugu-ltg OR telugu-ltl +MACRO \textteluguvocalicll telugu-ltg OR telugu-ltl +MACRO \textteluguvocalicr telugu-ltg OR telugu-ltl +MACRO \textteluguvocalicrr telugu-ltg OR telugu-ltl +MACRO \textteluguvowela telugu-ltl +MACRO \textteluguvowelaa telugu-ltg OR telugu-ltl +MACRO \textteluguvowelai telugu-ltg OR telugu-ltl +MACRO \textteluguvowelau telugu-ltg OR telugu-ltl +MACRO \textteluguvowele telugu-ltg OR telugu-ltl +MACRO \textteluguvowelee telugu-ltg OR telugu-ltl +MACRO \textteluguvoweli telugu-ltg OR telugu-ltl +MACRO \textteluguvowelii telugu-ltg OR telugu-ltl +MACRO \textteluguvowelo telugu-ltg OR telugu-ltl +MACRO \textteluguvoweloo telugu-ltg OR telugu-ltl +MACRO \textteluguvowelu telugu-ltg OR telugu-ltl +MACRO \textteluguvoweluu telugu-ltg OR telugu-ltl +MACRO \textteluguvowelvocalicl telugu-ltl +MACRO \textteluguvowelvocalicll telugu-ltl +MACRO \textteluguvowelvocalicr telugu-ltg OR telugu-ltl +MACRO \textteluguvowelvocalicrr telugu-ltg OR telugu-ltl +MACRO \textteluguya telugu-ltg OR telugu-ltl +MACRO \textteluguzero telugu-ltg OR telugu-ltl +MACRO \texttesh latin-t4 +MACRO \textteshlig ipa-t3 +MACRO \textTheta greek-lgr +MACRO \texttheta greek-lgr OR ipa-t3 +MACRO \textThook latin-t4 +MACRO \textthook latin-t4 +MACRO \textthorn ipa-t3 +MACRO \textthornvari ipa-ts3 +MACRO \textthornvarii ipa-ts3 +MACRO \textthornvariii ipa-ts3 +MACRO \textthornvariv ipa-ts3 +MACRO \textthreeoldstyle symbols-ts1 +MACRO \textthreequarters symbols-ts1 +MACRO \textthreequartersemdash symbols-ts1 +MACRO \textthreesuperior symbols-ts1 +# \texttilde: PD1, PU +MACRO \texttildedot ipa-t3 +MACRO \texttildelow symbols-ts1 +MACRO \texttimes latin-qx OR symbols-ts1 +MACRO \texttoneletterstem ipa-t3 +MACRO \texttoptiebar ipa-t3 +MACRO \texttrademark hebrew-he8 OR greek-lgr OR hebrew-lhe \ + OR symbols-ts1 +MACRO \textTretroflexhook latin-t4 +MACRO \texttretroflexhook latin-t4 +# \textTslash: PU +# \texttslash: PU +MACRO \texttslig ipa-t3 +MACRO \textturna ipa-t3 +MACRO \textturncelig ipa-t3 +MACRO \textturnglotstop ipa-ts3 +MACRO \textturnh ipa-t3 +MACRO \textturnk ipa-t3 +MACRO \textturnlonglegr ipa-t3 +MACRO \textturnm ipa-t3 +MACRO \textturnmrleg ipa-t3 +MACRO \textturnr ipa-t3 +MACRO \textturnrrtail ipa-t3 +MACRO \textturnsck ipa-ts3 +MACRO \textturnscripta ipa-t3 +MACRO \textturnscu ipa-ts3 +MACRO \textturnt ipa-t3 +MACRO \textturnthree ipa-ts3 +MACRO \textturntwo ipa-ts3 +MACRO \textturnv ipa-t3 +MACRO \textturnw ipa-t3 +MACRO \textturny ipa-t3 +MACRO \texttwelveudash symbols-ts1 +MACRO \texttwooldstyle symbols-ts1 +MACRO \texttwosuperior symbols-ts1 +MACRO \textuncrfemale ipa-ts3 +MACRO \textunderscore devanagari-ldv OR thai-lta \ + OR telugu-ltg OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR latin-t5 \ + OR cyrillic-x2 +MACRO \textunicodechar unicode-luc +MACRO \textuparrow symbols-ts1 +MACRO \textupfullarrow ipa-ts3 +MACRO \textUpsilon greek-lgr +MACRO \textupsilon greek-lgr OR ipa-t3 +# \textupsilonacute: PU +MACRO \textupstep ipa-t3 +MACRO \textvariaiota greek-lgr +MACRO \textvarsigma greek-lgr +MACRO \textvbaraccent ipa-t3 +MACRO \textvertline ipa-t3 +MACRO \textVhook latin-t4 +MACRO \textvhook latin-t4 +MACRO \textvibyi ipa-t3 +MACRO \textvibyy ipa-t3 +MACRO \textvisiblespace latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR latin-t5 OR cyrillic-x2 +MACRO \textwon symbols-ts1 +MACRO \textwynn ipa-t3 +MACRO \textxgeq latin-qx +MACRO \textXi greek-lgr +MACRO \textxi greek-lgr +MACRO \textxleq latin-qx +MACRO \textyamakkan thai-lth +MACRO \textyen symbols-ts1 +MACRO \textYhook latin-t4 +MACRO \textyhook latin-t4 +MACRO \textyogh ipa-t3 +MACRO \textzerooldstyle symbols-ts1 +MACRO \textZeta greek-lgr +MACRO \textzeta greek-lgr +MACRO \TH latin-qx OR latin-t1 +MACRO \th latin-qx OR latin-t1 OR ipa-t3 +MACRO \thaiAngkhankhu thai-c90 OR thai-lta +MACRO \thaiBoBaimai thai-c90 OR thai-lta +MACRO \thaiChoChan thai-c90 OR thai-lta +MACRO \thaiChoChang thai-c90 OR thai-lta +MACRO \thaiChoChing thai-c90 OR thai-lta +MACRO \thaiChoChoe thai-c90 OR thai-lta +MACRO \thaiDoChada thai-c90 OR thai-lta +MACRO \thaiDoDek thai-c90 OR thai-lta +MACRO \thaieight thai-c90 OR thai-lta +MACRO \thaifive thai-c90 OR thai-lta +MACRO \thaiFoFa thai-c90 OR thai-lta +MACRO \thaiFoFan thai-c90 OR thai-lta +MACRO \thaiFongman thai-c90 OR thai-lta +MACRO \thaifour thai-c90 OR thai-lta +MACRO \thaiHoHip thai-c90 OR thai-lta +MACRO \thaiHoNokhuk thai-c90 OR thai-lta +MACRO \thaiKhoKhai thai-c90 OR thai-lta +MACRO \thaiKhoKhon thai-c90 OR thai-lta +MACRO \thaiKhoKhuat thai-c90 OR thai-lta +MACRO \thaiKhoKhwai thai-c90 OR thai-lta +MACRO \thaiKhomut thai-c90 OR thai-lta +MACRO \thaiKhoRakhang thai-c90 OR thai-lta +MACRO \thaiKoKai thai-c90 OR thai-lta +MACRO \thaiLakkhangyao thai-c90 OR thai-lta +MACRO \thaiLoChula thai-c90 OR thai-lta +MACRO \thaiLoLing thai-c90 OR thai-lta +MACRO \thaiLu thai-c90 OR thai-lta +MACRO \thaiMaiChattawa thai-c90 OR thai-lta +MACRO \thaiMaiEk thai-c90 OR thai-lta +MACRO \thaiMaiHanakat thai-c90 OR thai-lta +MACRO \thaiMaitaikhu thai-c90 OR thai-lta +MACRO \thaiMaiTho thai-c90 OR thai-lta +MACRO \thaiMaiTri thai-c90 OR thai-lta +MACRO \thaiMaiyamok thai-c90 OR thai-lta +MACRO \thaiMoMa thai-c90 OR thai-lta +MACRO \thaiNgoNgu thai-c90 OR thai-lta +MACRO \thaiNikhahit thai-c90 OR thai-lta +MACRO \thainine thai-c90 OR thai-lta +MACRO \thaiNoNen thai-c90 OR thai-lta +MACRO \thaiNoNu thai-c90 OR thai-lta +MACRO \thaiOAng thai-c90 OR thai-lta +MACRO \thaione thai-c90 OR thai-lta +MACRO \thaiPaiyannoi thai-c90 OR thai-lta +MACRO \thaiPhinthu thai-c90 OR thai-lta +MACRO \thaiPhoPhan thai-c90 OR thai-lta +MACRO \thaiPhoPhung thai-c90 OR thai-lta +MACRO \thaiPhoSamphao thai-c90 OR thai-lta +MACRO \thaiPoPla thai-c90 OR thai-lta +MACRO \thaiRoRua thai-c90 OR thai-lta +MACRO \thaiRu thai-c90 OR thai-lta +MACRO \thaiSaraA thai-c90 OR thai-lta +MACRO \thaiSaraAa thai-c90 OR thai-lta +MACRO \thaiSaraAe thai-c90 OR thai-lta +MACRO \thaiSaraAiMaimalai thai-c90 OR thai-lta +MACRO \thaiSaraAiMaimuan thai-c90 OR thai-lta +MACRO \thaiSaraAm thai-c90 OR thai-lta +MACRO \thaiSaraE thai-c90 OR thai-lta +MACRO \thaiSaraI thai-c90 OR thai-lta +MACRO \thaiSaraIi thai-c90 OR thai-lta +MACRO \thaiSaraO thai-c90 OR thai-lta +MACRO \thaiSaraU thai-c90 OR thai-lta +MACRO \thaiSaraUe thai-c90 OR thai-lta +MACRO \thaiSaraUee thai-c90 OR thai-lta +MACRO \thaiSaraUu thai-c90 OR thai-lta +MACRO \thaiseven thai-c90 OR thai-lta +MACRO \thaisix thai-c90 OR thai-lta +MACRO \thaiSoRusi thai-c90 OR thai-lta +MACRO \thaiSoSala thai-c90 OR thai-lta +MACRO \thaiSoSo thai-c90 OR thai-lta +MACRO \thaiSoSua thai-c90 OR thai-lta +MACRO \thaiThanthakhat thai-c90 OR thai-lta +MACRO \thaiThoNangmontho thai-c90 OR thai-lta +MACRO \thaiThoPhuthao thai-c90 OR thai-lta +MACRO \thaiThoThahan thai-c90 OR thai-lta +MACRO \thaiThoThan thai-c90 OR thai-lta +MACRO \thaiThoThong thai-c90 OR thai-lta +MACRO \thaiThoThung thai-c90 OR thai-lta +MACRO \thaithree thai-c90 OR thai-lta +MACRO \thaiToPatak thai-c90 OR thai-lta +MACRO \thaiToTao thai-c90 OR thai-lta +MACRO \thaitwo thai-c90 OR thai-lta +MACRO \thaiWoWaen thai-c90 OR thai-lta +MACRO \thaiYamakkan thai-c90 OR thai-lta +MACRO \thaiYoYak thai-c90 OR thai-lta +MACRO \thaiYoYing thai-c90 OR thai-lta +MACRO \thaizero thai-c90 OR thai-lta +MACRO \titem mongolian-lms +MACRO \tsere hebrew-he8 OR hebrew-mkr +MACRO \U cyrillic-ot2 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR cyrillic-t2d OR cyrillic-x2 \ + OR cyrillic-xs +MACRO \u cyrillic-lcy OR greek-lgr \ + OR latin-ot1 OR cyrillic-ot2 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR ipa-t3 OR latin-t5 OR cyrillic-x2 +MACRO \UHORN latin-t5 +MACRO \uhorn latin-t5 +MACRO \v cyrillic-lcy OR latin-ot1 \ + OR latin-ot4 OR latin-qx OR latin-t1 \ + OR cyrillic-t2a OR cyrillic-t2b \ + OR cyrillic-t2c OR cyrillic-t2d \ + OR ipa-t3 OR latin-t5 OR cyrillic-x2 +MACRO \vavyod hebrew-he8 OR hebrew-mkr +MACRO \xewteeqix mongolian-lms +MACRO \Y cyrillic-lmc +MACRO \y cyrillic-lmc +MACRO \Ya cyrillic-lmc +MACRO \ya cyrillic-lmc +MACRO \Yo cyrillic-lmc +MACRO \yo cyrillic-lmc +MACRO \Yu cyrillic-lmc +MACRO \yu cyrillic-lmc +MACRO \zadgaizardigt mongolian-lms +MACRO \zawj mongolian-lms +MACRO \~ cyrillic-lcy OR greek-lgr \ + OR latin-ot1 OR latin-ot4 OR latin-qx \ + OR latin-t1 OR cyrillic-t2a \ + OR cyrillic-t2b OR cyrillic-t2c \ + OR ipa-t3 OR latin-t5 OR cyrillic-x2 +# END AUTOGENERATED DATA + + + +# IPA + +MACRO \overbridge tipa-extra +MACRO \subdoublebar tipa-extra +MACRO \subdoublevert tipa-extra +MACRO \subcorner tipa-extra +MACRO \crtilde tipa-extra +MACRO \dottedtilde tipa-extra +MACRO \doubletilde tipa-extra +MACRO \spreadlips tipa-extra +MACRO \whistle tipa-extra +MACRO \tone tipa-tone + +# Math +# amsfonts <= amssymb +# amstext <= amsmath + +MACRO \vert amsmath +MACRO \text amstext OR amsmath +MACRO \leadsto amsfonts OR amssymb +MACRO \complement amssymb +MACRO \nexists amssymb +MACRO \dotplus amssymb +MACRO \measuredangle amssymb +MACRO \sphericalangle amssymb +MACRO \nmid amssymb +MACRO \nparallel amssymb +MACRO \therefore amssymb +MACRO \because amssymb +MACRO \backsim amssymb +MACRO \nsim amssymb +MACRO \ncong amssymb +MACRO \approxeq amssymb +MACRO \Bumpeq amssymb +MACRO \bumpeq amssymb +MACRO \doteqdot amssymb +MACRO \fallingdotseq amssymb +MACRO \risingdotseq amssymb +MACRO \eqcirc amssymb +MACRO \circeq amssymb +MACRO \triangleq amssymb +MACRO \leqq amssymb +MACRO \geqq amssymb +MACRO \lneqq amssymb +MACRO \gneqq amssymb +MACRO \between amssymb +MACRO \nless amssymb +MACRO \ngtr amssymb +MACRO \nleq amssymb +MACRO \ngeq amssymb +MACRO \lesssim amssymb +MACRO \gtrsim amssymb +MACRO \lessgtr amssymb +MACRO \gtrless amssymb +MACRO \preccurlyeq amssymb +MACRO \succcurlyeq amssymb +MACRO \precsim amssymb +MACRO \succsim amssymb +MACRO \nprec amssymb +MACRO \nsucc amssymb +MACRO \nsubseteq amssymb +MACRO \nsupseteq amssymb +MACRO \subsetneq amssymb +MACRO \supsetneq amssymb +MACRO \sqsubset amsfonts OR amssymb +MACRO \sqsupset amsfonts OR amssymb +MACRO \circledcirc amssymb +MACRO \circledast amssymb +MACRO \circleddash amssymb +MACRO \boxplus amssymb +MACRO \boxminus amssymb +MACRO \boxtimes amssymb +MACRO \boxdot amssymb +MACRO \Vdash amssymb +MACRO \Vvdash amssymb +MACRO \nVdash amssymb +MACRO \lhd amsfonts OR amssymb +MACRO \rhd amsfonts OR amssymb +MACRO \unlhd amsfonts OR amssymb +MACRO \unrhd amsfonts OR amssymb +MACRO \multimap amssymb +MACRO \intercal amssymb +MACRO \veebar amssymb +MACRO \barwedge amssymb +MACRO \divideontimes amssymb +MACRO \ltimes amssymb +MACRO \rtimes amssymb +MACRO \leftthreetimes amssymb +MACRO \rightthreetimes amssymb +MACRO \backsimeq amssymb +MACRO \curlyvee amssymb +MACRO \curlywedge amssymb +MACRO \Subset amssymb +MACRO \Supset amssymb +MACRO \Cap amssymb +MACRO \Cup amssymb +MACRO \pitchfork amssymb +MACRO \lessdot amssymb +MACRO \gtrdot amssymb +MACRO \lll amssymb +MACRO \ggg amssymb +MACRO \lesseqgtr amssymb +MACRO \gtreqless amssymb +MACRO \curlyeqprec amssymb +MACRO \curlyeqsucc amssymb +MACRO \lnsim amssymb +MACRO \gnsim amssymb +MACRO \precnsim amssymb +MACRO \succnsim amssymb +MACRO \ntriangleleft amssymb +MACRO \ntriangleright amssymb +MACRO \ntrianglelefteq amssymb +MACRO \ntrianglerighteq amssymb +MACRO \iint amsmath +MACRO \iiint amsmath +MACRO \beth amssymb +MACRO \gimel amssymb +MACRO \daleth amssymb +MACRO \mathscr euscript-mathscr +MACRO \mathfrak amsfonts OR amssymb +MACRO \mathbbm bbm +MACRO \mho amsfonts OR amssymb +MACRO \Box amssymb + +# Misc + +MACRO \braillebox braille +MACRO \euro eurofont +MACRO \ding pifont +MACRO \Pisymbol pifont +MACRO \psdots pstricks +MACRO \psline pstricks +MACRO \psframe pstricks +MACRO \psset pstricks +MACRO \degrees pstricks +MACRO \SpecialCoor pstricks +MACRO \begin{pspicture} pstricks +MACRO \languageCANCEL custom +MACRO \includegraphics graphicx +MACRO \horn latin-t5 +MACRO \tracingifs elatex +MACRO \tracingassigns elatex +MACRO \CJKbold cjk-latex +MACRO \RequirePackage latex +MACRO \beginL elatex +MACRO \beginR elatex +MACRO \endL elatex +MACRO \endR elatex +MACRO \TeXXeTstate elatex +MACRO \DeclareTextDoubleComposite dblaccnt +MACRO \languageshorthands babel + +# Fontencodings + +MACRO \fontencoding{C00} chinese-c00 OR cjk-latex +MACRO \fontencoding{C40} japanese-c40 +MACRO \fontencoding{C10} chinese-c10 OR cjk-latex +MACRO \fontencoding{C61} korean-c61 OR cjk-latex +MACRO \fontencoding{LGR} greek-lgr +MACRO \fontencoding{T2A} cyrillic-t2a +MACRO \fontencoding{T2B} cyrillic-t2b +MACRO \fontencoding{T2C} cyrillic-t2c +MACRO \fontencoding{T2D} cyrillic-t2d +MACRO \fontencoding{X2} cyrillic-x2 +MACRO \fontencoding{OT1} cyrillic-ot1 +MACRO \fontencoding{OT2} cyrillic-ot2 +MACRO \fontencoding{OT4} cyrillic-ot4 +MACRO \fontencoding{LCY} cyrillic-lcy +MACRO \fontencoding{LHE} hebrew-lhe +MACRO \fontencoding{TS1} symbols-ts1 +MACRO \fontencoding{T1} latin-t1 +MACRO \fontencoding{T4} latin-t4 +MACRO \fontencoding{T5} latin-t5 +MACRO \fontencoding{XS} latin-xs +MACRO \fontencoding{T3} ipa-t3 +MACRO \fontencoding{TS3} ipa-ts3 +MACRO \fontencoding{LKL} klingon-lkl +MACRO \fontencoding{LTL} telugu-ltl +MACRO \fontencoding{LTG} telugu-ltg +MACRO \fontencoding{LMC} cyrillic-lmc +MACRO \fontencoding{LMA} mongolian-lma +MACRO \fontencoding{LMO} mongolian-lmo +MACRO \fontencoding{LMS} mongolian-lms +MACRO \fontencoding{LMU} mongolian-lmu +MACRO \fontencoding{C90} thai-c90 + +# ucsutils + +MACRO \UnicodeEmbedFont ucsutils +MACRO \univerb ucsutils +MACRO \unistring ucsutils + +# Non-autodetected text symbols + +MACRO \textmongolianlha mongolian-lmo +MACRO \textmongolianzhi mongolian-lmo +MACRO \textmongolianchi mongolian-lmo + +# Babel languages + +MACRO \selectlanguage{german} babel-german +MACRO \selectlanguage{english} babel-english +MACRO \selectlanguage{vietnam} babel-vietnam + +# Font data + +REGEX ^b5ka[0-9][0-9][0-9][0-9]\.tfm$ font-ntukai48 + +# +# Package infos start here +# + +FEATURE cyrillic-t2a +FONTENCODING T2A +FILE /tex/latex/cyrillic/t2aenc.def +END FEATURE + +FEATURE cyrillic-t2b +FONTENCODING T2B +FILE /tex/latex/cyrillic/t2benc.def +END FEATURE + +FEATURE cyrillic-t2c +FONTENCODING T2C +FILE /tex/latex/cyrillic/t2cenc.def +END FEATURE + +FEATURE cyrillic-x2 +FONTENCODING X2 +FILE /tex/latex/cyrillic/x2enc.def +END FEATURE + +FEATURE cyrillic-ot2 +FONTENCODING OT2 +FILE /tex/latex/cyrillic/ot2enc.def +END FEATURE + +FEATURE cyrillic-lcy +FONTENCODING LCY +FILE /tex/latex/cyrillic/lcyenc.def +END FEATURE + +FEATURE cyrillic-xs +FONTENCODING XS +COMMENT +This fontencoding does not seem to be officially available yet. +END COMMENT +END FEATURE + +FEATURE cyrillic-t2d +FONTENCODING T2D +COMMENT +This fontencoding does not seem to be officially available yet. +END COMMENT +END FEATURE + +FEATURE amssymb +PACKAGE amssymb +FILE /tex/latex/amsfonts/amssymb.sty +CTAN fonts/amsfonts/latex/amssymb.sty +END FEATURE + +FEATURE amsfonts +PACKAGE amsfonts +FILE /tex/latex/amsfonts/amsfonts.sty +END FEATURE + +FEATURE hebrew-lhe +FONTENCODING LHE +FILE lheenc.def +COMMENT +latex-ucs assumes the version of LHE shipped with ivritex. There is +another version (AFAIK shipped with babel), which defines other +macros, i.a. \gimel, which collides with amssymb's math \gimel. +END COMMENT +INSTALL +Install ivritex. + +Debian package: ivritex +END INSTALL +END FEATURE + +FEATURE hebrew-he8 +FONTENCODING HE8 +FILE lheenc.def +INSTALL +Install ivritex. + +Debian package: ivritex +END INSTALL +END FEATURE + +FEATURE symbols-ts1 +FONTENCODING TS1 +FILE /tex/latex/base/ts1enc.def +END FEATURE + +FEATURE latin-t1 +FONTENCODING T1 +FILE /tex/latex/base/t1enc.def +COMMENT +This fontencoding is loaded and activated by default +if you use the package fontenc. +END COMMENT +END FEATURE + +FEATURE latin-ot4 +FONTENCODING OT4 +END FEATURE + +FEATURE latin-ot1 +FONTENCODING OT1 +COMMENT +This fontencoding is loaded and activated by default +unless you use the package fontenc. +END COMMENT +END FEATURE + + + +FEATURE babel-vietnam +PACKAGE [vietnam]{babel} +COMMENT +Activates Vietnamese language processing. If you give several options, the +last language given is activated, the others may be activated e.g. via +\selectlanguage. +END COMMENT +INSTALL +Download +ftp://ftp.dante.de/tex-archive/language/vietnamese/vntex/tex.tgz and +extract it into your TeX search path. E.g.: + tar -x -v -z -f tex.tgz -C <texbasedir> + +Download +ftp://ftp.dante.de/tex-archive/language/vietnamese/vntex/fonts.tgz and +extract it into your TeX font search path. E.g.: + tar -x -v -z -f fonts.tgz -C <texbasedir> +END INSTALL +END FEATURE + + +FEATURE latin-t5 +FONTENCODING T5 +FILE /tex/generic/vietnam/t5enc.def +PACKAGE [nodblaccnt]{t5} +FILE /tex/generic/vietnam/t5.sty +COMMENT +This fontencoding is designed for Vietnamese text. + +With the option nodblaccnt, t5.sty defines a dummy +\DeclareTextDoubleComposite, which is needed for the encoding T5. +The option nodblaccnt is only available in version >= 1.1. + +Without this option, the package dblaccnt is loaded, which enables +accent sequences like \'\^O. Note that this introduces +incompatibilities and is not recommended. +END COMMENT +INSTALL +Download +ftp://ftp.dante.de/tex-archive/language/vietnamese/vntex/tex.tgz and +extract it into your TeX search path. E.g.: + tar -x -v -z -f tex.tgz -C <texbasedir> + +Download +ftp://ftp.dante.de/tex-archive/language/vietnamese/vntex/fonts.tgz and +extract it into your TeX font search path. E.g.: + tar -x -v -z -f fonts.tgz -C <texbasedir> +END INSTALL +END FEATURE + +FEATURE latin-t4 +FONTENCODING T4 +FILE fonts/jknappen/fc/src/t4enc.def +COMMENT +Due to a bug in the fontencoding, the macros \{ \} \$ \S and \_ will +not work any more in other fontencodings. To fix this, add the +following code to your preamble after loading T4: + +\DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi} +\DeclareRobustCommand{\}}{\ifmmode\rbrace\else\textbraceright\fi} +\DeclareRobustCommand{\$}{\ifmmode\mathdollar\else\textdollar\fi} +\DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi} +\DeclareRobustCommand{\_}{% + \ifmmode\nfss@text{\textunderscore}\else\textunderscore\fi} +END COMMENT +INSTALL +Install CTAN:fonts/jknappen/fc into your TeX search path. +END INSTALL +END FEATURE + +FEATURE ipa-t3 +FONTENCODING T3 +FILE tex/latex/tipa/t3enc.def +END FEATURE + +FEATURE ipa-ts3 +FONTENCODING TS3 +COMMENT +In older TIPA versions (1.0 and earlier) try fontencoding T3 instead. +END COMMENT +END FEATURE + +FEATURE tipa-extra +FONTENCODING T3 +FILE tex/latex/tipa/t3enc.def +PACKAGE [extra,noenc,safe]{tipa} +FILE tex/latex/tipa/tipa.sty +FILE tex/latex/tipa/extraipa.sty +COMMENT +The options safe and noenc are optional. + +safe disables the definition of certain shortcut commands, which might +be dangerous. + +noenc disables the automatic loading of the fontencoding T3. If you +activate this option, you must load fontencoding T3, if you do not +activate this option, you must not load fontencoding T3. +END COMMENT +END FEATURE + +FEATURE tipa-tone +FONTENCODING T3 +FILE tex/latex/tipa/t3enc.def +PACKAGE [tone,noenc,safe]{tipa} +FILE tex/latex/tipa/tipa.sty +FILE tex/latex/tipa/tone.sty +COMMENT +The options safe and noenc are optional. + +safe disables the definition of certain shortcut commands, which might +be dangerous. + +noenc disables the automatic loading of the fontencoding T3. If you +activate this option, you must load fontencoding T3, if you do not +activate this option, you must not load fontencoding T3. +END COMMENT +END FEATURE + +FEATURE greek-lgr +FONTENCODING LGR +FILE /tex/generic/babel/lgrenc.def +END FEATURE + +FEATURE klingon-lkl +FONTENCODING LKL +FILE lklenc.def +END FEATURE + +FEATURE bbm +PACKAGE bbm +FILE /tex/latex/bbm/bbm.sty +END FEATURE + +FEATURE euscript-mathscr +PACKAGE [mathscr]{euscript} +FILE /tex/latex/amsfonts/euscript.sty +END FEATURE + +FEATURE amsfonts +PACKAGE amsfonts +FILE /tex/latex/amsfonts/amsfonts.sty +END FEATURE + +FEATURE pifont +PACKAGE pifont +FILE /tex/latex/psnfss/pifont.sty +COMMENT +You need a postscript capable DVI viewer (e.g. xdvi or dvips) for the +fonts provided by this package. +END COMMENT +END FEATURE + +FEATURE amsmath +PACKAGE amsmath +FILE /tex/latex/amsmath/amsmath.sty +END FEATURE + +FEATURE braille +PACKAGE [compact,8dots]{braille} +FILE braille.sty +CTAN macros/latex/contrib/supported/braille/braille.sty +COMMENT +The option compact is optional but saves much memory if you do not +need the command \braille, but only \braillebox. + +The option 8dots enables 8-dot braille (needed for +U+2840..U+28FF). You should not use it if you use 6-dot braille +only. You may switch it at runtime with \brailleeightdotstrue and +\brailleeightdotsfalse. +END COMMENT +END FEATURE + +FEATURE pstricks +PACKAGE pstricks +FILE /tex/generic/pstricks/pstricks.sty +CTAN graphics/pstricks/latex/pstricks.sty +END FEATURE + +FEATURE custom +COMMENT +This is a dummy feature which means, that you are expected to define +the command yourself using e.g. + +\newcommand\macroname{...} +END COMMENT +END FEATURE + +FEATURE chinese-c00 +PACKAGE [C00,T1]{fontenc} +FILE c00enc.def +FILE cenccmn.tex +COMMENT +The fontencoding C00 must not be activated directly. +END COMMENT +END FEATURE + +FEATURE japanese-c40 +PACKAGE [C40,T1]{fontenc} +FILE c40enc.def +FILE cenccmn.tex +END FEATURE + +FEATURE japanese-c42 +PACKAGE [C42,T1]{fontenc} +FILE c42enc.def +FILE cenccmn.tex +END FEATURE + +FEATURE chinese-c10 +PACKAGE [C10,T1]{fontenc} +FILE c10enc.def +FILE cenccmn.tex +COMMENT +The fontencoding C10 must not be activated directly. +END COMMENT +END FEATURE + +FEATURE korean-c61 +PACKAGE [C61,T1]{fontenc} +FILE c61enc.def +FILE cenccmn.tex +COMMENT +The fontencoding C61 must not be activated directly. +END COMMENT +END FEATURE + +FEATURE cjk-latex +PACKAGE CJK +END FEATURE + +FEATURE graphicx +PACKAGE graphicx +END FEATURE + +FEATURE babel +PACKAGE [english]{babel} +COMMENT +Instead of 'english', choose the language of your document, possibly +several (see the documentation of the babel package). +END COMMENT +END FEATURE + +FEATURE devanagari-ldv +FONTENCODING LDV +FILE ldvenc.def +END FEATURE + +FEATURE devanagari-ldn +FONTENCODING LDN +FILE ldnenc.def +END FEATURE + +FEATURE thai-lta +FONTENCODING LTA +FILE ltaenc.def +END FEATURE + +FEATURE telugu-ltl +FONTENCODING LTL +FILE ltlenc.def +FILE tlsyllable.tex +FILE tlteldigits.tex +END FEATURE + +FEATURE telugu-ltg +FONTENCODING LTG +FILE ltgenc.def +END FEATURE + +FEATURE ethiopic-let +FONTENCODING LET +FILE letenc.def +END FEATURE + +FEATURE latin-lqx +FONTENCODING LQX +COMMENT +Intended for Polish. +END COMMENT +END FEATURE + +FEATURE latin-qx +FONTENCODING QX +COMMENT +Intended for Polish. +END COMMENT +END FEATURE + +FEATURE ucsutils +PACKAGE ucsutils +COMMENT +Give the name of the missing macro as an option to ucsutils (without +leading backslash). E.g.: +\usepackage[UnicodeEmbedFont]{ucsutils} +to load the macro \UnicodeEmbedFont. +END COMMENT +END FEATURE + +FEATURE latex +COMMENT +This command is defined in LaTeX. Probably you have run Plain-TeX. + +Note that the difference between documents written for LaTeX +resp. Plain-TeX is usually quite big, so it is probably the simplest +way to try to use another macro instead of converting your document to +LaTeX. +END COMMENT +END FEATURE + +FEATURE elatex +LATEXCMD elatex +COMMENT +This command is defined in e-LaTeX. +Try calling elatex instead of latex. +END COMMENT +END FEATURE + +FEATURE omega +LATEXCMD omega +COMMENT +This command is defined in Omega. +Try calling omega instead of tex. +END COMMENT +END FEATURE + +FEATURE lambda +LATEXCMD lambda +COMMENT +This command is defined in Lambda. +Try calling lambda instead of latex. +END COMMENT +END FEATURE + +FEATURE cyrillic-lmc +FONTENCODING LMC +FILE lmcenc.def +COMMENT +For Cyrillic Mongolian. +END COMMENT +INSTALL +Install MonTeX (CTAN:language/mongolian/montex/). +END INSTALL +END FEATURE + +FEATURE mongolian-lma +FONTENCODING LMA +FILE lmaenc.def +INSTALL +Install MonTeX (CTAN:language/mongolian/montex/). +END INSTALL +END FEATURE + +FEATURE mongolian-lms +FONTENCODING LMS +FILE lmsenc.def +INSTALL +Install MonTeX (CTAN:language/mongolian/montex/). +END INSTALL +END FEATURE + +FEATURE mongolian-lmo +FONTENCODING LMO +FILE lmoenc.def +INSTALL +Install MonTeX (CTAN:language/mongolian/montex/). +END INSTALL +END FEATURE + +FEATURE mongolian-lmu +FONTENCODING LMU +FILE lmuenc.def +INSTALL +Install MonTeX (CTAN:language/mongolian/montex/). +END INSTALL +END FEATURE + +FEATURE thai-c90 +FONTENCODING C90 +FILE c90enc.def +INSTALL +Install CJK-LaTeX: +CTAN: language/chinese/CJK/ +Debian: cjk-latex +END INSTALL +END FEATURE + +FEATURE font-kanji48 +INSTALL +CTAN: fonts/CJK/kanji48.tar.gz +Debian: hbf-kanji48 +END INSTALL +END + +FEATURE font-ntukai48 +INSTALL +CTAN:fonts/CJK/ntukai48.tar.gz +END INSTALL +END FEATURE + +FEATURE dblaccnt +PACKAGE dblaccnt +COMMENT +This package is needed to use accent sequences like \`\^O. + +Warning: It introduces incompatibilities. + +If you need it for the vietnamese encoding T5, better load the package +t5 with option nodblaccnt instead of dblaccnt, which defines a dummy +replacement for \DeclareTextDoubleComposite. This does not allow to +use sequences like \`\^O, you have to use e.g. \`\OCIRCUMFLEX instead. +END COMMENT +INSTALL +This is part of the vntex package, see fontencoding T5 for +installation instructions. +END INSTALL +END FEATURE + +FEATURE hebrew-mkr +FONTENCODING MKR +NEEDS elatex OR lambda +COMMENT +To use this fontencoding, compile your document with elatex or lambda. +END COMMENT +INSTALL +Install the package makor from CTAN (CTAN:language/hebrew/makor/) and +the files mkrenc.def, mkr*.fd shipped with ucs package into your TeX +search path. +END INSTALL +END FEATURE + +FEATURE tengwar-fonts-dansmith +COMMENT +These are Dan Smith's Tengwar Fonts. +END COMMENT +INSTALL + +1. Download the Tengwar fonts from Dan Smith's webpage + http://www.acondia.com/tengwar_fonts/index.html + + You need the + "Tengwar Quenya font pack" for Quenya + "Tengwar Sindarin font pack" for Sindarin + "Tengwar Noldor font pack" for Noldor + These files are ZIP-archives. + +2. Unpack these archives into your TTFONTS search path. + +3. Rename the unpacked fonts to lowercase (unless you filesystem is + case insensitive (e.g. windows)). Example: + mv QUENYA.TTF quenya.ttf + +4. Put tengwarDS.enc and cp1252.enc into your TTF2PKINPUTS and + TTF2TFMINPUTS search path. + +5. Run + # For Quenya + ttf2tfm quenya -p cp1252.enc -t tengwarDS.enc -v tengdsq rtengdsq + ttf2tfm quencap1 -p cp1252.enc -t tengwarDS.enc -v tengdsq1 rtengdsq1 + ttf2tfm quencap2 -p cp1252.enc -t tengwarDS.enc -v tengdsq2 rtengdsq2 + vptovf tengdsq + vptovf tengdsq1 + vptovf tengdsq2 + # For Sindarin + ttf2tfm sindar -p cp1252.enc -t tengwarDS.enc -v tengdss rtengdss + ttf2tfm sindcap1 -p cp1252.enc -t tengwarDS.enc -v tengdss1 rtengdss1 + ttf2tfm sindcap2 -p cp1252.enc -t tengwarDS.enc -v tengdss2 rtengdss2 + vptovf tengdss + vptovf tengdss1 + vptovf tengdss2 + # For Noldor + ttf2tfm noldor -p cp1252.enc -t tengwarDS.enc -v tengdsn rtengdsn + ttf2tfm noldcap1 -p cp1252.enc -t tengwarDS.enc -v tengdsn1 rtengdsn1 + ttf2tfm noldcap2 -p cp1252.enc -t tengwarDS.enc -v tengdsn2 rtengdsn2 + vptovf tengdsn + vptovf tengdsn1 + vptovf tengdsn2 + + This creates the following files: + + rtengdsn.tfm rtengdsq1.tfm rtengdss2.tfm tengdsn1.tfm tengdsn2.vf + tengdsq.vpl tengdsq2.tfm tengdss.vf tengdss1.vpl rtengdsn1.tfm + rtengdsq2.tfm tengdsn.tfm tengdsn1.vf tengdsn2.vpl tengdsq1.tfm + tengdsq2.vf tengdss.vpl tengdss2.tfm rtengdsn2.tfm rtengdss.tfm + tengdsn.vf tengdsn1.vpl tengdsq.tfm tengdsq1.vf tengdsq2.vpl + tengdss1.tfm tengdss2.vf rtengdsq.tfm rtengdss1.tfm tengdsn.vpl + tengdsn2.tfm tengdsq.vf tengdsq1.vpl tengdss.tfm tengdss1.vf + tengdss2.vpl + + Put the *.tfm files into your TFMFONTS search path and the *.vf + files into your VFFONTS search path. The *.vpl files are not needed + any more. + +6. Add the following lines to your ttfonts.map: + + % For Quenya + rtengdsq quenya Encoding=cp1252.enc + rtengdsq1 quencap1 Encoding=cp1252.enc + rtengdsq2 quencap2 Encoding=cp1252.enc + % For Sindarin + rtengdss sindar Encoding=cp1252.enc + rtengdss1 sindcap1 Encoding=cp1252.enc + rtengdss2 sindcap2 Encoding=cp1252.enc + % For Noldor + rtengdsn noldor Encoding=cp1252.enc + rtengdsn1 noldcap1 Encoding=cp1252.enc + rtengdsn2 noldcap2 Encoding=cp1252.enc + +END INSTALL +END FEATURE + +FEATURE babel-german +PACKAGE [german]{babel} +COMMENT +Activates German language processing. If you give several options, the +last language given is activated, the others may be activated e.g. via +\selectlanguage. +END COMMENT +INSTALL +This is part of the babel distribution. +END INSTALL +END FEATURE + +FEATURE babel-english +PACKAGE [english]{babel} +COMMENT +Activates English language processing. If you give several options, the +last language given is activated, the others may be activated e.g. via +\selectlanguage. +END COMMENT +INSTALL +This is part of the babel distribution. +END INSTALL +END FEATURE + diff --git a/Master/texmf-dist/doc/latex/ucs/makeunidef.pl b/Master/texmf-dist/doc/latex/ucs/makeunidef.pl new file mode 100755 index 00000000000..3952b3bdb45 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/makeunidef.pl @@ -0,0 +1,1565 @@ +#!/usr/bin/perl -w + +=head1 NAME + +makeunidef.pl - Generates Unicode data files for B<ucs.sty>. + +=head1 SYSNOPSIS + +makeunidef.pl [B<--database>=I<file>] [B<--targetdir>=I<dir>] +[B<--verbose>] [B<--help>] [B<--comments>] [B<--nocomments>] +[B<--compress>] [B<--nocompress>] [B<--exclude>=I<option>] +I<configfiles> + +=head1 DESCRIPTION + +Generate the F<uni-....def>-files for use by B<ucs.sty>. These are +generated out of one ore more config files (with suffix C<.gz> if +gzipped), whose format is described below (see L<"CONFIG FILES">). + +For some characters there will be autogenerated code, if none is +supplied by the config files, this code will be associated with the +Unicode option C<autogenerated>. + +=head1 OPTIONS + +=over 4 + +=item B<--comments>, B<--nocomments> + +Enable or disable the automatic generation of comments. +Defaults to B<--comments>. + +=item B<--compress>, B<--nocompress> +Enable or disable the compression of uninames.dat. +Defaults to B<--compress>. + +=item B<-d>, B<--db>, B<--database>=I<file> + +Specify the Unicode database, as provided by the Unicode +Consortium. Defaults to F<UnicodeData.txt>. The file must have the +suffix C<.gz> if it is gzipped. + +=item B<--dir> + +See B<-target>. + +=item B<--exclude>, B<--ex>=I<option> + +Do not include the characters associated with option I<option>. This +is e.g. useful for saving space by not including all CJK +characters. When an excluded option is used in documents, an error is +yielded. + +=item B<-h>, B<--help> + +Shows help. + +=item B<--nocomments> + +See B<--comments>. + +=item B<--nocompress> + +See B<--compress>. + +=item B<-t>, B<--dir>, B<--target>, B<--targetdir>=I<dir> + +Sets the target directory for the generated files to I<dir>. The default is +the current directory. + +=item B<-v>, B<--verbose> + +Be verbose. + +=back + +=head1 CONFIG FILES + +The config files (which may be gzipped) are to be written in a line +oriented format. C<#> starts a comment which end at the end of the +actual line. The C<#> must be preceded by a whitespace, except for +lines consisting only of a comment. An empty line or a line containing +only a comment is ignored. + +A line can be a command or a character definition. +For possible commands see L<"CONFIG COMMANDS">. +A character +definition has the following syntax: + +I<code> I<macro> + +where I<code> is the code position and I<macro> a LaTeX-macro to +render the glyph. I<macro> is stripped of surrounding whitespaces, and +I<code> has one of the following formats (all case insensitive): + +=over 4 + +=item U+I<num>, 0xI<num>, $I<num> + +I<num> being the hexadecimal representation of the code position. + +=item I<num> + +I<num> being the decimal representation of the code position, whereby +I<num> must not start with 0. + +=item 0I<num> + +I<num> being the octal representation of the code position. + +=back + +In all the above formats, I<num> can have any number of digits. + +=head2 CONFIG COMMANDS + +A command line consists of an command name and optional space +separated command arguments. The following commands are defined: + +=over 4 + +=item B<AUTOOPTION> + +Same as B<OPTION>, by the second argument specifies a LaTeX +package. If this package is loaded, the option is set automatically. + +This option is deprecated. + +=item B<BEGIN>, B<{> + +This starts a group. All options set after this are only valid up to +the matching B<END> or B<}>. Config files, which set options, should +be enclosed in a block, so that they can't have side effects on other +parts of the config file. Each config file is contained in an implicit +block. Blocks can be nested. + +=item B<END>, B<}> + +See B<BEGIN>. + +=item B<ENVELOPE> + +All macros are wrapped inside the envelope given by this command. The +original macro is inserted into the envelope instead of every +occurrence of C<@@@> and the decimal character code is inserted for +each occurrence of C<$$$>. B<ENVELOPE> will override B<ENVELOPE> +commands executed before. + +=item B<GLOBAL> + +Inserts some code into F<uni-global.def>. This file is loaded with +F<ucs.sty> in the preamble. F<uni-global.def> is not executed in a group, +so defining globally is not necessary. See also B<PROVIDE>. + +=item B<OPTION> + +This command takes one argument. It is the name of the Unicode option +to associate with the macros defined after this command. An option set +by B<OPTION> is valid until it is overridden by another B<OPTION> +command or until the block ends. + +=item B<PROVIDE> + +Associates a piece of code with characters defined afterwards (until +the block ends). The code is inserted into every B<uni-....def>-file +containing one of these characters, so the code is guaranteed to have +been executed before the corresponding characters are executed. No +assumption should be made whether the code is executed in a group or +at top level, i.e. declarations should be made globally, but no +garbage should be defined or catcodes modified without restoring +them afterwards. The code may be executed several times. See also B<GLOBAL>. + +=back + +=head1 KNOWN BUGS AND PROBLEMS + +There should be a better way to quote whitespaces in command arguments +and to insert C<#>s. Perhaps I will add this in future, thereby trying +to preserve backward compatibility. + +=head1 REPORTING BUGS + +Send bug reports to Dominique Unruh <I<dominique@unruh.de>>, the mails +containing the words B<bug report: makeunidef.pl> in the subject. + +=head1 AUTHOR + +Dominique Unruh <I<dominique@unruh.de>>. + +=head1 FILES + +=over 4 + +=item F<uni-I<N>.def>, F<uni-global.def>, F<uninames.dat> + +Unicode definitions for B<ucs.sty>, created by this program, I<N> +stands for different decimal numbers. + +=item F<UnicodeData.txt> + +Unicode database by the Unicode Consortium, read only. This file can be +found at F<http://www.unicode.org/Public/UNIDATA/UnicodeData.txt> + +=back + +=head1 SEE ALSO + +The LaTeX package B<ucs.sty>. + +=cut +#'; # for emacs + + +use IO::Handle; +use IO::File; +use Data::Dumper; +use Getopt::Long; +use Carp; + +use strict; + +# prototypes +sub dumphuffman($$$); #{} + + +use vars qw/$createcomments $targetdir @configfiles @characters + %files @unidata $unidata $messagebreak $dump_unidata + $verbose $generate_uninames $tables_to_dump $tabledir $autogen + %knownoptions $loadunidata %stats_charsperoption + %providehandlers $providehandlerseq %provides $huffman_decoder + %file_attribs $compressnames %excludedoptions %uninames_abbrev @ranges + $onlyfile $fileswritten $devnull + /; + +$messagebreak = '\MessageBreak '; +$autogen = 'autogenerated by makeunidef.pl'; + +%uninames_abbrev = + ( +# "\000" => '{Character available with following options:'. +# '\MessageBreak\space\space\space}', + "\001" => '{Unicode character \number\uc@got\uc@spc = U+\uc@temp@a:'. + '\MessageBreak}', +# "\002" => '{No name found}', + "\003" => '{Character available with following excluded options:'. + '\MessageBreak\space\space\space}', + "\n" => '\MessageBreak', + " " => '{ }', + ); + +sub globalcode ($) { + my $code = shift; + return unless $dump_unidata; + my $filename = "$targetdir/uni-global.def"; + my $file = openfile($filename, + "%%% unicode global data for ucs.sty, $autogen", + "Unicode global data"); + print $file "$code\n"; +} + +sub getprovidehandler($) { + my $code = shift; + return undef unless defined $code; + my $handler = $providehandlers{$code}; + unless (defined $handler) { +# print "NEW HANDLER: '$code'\n"; + $handler = $providehandlerseq++; + $providehandlers{$code} = $handler; + } + $provides{$handler} = { code => $code }; + return $handler; +} + +sub openreadfile($) { + my $filename = shift; + $filename .= ".gz" if (!-e $filename && -e "$filename.gz"); + if ($filename =~ /\.gz/) { + die "Could not read file $filename" unless -r $filename; + return new IO::File("gzip -cdf ''\Q$filename\E |"); + } else { + return new IO::File($filename,"r"); + } +} + +sub optionname($) { + my $o = shift; + return 'default' unless define($o) ne ''; + return $o; +} + +sub loadconfig ($) { + my ($filename) = @_; + my $fh = openreadfile $filename or + die "Could not open configfile $filename: $!"; + my %options; + my @optionstack; + while (my $line = <$fh>) { + chomp($line); + my $linepos = "$filename:$."; + $line =~ s/(^|\s)\#.*$//; + $line =~ s/^\s*//; + $line =~ s/\s*$//; + next if $line eq ''; + if ($line =~ /^[0-9]/ || $line =~ /^u\+/i) { + my ($num,$command) = split ' ',$line,2; + $num = oct($num) if $num =~ /^0/; + $num = hex($num) if $num =~ s/^\$//; + $num = hex($num) if $num =~ s/^u\+//i; + #print "Line: $line, Num: $num, Command: $command\n"; + my %o = %options; + $o{definedat} = $linepos; + $command = '' if lc($command) eq '<empty>'; + unless (defined ($command)) { + warn "$linepos: Use <empty> to declare an empty ". + "glyph macro.\n"; next; }; + $o{combining} = 1 + if (($command =~ /(^|[^\#])\#1/) || + (defined $o{envelope} && $o{envelope} =~ /(^|[^\#])\#1/)); + if (isprivate($num) && + optionname($o{onoption}) !~ /^(private|local)./) { + warn sprintf "%s: Character U+%04X is in private area, ". + "but has option '%s' (not 'private...' or 'local...').\n", + $linepos,$num,optionname($o{onoption}); + } + push @{$characters[$num]}, [ $command, \%o ]; + my $range = findrange2($num); + if (defined $range) { ${$$range{options}}{optionname($o{onoption})} =1}; + if ($unidata[$num]) { $ {$ {$unidata[$num]}{options}}{optionname($o{onoption})} =1}; + $stats_charsperoption{define($o{onoption})}++; + } else { + my @cmd = split ' ',$line; + if ($cmd[0] eq 'BEGIN' || $cmd[0] eq '{') { + my %t = %options; + push @optionstack, \%t; + } elsif ($cmd[0] eq 'END' || $cmd[0] eq '}') { + if (@optionstack) { + my $t = pop @optionstack; + %options = %$t + } else { + warn "$linepos: '$cmd[0]' outside a block.\n"; + } + } elsif ($cmd[0] eq 'OPTION') { + $options{onoption} = $cmd[1]; + unless (defined $knownoptions{$cmd[1]}) { + $knownoptions{$cmd[1]} = []; + } + } elsif ($cmd[0] eq 'AUTOOPTION') { + $options{onoption} = $cmd[1]; + unless (defined $knownoptions{$cmd[1]}) { + $knownoptions{$cmd[1]} = [ $cmd[2] ]; + } else { + # ************ DOUBLED + push @{$knownoptions{$cmd[1]}}, $cmd[2]; + } + } elsif ($cmd[0] eq 'ENVELOPE') { + $options{envelope} = join ' ',@cmd[1..$#cmd]; +# } elsif ($cmd[0] eq 'GLOBAL') { +# globalcode(join ' ',@cmd[1..$#cmd]); + } elsif (($cmd[0] eq 'PROVIDE') || ($cmd[0] eq 'GLOBAL')) { + my $prov = ''; + if ($cmd[1] eq 'MULTILINE') { + my ($e,$l) = (0); + my $xlinepos = $linepos; + while (!$e && defined($l = <$fh>)) { + if ($l =~ /^\s*END\s*$/) { $e = 1 } + else { $prov .= $l; } + } + unless ($e) { + warn "$xlinepos: Unfinished PROVIDE MULTILINE.\n"; + $prov = undef; + } + } else { + $prov = join ' ',@cmd[1..$#cmd]; + } + chomp $prov; $prov =~ s/%$//s; + if ($cmd[0] eq 'PROVIDE') { + $options{provide} = getprovidehandler($prov); + } else { + globalcode($prov); } + } elsif ($cmd[0] eq 'FONTENC') { + $options{fontenc} = $cmd[1]; + } elsif ($cmd[0] eq 'FONTFAMILY') { + $options{fontfamily} = $cmd[1]; + } elsif ($cmd[0] eq 'RIGHTLEFT') { + $options{rightleft} = 1; + } elsif ($cmd[0] eq 'TABLECODE') { + $options{tablecode} = join ' ',@cmd[1..$#cmd]; + } elsif ($cmd[0] eq 'CTRLGLYPH') { + $options{ctrlglyph} = 1; + } elsif ($cmd[0] eq 'COMBINECHAR') { + if ($cmd[1] =~ /^U\+[0-9A-F]+$/i) { + my ($n) = ($cmd[1] =~ /^U\+([0-9A-F]+)$/i); + $options{combinechar} = hex($n); + delete $options{combineglyph}; + delete $options{combineoption}; + } elsif ($cmd[1] =~ /^[a-z]+\/U\+[0-9A-F]+$/i) { + my ($o,$n) = ($cmd[1] =~ /^([a-z]+)\/U\+([0-9A-F]+)$/i); + $options{combinechar} = hex($n); + $options{combineoption} = $o; + delete $options{combineglyph}; + } else { + $options{combineglyph} = $cmd[1]; + delete $options{combinechar}; + delete $options{combineoption}; + } + } elsif ($cmd[0] eq 'LOADFONTENC') { + $options{loadfontenc} = $cmd[1]; + } elsif ($cmd[0] eq 'PACKAGE') { + $options{package} = $cmd[1]; + } elsif ($cmd[0] eq 'TABLEGLYPH') { + $options{tableglyph} = join ' ',@cmd[1..$#cmd]; + } elsif ($cmd[0] eq 'TABLEENVELOPE') { + $options{tableenvelope} = join ' ',@cmd[1..$#cmd]; + } else { + warn "$linepos: Malformed line $line"; + } + } + }; + close $fh or die "Something went wrong when closing $filename: $!"; +}; + +sub openfile ($$$%) { + my ($filename,$header,$description,%attribs) = @_; + my $file = $files{$filename}; + unless (defined $file) { + my $nowrite = 0; + $nowrite = 1 if defined($onlyfile) && $filename !~ m@(^|/)$onlyfile$@; + $fileswritten ++ unless $nowrite; + $attribs{nowrite} = 1 if $nowrite; + if (!$nowrite) { + $file = new IO::File($filename,O_CREAT|O_WRONLY|O_EXCL) or + die "Could not open $filename for writing: $!"; + } else { + print "Not writing file $filename\n" if $verbose; + $devnull = new IO::File('/dev/null',O_WRONLY) unless ($devnull); + $file = $devnull; } + print $file "$header\n"; + my @date = localtime; + my $date = sprintf "%04d/%02d/%02d", + $date[5]+1900, $date[4]+1, $date[3]; + my $basename = $filename; $basename =~ s@.*/@@; + print $file "\\ifx\\ProvidesFile\\undefined\\else +\\ProvidesFile{$basename}[$date UCS: $description]% +\\fi +"; + flush $file; + $files{$filename} = $file; + $file_attribs{$filename} = \%attribs; + } + return $file; +} + +sub dumpcharacters() { + for (my $i=0; $i<=$#characters; $i++) { + next unless defined $characters[$i]; + my %seen = (); + for my $j (@{$characters[$i]}) { + my $val = $$j[0]; + my $options = $$j[1]; + my $envelope = $$options{envelope}; + if (define($envelope) ne '') { + my $t = $val; + $val = $envelope; + $val =~ s/\$\$\$/$i/g; + $val =~ s/\@\@\@/$t/g; + } + $val = "\\uc\@cmb$val" if ($$options{combining}); + my $comment = define($$options{comment}); + my $onoption = $$options{onoption}; + next if $excludedoptions{(defined $onoption)?$onoption:'default'}; + my $page = int($i/256); + my $filename = "$targetdir/uni-$page.def"; + #print "Character $i ($filename):\n"; + my $range = sprintf("U+%04X..U+%04X", + $page*256,$page*256+255); + my $provide = $$options{provide}; + my $header = "%%% Unicode to TeX mapping, file uni-$page.def, ". + "$range, autogenerated by makeunidef.pl"; + my $file = openfile($filename,$header,"Unicode data $range"); + + if (defined $provide) { + $provide = $provides{$provide}; + unless (defined $$provide{"done:$filename"}) { + $$provide{"done:$filename"} = 1; + print $file "$$provide{code}%\n"; + #print "Providing $$provide{code} to $filename\n"; + } + } + + my $texcmd = ''; + if (defined $val) { + $texcmd = "\\uc\@dclc{$i}{". + (defined $onoption?$onoption:'default'). + "}{$val}"; + } + $texcmd .= "% $comment"; + $texcmd .= " (missing)" unless defined $val; + $texcmd =~ s/\s+$//; + print $file "$texcmd\n"; + my $tag = define($onoption); + if (defined $seen{$tag}) { + warn sprintf + "%s: Character U+%04X(%s) redefined. ". + "(First definition in %s).\n", + $$options{definedat},$i,optionname($onoption),$seen{$tag}; + } else { + $seen{$tag} = define($$options{definedat}); + } + #print "$texcmd\n"; + } + } + flushfiles(); +} + +sub loadunidata($) { + my ($filename) = @_; + my $f = openreadfile $unidata or + die "Could not open $unidata for reading: $!"; + my $inrange = undef; + my $rangestart; + while (my $line = <$f>) { + chomp($line); + my @line = split ';', $line; + my %line = (); + $line{num} = hex($line[0]); + $line{name} = $line[1]; + $line{category} = $line[2]; + $line{combining} = $line[3]; + $line{flags} = $line[4]; + my @compose = split ' ',$line[5]; + my $compflag = undef; + if (defined $compose[0] && $compose[0] =~ /^</) { + $compflag = shift @compose; + $compflag =~ s/^<//; + $compflag =~ s/>$//; + } + $line{compose} = \@compose; + $line{compflag} = $compflag; + $line{decdigit} = $line[6]; + $line{digit} = $line[7]; + $line{numerical} = $line[8]; + $line{bracket} = $line[9]; + $line{alias} = $line[10]; + $line{comment} = $line[11]; + $line{upcase} = $line[12]; + $line{downcase} = $line[13]; + $line{titlecase} = $line[14]; + $line{case3} = $line[15]; + + my ($rangename,$rangedir) = + ($line{name} =~ /^\<(.*), (First|Last)\>$/); + if (defined $rangename) { + if ($rangedir eq 'First') { + if (defined $inrange) { + warn "$filename:$.: Range '$rangename' started while ". + "in range '$inrange'.\n"; + } + #warn "Starting: '$rangename'"; + $inrange = $rangename; + $rangestart = $line{num}; + next; + } elsif ($rangedir eq 'Last') { + if (defined $inrange && $rangename eq $inrange) { + #warn "Ending: '$inrange'"; + $line{rangestart} = $rangestart; + $line{rangeend} = $line{num}; +# $line{num} = $line{rangestart}; + $line{name} = "Contained in range '$rangename'"; + #printf "Range found: U+%04X..U+%04X '%s'\n", + #$rangestart, $line{num}, $rangename if $verbose; + } elsif (defined $inrange) { + warn "$filename:$.: ". + "Range '$inrange' ended by '$rangename'"; + } + $inrange = undef; + } else { + die "Internal error"; + } + } else { + if (defined $inrange) { + warn "$filename:$.: ". + "Range '$inrange' not ended on next line.\n"; + $inrange = undef; + } + } + $unidata[$line{num}] = \%line; + push @ranges, \%line if $line{rangestart}; + } + close $f or die "Something went wrong when closing $filename: $!"; +} + +sub generate_globals() { + while (my ($option,$pkgs) = each %knownoptions) { + if (!$excludedoptions{$option}) { + if (@$pkgs == 1) { + my $pkg = $$pkgs[0]; + globalcode("\\DeclareUnicodeOption[$pkg]{$option}\%"); + } else { + globalcode("\\DeclareUnicodeOption{$option}\%"); + for my $pkg (@$pkgs) { + globalcode("\\LinkUnicodeOptionToPkg{$option}{$pkg}\%"); + } + } + } else { + globalcode + ("\\XDeclareUnicodeOption{}{$option}{}{". + "\\PackageError{ucs}{Option $option has not been generated}". + "{run makeunidef.pl without --exclude $option.}}{}"); + } + } + flushfiles(); +} + +sub define($) { + my $str = shift; + return $str if defined $str; + return ''; +} + +sub define0($) { + my $str = shift; + return $str if defined $str; + return 0; +} + +sub findrange($) { + my $i = shift; + for my $r (@ranges) { + if ($i>=$$r{rangestart} && $i<=$$r{rangeend}) { + return $$r{name}; + } + } + return undef; +} + +sub findrange2($) { + my $i = shift; + for my $r (@ranges) { + if ($i>=$$r{rangestart} && $i<=$$r{rangeend}) { + return $r; + } + } + return undef; +} + +sub generate() { + for (my $i=0; $i<=$#unidata; $i++) { + my $char = $unidata[$i]; + my $tex = undef; + next unless defined $char; + next unless %$char; + next if (defined $characters[$i]); + if (@{$$char{compose}}) { + my $success = 1; + for my $comp (@{$$char{compose}}) { + $success = 0 unless defined $characters[hex($comp)]; + } + if ($success) { + my $compflag = $$char{compflag}; + my $compmode = 'none'; + if (define($compflag) eq '') { $compmode = 'normal' } + elsif ($compflag eq 'fraction') { $compmode = 'normal' } + elsif ($compflag eq 'compat') { $compmode = 'normal' } + elsif ($compflag eq 'noBreak') { $compmode = 'normal' } + elsif ($compflag eq 'super') { $compmode = 'normal.super' } + elsif ($compflag eq 'sub') { $compmode = 'normal.sub' } + elsif ($compflag eq 'font') { $compmode = 'normal' } + elsif ($compflag eq 'circle') { $compmode = 'normal.circle' } + elsif ($compflag eq 'square') { $compmode = 'normal.square' } + elsif ($compflag eq 'wide') { $compmode = 'normal.wide' } + elsif ($compflag eq 'narrow') { $compmode = 'normal.narrow' } + elsif ($compflag eq 'vertical') { $compmode = 'normal.vertical' } + elsif ($compflag eq 'small') { $compmode = 'normal.small' } + else { warn "Unknown composition flag \<$compflag\> ". + "in character ".sprintf("%04X",$$char{num}); }; + if ($compmode =~ /^normal/) { + $tex = join '', map { + my $a = hex($_); + "\\unichar{$a}" } @{$$char{compose}}; + if ($compmode eq 'normal.super') { + $tex = "\\unicodesuper{$tex}"; + } elsif ($compmode eq 'normal.sub') { + $tex = "\\unicodesub{$tex}"; + } elsif ($compmode eq 'normal.square') { + $tex = "\\unicodesquare{$tex}"; + } elsif ($compmode eq 'normal.circle') { + $tex = "\\unicodecircle{$tex}"; + } elsif ($compmode eq 'normal.wide') { + $tex = "\\unicodewide{$tex}"; + } elsif ($compmode eq 'normal.narrow') { + $tex = "\\unicodenarrow{$tex}"; + } elsif ($compmode eq 'normal.vertical') { + $tex = "\\unicodevertical{$tex}"; + } elsif ($compmode eq 'normal.small') { + $tex = "\\unicodesmall{$tex}"; + } + } elsif ($compmode eq 'none') { + } else { + die "Unknown composition mode $compmode. INTERNAL ERROR"; + } + } + if (!$success && $$char{numerical} ne '') { + #print "NUMERICAL $i\n"; + $tex = $$char{numerical}; + } + #print "C: $$char{compflag}\n" if defined $$char{compflag}; + + if ($tex) { + push @{$characters[$i]}, + [ "$tex", #"\\dirtyunicode{$i}{$tex}" + { dirty => 1, + onoption => 'autogenerated' } ]; + unless (defined $knownoptions{autogenerated}) { + $knownoptions{autogenerated} = []; + } + } + } + } +} + +sub initcharacters() { +# for (my $i=0; $i<128; $i++) { +# push @{$characters[$i]}, [ "\\char$i\\relax", { comment => 'ASCII' } ]; +# } +} + +sub makecomments() { + for (my $i=0; $i<$#unidata; $i++) { + next unless defined $unidata[$i]; + push @{$characters[$i]}, [] unless defined $characters[$i]; + for my $char (@{$characters[$i]}) { + my $options = $$char[1]; + next if defined $$options{comment}; + my $onoption = $$options{onoption}; + #print "CHAR: $char\n"; + #print "CHAR2: $$char[1]\n"; + my $utf8 = utf16toutf8($i); + my $comment = ''; + $comment .= "OPTION: $onoption, " if ($onoption); + $comment .= sprintf "0x%04X = %d (%s) - %s", + $i ,$i, $utf8, $ {$unidata[$i]}{name}; + $$options{comment} = $comment; + $$char[1] = $options; + } + } +} + +sub utf16toutf8($) { + my $char = shift; + if ($char<0x80) { return $char; } + if ($char<0x0800) { + return chr(0xc0+int($char/64)).chr(0x80+($char%64)); } + return chr(0xe0+int($char/0x1000)). + chr(0x80+int(($char%0x1000)/64)). + chr(0x80+($char%64)); +} + +sub flushfiles() { + for my $file (values %files) { + flush $file; + } +} + +sub closefiles() { + for my $filename (keys %files) { + my $file = $files{$filename}; + my $attrib = $file_attribs{$filename}; + next if $$attrib{nowrite}; + my $cs = 'utf-8'; + $cs = $$attrib{coding} if defined $$attrib{coding}; + print $file <<EOT; +%%% Local Variables: +%%% mode: latex +%%% coding: $cs +%%% End: +EOT + close $file or die "Something went wrong when closing $filename: $!"; + } + if (define0($fileswritten)==0) { + warn "No files written"; } +} + +sub showhelp() { + print <<EOT; +Generates uni-....def files for ucs.sty + +Options: + --database <file> Set unicode database (default: UnicodeData.txt; short -d) + --nocomments Disable comments in generated files + --targetdir <dir> Set target directory (default: .; short: -t) + --verbose Be verbose (short: -v) + --help This page (short: -h) + <file(s)> Use this configfile(s) + +Configfiles consists of lines, each like this +<unicode number> <LaTeX-Code> +where <unicode number> may be prefixed by 0x or 0 to denote hex or oct. +Lines beginning with # denote a comment. +EOT +} + +sub optioneq($$) { + my ($a,$b) = @_; + $a = 'default' if define($a) eq ''; + $b = 'default' if define($b) eq ''; + return $a eq $b; +} + +sub getchar($$) { + my ($c,$option) = @_; + + #print "getchar($c,$option)\n"; + return undef unless $characters[$c]; + for my $char (@{$characters[$c]}) { + my $options = $$char[1]; + return $char if define($$options{onoption}) eq $option; + return $char if define($$options{onoption}) eq '' && $option eq 'default'; + } + return undef; +} + +sub expand_tablespec($); + +sub expand_tablespec($) { + my $tablesize = 256; + + my $spec = shift; + my @specs = (); + $spec = '*:*' if $spec eq '*'; + my @spec = ($spec =~ /^([a-z0-9]+|\*):(.*)$/i); + my $option = $spec[0]; + my $range = $spec[1]; + if (define($option) eq '') { + warn "Invalid table specifier '$spec'. Ignoring"; + return (); + } + if ($option eq '*') { + push @specs, expand_tablespec("default:$range"); + for my $o (sort keys %knownoptions) { + push @specs, expand_tablespec("$o:$range") unless $o eq 'default'; + } + } elsif ($range eq '*') { + for (my $i=0; $i<=$#characters; $i+=$tablesize) { + for (my $j=0; $j<$tablesize; $j++) { + if (my $c = getchar($i+$j,$option)) { + my $options = $$c[1]; + #next if $$options{dirty}; + push @specs, expand_tablespec + (sprintf "%s:%04X-%04X", + $option,$i,$i+$tablesize-1); + last; + } + } + } + } else { + warn "Unknown option '$option' in table spec '$spec'. Ignoring" + unless $option eq 'default' || defined $knownoptions{$option}; + my @range = map { hex } split '-', $range, 2; + + push @specs, { option => $option, + start => $range[0], + end => $range[1], + format => 'table', }; + } + return @specs; +} + +sub dump_charactertables() { + my @tables = map { + expand_tablespec($_) + } map { + s/\s+$//; s/^\s+//; $_ + } split /,/, $tables_to_dump; + for my $spec (@tables) { + dump_charactertable($spec); + } + flushfiles(); +} + +sub default_entrydata($) { + my $i = shift; + return + ( 'code' => $i, + 'hexcode' => sprintf("%04X", $i), + 'hexcodebeforelast' => sprintf("%1X", int($i%256/16)), + ); +} + +sub make_entrydata($$$$); +sub make_entrydata($$$$) { + my ($option,$i,$options,$hasctrlglyph) = @_; + my %entrydata = default_entrydata($i); + if (defined $$options{tableglyph}) { + warn sprintf "%s: Character %s/U+%04X has ". + "TABLEGLYPH specification.\n", + $$options{definedat},$option,$i; + } + if ($$options{ctrlglyph}) { + if ($hasctrlglyph) { + %entrydata = %{make_entrydata('ctrlglyphs',$i,$hasctrlglyph,0)}; + $entrydata{ctrlglyph} = 1; + $entrydata{option} = 'ctrlglyphs'; + return \%entrydata; + } else { + warn sprintf "%s: Char U+%04X has no control ". + "glyph.\n",$$options{definedat},$i; + $entrydata{tableglyph} = + sprintf('{\tiny %04X}',$i); + } + } + $entrydata{dirty} = ($$options{dirty})?1:0; + $entrydata{rightleft} = ($$options{rightleft})?1:0; + $entrydata{combining} = ($$options{combining})?1:0; + $entrydata{fontfamily} = $$options{fontfamily} + if defined $$options{fontfamily}; + $entrydata{combinechar} = $$options{combinechar} + if defined $$options{combinechar}; + $entrydata{combineglyph} = $$options{combineglyph} + if defined $$options{combineglyph}; + $entrydata{combineoption} = $$options{combineoption} + if defined $$options{combineoption}; + $entrydata{fontenc} = $$options{fontenc} + if defined $$options{fontenc}; + if (defined $$options{tableglyph}) { + warn sprintf "Add to ctrlglyphs.ucf:\nU+%04X\t%s\n", + $i,$$options{tableglyph} + unless $hasctrlglyph; + $entrydata{tableglyph} = $$options{tableglyph}; + } + if (defined $$options{tableenvelope}) { + warn sprintf "%s: Character %s/u+%04x has ". + "TABLEENVELOPE specification.\n", + $$options{definedat},$option,$i; + $entrydata{tableenvelope} = $$options{tableenvelope}; + $entrydata{tableenvelope} =~ s/\@\@\@/\#1/g; + $entrydata{"tableenvelope.optspec"} = '#1'; + } +# $entrydata{fontenc} = 'T1' +# unless defined $entrydata{fontenc}; + for my $x (qw/loadfontenc package tablecode/) { + $entrydata{"$x.option"} = $$options{$x}; } + return \%entrydata; +} + +sub dump_charactertable($$$$) { + my $spec = shift; + my $option = $$spec{option}; + my $start = $$spec{start}; + my $end = $$spec{end}; + my $format = $$spec{format}; + + my $hstart = sprintf "%04X", $start; + my $hend = sprintf "%04X", $end; + my $filename = "$tabledir/table-$option-$hstart-$hend.tex"; + + print "Generating $filename\n" if $verbose; + + my $file = openfile("$tabledir/table-$option-$hstart-$hend.tex", + "%%% table for option $option, U+$hstart..U+$hend, $autogen", + "Unicode chart U+$hstart..U+$hend"); + + print $file <<EOT; +\\input{tables.inc} + +\\def\\gformat{$format}% +\\def\\goption{$option}% +\\def\\ghstart{$hstart}% +\\def\\ghend{$hend}% +\\def\\gstart{$start}% +\\def\\gend{$end}% +EOT + + my $table = "\\tstart%\n"; + my %fontencs = (); + my %packages = (); + my %tablecode = (); + for (my $i=$start; $i<=$end; $i++) { + my @chars = (); + @chars = @{$characters[$i]} if defined @{$characters[$i]}; + my $entry = ($unidata[$i])?"\\noglyph":"\\unassigned"; + my $found = 0; + my $hasctrlglyph = undef; + for my $char (@chars) { + my $options = $$char[1]; + if (define($$char[0]) ne '' || + define($$options{envelope}) ne '') { + if (optioneq($$options{onoption},'ctrlglyphs')) { + $hasctrlglyph = $options; + } + } + } + + my $entrydata = {default_entrydata($i)}; + + for my $char (@chars) { + my $options = $$char[1]; + if (define($$char[0]) ne '' || + define($$options{envelope}) ne '') { + if (optioneq($$options{onoption},$option)) { + $entry = '\glyph'; + $entrydata = make_entrydata($option,$i,$options, + $hasctrlglyph); + $fontencs{$$entrydata{fontenc}} = 1 + if defined $$entrydata{fontenc} && + $$entrydata{fontenc} ne 'T1'; + $fontencs{$$entrydata{'loadfontenc.option'}} = 1 + if defined $$entrydata{'loadfontenc.option'}; + if (defined $$entrydata{"package.option"}) { + for my $p (split ';', $$entrydata{'package.option'}) { + $packages{$p} = 1; }} + $tablecode{$$entrydata{"tablecode.option"}} = 1 + if defined $$entrydata{"tablecode.option"}; + $found = 1; + } elsif (!$found) { + if (!$$options{dirty} || $entry eq '') { + $entry = '\withoption'; + } + } + } + } + for my $i (keys %$entrydata) { + next if $i =~ /\./; + my $os = define($$entrydata{"$i.optspec"}); + $table .= "\\gdef\\a$i$os\{$$entrydata{$i}\}%\n"; } + my $comment = sprintf "%04X %s %s", $i, utf16toutf8($i), + define($unidata[$i]->{name}); + $table .= "$entry\% $comment\n"; + } + $table .= "\\tend%\n"; + + print $file "\\def\\gfontencs{",join(',',keys %fontencs,'T1'),"}%\n"; + for my $p (keys %packages) { + $p = "{$p}" unless $p =~ /\}$/; + print $file "\\usepackage$p%\n"; + } + for my $c (keys %tablecode) { + print $file "$c%\n"; + } + print $file $table; + flush $file; +} + + +sub parseargs() { + #Getopt::Long::Configure(qw/bundling/); + my %opt = (); + unless (GetOptions(\%opt,qw/config|configfile|c=s@ + exclude|ex=s@ + database|db|d=s + comments! + names! + data! + loadunidata! + tables=s + tabledir=s + targetdir|dir|t|target=s + help|h + verbose|v + compress! + onlyfile=s + /)) { + die "Bad command line options, try --help"; + } + if ($opt{help}) { + showhelp(); + exit; + } + unless ($opt{forceasterisk}) { + @ARGV = grep { if (/\*/ && !-e $_) { + print "Configfile $_ seems to be unmatched wildcard. Ignoring.\n" + if $opt{verbose}; + 0; } else { 1; } + } @ARGV; + } + push @{$opt{config}}, @ARGV if @ARGV; + die "You must supply at least one config file" + unless defined $opt{config}; + $opt{exclude} = [] unless defined $opt{exclude}; + @{$opt{exclude}} = split /,/,join ',',@{$opt{exclude}}; + $opt{database} = 'UnicodeData.txt' unless defined $opt{database}; + $opt{comments} = 1 unless defined $opt{comments}; + $opt{names} = 1 unless defined $opt{names}; + $opt{data} = 1 unless defined $opt{data}; + $opt{targetdir} = '.' unless defined $opt{targetdir}; + $opt{loadunidata} = 1 unless defined $opt{loadunidata}; + $opt{tables} = '*' if $opt{tabledir} && !defined $opt{tables}; + $opt{tabledir} = '.' unless defined $opt{tabledir}; + $opt{compress} = 1 unless defined $opt{compress}; + @configfiles = @{$opt{config}}; + $unidata = $opt{database}; + $createcomments = $opt{comments}; + $targetdir = $opt{targetdir}; + $verbose = $opt{verbose}; + $generate_uninames = $opt{names}; + $tabledir = $opt{tabledir}; + $tables_to_dump = $opt{tables}; + $dump_unidata = $opt{data}; + $loadunidata = $opt{loadunidata}; + $compressnames = $opt{compress}; + $onlyfile = $opt{onlyfile}; + %excludedoptions = map { $_ => 1 } @{$opt{exclude}}; +} + +sub untaint($) { + my $str = shift; + my ($unt) = ($str =~ /^(.*)$/); + return $unt; +} + +sub unlinkfile($) { + my $fullname = shift; + return 1 if defined($onlyfile) && $fullname !~ m@(^|/)$onlyfile$@; + return 1 unless -e $fullname; + my $f = new IO::File($fullname,O_RDONLY) or + die "Could not open $fullname for reading: $!"; + my $line = <$f>; + close $f; + unless ($line =~ /^\%\%\%.*autogenerated by makeunidef.pl/) { + die "File $fullname was not generated by me, ". + "will not overwrite it"; } + unlink untaint($fullname) or + die "Could not remove $fullname: $!"; + #print "FILE: $file\n"; +} + +sub unlinkfiles($$) { + my ($pattern,$dir) = @_; + my $d = new IO::Handle; + opendir $d, $dir or + die "Could not open directory $targetdir: $!"; + while (my $file = readdir $d) { + #print "F: $file\n"; + next unless $file =~ /$pattern/x; + #print "UF: $file\n"; + unlinkfile("$dir/$file") or + die "Could not unlink $dir/$file"; + } +} + +$huffman_decoder = '\count255=128 +\loop\ifnum\count255<256\relax + \catcode\count255=13 + \advance\count255by1\relax +\repeat +\catcode`\G=13 +\catcode`\H=13 +\catcode`\I=13 +\def\uncompress{% +\def^^80{\0\0\0\0\0\0\0}% +\def^^81{\0\0\0\0\0\0\1}% +\def^^82{\0\0\0\0\0\1\0}% +\def^^83{\0\0\0\0\0\1\1}% +\def^^84{\0\0\0\0\1\0\0}% +\def^^85{\0\0\0\0\1\0\1}% +\def^^86{\0\0\0\0\1\1\0}% +\def^^87{\0\0\0\0\1\1\1}% +\def^^88{\0\0\0\1\0\0\0}% +\def^^89{\0\0\0\1\0\0\1}% +\def^^8a{\0\0\0\1\0\1\0}% +\def^^8b{\0\0\0\1\0\1\1}% +\def^^8c{\0\0\0\1\1\0\0}% +\def^^8d{\0\0\0\1\1\0\1}% +\def^^8e{\0\0\0\1\1\1\0}% +\def^^8f{\0\0\0\1\1\1\1}% +\def^^90{\0\0\1\0\0\0\0}% +\def^^91{\0\0\1\0\0\0\1}% +\def^^92{\0\0\1\0\0\1\0}% +\def^^93{\0\0\1\0\0\1\1}% +\def^^94{\0\0\1\0\1\0\0}% +\def^^95{\0\0\1\0\1\0\1}% +\def^^96{\0\0\1\0\1\1\0}% +\def^^97{\0\0\1\0\1\1\1}% +\def^^98{\0\0\1\1\0\0\0}% +\def^^99{\0\0\1\1\0\0\1}% +\def^^9a{\0\0\1\1\0\1\0}% +\def^^9b{\0\0\1\1\0\1\1}% +\def^^9c{\0\0\1\1\1\0\0}% +\def^^9d{\0\0\1\1\1\0\1}% +\def^^9e{\0\0\1\1\1\1\0}% +\def^^9f{\0\0\1\1\1\1\1}% +\def^^a0{\0\1\0\0\0\0\0}% +\def^^a1{\0\1\0\0\0\0\1}% +\def^^a2{\0\1\0\0\0\1\0}% +\def^^a3{\0\1\0\0\0\1\1}% +\def^^a4{\0\1\0\0\1\0\0}% +\def^^a5{\0\1\0\0\1\0\1}% +\def^^a6{\0\1\0\0\1\1\0}% +\def^^a7{\0\1\0\0\1\1\1}% +\def^^a8{\0\1\0\1\0\0\0}% +\def^^a9{\0\1\0\1\0\0\1}% +\def^^aa{\0\1\0\1\0\1\0}% +\def^^ab{\0\1\0\1\0\1\1}% +\def^^ac{\0\1\0\1\1\0\0}% +\def^^ad{\0\1\0\1\1\0\1}% +\def^^ae{\0\1\0\1\1\1\0}% +\def^^af{\0\1\0\1\1\1\1}% +\def^^b0{\0\1\1\0\0\0\0}% +\def^^b1{\0\1\1\0\0\0\1}% +\def^^b2{\0\1\1\0\0\1\0}% +\def^^b3{\0\1\1\0\0\1\1}% +\def^^b4{\0\1\1\0\1\0\0}% +\def^^b5{\0\1\1\0\1\0\1}% +\def^^b6{\0\1\1\0\1\1\0}% +\def^^b7{\0\1\1\0\1\1\1}% +\def^^b8{\0\1\1\1\0\0\0}% +\def^^b9{\0\1\1\1\0\0\1}% +\def^^ba{\0\1\1\1\0\1\0}% +\def^^bb{\0\1\1\1\0\1\1}% +\def^^bc{\0\1\1\1\1\0\0}% +\def^^bd{\0\1\1\1\1\0\1}% +\def^^be{\0\1\1\1\1\1\0}% +\def^^bf{\0\1\1\1\1\1\1}% +\def^^c0{\1\0\0\0\0\0\0}% +\def^^c1{\1\0\0\0\0\0\1}% +\def^^c2{\1\0\0\0\0\1\0}% +\def^^c3{\1\0\0\0\0\1\1}% +\def^^c4{\1\0\0\0\1\0\0}% +\def^^c5{\1\0\0\0\1\0\1}% +\def^^c6{\1\0\0\0\1\1\0}% +\def^^c7{\1\0\0\0\1\1\1}% +\def^^c8{\1\0\0\1\0\0\0}% +\def^^c9{\1\0\0\1\0\0\1}% +\def^^ca{\1\0\0\1\0\1\0}% +\def^^cb{\1\0\0\1\0\1\1}% +\def^^cc{\1\0\0\1\1\0\0}% +\def^^cd{\1\0\0\1\1\0\1}% +\def^^ce{\1\0\0\1\1\1\0}% +\def^^cf{\1\0\0\1\1\1\1}% +\def^^d0{\1\0\1\0\0\0\0}% +\def^^d1{\1\0\1\0\0\0\1}% +\def^^d2{\1\0\1\0\0\1\0}% +\def^^d3{\1\0\1\0\0\1\1}% +\def^^d4{\1\0\1\0\1\0\0}% +\def^^d5{\1\0\1\0\1\0\1}% +\def^^d6{\1\0\1\0\1\1\0}% +\def^^d7{\1\0\1\0\1\1\1}% +\def^^d8{\1\0\1\1\0\0\0}% +\def^^d9{\1\0\1\1\0\0\1}% +\def^^da{\1\0\1\1\0\1\0}% +\def^^db{\1\0\1\1\0\1\1}% +\def^^dc{\1\0\1\1\1\0\0}% +\def^^dd{\1\0\1\1\1\0\1}% +\def^^de{\1\0\1\1\1\1\0}% +\def^^df{\1\0\1\1\1\1\1}% +\def^^e0{\1\1\0\0\0\0\0}% +\def^^e1{\1\1\0\0\0\0\1}% +\def^^e2{\1\1\0\0\0\1\0}% +\def^^e3{\1\1\0\0\0\1\1}% +\def^^e4{\1\1\0\0\1\0\0}% +\def^^e5{\1\1\0\0\1\0\1}% +\def^^e6{\1\1\0\0\1\1\0}% +\def^^e7{\1\1\0\0\1\1\1}% +\def^^e8{\1\1\0\1\0\0\0}% +\def^^e9{\1\1\0\1\0\0\1}% +\def^^ea{\1\1\0\1\0\1\0}% +\def^^eb{\1\1\0\1\0\1\1}% +\def^^ec{\1\1\0\1\1\0\0}% +\def^^ed{\1\1\0\1\1\0\1}% +\def^^ee{\1\1\0\1\1\1\0}% +\def^^ef{\1\1\0\1\1\1\1}% +\def^^f0{\1\1\1\0\0\0\0}% +\def^^f1{\1\1\1\0\0\0\1}% +\def^^f2{\1\1\1\0\0\1\0}% +\def^^f3{\1\1\1\0\0\1\1}% +\def^^f4{\1\1\1\0\1\0\0}% +\def^^f5{\1\1\1\0\1\0\1}% +\def^^f6{\1\1\1\0\1\1\0}% +\def^^f7{\1\1\1\0\1\1\1}% +\def^^f8{\1\1\1\1\0\0\0}% +\def^^f9{\1\1\1\1\0\0\1}% +\def^^fa{\1\1\1\1\0\1\0}% +\def^^fb{\1\1\1\1\0\1\1}% +\def^^fc{\1\1\1\1\1\0\0}% +\def^^fd{\1\1\1\1\1\0\1}% +\def^^fe{\1\1\1\1\1\1\0}% +\def^^ff{\1\1\1\1\1\1\1}% +\readline}% +\@tempcnta=0 +\def\readline#1 +{\toks255{}\toks254{}\relax + #1% + \let\uc@temp@c\uc@temp@a + \unicode@numtohex\uc@temp@a\uc@got4% + \edef\uc@temp@b{\the\toks254}% + \edef\uc@temp@b{\uc@temp@b}% + \global\let\uc@temp@a\uc@temp@c + \expandafter\info\expandafter{\uc@temp@b}% + \endinput}% +\def\skipcodes#1G{\advance\@tempcnta by"#1\relax\checkline}% +\def\skipline#1 +{}% +\def\add#1{\toks254\expandafter{\the\toks254 #1}}% +\def\checkline{\advance\@tempcnta by1\relax + \ifnum\@tempcnta=\uc@got + \expandafter\uncompress\else\expandafter\skipline\fi}% +\def\checkrange#1I#2G{% + \advance\@tempcnta by"#1\relax + \@tempcntb\@tempcnta\advance\@tempcntb by-"#2\relax + \ifnum\@tempcntb>\uc@got\let\uc@temp@c\skipline\else + \ifnum\@tempcnta<\uc@got\let\uc@temp@c\skipline\else + \let\uc@temp@c\uncompress + \fi\fi + \uc@temp@c}% +\letG\checkline +\letH\skipcodes +\letI\checkrange +\def\1{\toks255\expandafter{\the\toks255 b}\2}% +\def\0{\toks255\expandafter{\the\toks255 a}\2}% +\def\2{\expandafter\ifx\csname hc@\the\toks255\endcsname\relax + \else\csname hc@\the\toks255\endcsname\toks255{}\fi}%'; + +sub getname($) { + my $i = shift; + my $fullname; my $rangeend; my $xoptions; + if (defined $unidata[$i]) { + my $name = $ {$unidata[$i]}{name}; + my $alias = $ {$unidata[$i]}{alias}; + my $comment = $ {$unidata[$i]}{comment}; + $rangeend = $ {$unidata[$i]}{rangeend}; + $fullname = $name; + $fullname .= "\n$alias" if $alias; + $fullname .= "\n$comment" if $comment; + $xoptions = join ', ', grep { $excludedoptions{$_} } + keys %{$ {$unidata[$i]}{options}}; + $xoptions = undef if $xoptions eq ''; + } + +# if ($characters[$i]) { +# $options = grep { defined $_ } join ', ', map { +# my $o = $$_[1]; $o = $$o{onoption}; +# $o = 'default' if (!defined $o) || ($o eq ''); $o; +# $o = undef unless $excludedoptions{$o}; $o; +# } @{$characters[$i]}; +# if (defined $rangeend) { +# $options2 = $options; $options = undef; +# $fullname2 = findrange($i); +# } else { +# $fullname = findrange($i) unless defined $fullname; +# } +# } + + return undef unless defined $fullname; + + my $str = "\001"; + if (defined $fullname) { $str .= "$fullname\n" } else { $str .= "\002\n" }; + if (defined $xoptions) { $str .= "\003$xoptions\n" }; + chomp $str; + +# my $str2 = undef; +# if (defined $options2) { +# $str2 = "\001"; +# if (defined $fullname2) { $str2 .= "$fullname\n" } +# else { $str2 .= "\002\n" }; +# { $str2 .= "\000$options2\n" }; +# chomp $str2; +# } + + return ($str); +} + +sub dumpnames_compressed() { + my $file = openfile("$targetdir/uninames.dat", + "%%% unicode name hash for ucs.sty, $autogen", + "Unicode character names, compressed", + coding => 'no-conversion'); + print "Creating Huffman code\n" if $verbose; + my (@weight, @tree, %lookup); + my $nexthuffman = 0; + my $upto = $#unidata; $upto = $#characters if $#characters > $upto; + for (my $i=1; $i<=$upto; $i++) { + for my $str (getname $i) { + next unless defined $str; + for my $c (split '',$str) { + my $n = $lookup{$c}; + unless (defined $n) { $n = $nexthuffman++; $lookup{$c} = $n }; + $weight[$n]++; + $tree[$n] = $c; + } + } + } + + my $highnum = 9999999; + while (1) { + my ($smallest, $smallest2); + my $smallestval = $highnum; + my $smallest2val = $highnum; + for (my $i=0; $i<$nexthuffman; $i++) { + my $val = $weight[$i]; + my $j = $i; + next unless defined $val; +# print "0: $j\n"; + if ($val < $smallestval) { + my $tmp = $val; $val = $smallestval; $smallestval = $tmp; + $tmp = $j; $j = $smallest; $smallest = $tmp; + } + if ($val < $smallest2val) { + $smallest2val = $val; $smallest2 = $j; + } +# print "A: $smallest, $smallest2\n"; + } + last if ($smallest2val==$highnum); + $weight[$smallest] = undef; + $weight[$smallest2] = undef; + $tree[$nexthuffman] = [$tree[$smallest],$tree[$smallest2]]; + $weight[$nexthuffman] = $smallestval+$smallest2val; +# print "$smallest + $smallest2 => $nexthuffman\n"; +# print Dumper($tree[$nexthuffman]); + $nexthuffman++; + } + + dumphuffman($tree[$nexthuffman-1],'',\%lookup); + my $padding = undef; + for my $i (values %lookup) { + if (length($i)>7) { + $padding = $i; last; + } + } + unless (defined $padding) { + warn "There is no huffman bit sequence longer than 7 bit. ". + "Padding with spaces"; + $padding = $lookup{' '} x 8; + } + + print "Compressing\n" if $verbose; + + for my $c (keys %lookup) { + my $v = $lookup{$c}; + $v =~ s/1/b/g; $v =~ s/0/a/g; + $c = $uninames_abbrev{$c} if defined $uninames_abbrev{$c}; + print $file "\\def\\hc\@$v\{\\add $c\}\%\n"; + } + print $file "$huffman_decoder\n"; + + my $cp = 0; + for (my $i=1; $i<=$#unidata; $i++) { + for my $str (getname $i) { + next unless defined $str; + my $rangestart; + if ($unidata[$i]) { $rangestart = $ {$unidata[$i]}{rangestart}; }; + + $str =~ s/./ + if (!defined $lookup{$&}) { print "L: '$&'\n"; }; + $lookup{$&}; + /egs; +# $str = join '', map { if ($_) { +# pack "B*", sprintf "3%-7s", $_; +# } } split /(.{1,7})/, $str; + $str =~ s/.{1,7}/ + sprintf "3%s%s",$&,substr($padding,0,7-length($&)); + /eg; + $str = pack("B*",$str); + $cp++; + if (defined $rangestart) { +# printf $file "I%XI%X", $i-$cp+1, $rangeend-$i; +# $cp=$rangeend; + printf $file "I%XI%X", $i-$cp+1, $i-$rangestart; + $cp=$i; + } else { + if ($i>$cp) { printf $file "H%X", $i-$cp; $cp=$i}; + } + print $file "G$str\n"; + } + } + + flushfiles(); +} + +sub dumphuffman($$$) { + my ($tree,$prefix,$lookup) = @_; +# print Dumper([$tree]); return; + if (ref $tree) { + dumphuffman($$tree[0],$prefix.'0',$lookup); + dumphuffman($$tree[1],$prefix.'1',$lookup); + } else { +# print "HUFFMAN: '$tree' => '$prefix'\n"; + $$lookup{$tree} = $prefix; + } +} + +sub isprivate($) { + my $cp = shift; + return 1 if ($cp>=0xe000 && $cp<=0xf8ff); + return 1 if ($cp>=0xf0000 && $cp<=0xffffd); + return 1 if ($cp>=0x100000 && $cp<=0x10fffd); + return 0; +} + +sub dumpnames_uncompressed() { + my $file = openfile("$targetdir/uninames.dat", + "%%% unicode name hash for ucs.sty, $autogen", + "Unicode character names"); + warn "Dumping uncompressed unicode data, ". + "this is no longer maintained and may give unpredicted results.\n"; + dump_ranges($file); + for (my $i=1; $i<=$#unidata; $i++) { + next unless defined $unidata[$i]; + my $name = $ {$unidata[$i]}{name}; + my $alias = $ {$unidata[$i]}{alias}; + my $comment = $ {$unidata[$i]}{comment}; + my $str = sprintf "Unicode character %d = 0x%04x:${messagebreak}%s", + $i, $i, $name; + $str .= "${messagebreak}$alias" if $alias; + $str .= "${messagebreak}$comment" if $comment; + print $file "\\info{$str}\%\n"; + } + flushfiles(); +} + +parseargs(); +print "PASS: initcharacters\n" if $verbose; +initcharacters(); +if ($dump_unidata) { + print "PASS: unlink unidata files\n" if $verbose; + unlinkfiles(' + ^uni-[0-9]+\.def$| + ^uninames.dat$| + ^uni-global\.def$ ',$targetdir); +} +if ($tables_to_dump) { + print "PASS: unlink tables\n" if $verbose; + unlinkfiles(' ^table-.*-.*-.*\.tex$ ',$tabledir); +} +if ($loadunidata) { + print "PASS: loadunidata($unidata)\n" if $verbose; + loadunidata($unidata); } +for my $configfile (@configfiles) { + print "PASS: loadconfig($configfile)\n" if $verbose; + loadconfig($configfile); } +print "PASS: generate\n" if $verbose; +generate(); +if ($dump_unidata) { + print "PASS: generate globals\n" if $verbose; + generate_globals(); } +if ($createcomments) { + print "PASS: makecomments\n" if $verbose; + makecomments(); } +if ($dump_unidata) { + print "PASS: dumpcharacters\n" if $verbose; + dumpcharacters(); +} +if ($tables_to_dump) { + print "PASS: dumping character tables to directory $tabledir/\n" + if $verbose; + dump_charactertables(); +} +if ($generate_uninames && $dump_unidata && $loadunidata) { + if ($compressnames) { + print "PASS: dumpnames (compressed)\n" if $verbose; + dumpnames_compressed(); + } else { + print "PASS: dumpnames (uncompressed)\n" if $verbose; + dumpnames_uncompressed(); + }} +print "PASS: closefiles\n" if $verbose; +closefiles(); + +### LocalVariables: +### mode: perl +### End: +### Local IspellDict: british + + +# LocalWords: uni def makeunidef pl de ucs sty AUTOOPTION num configfiles dir +# LocalWords: nocomments SYSNOPSIS targetdir db UnicodeData txt uninames dat +# LocalWords: UNIDATA org www http unicode diff --git a/Master/texmf-dist/doc/latex/ucs/ucs.ps.gz b/Master/texmf-dist/doc/latex/ucs/ucs.ps.gz Binary files differnew file mode 100644 index 00000000000..08336782eed --- /dev/null +++ b/Master/texmf-dist/doc/latex/ucs/ucs.ps.gz |