diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/hyperref/hyperref.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/hyperref/hyperref.dtx')
-rw-r--r-- | macros/latex/contrib/hyperref/hyperref.dtx | 27659 |
1 files changed, 27659 insertions, 0 deletions
diff --git a/macros/latex/contrib/hyperref/hyperref.dtx b/macros/latex/contrib/hyperref/hyperref.dtx new file mode 100644 index 0000000000..ec3f7c3e2e --- /dev/null +++ b/macros/latex/contrib/hyperref/hyperref.dtx @@ -0,0 +1,27659 @@ +% \iffalse +%% File: hyperref.dtx Copyright 1995-2001 Sebastian Rahtz, +%% with portions written by David Carlisle and Heiko Oberdiek, +%% 2001-2012 Heiko Oberdiek. +%% 2016-2018 Oberdiek Package Suport Group +%% https://github.com/ho-tex/hyperref/issues +%% +%% This file is part of the `Hyperref Bundle'. +%% ------------------------------------------- +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Heiko Oberdiek. +%% +%% The list of all files belonging to the `Hyperref Bundle' is +%% given in the file `manifest.txt'. +%% +%<package|nohyperref|driver|check>\NeedsTeXFormat{LaTeX2e}[1995/12/01] +%<package>\ProvidesPackage{hyperref} +%<nohyperref>\ProvidesPackage{nohyperref} +%<driver>\ProvidesFile{hyperref.drv} +%<check>\ProvidesFile{hycheck.tex} +%<hypertex>\ProvidesFile{hypertex.def} +%<pdftex>\ProvidesFile{hpdftex.def} +%<luatex>\ProvidesFile{hluatex.def} +%<pdfmark>\ProvidesFile{pdfmark.def} +%<vtexpdfmark>\ProvidesFile{hvtexmrk.def} +%<dvips>\ProvidesFile{hdvips.def} +%<dvipsone>\ProvidesFile{hdvipson.def} +%<textures>\ProvidesFile{htexture.def} +%<dviwindo>\ProvidesFile{hdviwind.def} +%<dvipdfm>\ProvidesFile{hdvipdfm.def} +%<xetex>\ProvidesFile{hxetex.def} +%<vtex>\ProvidesFile{hvtex.def} +%<vtexhtml>\ProvidesFile{hvtexhtml.def} +%<tex4ht>\ProvidesFile{htex4ht.def} +%<tex4htcfg>\ProvidesFile{htex4ht.cfg} +%<pd1enc>\ProvidesFile{pd1enc.def} +%<puenc>\ProvidesFile{puenc.def} +%<puvnenc>\ProvidesFile{puvnenc.def} +%<puarenc>\ProvidesFile{puarenc.def} +%<psdextra>\ProvidesFile{psdextra.def} +%<!none> [2019/06/12 v6.88h % +%<package> Hypertext links for LaTeX] +%<nohyperref> Dummy hyperref (SR)] +%<driver> Hyperref documentation driver file] +%<check> Hyperref test file] +%<hypertex> Hyperref driver for HyperTeX specials] +%<hypertex>\Hy@VersionCheck{hypertex.def} +%<pdftex> Hyperref driver for pdfTeX] +%<pdftex>\Hy@VersionCheck{hpdftex.def} +%<luatex> Hyperref driver for luaTeX] +%<luatex>\Hy@VersionCheck{hluatex.def} +%<pdfmark> Hyperref definitions for pdfmark specials] +%<pdfmark>\Hy@VersionCheck{pdfmark.def} +%<vtexpdfmark> Hyperref driver for VTeX in PDF/PS mode (pdfmark specials)] +%<vtexpdfmark>\Hy@VersionCheck{hvtexmrk.def} +%<dvips> Hyperref driver for dvips] +%<dvips>\Hy@VersionCheck{hdvips.def} +%<dvipsone> Hyperref driver for dvipsone] +%<dvipsone>\Hy@VersionCheck{hdvipson.def} +%<textures> Hyperref driver for Textures] +%<textures>\Hy@VersionCheck{htexture.def} +%<dviwindo> Hyperref driver for dviwindo] +%<dviwindo>\Hy@VersionCheck{hdviwind.def} +%<dvipdfm> Hyperref driver for dvipdfm] +%<dvipdfm>\Hy@VersionCheck{hdvipdfm.def} +%<xetex> Hyperref driver for XeTeX] +%<xetex>\Hy@VersionCheck{hxetex.def} +%<vtex> Hyperref driver for VTeX in PDF/PS mode] +%<vtex>\Hy@VersionCheck{hvtex.def} +%<vtexhtml> Hyperref driver for VTeX in HTML mode] +%<vtexhtml>\Hy@VersionCheck{hvtexhtm.def} +%<tex4ht> Hyperref driver for TeX4ht] +%<tex4ht>\Hy@VersionCheck{htex4ht.def} +%<tex4htcfg> Hyperref configuration file for TeX4ht] +%<pd1enc> Hyperref: PDFDocEncoding definition (HO)] +%<puenc> Hyperref: PDF Unicode definition (HO)] +%<puvnenc> Hyperref: Additions to puenc.def for VnTeX] +%<puarenc> Hyperref: Additions to puenc.def for Arabi] +%<psdextra> Hyperref: Additions to PDF string support] +%<*driver> +\documentclass{ltxdoc} +\usepackage{array} +\usepackage{ifluatex,ifxetex} +\ifnum 0\ifluatex 1\else\ifxetex 1\fi\fi=0 % + \usepackage[T1]{fontenc}% + \renewcommand*{\ttdefault}{lmvtt}% +\else + \usepackage{fontspec}% + \renewcommand*{\ttdefault}{lmvtt}% +\fi +\usepackage[% + colorlinks,% + hyperindex=false,% done by hypdoc + pdfusetitle,% + pdfpagelabels% +]{hyperref} +\usepackage[numbered]{hypdoc} +\usepackage{bmhydoc} +\pdfstringdefDisableCommands{% + \let\\\textbackslash +}% +\EnableCrossrefs +\CodelineIndex +\setlength{\hfuzz}{2pt} +\begin{document} + % + % title + % + \GetFileInfo{hyperref.sty}% + \title{Hypertext marks in \LaTeX}% + \author{Sebastian Rahtz (deceased)\\% + Heiko Oberdiek (maintainer)\\% + \texttt{https://github.com/ho-tex/hyperref/issues}}% + % \date{processed \today}% + \date{\filedate\space\fileversion}% + \maketitle + % + % overview + % + \makeatletter + \@ifundefined{HyperrefOverview}{}{% + \HyperrefOverview\relax + \newpage + }% + % + % table of contents + % + \section{\contentsname}% + \makeatletter + \@starttoc{toc}% + \newpage + % + % source code documentation + % + \let\Email\nolinkurl + \DocInput{hyperref.dtx}% + % + % index + % + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \MakeShortVerb{|} +% \StopEventually{} +% +% \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let} +% \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi} +% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup} +% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand} +% \DoNotIndex{\space,\@empty,\special} +% \DoNotIndex{\\,\0,\1,\2,\8} +% \makeatletter +% \let\SavedTheIndex\theindex +% \def\theindex{^^A +% \clearpage +% \addtolength{\textwidth}{\marginparwidth}^^A +% \addtolength{\textwidth}{\marginparsep}^^A +% \setlength{\linewidth}{\textwidth}^^A +% \setlength{\hsize}{\textwidth}^^A +% \setlength{\oddsidemargin}{\paperwidth}^^A +% \addtolength{\oddsidemargin}{-\textwidth}^^A +% \setlength{\oddsidemargin}{.5\oddsidemargin}^^A +% \addtolength{\oddsidemargin}{-1in}^^A +% \setlength{\evensidemargin}{\oddsidemargin}^^A +% \SavedTheIndex +% } +% \g@addto@macro\theindex{^^A +% \parfillskip=0pt plus 1fil +% } +% \makeatother +% +% \providecommand*{\eTeX}{\mbox{$\varepsilon$-\TeX}} +% +% \section{File hycheck.tex} +% +% Many commands of \LaTeX\ or other packages cannot be +% overloaded, but have to be redefined by hyperref directly. +% If these commands change in newer versions, these +% changes are not noticed by hyperref. +% With this test file this situation can be checked. +% It defines the command \cmd{\checkcommand} that +% is more powerful than \LaTeX's \cmd{\CheckCommand}, +% because it takes \cmd{\DeclareRobustCommand} and +% optional parameters better into account. +% +% \begin{macrocode} +%<*check> +\documentclass{article} +\makeatletter +% \end{macrocode} +% +% \begin{macro}{\checklatex} +% Optional argument: release date of \LaTeX. +% \begin{macrocode} +\newcommand*{\checklatex}[1][]{% + \typeout{}% + \typeout{* Format: `LaTeX2e' #1}% + \typeout{\space\space Loaded: `\fmtname' \fmtversion}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\checkpackage} +% The argument of \cmd{\checkpackage} is the package name +% without extension optionally followed by a release date. +% \begin{macrocode} +\newcommand*{\checkpackage}[1]{% + \def\HyC@package{#1}% + \let\HyC@date\@empty + \@ifnextchar[\HyC@getDate\HyC@checkPackage +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@getDate} +% The release date is scanned. +% \begin{macrocode} +\def\HyC@getDate[#1]{% + \def\HyC@date{#1}% + \HyC@checkPackage +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@checkPackage} +% \begin{macrocode} +\def\HyC@checkPackage{% + \typeout{}% + \begingroup + \edef\x{\endgroup + \noexpand\RequirePackage{\HyC@package}% + \ifx\HyC@date\@empty\relax\else[\HyC@date]\fi% + }% + \x + \typeout{}% + \typeout{% + * Package `\HyC@package'% + \ifx\HyC@date\@empty + \else + \space\HyC@date + \fi + }% + \@ifundefined{ver@\HyC@package.sty}{% + }{% + \typeout{% + \space\space Loaded: `\HyC@package' % + \csname ver@\HyC@package.sty\endcsname + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\checkcommand} +% The macro \cmd{\checkcommand} parses the next +% tokens as a \LaTeX\ definition and compares +% this definition with the current meaning of +% that command. +% \begin{macrocode} +\newcommand*{\checkcommand}[1]{% + \begingroup + \ifx\long#1\relax + \expandafter\HyC@checklong + \else + \def\HyC@defcmd{#1}% + \expandafter\let\expandafter\HyC@next + \csname HyC@\expandafter\@gobble\string#1\endcsname + \expandafter\HyC@checkcommand + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@checklong} +% The definition command \cmd{\def} or \cmd{\edef} +% is read. +% \begin{macrocode} +\def\HyC@checklong#1{% + \def\HyC@defcmd{\long#1}% + \expandafter\let\expandafter\HyC@next + \csname HyC@\expandafter\@gobble\string#1\endcsname + \HyC@checkcommand +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@checkcommand} +% The optional star of \LaTeX's definitions is parsed. +% \begin{macrocode} +\def\HyC@checkcommand{% + \ifx\HyC@next\relax + \PackageError{hycheck}{% + Unknown command `\expandafter\strip@prefix\meaning\HyC@cmd'% + }\@ehd + \expandafter\endinput + \fi + \@ifstar{% + \def\HyC@star{*}% + \HyC@check + }{% + \let\HyC@star\@empty + \HyC@check + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@check} +% The macro \cmd{\HyC@check} reads the +% definition command. +% \begin{macrocode} +\def\HyC@check#1{% + \def\HyC@cmd{#1}% + \let\HyC@org@cmd#1% + \let#1\relax + \let\HyC@param\@empty + \HyC@Toks{}% + \let\HyC@org@optcmd\HyC@noValue + \let\HyC@org@robustcmd\HyC@noValue + \let\HyC@org@robustoptcmd\HyC@noValue + \HyC@next +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@noValue} +% \begin{macrocode} +\def\HyC@noValue{NoValue} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@newcommand} +% The code for \cmd{\newcommand}. +% \begin{macrocode} +\def\HyC@newcommand{% + \let\HyC@@cmd\HyC@cmd + \@ifnextchar[\HyC@nc@opt\HyC@nc@noopt +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@Toks} +% A register for storing the default value of an +% optional argument. +% \begin{macrocode} +\newtoks\HyC@Toks +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@nc@noopt} +% This macro \cmd{\HyC@nc@noopt} is called, if the +% parser has reached the definition text. +% \begin{macrocode} +\long\def\HyC@nc@noopt#1{% + \edef\x{% + \expandafter\noexpand\HyC@defcmd + \HyC@star + \expandafter\noexpand\HyC@cmd + \HyC@param\the\HyC@Toks + }% + \x{#1}% + \HyC@doCheck +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@nc@opt} +% This macro scans the first optional argument +% of a \LaTeX\ definition (number of arguments). +% \begin{macrocode} +\def\HyC@nc@opt[#1]{% + \def\HyC@param{[{#1}]}% + \@ifnextchar[\HyC@nc@default\HyC@nc@noopt +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@nc@default} +% Macro \cmd{\HyC@nc@default} scans the +% default for an optional argument. +% \begin{macrocode} +\def\HyC@nc@default[#1]{% + \HyC@Toks={[{#1}]}% + \edef\HyC@optcmd{% + \expandafter\noexpand + \csname\expandafter\string\HyC@@cmd\endcsname + }% + \expandafter\let\expandafter\HyC@org@optcmd\HyC@optcmd + \HyC@nc@noopt +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyC@DeclareRobustCommand} +% \cmd{\DeclareRobustCommand}|{\cmd}| makes the command +% \cmd{\cmd} robust, that then calls |\cmd|\verb*| | +% with an space at the end of the command name, defined by +% \cmd{\newcommand}. Therefore the further parsing +% is done by \cmd{\HyC@nc@opt} or \cmd{\Hy@nc@noopt} +% of the \cmd{\HyC@newcommand} chain. +% \begin{macrocode} +\def\HyC@DeclareRobustCommand{% + \edef\HyC@robustcmd{% + \expandafter\noexpand + \csname\expandafter\expandafter\expandafter\@gobble + \expandafter\string\HyC@cmd\space\endcsname + }% + \expandafter\let\expandafter\HyC@org@robustcmd\HyC@robustcmd + \expandafter\let\HyC@robustcmd\relax + \let\HyC@@cmd\HyC@robustcmd + \@ifnextchar[\HyC@nc@opt\HyC@nc@noopt +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyC@def} +% \begin{macro}{\HyC@edef} +% The parameter text of \cmd{\def} or \cmd{\edef} is +% stored in the token register \cmd{\HyC@Toks}. +% \begin{macrocode} +\def\HyC@def#1#{% + \HyC@Toks={#1}% + \HyC@nc@noopt +} +\let\HyC@edef\HyC@def +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\HyC@doCheck} +% This command performs the checks and prints the result. +% \begin{macrocode} +\def\HyC@doCheck{% + \typeout{* Checking `\HyC@string\HyC@cmd':}% + \HyC@checkItem{cmd}% + \HyC@checkItem{robustcmd}% + \HyC@checkItem{optcmd}% + \HyC@checkItem{robustoptcmd}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@checkItem} +% A single check. +% \begin{macrocode} +\def\HyC@checkItem#1{% + \expandafter\ifx\csname HyC@org@#1\endcsname\HyC@noValue + \else + \expandafter\expandafter\expandafter\ifx + \csname HyC@#1\expandafter\endcsname + \csname HyC@org@#1\endcsname + \expandafter\HyC@checkOk\csname HyC@#1\endcsname + \else + \expandafter\HyC@checkFailed + \csname HyC@#1\expandafter\endcsname + \csname HyC@org@#1\endcsname + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@string} +% \begin{macro}{\HyC@meaning} +% Some shorthands. +% \begin{macrocode} +\def\HyC@string#1{\expandafter\string#1} +\def\HyC@meaning#1{\expandafter\meaning#1} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\HyC@checkOk} +% The result, if the check succeeds. +% \begin{macrocode} +\def\HyC@checkOk#1{% + \typeout{\space\space`\HyC@string#1' ok.}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyC@checkFailed} +% The result, if the check fails. +% \begin{macrocode} +\def\HyC@checkFailed#1#2{% + \typeout{\space\space`\HyC@string#1' failed.}% + \typeout{\space\space* original: \meaning#2}% + \typeout{\space\space* expected: \HyC@meaning#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +% ************************************************** +%</check> +% \end{macrocode} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% \section{Package options and setup}\label{options} +% +% +% \subsection{Save catcodes} +% There are many packages that change the standard catcodes. +% +% First we save the original meaning of |`| and |=| +% in the token register |\toks@|, because we need the two +% characters in the macros \cmd{\Hy@SetCatcodes} and +% \cmd{\Hy@RestoreCatcodes}. +% \begin{macrocode} +\begingroup + \@makeother\`% + \@makeother\=% + \edef\x{% + \edef\noexpand\x{% + \endgroup + \noexpand\toks@{% + \catcode 96=\noexpand\the\catcode`\noexpand\`\relax + \catcode 61=\noexpand\the\catcode`\noexpand\=\relax + }% + }% + \noexpand\x + }% +\x +\@makeother\` +\@makeother\= +% \end{macrocode} +% \begin{macro}{\Hy@SetCatcodes} +% \begin{macrocode} +\def\Hy@SetCatcodes{% + \@makeother\`% + \@makeother\=% + \catcode`\$=3 % + \catcode`\&=4 % + \catcode`\^=7 % + \catcode`\_=8 % + \@makeother\|% + \@makeother\:% + \@makeother\(% + \@makeother\)% + \@makeother\[% + \@makeother\]% + \@makeother\/% + \@makeother\!% + \@makeother\<% + \@makeother\>% + \@makeother\.% + \@makeother\;% + \@makeother\+% + \@makeother\-% + \@makeother\"% + \@makeother\'% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@RestoreCatcodes} +% \begin{macrocode} +\begingroup + \def\x#1{\catcode`\noexpand#1=\the\catcode`#1\relax}% + \xdef\Hy@RestoreCatcodes{% + \the\toks@ + \x\$% + \x\&% + \x\^% + \x\_% + \x\|% + \x\:% + \x\(% + \x\)% + \x\[% + \x\]% + \x\/% + \x\!% + \x\<% + \x\>% + \x\.% + \x\;% + \x\+% + \x\-% + \x\"% + \x\'% + }% +\endgroup +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\Hy@SetCatcodes +% \end{macrocode} +% +% It needs the December 95 release of \LaTeX, because it uses +% |\protected@write|, and it defines commands in options; and the page +% setup internal code changed at that point. It'll probably break +% with the later releases! +% +% Use package |hobsub-hyperref| for faster package loading. +% \begin{macrocode} +\IfFileExists{hobsub-hyperref.sty}{% + \RequirePackage{hobsub-hyperref}[2011/01/30]% +}{} +% \end{macrocode} +% \begin{macrocode} +\RequirePackage{ltxcmds}[2010/11/12] +\RequirePackage{ifpdf}[2006/02/20] +\RequirePackage{pdftexcmds}[2009/04/10] +\@ifpackagelater{pdftexcmds}{2010/11/04}{}{% + \ltx@IfUndefined{pdfdraftmode}{% + \let\pdf@ifdraftmode\ltx@secondoftwo + }{% + \ifpdf + \def\pdf@ifdraftmode{% + \ifnum\pdfdraftmode=\ltx@one + \expandafter\ltx@firstoftwo + \else + \expandafter\ltx@secondoftwo + \fi + }% + \else + \let\pdf@ifdraftmode\ltx@secondoftwo + \fi + }% +} +% \end{macrocode} +% \begin{macrocode} +\RequirePackage{infwarerr}[2010/04/08] +\RequirePackage{keyval}[1997/11/10] +\RequirePackage{kvsetkeys}[2007/09/29] +\RequirePackage{kvdefinekeys}[2011/04/07] +\RequirePackage{pdfescape}[2007/11/11] +\RequirePackage{ifvtex} +\RequirePackage{ifxetex}[2006/08/21] +\RequirePackage{hycolor} +\RequirePackage{letltxmacro}[2008/06/13] +\RequirePackage{auxhook}[2009/12/14] +\def\Hy@Error{\@PackageError{hyperref}} +\def\Hy@Warning{\@PackageWarning{hyperref}} +\def\Hy@WarningNoLine{\@PackageWarningNoLine{hyperref}} +\def\Hy@Info{\@PackageInfo{hyperref}} +\def\Hy@InfoNoLine{\@PackageInfoNoLine{hyperref}} +\def\Hy@Message#1{% + \GenericWarning{% + (hyperref)\@spaces\@spaces\@spaces\@spaces + }{% + Package hyperref Message: #1\ltx@gobble + }% +} +% \end{macrocode} +% +% \subsection{Version check} +% +% \begin{macro}{\Hy@VersionChecked} +% \begin{macrocode} +\chardef\Hy@VersionChecked=0 % +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@VersionCheck} +% \begin{macrocode} +\def\Hy@VersionCheck#1{% + \begingroup + \ltx@IfUndefined{ver@hyperref.sty}{% + \Hy@Error{% + This should not happen!\MessageBreak + Missing hyperref version% + }\@ehd + }{% + \ltx@IfUndefined{ver@#1}{% + \Hy@Error{% + This should not happen!\MessageBreak + Missing version of `#1'% + }\@ehd + }{% + \def\x##1##2##3{% + \expandafter\expandafter\expandafter\Hy@@VersionCheck + \expandafter\expandafter\expandafter##2% + \csname ver@##3\endcsname##1##1\@nil + }% + \x{ }\y{hyperref.sty}% + \x{ }\z{#1}% + \ifx\y\z + \else + \edef\a{#1}% + \edef\b{\HyOpt@CustomDriver.def}% + \ifx\a\b + \Hy@WarningNoLine{% + Version mismatch (custom driver)!\MessageBreak + * \y: hyperref.sty\MessageBreak + * \z: \a + }% + \else + \Hy@Error{% + Version mismatch!\MessageBreak + * \y: hyperref.sty\MessageBreak + * \z: \a + }\@ehd + \fi + \fi + }% + }% + \endgroup + \chardef\Hy@VersionChecked=1 % +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@@VersionCheck} +% \begin{macrocode} +\def\Hy@@VersionCheck #1#2 #3 #4\@nil{% + \def#1{#2 #3}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Checks with regular expressions} +% +% \begin{macrocode} +\ltx@IfUndefined{pdfmatch}{% + \def\Hy@Match#1#2#3#4#5{}% +}{% + \def\Hy@Match#1#2#3{% + \begingroup + \edef\^{\ltx@backslashchar\string^}% + \edef\.{\ltx@backslashchar.}% + \edef\[{\ltx@backslashchar[}% ]] + \edef\${\ltx@backslashchar$}% + \edef\({\ltx@backslashchar(}% + \edef\){\ltx@backslashchar)}% + \edef\|{\ltx@backslashchar|}% + \edef\*{\ltx@backslashchar*}% + \edef\+{\ltx@backslashchar+}% + \edef\?{\ltx@backslashchar?}% + \edef\{{\ltx@backslashchar\ltx@leftbracechar}% + \edef\}{\ltx@rightbracechar}% + \edef\\{\ltx@backslashchar\ltx@backslashchar}% + \let\ \ltx@space + \ifcase\pdfmatch#2{#3}{#1} % + \endgroup + \expandafter\ltx@secondoftwo + \or + \endgroup + \expandafter\ltx@firstoftwo + \else + \Hy@Warning{% + Internal error: Wrong pattern!\MessageBreak + --> #3 <--\MessageBreak + Pattern check ignored% + }% + \endgroup + \expandafter\ltx@firstoftwo + \fi + }% + \ltx@ifpackagelater{ltxcmds}{2010/09/11}{}{% + \begingroup + \lccode`0=`\{\relax + \lowercase{\endgroup + \def\ltx@leftbracechar{0}% + }% + \begingroup + \lccode`0=`\}\relax + \lowercase{\endgroup + \def\ltx@rightbracechar{0}% + }% + }% +} +% \end{macrocode} +% +% \subsection{Compatibility with format dumps} +% +% \begin{macro}{\AfterBeginDocument} +% For use with pre-compiled formats, created using the +% |ldump| package, there needs to be 2 hooks for adding +% material delayed until |\begin{document}|. +% These are called \cmd{\AfterBeginDocument} and +% \cmd{\AtBeginDocument}. +% If |ldump| is not loaded, then a single hook suffices +% for normal \LaTeX{} processing. +% +% The default definition of |\AfterBeginDocument| cannot +% be done by |\let| because of problems with |xypic|. +% \begin{macrocode} +\@ifundefined{AfterBeginDocument}{% + \def\AfterBeginDocument{\AtBeginDocument}% +}{}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@AtBeginDocument} +% For the case that package `hyperref' is loaded +% using \cs{AtBeginDocument}, we have to wrap the calls +% of \cs{AtBeginDocument}/\cs{AfterBeginDocument} in +% \cs{AtEndOfPackage}. However, packages must be +% loaded in \cs{AtEndOfPackage} \emph{before} package +% `kvoptions' has to perform its option cleanup. +% Therefore we use a hook. +% \begin{macrocode} +\def\Hy@AtBeginDocument{% + \ltx@LocalAppendToMacro\Hy@AtBeginDocumentHook +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@AtEndOfPackage} +% \begin{macrocode} +\def\Hy@AtEndOfPackage{% + \ltx@LocalAppendToMacro\Hy@AtEndOfPackageHook +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@AtBeginDocumentHook} +% \begin{macrocode} +\let\Hy@AtBeginDocumentHook\ltx@empty +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@AtEndOfPackageHook} +% \begin{macrocode} +\let\Hy@AtEndOfPackageHook\ltx@empty +% \end{macrocode} +% \end{macro} +% Install the hook, before package `kvoptions' is loaded. +% \begin{macrocode} +\AtEndOfPackage{% + \Hy@AtEndOfPackageHook + \let\Hy@AtEndOfPackageHook\@undefined + \AfterBeginDocument{% + \Hy@AtBeginDocumentHook{}% + \let\Hy@AtBeginDocumentHook\@undefined + }% +} +% \end{macrocode} +% +% Package kvoptions is used for processing options that are +% given as key value pairs. The package provides +% |\ProcessKeyvalOptions|, formerly known as +% |\ProcessOptionsWithKV|. +% \begin{macrocode} +\RequirePackage{kvoptions}[2009/07/21] +% \end{macrocode} +% +% \subsection{Switches} +% \begin{macrocode} +\newif\ifHy@stoppedearly +\newif\ifHy@typexml +\newif\ifHy@activeanchor +\newif\ifHy@backref +\newif\ifHy@bookmarks +\newif\ifHy@bookmarksnumbered +\newif\ifHy@bookmarksopen +\newif\ifHy@breaklinks +\newif\ifHy@pdfcenterwindow +\newif\ifHy@CJKbookmarks +\newif\ifHy@colorlinks +\newif\ifHy@destlabel +\newif\ifHy@draft +\let\Hy@finaltrue\Hy@draftfalse +\let\Hy@finalfalse\Hy@drafttrue +\newif\ifHy@pdfescapeform +\newif\ifHy@hyperfigures +\newif\ifHy@pdffitwindow +\newif\ifHy@frenchlinks +\newif\ifHy@hyperfootnotes +\newif\ifHy@hyperindex +\newif\ifHy@hypertexnames +\newif\ifHy@implicit +\newif\ifHy@linktocpage +\newif\ifHy@localanchorname +\newif\ifHy@pdfmenubar +\newif\ifHy@naturalnames +\newif\ifHy@nesting +\newif\ifHy@pdfnewwindowset +\newif\ifHy@pdfnewwindow +\newif\ifHy@ocgcolorlinks +\newif\ifHy@pageanchor +\newif\ifHy@pdfpagelabels +\newif\ifHy@pdfpagehidden +\newif\ifHy@pdfstring +\newif\ifHy@plainpages +\newif\ifHy@psize +\newif\ifHy@raiselinks +\newif\ifHy@seminarslides +\newif\ifHy@setpagesize +\newif\ifHy@texht +\newif\ifHy@psdextra +\newif\ifHy@pdftoolbar +\newif\ifHy@unicode +\newif\ifHy@pdfusetitle +\newif\ifHy@verbose +\let\Hy@debugtrue\Hy@verbosetrue +\let\Hy@debugfalse\Hy@verbosefalse +\newif\ifHy@pdfwindowui +\newif\ifHy@pdfdisplaydoctitle +\newif\ifHy@pdfa +% \end{macrocode} +% Defaults for the switches are now set. +% \begin{macrocode} +\Hy@backreffalse +\Hy@bookmarksnumberedfalse +\Hy@bookmarksopenfalse +\Hy@bookmarkstrue +\Hy@breaklinksfalse +\Hy@pdfcenterwindowfalse +\Hy@CJKbookmarksfalse +\Hy@destlabelfalse +\Hy@pdfescapeformfalse +\Hy@hyperfiguresfalse +\Hy@pdffitwindowfalse +\Hy@hyperfootnotestrue +\Hy@hyperindextrue +\Hy@hypertexnamestrue +\Hy@implicittrue +\Hy@linktocpagefalse +\Hy@localanchornamefalse +\Hy@pdfmenubartrue +\Hy@naturalnamesfalse +\Hy@nestingfalse +\Hy@pdfnewwindowsetfalse +\Hy@pdfnewwindowfalse +\Hy@pageanchortrue +\Hy@pdfpagelabelstrue +\Hy@pdfpagehiddenfalse +\Hy@pdfstringfalse +\Hy@plainpagesfalse +\Hy@raiselinksfalse +\Hy@setpagesizetrue +\Hy@texhtfalse +\Hy@psdextrafalse +\Hy@pdftoolbartrue +\Hy@typexmlfalse +\Hy@unicodefalse +\Hy@pdfusetitlefalse +\Hy@verbosefalse +\Hy@pdfwindowuitrue +\Hy@pdfdisplaydoctitlefalse +\Hy@pdfafalse +% \end{macrocode} +% +% \section{Common help macros} +% +% \begin{macro}{\Hy@StepCount} +% \begin{macrocode} +\def\Hy@StepCount#1{\advance#1 by 1 }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@GlobalStepCount} +% \begin{macrocode} +\def\Hy@GlobalStepCount#1{\global\advance#1 by 1 }% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\newdimen\@linkdim +\let\Hy@driver\ltx@empty +\let\MaybeStopEarly\relax +\newcount\Hy@linkcounter +\newcount\Hy@pagecounter +\Hy@linkcounter0 +\Hy@pagecounter0 +% \end{macrocode} +% +% \subsection{Macros for recursions} +% +% \begin{macrocode} +\let\Hy@ReturnEnd\@empty +\long\def\Hy@ReturnAfterFiFiEnd#1\fi#2\Hy@ReturnEnd{\fi\fi#1} +\long\def\Hy@ReturnAfterElseFiFiEnd#1\else#2\Hy@ReturnEnd{\fi\fi#1} +% \end{macrocode} +% +% \subsection{Babel's protection of shorthand characters} +% +% \begin{macro}{\Hy@safe@activestrue} +% \begin{macro}{\Hy@safe@activesfalse} +% Babel's switch setting commands cannot used directly, +% because they can be undefined if babel is not loaded. +% \begin{macrocode} +\def\Hy@safe@activestrue{\csname @safe@activestrue\endcsname} +\def\Hy@safe@activesfalse{\csname @safe@activesfalse\endcsname} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Coordinate transformations} +% +% At some places numbers in pdf units are +% expected (eg: FitBH, ...). The following macros +% perform the transformation from TeX units (pt) +% to PDF units (bp). +% +% \begin{macro}{\hypercalcbp} +% The user macro \cmd{\hypercalcbp} can be used, for example, +% inside option values: +%\begin{verbatim} +%pdfstartview={FitBH \hypercalcbp{\paperheight-\topmargin-1in}} +%\end{verbatim} +% \begin{itemize} +% \item +% It cannot be used inside \cmd{\usepackage}, because +% LaTeX expands the options before package hyperref +% is loaded and \cmd{\hypercalcbp} is defined. +% \item +% With e-TeX extensions an expandable implementation +% is very easy; \cmd{\hypercalcbp} can be used +% everywhere and is expanded at use. +% \item +% Without e-TeX's features \cmd{\hypercalcbp} cannot be +% implemented expandable (practically) and have to +% be supported by \cmd{\hypercalcbpdef}. +% Limitations: +% \begin{itemize} +% \item Works only in options that use \cmd{\hypercalcbpdef} +% (currently only |pdfstartview|). +% \item For calculations package |calc| has to be loaded. +% \item The expansion of the argument is done at definition time. +% \end{itemize} +% \end{itemize} +% Example (\TeX): +%\begin{verbatim} +%\usepackage{calc} +%\usepackage[...]{hyperref} +%\hypersetup{ +% pdfstartview={FitBH \hypercalcbp{\paperheight-\topmargin-1in +% -\headheight-\headsep} +%} +%\end{verbatim} +% \begin{macro}{\hypercalcbp} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname dimexpr\endcsname\relax + \def\hypercalcbpdef#1#2{% + \begingroup + \toks@{}% + \HyCal@scan#2\hypercalcbp\@nil + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{\the\toks@}% + }% + \def\HyCal@scan#1\hypercalcbp#2\@nil{% + \toks@\expandafter{\the\toks@ #1}% + \ifx\\#2\\% + \else + \ltx@ReturnAfterFi{% + \HyCal@do#2\@nil + }% + \fi + }% + \def\HyCal@do#1#2\@nil{% + \@ifpackageloaded{calc}{}{% + \Hy@Warning{% + For calculations \string\hypercalcbp\space needs\MessageBreak + package calc or e-TeX% + }% + }% + \setlength{\dimen@}{#1}% + \setlength{\dimen@}{0.99626401\dimen@}% + \edef\x{% + \toks@{% + \the\toks@ + \strip@pt\dimen@ + }% + }\x + \HyCal@scan#2\@nil + }% +\else + \def\hypercalcbp#1{% + \strip@pt\dimexpr 0.99626401\dimexpr(#1)\relax\relax + }% + \def\hypercalcbpdef{\def}% +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Dealing with PDF strings}\label{sec:pdfstring} +% The PDF string stuff done by Heiko Oberdiek. +% +% Naming convention: All internal commands that are only +% needed by \cs{pdfstringdef} are prefixed with \cs{HyPsd@}. +% +% \subsection{Description of PDF strings} +% The PDF specification defines several places to hold +% text strings (bookmark names, document information, +% text annotations, etc.). +% The PDF strings have following properties: +% \begin{itemize} +% \item They are surrounded by parentheses. The hexadecimal form +% is not supported. +% \item Like PostScript language strings they use the same +% escaping mechanism:\\ +% \begin{tabular}{ll} +% |\\|& the backslash itself\\ +% \cs{)}, \cs{(}& unbalanced parentheses\\ +% \cs{n}, \cs{r}, \cs{t}, \cs{b}, \cs{f}& special white space +% escape sequences\\ +% |\|\textit{|ddd|}& octal character code \textit{|ddd|} +% \end{tabular} +% \item Strings are stored either in PDFDocEncoding, which is a superset of +% ISOLatin1 and is compatible with Unicode with character codes +% below 256, or in Unicode. +% \end{itemize} +% +% \subsection{Definition of +% \texorpdfstring{\cs{pdfstringdef}}{\\pdfstringdef}} +% The central macro for dealing with PDF strings is \cs{pdfstringdef}. +% It defines a command |#1| to be the result of the conversion +% from the string in |#2| to a legal PDFDocEncoded string. +% Currently the definition is global, but this can be changed in +% the future. +% +% Important: In \TeX's view PDF strings are written to a file and +% are expanded only in its mouth. Stomach commands that cannot +% be expanded further aren't executed, they are written verbatim. +% But the PDF reader that reads such a string isn't a \TeX{} +% interpreter! +% +% The macro \cs{pdfstringdef} consists of three main parts: +% \begin{enumerate} +% \item Preprocessing. Here the expansion is prepared. The encoding +% is set and many commands are redefined, so that they work +% appropriate. +% \item Expansion. The \TeX{} string is expanded the first time +% to get a PDF string. +% \item Postprocessing. The result of the expansion is checked and +% converted to the final form. +% \end{enumerate} +% +% \begin{macro}{\pdfstringdef} +% \cs{pdfstringdef} works on the tokens in |#2| and converts them to +% a PDF string as far as possible: +% \begin{itemize} +% \item The result should obey the rules of the PDF specification +% for strings. +% \item The string can safely processed by \TeX, because the +% tokens have only catcodes 10 until 12. +% \end{itemize} +% The result is stored in the command token given in |#1|. +% \begin{macrocode} +\def\pdfstringdef#1#2{% +% \end{macrocode} +% Many redefinitions are needed, so all the work is done in a group. +% \begin{macrocode} + \begingroup +% \end{macrocode} +% +% \subsubsection{Preprocessing} +% \paragraph{Octal escape sequences.} +% To avoid problems with eight bit or non printable characters, the octal +% escape notation is supported. So most glyphs in the encoding definitions +% for PD1 and PU produce these octal escape sequences. +% All three octal digits have to be used: +% \begin{itemize} +% \item Wrong results are avoided, if digits follow that are not part of the +% octal sequence. +% \item Macros rely on the fact that the octal sequences always consist of +% three digits (vtex driver, Unicode support). +% \end{itemize} +% The escape sequences start with a backslash. By \cs{string} it will be +% printed. Therefore it is ensured that the \TeX{} escape character indeed +% prints as a normal backslash. +% Eventually this line can be removed, because this is standard +% \LaTeX{} behaviour. +% \begin{macrocode} + \escapechar`\\% +% \end{macrocode} +% From the view of \TeX{} a octal sequence consists of the command tokens +% \cs{0} until \cs{3} and two digits. +% For saving tokens \cs{0}, \cs{1}, \cs{2}, and \cs{3} are directly +% used without a preceding \cs{string} in the glyph definitions. +% This is done here locally +% by defining the \cs{0} until \cs{3} commands. So the user +% can use octal escape sequences directly, the disadvantage is +% that a previous definition of this short commands does not apply. +% \begin{macrocode} + \edef\0{\string\0}% + \edef\1{\string\1}% + \edef\2{\string\2}% + \edef\3{\string\3}% +% \end{macrocode} +% \paragraph{Setting font encoding.} +% The unicode encoding +% uses \cs{8} and \cs{9} as marker for the higher byte. +% \cs{8} is an abbreviation for the higher bytes 0 until 7 +% that can be expressed by one digit. \cs{8} will be +% converted to \cs{00}. However \cs{9} only marks the next +% three digits as higher byte and will be removed later. +% +% The encoding is set by \cs{enc@update} for optimizing reasons. +% \begin{macrocode} + \ifHy@unicode + \edef\8{\string\8}% + \edef\9{\string\9}% + \fontencoding{PU}% + \HyPsd@UTFviii + \def\ifpdfstringunicode##1##2{##1}% + \else + \fontencoding{PD1}% + \def\ifpdfstringunicode##1##2{##2}% + \fi + \let\utf@viii@undeferr\HyPsd@utf@viii@undeferr + \enc@update +% \end{macrocode} +% +% \paragraph{Internal encoding commands.} +% \cs{pdfstringdef} interpretes text strings which are not allowed +% to contain mathematical stuff. The text glyph commands will produce +% a warning, if called in math mode. But this warning disturbs while +% expanding. Therefore we check for math mode here, before +% \cs{@inmathwarn} will be disabled (see below). +% \begin{macrocode} + \@inmathwarn\pdfstringdef +% \end{macrocode} +% If a glyph is used, that isn't in the PD1/PU encoding there will +% be an infinite error loop, because the NFSS encoding stuff +% have to be expanded unprotected (\cs{edef}), so that the +% assigments of \cs{@changed@cmd} don't take place. +% To patch this behaviour I only found \cs{@inmathwarn} +% as a usable hook. While an \cs{edef} a warning message by +% \cs{@inmathwarn} or \cs{TextSymbolUnavailable} cannot be give out, +% so \cs{@inmathwarn} should be disabled. And with the help of it +% the assignments in \cs{@changed@cmd} can easily be caught +% (see below). +% \begin{macrocode} + \let\@inmathwarn\HyPsd@inmathwarn +% \end{macrocode} +% +% Unknown composite characters are built with \cs{add@accent}, +% so it is redefined to provide a warning. +% \begin{macrocode} + \let\add@accent\HyPsd@add@accent +% \end{macrocode} +% +% \paragraph{Commands that don't use NFSS directly.} +% There are several commands that prints characters in the +% printable ASCII area that don't obey the NFSS, so they have +% to be redefined here. +% UF 29.09.2017: added a mapping for \cs{noboundary}, see issue |#37| +% \url{https://github.com/ho-tex/hyperref/issues/37} +% No test for PU, if some definition for PD1 is added it will work too. +% \begin{macrocode} + \let\{\textbraceleft + \let\}\textbraceright + \let\\\textbackslash + \let\#\textnumbersign + \let\$\textdollar + \let\%\textpercent + \let\&\textampersand +% \let\~\textasciitilde + \let\_\textunderscore + \let\P\textparagraph + \let\ldots\textellipsis + \let\dots\textellipsis + \ltx@IfUndefined{textEncodingNoboundary}% + {}{\let\noboundary\textEncodingNoboundary}% +% \end{macrocode} +% +% \paragraph{Newline} +% \cmd{\newline} or \cmd{\\} do not work in bookmarks, in text +% annotations they should expand to \cmd{\r}. In pdf strings +% \cmd{\\} stands for a backslash. Therefore the commands +% are disabled now. The user can redefine them for a result +% what he want: +% \begin{description} +% \item[backslash:] +% |\pdfstringdefDisableCommands{\let\\\textbackslash}| +% \item[new line:] +% |\pdfstringdefDisableCommands{\let\\\textCR}| +% \item[disabled:] +% |\pdfstringdefDisableCommands{\let\\\empty}| +% \end{description} +% At any case, however, the optional argument or the star +% cannot be scanned in a 100\% sure manner. +% \begin{macrocode} + \def\\{\pdfstringdefWarn\\}% + \def\newline{\pdfstringdefWarn\newline}% +% \end{macrocode} +% +% \paragraph{Logos.} +% Because the box shifting +% used in the \TeX{} logo does not work while writing to a file, +% the standard \TeX{} logos are redefined. +% \begin{macrocode} + \def\TeX{TeX}% + \def\LaTeX{La\TeX}% + \def\LaTeXe{% + \LaTeX2% + \ifHy@unicode\textepsilon\else e\fi + }% + \def\eTeX{% + \ifHy@unicode\textepsilon\else e\fi + -\TeX% + }% + \def\SliTeX{Sli\TeX}% + \def\MF{Metafont}% + \def\MP{Metapost}% +% \end{macrocode} +% +% \paragraph{Standard font commands.} +% Because font changes do not work, the standard font +% switching commands are disabled. +% \begin{macrocode} + \let\fontencoding\@gobble + \let\fontfamily\@gobble + \let\fontseries\@gobble + \let\fontshape\@gobble + \let\fontsize\@gobbletwo + \let\selectfont\@empty + \let\usefont\@gobblefour + \let\emph\@firstofone + \let\textnormal\@firstofone + \let\textrm\@firstofone + \let\textsf\@firstofone + \let\texttt\@firstofone + \let\textbf\@firstofone + \let\textmd\@firstofone + \let\textit\@firstofone + \let\textsc\@firstofone + \let\textsl\@firstofone + \let\textup\@firstofone + \let\normalfont\@empty + \let\rmfamily\@empty + \let\sffamily\@empty + \let\ttfamily\@empty + \let\bfseries\@empty + \let\mdseries\@empty + \let\itshape\@empty + \let\scshape\@empty + \let\slshape\@empty + \let\upshape\@empty + \let\em\@empty + \let\rm\@empty + \let\Huge\@empty + \let\LARGE\@empty + \let\Large\@empty + \let\footnotesize\@empty + \let\huge\@empty + \let\large\@empty + \let\normalsize\@empty + \let\scriptsize\@empty + \let\small\@empty + \let\tiny\@empty + \let\mathversion\@gobble + \let\phantom\@gobble + \let\vphantom\@gobble + \let\hphantom\@gobble +% \end{macrocode} +% +% \paragraph{Package pifont.} +% \begin{macrocode} + \let\ding\HyPsd@ding + \let\Cube\HyPsd@DieFace +%* \HyPsd@DieFace -> \epsdice (epsdice) +%* \HyPsd@DieFace -> \fcdice (hhcount) +% \end{macrocode} +% +% \paragraph{Environments.} +% \begin{macrocode} + \def\begin#1{\csname#1\endcsname}% + \def\end#1{\csname end#1\endcsname}% +% \end{macrocode} +% +% \paragraph{Package color.} +% \begin{macrocode} + \def\textcolor##1##{\@secondoftwo}% +% \end{macrocode} +% +% \paragraph{Upper- and lowercase.} +% \begin{macrocode} + \def\MakeUppercase{\MakeUppercaseUnsupportedInPdfStrings}% + \def\MakeLowercase{\MakeLowercaseUnsupportedInPdfStrings}% +% \end{macrocode} +% +% \paragraph{Support of math commands without prefix \texttt{text}.} +% This is controlled by option ``psdextra'' and only +% activated with Unicode PDF strings. +% \begin{macrocode} + \ifHy@psdextra + \ifHy@unicode + \csname psdmapshortnames\endcsname + \csname psdaliasnames\endcsname + \fi + \fi +% \end{macrocode} +% +% \paragraph{Package babel.} +% Whereever ``naturalnames'' is used, disable \cs{textlatin} +% (from Babel 3.6k). Thanks to Felix Neubauer +% (Email: \Email{Felix.Neubauer@gmx.net}). +% \begin{macrocode} + \let\foreignlanguage\@secondoftwo + \let\textlatin\@firstofone + \ltx@IfUndefined{language@group}{}{% + \let\bbl@info\@gobble + \csname HyPsd@babel@\language@group\endcsname + }% + \HyPsd@GreekPatch + \HyPsd@SpanishPatch + \HyPsd@RussianPatch +% \end{macrocode} +% \begin{macrocode} + \HyPsd@BabelPatch +% \end{macrocode} +% +% \begin{macrocode} + \let\@safe@activestrue\relax + \let\@safe@activesfalse\relax +% \end{macrocode} +% +% Disable \cs{cyr}, used in russianb.ldf. +% \begin{macrocode} + \let\cyr\relax +% \end{macrocode} +% +% Redefine \cs{es@roman}, used in spanish.ldf. +% \begin{macrocode} + \let\es@roman\@Roman +% \end{macrocode} +% +% \paragraph{Package german.} +% \begin{macrocode} + \let\glqq\textglqq + \let\grqq\textgrqq + \let\glq\textglq + \let\grq\textgrq + \let\flqq\textflqq + \let\frqq\textfrqq + \let\flq\textflq + \let\frq\textfrq +% \end{macrocode} +% +% \paragraph{Package french.} The support is deferred, because +% it needs |\GenericError| to be disabled (see below). +% +% \paragraph{Package FrenchPro.} This package uses: +% \begin{quote} +% |\if@mid@expandable{|not fully expandable code|}{|fully expandable code|}| +% \end{quote} +% \begin{macrocode} + \let\if@mid@expandable\@firstoftwo +% \end{macrocode} +% +% \paragraph{AMS classes.} +% \begin{macrocode} + \HyPsd@AMSclassfix +% \end{macrocode} +% +% \paragraph{Redefinition of \cs{hspace}} +% \cs{hspace} don't work in bookmarks, the following fix +% tries to set a space if the argument is a positive length. +% \begin{macrocode} + \let\hspace\HyPsd@hspace +% \end{macrocode} +% +% \paragraph{Commands of referencing and indexing systems.} +% Some \LaTeX{} commands that are legal in \cs{section} commands +% have to be disabled here. +% \begin{macrocode} + \let\label\@gobble + \let\index\@gobble + \let\glossary\@gobble + \let\href\HyPsd@href + \let\@mkboth\@gobbletwo +% \end{macrocode} +% +% The \cs{ref} and \cs{pageref} is much more complicate because of their +% star form. +% \begin{macrocode} + \let\ref\HyPsd@ref + \let\pageref\HyPsd@pageref + \let\nameref\HyPsd@nameref + \let\autoref\HyPsd@autoref +% \end{macrocode} +% +% \paragraph{Miscellaneous commands.} +% \begin{macrocode} + \let\leavevmode\@empty + \let\mbox\@empty +% \end{macrocode} +% \cs{halign} causes error messages because of the template +% character |#|. +% \begin{macrocode} + \def\halign{\pdfstringdefWarn\halign\@gobble}% +% \end{macrocode} +% \begin{macrocode} + \let\ignorespaces\HyPsd@ignorespaces +% \end{macrocode} +% \begin{macrocode} + \let\Hy@SectionAnchorHref\@gobble +% \end{macrocode} +% \begin{macrocode} + \let\ensuremath\@firstofone +% \end{macrocode} +% +% \paragraph{Patch for cjk bookmarks.} +% \begin{macrocode} + \HyPsd@CJKhook +% \end{macrocode} +% +% \paragraph{User hook.} +% The switch \cs{Hy@pdfstring} is turned on. So user commands +% can detect that they are processed not to be typesetted within +% \TeX's stomach, +% but to be expanded by the mouth to give a PDF string. +% At this place before interpreting the string in |#2| additional +% redefinitions can by added by the hook \cs{pdfstringdefPreHook}. +% +% The position in the middle of the redefinitions is a compromise: +% The user should be able to provide his own (perhaps better) +% redefinitions, but some commands should have their original +% meaning, because they can be used in the hook (\cs{bgroup}, +% or \cs{@protected@testopt}, and \cs{@ifnextchar} +% for \cs{renewcommand}). +% \begin{macrocode} + \Hy@pdfstringtrue + \pdfstringdefPreHook +% \end{macrocode} +% +% \paragraph{Spaces.} +% For checking the token of the string, spaces must be masked, because +% they cannot by caught by undelimited arguments. +% \begin{macrocode} + \HyPsd@LetUnexpandableSpace\space + \HyPsd@LetUnexpandableSpace\ % + \HyPsd@LetUnexpandableSpace~% + \HyPsd@LetUnexpandableSpace\nobreakspace +% \end{macrocode} +% +% \paragraph{Package xspace.} +% \begin{macrocode} + \ltx@IfUndefined{@xspace}{% + \let\xspace\HyPsd@ITALCORR + }{% + \let\xspace\HyPsd@XSPACE + }% + \let\/\HyPsd@ITALCORR + \let\bgroup\/% + \let\egroup\/% +% \end{macrocode} +% +% \paragraph{Redefinitions of miscellaneous commands.} +% Hyphenation does not make sense. +% \begin{macrocode} + \let\discretionary\@gobbletwo +% \end{macrocode} +% +% \cs{@ifstar} is defined in \LaTeX\ as follows: +%\begin{verbatim} +%\def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}} +%\end{verbatim} +% \cs{@ifnextchar} doesn't work, because it uses stomach +% commands like \cs{let} and \cs{futurelet}. But it +% doesn't break. Whereas |\@firstoftwo{#1}}| gives an +% error message because \cs{@firstoftwo} misses its second +% argument. +% +% A mimicry of \cs{@ifnextchar} only with expandible commands +% would be very extensive and the result would be only an +% approximation. So here a cheaper solution follows +% in order to get rid of the error message at least: +% \begin{macrocode} + \def\@ifnextchar{\HyPsd@ifnextchar\@ifnextchar}% + \def\kernel@ifnextchar{\HyPsd@ifnextchar\kernel@ifnextchar}% + \def\new@ifnextchar{\HyPsd@ifnextchar\new@ifnextchar}% + \let\@protected@testopt\HyPsd@protected@testopt +% \end{macrocode} +% Support for package `xargs': +% \begin{macrocode} + \let\@protected@testopt@xargs\HyPsd@protected@testopt +% \end{macrocode} +% +% \subsubsection{Expansion} +% There are several possibilities to +% expand tokens within \LaTeX: +% \begin{description} +% \item[\cs{protected@edef}:] +% The weakest form isn't usable, because +% it does not expand the font encoding commands. They are +% made roboust and protect themselves. +% \item[\cs{csname}:] First the string is +% expanded whithin a \cs{csname} and \cs{endcsname}. +% Then the command name is converted to characters +% with catcode 12 by \cs{string} and the first +% escape character removed by \cs{@gobble}. +% This method has the great \emph{advantage} that +% stomach tokens that aren't allowed in PDF strings are detected +% by \TeX{} and reported as errors in order to force the user +% to write correct things. So he get no wrong results by +% forgetting the proofreading of his text. +% But the \emph{disadvantage} is that old wrong code cannot +% processed without errors. Mainly the error message is very cryptic +% and for the normal user hard to understand. \TeX{} provides +% no way to catch the error caused by \cs{csname} or allows to +% support the user with a descriptive error message. Therefore +% the experienced user had to enable this behaviour by an +% option |exactdef| in previous versions less or equal 6.50. +% \item[\cs{edef}] This version uses this standard form for expansion. +% It is stronger than \LaTeX's \cs{protected@edef}. +% So the font encoding mechanism works and the glyph commands +% are converted to the correct tokens for PDF strings whith the +% definitions of the PD1 encoding. +% Because the protecting mechanism of \LaTeX{} doesn't work +% within an \cs{edef}, there are situations thinkable where +% code can break. For example, assignments and definitions aren't +% performed and so undefined command errors or argument +% parsing errors can occur. But this is only a compatibility problem +% with old texts. Now there are possibilities to write +% code that gives correct PDF strings (see \cs{texorpdfstring}). +% In the most cases unexpandable commands and tokens +% (math shift, grouping characters) remains. They +% don't cause an error like with \cs{csname}. However a PDF reader +% isn't \TeX{}, so these tokens are viewed verbatim. So +% this version detects them now, and removes them with an +% descriptive warning for the user. As additional features +% xspace support is possible and grouping characters can be +% used without problems, because they are removed silently. +% \end{description} +% +% \paragraph{Generic messages.} +% While expanding via \cs{xdef} the |\Generic...| messages +% don't work and causes problems (error messages, invalid |.out| +% file). So they are disabled while expanding and removed silently, +% because a user warning would be too expensive (memory and runtime, +% |\pdfstringdef| is slow enough). +% \begin{macrocode} + \begingroup + \let\GenericError\@gobblefour + \let\GenericWarning\@gobbletwo + \let\GenericInfo\@gobbletwo +% \end{macrocode} +% +% \paragraph{Package french.} +% This fix only works, if \cs{GenericError} is disabled. +% \begin{macrocode} + \ifx\nofrenchguillemets\@undefined + \else + \nofrenchguillemets + \fi +% \end{macrocode} +% +% \paragraph{Definition commands and expansion.} +% Redefining the defining commands (see sec. \ref{defcmd}). +% The original meaning of \cs{xdef} is saved in \cs{Hy@temp}. +% \begin{macrocode} + \let\Hy@temp\xdef + \let\def\HyPsd@DefCommand + \let\gdef\HyPsd@DefCommand + \let\edef\HyPsd@DefCommand + \let\xdef\HyPsd@DefCommand + \let\futurelet\HyPsd@LetCommand + \let\let\HyPsd@LetCommand + \Hy@temp#1{#2}% + \endgroup +% \end{macrocode} +% +% \subsubsection{Postprocessing} +% If the string is empty time can be saved by omitting the +% postprocessing process. +% \begin{macrocode} + \ifx#1\@empty + \else +% \end{macrocode} +% +% \paragraph{Protecting spaces and removing grouping characters.} +% In order to check the tokens we must separate them. This will be +% done with \TeX's argument parsing. With this method +% we must the following item takes into account, that makes +% makes things a litte more complicate: +% \begin{itemize} +% \item \TeX{} does not accept a space as an undelimited argument, +% it cancels space tokens while looking for an undelimited +% argument. Therefore we must protect the spaces now. +% \item An argument can be a single token or a group of many tokens. +% And within curly braces tokens aren't find by \TeX's +% argument scanning process. Third curly braces as grouping characters +% cannot be expanded further, so they don't vanish by the string +% expansion above. So these characters with catcode 1 and 2 are +% removed in the following and replaced by an marker for the xspace +% support. +% \item \TeX{} silently removes the outmost pair of braces of an +% argument. To prevent this on unwanted places, in the following +% the character \verb+|+ is appended to the string to make an outer +% brace to an inner one. +% \end{itemize} +% First the top level spaces are protected by replacing. Then the +% string is scanned to detect token groups. Each token group +% will now be space protected and again scanned for another +% token groups. +% \begin{macrocode} + \HyPsd@ProtectSpaces#1% + \let\HyPsd@String\@empty + \expandafter\HyPsd@RemoveBraces\expandafter{#1|}% + \global\let#1\HyPsd@String +% \end{macrocode} +% +% \paragraph{Check tokens.} +% After removing the spaces and the grouping characters +% the string now should only consists of the following tokens/catcodes:\\ +% \begin{tabular}{rl} +% 0&command names with start with an escape character.\\ +% 3&math shift\\ +% 4&alignment tabs\\ +% 6¶meter, but this is unlikely.\\ +% 7&superscript\\ +% 8&subscript\\ +% 11&letter\\ +% 12&other\\ +% 13&commands that are active characters. +% \end{tabular} +% +% After \cs{HyPsd@CheckCatcodes} the command \cs{HyPsd@RemoveMask} is +% reused to remove the group protection character \verb+|+. +% This character is needed to ensure that the string at least +% consists of one token if \cs{HyPsd@CheckCatcodes} +% is called. +% +% Because of internal local assignments and tabulars +% group braces are used. +% \begin{macrocode} + \let\HyPsd@SPACEOPTI\relax + {% + \let\HyPsd@String\@empty + \expandafter\HyPsd@CheckCatcodes#1\HyPsd@End + \global\let#1\HyPsd@String + }% + \expandafter\HyPsd@RemoveMask\expandafter + |\expandafter\@empty#1\HyPsd@End#1% +% \end{macrocode} +% \cs{HyPsd@CheckCatcodes} should no have removed the tokens with +% catcode 3, 4, 7, and 8. Because a parameter token (6) would +% cause to many errors before, there should now be only tokens +% with catcodes 11 or 12. So I think there is no need for +% a safety step like: +%\begin{verbatim} +%\xdef#1{\expandafter\strip@prefix\meaning#1}% +%\end{verbatim} +% \paragraph{Looking for wrong glyphs.} +% The case that glyphs aren't defined in the PD1 encoding +% is caught above in such a way, that the glyph name and +% a marker is inserted into the string. Now we can safely +% scan the string for this marker and provide a descriptive +% warning. +% \begin{macrocode} + \expandafter + \HyPsd@Subst\expandafter{\HyPsd@GLYPHERR}{\relax}#1% + \let\HyPsd@String\@empty + \expandafter\HyPsd@GlyphProcess#1\relax\@empty + \global\let#1\HyPsd@String +% \end{macrocode} +% +% \paragraph{Backslash.} +% The double backslash disturbs parsing octal sequenzes, for +% example in an string like |abc\\051| the sequence \cs{051} +% is detected although the second \cs{} belongs to the +% first backslash. +% \begin{macrocode} + \HyPsd@StringSubst{\\}{\textbackslash}#1% +% \end{macrocode} +% +% \paragraph{Spaces.} +% All spaces have already the form \cs{040}. +% The last postprocessing step will +% be an optimizing of the spaces, so we already introduce +% already the necessary command \cs{HyPsd@SPACEOPTI}. +% But first it is defined to be \cs{relax} in order to +% prevent a too early expansion by an \cs{edef}. +% Secondly a \cs{relax} serves as a marker for +% a token that is detected by \cs{xspace}. +% +% The code of |frenchb.ldf| can produce an additional +% space before \cs{guillemotright}, because \cs{lastskip} +% and \cs{unskip} do not work. Therefore it is removed here. +% \begin{macrocode} + \ifHy@unicode + \expandafter\HyPsd@StringSubst\csname 80\040\endcsname + \HyPsd@SPACEOPTI#1% + \edef\Hy@temp@A{\HyPsd@SPACEOPTI\HyPsd@SPACEOPTI\80\273}% + \expandafter\HyPsd@Subst\expandafter{\Hy@temp@A}% + {\HyPsd@SPACEOPTI\80\273}#1% + \else + \HyPsd@StringSubst{\040}\HyPsd@SPACEOPTI#1% + \expandafter\HyPsd@Subst\expandafter{% + \expandafter\HyPsd@SPACEOPTI\expandafter\HyPsd@SPACEOPTI + \string\273}{\HyPsd@SPACEOPTI\273}#1% + \fi +% \end{macrocode} +% +% \paragraph{Right parenthesis.} +% Also \cs{xspace} detects a right parenthesis. +% For the \cs{xspace} support and the following +% parenthesis check the different parenthesis +% notations |)|, \cs{)}, and \cs{051} are converted +% to one type \cs{)} and before \cs{HyPsd@empty} +% with the meaning of \cs{relax} is introduced for +% \cs{xspace}. By redefining to \cs{@empty} \cs{HyPsd@empty} +% can easily removed later. +% \begin{macrocode} + \ifHy@unicode + \HyPsd@StringSubst{\)}{\80\051}#1% + \HyPsd@Subst){\80\051}#1% + \let\HyPsd@empty\relax + \expandafter\HyPsd@StringSubst\csname 80\051\endcsname + {\HyPsd@empty\80\051}#1% + \else + \HyPsd@StringSubst{\)}{\051}#1% + \HyPsd@Subst){\051}#1% + \let\HyPsd@empty\relax + \HyPsd@StringSubst{\051}{\HyPsd@empty\string\)}#1% + \fi +% \end{macrocode} +% +% \paragraph{Support for package \texttt{xspace}.} +% \cs{xspace} looks for the next token and decides if it +% expands to a space or not. Following tokens prevent its +% transformation to a space: Beginning and end of group, +% handled above by replacing by an italic correction, +% several punctuation marks, a closing parentheses, and +% several spaces. +% +% Without package |xspace| there are tokens with catcode 11 and 12, +% \cs{HyPsd@empty} and \cs{HyPsd@SPACEOPTI}. With package |xspace| +% marker for the italic correction \cs{/} and \cs{xspace} come with. +% In the package |xspace| case the two markers are replaced by +% commands and an \cs{edef} performs the \cs{xspace} processing. +% +% In the opposite of the original \cs{xspace} \cs{HyPsd@xspace} uses +% an argument instead of a \cs{futurelet}, so we have to provide +% such an argument, if \cs{HyPsd@xspace} comes last. Because +% \cs{HyPsd@Subst} with several equal tokens (|--|) needs a safe +% last token, in both cases +% the string gets an additional \cs{HyPsd@empty}. +% \begin{macrocode} + \expandafter\HyPsd@Subst\expandafter{\/}\HyPsd@empty#1% + \ltx@IfUndefined{@xspace}{% + }{% + \let\HyPsd@xspace\relax + \expandafter\HyPsd@Subst\expandafter + {\HyPsd@XSPACE}\HyPsd@xspace#1% + \let\HyPsd@xspace\HyPsd@doxspace + }% + \xdef#1{#1\HyPsd@empty}% +% \end{macrocode} +% +% \paragraph{Ligatures.} +% \TeX{} forms ligatures in its stomach, but the PDF strings are +% treated only by \TeX's mouth. The PDFDocEncoding contains +% some ligatures, but the current +% version 3 of the AcrobatReader lacks the |fi| and |fl| glyphs, and +% the Linux version lacks the |emdash| and |endash| glyphs. +% So the necessary code is provided here, but currently disabled, +% hoping that version 4 of the AcrobatReader is better. +% To break the ligatures the user can use an empty group, +% because it leads to an insertion of an \cs{HyPsd@empty}. +% If this ligature code will be enabled some day, then the italic +% correction should also break the ligatures. Currently this occurs +% only, if package |xspace| is loaded. +% +% Since newer AcrobatReader versions now show the en- and emdash in +% a correct way (AR7/Linux, AR8/Linux), the substitution code +% for them is enabled starting with version 6.78l. +% \begin{macrocode} + \HyPsd@Subst{---}\textemdash#1% + \HyPsd@Subst{--}\textendash#1% +% \HyPsd@Subst{fi}\textfi#1% +% \HyPsd@Subst{fl}\textfl#1% + \HyPsd@Subst{!`}\textexclamdown#1% + \HyPsd@Subst{?`}\textquestiondown#1% +% \end{macrocode} +% With the next \cs{edef} we get rid of the token \cs{HyPsd@empty}. +% \begin{macrocode} + \let\HyPsd@empty\@empty +% \end{macrocode} +% +% \paragraph{Left parentheses.} +% Left parentheses are now converted to safe forms to avoid +% problems with unmatched ones (\cs{(} with PDFDocEncoding, +% the octal sequence with Unicode. +% +% An optimization is possible. Matched parentheses can replaced +% by a |()| pair. But this code is removed to save \TeX{} memory +% and time. +% \begin{macrocode} + \ifHy@unicode + \HyPsd@StringSubst\(\textparenleft#1% + \HyPsd@Subst(\textparenleft#1% + \else + \HyPsd@StringSubst\({\050}#1% + \HyPsd@Subst({\050}#1% + \HyPsd@StringSubst{\050}{\string\(}#1% + \fi +% \end{macrocode} +% +% \paragraph{Optimizing spaces.} +% Spaces are often used, but they have a very long form \cs{040}. +% They are converted back to real spaces, but not all, so that +% no space follows after another. In the bookmark case several +% spaces are written to the |.out| file, but if the entries +% are read back, several spaces are merged to a single one. +% +% With Unicode the spaces are replaced by their octal sequences. +% \begin{macrocode} + \ifHy@unicode + \edef\HyPsd@SPACEOPTI{\80\040}% + \else + \let\HyPsd@SPACEOPTI\HyPsd@spaceopti + \fi + \xdef#1{#1\@empty}% + \fi +% \end{macrocode} +% +% \paragraph{Converting to Unicode.} +% At last the eight bit letters have to be converted to Unicode, +% the masks \cs{8} and \cs{9} are removed and the Unicode +% marker is added. +% \begin{macrocode} + \endgroup + \begingroup + \ifHy@unicode + \HyPsd@ConvertToUnicode#1% +% \end{macrocode} +% +% \paragraph{Try conversion back to PDFDocEncoding.} +% +% \begin{macrocode} + \ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@auto + \ltx@IfUndefined{StringEncodingConvertTest}{% + }{% + \EdefUnescapeString\HyPsd@temp#1% + \ifxetex + \let\HyPsd@UnescapedString\HyPsd@temp + \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp + {utf16be}{ascii-print}{% + \EdefEscapeString\HyPsd@temp\HyPsd@temp + \global\let#1\HyPsd@temp + \HyPsd@EscapeTeX#1% + \Hy@unicodefalse + }{% + \HyPsd@ToBigChars#1% + \HyPsd@EscapeTeX#1% + }% + \else + \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp + {utf16be}{pdfdoc}{% + \EdefEscapeString\HyPsd@temp\HyPsd@temp + \global\let#1\HyPsd@temp + \HyPsd@EscapeTeX#1% + \Hy@unicodefalse + }{}% + \fi + }% + \fi + \fi + \HyPsd@XeTeXBigCharsfalse +% \end{macrocode} +% +% \paragraph{User hook.} +% The hook \cs{pdfstringdefPostHook} can be used +% for the purpose to postprocess the string further. +% \begin{macrocode} + \pdfstringdefPostHook#1% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hy@pdfstringdef} +% \begin{macrocode} +\def\Hy@pdfstringdef#1#2{% + \pdfstringdef\Hy@gtemp{#2}% + \let#1\Hy@gtemp +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Encodings} +% +% \subsubsection{Xe\TeX} +% +% \begin{macrocode} +\edef\Hy@temp{\catcode0=\the\catcode0\relax} +\catcode\z@=12 % +\ifxetex + \expandafter\@firstofone +\else + \let\HyPsd@XeTeXBigCharstrue\@empty + \let\HyPsd@XeTeXBigCharsfalse\@empty + \expandafter\@gobble +\fi +{% + \newif\ifHyPsd@XeTeXBigChars + \def\HyPsd@XeTeXBigCharsfalse{% + \global\let\ifHyPsd@XeTeXBigChars\iffalse + }% + \def\HyPsd@XeTeXBigCharstrue{% + \global\let\ifHyPsd@XeTeXBigChars\iftrue + }% + \def\HyPsd@ToBigChars#1{% + \ifHyPsd@XeTeXBigChars + \EdefEscapeHex\HyPsd@UnescapedString{% + \expandafter\@gobbletwo\HyPsd@UnescapedString + }% + \begingroup + \toks@{}% + \escapechar=92\relax + \let\x\HyPsd@ToBigChar + \expandafter\HyPsd@ToBigChar\HyPsd@UnescapedString + \relax\relax\relax\relax\relax\relax\relax + \edef\x{% + \endgroup + \gdef\noexpand#1{\the\toks@}% + }% + \x + \fi + }% + \def\HyPsd@ToBigChar#1#2#3#4{% + \ifx\relax#1\relax + \let\x\relax + \else + \count@="#1#2#3#4\relax + \let\y\@empty + \lccode\z@=\count@ + \ifnum\count@=40 % ( + \let\y\@backslashchar + \else + \ifnum\count@=41 % ) + \let\y\@backslashchar + \else + \ifnum\count@=92 % backslash + \let\y\@backslashchar + \else + \ifnum\count@=10 % newline + \edef\y##1{\string\n}% + \else + \ifnum\count@=13 % carriage return + \edef\y##1{\string\r}% + \fi + \fi + \fi + \fi + \fi + \lowercase{% + \toks@\expandafter{% + \the\expandafter\toks@ + \y + ^^@% + }% + }% + \fi + \x + }% +} +\Hy@temp +% \end{macrocode} +% +% \subsubsection{Workaround for package linguex} +% +% \begin{macrocode} +\@ifpackageloaded{linguex}{% + \let\HyLinguex@OrgB\b + \let\HyLinguex@OrgC\c + \let\HyLinguex@OrgD\d + \def\HyLinguex@Restore{% + \let\b\HyLinguex@OrgB + \let\c\HyLinguex@OrgC + \let\d\HyLinguex@OrgD + }% + \Hy@AtEndOfPackage{% + \pdfstringdefDisableCommands{% + \ltx@IfUndefined{oldb}{}{\let\b\oldb}% + \ltx@IfUndefined{oldc}{}{\let\c\oldc}% + \ltx@IfUndefined{oldd}{}{\let\d\oldd}% + }% + }% +}{% + \let\HyLinguex@Restore\relax +}% +% \end{macrocode} +% +% \subsubsection{Catcodes saving and restoring for \texttt{.def} files} +% +% \begin{macro}{\Hy@SaveCatcodeSettings} +% \begin{macrocode} +\def\Hy@SaveCatcodeSettings#1{% + \expandafter\edef\csname Hy@cat@#1\endcsname{% + \endlinechar=\the\endlinechar\relax + \catcode32 \the\catcode32\relax % (space) + \catcode34 \the\catcode34\relax % " + \catcode35 \the\catcode35\relax % # + \catcode37 \the\catcode37\relax % (percent) + \catcode40 \the\catcode40\relax % ( + \catcode41 \the\catcode41\relax % ) + \catcode42 \the\catcode42\relax % * + \catcode46 \the\catcode46\relax % . + \catcode58 \the\catcode58\relax % : + \catcode60 \the\catcode60\relax % < + \catcode61 \the\catcode61\relax % = + \catcode62 \the\catcode62\relax % > + \catcode64 \the\catcode64\relax % @ + \catcode91 \the\catcode91\relax % [ + \catcode92 \the\catcode92\relax % \ + \catcode93 \the\catcode93\relax % ] + \catcode123 \the\catcode123\relax % { + \catcode124 \the\catcode124\relax % | + \catcode125 \the\catcode125\relax % } + }% + \endlinechar=-1 % + \catcode32 10 % (space) + \catcode34 12 % " + \catcode35 6 % # + \catcode37 14 % (percent) + \catcode40 12 % ( + \catcode41 12 % ) + \catcode42 12 % * + \catcode46 12 % . + \catcode58 12 % : + \catcode60 12 % < + \catcode61 12 % = + \catcode62 12 % > + \catcode91 12 % [ + \catcode92 0 % \ + \catcode93 12 % ] + \catcode123 1 % { + \catcode124 12 % | + \catcode125 2 % } + \makeatletter +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@RestoreCatcodeSettings} +% \begin{macrocode} +\def\Hy@RestoreCatcodeSettings#1{% + \csname Hy@cat@#1\endcsname + \expandafter\let\csname Hy@cat@#1\endcsname\relax +} +% \end{macrocode} +% \end{macro} +% +% +% \subsubsection{PD1 encoding} +% The PD1 encoding implements the PDFDocEncoding for use with +% \LaTeXe's NFSS. Because the informational strings are not set by +% \TeX's typesetting mechanism but for interpreting by the PDF reader, +% the glyphs of the PD1 encoding are implemented to be safely written +% to a file (PDF output file, |.out| file). +% +% The PD1 encoding can be specified as an option of the 'fontenc' package +% or loaded here. It does not matter what font family is selected, +% as \TeX{} does not process it anyway. So use CM. +% \begin{macrocode} +\@ifundefined{T@PD1}{% + \Hy@SaveCatcodeSettings{pd1}% + \input{pd1enc.def}% + \Hy@RestoreCatcodeSettings{pd1}% + \HyLinguex@Restore +}{} +\DeclareFontFamily{PD1}{pdf}{} +\DeclareFontShape{PD1}{pdf}{m}{n}{ <-> cmr10 }{} +\DeclareFontSubstitution{PD1}{pdf}{m}{n} +% \end{macrocode} +% +% \subsubsection{PU encoding} +% The PU encoding implements the Unicode encoding for use with +% \LaTeX's NFSS. Because of large memory requirements the +% encoding file for Unicode support is only loaded, if option +% |unicode| is specified as package option. +% \begin{macro}{\HyPsd@LoadUnicode} +% Because the file |puenc.def| takes a lot of memory, the loading +% is defined in the macro \cs{HyPsd@LoadUnicode} called by +% the package option |unicode|. +% \begin{macrocode} +\def\HyPsd@LoadUnicode{% + \@ifundefined{T@PU}{% + \Hy@SaveCatcodeSettings{pu}% + \input{puenc.def}% + \Hy@RestoreCatcodeSettings{pu}% + \HyLinguex@Restore + }{}% + \DeclareFontFamily{PU}{pdf}{}% + \DeclareFontShape{PU}{pdf}{m}{n}{ <-> cmr10 }{}% + \DeclareFontSubstitution{PU}{pdf}{m}{n}% + \HyPsd@LoadExtra + \let\HyPsd@LoadUnicode\relax +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@LoadExtra} +% \begin{macrocode} +\def\HyPsd@LoadExtra{% + \ifHy@psdextra + \ltx@iffileloaded{puenc.def}{% + \Hy@SaveCatcodeSettings{psdextra}% + \input{psdextra.def}% + \Hy@RestoreCatcodeSettings{psdextra}% + \let\HyPsd@LoadExtra\relax + }{}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Additional user commands} +% +% \subsubsection{^^A +% \texorpdfstring{\cs{texorpdfstring}}{\\texorpdfstring}^^A +% } +% \begin{macro}{\texorpdfstring} +% While expanding the string in \cs{pdfstringdef} the switch +% \cs{ifHy@pdfstring} is set. This is used by the +% full expandible macro \cs{texorpdfstring}. It expects +% two arguments, the first contains the string that will be +% set and processed by \TeX's stomach, the second +% contains the replacement for PDF strings. +% \begin{macrocode} +\def\texorpdfstring{% + \ifHy@pdfstring + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Hooks for +% \texorpdfstring{\cs{pdfstringdef}}{\\pdfstringdef}^^A +% } +% \begin{macro}{\pdfstringdefPreHook} +% \begin{macro}{\pdfstringdefPostHook} +% Default definition of the hooks for \cs{pdfstringdef}. +% The construct \cs{@ifundefined} with \cs{let} is a little bit +% faster than \cs{providecommand}. +% \begin{macrocode} +\@ifundefined{pdfstringdefPreHook}{% + \let\pdfstringdefPreHook\@empty +}{} +\@ifundefined{pdfstringdefPostHook}{% + \let\pdfstringdefPostHook\@gobble +}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pdfstringdefDisableCommands} +% In \cmd{\pdfstringdefPreHook} the user can add +% code that is executed before the string, that have +% to be converted by \cmd{\pdfstringdef}, is expanded. +% So replacements for problematic macros can be given. +% The code in \cmd{\pdfstringdefPreHook} should not +% be replaced perhaps by an \cmd{\renewcommand}, +% because a previous meaning gets lost. +% +% Macro \cmd{\pdfstringdefDisableCommands} avoids this, +% because it reuses the old meaning of the hook and appends +% the new code to \cmd{\pdfstringdefPreHook}, e.g.: +%\begin{verbatim} +%\pdfstringdefDisableCommands{% +% \let~\textasciitilde +% \def\url{\pdfstringdefWarn\url}% +% \let\textcolor\@gobble +%}% +%\end{verbatim} +% In the argument of \cmd{\pdfstringdefDisableCommands} the +% character |@| can be used in command names. So it is easy +% to use useful \LaTeX{} commands like \cmd{\@gobble} or +% \cmd{\@firstofone}. +% \begin{macrocode} +\def\pdfstringdefDisableCommands{% + \begingroup + \makeatletter + \HyPsd@DisableCommands +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@DisableCommands} +% \begin{macrocode} +\long\def\HyPsd@DisableCommands#1{% + \ltx@GlobalAppendToMacro\pdfstringdefPreHook{#1}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% (Partial) fix for bug in \texttt{frenchb.ldf} 2010/08/21 v2.5a that +% destroys \cs{pdfstringdefDisableCommands} after usage +% in \cs{AtBeginDocument}. +% \begin{macrocode} +\let\HyPsd@pdfstringdefDisableCommands\pdfstringdefDisableCommands +\AtBeginDocument{% + \@ifundefined{pdfstringdefDisableCommands}{% + \let\pdfstringdefDisableCommands\HyPsd@pdfstringdefDisableCommands + }{}% +} +% \end{macrocode} +% +% \begin{macro}{\pdfstringdefWarn} +% The purpose of \cmd{\pdfstringdefWarn} is to produce +% a warning message, so the user can see, that something +% can go wrong with the conversion to PDF strings. +% +% The prefix |\<>-| is added to the token. \cmd{\noexpand} +% protects the probably undefined one during the first +% expansion step. Then \cmd{\HyPsd@CheckCatcodes} can +% detect the not allowed token, \cmd{\HyPsd@CatcodeWarning} +% prints a warning message, after \cmd{\HyPsd@RemovePrefix} +% has removed the prefix. +% +% \cmd{\pdfstringdefWarn} is intended for document authors or +% package writers, examples for use can be seen in the definition +% of \cmd{\HyPsd@ifnextchar} or \cmd{\HyPsd@protected@testopt}. +% \begin{macrocode} +\def\pdfstringdefWarn#1{% + \expandafter\noexpand\csname<>-\string#1\endcsname +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Help macros for expansion} +% +% \subsubsection{\cs{ignorespaces}} +% +% \begin{macro}{\HyPsd@ignorespaces} +% With the help of a trick using \cs{romannumeral} the +% effect of \cs{ignorespaces} can be simulated a little, +% In a special case using an alphabetic constant +% \cs{romannumeral} eats an optional space. If the constant +% is zero, then the \cs{romannumeral} expression vanishes. +% The following macro uses this trick twice, thus \cs{HyPsd@ignorespaces} +% eats up to two following spaces.^^A +% \begin{macrocode} +\begingroup + \catcode0=12 % + \def\x{\endgroup + \def\HyPsd@ignorespaces{% + \romannumeral\expandafter`\expandafter^^@% + \romannumeral`^^@% + }% + }% +\x +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Babel languages} +% +% Since version 2008/03/16 v3.8j babel uses inside \cs{AtBeginDocument}: +%\begin{quote} +%\begin{verbatim} +%\pdfstringdefDisableCommands{% +% \languageshorthands{system}% +%} +%\end{verbatim} +%\end{quote} +% As consequence the shorthands are shown in the bookmarks, +% not its result. Therefore \cs{languageshorthands} is +% disabled before the user hook. If there is a need to +% use the command, then \cs{HyOrg@languageshorthands} +% can be used inside \cs{pdfstringdefDisableCommands}. +% \begin{macrocode} +\def\HyPsd@BabelPatch{% + \let\HyOrg@languageshorthands\languageshorthands + \let\languageshorthands\HyPsd@LanguageShorthands +} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdf@strcmp\endcsname\relax + \let\HyPsd@langshort@system\@empty + \def\HyPsd@LanguageShorthands#1{% + \expandafter\ifx\csname HyPsd@langshort@#1\endcsname + \HyPsd@langshort@system + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \HyOrg@languageshorthands{#1}% + }% + }% +\else + \def\HyPsd@LanguageShorthands#1{% + \ifnum\pdf@strcmp{#1}{system}=\z@ + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \HyOrg@languageshorthands{#1}% + }% + }% +\fi +\def\Hy@temp{% + \@ifpackageloaded{babel}{% + \@ifpackagelater{babel}{2008/03/16}{% + \let\Hy@temp\@empty + }{% + \def\HyPsd@BabelPatch{% + \let\HyOrg@languageshorthands\languageshorthands + }% + }% + }{}% +} +\Hy@temp +\expandafter\Hy@AtBeginDocument\expandafter{\Hy@temp} +% \end{macrocode} +% +% \begin{macrocode} +\newif\ifHy@next +% \end{macrocode} +% +% Nothing to do for english. +% \begin{macrocode} +\ltx@IfUndefined{danish@sh@"@sel}{}{% + \def\HyPsd@babel@danish{% + \declare@shorthand{danish}{"|}{}% + \declare@shorthand{danish}{"~}{-}% + }% +} +\ltx@IfUndefined{dutch@sh@"@sel}{}{% + \def\HyPsd@babel@dutch{% + \declare@shorthand{dutch}{"|}{}% + \declare@shorthand{dutch}{"~}{-}% + }% +} +\ltx@IfUndefined{finnish@sh@"@sel}{}{% + \def\HyPsd@babel@finnish{% + \declare@shorthand{finnish}{"|}{}% + }% +} +\ltx@IfUndefined{french@sh@:@sel}{}{% + \def\HyPsd@babel@frenchb{% + \def\guill@spacing{ }% + }% +} +\ltx@IfUndefined{german@sh@"@sel}{}{% + \def\HyPsd@babel@german{% + \declare@shorthand{german}{"f}{f}% + \declare@shorthand{german}{"|}{}% + \declare@shorthand{german}{"~}{-}% + }% +} +\ltx@IfUndefined{macedonian@sh@"@sel}{}{% + \def\HyPsd@babel@macedonian{% + \declare@shorthand{macedonian}{"|}{}% + \declare@shorthand{macedonian}{"~}{-}% + }% +}{} +\ltx@IfUndefined{ngerman@sh@"@sel}{}{% + \def\HyPsd@babel@ngerman{% + \declare@shorthand{ngerman}{"|}{}% + \declare@shorthand{ngerman}{"~}{-}% + }% +} +\ltx@IfUndefined{portuges@sh@"@sel}{}{% + \def\HyPsd@babel@portuges{% + \declare@shorthand{portuges}{"|}{}% + }% +} +\ltx@IfUndefined{russian@sh@"@sel}{}{% + \def\HyPsd@babel@russian{% + \declare@shorthand{russian}{"|}{}% + \declare@shorthand{russian}{"~}{-}% + }% +} +\ltx@IfUndefined{slovene@sh@"@sel}{}{% + \def\HyPsd@babel@slovene{% + \declare@shorthand{slovene}{"|}{}% + }% +} +% \end{macrocode} +% Nested quoting environments are not supported (|<<|, |>>|). +% \begin{macrocode} +\ltx@IfUndefined{spanish@sh@>@sel}{}{% + \def\HyPsd@babel@spanish{% + \declare@shorthand{spanish}{<<}{\guillemotleft}% + \declare@shorthand{spanish}{>>}{\guillemotright}% + \declare@shorthand{spanish}{"=}{-}% + \declare@shorthand{spanish}{"~}{-}% + \declare@shorthand{spanish}{"!}{\textexclamdown}% + \declare@shorthand{spanish}{"?}{\textquestiondown}% + }% +} +\ltx@IfUndefined{swedish@sh@"@sel}{}{% + \def\HyPsd@babel@swedish{% + \declare@shorthand{swedish}{"|}{}% + \declare@shorthand{swedish}{"~}{-}% + }% +} +\ltx@IfUndefined{ukrainian@sh@"@sel}{}{% + \def\HyPsd@babel@ukrainian{% + \declare@shorthand{ukrainian}{"|}{}% + \declare@shorthand{ukrainian}{"~}{-}% + }% +} +\ltx@IfUndefined{usorbian@sh@"@sel}{}{% + \def\HyPsd@babel@usorbian{% + \declare@shorthand{usorbian}{"f}{f}% + \declare@shorthand{usorbian}{"|}{}% + }% +} +% \end{macrocode} +% \begin{macrocode} +\ltx@IfUndefined{greek@sh@\string~@sel}{% + \let\HyPsd@GreekPatch\@empty +}{% + \def\HyPsd@GreekPatch{% + \let\greeknumeral\HyPsd@greeknumeral + \let\Greeknumeral\HyPsd@Greeknumeral + }% +} +\def\HyPsd@greeknumeral#1{% + \HyPsd@GreekNum\@firstoftwo{#1}% +} +\def\HyPsd@Greeknumeral#1{% + \HyPsd@GreekNum\@secondoftwo{#1}% +} +\def\HyPsd@GreekNum#1#2{% + \ifHy@unicode + \ifnum#2<\@ne + \@arabic{#2}% + \else + \ifnum#2<1000000 % + \HyPsd@@GreekNum#1{#2}% + \else + \@arabic{#2}% + \fi + \fi + \else + \@arabic{#2}% + \fi +} +\def\HyPsd@@GreekNum#1#2{% + \ifnum#2<\@m + \ifnum#2<10 % + \expandafter\HyPsd@GreekNumI + \expandafter\@gobble\expandafter#1\number#2% + \else + \ifnum#2<100 % + \expandafter\HyPsd@GreekNumII + \expandafter\@gobble\expandafter#1\number#2% + \else + \expandafter\HyPsd@GreekNumIII + \expandafter\@gobble\expandafter#1\number#2% + \fi + \fi + \ifnum#2>\z@ + \textnumeralsigngreek + \fi + \else + \ifnum#2<\@M + \expandafter\HyPsd@GreekNumIV\expandafter#1\number#2% + \else + \ifnum#2<100000 % + \expandafter\HyPsd@GreekNumV\expandafter#1\number#2% + \else + \expandafter\HyPsd@GreekNumVI\expandafter#1\number#2% + \fi + \fi + \fi +} +\def\HyPsd@GreekNumI#1#2#3{% + #1{% + \ifnum#3>\z@ + \textnumeralsignlowergreek + \fi + }% + \expandafter#2% + \ifcase#3 % + {}{}% + \or\textalpha\textAlpha + \or\textbeta\textBeta + \or\textgamma\textGamma + \or\textdelta\textDelta + \or\textepsilon\textEpsilon + \or\textstigmagreek\textStigmagreek + \or\textzeta\textZeta + \or\texteta\textEta + \or\texttheta\textTheta + \else + {}{}% + \fi +} +\def\HyPsd@GreekNumII#1#2#3#4{% + #1{% + \ifnum#3>\z@ + \textnumeralsignlowergreek + \fi + }% + \expandafter#2% + \ifcase#3 % + {}{}% + \or\textiota\textIota + \or\textkappa\textKappa + \or\textlambda\textLambda + \or\textmu\textMu + \or\textnu\textNu + \or\textxi\textXi + \or\textomicron\textOmicron + \or\textpi\textPi + \or\textkoppagreek\textKoppagreek + \else + {}{}% + \fi + \HyPsd@GreekNumI#1#2#4% +} +\def\HyPsd@GreekNumIII#1#2#3#4#5{% + #1{% + \ifnum#3>\z@ + \textnumeralsignlowergreek + \fi + }% + \expandafter#2% + \ifcase#3 % + {}{}% + \or\textrho\textRho + \or\textsigma\textSigma + \or\texttau\textTau + \or\textupsilon\textUpsilon + \or\textphi\textPhi + \or\textchi\textChi + \or\textpsi\textPsi + \or\textomega\textOmega + \or\textsampigreek\textSampigreek + \else + {}{}% + \fi + \HyPsd@GreekNumII#1#2#4#5% +} +\def\HyPsd@GreekNumIV#1#2#3#4#5{% + \HyPsd@GreekNumI\@firstofone#1#2% + \HyPsd@@GreekNum#1{#3#4#5}% +} +\def\HyPsd@GreekNumV#1#2#3#4#5#6{% + \HyPsd@GreekNumII\@firstofone#1#2#3% + \HyPsd@@GreekNum#1{#4#5#6}% +} +\def\HyPsd@GreekNumVI#1#2#3#4#5#6#7{% + \HyPsd@GreekNumIII\@firstofone#1#2#3#4% + \HyPsd@@GreekNum#1{#5#6#7}% +} +% \end{macrocode} +% \begin{macrocode} +\def\HyPsd@SpanishPatch{% + \ltx@IfUndefined{es@save@dot}{% + }{% + \let\.\es@save@dot + }% +} +% \end{macrocode} +% Shorthand |"-| of `russianb.ldf' is not expandable, +% therefore it is disabled and replaced by |-|. +% \begin{macrocode} +\def\HyPsd@RussianPatch{% + \ltx@IfUndefined{russian@sh@"@-@}{% + }{% + \@namedef{russian@sh@"@-@}{-}% + }% +} +% \end{macrocode} +% +% \subsubsection{CJK patch} +% +% \begin{macrocode} +\RequirePackage{intcalc}[2007/09/27] +% \end{macrocode} +% +% \begin{macro}{\HyPsd@CJKhook} +% \begin{macrocode} +\def\HyPsd@CJKhook{% + \ltx@ifpackageloaded{CJK}{% + \let\CJK@kern\relax + \let\CJKkern\relax + \let\CJK@CJK\relax + \ifHy@CJKbookmarks + \HyPsd@CJKhook@bookmarks + \fi + \HyPsd@CJKhook@unicode + }{}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{CJK bookmarks} +% +% \begin{macro}{\HyPsd@CJKhook} +% Some internal commands of package cjk are redefined +% to avoid error messages. For a rudimental support +% of CJK bookmarks the active characters are +% redefined so that they print themselves. +% +% After preprocessing of Big5 encoded data the +% following string for a double-byte character +% is emitted: +%\begin{verbatim} +%^^7f<arg1>^^7f<arg2>^^7f +%\end{verbatim} +% \verb|<arg1>| is the first byte in the range (always $>$ 0x80); +% \verb|<arg2>| is the second byte in decimal notation +% ($\ge$ 0x40). +% \begin{macrocode} +\begingroup + \catcode"7F=\active + \toks@{% + \let\CJK@ignorespaces\empty + \def\CJK@char#1{\@gobbletwo}% + \let\CJK@charx\@gobblefour + \let\CJK@punctchar\@gobblefour + \def\CJK@punctcharx#1{\@gobblefour}% + \catcode"7F=\active + \def^^7f#1^^7f#2^^7f{% + \string #1\HyPsd@DecimalToOctal{#2}% + }% + % ... ? + \ifHy@unicode + \def\Hy@cjkpu{\80}% + \else + \let\Hy@cjkpu\@empty + \fi + \HyPsd@CJKActiveChars + }% + \count@=127 % + \@whilenum\count@<255 \do{% + \advance\count@ by 1 % + \lccode`\~=\count@ + \lowercase{% + \toks@\expandafter{\the\toks@ ~}% + }% + }% + \toks@\expandafter{\the\toks@ !}% + \xdef\HyPsd@CJKhook@bookmarks{% + \the\toks@ + }% +\endgroup +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@CJKActiveChars} +% The macro \cmd{\HyPsd@CJKActiveChars} is only defined +% to limit the memory consumption of \cmd{\HyPsd@CJKhook}. +% \begin{macrocode} +\def\HyPsd@CJKActiveChars#1{% + \ifx#1!% + \let\HyPsd@CJKActiveChars\relax + \else + \edef#1{\noexpand\Hy@cjkpu\string#1}% + \fi + \HyPsd@CJKActiveChars +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@DecimalToOctal} +% A character, given by the decimal number is converted +% to a PDF character. +% \begin{macrocode} +\def\HyPsd@DecimalToOctal#1{% + \ifcase #1 % + \000\or \001\or \002\or \003\or \004\or \005\or \006\or \007% + \or \010\or \011\or \012\or \013\or \014\or \015\or \016\or \017% + \or \020\or \021\or \022\or \023\or \024\or \025\or \026\or \027% + \or \030\or \031\or \032\or \033\or \034\or \035\or \036\or \037% + \or \040\or \041\or \042\or \043\or \044\or \045\or \046\or \047% + \or \050\or \051\or \052\or \053\or \054\or \055\or \056\or \057% + \or 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7% + \or 8\or 9\or \072\or \073\or \074\or \075\or \076\or \077% + \or @\or A\or B\or C\or D\or E\or F\or G% + \or H\or I\or J\or K\or L\or M\or N\or O% + \or P\or Q\or R\or S\or T\or U\or V\or W% + \or X\or Y\or Z\or \133\or \134\or \135\or \136\or \137% + \or \140\or a\or b\or c\or d\or e\or f\or g% + \or h\or i\or j\or k\or l\or m\or n\or o% + \or p\or q\or r\or s\or t\or u\or v\or w% + \or x\or y\or z\or \173\or \174\or \175\or \176\or \177% + \or \200\or \201\or \202\or \203\or \204\or \205\or \206\or \207% + \or \210\or \211\or \212\or \213\or \214\or \215\or \216\or \217% + \or \220\or \221\or \222\or \223\or \224\or \225\or \226\or \227% + \or \230\or \231\or \232\or \233\or \234\or \235\or \236\or \237% + \or \240\or \241\or \242\or \243\or \244\or \245\or \246\or \247% + \or \250\or \251\or \252\or \253\or \254\or \255\or \256\or \257% + \or \260\or \261\or \262\or \263\or \264\or \265\or \266\or \267% + \or \270\or \271\or \272\or \273\or \274\or \275\or \276\or \277% + \or \300\or \301\or \302\or \303\or \304\or \305\or \306\or \307% + \or \310\or \311\or \312\or \313\or \314\or \315\or \316\or \317% + \or \320\or \321\or \322\or \323\or \324\or \325\or \326\or \327% + \or \330\or \331\or \332\or \333\or \334\or \335\or \336\or \337% + \or \340\or \341\or \342\or \343\or \344\or \345\or \346\or \347% + \or \350\or \351\or \352\or \353\or \354\or \355\or \356\or \357% + \or \360\or \361\or \362\or \363\or \364\or \365\or \366\or \367% + \or \370\or \371\or \372\or \373\or \374\or \375\or \376\or \377% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{CJK unicode} +% +% \begin{macro}{\HyPsd@CJKhook@unicode} +% \begin{macrocode} +\def\HyPsd@CJKhook@unicode{% + \let\Unicode\HyPsd@CJK@Unicode + \let\CJKnumber\HyPsd@CJKnumber + \let\CJKdigits\HyPsd@CJKdigits +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@CJK@Unicode} +% \begin{macrocode} +\def\HyPsd@CJK@Unicode#1#2{% + \ifnum#1<256 % + \HyPsd@DecimalToOctalFirst{#1}% + \HyPsd@DecimalToOctalSecond{#2}% + \else + \933% + \expandafter\expandafter\expandafter\HyPsd@HighA + \intcalcDiv{#1}{4}!% + \933% + \ifcase\intcalcMod{#1}{4} % + 4\or 5\or 6\or 7% + \fi + \HyPsd@DecimalToOctalSecond{#2}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\def\HyPsd@HighA#1!{% + \expandafter\expandafter\expandafter\HyPsd@HighB + \IntCalcDiv#1!64!!% + \expandafter\expandafter\expandafter\HyPsd@HighD + \IntCalcMod#1!64!!% +} +\def\HyPsd@HighB#1!{% + \expandafter\expandafter\expandafter\HyPsd@HighC + \IntCalcDec#1!!% +} +\def\HyPsd@HighC#1!{% + \IntCalcDiv#1!4!% + \@backslashchar + \IntCalcMod#1!4!% +} +\def\HyPsd@HighD#1!{% + \ifcase\IntCalcDiv#1!8! % + 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7% + \fi + \ifcase\IntCalcMod#1!8! % + 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7% + \fi +} +\def\HyPsd@DecimalToOctalFirst#1{% + \9% + \ifcase#1 % + 000\or 001\or 002\or 003\or 004\or 005\or 006\or 007% + \or 010\or 011\or 012\or 013\or 014\or 015\or 016\or 017% + \or 020\or 021\or 022\or 023\or 024\or 025\or 026\or 027% + \or 030\or 031\or 032\or 033\or 034\or 035\or 036\or 037% + \or 040\or 041\or 042\or 043\or 044\or 045\or 046\or 047% + \or 050\or 051\or 052\or 053\or 054\or 055\or 056\or 057% + \or 060\or 061\or 062\or 063\or 064\or 065\or 066\or 067% + \or 070\or 071\or 072\or 073\or 074\or 075\or 076\or 077% + \or 100\or 101\or 102\or 103\or 104\or 105\or 106\or 107% + \or 120\or 111\or 112\or 113\or 114\or 115\or 116\or 117% + \or 120\or 121\or 122\or 123\or 124\or 125\or 126\or 127% + \or 130\or 131\or 132\or 133\or 134\or 135\or 136\or 137% + \or 140\or 141\or 142\or 143\or 144\or 145\or 146\or 147% + \or 150\or 151\or 152\or 153\or 154\or 155\or 156\or 157% + \or 160\or 161\or 162\or 163\or 164\or 165\or 166\or 167% + \or 170\or 171\or 172\or 173\or 174\or 175\or 176\or 177% + \or 200\or 201\or 202\or 203\or 204\or 205\or 206\or 207% + \or 210\or 211\or 212\or 213\or 214\or 215\or 216\or 217% + \or 220\or 221\or 222\or 223\or 224\or 225\or 226\or 227% + \or 230\or 231\or 232\or 233\or 234\or 235\or 236\or 237% + \or 240\or 241\or 242\or 243\or 244\or 245\or 246\or 247% + \or 250\or 251\or 252\or 253\or 254\or 255\or 256\or 257% + \or 260\or 261\or 262\or 263\or 264\or 265\or 266\or 267% + \or 270\or 271\or 272\or 273\or 274\or 275\or 276\or 277% + \or 300\or 301\or 302\or 303\or 304\or 305\or 306\or 307% + \or 310\or 311\or 312\or 313\or 314\or 315\or 316\or 317% + \or 320\or 321\or 322\or 323\or 324\or 325\or 326\or 327% + \or 330\or 331\or 332\or 333\or 334\or 335\or 336\or 337% + \or 340\or 341\or 342\or 343\or 344\or 345\or 346\or 347% + \or 350\or 351\or 352\or 353\or 354\or 355\or 356\or 357% + \or 360\or 361\or 362\or 363\or 364\or 365\or 366\or 367% + \or 370\or 371\or 372\or 373\or 374\or 375\or 376\or 377% + \fi +} +\def\HyPsd@DecimalToOctalSecond#1{% + \ifcase #1 % + \000\or \001\or \002\or \003\or \004\or \005\or \006\or \007% + \or \010\or \011\or \012\or \013\or \014\or \015\or \016\or \017% + \or \020\or \021\or \022\or \023\or \024\or \025\or \026\or \027% + \or \030\or \031\or \032\or \033\or \034\or \035\or \036\or \037% + \or \040\or \041\or \042\or \043\or \044\or \045\or \046\or \047% + \or \050\or \051\or \052\or \053\or \054\or \055\or \056\or \057% + \or \060\or \061\or \062\or \063\or \064\or \065\or \066\or \067% + \or \070\or \071\or \072\or \073\or \074\or \075\or \076\or \077% + \or \100\or \101\or \102\or \103\or \104\or \105\or \106\or \107% + \or \110\or \111\or \112\or \113\or \114\or \115\or \116\or \117% + \or \120\or \121\or \122\or \123\or \124\or \125\or \126\or \127% + \or \130\or \131\or \132\or \133\or \134\or \135\or \136\or \137% + \or \140\or \141\or \142\or \143\or \144\or \145\or \146\or \147% + \or \150\or \151\or \152\or \153\or \154\or \155\or \156\or \157% + \or \160\or \161\or \162\or \163\or \164\or \165\or \166\or \167% + \or \170\or \171\or \172\or \173\or \174\or \175\or \176\or \177% + \or \200\or \201\or \202\or \203\or \204\or \205\or \206\or \207% + \or \210\or \211\or \212\or \213\or \214\or \215\or \216\or \217% + \or \220\or \221\or \222\or \223\or \224\or \225\or \226\or \227% + \or \230\or \231\or \232\or \233\or \234\or \235\or \236\or \237% + \or \240\or \241\or \242\or \243\or \244\or \245\or \246\or \247% + \or \250\or \251\or \252\or \253\or \254\or \255\or \256\or \257% + \or \260\or \261\or \262\or \263\or \264\or \265\or \266\or \267% + \or \270\or \271\or \272\or \273\or \274\or \275\or \276\or \277% + \or \300\or \301\or \302\or \303\or \304\or \305\or \306\or \307% + \or \310\or \311\or \312\or \313\or \314\or \315\or \316\or \317% + \or \320\or \321\or \322\or \323\or \324\or \325\or \326\or \327% + \or \330\or \331\or \332\or \333\or \334\or \335\or \336\or \337% + \or \340\or \341\or \342\or \343\or \344\or \345\or \346\or \347% + \or \350\or \351\or \352\or \353\or \354\or \355\or \356\or \357% + \or \360\or \361\or \362\or \363\or \364\or \365\or \366\or \367% + \or \370\or \371\or \372\or \373\or \374\or \375\or \376\or \377% + \fi +} +% \end{macrocode} +% \begin{macrocode} +\def\HyPsd@CJKnumber#1{% + \ifnum#1<\z@ + \CJK@minus + \expandafter\HyPsd@@CJKnumber\expandafter{\number-\number#1}% + \else + \expandafter\HyPsd@@CJKnumber\expandafter{\number#1}% + \fi +} +\def\HyPsd@@CJKnumber#1{% + \ifcase#1 % + \CJK@zero\or\CJK@one\or\CJK@two\or\CJK@three\or\CJK@four\or + \CJK@five\or\CJK@six\or\CJK@seven\or\CJK@eight\or\CJK@nine\or + \CJK@ten\or\CJK@ten\CJK@one\or\CJK@ten\CJK@two\or + \CJK@ten\CJK@three\or\CJK@ten\CJK@four\or\CJK@ten\CJK@five\or + \CJK@ten\CJK@six\or\CJK@ten\CJK@seven\or\CJK@ten\CJK@eight\or + \CJK@ten\CJK@nine + \else + \ifnum#1<10000 % + \HyPsd@CJKnumberFour#1!\@empty{20}% + \@empty + \else + \ifnum#1<100000000 % + \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour + \IntCalcDiv#1!10000!% + !{}{20}% + \CJK@tenthousand + \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour + \IntCalcMod#1!10000!% + !\CJK@zero{10}% + \@empty + \else + \expandafter\HyPsd@CJKnumberLarge + \number\IntCalcDiv#1!100000000!\expandafter!% + \number\IntCalcMod#1!100000000!!% + \fi + \fi + \fi +} +\def\HyPsd@CJKnumberLarge#1!#2!{% + \HyPsd@CJKnumberFour#1!{}{20}% + \CJK@hundredmillion + \ifnum#2=\z@ + \else + \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour + \IntCalcDiv#2!10000!% + !\CJK@zero{10}% + \CJK@tenthousand + \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour + \IntCalcMod#2!10000!% + !\CJK@zero{10}% + \@empty + \fi +} +\def\HyPsd@CJKnumberFour#1!#2#3{% + \ifnum#1=\z@ + \expandafter\@gobble + \else + \ifnum#1<1000 % + #2% + \HyPsd@CJKnumberThree#1!{}{#3}% + \else + \HyPsd@@CJKnumber{\IntCalcDiv#1!1000!}% + \CJK@thousand + \expandafter\expandafter\expandafter\HyPsd@CJKnumberThree + \IntCalcMod#1!1000!% + !\CJK@zero{10}% + \fi + \fi +} +\def\HyPsd@CJKnumberThree#1!#2#3{% + \ifnum#1=\z@ + \else + \ifnum#1<100 % + #2% + \HyPsd@CJKnumberTwo#1!{}{#3}% + \else + \HyPsd@@CJKnumber{\IntCalcDiv#1!100!}% + \CJK@hundred + \expandafter\expandafter\expandafter\HyPsd@CJKnumberTwo + \IntCalcMod#1!100!% + !\CJK@zero{10}% + \fi + \fi +} +\def\HyPsd@CJKnumberTwo#1!#2#3{% + \ifnum#1=\z@ + \else + \ifnum#1<#3 % + #2% + \HyPsd@@CJKnumber{#1}% + \else + \HyPsd@@CJKnumber{\IntCalcDiv#1!10!}% + \CJK@ten + \ifnum\IntCalcMod#1!10!=\z@ + \else + \HyPsd@@CJKnumber{\IntCalcMod#1!10!}% + \fi + \fi + \fi +} +% \end{macrocode} +% \begin{macrocode} +\def\HyPsd@CJKdigits#1{% + \ifx*#1\relax + \expandafter\HyPsd@@CJKdigits\expandafter\CJK@zero + \else + \HyPsd@@CJKdigits\CJK@null{#1}% + \fi +} +\def\HyPsd@@CJKdigits#1#2{% + \ifx\\#2\\% + \else + \HyPsd@@@CJKdigits#1#2\@nil + \fi +}% +\def\HyPsd@@@CJKdigits#1#2#3\@nil{% + \HyPsd@CJKdigit#1{#2}% + \ifx\\#3\\% + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \HyPsd@@@CJKdigits#1#3\@nil + }% +} +\def\HyPsd@CJKdigit#1#2{% + \ifcase#2 % + #1\or + \CJK@one\or\CJK@two\or\CJK@three\or\CJK@four\or + \CJK@five\or\CJK@six\or\CJK@seven\or\CJK@eight\or\CJK@nine + \fi +} +% \end{macrocode} +% +% \subsubsection{\texorpdfstring{\cs{@inmathwarn}}{\\@inmathwarn}-Patch} +% \begin{macro}{\HyPsd@inmathwarn} +% The patch of \cs{@inmathwarn} is needed to get rid of the +% infinite error loop with glyphs of other encodings +% (see the explanation above). Potentially the patch is +% dangerous, if the code in |ltoutenc.dtx| changes. +% Checked with \LaTeXe{} versions [1998/06/01] and +% [1998/12/01]. I expect that versions below [1995/12/01] +% don't work. +% +% To understand the patch easier, the original code of +% \cs{@current@cmd} and \cs{@changed@cmd} follows +% (\LaTeXe{} release [1998/12/01]). +% In the normal case \cs{pdfstringdef} is executed in a context +% where \cs{protect} has the meaning of \cs{@typesetprotect} +% (=\cs{relax}). +%\begin{verbatim} +%\def\@current@cmd#1{% +% \ifx\protect\@typeset@protect +% \@inmathwarn#1% +% \else +% \noexpand#1\expandafter\@gobble +% \fi} +%\def\@changed@cmd#1#2{% +% \ifx\protect\@typeset@protect +% \@inmathwarn#1% +% \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax +% \expandafter\ifx\csname ?\string#1\endcsname\relax +% \expandafter\def\csname ?\string#1\endcsname{% +% \TextSymbolUnavailable#1% +% }% +% \fi +% \global\expandafter\let +% \csname\cf@encoding \string#1\expandafter\endcsname +% \csname ?\string#1\endcsname +% \fi +% \csname\cf@encoding\string#1% +% \expandafter\endcsname +% \else +% \noexpand#1% +% \fi} +%\gdef\TextSymbolUnavailable#1{% +% \@latex@error{% +% Command \protect#1 unavailable in encoding \cf@encoding% +% }\@eha} +%\def\@inmathwarn#1{% +% \ifmmode +% \@latex@warning{Command \protect#1 invalid in math mode}% +% \fi} +%\end{verbatim} +% \begin{macrocode} +\def\HyPsd@inmathwarn#1#2{% + \ifx#2\expandafter + \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax + \HyPsd@GLYPHERR + \expandafter\@gobble\string#1% + >% + \expandafter\expandafter\expandafter\HyPsd@EndWithElse + \else + \expandafter\expandafter\expandafter\HyPsd@GobbleFiFi + \fi + \else + \expandafter#2% + \fi +} +\def\HyPsd@GobbleFiFi#1\fi#2\fi{} +\def\HyPsd@EndWithElse#1\else{\else} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPsd@add@accent} +% \begin{macrocode} +\def\HyPsd@add@accent#1#2{% + \HyPsd@GLYPHERR\expandafter\@gobble\string#1+\string#2>% + #2% +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Unexpandable spaces} +% +% \begin{macro}{\HyPsd@LetUnexpandableSpace} +% In \cmd{\HyPsd@@ProtectSpaces} the space tokens are replaced +% by not expandable commands, that work like spaces: +% \begin{itemize} +% \item So they can caught by undelimited arguments. +% \item And they work in number, dimen, and skip +% assignments. +% \end{itemize} +% These properties are used in \cmd{\HyPsd@CheckCatcodes}. +% \begin{macrocode} +\def\HyPsd@LetUnexpandableSpace#1{% + \expandafter\futurelet\expandafter#1\expandafter\@gobble\space\relax +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@UnexpandableSpace} +% \cmd{\HyPsd@UnexpandableSpace} is used +% in \cmd{\HyPsd@@ProtectSpaces}. +% In \cmd{HyPsd@@ProtectSpaces} the space tokens are replaced +% by unexpandable commands \cmd{\HyPsd@UnexpandableSpace}, +% but that have the effect of spaces. +% \begin{macrocode} +\HyPsd@LetUnexpandableSpace\HyPsd@UnexpandableSpace +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Marker for commands} +% \begin{macro}{\HyPsd@XSPACE} +% \begin{macro}{\HyPsd@ITALCORR} +% \begin{macro}{\HyPsd@GLYPHERR} +% Some commands and informations cannot be utilized before +% the string expansion and the checking process. +% Command names are filtered out, so we need another way +% to transport the information: An unusual |#| with catcode +% 12 marks the beginning of the extra information. +% \begin{macrocode} +\edef\HyPsd@XSPACE{\string#\string X} +\edef\HyPsd@ITALCORR{\string#\string I} +\edef\HyPsd@GLYPHERR{\string#\string G} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{\texorpdfstring{\cs{hspace}}{\\hspace} fix} +% \begin{macro}{\HyPsd@hspace} +% \begin{macrocode} +\def\HyPsd@hspace#1{\HyPsd@@hspace#1*\END} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@hspace} +% \cs{HyPsd@@hspace} checks whether \cs{hspace} +% is called in its star form. +% \begin{macrocode} +\def\HyPsd@@hspace#1*#2\END{% + \ifx\\#2\\% + \HyPsd@hspacetest{#1}% + \else + \expandafter\HyPsd@hspacetest + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@hspacetest} +% \cs{HyPsd@hyspacetest} replaces the \cs{hspace} by a space, if +% the length is greater than zero. +% \begin{macrocode} +\def\HyPsd@hspacetest#1{\ifdim#1>\z@\space\fi} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Fix for AMS classes} +% +% \begin{macrocode} +\ltx@IfUndefined{tocsection}{% + \let\HyPsd@AMSclassfix\relax +}{% + \def\HyPsd@AMSclassfix{% + \let\tocpart\HyPsd@tocsection + \let\tocchapter\HyPsd@tocsection + \let\tocappendix\HyPsd@tocsection + \let\tocsection\HyPsd@tocsection + \let\tocsubsection\HyPsd@tocsection + \let\tocsubsubsection\HyPsd@tocsection + \let\tocparagraph\HyPsd@tocsection + }% + \def\HyPsd@tocsection#1#2#3{% + \if @#2@\else\if @#1@\else#1 \fi#2. \fi + #3% + }% +} +% \end{macrocode} +% +% \subsubsection{Reference commands} +% +% \begin{macro}{\HyPsd@href} +% \begin{macrocode} +\def\HyPsd@href#1#{\@secondoftwo} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPsd@ref} +% Macro \cs{HyPsd@ref} calls the macro \cs{HyPsd@@ref} for star checking. +% The same methods like in \cs{HyPsd@hspace} is used. +% \begin{macrocode} +\def\HyPsd@ref#1{\HyPsd@@ref#1*\END}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@ref} +% Macro \cs{HyPsd@@ref} checks if a star is present. +% \begin{macrocode} +\def\HyPsd@@ref#1*#2\END{% + \ifx\\#2\\% + \HyPsd@@@ref{#1}% + \else + \expandafter\HyPsd@@@ref + \fi +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@@ref} +% \cs{HyPsd@@@ref} does the work and extracts the first argument. +% \begin{macrocode} +\def\HyPsd@@@ref#1{% + \expandafter\ifx\csname r@#1\endcsname\relax + ??% + \else + \expandafter\expandafter\expandafter + \@car\csname r@#1\endcsname\@nil + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPsd@pageref} +% Macro \cs{HyPsd@pageref} calls the macro \cs{HyPsd@@pageref} for star checking. +% The same methods like in \cs{HyPsd@hspace} is used. +% \begin{macrocode} +\def\HyPsd@pageref#1{\HyPsd@@pageref#1*\END} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@pageref} +% Macro \cs{HyPsd@@pageref} checks if a star is present. +% \begin{macrocode} +\def\HyPsd@@pageref#1*#2\END{% + \ifx\\#2\\% + \HyPsd@@@pageref{#1}% + \else + \expandafter\HyPsd@@@pageref + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@@pageref} +% \cs{HyPsd@@@pageref} does the work and extracts the second argument. +% \begin{macrocode} +\def\HyPsd@@@pageref#1{% + \expandafter\ifx\csname r@#1\endcsname\relax + ??% + \else + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\@car + \expandafter\expandafter\expandafter\@gobble + \csname r@#1\endcsname{}\@nil + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPsd@nameref} +% Macro \cs{HyPsd@nameref} calls the macro \cs{HyPsd@@nameref} for star checking. +% The same methods like in \cs{HyPsd@hspace} is used. +% \begin{macrocode} +\def\HyPsd@nameref#1{\HyPsd@@nameref#1*\END} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@nameref} +% Macro \cs{HyPsd@@nameref} checks if a star is present. +% \begin{macrocode} +\def\HyPsd@@nameref#1*#2\END{% + \ifx\\#2\\% + \HyPsd@@@nameref{#1}% + \else + \expandafter\HyPsd@@@nameref + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@@nameref} +% \cs{HyPsd@@@nameref} does the work and extracts the third argument. +% \begin{macrocode} +\def\HyPsd@@@nameref#1{% + \expandafter\ifx\csname r@#1\endcsname\relax + ??% + \else + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\@car + \expandafter\expandafter\expandafter\@gobbletwo + \csname r@#1\endcsname{}{}\@nil + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPsd@autoref} +% Macro \cs{HyPsd@autoref} calls the macro \cs{HyPsd@@autoref} for star checking. +% The same methods like in \cs{HyPsd@hspace} is used. +% \begin{macrocode} +\def\HyPsd@autoref#1{\HyPsd@@autoref#1*\END} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@autoref} +% Macro \cs{HyPsd@@autoref} checks if a star is present. +% \begin{macrocode} +\def\HyPsd@@autoref#1*#2\END{% + \ifx\\#2\\% + \HyPsd@@@autoref{#1}% + \else + \expandafter\HyPsd@@@autoref + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@@autoref} +% \cs{HyPsd@@@autoref} does the work and extracts the second argument. +% \begin{macrocode} +\def\HyPsd@@@autoref#1{% + \expandafter\ifx\csname r@#1\endcsname\relax + ??% + \else + \expandafter\expandafter\expandafter\HyPsd@autorefname + \csname r@#1\endcsname{}{}{}{}\@nil + \expandafter\expandafter\expandafter + \@car\csname r@#1\endcsname\@nil + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@autorefname} +% At least a basic definition for getting the \cs{autoref} name. +% \begin{macrocode} +\def\HyPsd@autorefname#1#2#3#4#5\@nil{% + \ifx\\#4\\% + \else + \HyPsd@@autorefname#4.\@nil + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@autorefname} +% \begin{macrocode} +\def\HyPsd@@autorefname#1.#2\@nil{% + \ltx@IfUndefined{#1autorefname}{% + \ltx@IfUndefined{#1name}{% + }{% + \csname#1name\endcsname\space + }% + }{% + \csname#1autorefname\endcsname\space + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Redefining the defining commands} +% \label{defcmd} +% Definitions aren't allowed, because they aren't executed in +% an only expanding context. So the command to be defined +% isn't defined and can perhaps be undefined. This would causes +% TeX to stop with an error message. +% With a deep trick it is possible to define commands in such +% a context: \cs{csname} does the job, it defines the command +% to be \cs{relax}, if it has no meaning. +% +% Active characters cannot be defined with this trick. It is +% possible to define all undefined active characters +% (perhaps that they have the meaning of \cs{relax}). +% To avoid side effects this should be done in \cs{pdfstringdef} +% shortly before the \cs{xdef} job. But checking and defining +% all possible active characters of the full range (0 until 255) +% would take a while. \cs{pdfstringdef} is slow enough, so +% this isn't done. +% +% \cs{HyPsd@DefCommand} and \cs{HyPsd@LetCommand} expands to the +% commands \cs{<def>-command} and \cs{<let>-command} +% with the meaning of \cs{def} and \cs{let}. So it is detected by +% \cs{HyPsd@CheckCatcodes} and the command name \cs{<def>-command} +% or \cs{<let>-command} should indicate a forbidden definition +% command. +% +% The command to be defined is converted to a string and back +% to a command name with the help of \cs{csname}. If the +% command is already defined, \cs{noexpand} prevents a +% further expansion, even though the command would +% expand to legal stuff. If the command don't have the meaning +% of \cs{relax}, \cs{HyPsd@CheckCatcodes} will produce a warning. +% (The command itself can be legal, but the warning is legitimate +% because of the position after a defining command.) +% +% The difference between \cs{HyPsd@DefCommand} and +% \cs{HyPsdLetCommand} is that the first one also cancels this +% arguments, the parameter and definition text. The right side +% of the \cs{let} commands cannot be canceled with an undelimited +% parameter because of a possible space token after \cs{futurelet}. +% +% To avoid unmachted \cs{if...} tokens, the cases +% \verb|\let\if...\iftrue| and \verb|\let\if...\iffalse| +% are checked and ignored. +% +% \begin{macro}{\HyPsd@DefCommand} +% \begin{macro}{\HyPsd@LetCommand} +% \begin{macrocode} +\begingroup + \def\x#1#2{% + \endgroup + \let#1\def + \def\HyPsd@DefCommand##1##2##{% + #1% + \expandafter\noexpand + \csname\expandafter\@gobble\string##1\@empty\endcsname + \@gobble + }% + \let#2\let + \def\HyPsd@@LetCommand##1{% + \expandafter\ifx\csname##1\expandafter\endcsname + \csname iftrue\endcsname + \pdfstringdefWarn\let + \expandafter\@gobble + \else + \expandafter\ifx\csname##1\expandafter\endcsname + \csname iffalse\endcsname + \pdfstringdefWarn\let + \expandafter\expandafter\expandafter\@gobble + \else + #2% + \expandafter\noexpand + \csname##1\expandafter\expandafter\expandafter\endcsname + \fi + \fi + }% + }% +\expandafter\x\csname <def>-command\expandafter\endcsname + \csname <let>-command\endcsname +\def\HyPsd@LetCommand#1{% + \expandafter\expandafter\expandafter\HyPsd@@LetCommand + \expandafter\expandafter\expandafter{% + \expandafter\@gobble\string#1\@empty + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{^^A +% \texorpdfstring{\cs{ifnextchar}}{\\ifnextchar}^^A +% } +% \begin{macro}{\HyPsd@ifnextchar} +% In \cs{pdfstringdef} \cs{@ifnextchar} is disabled +% via a \cs{let} command to save time. First a +% warning message is given, then the three arguments +% are canceled. \cs{@ifnextchar} cannot work in a correct +% manner, because it uses \cs{futurelet}, but this is a +% stomach feature, that doesn't work in an expanding context. +% There are several variants of \cs{@ifnextchar}: +% \begin{itemize} +% \item \cs{@ifnextchar} +% \item \cs{kernel@ifnextchar} +% \item \cs{new@ifnextchar} from package \verb|amsgen.sty| +% (bug report latex/3662). +% \end{itemize} +% \begin{macrocode} +\def\HyPsd@ifnextchar#1{% + \pdfstringdefWarn#1% + \expandafter\@gobbletwo\@gobble +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{^^A +% \texorpdfstring{\cs{@protected@testoptifnextchar}}^^A +% {\\@protected@testopt}^^A +% } +% \begin{macro}{\HyPsd@protected@testopt} +% Macros with optional arguments doesn't work properly, because +% they call \cmd{\@ifnextchar} to detect the optional argument +% (see the explanation of \cmd{\HyPsd@ifnextchar}). +% But a warning, that \cmd{\@ifnextchar} doesn't work, doesn't +% help the user very much. Therefore \cmd{\@protected@testopt} +% is also disabled, because its first argument is the problematic +% macro with the optional argument and it is called before +% \cmd{\@ifnextchar}. +% \begin{macrocode} +\def\HyPsd@protected@testopt#1{% + \pdfstringdefWarn#1% + \@gobbletwo +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Help macros for postprocessing} +% +% \subsubsection{Generic warning.} +% \begin{macro}{\HyPsd@Warning} +% For several reasons \cs{space} is masked and does not have its +% normal meaning. But it is used in warning messages, so it is +% redefined locally: +% \begin{macrocode} +\def\HyPsd@Warning#1{% + \begingroup + \let\space\ltx@space + \Hy@Warning{#1}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Protecting spaces} +% +% \begin{macrocode} +\RequirePackage{etexcmds}[2007/09/09] +\ifetex@unexpanded + \expandafter\@secondoftwo +\else + \expandafter\@firstoftwo +\fi +{% +% \end{macrocode} +% +% \begin{macro}{\HyPsd@ProtectSpaces} +% \cs{HyPsd@ProtectSpaces} calls with the expanded +% string \cs{HyPsd@@ProtectSpacesFi}. The expanded string is +% protected by \verb+|+ at the beginning and end of +% the expanded string. Because of this there can be no group +% at the beginning or end of the string and grouping characters +% are not removed by the call of \cs{HyPsd@@ProtectSpacesFi}. +% \begin{macrocode} + \def\HyPsd@ProtectSpaces#1{% + \iftrue + \expandafter\HyPsd@@ProtectSpacesFi + \expandafter|\expandafter\@empty#1| \HyPsd@End#1% + \fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@ProtectSpacesFi} +% The string can contain command tokens, so it is better +% to use an \cs{def} instead of an \cs{edef}. +% \begin{macrocode} + \def\HyPsd@@ProtectSpacesFi#1 #2\HyPsd@End#3\fi{% + \fi + \ifx\scrollmode#2\scrollmode + \HyPsd@RemoveMask#1\HyPsd@End#3% + \else + \gdef#3{#1\HyPsd@UnexpandableSpace#2}% + \expandafter\HyPsd@@ProtectSpacesFi#3\HyPsd@End#3% + \fi + }% +% \end{macrocode} +% \end{macro} +% +% \paragraph{Remove mask.} +% \begin{macro}{\HyPsd@RemoveMask} +% \cs{HyPsd@RemoveMask} removes the protecting \verb+|+. +% It is used by \cs{HyPsd@@ProtectSpacesFi} and by the code in +% \cs{pdfstringdef} that removes the grouping chararcters. +% \begin{macrocode} + \def\HyPsd@RemoveMask|#1|\HyPsd@End#2{% + \toks@\expandafter{#1}% + \xdef#2{\the\toks@}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +}{% + \let\HyPsd@fi\fi + \def\HyPsd@ProtectSpaces#1{% + \xdef#1{% + \iftrue + \expandafter\HyPsd@@ProtectSpacesFi + \expandafter|\expandafter\@empty#1| % + \HyPsd@fi + }% + \expandafter\HyPsd@RemoveMask#1\HyPsd@End#1% + }% + \def\HyPsd@@ProtectSpacesFi#1 #2\HyPsd@fi{% + \fi + \etex@unexpanded{#1}% + \ifx\scrollmode#2\scrollmode + \else + \HyPsd@@ProtectSpacesFi\HyPsd@UnexpandableSpace#2% + \HyPsd@fi + }% + \def\HyPsd@RemoveMask|#1|\HyPsd@End#2{% + \xdef#2{\etex@unexpanded\expandafter{#1}}% + }% +} +% \end{macrocode} +% +% \subsubsection{Remove grouping braces} +% \begin{macro}{\HyPsd@RemoveBraces} +% |#1| contains the expanded string, the result will +% be locally written in command \cs{HyPsd@String}. +% \begin{macrocode} +\def\HyPsd@RemoveBraces#1{% + \ifx\scrollmode#1\scrollmode + \else + \HyPsd@@RemoveBracesFi#1\HyPsd@End{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@RemoveBraces} +% \cs{HyPsd@@RemoveBraces} is called with the expanded string, +% the end marked by \cs{HyPsd@End}, the expanded string again, but +% enclosed in braces and the string command. The first expanded +% string is scanned by the parameter text |#1#2|. +% By a comparison with the original form in |#3| we can decide +% whether |#1| is a single token or a group. To avoid the +% case that |#2| is a group, the string is extended by a \verb+|+ +% before. +% +% While removing the grouping braces an italic correction +% marker is inserted for supporting package |xspace| and +% letting ligatures broken. +% +% Because the string is already expanded, the \cs{if} commands +% should disappeared. So we can move some parts out +% of the argument of \cs{ltx@ReturnAfterFi}. +% \begin{macrocode} +\def\HyPsd@@RemoveBracesFi#1#2\HyPsd@End#3\fi{% + \fi + \def\Hy@temp@A{#1#2}% + \def\Hy@temp@B{#3}% + \ifx\Hy@temp@A\Hy@temp@B + \expandafter\def\expandafter\HyPsd@String\expandafter{% + \HyPsd@String#1% + }% + \ifx\scrollmode#2\scrollmode + \else + \Hy@ReturnAfterFiFiEnd{% + \HyPsd@RemoveBraces{#2}% + }% + \fi + \else + \def\Hy@temp@A{#1}% + \HyPsd@AppendItalcorr\HyPsd@String + \ifx\Hy@temp@A\@empty + \Hy@ReturnAfterElseFiFiEnd{% + \HyPsd@RemoveBraces{#2}% + }% + \else + \HyPsd@ProtectSpaces\Hy@temp@A + \HyPsd@AppendItalcorr\Hy@temp@A + \Hy@ReturnAfterFiFiEnd{% + \expandafter\HyPsd@RemoveBraces\expandafter + {\Hy@temp@A#2}% + }% + \fi + \fi + \Hy@ReturnEnd +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@AppendItalcorr} +% \begin{macro}{\HyPsd@@AppendItalcorr} +% The string can contain commands yet, so it is better +% to use \cs{def} instead of a shorter \cs{edef}. +% The two help macros limit the count of \cs{expandafter}. +% \begin{macrocode} +\def\HyPsd@AppendItalcorr#1{% + \expandafter\HyPsd@@AppendItalcorr\expandafter{\/}#1% +} +\def\HyPsd@@AppendItalcorr#1#2{% + \expandafter\def\expandafter#2\expandafter{#2#1}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Catcode check} +% +% \paragraph{Workaround for LuaTeX.} +% \cs{HyPsd@CheckCatcodes} might trigger a bug +% of LuaTeX (0.60.2, 0.70.1, 0.70.2, ...) in the +% comparison with \cs{ifcat}, see +% \url{http://tracker.luatex.org/view.php?id=773}. +% \begin{macrocode} +\ltx@IfUndefined{directlua}{% +}{% + \expandafter\ifx\csname\endcsname\relax\fi +} +% \end{macrocode} +% +% \paragraph{Check catcodes.} +% \begin{macro}{\HyPsd@CheckCatcodes} +% Because \cs{ifcat} expands its arguments, this is +% prevented by \cs{noexpand}. In case of command tokens +% and active characters \cs{ifcat} now sees a \cs{relax}. +% After protecting spaces and removing braces |#1| should +% be a single token, no group of several tokens, nor an +% empty group. (So the \cs{expandafter}\cs{relax} between +% \cs{ifcat} and \cs{noexpand} is only for safety and +% it should be possible to remove it.) +% +% \cs{protect} and \cs{relax} should be removed silently. +% But it is too dangerous and breaks some code giving them +% the meaning of \cs{@empty}. So commands with the meaning +% of \cs{protect} are removed here. (\cs{protect} should +% have the meaning of \cs{@typeset@protect} that +% is equal to \cs{relax}). +% +% For the comparison with active characters, \texttt{\textasciitilde} +% cannot be used because it has the meaning of a blank space here. +% And active characters need to be checked, if they have been defined +% using \cs{protected}. +% \begin{macrocode} +\begingroup + \catcode`\Q=\active + \let Q\ltx@empty + \gdef\HyPsd@CheckCatcodes#1#2\HyPsd@End{% + \global\let\HyPsd@Rest\relax + \ifcat\relax\noexpand#1\relax + \ifx#1\protect + \else + \ifx#1\penalty + \setbox\z@=\hbox{% + \afterassignment\HyPsd@AfterCountRemove + \count@=#2\HyPsd@End + }% + \else + \ifx#1\kern + \setbox\z@=\hbox{% + \afterassignment\HyPsd@AfterDimenRemove + \dimen@=#2\HyPsd@End + }% + \else + \ifx#1\hskip + \setbox\z@=\hbox{% + \afterassignment\HyPsd@AfterSkipRemove + \skip@=#2\HyPsd@End + }% + \else + \HyPsd@CatcodeWarning{#1}% + \fi + \fi + \fi + \fi + \else + \ifcat\noexpand#1\noexpandQ% active character + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\HyPsd@String + \expandafter\expandafter\expandafter{% + \expandafter\HyPsd@String\string#1% + }% + \else + \ifcat#1A% letter + \expandafter\def\expandafter\HyPsd@String\expandafter{% + \HyPsd@String#1% + }% + \else + \ifcat#1 % SPACE + \expandafter\def\expandafter\HyPsd@String\expandafter{% + \HyPsd@String\HyPsd@SPACEOPTI + }% + \else + \ifcat$#1% + \HyPsd@CatcodeWarning{math shift}% + \else + \ifcat% + \HyPsd@CatcodeWarning{alignment tab}% + \else + \ifcat^#1% + \HyPsd@CatcodeWarning{superscript}% + \else + \ifcat_#1% + \HyPsd@CatcodeWarning{subscript}% + \else + \expandafter\def\expandafter\HyPsd@String\expandafter{% + \HyPsd@String#1% + }% + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \ifx\HyPsd@Rest\relax + \ifx\scrollmode#2\scrollmode + \else + \Hy@ReturnAfterFiFiEnd{% + \HyPsd@CheckCatcodes#2\HyPsd@End + }% + \fi + \else + \ifx\HyPsd@Rest\@empty + \else + \Hy@ReturnAfterFiFiEnd{% + \expandafter\HyPsd@CheckCatcodes\HyPsd@Rest\HyPsd@End + }% + \fi + \fi + \Hy@ReturnEnd + }% +\endgroup +% \end{macrocode} +% \end{macro} +% +% \paragraph{Remove counts, dimens, skips.} +% \begin{macro}{\HyPsd@AfterCountRemove} +% Counts like \cs{penalty} are removed silently. +% \begin{macrocode} +\def\HyPsd@AfterCountRemove#1\HyPsd@End{% + \gdef\HyPsd@Rest{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@AfterDimenRemove} +% If the value of the dimen (\cs{kern}) is zero, it can be +% removed silently. All other values are difficult to interpret. +% Negative values do not work in bookmarks. Should positive +% values be removed or should they be replaced by space(s)? +% The following code replaces positive values greater than +% |1ex| with a space and removes them else. +% \begin{macrocode} +\def\HyPsd@AfterDimenRemove#1\HyPsd@End{% + \ifdim\ifx\HyPsd@String\@empty\z@\else\dimen@\fi>1ex % + \HyPsd@ReplaceSpaceWarning{\string\kern\space\the\dimen@}% + \gdef\HyPsd@Rest{\HyPsd@UnexpandableSpace #1}% + \else + \ifdim\dimen@=\z@ + \else + \HyPsd@RemoveSpaceWarning{\string\kern\space\the\dimen@}% + \fi + \gdef\HyPsd@Rest{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@AfterSkipRemove} +% The glue part of skips do not work in PDF strings and are ignored. +% Skips (\cs{hskip}), that are not zero, have the same +% interpreting problems like dimens (see above). +% \begin{macrocode} +\def\HyPsd@AfterSkipRemove#1\HyPsd@End{% + \ifdim\ifx\HyPsd@String\@empty\z@\else\skip@\fi>1ex % + \HyPsd@ReplaceSpaceWarning{\string\hskip\space\the\skip@}% + \gdef\HyPsd@Rest{\HyPsd@UnexpandableSpace #1}% + \else + \ifdim\skip@=\z@ + \else + \HyPsd@RemoveSpaceWarning{\string\kern\space\the\skip@}% + \fi + \gdef\HyPsd@Rest{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Catcode warnings.} +% \begin{macro}{\HyPsd@CatcodeWarning} +% \cs{HyPsd@CatcodeWarning} produces a warning for the user. +% \begin{macrocode} +\def\HyPsd@CatcodeWarning#1{% + \HyPsd@Warning{% + Token not allowed in a PDF string (% + \ifHy@unicode + Unicode% + \else + PDFDocEncoding% + \fi + ):% + \MessageBreak removing `\HyPsd@RemoveCmdPrefix#1'% + }% +} +\begingroup + \catcode`\|=0 % + \catcode`\\=12 % +% \end{macrocode} +% \SpecialEscapechar{\|} +% \vspace{-2\MacrocodeTopsep} +% \vspace{-\parskip} +% \vspace{-\partopsep} +% \begin{macrocode} + |gdef|HyPsd@RemoveCmdPrefix#1{% + |expandafter|HyPsd@@RemoveCmdPrefix + |string#1|@empty\<>-|@empty|@empty + }% + |gdef|HyPsd@@RemoveCmdPrefix#1\<>-#2|@empty#3|@empty{#1#2}% +|endgroup +% \end{macrocode} +% \SpecialEscapechar{\\} +% \end{macro} +% \begin{macro}{\HyPsd@RemoveSpaceWarning} +% \begin{macrocode} +\def\HyPsd@RemoveSpaceWarning#1{% + \HyPsd@Warning{% + Token not allowed in a PDF string (% + \ifHy@unicode + Unicode% + \else + PDFDocEncoding% + \fi + ):% + \MessageBreak #1\MessageBreak + removed% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@ReplaceSpaceWarning} +% \begin{macrocode} +\def\HyPsd@ReplaceSpaceWarning#1{% + \HyPsd@Warning{% + Token not allowed in a PDF string (% + \ifHy@unicode + Unicode% + \else + PDFDocEncoding% + \fi + ):% + \MessageBreak #1\MessageBreak + replaced by space% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Check for wrong glyphs} +% A wrong glyph is marked with \cs{relax}, the glyph +% name follows, delimited by |>|. \cs{@empty} ends +% the string. +% \begin{macrocode} +\def\HyPsd@GlyphProcess#1\relax#2\@empty{% + \expandafter\def\expandafter\HyPsd@String\expandafter{% + \HyPsd@String#1% + }% + \ifx\\#2\\% + \else + \ltx@ReturnAfterFi{% + \HyPsd@GlyphProcessWarning#2\@empty + }% + \fi +} +\def\HyPsd@GlyphProcessWarning#1>#2\@empty{% + \HyPsd@@GlyphProcessWarning#1++>% + \HyPsd@GlyphProcess#2\@empty +} +\def\HyPsd@@GlyphProcessWarning#1+#2+#3>{% + \ifx\\#2\\% + \HyPsd@Warning{% + Glyph not defined in % + P\ifHy@unicode U\else D1\fi\space encoding,\MessageBreak + removing `\@backslashchar#1'% + }% + \else + \HyPsd@Warning{% + Composite letter `\@backslashchar#1+#2'\MessageBreak + not defined in P\ifHy@unicode U\else D1\fi\space encoding,% + \MessageBreak + removing `\@backslashchar#1'% + }% + \fi +} +% \end{macrocode} +% +% \paragraph{Spaces.} +% \begin{macro}{\HyPsd@spaceopti} +% In the string the spaces are represented by \cs{HyPsd@spaceopti} +% tokens. Within an \cs{edef} it prints itself as +% a simple space and looks for its next argument. +% If another space follows, so it replaces the next \cs{HyPsd@spaceopti} +% by an protected space \cs{040}. +% \begin{macrocode} +\def\HyPsd@spaceopti#1{ % first space + \ifx\HyPsd@spaceopti#1% + \040% + \else + #1% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Replacing tokens} +% \begin{macro}{\HyPsd@Subst} +% To save tokens \cs{HyPsd@StringSubst} is an wrapper for the +% command \cs{HyPsd@Subst} that does all the work: +% In string stored in command |#3| it replaces the tokens +% |#1| with |#2|.\\ +% \begin{tabular}{ll} +% |#1|& Exact the tokens that should be replaced.\\ +% |#2|& The replacement (don't need to be expanded).\\ +% |#3|& Command with the string. +% \end{tabular} +% \begin{macrocode} +\def\HyPsd@Subst#1#2#3{% + \def\HyPsd@@ReplaceFi##1#1##2\END\fi{% + \fi + ##1% + \ifx\scrollmode##2\scrollmode + \else + #2% + \HyPsd@@ReplaceFi##2\END + \fi + }% + \xdef#3{% + \iftrue + \expandafter\HyPsd@@ReplaceFi#3#1\END + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@StringSubst} +% To save tokens in \cs{pdfstringdef} \cs{HyPsd@StringSubst} is a wrapper, +% that expands argument |#1| before calling \cs{HyPsd@Subst}. +% \begin{macrocode} +\def\HyPsd@StringSubst#1{% + \expandafter\HyPsd@Subst\expandafter{\string#1}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPsd@EscapeTeX} +% \begin{macrocode} +\begingroup + \lccode`\!=`\%% + \lccode`\|=`\\% + \lccode`\(=`\{% + \lccode`\)=`\}% + \lccode`0=\ltx@zero + \lccode`1=\ltx@zero + \lccode`3=\ltx@zero + \lccode`4=\ltx@zero + \lccode`5=\ltx@zero + \lccode`7=\ltx@zero +\lowercase{\endgroup + \def\HyPsd@EscapeTeX#1{% + \HyPsd@Subst!{|045}#1% + \HyPsd@Subst({|173}#1% + \HyPsd@Subst){|175}#1% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Support for package \texttt{xspace}} +% \begin{macro}{\HyPsd@doxspace} +% \cs{xspace} does not work, because it uses a \cs{futurelet} +% that cannot be executed in \TeX's mouth. So this implementation +% uses an argument to examine the next token. In a previous version +% I reused \cs{@xspace}, but this version is shorter and easier +% to understand. +% \begin{macrocode} +\def\HyPsd@doxspace#1{% + \ifx#1\relax\else + \ifx#1.\else + \ifx#1:\else + \ifx#1,\else + \ifx#1;\else + \ifx#1!\else + \ifx#1?\else + \ifx#1/\else + \ifx#1-\else + \ifx#1'\else + \HyPsd@SPACEOPTI + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + #1% +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Converting to Unicode} +% Eight bit characters are converted to the sixteen bit ones, +% \cs{8} is replaced by \cs{00}, and \cs{9} is removed. +% The result should be a valid Unicode PDF string without the +% Unicode marker at the beginning. +% \begin{macrocode} +\begingroup + \catcode`\|=0 % + \catcode`\\=12 % +% \end{macrocode} +% \SpecialEscapechar{\|} +% \begin{macro}{\HyPsd@ConvertToUnicode} +% \begin{macrocode} + |gdef|HyPsd@ConvertToUnicode#1{% + |xdef#1{% + |expandafter|HyPsd@DoConvert#1|@empty|@empty|@empty + }% + |ifx#1|@empty + |else + |xdef#1{% + \376\377% + #1% + }% + |fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@DoConvert} +% \begin{macrocode} + |gdef|HyPsd@DoConvert#1{% + |ifx#1|@empty + |else + |ltx@ReturnAfterFi{% + |ifx#1\%% + \%% + |expandafter|HyPsd@DoEscape + |else + |HyPsd@Char{#1}% + |expandafter|HyPsd@DoConvert + |fi + }% + |fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@DoEscape} +% \begin{macrocode} + |gdef|HyPsd@DoEscape#1{% + |ifx#19% + |expandafter|HyPsd@GetTwoBytes + |else + |ltx@ReturnAfterFi{% + |ifx#18% + 00% + |expandafter|HyPsd@GetTwoBytes + |else + #1% + |expandafter|HyPsd@GetOneByte + |fi + }% + |fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@GetTwoBytes} +% \begin{macrocode} + |gdef|HyPsd@GetTwoBytes#1\#2#3#4{% + #1\#2#3#4% + |HyPsd@DoConvert + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@GetOneBye} +% \begin{macrocode} + |gdef|HyPsd@GetOneByte#1#2{% + #1#2% + |HyPsd@DoConvert + }% +|endgroup +% \end{macrocode} +% \end{macro} +% \SpecialEscapechar{\\} +% \begin{macro}{\HyPsd@@GetNextTwoTokens} +% \TeX{} does only allow nine parameters, so we need another macro +% to get more arguments. +% \begin{macrocode} +\def\HyPsd@GetNextTwoTokens#1#2#3\END#4{% + \xdef#4{#4#1#2}% + \HyPsd@@ConvertToUnicode#3\END#4% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@Char} +% \begin{macrocode} +\begingroup + \catcode0=9 % + \catcode`\^=7 % + \catcode`\^^^=12 % + \def\x{^^^^0000}% +\expandafter\endgroup +\ifx\x\@empty + \def\HyPsd@Char#1{% + \ifnum`#1<128 % + \@backslashchar 000#1% + \else + \ifnum`#1<65536 % + \expandafter\HyPsd@CharTwoByte\number`#1!% + \else + \expandafter\expandafter\expandafter\HyPsd@CharSurrogate + \intcalcSub{`#1}{65536}!% + \fi + \fi + }% + \def\HyPsd@CharTwoByte#1!{% + \expandafter\expandafter\expandafter\HyPsd@CharOctByte + \IntCalcDiv#1!256!!% + \expandafter\expandafter\expandafter\HyPsd@CharOctByte + \IntCalcMod#1!256!!% + }% + \def\HyPsd@CharOctByte#1!{% + \@backslashchar + \IntCalcDiv#1!64!% + \intcalcDiv{\IntCalcMod#1!64!}{8}% + \IntCalcMod#1!8!% + }% + \def\HyPsd@CharSurrogate#1!{% + \@backslashchar 33% + \IntCalcDiv#1!262144!% + \expandafter\expandafter\expandafter\HyPsd@CharOctByte + \intcalcDiv{\IntCalcMod#1!262144!}{1024}!% + \@backslashchar 33% + \expandafter\expandafter\expandafter\IntCalcAdd + \intcalcDiv{\IntCalcMod#1!1024!}{256}!4!% + \expandafter\expandafter\expandafter\HyPsd@CharOctByte + \IntCalcMod#1!256!!% + }% +\else + \def\HyPsd@Char#1{% + \@backslashchar 000#1% + }% +\fi +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Support for UTF-8 input encoding} +% +% After |\usepackage[utf8]{inputenc}| there are macros that +% expect the UTF-8 octets as arguments. Therefore we can +% calculate the PDF octal sequences directly. Because the +% PDF format is limited to UCS-2, conversion macros are +% needed for UTF-8 sequences with two and three octets only. +% +% This calculation must be done in an expandable context, +% so we use e\TeX here for performance reasons. Unhappily +% the results of divisions are rounded. Thus a +% circumvention via |\dimexpr| is used, e.g.: +% \begin{quote} +% |\numexpr 123/4\relax| is replaced by\\ +% |\number\dimexpr.25\dimexpr 123sp\relax\relax| +% \end{quote} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname numexpr\endcsname\relax + \let\HyPsd@UTFviii\relax +\else + \begingroup + \lccode`\~=`^^f4\relax + \lowercase{\endgroup + \def\HyPsd@UTFviii{% + \let\UTFviii@two@octets\HyPsd@UTFviii@two + \let\UTFviii@three@octets\HyPsd@UTFviii@three + \let\UTFviii@four@octets\HyPsd@UTFviii@four + \ifx~\HyPsd@UTFviii@ccxliv@undef + \let~\HyPsd@UTFviii@ccxliv@def + \fi + \let\unichar\HyPsd@unichar + }% + }% + \def\HyPsd@UTFviii@ccxliv@undef{\@inpenc@undefined@{utf8}}% + \edef\HyPsd@UTFviii@ccxliv@def{% + \noexpand\UTFviii@four@octets\string ^^f4% + }% +% \end{macrocode} +% +% The two octet form of UTF-8 |110aaabb| (A) and |10cccddd| (B) +% must be converted into octal numbers |00a| and |bcd|. The +% result is |\8a\bcd| (with a, b, c, d as octal numbers). +% The conversion equations. +% \begin{eqnarray} +% a &:= A/4 - 48\\ +% b &:= A - 4*(A/4)\\ +% c &:= B/8 - 8*((8*(B/8))/8)\\ +% d &:= B - 8*(B/8)\\ +% \end{eqnarray} +% ^^A #1 = A/4 #2 = A +% ^^A #3 = B/8 #4 = B +% \begin{macrocode} + \def\HyPsd@UTFviii@two#1#2{% + \expandafter\HyPsd@UTFviii@@two + \number\dimexpr.25\dimexpr`#1sp\expandafter\relax\expandafter|% + \number`#1\expandafter|% + \number\dimexpr.125\dimexpr`#2sp\expandafter\relax\expandafter|% + \number`#2 \@nil + }% + \def\HyPsd@UTFviii@@two#1|#2|#3|#4\@nil{% + \expandafter\8% + \number\numexpr #1-48\expandafter\relax + \csname\number\numexpr #2-4*#1\relax\expandafter\endcsname + \number\numexpr #3-8*% + \number\dimexpr.125\dimexpr#3sp\relax\relax\expandafter\relax + \number\numexpr #4-8*#3\relax + }% +% \end{macrocode} +% +% Three octet form: |1110aabb| (A), |10bcccdd| (B), and |10eeefff| +% (C). The result is |\9abc\def| (with a, \dots, f as octal numbers). +% The conversion equations: +% \begin{eqnarray} +% a &:= A/4 - 56\\ +% b &:= 2*(A - 4*(A/4)) + ((B-128 < 32) ? 0 : 1)\\ +% c &:= B/4 - 32 - ((B-128 < 32) ? 0 : 8)\\ +% d &:= B - 4*(B/4)\\ +% e &:= C/8 - 16\\ +% f &:= C - 8*(C/8)\\ +% \end{eqnarray} +% ^^A #1 = A/4 #2 = A +% ^^A #3 = (B-128 < 32) ? 0 : 1 +% ^^A #4 = B/4 #5 = B +% ^^A #6 = C/8 #7 = C +% \begin{macrocode} + \def\HyPsd@UTFviii@three#1#2#3{% + \expandafter\HyPsd@UTFviii@@three + \number\dimexpr.25\dimexpr`#1sp\expandafter\relax\expandafter|% + \number`#1\expandafter|% + \number\ifnum\numexpr`#2-128\relax <32 0\else 1\fi\expandafter|% + \number\dimexpr.25\dimexpr`#2sp\expandafter\relax\expandafter|% + \number`#2\expandafter|% + \number\dimexpr.125\dimexpr`#3sp\expandafter\relax\expandafter|% + \number`#3 \@nil + }% + \def\HyPsd@UTFviii@@three#1|#2|#3|#4|#5|#6|#7\@nil{% + \expandafter\9% + \number\numexpr #1-56\expandafter\relax + \number\numexpr 2*(#2-4*#1)+#3\expandafter\relax + \number\numexpr #4 - 32 -\ifcase#3 0\else 8\fi\expandafter\relax + \csname\number\numexpr #5-4*#4\relax\expandafter\endcsname + \number\numexpr #6-16\expandafter\relax + \number\numexpr #7-8*#6\relax + }% +% \end{macrocode} +% +% Surrogates: 4 octets in UTF-8, a surrogate pair in UTF-16. +% High surrogate range: U+D800--U+DBFF, low surrogate range: +% U+DC00-U+DFFF. +% +%\begin{quote} +%\begin{verbatim} +%UTF-8: 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx +%wwww = uuuuu - 1 +%UTF-16: 110110ww wwzzzzyy 110111yy yyxxxxxx +%octal: 011 011 0ww 0ww zzz zyy 011 011 1yy 0yy xxx xxx +%\end{verbatim} +%\end{quote} +% \begin{macrocode} + \def\HyPsd@UTFviii@four#1#2{% + \expandafter\HyPsd@@UTFviii@four\number + \numexpr-1+(`#1-240)*4+\dimexpr.0625\dimexpr`#2sp-128sp% + \expandafter|\number + \numexpr`#2-16*\dimexpr.0625\dimexpr`#2sp|% + }% + \def\HyPsd@@UTFviii@four#1|#2|#3{% + \933\number\dimexpr.25\dimexpr#1sp\relax\relax + \csname\number\numexpr#1-4*\dimexpr.25\dimexpr#1sp\endcsname + \ifodd#2 % + \number\numexpr(#2-1)/2\relax + \else + \number\numexpr#2/2\relax + \fi + \number\numexpr\ifodd#2 4+\fi + \dimexpr.0625\dimexpr`#3sp-128sp\relax\relax\relax + \933% + \expandafter\HyPsd@@@UTFviii@four\number + \numexpr`#3-16*\dimexpr.0625\dimexpr`#3sp|% + }% + \def\HyPsd@@@UTFviii@four#1|#2{% + \number\numexpr4+\dimexpr.25\dimexpr#1sp\relax\relax\relax + \csname\number\numexpr#1-4*\dimexpr.25\dimexpr#1sp\endcsname + \number\dimexpr.125\dimexpr`#2sp-128sp\relax\relax + \number\numexpr`#2-8*\dimexpr.125\dimexpr`#2sp\relax\relax\relax + }% +% \end{macrocode} +% +% Input encoding |utf8x| of package |ucs| uses macro \cmd{\unichar}. +% Values greater than |"FFFF| are not supported. +% \begin{macrocode} + \def\HyPsd@unichar#1{% + \ifHy@unicode + \ifnum#1>"10FFFF % + \HyPsd@UnicodeReplacementCharacter % illegal + \else + \ifnum#1>"FFFF % +% \end{macrocode} +% High-surrogate code point. +% (|"D800| = |55296|, |\p@| = |1pt| = |65536sp|) +% \begin{macrocode} + \expandafter\HyPsd@unichar\expandafter{% + \number\numexpr 55296+% + \dimexpr.0009765625\dimexpr\number#1sp-\p@ + \relax\relax\relax + }% +% \end{macrocode} +% Low-surrogate code point. +% (|"DC00| = 56320, |"DC00| - |65536| = |-9216|) +% \begin{macrocode} + \expandafter\HyPsd@unichar\expandafter{% + \number\numexpr#1-9216% + -1024*\dimexpr.0009765625\dimexpr\number#1sp-\p@ + \relax\relax\relax + }% + \else + \ifnum#1>"7FF % + \9% + \expandafter\HyPsd@unichar@first@byte\expandafter{% + \number + \dimexpr.00390625\dimexpr\number#1sp\relax\relax + }% + \else + \8% + \number\dimexpr.00390625\dimexpr\number#1sp\relax\relax + \fi + \expandafter\HyPsd@unichar@second@byte\expandafter{% + \number + \numexpr#1-256*\number + \dimexpr.00390625\dimexpr\number#1sp\relax\relax\relax + }% + \fi + \fi + \else + .% unsupported (Unicode -> PDF Doc Encoding) + \fi + }% + \def\HyPsd@UnicodeReplacementCharacter{\9377\375}% + \def\HyPsd@unichar@first@byte#1{% + \number\dimexpr.015625\dimexpr#1sp\relax\relax + \expandafter\HyPsd@unichar@octtwo\expandafter{% + \number + \numexpr#1-64*\number\dimexpr.015625\dimexpr#1sp% + \relax\relax\relax + }% + }% + \def\HyPsd@unichar@second@byte#1{% + \csname\number\dimexpr.015625\dimexpr#1sp\relax\relax\endcsname + \expandafter\HyPsd@unichar@octtwo\expandafter{% + \number + \numexpr#1-64*\number\dimexpr.015625\dimexpr#1sp% + \relax\relax\relax + }% + }% + \def\HyPsd@unichar@octtwo#1{% + \number\dimexpr.125\dimexpr#1sp\relax\relax + \number\numexpr#1-8*\number\dimexpr.125\dimexpr#1sp% + \relax\relax\relax + }% +% \end{macrocode} +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \begin{macro}{\HyPsd@utf@viii@undeferr} +% \cs{utf@viii@undeferr} comes from file |utf8x.def| from +% package |ucs|. +% \begin{macrocode} +\def\HyPsd@utf@viii@undeferr#1#2#3#4#5#6{% + \ifx\@gobble#1% + \else + [Please insert \textbackslash PrerenderUnicode% + \textbraceleft#1\textbraceright\space + into preamble]% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Support for die faces (ifsym et. al.)} +% +% \begin{macro}{\HyPsd@DieFace} +% Die faces are provided by +% \begin{quote} +% \begin{tabular}{@{}ll@{}} +% Package & Macro\\ +% \hline +% ifsym & \cs{Cube}\\ +% epsdice & \cs{epsdice}\\ +% hhcount & \cs{fcdice} +% \end{tabular} +% \end{quote} +% \cs{Cube} and \cs{epsdice} restrict the range to the +% numbers one to six. \cs{fcdice} generates for larger numbers +% several dice faces with the sum matching the number. +% The implementation for the PDF strings follows \cs{fcdice}. +% \begin{macrocode} +\def\HyPsd@DieFace#1{% + \ifHy@unicode + \ifnum#1<1 % + \HyPsd@UnicodeReplacementCharacter + \else + \ifnum#1>6 % + \9046\205% + \expandafter\expandafter\expandafter + \HyPsd@DieFaceLarge\intcalcSub{#1}{6}!% + \else + \9046\20\intcalcDec{#1}% + \fi + \fi + \else + .% Die faces are not part of PDFDocEncoding + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@DieFaceLarge} +% \begin{macrocode} +\def\HyPsd@DieFaceLarge#1!{% + \ifnum#1>6 % + \expandafter\ltx@firstoftwo + \else + \expandafter\ltx@secondoftwo + \fi + {% + \9046\205% + \expandafter\expandafter\expandafter + \HyPsd@DieFaceLarge\IntCalcSub#1!6!!% + }{% + \9046\20\IntCalcDec#1!% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Support for moon phases of package china2e} +% +% \begin{macrocode} +\def\HyPsd@MoonPha#1{% + \ifcase\intcalcNum{#1} % + \HyPsd@UnicodeReplacementCharacter + \or % 1 +% U+1F31A NEW MOON WITH FACE; \MoonPha{1} (china2e) + \9330\074\9337\032% + \or % 2 + \HyPsd@UnicodeReplacementCharacter + \or % 3 +% U+1F31D FULL MOON WITH FACE; \MoonPha{3} (china2e) + \9330\074\9337\035% + \or % 4 +% U+1F31C LAST QUARTER MOON WITH FACE; \MoonPha{4} (china2e) + \9330\074\9337\034% + \else + \HyPsd@UnicodeReplacementCharacter + \fi +} +%* \HyPsd@MoonPha -> \MoonPha +% \end{macrocode} +% +% \subsubsection{Support for package pifont} +% +% \begin{macro}{\HyPsd@ding} +% \begin{macrocode} +\def\HyPsd@ding#1{% + \ifHy@unicode + \ifnum#1<32 % + \HyPsd@UnicodeReplacementCharacter + \else + \ifnum#1>254 % + \HyPsd@UnicodeReplacementCharacter + \else + \ifnum#1<127 % + \expandafter\expandafter\expandafter + \HyPsd@@ding\intcalcNum{#1}!% + \else + \ifnum#1>160 % + \expandafter\expandafter\expandafter + \HyPsd@@ding\intcalcNum{#1}!% + \else + \HyPsd@UnicodeReplacementCharacter + \fi + \fi + \fi + \fi + \else + .% Dingbats are not part of PDFDocEncoding + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPsd@@ding} +% \begin{macrocode} +\def\HyPsd@@ding#1!{% + \ltx@ifundefined{HyPsd@ding@#1}{% + \ifnum#1<127 % + \9047% + \HyPsd@DecimalToOctalSecond{\IntCalcSub#1!32!}% + \else + \ifnum#1<168 % + \9047\14\IntCalcSub#1!160!% + \else + \ifnum#1>181 % + \9047\HyPsd@DecimalToOctalSecond{\IntCalcSub#1!64!}% + \else + % 172..181 -> U+2460..U+2469 + \9044\HyPsd@DecimalToOctalSecond{\IntCalcSub#1!76!}% + \fi + \fi + \fi + }{% + \csname HyPsd@ding@#1\endcsname + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\@namedef{HyPsd@ding@32}{\space} +% U+260E BLACK TELEPHONE +\@namedef{HyPsd@ding@37}{\9046\016}% U+260E +% U+261B BLACK RIGHT POINTING INDEX +\@namedef{HyPsd@ding@42}{\9046\033}% U+261B +% U+261E WHITE RIGHT POINTING INDEX +\@namedef{HyPsd@ding@43}{\9046\036}% U+261E +% U+2605 BLACK STAR +\@namedef{HyPsd@ding@72}{\9046\005}% U+2605 +% U+25CF BLACK CIRCLE +\@namedef{HyPsd@ding@108}{\9045\317}% U+25CF +% U+25A0 BLACK SQUARE +\@namedef{HyPsd@ding@110}{\9045\240}% U+25A0 +% U+25B2 BLACK UP-POINTING TRIANGLE +\@namedef{HyPsd@ding@115}{\9045\262}% U+25B2 +% U+25BC BLACK DOWN-POINTING TRIANGLE +\@namedef{HyPsd@ding@116}{\9045\274}% U+25BC +% U+25C6 BLACK DIAMOND +\@namedef{HyPsd@ding@117}{\9045\306}% U+25C6 +% U+25D7 RIGHT HALF BLACK CIRCLE +\@namedef{HyPsd@ding@119}{\9045\327}% U+25D7 +\@namedef{HyPsd@ding@168}{\textclubsuitblack}% +\@namedef{HyPsd@ding@169}{\textdiamondsuitblack}% +\@namedef{HyPsd@ding@170}{\textheartsuitblack}% +\@namedef{HyPsd@ding@171}{\textspadesuitblack}% +\@namedef{HyPsd@ding@213}{\textrightarrow}% +\@namedef{HyPsd@ding@214}{\textleftrightarrow}% +\@namedef{HyPsd@ding@215}{\textupdownarrow}% +\@namedef{HyPsd@ding@240}{\HyPsd@UnicodeReplacementCharacter} +% \end{macrocode} +% +% \section{Support of other packages} +% +% \subsection{Class memoir} +% +% \begin{macrocode} +\@ifclassloaded{memoir}{% + \Hy@AtEndOfPackage{\RequirePackage{memhfixc}}% +}{} +% \end{macrocode} +% +% \subsection{Package subfigure} +% Added fix for version 2.1. Here \cmd{\sub@label} is defined. +% \begin{macrocode} +\@ifpackageloaded{subfigure}{% + \ltx@IfUndefined{sub@label}{% + \Hy@hypertexnamesfalse + }{% + \renewcommand*{\sub@label}[1]{% + \@bsphack + \subfig@oldlabel{#1}% + \if@filesw + \begingroup + \edef\@currentlabstr{% + \expandafter\strip@prefix\meaning\@currentlabelname + }% + \protected@write\@auxout{}{% + \string\newlabel{sub@#1}{% + {\@nameuse{@@thesub\@captype}}% + {\thepage}% + {% + \expandafter\strip@period\@currentlabstr + \relax.\relax\@@@% + }% + {\@currentHref}% + {}% + }% + }% + \endgroup + \fi + \@esphack + }% + \@ifpackagelater{subfigure}{2002/03/26}{}{% + \providecommand*{\toclevel@subfigure}{1}% + \providecommand*{\toclevel@subtable}{1}% + }% + }% +}{} +% \end{macrocode} +% +% \subsection{Package xr and xr-hyper} +% The beta version of xr that supports \cmd{\XR@addURL} is called +% \verb|xr-hyper|. Therefore we test for the macro itself and not +% for the package name: +% \begin{macrocode} +\ltx@IfUndefined{XR@addURL}{% +}{% +% \end{macrocode} +% If reading external aux files check whether they have a non zero +% fourth field in |\newlabel| and if so, add the URL as the fifth field. +% \begin{macrocode} + \def\XR@addURL#1{\XR@@dURL#1{}{}{}{}\\}% + \def\XR@@dURL#1#2#3#4#5\\{% + {#1}{#2}% + \if!#4!% + \else + {#3}{#4}{\XR@URL}% + \fi + }% +} +% \end{macrocode} +% +% \begin{macrocode} +\def\Hy@true{true} +\def\Hy@false{false} +% \end{macrocode} +% +% Providing dummy definitions. +% \begin{macrocode} +\let\literalps@out\@gobble +\newcommand\pdfbookmark[3][]{} +\def\Acrobatmenu#1#2{\leavevmode#2} +\def\Hy@writebookmark#1#2#3#4#5{}% +% \end{macrocode} +% +% \section{Help macros for links} +% Anchors get created on the baseline of where they occur. If an +% XYZ PDF view is set, this means that the link places the top of the +% screen \emph{on the baseline} of the target. If this is an equation, +% for instance, it means that you cannot see anything. Some links, of +% course, are created at the start of environments, and so it works. To +% allow for this, anchors are raised, where possible, by some small +% amount. This defaults to |\baselineskip|, but users can set it to +% something else in two ways (thanks to Heiko Oberdiek for suggesting this): +% \begin{enumerate} +% \item Redefine |\HyperRaiseLinkDefault| to be eg the height of a |\strut| +% \item Redefine |\HyperRaiseLinkHook| to do something complicated; +% it must give a value to |\HyperRaiseLinkLength|, which is what +% actually gets used +% \end{enumerate} +% \begin{macrocode} +\let\HyperRaiseLinkHook\@empty +\def\HyperRaiseLinkDefault{\baselineskip} +% \end{macrocode} +% |\HyperRaiseLinkHook| allows the user to reassign +% |\HyperRaiseLinkLength|. +% \begin{macrocode} +\newcount\Hy@SavedSpaceFactor +\def\Hy@SaveSpaceFactor{% + \global\Hy@SavedSpaceFactor=\ifhmode\spacefactor\else\z@\fi +} +\def\Hy@RestoreSpaceFactor{% + \relax + \ifhmode + \ifnum\Hy@SavedSpaceFactor>\z@ + \spacefactor=\Hy@SavedSpaceFactor + \fi + \fi +} +\def\Hy@SaveSavedSpaceFactor{% + \edef\Hy@RestoreSavedSpaceFactor{% + \global\Hy@SavedSpaceFactor=\the\Hy@SavedSpaceFactor\relax + }% +} +\def\Hy@raisedlink#1{% + \ifvmode + #1% + \else + \Hy@SaveSpaceFactor + \penalty\@M + \smash{% + \begingroup + \let\HyperRaiseLinkLength\@tempdima + \setlength\HyperRaiseLinkLength\HyperRaiseLinkDefault + \HyperRaiseLinkHook + \expandafter\endgroup + \expandafter\raise\the\HyperRaiseLinkLength\hbox{% + \Hy@RestoreSpaceFactor + #1% + \Hy@SaveSpaceFactor + }% + }% + \Hy@RestoreSpaceFactor + \fi +} +% \end{macrocode} +% +% \begin{macro}{\Hy@SaveLastskip} +% \begin{macro}{\Hy@RestoreLastskip} +% Inserting a \cmd{\special} command to set a +% destination destroys the \cmd{\lastskip} value. +% +% \begin{macrocode} +\def\Hy@SaveLastskip{% + \let\Hy@RestoreLastskip\relax + \ifvmode + \ifdim\lastskip=\z@ + \let\Hy@RestoreLastskip\nobreak + \else + \begingroup + \skip@=-\lastskip + \edef\x{% + \endgroup + \def\noexpand\Hy@RestoreLastskip{% + \noexpand\ifvmode + \noexpand\nobreak + \vskip\the\skip@ + \vskip\the\lastskip\relax + \noexpand\fi + }% + }% + \x + \fi + \else + \ifhmode + \ifdim\lastskip=\z@ + \let\Hy@RestoreLastskip\nobreak + \else + \begingroup + \skip@=-\lastskip + \edef\x{% + \endgroup + \def\noexpand\Hy@RestoreLastskip{% + \noexpand\ifhmode + \noexpand\nobreak + \hskip\the\skip@ + \hskip\the\lastskip\relax + \noexpand\fi + }% + }% + \x + \fi + \fi + \fi +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Options} +% +% \begin{macrocode} +\SetupKeyvalOptions{% + family=Hyp,% + prefix=HyOpt% +} +% \end{macrocode} +% +% \subsection{Help macros} +% +% \begin{macro}{\IfHyperBooleanExists} +% \begin{macrocode} +\def\IfHyperBooleanExists#1{% + \ltx@ifundefined{Hy@#1false}\ltx@secondoftwo{% + \ltx@ifundefined{KV@Hyp@#1@default}\ltx@secondoftwo\ltx@firstoftwo + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\@namedef{KV@Hyp@stoppedearly@default}{} +% \end{macrocode} +% +% \begin{macro}{\IfHyperBoolean} +% \begin{macrocode} +\def\IfHyperBoolean#1{% + \IfHyperBooleanExists{#1}{% + \csname ifHy@#1\endcsname + \expandafter\ltx@firstoftwo + \else + \expandafter\ltx@secondoftwo + \fi + }\ltx@secondoftwo +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hy@boolkey} +% \begin{macrocode} +\def\Hy@boolkey#1#2{% + \edef\Hy@tempa{#2}% + \lowercase\expandafter{% + \expandafter\def\expandafter\Hy@tempa\expandafter{\Hy@tempa}% + }% + \ifx\Hy@tempa\@empty + \let\Hy@tempa\Hy@true + \fi + \ifx\Hy@tempa\Hy@true + \else + \ifx\Hy@tempa\Hy@false + \else + \let\Hy@tempa\relax + \fi + \fi + \ifx\Hy@tempa\relax + \Hy@WarnOptionValue{#2}{#1}{`true' or 'false'}% + \else + \Hy@Info{Option `#1' set `\Hy@tempa'}% + \csname Hy@#1\Hy@tempa\endcsname + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@WarnOptionValue} +% \begin{macrocode} +\def\Hy@WarnOptionValue#1#2#3{% + \Hy@Warning{% + Unexpected value `#1'\MessageBreak + of option `#2' instead of\MessageBreak + #3% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hy@DisableOption} +% \begin{macrocode} +\def\Hy@realDisableOption#1{% + \ltx@ifundefined{KV@Hyp@#1@default}{% + \define@key{Hyp}{#1}% + }{% + \define@key{Hyp}{#1}[]% + }% + {\Hy@WarnOptionDisabled{#1}}% +} + +\def\Hy@DisableOption#1{% + \ifnum\currentgrouplevel>0 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \expandafter\gdef\csname Hy@smuggleout#1\endcsname{\Hy@DisableOption{#1}}% + \expandafter\aftergroup\csname Hy@smuggleout#1\endcsname + } + {\Hy@realDisableOption{#1}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hy@WarnOptionDisabled} +% \begin{macrocode} +\def\Hy@WarnOptionDisabled#1{% + \Hy@Warning{% + Option `#1' has already been used,\MessageBreak + setting the option has no effect% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hy@CheckOptionValue} +% Some options take a string value out of a limited set of values. +% Macro \cs{Hy@CheckOptionValue} checks whether the given value |#1| +% for option |#2| is a member of the value list |#3|. +% \begin{macrocode} +\def\Hy@CheckOptionValue#1#2#3{% + \begingroup + \edef\x{#1}% + \@onelevel@sanitize\x + \let\y=y% + \def\do##1##2{% + \def\z{##1}% + \@onelevel@sanitize\z + \ifx\x\z + \let\y=n% + \let\do\@gobbletwo + \fi + }% + #3% + \ifx\y y% + \def\do##1##2{% + * `##1'% + \ifx\\##2\\\else\space(##2)\fi + \MessageBreak + }% + \Hy@Warning{% + Values of option `#2':\MessageBreak + #3% + * An empty value disables the option.\MessageBreak + Unknown value `\x'% + }% + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hy@DefNameKey} +% \noindent +% |#1|: option name\\ +% |#2|: \cs{do} list with known values, first +% argument of \cs{do} is value, second argument is a comment. +% \begin{macrocode} +\def\Hy@DefNameKey#1{% + \expandafter\Hy@@DefNameKey\csname @#1\endcsname{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@@DefNameKey} +% \noindent +% |#1|: macro for value storage\\ +% |#2|: option name\\ +% |#3|: \cs{do} list with known values. +% \begin{macrocode} +\def\Hy@@DefNameKey#1#2#3{% + \define@key{Hyp}{#2}{% + \edef#1{##1}% + \ifx#1\@empty + \else + \Hy@CheckOptionValue{##1}{#2}{#3}% + \fi + }% + \let#1\@empty +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@UseNameKey} +% \begin{macrocode} +\def\Hy@UseNameKey#1#2{% + \ifx#2\@empty + \else + /#1/#2% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Defining the options} +% \begin{macrocode} +\define@key{Hyp}{implicit}[true]{% + \Hy@boolkey{implicit}{#1}% +} +\define@key{Hyp}{draft}[true]{% + \Hy@boolkey{draft}{#1}% +} +\define@key{Hyp}{final}[true]{% + \Hy@boolkey{final}{#1}% +} +\let\KV@Hyp@nolinks\KV@Hyp@draft +% \end{macrocode} +% \begin{macrocode} +\def\Hy@ObsoletePaperOption#1{% + \Hy@WarningNoLine{% + Option `#1' is no longer used% + }% + \define@key{Hyp}{#1}[true]{}% +} +\def\Hy@temp#1{% + \define@key{Hyp}{#1}[true]{% + \Hy@ObsoletePaperOption{#1}% + }% +} +\Hy@temp{a4paper} +\Hy@temp{a5paper} +\Hy@temp{b5paper} +\Hy@temp{letterpaper} +\Hy@temp{legalpaper} +\Hy@temp{executivepaper} +% \end{macrocode} +% \begin{macrocode} +\define@key{Hyp}{setpagesize}[true]{% + \Hy@boolkey{setpagesize}{#1}% +} +\define@key{Hyp}{debug}[true]{% + \Hy@boolkey{debug}{#1}% +} +\define@key{Hyp}{linktocpage}[true]{% + \Hy@boolkey{linktocpage}{#1}% + \ifHy@linktocpage + \let\Hy@linktoc\Hy@linktoc@page + \else + \let\Hy@linktoc\Hy@linktoc@section + \fi +} +\chardef\Hy@linktoc@none=0 % +\chardef\Hy@linktoc@section=1 % +\chardef\Hy@linktoc@page=2 % +\chardef\Hy@linktoc@all=3 % +\ifHy@linktocpage + \let\Hy@linktoc\Hy@linktoc@page +\else + \let\Hy@linktoc\Hy@linktoc@section +\fi +\define@key{Hyp}{linktoc}{% + \@ifundefined{Hy@linktoc@#1}{% + \Hy@Warning{% + Unexpected value `#1' of\MessageBreak + option `linktoc' instead of `none',\MessageBreak + `section', `page' or `all'% + }% + }{% + \expandafter\let\expandafter\Hy@linktoc + \csname Hy@linktoc@#1\endcsname + }% +} +\define@key{Hyp}{extension}{\def\XR@ext{#1}} +\let\XR@ext\relax +\define@key{Hyp}{verbose}[true]{% + \Hy@boolkey{verbose}{#1}% +} +\define@key{Hyp}{typexml}[true]{% + \Hy@boolkey{typexml}{#1}% +} +% \end{macrocode} +% If we are going to PDF via HyperTeX |\special| commands, +% the dvips (-z option) processor does not know +% the \emph{height} of a link, as it works solely on the +% position of the closing |\special|. If we use this option, +% the |\special| is raised up by the right amount, to fool +% the dvi processor. +% \begin{macrocode} +\define@key{Hyp}{raiselinks}[true]{% + \Hy@boolkey{raiselinks}{#1}% +} +% \end{macrocode} +% Most PDF-creating drivers do not allow links to be broken +% \begin{macrocode} +\def\Hy@setbreaklinks#1{% + \csname breaklinks#1\endcsname +} +% \end{macrocode} +% \begin{macrocode} +\def\Hy@breaklinks@unsupported{% + \ifx\Hy@setbreaklinks\@gobble + \ifHy@breaklinks + \Hy@WarningNoLine{% + You have enabled option `breaklinks'.\MessageBreak + But driver `\Hy@driver.def' does not suppport this.\MessageBreak + Expect trouble with the link areas of broken links% + }% + \fi + \fi +} +% \end{macrocode} +% \begin{macrocode} +\define@key{Hyp}{breaklinks}[true]{% + \Hy@boolkey{breaklinks}{#1}% + \let\Hy@setbreaklinks\@gobble +} +% \end{macrocode} +% \begin{macrocode} +\define@key{Hyp}{localanchorname}[true]{% + \Hy@boolkey{localanchorname}{#1}% +} +% \end{macrocode} +% Determines whether an automatic anchor is put on each page +% \begin{macrocode} +\define@key{Hyp}{pageanchor}[true]{% + \Hy@boolkey{pageanchor}{#1}% +} +% \end{macrocode} +% Are the page links done as plain arabic numbers, or do +% they follow the formatting of the package? The latter loses +% if you put in typesetting like |\textbf| or the like. +% \begin{macrocode} +\define@key{Hyp}{plainpages}[true]{% + \Hy@boolkey{plainpages}{#1}% +} +% \end{macrocode} +% Are the names for anchors made as per the HyperTeX system, +% or do they simply use what \LaTeX\ provides? +% \begin{macrocode} +\define@key{Hyp}{naturalnames}[true]{% + \Hy@boolkey{naturalnames}{#1}% +} +% \end{macrocode} +% Completely ignore the names as per the HyperTeX system, +% and use unique counters. +% \begin{macrocode} +\define@key{Hyp}{hypertexnames}[true]{% + \Hy@boolkey{hypertexnames}{#1}% +} +% \end{macrocode} +% Currently, |dvips| doesn't allow anchors nested within targets, +% so this option tries to stop that happening. Other processors +% may be able to cope. +% \begin{macrocode} +\define@key{Hyp}{nesting}[true]{% + \Hy@boolkey{nesting}{#1}% +} +% \end{macrocode} +% \begin{macrocode} +\define@key{Hyp}{destlabel}[true]{% + \Hy@boolkey{destlabel}{#1}% +} +% \end{macrocode} +% +% \begin{macrocode} +\define@key{Hyp}{unicode}[true]{% + \Hy@boolkey{unicode}{#1}% + \ifHy@unicode + \def\HyPsd@pdfencoding{unicode}% + \HyPsd@LoadUnicode + \else + \def\HyPsd@pdfencoding{pdfdoc}% + \fi +} +\Hy@AtBeginDocument{% + \ifx\HyPsd@LoadUnicode\relax + \else + \def\HyPsd@LoadUnicode{% + \Hy@Error{% + Unicode support for bookmarks is not available.\MessageBreak + Activate unicode support by using one of the options\MessageBreak + `unicode', `pdfencoding=unicode', `pdfencoding=auto'\MessageBreak + in the preamble% + }\@ehc + \global\let\HyPsd@LoadUnicode\relax + \global\Hy@unicodefalse + \global\let\Hy@unicodetrue\Hy@unicodefalse + }% + \fi +} +% \end{macrocode} +% \begin{macrocode} +\define@key{Hyp}{pdfencoding}{% + \edef\HyPsd@temp{#1}% + \ifx\HyPsd@temp\HyPsd@pdfencoding@pdfdoc + \let\HyPsd@pdfencoding\HyPsd@temp + \Hy@unicodefalse + \else + \ifcase\ifx\HyPsd@temp\HyPsd@pdfencoding@unicode + \z@ + \else + \ifx\HyPsd@temp\HyPsd@pdfencoding@auto + \z@ + \else + \@ne + \fi + \fi + \let\HyPsd@pdfencoding\HyPsd@temp + \hypersetup{unicode}% + \ifHy@unicode + \def\HyPsd@pdfencoding{#1}% + \ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@auto + \HyPsd@LoadStringEnc + \fi + \else + \Hy@Warning{Cannot switch to unicode bookmarks}% + \let\HyPsd@pdfencoding\HyPsd@pdfencoding@pdfdoc + \fi + \else + \@onelevel@sanitize\HyPsd@temp + \Hy@Warning{% + Values of option `pdfencoding':\MessageBreak + `pdfdoc', `unicode', `auto'.\MessageBreak + Ignoring unknown value `\HyPsd@temp'% + }% + \fi + \fi +} +\def\HyPsd@pdfencoding@auto{auto} +\def\HyPsd@pdfencoding@pdfdoc{pdfdoc} +\def\HyPsd@pdfencoding@unicode{unicode} +\let\HyPsd@pdfencoding\Hy@pdfencoding@pdfdoc +\def\HyPsd@LoadStringEnc{% + \RequirePackage{stringenc}[2009/12/15]% + \let\HyPsd@LoadStringEnc\relax +} +\Hy@AtBeginDocument{% + \@ifpackageloaded{stringenc}{% + \let\HyPsd@LoadStringEnc\relax + }{% + \def\HyPsd@LoadStringEnc{% + \Hy@WarningNoLine{% + Missing package `stringenc'. Use `pdfencoding=auto'\MessageBreak + in the preamble or load the package there% + }% + }% + }% +} +% \end{macrocode} +% +% \begin{macrocode} +\define@key{Hyp}{psdextra}[true]{% + \Hy@boolkey{psdextra}{#1}% + \HyPsd@LoadExtra +} +% \end{macrocode} +% +% \begin{macrocode} +\def\hypersetup{\kvsetkeys{Hyp}} +% \end{macrocode} +% +% \begin{macrocode} +\newif\ifHy@setpdfversion +\define@key{Hyp}{pdfversion}{% + \@ifundefined{Hy@pdfversion@#1}{% + \PackageWarning{hyperref}{% + Unsupported PDF version `#1'.\MessageBreak + Valid values: 1.2 until 1.9% + }% + }{% + \Hy@setpdfversiontrue + \edef\Hy@pdfversion{\@nameuse{Hy@pdfversion@#1}}% + }% +} +\@namedef{Hy@pdfversion@1.2}{2}% +\@namedef{Hy@pdfversion@1.3}{3}% +\@namedef{Hy@pdfversion@1.4}{4}% +\@namedef{Hy@pdfversion@1.5}{5}% +\@namedef{Hy@pdfversion@1.6}{6}% +\@namedef{Hy@pdfversion@1.7}{7}% +\@namedef{Hy@pdfversion@1.8}{8}% +\@namedef{Hy@pdfversion@1.9}{9}% +\def\Hy@pdfversion{5} +% \end{macrocode} +% +% \section{Options for different drivers}\label{drivers} +% +% \begin{macrocode} +\newif\ifHy@DviMode +\let\Hy@DviErrMsg\ltx@empty +\ifpdf + \def\Hy@DviErrMsg{pdfTeX or LuaTeX is running in PDF mode}% +\else + \ifxetex + \def\Hy@DviErrMsg{XeTeX is running}% + \else + \ifvtex + \ifvtexdvi + \Hy@DviModetrue + \else + \def\Hy@DviErrMsg{VTeX is running, but not in DVI mode}% + \fi + \else + \Hy@DviModetrue + \fi + \fi +\fi +\def\HyOpt@CheckDvi#1{% + \ifHy@DviMode + \expandafter\ltx@firstofone + \else + \Hy@Error{% + Wrong DVI mode driver option `#1',\MessageBreak + because \Hy@DviErrMsg + }\@ehc + \expandafter\ltx@gobble + \fi +} +% \end{macrocode} +% \begin{macrocode} +\DeclareVoidOption{tex4ht}{% + \Hy@texhttrue + \kvsetkeys{Hyp}{colorlinks=true}% + \def\BeforeTeXIVht{\RequirePackage{color}}% + \def\Hy@driver{htex4ht}% + \def\MaybeStopEarly{% + \Hy@Message{Stopped early}% + \Hy@AtBeginDocument{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% + }% + \endinput + }% +} +\DeclareVoidOption{pdftex}{% + \ifpdf + \def\Hy@driver{hpdftex}% + \PassOptionsToPackage{pdftex}{color}% + \else + \Hy@Error{% + Wrong driver option `pdftex',\MessageBreak + because pdfTeX in PDF mode is not detected% + }\@ehc + \fi +} +\DeclareVoidOption{luatex}{% + \ifpdf + \ifx\pdfextension\@undefined + \def\Hy@driver{hpdftex}% + \PassOptionsToPackage{pdftex}{color}% + \else + \def\Hy@driver{hluatex}% + \PassOptionsToPackage{luatex}{color}% + \fi + \else + \Hy@Error{% + Wrong driver option `luatex',\MessageBreak + because luaTeX in PDF mode is not detected% + }\@ehc + \fi +} +\DeclareVoidOption{nativepdf}{% + \HyOpt@CheckDvi{nativepdf}{% + \def\Hy@driver{hdvips}% + \PassOptionsToPackage{dvips}{color}% + }% +} +\DeclareVoidOption{dvipdfm}{% + \HyOpt@CheckDvi{dvipdfm}{% + \def\Hy@driver{hdvipdfm}% + }% +} +\DeclareVoidOption{dvipdfmx}{% + \HyOpt@CheckDvi{dvipdfmx}{% + \def\Hy@driver{hdvipdfm}% + \PassOptionsToPackage{dvipdfmx}{color}% + }% +} +\define@key{Hyp}{dvipdfmx-outline-open}[true]{% + \expandafter\ifx\csname if#1\expandafter\endcsname + \csname iftrue\endcsname + \chardef\SpecialDvipdfmxOutlineOpen\@ne + \else + \chardef\SpecialDvipdfmxOutlineOpen\z@ + \fi +} +\DeclareVoidOption{xetex}{% + \ifxetex + \def\Hy@driver{hxetex}% + \else + \Hy@Error{% + Wrong driver option `xetex',\MessageBreak + because XeTeX is not detected% + }\@ehc + \fi +} +\DeclareVoidOption{pdfmark}{% + \HyOpt@CheckDvi{pdfmark}{% + \def\Hy@driver{hdvips}% + }% +} +\DeclareVoidOption{dvips}{% + \HyOpt@CheckDvi{dvips}{% + \def\Hy@driver{hdvips}% + \PassOptionsToPackage{dvips}{color}% + }% +} +\DeclareVoidOption{hypertex}{% + \HyOpt@CheckDvi{hypertex}{% + \def\Hy@driver{hypertex}% + }% +} +\let\Hy@MaybeStopNow\relax +\DeclareVoidOption{vtex}{% + \ifvtex + \ifnum 0\ifnum\OpMode<1 1\fi \ifnum\OpMode>3 1\fi =0 % + \def\Hy@driver{hvtex}% + \else + \ifnum\OpMode=10\relax + \def\Hy@driver{hvtexhtm}% + \def\MaybeStopEarly{% + \Hy@Message{Stopped early}% + \Hy@AtBeginDocument{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% + }% + \endinput + }% + \else + \Hy@Error{% + Wrong driver option `vtex',\MessageBreak + because of wrong OpMode (\the\OpMode)% + }\@ehc + \fi + \fi + \else + \Hy@Error{% + Wrong driver option `vtex',\MessageBreak + because VTeX is not running% + }\@ehc + \fi +} +\DeclareVoidOption{vtexpdfmark}{% + \ifvtex + \ifnum 0\ifnum\OpMode<1 1\fi \ifnum\OpMode>3 1\fi =0 % + \def\Hy@driver{hvtexmrk}% + \else + \Hy@Error{% + Wrong driver option `vtexpdfmark',\MessageBreak + because of wrong OpMode (\the\OpMode)% + }\@ehc + \fi + \else + \Hy@Error{% + Wrong driver option `vtexpdfmark,\MessageBreak + because VTeX is not running% + }\@ehc + \fi +} +\DeclareVoidOption{dviwindo}{% + \HyOpt@CheckDvi{dviwindo}{% + \def\Hy@driver{hdviwind}% + \kvsetkeys{Hyp}{colorlinks}% + \PassOptionsToPackage{dviwindo}{color}% + }% +} +\DeclareVoidOption{dvipsone}{% + \HyOpt@CheckDvi{dvipsone}{% + \def\Hy@driver{hdvipson}% + \PassOptionsToPackage{dvipsone}{color}% + }% +} +\DeclareVoidOption{textures}{% + \HyOpt@CheckDvi{textures}{% + \def\Hy@driver{htexture}% + }% +} +\DeclareVoidOption{latex2html}{% + \HyOpt@CheckDvi{latex2html}{% + \Hy@AtBeginDocument{\@@latextohtmlX}% + }% +} +% \end{macrocode} +% No more special treatment for ps2pdf. Let it sink or swim. +% \begin{macrocode} +\DeclareVoidOption{ps2pdf}{% + \HyOpt@CheckDvi{ps2pdf}{% + \def\Hy@driver{hdvips}% + \PassOptionsToPackage{dvips}{color}% + }% +} +% \end{macrocode} +% +% \begin{macrocode} +\let\HyOpt@DriverFallback\ltx@empty +\define@key{Hyp}{driverfallback}{% + \ifHy@DviMode + \def\HyOpt@DriverFallback{#1}% + \Hy@Match\HyOpt@DriverFallback{}{% + ^(|dvipdfm|dvipdfmx|dvips|dvipsone|dviwindo|hypertex|ps2pdf|% + latex2html|tex4ht)$% + }{}{% + \Hy@Warning{% + Invalid driver `#1' for option\MessageBreak + `driverfallback'% + }% + \let\HyOpt@DriverFallback\ltx@empty + }% + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\let\HyOpt@CustomDriver\ltx@empty +\define@key{Hyp}{customdriver}{% + \IfFileExists{#1.def}{% + \def\HyOpt@CustomDriver{#1}% + }{% + \Hy@Warning{% + Missing driver file `#1.def',\MessageBreak + ignoring custom driver% + }% + }% +} +% \end{macrocode} +% +% \section{Options to add extra features}\label{features} +% Make included figures (assuming they use the standard graphics +% package) be hypertext links. Off by default. Needs more work. +% \begin{macrocode} +\define@key{Hyp}{hyperfigures}[true]{% + \Hy@boolkey{hyperfigures}{#1}% +} +% \end{macrocode} +% +% The automatic footnote linking can be disabled +% by option hyperfootnotes. +% \begin{macrocode} +\define@key{Hyp}{hyperfootnotes}[true]{% + \Hy@boolkey{hyperfootnotes}{#1}% +} +% \end{macrocode} +% +% Set up back-referencing to be hyper links, by page, +% slide or section number, +% \begin{macrocode} +\def\back@none{none} +\def\back@section{section} +\def\back@page{page} +\def\back@slide{slide} +\define@key{Hyp}{backref}[section]{% + \lowercase{\def\Hy@tempa{#1}}% + \ifx\Hy@tempa\@empty + \let\Hy@tempa\back@section + \fi + \ifx\Hy@tempa\Hy@false + \let\Hy@tempa\back@none + \fi + \ifx\Hy@tempa\back@slide + \let\Hy@tempa\back@section + \fi + \ifx\Hy@tempa\back@page + \PassOptionsToPackage{hyperpageref}{backref}% + \Hy@backreftrue + \else + \ifx\Hy@tempa\back@section + \PassOptionsToPackage{hyperref}{backref}% + \Hy@backreftrue + \else + \ifx\Hy@tempa\back@none + \Hy@backreffalse + \else + \Hy@WarnOptionValue{#1}{backref}{% + `section', `slide', `page', `none',\MessageBreak + or `false'}% + \fi + \fi + \fi +} +\define@key{Hyp}{pagebackref}[true]{% + \edef\Hy@tempa{#1}% + \lowercase\expandafter{% + \expandafter\def\expandafter\Hy@tempa\expandafter{\Hy@tempa}% + }% + \ifx\Hy@tempa\@empty + \let\Hy@tempa\Hy@true + \fi + \ifx\Hy@tempa\Hy@true + \PassOptionsToPackage{hyperpageref}{backref}% + \Hy@backreftrue + \else + \ifx\Hy@tempa\Hy@false + \Hy@backreffalse + \else + \Hy@WarnOptionValue{#1}{pagebackref}{`true' or `false'}% + \fi + \fi +} +% \end{macrocode} +% Make index entries be links back to the relevant pages. By default +% this is turned on, but may be stopped. +% \begin{macrocode} +\define@key{Hyp}{hyperindex}[true]{% + \Hy@boolkey{hyperindex}{#1}% +} +% \end{macrocode} +% Configuration of encap char. +% \begin{macrocode} +\define@key{Hyp}{encap}[\|]{% + \def\HyInd@EncapChar{#1}% +} +% \end{macrocode} +% +% \section{Language options} +% +% The \cmd{\autoref} feature depends on the language. +% \begin{macrocode} +\def\HyLang@afrikaans{% + \def\equationautorefname{Vergelyking}% + \def\footnoteautorefname{Voetnota}% + \def\itemautorefname{Item}% + \def\figureautorefname{Figuur}% + \def\tableautorefname{Tabel}% + \def\partautorefname{Deel}% + \def\appendixautorefname{Bylae}% + \def\chapterautorefname{Hoofstuk}% + \def\sectionautorefname{Afdeling}% + \def\subsectionautorefname{Subafdeling}% + \def\subsubsectionautorefname{Subsubafdeling}% + \def\paragraphautorefname{Paragraaf}% + \def\subparagraphautorefname{Subparagraaf}% + \def\FancyVerbLineautorefname{Lyn}% + \def\theoremautorefname{Teorema}% + \def\pageautorefname{Bladsy}% +} +\def\HyLang@english{% + \def\equationautorefname{Equation}% + \def\footnoteautorefname{footnote}% + \def\itemautorefname{item}% + \def\figureautorefname{Figure}% + \def\tableautorefname{Table}% + \def\partautorefname{Part}% + \def\appendixautorefname{Appendix}% + \def\chapterautorefname{chapter}% + \def\sectionautorefname{section}% + \def\subsectionautorefname{subsection}% + \def\subsubsectionautorefname{subsubsection}% + \def\paragraphautorefname{paragraph}% + \def\subparagraphautorefname{subparagraph}% + \def\FancyVerbLineautorefname{line}% + \def\theoremautorefname{Theorem}% + \def\pageautorefname{page}% +} +\def\HyLang@french{% + \def\equationautorefname{\'Equation}% + \def\footnoteautorefname{note}% + \def\itemautorefname{item}% + \def\figureautorefname{Figure}% + \def\tableautorefname{Tableau}% + \def\partautorefname{Partie}% + \def\appendixautorefname{Appendice}% + \def\chapterautorefname{chapitre}% + \def\sectionautorefname{section}% + \def\subsectionautorefname{sous-section}% + \def\subsubsectionautorefname{sous-sous-section}% + \def\paragraphautorefname{paragraphe}% + \def\subparagraphautorefname{sous-paragraphe}% + \def\FancyVerbLineautorefname{ligne}% + \def\theoremautorefname{Th\'eor\`eme}% + \def\pageautorefname{page}% +} +\def\HyLang@german{% + \def\equationautorefname{Gleichung}% + \def\footnoteautorefname{Fu\ss note}% + \def\itemautorefname{Punkt}% + \def\figureautorefname{Abbildung}% + \def\tableautorefname{Tabelle}% + \def\partautorefname{Teil}% + \def\appendixautorefname{Anhang}% + \def\chapterautorefname{Kapitel}% + \def\sectionautorefname{Abschnitt}% + \def\subsectionautorefname{Unterabschnitt}% + \def\subsubsectionautorefname{Unterunterabschnitt}% + \def\paragraphautorefname{Absatz}% + \def\subparagraphautorefname{Unterabsatz}% + \def\FancyVerbLineautorefname{Zeile}% + \def\theoremautorefname{Theorem}% + \def\pageautorefname{Seite}% +} +\def\HyLang@italian{% + \def\equationautorefname{Equazione}% + \def\footnoteautorefname{nota}% + \def\itemautorefname{punto}% + \def\figureautorefname{Figura}% + \def\tableautorefname{Tabella}% + \def\partautorefname{Parte}% + \def\appendixautorefname{Appendice}% + \def\chapterautorefname{Capitolo}% + \def\sectionautorefname{sezione}% + \def\subsectionautorefname{sottosezione}% + \def\subsubsectionautorefname{sottosottosezione}% + \def\paragraphautorefname{paragrafo}% + \def\subparagraphautorefname{sottoparagrafo}% + \def\FancyVerbLineautorefname{linea}% + \def\theoremautorefname{Teorema}% + \def\pageautorefname{Pag.\@}% +} +\def\HyLang@magyar{% + \def\equationautorefname{Egyenlet}% + \def\footnoteautorefname{l\'abjegyzet}% + \def\itemautorefname{Elem}% + \def\figureautorefname{\'Abra}% + \def\tableautorefname{T\'abl\'azat}% + \def\partautorefname{R\'esz}% + \def\appendixautorefname{F\"uggel\'ek}% + \def\chapterautorefname{fejezet}% + \def\sectionautorefname{szakasz}% + \def\subsectionautorefname{alszakasz}% + \def\subsubsectionautorefname{alalszakasz}% + \def\paragraphautorefname{bekezd\'es}% + \def\subparagraphautorefname{albekezd\'es}% + \def\FancyVerbLineautorefname{sor}% + \def\theoremautorefname{T\'etel}% + \def\pageautorefname{oldal}% +} +\def\HyLang@portuges{% + \def\equationautorefname{Equa\c c\~ao}% + \def\footnoteautorefname{Nota de rodap\'e}% + \def\itemautorefname{Item}% + \def\figureautorefname{Figura}% + \def\tableautorefname{Tabela}% + \def\partautorefname{Parte}% + \def\appendixautorefname{Ap\^endice}% + \def\chapterautorefname{Cap\'itulo}% + \def\sectionautorefname{Se\c c\~ao}% + \def\subsectionautorefname{Subse\c c\~ao}% + \def\subsubsectionautorefname{Subsubse\c c\~ao}% + \def\paragraphautorefname{par\'agrafo}% + \def\subparagraphautorefname{subpar\'agrafo}% + \def\FancyVerbLineautorefname{linha}% + \def\theoremautorefname{Teorema}% + \def\pageautorefname{P\'agina}% +} +% \end{macrocode} +% +% Next commented section for Russian is provided by Olga Lapko. +% +% Next follow the checked reference names with commented variants and +% explanations. All they are abbreviated and they won't create a +% grammatical problems in the \emph{middle} of sentences. +% +% The most weak points in these abbreviations are the +% |\equationautorefname|, |\theoremautorefname| and the +% |\FancyVerbLineautorefname|. But those three, and also the +% |\footnoteautorefname| are not \emph{too} often referenced. +% Another rather weak point is the |\appendixautorefname|. +% \begin{macrocode} +\def\HyLang@russian{% +% \end{macrocode} +% The abbreviated reference to the equation: +% it is not for ``the good face of the book'', but maybe it will be +% better to get the company for the |\theoremautorefname|? +% \begin{macrocode} + \def\equationautorefname{\cyr\cyrv\cyrery\cyrr.}% +% \end{macrocode} +% The name of the equation reference has common form for both +% nominative and accusative but changes in other forms, like +% ``of |\autoref{auto}|'' etc. The full name must follow full +% name of the |\theoremautorefname|. +% \begin{macrocode} +% \def\equationautorefname{% +% \cyr\cyrv\cyrery\cyrr\cyra\cyrzh\cyre\cyrn\cyri\cyre +% }% +% \end{macrocode} +% +% The variant of footnote has abbreviation form of the synonym +% of the word ``footnote''. This variant of abbreviated synonym +% has alternative status (maybe obsolete?). +% \begin{macrocode} + \def\footnoteautorefname{% + \cyr\cyrp\cyro\cyrd\cyrs\cyrt\cyrr.\ \cyrp\cyrr\cyri\cyrm.% + }% +% \end{macrocode} +% Commented form of the full synonym for ``footnote''. +% It has common form for both nominative and accusative but +% changes in other forms, like ``of |\autoref{auto}|'' +% \begin{macrocode} +% \def\footnoteautorefname{% +% \cyr\cyrp\cyro\cyrd\cyrs\cyrt\cyrr\cyro\cyrch\cyrn\cyro\cyre\ % +% \cyrp\cyrr\cyri\cyrm\cyre\cyrch\cyra\cyrn\cyri\cyre +% }% +% \end{macrocode} +% Commented forms of the ``footnote'': have different forms, the +% same is for the nominative and accusative. (The others needed?) +% \begin{macrocode} +% \def\Nomfootnoteautorefname{\cyr\cyrs\cyrn\cyro\cyrs\cyrk\cyra}% +% \def\Accfootnoteautorefname{\cyr\cyrs\cyrn\cyro\cyrs\cyrk\cyru}% +% \end{macrocode} +% +% Name of the list item, can be confused with the paragraph +% reference name, but reader could understand meaning from context(?). +% Commented variant has common form for both nominative and accusative +% but changes in other forms, like ``of |\autoref{auto}|'' etc. +% \begin{macrocode} + \def\itemautorefname{\cyr\cyrp.}% +% \def\itemautorefname{\cyr\cyrp\cyru\cyrn\cyrk\cyrt}% +% \end{macrocode} +% +% Names of the figure and table have stable (standard) abbreviation +% forms. No problem in the middle of sentence. +% \begin{macrocode} + \def\figureautorefname{\cyr\cyrr\cyri\cyrs.}% + \def\tableautorefname{\cyr\cyrt\cyra\cyrb\cyrl.}% +% \end{macrocode} +% +% Names of the part, chapter, section(s) have stable (standard) +% abbreviation forms. No problem in the middle of sentence. +% \begin{macrocode} + \def\partautorefname{\cyr\cyrch.}% + \def\chapterautorefname{\cyr\cyrg\cyrl.}% + \def\sectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}% +% \end{macrocode} +% +% Name of the appendix can use this abbreviation, but it is not +% standard for books, i.e, not for ``the good face of the book''. +% Commented variant has common form for both nominative and +% accusative but changes in other forms, like ``of +% |\autoref{auto}|'' etc. +% \begin{macrocode} + \def\appendixautorefname{\cyr\cyrp\cyrr\cyri\cyrl.}% +% \def\appendixautorefname{% +% \cyr\cyrp\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyre +% }% +% \end{macrocode} +% +% The sectioning command have stable (almost standard) and common +% abbreviation form for all levels (the meaning of these references +% visible from the section number). No problem. +% \begin{macrocode} + \def\subsectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}% + \def\subsubsectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}% +% \end{macrocode} +% +% The names of references to paragraphs also have stable +% (almost standard) and common abbreviation form for all +% levels (the meaning of these references is visible from +% the section number). No problem in the middle of sentence. +% \begin{macrocode} + \def\paragraphautorefname{\cyr\cyrp.}% + \def\subparagraphautorefname{\cyr\cyrp.}% +% \end{macrocode} +% Commented variant can be used in books but since it +% has common form for both nominative and accusative but it +% changes in other forms, like ``of |\autoref{auto}|'' etc. +% \begin{macrocode} +% \def\paragraphautorefname{\cyr\cyrp\cyru\cyrn\cyrk\cyrt}% +% \def\subparagraphautorefname{\cyr\cyrp\cyru\cyrn\cyrk\cyrt}% +% \end{macrocode} +% +% The name of verbatim line. Here could be a standard of the +% abbreviation (used very rare). But the author preprint +% publications (which have not any editor or corrector) +% can use this abbreviation for the page reference. So the +% meaning of the line reference can be read as reference to +% the page. +% \begin{macrocode} + \def\FancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr.}% +% \end{macrocode} +% Commented names of the ``verbatim line'': have different forms, +% also the nominative and accusative. +% \begin{macrocode} +% \def\NomFancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr\cyro\cyrk\cyra}% +% \def\AccFancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr\cyro\cyrk\cyru}% +% \end{macrocode} +% The alternative, ve-e-e-ery professional abbreviation, +% was used in typography markup for typesetters. +% \begin{macrocode} +% \def\FancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr\cyrk.}% +% \end{macrocode} +% +% The names of theorem: if we want have ``the good face of +% the book'', so the theorem reference must have the full name +% (like equation reference). But \ldots +% \begin{macrocode} + \def\theoremautorefname{\cyr\cyrt\cyre\cyro\cyrr.}% +% \end{macrocode} +% Commented forms of the ``theorem'': have different forms, also +% the nominative and accusative. +% \begin{macrocode} +% \def\Nomtheoremautorefname{\cyr\cyrt\cyre\cyro\cyrr\cyre\cyrm\cyra}% +% \def\Acctheoremautorefname{\cyr\cyrt\cyre\cyro\cyrr\cyre\cyrm\cyru}% +% \end{macrocode} +% +% Name of the page stable (standard) abbreviation form. No problem. +% \begin{macrocode} + \def\pageautorefname{\cyr\cyrs.}% +} +% \end{macrocode} +% +% \begin{macrocode} +\def\HyLang@spanish{% + \def\equationautorefname{Ecuaci\'on}% + \def\footnoteautorefname{Nota a pie de p\'agina}% + \def\itemautorefname{Elemento}% + \def\figureautorefname{Figura}% + \def\tableautorefname{Tabla}% + \def\partautorefname{Parte}% + \def\appendixautorefname{Ap\'endice}% + \def\chapterautorefname{Cap\'itulo}% + \def\sectionautorefname{Secci\'on}% + \def\subsectionautorefname{Subsecci\'on}% + \def\subsubsectionautorefname{Subsubsecci\'on}% + \def\paragraphautorefname{P\'arrafo}% + \def\subparagraphautorefname{Subp\'arrafo}% + \def\FancyVerbLineautorefname{L\'inea}% + \def\theoremautorefname{Teorema}% + \def\pageautorefname{P\'agina}% +} +% \end{macrocode} +% \begin{macrocode} +\def\HyLang@catalan{% +\def\equationautorefname{Equaci\'o}% +\def\footnoteautorefname{Nota al peu de p\`agina}% +\def\itemautorefname{Element}% +\def\figureautorefname{Figura}% +\def\tableautorefname{Taula}% +\def\partautorefname{Part}% +\def\appendixautorefname{Ap\`endix}% +\def\chapterautorefname{Cap\'itol}% +\def\sectionautorefname{Secci\'o}% +\def\subsectionautorefname{Subsecci\'o}% +\def\subsubsectionautorefname{Subsubsecci\'o}% +\def\paragraphautorefname{Par\`agraf}% +\def\subparagraphautorefname{Subpar\`agraf}% +\def\FancyVerbLineautorefname{L\'inia}% +\def\theoremautorefname{Teorema}% +\def\pageautorefname{P\`agina}% +} +% \end{macrocode} +% \begin{macrocode} +\def\HyLang@vietnamese{% + \def\equationautorefname{Ph\uhorn{}\ohorn{}ng tr\`inh}% + \def\footnoteautorefname{Ch\'u th\'ich}% + \def\itemautorefname{m\d{u}c}% + \def\figureautorefname{H\`inh}% + \def\tableautorefname{B\h{a}ng}% + \def\partautorefname{Ph\`\acircumflex{}n}% + \def\appendixautorefname{Ph\d{u} l\d{u}c}% + \def\chapterautorefname{ch\uhorn{}\ohorn{}ng}% + \def\sectionautorefname{m\d{u}c}% + \def\subsectionautorefname{m\d{u}c}% + \def\subsubsectionautorefname{m\d{u}c}% + \def\paragraphautorefname{\dj{}o\d{a}n}% + \def\subparagraphautorefname{\dj{}o\d{a}n}% + \def\FancyVerbLineautorefname{d\`ong}% + \def\theoremautorefname{\DJ{}\d{i}nh l\'y}% + \def\pageautorefname{Trang}% +} +% \end{macrocode} +% Greek, see github issue 52 +% \begin{macrocode} +\def\HyLang@greek{% + \def\equationautorefname{\textEpsilon\textxi\acctonos\textiota\textsigma\textomega\textsigma\texteta}% + \def\footnoteautorefname{\textupsilon\textpi\textomicron\textsigma\texteta\textmu\textepsilon\acctonos\textiota\textomega\textsigma\texteta}% + \def\itemautorefname{\textalpha\textnu\texttau\textiota\textkappa\textepsilon\acctonos\textiota\textmu\textepsilon\textnu\textomicron}% + \def\figureautorefname{\textSigma\textchi\acctonos\texteta\textmu\textalpha}% + \def\tableautorefname{\textPi\acctonos\textiota\textnu\textalpha\textkappa\textalpha}% + \def\partautorefname{\textMu\acctonos\textepsilon\textrho\textomicron\textvarsigma}% + \def\appendixautorefname{\textPi\textalpha\textrho\acctonos\textalpha\textrho\texttau\texteta\textmu\textalpha}% + \def\chapterautorefname{\textkappa\textepsilon\textphi\acctonos\textalpha\textlambda\textalpha\textiota\textomicron}% + \def\sectionautorefname{\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}% + \def\subsectionautorefname{\textupsilon\textpi\textomicron\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}% + \def\subsubsectionautorefname{\textupsilon\textpi\textomicron-\textupsilon\textpi\textomicron\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}% + \def\paragraphautorefname{\textpi\textalpha\textrho\acctonos\textalpha\textgamma\textrho\textalpha\textphi\textomicron\textvarsigma}% + \def\subparagraphautorefname{\textupsilon\textpi\textomicron\textpi\textalpha\textrho\acctonos\textalpha\textgamma\textrho\textalpha\textphi\textomicron\textvarsigma}% + \def\FancyVerbLineautorefname{\textgamma\textrho\textalpha\textmu\textmu\acctonos\texteta}% + \def\theoremautorefname{\textTheta\textepsilon\acctonos\textomega\textrho\texteta\textmu\textalpha}% + \def\pageautorefname{\textsigma\textepsilon\textlambda\acctonos\textiota\textdelta\textalpha}% +} +% \end{macrocode} +% \begin{macrocode} +\def\HyLang@dutch{% + \def\equationautorefname{Vergelijking}% + \def\footnoteautorefname{voetnoot}% + \def\itemautorefname{punt}% + \def\figureautorefname{Figuur}% + \def\tableautorefname{Tabel}% + \def\partautorefname{Deel}% + \def\appendixautorefname{Bijlage}% + \def\chapterautorefname{hoofdstuk}% + \def\sectionautorefname{paragraaf}% + \def\subsectionautorefname{deelparagraaf}% + \def\subsubsectionautorefname{deel-deelparagraaf}% + \def\paragraphautorefname{alinea}% + \def\subparagraphautorefname{deelalinea}% + \def\FancyVerbLineautorefname{regel}% + \def\theoremautorefname{Stelling}% + \def\pageautorefname{pagina}% +} +% \end{macrocode} +% +% Instead of package babel's definition of \cmd{\addto} the +% implementation of package varioref is used. Additionally +% argument |#1| is checked for \cmd{\relax}. +% \begin{macrocode} +\def\HyLang@addto#1#2{% + #2% + \@temptokena{#2}% + \ifx#1\relax + \let#1\@empty + \fi + \ifx#1\@undefined + \edef#1{\the\@temptokena}% + \else + \toks@\expandafter{#1}% + \edef#1{\the\toks@\the\@temptokena}% + \fi + \@temptokena{}\toks@\@temptokena +} +% \end{macrocode} +% +% \begin{macrocode} +\def\HyLang@DeclareLang#1#2#3{% + \@ifpackagewith{babel}{#1}{% + \expandafter\HyLang@addto + \csname extras#1\expandafter\endcsname + \csname HyLang@#2\endcsname + \begingroup + \edef\x{\endgroup + #3% + }% + \x + \@namedef{HyLang@#1@done}{}% + }{}% + \begingroup + \edef\x##1##2{% + \noexpand\ifx##2\relax + \errmessage{No definitions for language #2' found!}% + \noexpand\fi + \endgroup + \noexpand\define@key{Hyp}{#1}[]{% + \noexpand\@ifundefined{HyLang@#1@done}{% + \noexpand\HyLang@addto{\noexpand##1}{\noexpand##2}% + #3% + \noexpand\@namedef{HyLang@#1@done}{}% + }{}% + }% + }% + \expandafter\x\csname extras#1\expandafter\endcsname + \csname HyLang@#2\endcsname +} +\HyLang@DeclareLang{english}{english}{} +\HyLang@DeclareLang{UKenglish}{english}{} +\HyLang@DeclareLang{british}{english}{} +\HyLang@DeclareLang{USenglish}{english}{} +\HyLang@DeclareLang{american}{english}{} +\HyLang@DeclareLang{german}{german}{} +\HyLang@DeclareLang{austrian}{german}{} +\HyLang@DeclareLang{ngerman}{german}{} +\HyLang@DeclareLang{naustrian}{german}{} +\HyLang@DeclareLang{russian}{russian}{\noexpand\hypersetup{unicode}} +\HyLang@DeclareLang{brazil}{portuges}{} +\HyLang@DeclareLang{brazilian}{portuges}{} +\HyLang@DeclareLang{portuguese}{portuges}{} +\HyLang@DeclareLang{spanish}{spanish}{} +\HyLang@DeclareLang{catalan}{catalan}{} +\HyLang@DeclareLang{afrikaans}{afrikaans}{} +\HyLang@DeclareLang{french}{french}{} +\HyLang@DeclareLang{frenchb}{french}{} +\HyLang@DeclareLang{francais}{french}{} +\HyLang@DeclareLang{acadian}{french}{} +\HyLang@DeclareLang{canadien}{french}{} +\HyLang@DeclareLang{italian}{italian}{} +\HyLang@DeclareLang{magyar}{magyar}{} +\HyLang@DeclareLang{hungarian}{magyar}{} +\HyLang@DeclareLang{greek}{greek}{} +\HyLang@DeclareLang{dutch}{dutch}{} +% \end{macrocode} +% More work is needed in case of options |vietnamese| and |vietnam|. +% \begin{macrocode} +\DeclareVoidOption{vietnamese}{% + \HyLang@addto\extrasvietnamese\HyLang@vietnamese + \Hy@AtEndOfPackage{% + \@ifundefined{T@PU}{}{% + \input{puvnenc.def}% + }% + }% +} +\DeclareVoidOption{vietnam}{% + \HyLang@addto\extrasvietnam\HyLang@vietnamese + \Hy@AtEndOfPackage{% + \@ifundefined{T@PU}{}{% + \input{puvnenc.def}% + }% + }% +} +% \end{macrocode} +% Similar for option |arabic| that just loads the additions +% to PU encoding for Arabi. +% \begin{macrocode} +\DeclareVoidOption{arabic}{% + \Hy@AtEndOfPackage{% + \@ifundefined{T@PU}{}{% + \input{puarenc.def}% + }% + }% +} +% \end{macrocode} +% +% \section{Options to change appearance of links}\label{appearance} +% Colouring links at the \LaTeX\ level is useful for debugging, perhaps. +% \begin{macrocode} +\define@key{Hyp}{colorlinks}[true]{% + \Hy@boolkey{colorlinks}{#1}% +} +\DeclareVoidOption{hidelinks}{% + \Hy@colorlinksfalse + \Hy@ocgcolorlinksfalse + \Hy@frenchlinksfalse + \def\Hy@colorlink##1{\begingroup}% + \def\Hy@endcolorlink{\endgroup}% + \def\@pdfborder{0 0 0}% + \let\@pdfborderstyle\ltx@empty +} +\define@key{Hyp}{ocgcolorlinks}[true]{% + \Hy@boolkey{ocgcolorlinks}{#1}% +} +\Hy@AtBeginDocument{% + \begingroup + \@ifundefined{OBJ@OCG@view}{% + \ifHy@ocgcolorlinks + \Hy@Warning{% + Driver does not support `ocgcolorlinks',\MessageBreak + using `colorlinks' instead% + }% + \fi + }{}% + \endgroup +} +\define@key{Hyp}{frenchlinks}[true]{% + \Hy@boolkey{frenchlinks}{#1}% +} +% \end{macrocode} +% +% \section{Bookmarking} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname chapter\endcsname\relax + \def\toclevel@part{0}% +\else + \def\toclevel@part{-1}% +\fi +\def\toclevel@chapter{0} +\def\toclevel@section{1} +\def\toclevel@subsection{2} +\def\toclevel@subsubsection{3} +\def\toclevel@paragraph{4} +\def\toclevel@subparagraph{5} +\def\toclevel@figure{0} +\def\toclevel@table{0} +\@ifpackageloaded{listings}{% + \providecommand*\theHlstlisting{\thelstlisting}% + \providecommand*\toclevel@lstlisting{0}% +}{} +\@ifpackageloaded{listing}{% + \providecommand*\theHlisting{\thelisting}% + \providecommand*\toclevel@listing{0}% +}{} +% \end{macrocode} +% +% \begin{macrocode} +\define@key{Hyp}{bookmarks}[true]{% + \Hy@boolkey{bookmarks}{#1}% +} +% \end{macrocode} +% \begin{macrocode} +\define@key{Hyp}{bookmarksopen}[true]{% + \Hy@boolkey{bookmarksopen}{#1}% +} +% \end{macrocode} +% +% The depth of the outlines is controlled by option +% \verb|bookmarksdepth|. +% The option acts globally and distinguishes three cases: +% \begin{itemize} +% \item \verb|bookmarksdepth|: Without value hyperref uses +% counter \texttt{tocdepth} (compatible behaviour and default). +% \item \verb|bookmarksdepth=<number>|: the depth is set to +% \verb|<number>|. +% \item \verb|bookmarksdepth=<name>|: The \verb|<name>| must +% not start with a number or minus sign. It is a document +% division name (part, chapter, section, \dots). Internally +% the value of macro \verb|\toclevel@<name>| is used. +% \end{itemize} +% \begin{macrocode} +\let\Hy@bookmarksdepth\c@tocdepth +\define@key{Hyp}{bookmarksdepth}[]{% + \begingroup + \edef\x{#1}% + \ifx\x\empty + \global\let\Hy@bookmarksdepth\c@tocdepth + \else + \@ifundefined{toclevel@\x}{% + \@onelevel@sanitize\x + \edef\y{\expandafter\@car\x\@nil}% + \ifcase 0\expandafter\ifx\y-1\fi + \expandafter\ifnum\expandafter`\y>47 % + \expandafter\ifnum\expandafter`\y<58 1\fi\fi\relax + \Hy@Warning{Unknown document division name (\x)}% + \else + \setbox\z@=\hbox{% + \count@=\x + \xdef\Hy@bookmarksdepth{\the\count@}% + }% + \fi + }{% + \setbox\z@=\hbox{% + \count@=\csname toclevel@\x\endcsname + \xdef\Hy@bookmarksdepth{\the\count@}% + }% + }% + \fi + \endgroup +} +% \end{macrocode} +% +% `bookmarksopenlevel' to specify the open level. From Heiko Oberdiek. +% \begin{macrocode} +\define@key{Hyp}{bookmarksopenlevel}{% + \def\@bookmarksopenlevel{#1}% +} +\def\@bookmarksopenlevel{\maxdimen} +% `bookmarkstype' to specify which `toc' file to mimic +\define@key{Hyp}{bookmarkstype}{% + \def\Hy@bookmarkstype{#1}% +} +\def\Hy@bookmarkstype{toc} +% \end{macrocode} +% Richard Curnow <richard@curnow.demon.co.uk> suggested this +% functionality. It adds section numbers etc to bookmarks. +% \begin{macrocode} +\define@key{Hyp}{bookmarksnumbered}[true]{% + \Hy@boolkey{bookmarksnumbered}{#1}% +} +% \end{macrocode} +% +% Option CJKbookmarks enables the patch for +% CJK bookmarks. +% \begin{macrocode} +\define@key{Hyp}{CJKbookmarks}[true]{% + \Hy@boolkey{CJKbookmarks}{#1}% +} +% \end{macrocode} +% +% \begin{macrocode} +\def\Hy@temp#1{% + \expandafter\Hy@@temp\csname @#1color\endcsname{#1}% +} +\def\Hy@@temp#1#2#3{% + \define@key{Hyp}{#2color}{% + \HyColor@HyperrefColor{##1}#1% + }% + \def#1{#3}% +} +\Hy@temp{link}{red} +\Hy@temp{anchor}{black} +\Hy@temp{cite}{green} +\Hy@temp{file}{cyan} +\Hy@temp{url}{magenta} +\Hy@temp{menu}{red} +\Hy@temp{run}{\@filecolor} +\define@key{Hyp}{pagecolor}{% + \Hy@WarningPageColor +} +\def\Hy@WarningPageColor{% + \Hy@WarningNoLine{Option `pagecolor' is not available anymore}% + \global\let\Hy@WarningPageColor\relax +} +\define@key{Hyp}{allcolors}{% + \HyColor@HyperrefColor{#1}\@linkcolor + \HyColor@HyperrefColor{#1}\@anchorcolor + \HyColor@HyperrefColor{#1}\@citecolor + \HyColor@HyperrefColor{#1}\@filecolor + \HyColor@HyperrefColor{#1}\@urlcolor + \HyColor@HyperrefColor{#1}\@menucolor + \HyColor@HyperrefColor{#1}\@runcolor +} +% \end{macrocode} +% +% \begin{macrocode} +\def\hyperbaseurl#1{\def\@baseurl{#1}} +\define@key{Hyp}{baseurl}{\hyperbaseurl{#1}} +\let\@baseurl\@empty +\def\hyperlinkfileprefix#1{\def\Hy@linkfileprefix{#1}} +\define@key{Hyp}{linkfileprefix}{\hyperlinkfileprefix{#1}} +\hyperlinkfileprefix{file:} +% \end{macrocode} +% +% \section{PDF-specific options}\label{pdfopt} +% +% \begin{macro}{\@pdfpagetransition} +% The value of option |pdfpagetransition| is stored in +% \cmd{\@pdfpagetransition}. Its initial value is set +% to \cmd{\relax} in order to be able to differentiate +% between a not used option and an option with an empty +% value. +% \begin{macrocode} +\let\@pdfpagetransition\relax +\define@key{Hyp}{pdfpagetransition}{% + \def\@pdfpagetransition{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@pdfpageduration} +% The value of option |pdfpageduration| is stored in +% \cmd{\@pdfpageduration}. Its initial value is set +% to \cmd{\relax} in order to be able to differentiate +% between a not used option and an option with an empty +% value. +% \begin{macrocode} +\let\@pdfpageduration\relax +\define@key{Hyp}{pdfpageduration}{% + \def\@pdfpageduration{#1}% + \Hy@Match\@pdfpageduration{}{% + ^(|[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)$% + }{}{% + \Hy@Warning{% + Invalid value `\@pdfpageduration'\MessageBreak + of option `pdfpageduration'\MessageBreak + is replaced by an empty value% + }% + \let\@pdfpageduration\ltx@empty + }% +} +% \end{macrocode} +% \end{macro} +% +% The entry for the |/Hid| key in the page object is +% only necessary, if it is used and set to true for +% at least one time. If it is always false, then +% the |/Hid| key is not written to the pdf page +% object in order not to enlarge the pdf file. +% \begin{macrocode} +\newif\ifHy@useHidKey +\Hy@useHidKeyfalse +\define@key{Hyp}{pdfpagehidden}[true]{% + \Hy@boolkey{pdfpagehidden}{#1}% + \ifHy@pdfpagehidden + \global\Hy@useHidKeytrue + \fi +} +% \end{macrocode} +% +% The value of the |bordercolor| options are not processed +% by the color package. Therefore the value consists of +% space separated rgb numbers in the range 0 until 1. +% +% Package |xcolor| provides |\XC@bordercolor| since version 1.1. +% If the two spaces in the color specification are missing, +% then the value is processed as color specification from +% package |xcolor| by using |\XC@bordercolor| (since +% xcolor 2004/05/09 v1.11, versions 2005/03/24 v2.02 until +% 2006/11/28 v2.10 do not work because of a bug that is +% fixed in 2007/01/21 v2.11). +% \begin{macrocode} +\def\Hy@ColorList{cite,file,link,menu,run,url} +\@for\Hy@temp:=\Hy@ColorList\do{% + \edef\Hy@temp{% + \noexpand\define@key{Hyp}{\Hy@temp bordercolor}{% + \noexpand\HyColor@HyperrefBorderColor + {##1}% + \expandafter\noexpand\csname @\Hy@temp bordercolor\endcsname + {hyperref}% + {\Hy@temp bordercolor}% + }% + }% + \Hy@temp +} +\define@key{Hyp}{pagebordercolor}{% + \Hy@WarningPageBorderColor +} +\def\Hy@WarningPageBorderColor{% + \Hy@WarningNoLine{Option `pagebordercolor' is not available anymore}% + \global\let\Hy@WarningPageBorderColor\relax +} +\define@key{Hyp}{allbordercolors}{% + \def\Hy@temp##1##2{% + \HyColor@HyperrefBorderColor{#1}##1{hyperref}{##2bordercolor}% + }% + \Hy@temp\@citebordercolor{cite}% + \Hy@temp\@filebordercolor{file}% + \Hy@temp\@linkbordercolor{link}% + \Hy@temp\@menubordercolor{menu}% + \Hy@temp\@runbordercolor{run}% + \Hy@temp\@urlbordercolor{url}% +} +% \end{macrocode} +% +% \begin{macrocode} +\define@key{Hyp}{pdfhighlight}{\def\@pdfhighlight{#1}} +\Hy@DefNameKey{pdfhighlight}{% + \do{/I}{Invert}% + \do{/N}{None}% + \do{/O}{Outline}% + \do{/P}{Push}% +} +\def\Hy@setpdfhighlight{% + \ifx\@pdfhighlight\@empty + \else + /H\@pdfhighlight + \fi +} +\define@key{Hyp}{pdfborder}{% + \let\Hy@temp\@pdfborder + \def\@pdfborder{#1}% + \Hy@Match\@pdfborder{}{% + ^\HyPat@NonNegativeReal/ % + \HyPat@NonNegativeReal/ % + \HyPat@NonNegativeReal/% + ( ?\[\HyPat@NonNegativeReal/( \HyPat@NonNegativeReal/)*])?$% + }{}{% + \Hy@Warning{% + Invalid value `\@pdfborder'\MessageBreak + for option `pdfborder'.\MessageBreak + Option setting is ignored% + }% + \let\@pdfborder\Hy@temp + }% +} +\define@key{Hyp}{pdfborderstyle}{% + \let\Hy@temp\@pdfborderstyle + \def\@pdfborderstyle{#1}% + \Hy@Match\@pdfborderstyle{}{% + ^% + ( */Type */Border% + | */W +\HyPat@NonNegativeReal/% + | */S */[SDBIU]% + | */D *\[ *(\HyPat@NonNegativeReal/( \HyPat@NonNegativeReal/)?)?]% + )* *$% + }{}{% + \Hy@Warning{% + Invalid value `\@pdfborderstyle'\MessageBreak + for option `pdfborderstyle'.\MessageBreak + Option setting is ignored% + }% + \let\@pdfborderstyle\Hy@temp + }% +} +\def\Hy@setpdfborder{% + \ifx\@pdfborder\@empty + \else + /Border[\@pdfborder]% + \fi + \ifx\@pdfborderstyle\@empty + \else + /BS<<\@pdfborderstyle>>% + \fi +} +\Hy@DefNameKey{pdfpagemode}{% + \do{UseNone}{}% + \do{UseOutlines}{}% + \do{UseThumbs}{}% + \do{FullScreen}{}% + \do{UseOC}{PDF 1.5}% + \do{UseAttachments}{PDF 1.6}% +} +\Hy@DefNameKey{pdfnonfullscreenpagemode}{% + \do{UseNone}{}% + \do{UseOutlines}{}% + \do{UseThumbs}{}% + \do{FullScreen}{}% + \do{UseOC}{PDF 1.5}% + \do{UseAttachments}{PDF 1.6}% +} +\Hy@DefNameKey{pdfdirection}{% + \do{L2R}{Left to right}% + \do{R2L}{Right to left}% +} +\Hy@DefNameKey{pdfviewarea}{% + \do{MediaBox}{}% + \do{CropBox}{}% + \do{BleedBox}{}% + \do{TrimBox}{}% + \do{ArtBox}{}% +} +\Hy@DefNameKey{pdfviewclip}{% + \do{MediaBox}{}% + \do{CropBox}{}% + \do{BleedBox}{}% + \do{TrimBox}{}% + \do{ArtBox}{}% +} +\Hy@DefNameKey{pdfprintarea}{% + \do{MediaBox}{}% + \do{CropBox}{}% + \do{BleedBox}{}% + \do{TrimBox}{}% + \do{ArtBox}{}% +} +\Hy@DefNameKey{pdfprintclip}{% + \do{MediaBox}{}% + \do{CropBox}{}% + \do{BleedBox}{}% + \do{TrimBox}{}% + \do{ArtBox}{}% +} +\Hy@DefNameKey{pdfprintscaling}{% + \do{AppDefault}{}% + \do{None}{}% +} +\Hy@DefNameKey{pdfduplex}{% + \do{Simplex}{}% + \do{DuplexFlipShortEdge}{}% + \do{DuplexFlipLongEdge}{}% +} +\Hy@DefNameKey{pdfpicktraybypdfsize}{% + \do{true}{}% + \do{false}{}% +} +\define@key{Hyp}{pdfprintpagerange}{% + \def\@pdfprintpagerange{#1}% +} +\Hy@DefNameKey{pdfnumcopies}{% + \do{2}{two copies}% + \do{3}{three copies}% + \do{4}{four copies}% + \do{5}{five copies}% +} +% \end{macrocode} +% \begin{macrocode} +\define@key{Hyp}{pdfusetitle}[true]{% + \Hy@boolkey{pdfusetitle}{#1}% +} +\def\HyXeTeX@CheckUnicode{% + \ifxetex + \ifHy@unicode + \else + \Hy@WarningNoLine{% + XeTeX driver only supports unicode.\MessageBreak + Enabling option `unicode'% + }% + \kvsetkeys{Hyp}{unicode}% + \fi + \else + \let\HyXeTeX@CheckUnicode\relax + \fi +} +\def\HyPsd@PrerenderUnicode#1{% + \begingroup + \expandafter\ifx\csname PrerenderUnicode\endcsname\relax + \else + \sbox0{% + \let\GenericInfo\@gobbletwo + \let\GenericWarning\@gobbletwo + \let\GenericError\@gobblefour + \PrerenderUnicode{#1}% + }% + \fi + \endgroup +} +\define@key{Hyp}{pdftitle}{% + \HyXeTeX@CheckUnicode + \HyPsd@XeTeXBigCharstrue + \HyPsd@PrerenderUnicode{#1}% + \pdfstringdef\@pdftitle{#1}% +} +\define@key{Hyp}{pdfauthor}{% + \HyXeTeX@CheckUnicode + \HyPsd@XeTeXBigCharstrue + \HyPsd@PrerenderUnicode{#1}% + \pdfstringdef\@pdfauthor{#1}% +} +\define@key{Hyp}{pdfproducer}{% + \HyXeTeX@CheckUnicode + \HyPsd@XeTeXBigCharstrue + \HyPsd@PrerenderUnicode{#1}% + \pdfstringdef\@pdfproducer{#1}% +} +\define@key{Hyp}{pdfcreator}{% + \HyXeTeX@CheckUnicode + \HyPsd@XeTeXBigCharstrue + \HyPsd@PrerenderUnicode{#1}% + \pdfstringdef\@pdfcreator{#1}% +} +\define@key{Hyp}{addtopdfcreator}{% + \HyXeTeX@CheckUnicode + \HyPsd@XeTeXBigCharstrue + \HyPsd@PrerenderUnicode{#1}% + \pdfstringdef\@pdfcreator{\@pdfcreator, #1}% +} +\define@key{Hyp}{pdfcreationdate}{% + \begingroup + \Hy@unicodefalse + \pdfstringdef\@pdfcreationdate{#1}% + \endgroup +} +\define@key{Hyp}{pdfmoddate}{% + \begingroup + \Hy@unicodefalse + \pdfstringdef\@pdfmoddate{#1}% + \endgroup +} +\define@key{Hyp}{pdfsubject}{% + \HyXeTeX@CheckUnicode + \HyPsd@XeTeXBigCharstrue + \HyPsd@PrerenderUnicode{#1}% + \pdfstringdef\@pdfsubject{#1}% +} +\define@key{Hyp}{pdfkeywords}{% + \HyXeTeX@CheckUnicode + \HyPsd@XeTeXBigCharstrue + \HyPsd@PrerenderUnicode{#1}% + \pdfstringdef\@pdfkeywords{#1}% +} +\define@key{Hyp}{pdftrapped}{% + \lowercase{\edef\Hy@temp{#1}}% + \ifx\Hy@temp\HyInfo@trapped@true + \def\@pdftrapped{True}% + \else + \ifx\Hy@temp\HyInfo@trapped@false + \def\@pdftrapped{False}% + \else + \ifx\Hy@temp\HyInfo@trapped@unknown + \def\@pdftrapped{Unknown}% + \else + \ifx\Hy@temp\@empty + \else + \Hy@Warning{% + Unsupported value `#1'\MessageBreak + for option `pdftrapped'% + }% + \fi + \def\@pdftrapped{}% + \fi + \fi + \fi +} +\def\HyInfo@trapped@true{true} +\def\HyInfo@trapped@false{false} +\def\HyInfo@trapped@unknown{unknown} +\def\HyInfo@TrappedUnsupported{% + \ifx\@pdftrapped\@empty + \else + \Hy@WarningNoLine{`pdftrapped' is not supported by this driver}% + \gdef\HyInfo@TrappedUnsupported{}% + \fi +} +\define@key{Hyp}{pdfinfo}{% + \kvsetkeys{pdfinfo}{#1}% +} +\def\Hy@temp#1{% + \lowercase{\Hy@temp@A{#1}}{#1}% +} +\def\Hy@temp@A#1#2{% + \define@key{pdfinfo}{#2}{% + \hypersetup{pdf#1={##1}}% + }% +} +\Hy@temp{Title} +\Hy@temp{Author} +\Hy@temp{Keywords} +\Hy@temp{Subject} +\Hy@temp{Creator} +\Hy@temp{Producer} +\Hy@temp{CreationDate} +\Hy@temp{ModDate} +\Hy@temp{Trapped} +\newif\ifHyInfo@AddonUnsupported +\kv@set@family@handler{pdfinfo}{% + \HyInfo@AddonHandler{#1}{#2}% +} +\let\HyInfo@do\relax +\def\HyInfo@AddonHandler#1#2{% + \ifx\kv@value\relax + \Hy@Warning{% + Option `pdfinfo': ignoring key `\kv@key' without value% + }% + \else + \EdefEscapeName\HyInfo@KeyEscaped{\kv@key}% + \EdefUnescapeName\HyInfo@Key{\HyInfo@KeyEscaped}% + \expandafter\ifx\csname KV@pdfinfo@\HyInfo@Key\endcsname\relax + \ifHyInfo@AddonUnsupported + \Hy@Warning{% + This driver does not support additional\MessageBreak + information entries, therefore\MessageBreak + `\kv@key' is ignored% + }% + \else + \def\HyInfo@tmp##1{% + \kv@define@key{pdfinfo}{##1}{% + \HyXeTeX@CheckUnicode + \HyPsd@XeTeXBigCharstrue + \HyPsd@PrerenderUnicode{####1}% + \pdfstringdef\HyInfo@Value{####1}% + \global\expandafter + \let\csname HyInfo@Value@##1\endcsname + \HyInfo@Value + }% + }% + \expandafter\HyInfo@tmp\expandafter{\HyInfo@Key}% + \global\expandafter + \let\csname KV@pdfinfo@\HyInfo@Key\expandafter\endcsname + \csname KV@pdfinfo@\HyInfo@Key\endcsname + \xdef\HyInfo@AddonList{% + \HyInfo@AddonList + \HyInfo@do{\HyInfo@Key}% + }% + \kv@parse@normalized{% + \HyInfo@Key={#2}% + }{% + \kv@processor@default{pdfinfo}% + }% + \fi + \else + \kv@parse@normalized{% + \HyInfo@Key={#2}% + }{% + \kv@processor@default{pdfinfo}% + }% + \fi + \fi +} +\def\HyInfo@GenerateAddons{% + \ifHyInfo@AddonUnsupported + \def\HyInfo@Addons{}% + \else + \begingroup + \toks@{}% + \def\HyInfo@do##1{% + \EdefEscapeName\HyInfo@Key{##1}% + \edef\x{% + \toks@{% + \the\toks@ + /\HyInfo@Key(\csname HyInfo@Value@##1\endcsname)% + }% + }% + \x + }% + \HyInfo@AddonList + \edef\x{\endgroup + \def\noexpand\HyInfo@Addons{\the\toks@}% + }% + \x + \fi +} +\global\let\HyInfo@AddonList\ltx@empty +% \end{macrocode} +% \begin{macrocode} +\define@key{Hyp}{pdfview}{\calculate@pdfview#1 \\} +\define@key{Hyp}{pdflinkmargin}{\setpdflinkmargin{#1}} +\let\setpdflinkmargin\@gobble +\def\calculate@pdfview#1 #2\\{% + \def\@pdfview{#1}% + \ifx\\#2\\% + \def\@pdfviewparams{ -32768}% + \else + \def\@pdfviewparams{ #2}% + \fi +} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname numexpr\endcsname\relax + \def\Hy@number#1{% + \expandafter\@firstofone\expandafter{\number#1}% + }% +\else + \def\Hy@number#1{% + \the\numexpr#1\relax + }% +\fi +\define@key{Hyp}{pdfstartpage}{% + \ifx\\#1\\% + \let\@pdfstartpage\ltx@empty + \else + \edef\@pdfstartpage{\Hy@number{#1}}% + \fi +}% +\define@key{Hyp}{pdfstartview}{% + \ifx\\#1\\% + \let\@pdfstartview\ltx@empty + \else + \hypercalcbpdef\@pdfstartview{/#1}% + \fi +} +\def\HyPat@NonNegativeReal/{% + \ *([0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+) *% +} +\define@key{Hyp}{pdfremotestartview}{% + \ifx\\#1\\% + \def\@pdfremotestartview{/Fit}% + \else + \hypercalcbpdef\@pdfremotestartview{#1}% + \edef\@pdfremotestartview{\@pdfremotestartview}% + \Hy@Match\@pdfremotestartview{}{% + ^(XYZ(% + ()| % + (null|-?\HyPat@NonNegativeReal/) % + (null|-?\HyPat@NonNegativeReal/) % + (null|\HyPat@NonNegativeReal/)% + )|% end of "XYZ" + Fit(% + ()|% + B|% + (H|V|BH|BV)(% + ()| % + (null|\HyPat@NonNegativeReal/)% + )|% + R % + \HyPat@NonNegativeReal/ % + \HyPat@NonNegativeReal/ % + \HyPat@NonNegativeReal/ % + \HyPat@NonNegativeReal/% + )% end of "Fit" + )$% + }{}{% + \Hy@Warning{% + Invalid value `\@pdfremotestartview'\MessageBreak + of `pdfremotestartview'\MessageBreak + is replaced by `Fit'% + }% + \let\@pdfremotestartview\@empty + }% + \ifx\@pdfremotestartview\@empty + \def\@pdfremotestartview{/Fit}% + \else + \edef\@pdfremotestartview{/\@pdfremotestartview}% + \fi + \fi +} +\define@key{Hyp}{pdfpagescrop}{\edef\@pdfpagescrop{#1}} +\define@key{Hyp}{pdftoolbar}[true]{% + \Hy@boolkey{pdftoolbar}{#1}% +} +\define@key{Hyp}{pdfmenubar}[true]{% + \Hy@boolkey{pdfmenubar}{#1}% +} +\define@key{Hyp}{pdfwindowui}[true]{% + \Hy@boolkey{pdfwindowui}{#1}% +} +\define@key{Hyp}{pdffitwindow}[true]{% + \Hy@boolkey{pdffitwindow}{#1}% +} +\define@key{Hyp}{pdfcenterwindow}[true]{% + \Hy@boolkey{pdfcenterwindow}{#1}% +} +\define@key{Hyp}{pdfdisplaydoctitle}[true]{% + \Hy@boolkey{pdfdisplaydoctitle}{#1}% +} +\define@key{Hyp}{pdfa}[true]{% + \Hy@boolkey{pdfa}{#1}% +} +\define@key{Hyp}{pdfnewwindow}[true]{% + \def\Hy@temp{#1}% + \ifx\Hy@temp\@empty + \Hy@pdfnewwindowsetfalse + \else + \Hy@pdfnewwindowsettrue + \Hy@boolkey{pdfnewwindow}{#1}% + \fi +} +\def\Hy@SetNewWindow{% + \ifHy@pdfnewwindowset + /NewWindow % + \ifHy@pdfnewwindow true\else false\fi + \fi +} +\Hy@DefNameKey{pdfpagelayout}{% + \do{SinglePage}{}% + \do{OneColumn}{}% + \do{TwoColumnLeft}{}% + \do{TwoColumnRight}{}% + \do{TwoPageLeft}{PDF 1.5}% + \do{TwoPageRight}{PDF 1.5}% +} +\define@key{Hyp}{pdflang}{% + \edef\@pdflang{#1}% + \def\Hy@temp{\relax}% + \ifx\@pdflang\Hy@temp + \let\@pdflang\relax + \fi + \ifx\@pdflang\relax + \else + \ifx\@pdflang\ltx@empty + \else +% \end{macrocode} +% Test according to ABNF of RFC 3066. +% \begin{macrocode} + \Hy@Match\@pdflang{icase}{% + ^% + [a-z]{1,8}% + (-[a-z0-9]{1,8})*% + $% + }{% +% \end{macrocode} +% Test according to ABNF of RFC 5646. +% \begin{macrocode} + \Hy@Match\@pdflang{icase}{% + ^% + (% + % langtag + (% language + [a-z]{2,3}% + ([a-z]{3}(-[a-z]{3}){0,2})?% extlang + |[a-z]{4}% reserved for future use + |[a-z]{5,8}% registered language subtag + )% + (-[a-z]{4})?% script + (-([a-z]{2}|[0-9]{3}))?% region + (-([a-z]{5,8}|[0-9][a-z0-9]{3}))*% variant + (-[0-9a-wyz](-[a-z0-9]{2,8})+)*% extension + (-x(-[a-z0-9]{1,8})+)?% privateuse + % privateuse + |x-([a-z0-9]{1,8})+% + % grandfathered/irregular + |en-GB-oed% + |i-(ami|bnn|default|enochian|hak|klingon|lux|% + mingo|navajo|pwn|tao|tay|tsu)% + |sgn-(BE-FR|BE-NL|CH-DE)% + % grandfathered/regular + |art-lojban% + |cel-gaulish% + |no-(bok|nyn)% + |zh-(guoyu|hakka|min|min-nan|xiang)% + )% + $% + }{% +% \end{macrocode} +% Test for unique extensions. +% \begin{macrocode} + \Hy@Match{-\@pdflang}{icase}{-[a-wyz0-9]-}{% + \Hy@Match\@pdflang{icase}{^x-}{}{% + % remove privateuse + \edef\Hy@temp{-\@pdflang}% + \Hy@Match\Hy@temp{icase}{% + ^% + (% + (-[a-wyz0-9]|-[a-z0-9]{2,8})*% + )% + -x-% + }{% + \edef\Hy@temp{% + \expandafter\strip@prefix\pdflastmatch1% + }% + }{}% + \Hy@Match\Hy@temp{icase}{% + (-[a-wyz0-9]-).*\ltx@backslashchar1% + }{% + \Hy@Warning{% + Invalid language identifier `#1'\MessageBreak + for option `pdflang', because it violates\MessageBreak + well-formedness defined in RFC 4646\MessageBreak + by duplicate singleton subtags% + }% + \let\@pdflang\relax + }{}% + }% + }{}% +% \end{macrocode} +% User-assigned country codes are forbidden in language tags (RFC 3066). +% \begin{macrocode} + \ifx\@pdflang\relax + \else + \Hy@Match\@pdflang{icase}{% + ^% + [a-zA-Z]{2}-% + (% + aa|AA|% + [qQ][m-zM-Z]|% + [xX][a-zA-Z]|% + zz|ZZ% + )% + (-|$)% + }{% + \Hy@Warning{% + Invalid language identifier `#1'\MessageBreak + for option `pdflang' because of invalid country code% + \MessageBreak + in second subtag (RFC 3066)% + }% + \let\@pdflang\relax + }{}% + \fi + }{% + \Hy@Warning{% + Invalid language identifier `#1'\MessageBreak + for option `pdflang', because it violates\MessageBreak + well-formedness defined in RFC 5646% + }% + \let\@pdflang\relax + }% + }{% + \Hy@Warning{% + Invalid language identifier `#1'\MessageBreak + for option `pdflang' (RFC 3066)% + }% + \let\@pdflang\relax + }% + \fi + \fi +} +\define@key{Hyp}{pdfpagelabels}[true]{% + \Hy@boolkey{pdfpagelabels}{#1}% +} +\define@key{Hyp}{pdfescapeform}[true]{% + \Hy@boolkey{pdfescapeform}{#1}% +} +% \end{macrocode} +% Default values: +% \begin{macrocode} +\def\@linkbordercolor{1 0 0} +\def\@urlbordercolor{0 1 1} +\def\@menubordercolor{1 0 0} +\def\@filebordercolor{0 .5 .5} +\def\@runbordercolor{0 .7 .7} +\def\@citebordercolor{0 1 0} +\def\@pdfhighlight{/I} +\let\@pdftitle\ltx@empty +\let\@pdfauthor\ltx@empty +\let\@pdfproducer\relax +\def\@pdfcreator{LaTeX with hyperref} +\let\@pdfcreationdate\ltx@empty +\let\@pdfmoddate\ltx@empty +\let\@pdfsubject\ltx@empty +\let\@pdfkeywords\ltx@empty +\let\@pdftrapped\ltx@empty +\let\@pdfpagescrop\ltx@empty +\def\@pdfstartview{/Fit} +\def\@pdfremotestartview{/Fit} +\def\@pdfstartpage{1} +\let\@pdfprintpagerange\ltx@empty +\let\@pdflang\relax +\let\PDF@SetupDoc\@empty +\let\PDF@FinishDoc\@empty +\let\phantomsection\@empty +\let\special@paper\@empty +\def\HyperDestNameFilter#1{#1} +\Hy@AtBeginDocument{% + \begingroup + \edef\x{\@ifundefined{stockheight}\paperheight\stockheight}% + \dimen@=\x\relax + \ifdim\dimen@>\z@ + \else + \dimen@=11in\relax + \Hy@WarningNoLine{% + Height of page (\expandafter\string\x) % + is invalid (\the\x),\MessageBreak + using 11in% + }% + \fi + \dimen@=0.99626401\dimen@ + \xdef\Hy@pageheight{\strip@pt\dimen@}% + \endgroup +} +\def\HyInd@EncapChar{\|} +% \end{macrocode} +% +% Allow the user to use |\ExecuteOptions| in the cfg file even though +% this package does not use the normal option mechanism. +% Use |\hyper@normalise| as a scratch macro, since it is going to +% be defined in a couple of lines anyway. +% \begin{macrocode} +\let\hyper@normalise\ExecuteOptions +\let\ExecuteOptions\hypersetup +\Hy@RestoreCatcodes +\InputIfFileExists{hyperref.cfg}{}{} +\Hy@SetCatcodes +\let\ExecuteOptions\hyper@normalise +\ifx\Hy@MaybeStopNow\relax +\else + \Hy@stoppedearlytrue + \expandafter\Hy@MaybeStopNow +\fi +\Hy@stoppedearlyfalse +% \end{macrocode} +% To add flexibility, we will not use the ordinary processing of +% package options, but put them through the \emph{keyval} package. +% This section was written by David Carlisle. +% +% \begin{macrocode} +\SetupKeyvalOptions{family=Hyp} +\DeclareLocalOptions{% + a4paper,a5paper,b5paper,letterpaper,legalpaper,executivepaper% +} +% \end{macrocode} +% +% Add option |tex4ht| if package |tex4ht| is loaded. +% \begin{macrocode} +\@ifpackagewith{hyperref}{tex4ht}{% +}{% + \@ifpackageloaded{tex4ht}{% + \PassOptionsToPackage{tex4ht}{hyperref}% + }{% + \ltx@IfUndefined{HCode}{% + }{% + \begingroup + \def\Hy@pkg{tex4ht}% + \def\Hy@temp@A#1\RequirePackage[#2]#3#4\Hy@NIL{% + \def\Hy@param{#2#3}% + \ifx\Hy@param\ltx@empty + \expandafter\ltx@gobble + \else + \def\Hy@param{#3}% + \ifx\Hy@param\Hy@pkg + \PassOptionsToPackage{#2}{tex4ht}% + \expandafter\expandafter\expandafter\@gobble + \else + \expandafter\expandafter\expandafter\ltx@firstofone + \fi + \fi + {\Hy@temp@A#4\Hy@NIL}% + }% + \expandafter + \Hy@temp@A\@documentclasshook\RequirePackage[]{}\Hy@NIL + \endgroup + \PassOptionsToPackage{tex4ht}{hyperref}% + }% + }% +} +% \end{macrocode} +% +% \begin{macrocode} +\let\ReadBookmarks\relax +\ProcessKeyvalOptions{Hyp} +% \end{macrocode} +% +% After processing options. +% +% \subsection{Package xspace support} +% +% \begin{macrocode} +\def\Hy@xspace@end{} +\ltx@IfUndefined{xspaceaddexceptions}{% + \Hy@AtBeginDocument{% + \ltx@IfUndefined{xspaceaddexceptions}{% + }{% + \def\Hy@xspace@end{% + \ltx@gobble{end for xspace}% + }% + \xspaceaddexceptions{% + \Hy@xspace@end,\hyper@linkend,\hyper@anchorend + }% + }% + }% +}{% + \def\Hy@xspace@end{% + \ltx@gobble{end for xspace}% + }% + \xspaceaddexceptions{\Hy@xspace@end,\hyper@linkend,\hyper@anchorend}% +} +% \end{macrocode} +% +% \subsection{Option draft} +% +% \begin{macrocode} +\Hy@AtBeginDocument{% + \ifHy@draft + \let\hyper@@anchor\@gobble + \gdef\hyper@link#1#2#3{#3\Hy@xspace@end}% + \def\hyper@anchorstart#1#2{#2\Hy@xspace@end}% + \def\hyper@anchorend{\Hy@xspace@end}% + \let\hyper@linkstart\@gobbletwo + \def\hyper@linkend{\Hy@xspace@end}% + \def\hyper@linkurl#1#2{#1\Hy@xspace@end}% + \def\hyper@linkfile#1#2#3{#1\Hy@xspace@end}% + \def\hyper@link@[#1]#2#3#4{#4\Hy@xspace@end}% + \def\Acrobatmenu#1#2{\leavevmode#2\Hy@xspace@end}% + \let\PDF@SetupDoc\@empty + \let\PDF@FinishDoc\@empty + \let\@fifthoffive\@secondoftwo + \let\@secondoffive\@secondoftwo + \let\ReadBookmarks\relax + \let\WriteBookmarks\relax + \Hy@WarningNoLine{Draft mode on}% + \fi + \Hy@DisableOption{draft}% + \Hy@DisableOption{nolinks}% + \Hy@DisableOption{final}% +} +% \end{macrocode} +% +% \subsection{PDF/A} +% +% \begin{macrocode} +\Hy@DisableOption{pdfa} +% \end{macrocode} +% +% \begin{macrocode} +\ifHy@pdfa + \ifnum \Hy@pdfversion < 4 + \kvsetkeys{Hyp}{pdfversion=1.4}% + \fi + \Hy@DisableOption{pdfversion}% + \def\Hy@Acrobatmenu#1#2{% + \leavevmode + \begingroup + \edef\x{#1}% + \@onelevel@sanitize\x + \ifx\x\Hy@NextPage + \let\y=Y% + \else + \ifx\x\Hy@PrevPage + \let\y=Y% + \else + \ifx\x\Hy@FirstPage + \let\y=Y% + \else + \ifx\x\Hy@LastPage + \let\y=Y% + \else + \let\y=N% + \fi + \fi + \fi + \fi + \expandafter\endgroup + \ifx\y Y% + \else + \Hy@Error{% + PDF/A: Named action `#1' is not permitted% + }\@ehc + {#2}% + \expandafter\@gobble + \fi + }% + \def\Hy@temp#1{% + \expandafter\def\csname Hy@#1\endcsname{#1}% + \expandafter\@onelevel@sanitize\csname Hy@#1\endcsname + }% + \Hy@temp{NextPage}% + \Hy@temp{PrevPage}% + \Hy@temp{FirstPage}% + \Hy@temp{LastPage}% +\else + \def\Hy@Acrobatmenu#1#2{\leavevmode}% +\fi +% \end{macrocode} +% +% \subsection{Patch for babel's +% \texorpdfstring{\cs{texttilde}}{\\texttilde}} +% Babel does not define \cmd{\texttilde} in NFSS2 manner, +% so the NFSS2 definitions of PD1 or PU encoding is not +% compatible. To fix this, \cmd{\texttilde} is defined +% in babel manner. +% \begin{macrocode} +\Hy@nextfalse +\ltx@IfUndefined{spanish@sh@"@sel}{}{\Hy@nexttrue} +\ltx@IfUndefined{galician@sh@"@sel}{}{\Hy@nexttrue} +\ltx@IfUndefined{estonian@sh@"@sel}{}{\Hy@nexttrue} +\ifHy@next + \let\texttilde\~% +\fi +% \end{macrocode} +% +% \begin{macrocode} +\def\Hy@wrapper@babel#1#2{% + \begingroup + \Hy@safe@activestrue + \set@display@protect + \edef\x{#2}% + \@onelevel@sanitize\x + \toks@{#1}% + \edef\x{\endgroup\the\toks@{\x}}% + \x +} +\def\Hy@WrapperDef#1{% + \begingroup + \escapechar=\m@ne + \xdef\Hy@gtemp{% + \expandafter\noexpand\csname HyWrap@\string#1\endcsname + }% + \endgroup + \edef#1{% + \noexpand\Hy@wrapper@babel + \expandafter\noexpand\Hy@gtemp + }% + \expandafter\def\Hy@gtemp +} +% \end{macrocode} +% +% \begin{macrocode} +\ifHy@hyperfigures + \Hy@Info{Hyper figures ON}% +\else + \Hy@Info{Hyper figures OFF}% +\fi +\ifHy@nesting + \Hy@Info{Link nesting ON}% +\else + \Hy@Info{Link nesting OFF}% +\fi +\ifHy@hyperindex + \Hy@Info{Hyper index ON}% +\else + \Hy@Info{Hyper index OFF}% +\fi +\ifHy@plainpages + \Hy@Info{Plain pages ON}% +\else + \Hy@Info{Plain pages OFF}% +\fi +\ifHy@backref + \Hy@Info{Backreferencing ON}% +\else + \Hy@Info{Backreferencing OFF}% +\fi +\ifHy@typexml + \Hy@AtEndOfPackage{% + \RequirePackage{color}% + \RequirePackage{nameref}[2012/07/28]% + }% +\fi +\Hy@DisableOption{typexml} +\ifHy@implicit + \Hy@InfoNoLine{Implicit mode ON; LaTeX internals redefined}% +\else + \Hy@InfoNoLine{Implicit mode OFF; no redefinition of LaTeX internals}% + \def\MaybeStopEarly{% + \Hy@Message{Stopped early}% + \Hy@AtBeginDocument{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% + }% + \endinput + }% + \Hy@AtBeginDocument{% + \let\autoref\ref + \let\autopageref\pageref + \ifx\@pdfpagemode\@empty + \gdef\@pdfpagemode{UseNone}% + \fi + \global\Hy@backreffalse + }% + \Hy@AtEndOfPackage{% + \global\let\ReadBookmarks\relax + \global\let\WriteBookmarks\relax + }% +\fi +\Hy@DisableOption{implicit} +% \end{macrocode} +% +% \subsubsection{Driver loading} +% +% \begin{macrocode} +\Hy@AtEndOfPackage{% + \@ifpackageloaded{tex4ht}{% + \def\Hy@driver{htex4ht}% + \Hy@texhttrue + }{}% +% \end{macrocode} +% Some drivers can be detected. Check for these drivers, +% whether the given driver option is ok. Otherwise force +% the right driver or use the default driver. +% \begin{macrocode} + \ifx\Hy@driver\@empty + \else + \ifx\pdfextension\@undefined + \def\Hy@temp{hpdftex}% + \else + \def\Hy@temp{hluatex}% + \fi + \ifpdf + \ifx\Hy@driver\Hy@temp + \else + \Hy@WarningNoLine{% + Wrong driver `\Hy@driver.def';\MessageBreak + pdfTeX is running in PDF mode.\MessageBreak + Forcing driver `\Hy@temp.def'% + }% + \let\Hy@driver\Hy@temp + \fi + \else + \ifx\Hy@driver\Hy@temp + \Hy@WarningNoLine{% + Wrong driver `\Hy@driver.def';\MessageBreak + pdfTeX is not running in PDF mode.\MessageBreak + Using default driver% + }% + \let\Hy@driver\@empty + \fi + \fi + \fi + \ifHy@texht + \else + \ifx\Hy@driver\@empty + \else + \def\Hy@temp{hxetex}% + \ifxetex + \ifx\Hy@driver\Hy@temp + \else + \Hy@WarningNoLine{% + Wrong driver `\Hy@driver.def';\MessageBreak + XeTeX is running.\MessageBreak + Forcing driver `\Hy@temp.def' for XeTeX% + }% + \let\Hy@driver\Hy@temp + \fi + \fi + \fi + \fi + \ifx\Hy@driver\@empty + \else + \def\Hy@temp{hvtexhtm}% + \ifvtexhtml + \ifx\Hy@driver\Hy@temp + \else + \Hy@WarningNoLine{% + Wrong driver `\Hy@driver.def';\MessageBreak + VTeX is running in HTML mode.\MessageBreak + Forcing driver `\Hy@temp.def'% + }% + \let\Hy@driver\Hy@temp + \fi + \else + \ifx\Hy@driver\Hy@temp + \Hy@WarningNoLine{% + Wrong driver `\Hy@driver.def';\MessageBreak + VTeX is not running in HTML mode.\MessageBreak + Using default driver% + }% + \let\Hy@driver\@empty + \fi + \fi + \fi +% \end{macrocode} +% If the driver is not given, find the right driver or +% use the default driver. +% \begin{macrocode} + \let\HyOpt@DriverType\ltx@empty + \ifx\HyOpt@CustomDriver\ltx@empty + \ifx\Hy@driver\@empty + \def\HyOpt@DriverType{ (autodetected)}% + \providecommand*{\Hy@defaultdriver}{hypertex}% + \ifpdf + \ifx\pdfextension\@undefined + \def\Hy@driver{hpdftex}% + \else + \def\Hy@driver{hluatex}% + \fi + \else + \ifxetex + \def\Hy@driver{hxetex}% + \else + \ifvtexhtml + \def\Hy@driver{hvtexhtm}% + \def\MaybeStopEarly{% + \Hy@Message{Stopped early}% + \Hy@AtBeginDocument{% + \PDF@FinishDoc + \gdef\PDF@FinishDoc{}% + }% + \endinput + }% + \else + \ifvtexpdf + \def\Hy@driver{hvtex}% + \else + \ifvtexps + \def\Hy@driver{hvtex}% + \else + \ifx\HyOpt@DriverFallback\ltx@empty + \let\Hy@driver\Hy@defaultdriver + \def\HyOpt@DriverType{ (default)}% + \else + \begingroup + \toks@\expandafter{\HyOpt@DriverFallback}% + \edef\x{\endgroup + \noexpand\kvsetkeys{Hyp}{\the\toks@}% + }% + \x + \ifx\Hy@driver\ltx@empty + \let\Hy@driver\Hy@defaultdriver + \def\HyOpt@DriverType{ (default)}% + \else + \def\HyOpt@DriverType{ (fallback)}% + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \ifx\Hy@driver\Hy@defaultdriver + \def\Hy@temp{hdviwind}% + \ifx\Hy@temp\Hy@driver + \kvsetkeys{Hyp}{colorlinks}% + \PassOptionsToPackage{dviwindo}{color}% + \fi + \fi + \fi + \else + \def\HyOpt@DriverType{ (custom)}% + \let\Hy@driver\HyOpt@CustomDriver + \fi + \Hy@InfoNoLine{Driver\HyOpt@DriverType: \Hy@driver}% + \chardef\Hy@VersionChecked=0 % + \input{\Hy@driver.def}% + \ifcase\Hy@VersionChecked + \Hy@VersionCheck{\Hy@driver.def}% + \fi + \let\@unprocessedoptions\relax + \Hy@RestoreCatcodes + \Hy@DisableOption{tex4ht}% + \Hy@DisableOption{pdftex}% + \Hy@DisableOption{nativepdf}% + \Hy@DisableOption{dvipdfm}% + \Hy@DisableOption{dvipdfmx}% + \Hy@DisableOption{dvipdfmx-outline-open}% + \Hy@DisableOption{pdfmark}% + \Hy@DisableOption{dvips}% + \Hy@DisableOption{hypertex}% + \Hy@DisableOption{vtex}% + \Hy@DisableOption{vtexpdfmark}% + \Hy@DisableOption{dviwindo}% + \Hy@DisableOption{dvipsone}% + \Hy@DisableOption{textures}% + \Hy@DisableOption{latex2html}% + \Hy@DisableOption{ps2pdf}% + \Hy@DisableOption{xetex}% + \Hy@DisableOption{driverfallback}% + \Hy@DisableOption{customdriver}% + \Hy@DisableOption{pdfversion}% +} +% \end{macrocode} +% Support for open outlines is enabled for Xe\TeX\ >= 0.9995. +% I don't know, if older versions also support this. +% AFAIK older dvipdfmx versions will break, thus the +% switch cannot be turned on by default. +% \begin{macrocode} +\newif\ifHy@DvipdfmxOutlineOpen +\ifxetex + \ifdim\number\XeTeXversion\XeTeXrevision in<0.9995in % + \else + \chardef\SpecialDvipdfmxOutlineOpen\@ne + \Hy@DvipdfmxOutlineOpentrue + \fi +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname SpecialDvipdfmxOutlineOpen\endcsname\relax +\else + \ifnum\SpecialDvipdfmxOutlineOpen>\z@ + \Hy@DvipdfmxOutlineOpentrue + \fi +\fi +% \end{macrocode} +% +% \subsubsection{Bookmarks} +% \begin{macrocode} +\def\WriteBookmarks{0} +\def\@bookmarkopenstatus#1{% + \ifHy@bookmarksopen +% \end{macrocode} +% The purpose of the |\@firstofone|-number-space-construct +% is that no |\relax| will be inserted by \TeX{} before the |\else|: +% \begin{macrocode} + \ifnum#1<\expandafter\@firstofone\expandafter + {\number\@bookmarksopenlevel} % explicit space + \else + -% + \fi + \else + -% + \fi +} +\ifHy@bookmarks + \Hy@Info{Bookmarks ON}% + \ifx\@pdfpagemode\@empty + \def\@pdfpagemode{UseOutlines}% + \fi +\else + \let\@bookmarkopenstatus\ltx@gobble + \Hy@Info{Bookmarks OFF}% + \Hy@AtEndOfPackage{% + \global\let\ReadBookmarks\relax + \global\let\WriteBookmarks\relax + }% + \ifx\@pdfpagemode\@empty + \def\@pdfpagemode{UseNone}% + \fi +\fi +\Hy@DisableOption{bookmarks} +% \end{macrocode} +% +% Add wrapper for setting standard catcodes (babel's shorthands). +% \begin{macrocode} +\def\Hy@CatcodeWrapper#1{% + \let\Hy@EndWrap\ltx@empty + \def\TMP@EnsureCode##1##2{% + \edef\Hy@EndWrap{% + \Hy@EndWrap + \catcode##1 \the\catcode##1\relax + }% + \catcode##1 ##2\relax + }% + \TMP@EnsureCode{10}{12}% ^^J + \TMP@EnsureCode{33}{12}% ! + \TMP@EnsureCode{34}{12}% " + \TMP@EnsureCode{36}{3}% $ (math) + \TMP@EnsureCode{38}{4}% & (alignment) + \TMP@EnsureCode{39}{12}% ' + \TMP@EnsureCode{40}{12}% ( + \TMP@EnsureCode{41}{12}% ) + \TMP@EnsureCode{42}{12}% * + \TMP@EnsureCode{43}{12}% + + \TMP@EnsureCode{44}{12}% , + \TMP@EnsureCode{45}{12}% - + \TMP@EnsureCode{46}{12}% . + \TMP@EnsureCode{47}{12}% / + \TMP@EnsureCode{58}{12}% : + \TMP@EnsureCode{59}{12}% ; + \TMP@EnsureCode{60}{12}% < + \TMP@EnsureCode{61}{12}% = + \TMP@EnsureCode{62}{12}% > + \TMP@EnsureCode{63}{12}% ? + \TMP@EnsureCode{91}{12}% [ + \TMP@EnsureCode{93}{12}% ] + \TMP@EnsureCode{94}{7}% ^ (superscript) + \TMP@EnsureCode{95}{8}% _ (subscript) + \TMP@EnsureCode{96}{12}% ` + \TMP@EnsureCode{124}{12}% | + \TMP@EnsureCode{126}{13}% ~ (active) + #1\relax + \Hy@EndWrap +} +% \end{macrocode} +% +% |\HyColor@UseColor| expects a macro as argument. It contains +% the color specification. +% \begin{macrocode} +\Hy@AtBeginDocument{% + \ifHy@ocgcolorlinks + \kvsetkeys{Hyp}{colorlinks}% + \ifHy@pdfa + \Hy@Warning{% + PDF/A: Optional Content Groups are prohibited,\MessageBreak + using `colorlinks' instead of `ocgcolorlinks'% + }% + \Hy@ocgcolorlinksfalse + \fi + \fi + \ifHy@ocgcolorlinks + \else + \Hy@DisableOption{ocgcolorlinks}% + \fi + \ifHy@colorlinks + \def\@pdfborder{0 0 0}% + \let\@pdfborderstyle\@empty + \ifHy@typexml + \else + \Hy@CatcodeWrapper{% + \RequirePackage{color}% + }% + \fi + \def\Hy@colorlink#1{% + \begingroup + \HyColor@UseColor#1% + }% + \def\Hy@endcolorlink{\endgroup}% + \Hy@Info{Link coloring ON}% + \else + \ifHy@frenchlinks + \def\Hy@colorlink#1{\begingroup\fontshape{\scdefault}\selectfont}% + \def\Hy@endcolorlink{\endgroup}% + \Hy@Info{French linking ON}% + \else +% \end{macrocode} +% for grouping consistency: +% \begin{macrocode} + \def\Hy@colorlink#1{\begingroup}% + \def\Hy@endcolorlink{\endgroup}% + \Hy@Info{Link coloring OFF}% + \fi + \fi + \Hy@DisableOption{colorlinks}% + \Hy@DisableOption{frenchlinks}% + \ifHy@texht + \long\def\@firstoffive#1#2#3#4#5{#1}% + \long\def\@secondoffive#1#2#3#4#5{#2}% + \long\def\@thirdoffive#1#2#3#4#5{#3}% + \long\def\@fourthoffive#1#2#3#4#5{#4}% + \long\def\@fifthoffive#1#2#3#4#5{#5}% + \providecommand*\@safe@activestrue{}% + \providecommand*\@safe@activesfalse{}% + \def\T@ref#1{% + \Hy@safe@activestrue + \expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}% + \Hy@safe@activesfalse + }% + \def\T@pageref#1{% + \Hy@safe@activestrue + \expandafter\@setref\csname r@#1\endcsname\@secondoffive{#1}% + \Hy@safe@activesfalse + }% + \else + \ifHy@typexml + \else + \Hy@CatcodeWrapper{% + \RequirePackage{nameref}[2012/07/28]% + }% + \fi + \fi + \DeclareRobustCommand\ref{% + \@ifstar\@refstar\T@ref + }% + \DeclareRobustCommand\pageref{% + \@ifstar\@pagerefstar\T@pageref + }% +% \@ifclassloaded{memoir}{% +% \ltx@IfUndefined{@mem@titlerefnolink}\ltx@secondoftwo{% +% \ltx@IfUndefined{@mem@titleref}\ltx@secondoftwo\ltx@firstoftwo +% }% +% }\ltx@secondoftwo +% {% +% \DeclareRobustCommand*{\nameref}{% +% \@ifstar\@mem@titlerefnolink\@mem@titleref +% }% +% }{% + \DeclareRobustCommand*{\nameref}{% + \@ifstar\@namerefstar\T@nameref + }% +% }% +} +\Hy@AtBeginDocument{% + \ifHy@texht + \else + \Hy@CatcodeWrapper\ReadBookmarks + \fi +} +% \end{macrocode} +% \begin{macrocode} +\ifHy@backref + \RequirePackage{backref}% +\else + \let\Hy@backout\@gobble +\fi +\Hy@DisableOption{backref} +\Hy@DisableOption{pagebackref} +% \end{macrocode} +% \begin{macrocode} +\Hy@activeanchorfalse +% \end{macrocode} +% +% \section{User hypertext macros}\label{usermacros} +% +% We need to normalise all user commands taking a URL argument; +% Within the argument the following special definitions apply: +% |\#|, |\%|, |~| produce |#|, |%|, |~| respectively. +% for consistency |\~| produces |~| as well. +% At the \emph{top level only} ie not within the argument of another +% command, you can use |#| and |%| unescaped, to produce themselves. +% even if, say, |#| is entered as |#| it will be converted to |\#| +% so it does not die if written to an aux file etc. |\#| will write +% as |#| locally while making |\special|s. +% \begin{macrocode} +\begingroup + \endlinechar=-1 % + \catcode`\^^A=14 % + \catcode`\^^M\active + \catcode`\%\active + \catcode`\#\active + \catcode`\_\active + \catcode`\$\active + \catcode`\&\active + \gdef\hyper@normalise{^^A + \begingroup + \catcode`\^^M\active + \def^^M{ }^^A + \catcode`\%\active + \let%\@percentchar + \let\%\@percentchar + \catcode`\#\active + \def#{\hyper@hash}^^A + \def\#{\hyper@hash}^^A + \@makeother\&^^A + \edef&{\string&}^^A + \edef\&{\string&}^^A + \edef\textunderscore{\string_}^^A + \let\_\textunderscore + \catcode`\_\active + \let_\textunderscore + \let~\hyper@tilde + \let\~\hyper@tilde + \let\textasciitilde\hyper@tilde + \let\\\@backslashchar + \edef${\string$}^^A + \Hy@safe@activestrue + \hyper@n@rmalise + }^^A + \catcode`\#=6 ^^A + \gdef\Hy@ActiveCarriageReturn{^^M}^^A + \gdef\hyper@n@rmalise#1#2{^^A + \def\Hy@tempa{#2}^^A + \ifx\Hy@tempa\Hy@ActiveCarriageReturn + \ltx@ReturnAfterElseFi{^^A + \hyper@@normalise{#1}^^A + }^^A + \else + \ltx@ReturnAfterFi{^^A + \hyper@@normalise{#1}{#2}^^A + }^^A + \fi + }^^A + \gdef\hyper@@normalise#1#2{^^A + \edef\Hy@tempa{^^A + \endgroup + \noexpand#1{\Hy@RemovePercentCr#2%^^M\@nil}^^A + }^^A + \Hy@tempa + }^^A + \gdef\Hy@RemovePercentCr#1%^^M#2\@nil{^^A + #1^^A + \ifx\limits#2\limits + \else + \ltx@ReturnAfterFi{^^A + \Hy@RemovePercentCr #2\@nil + }^^A + \fi + }^^A +\endgroup +\providecommand*\hyper@chars{% + \let\#\hyper@hash + \let\%\@percentchar + \Hy@safe@activestrue +} +% \end{macrocode} +% +% \begin{macrocode} +\def\hyperlink#1#2{% + \hyper@@link{}{#1}{#2}% +} +% \end{macrocode} +% +% \begin{macrocode} +\def\Hy@VerboseLinkStart#1#2{% + \ifHy@verbose + \begingroup + \Hy@safe@activestrue + \xdef\Hy@VerboseGlobalTemp{(#1) `#2'}% + \Hy@Info{Reference \Hy@VerboseGlobalTemp}% + \xdef\Hy@VerboseGlobalTemp{% + \Hy@VerboseGlobalTemp, % + line \the\inputlineno + }% + \endgroup + \let\Hy@VerboseLinkInfo\Hy@VerboseGlobalTemp + \@onelevel@sanitize\Hy@VerboseLinkInfo + \fi +} +% \end{macrocode} +% \begin{macrocode} +\def\Hy@VerboseLinkInfo{<VerboseLinkInfo>} +\def\Hy@VerboseLinkStop{% + \ifHy@verbose + \begingroup + \edef\x{\endgroup + \write\m@ne{% + Package `hyperref' Info: % + End of reference \Hy@VerboseLinkInfo.% + }% + }% + \x + \fi +} +% \end{macrocode} +% \begin{macrocode} +\def\Hy@VerboseAnchor#1{% + \ifHy@verbose + \begingroup + \Hy@safe@activestrue + \Hy@Info{Anchor `\HyperDestNameFilter{#1}'}% + \endgroup + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\Hy@AllowHyphens{% + \relax + \ifhmode + \penalty\@M + \hskip\z@skip + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareRobustCommand*{\href}[1][]{% + \begingroup + \setkeys{href}{#1}% + \@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}% +} +\def\Hy@href#{% + \hyper@normalise\href@ +} +\begingroup + \catcode`\$=6 % + \catcode`\#=12 % + \gdef\href@$1{\expandafter\href@split$1##\\}% + \gdef\href@split$1#$2#$3\\$4{% + \hyper@@link{$1}{$2}{$4}% + \endgroup + }% +\endgroup +% \end{macrocode} +% Option `page'. +% \begin{macrocode} +\define@key{href}{page}{% + \def\Hy@href@page{#1}% +} +\let\Hy@href@page\@empty +\newcount\c@Hy@tempcnt +\def\theHy@tempcnt{\the\c@Hy@tempcnt} +\def\Hy@MakeRemoteAction{% + \ifx\Hy@href@page\@empty + \def\Hy@href@page{0}% + \else + \setcounter{Hy@tempcnt}{\Hy@href@page}% + \ifnum\c@Hy@tempcnt<\@ne + \Hy@Warning{% + Invalid page number (\theHy@tempcnt)\MessageBreak + for remote PDF file.\MessageBreak + Using page 1% + }% + \def\Hy@href@page{0}% + \else + \global\advance\c@Hy@tempcnt\m@ne + \edef\Hy@href@page{\theHy@tempcnt}% + \fi + \fi +% \end{macrocode} +% If a next action is set, then also a new window +% should be opened. Otherwise AR reclaims that it +% closes the current file with discarding the next actions. +% \begin{macrocode} + \ifx\Hy@href@nextactionraw\@empty + \else + \Hy@pdfnewwindowsettrue + \Hy@pdfnewwindowtrue + \fi +} +% \end{macrocode} +% Option `pdfremotestartview'. +% \begin{macrocode} +\define@key{href}{pdfremotestartview}{% + \setkeys{Hyp}{pdfremotestartview={#1}}% +} +% \end{macrocode} +% Option `pdfnewwindow'. +% \begin{macrocode} +\let\KV@href@pdfnewwindow\KV@Hyp@pdfnewwindow +\let\KV@href@pdfnewwindow@default\KV@Hyp@pdfnewwindow@default +% \end{macrocode} +% Option `ismap'. +% \begin{macrocode} +\newif\ifHy@href@ismap +\define@key{href}{ismap}[true]{% + \ltx@IfUndefined{Hy@href@ismap#1}{% + \Hy@Error{% + Invalid value (#1) for key `ismap'.\MessageBreak + Permitted values are `true' or `false'.\MessageBreak + Ignoring `ismap'% + }\@ehc + }{% + \csname Hy@href@ismap#1\endcsname + }% +} +% \end{macrocode} +% Option `nextactionraw'. +% \begin{macrocode} +\let\Hy@href@nextactionraw\@empty +\define@key{href}{nextactionraw}{% + \edef\Hy@href@nextactionraw{#1}% + \ifx\Hy@href@nextactionraw\@empty + \else + \Hy@Match\Hy@href@nextactionraw{}{% + ^(\HyPat@ObjRef/|<<.*/S[ /].+>>|% + \[( ?\HyPat@ObjRef/|<<.*/S[ /].+>>)+ ?])$% + }{}{% + \Hy@Warning{Invalid value for `nextactionraw':\MessageBreak + \Hy@href@nextactionraw\MessageBreak + The action is discarded% + }% + }% + \ifx\Hy@href@nextactionraw\@empty + \else + \edef\Hy@href@nextactionraw{/Next \Hy@href@nextactionraw}% + \fi + \fi +} +\def\HyPat@ObjRef/{.+} +% \end{macrocode} +% Load package |url.sty| and save the meaning of +% the original \cmd{\url} in \cmd{\nolinkurl}. +% \begin{macrocode} +\RequirePackage{url} +\let\HyOrg@url\url +\def\Hurl{\begingroup \Url} +\DeclareRobustCommand*{\nolinkurl}{\hyper@normalise\nolinkurl@} +\def\nolinkurl@#1{\Hurl{#1}} +\DeclareRobustCommand*{\url}{\hyper@normalise\url@} +\def\url@#1{\hyper@linkurl{\Hurl{#1}}{#1}} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareRobustCommand*{\hyperimage}{\hyper@normalise\hyper@image} +\providecommand\hyper@image[2]{#2} +% \end{macrocode} +% +% \begin{macrocode} +\def\hypertarget#1#2{% + \ifHy@nesting + \hyper@@anchor{#1}{#2}% + \else + \hyper@@anchor{#1}{\relax}#2% + \fi +} +% \end{macrocode} +% |\hyperref| is more complicated, as it includes the concept of a +% category of link, used to make the name. This is not really used in this +% package. |\hyperdef| sets up an anchor in the same way. They each have +% three parameters of category, linkname, and marked text, and |\hyperref| +% also has a first parameter of URL. +% If there is an optional first parameter to |\hyperdef|, +% it is the name of a \LaTeX\ label which can be used in +% a short form of |\hyperref| later, to avoid +% remembering the name and category. +% \begin{macrocode} +\DeclareRobustCommand*{\hyperref}{% + \@ifnextchar[{\Hy@babelnormalise\label@hyperref}\@hyperref +} +\def\Hy@babelnormalise#1[#2]{% + \begingroup + \Hy@safe@activestrue + \edef\Hy@tempa{% + \endgroup + \noexpand#1[{#2}]% + }% + \Hy@tempa +} +\def\@hyperref{\hyper@normalise\@@hyperref} +\def\@@hyperref#1#2#3{% + \edef\ref@one{\ifx\\#2\\\else#2.\fi#3}% + \expandafter\tryhyper@link\ref@one\\{#1}% +} +\def\tryhyper@link#1\\#2{% + \hyper@@link{#2}{#1}% +} +% \end{macrocode} +% +% \begin{macrocode} +\def\hyperdef{\@ifnextchar[{\label@hyperdef}{\@hyperdef}} +\def\@hyperdef#1#2#3{%, category, name, text + \ifx\\#1\\% + \def\Hy@AnchorName{#2}% + \else + \def\Hy@AnchorName{#1.#2}% + \fi + \ifHy@nesting + \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{#3}% + \else + \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{\relax}#3% + \fi +} +% \end{macrocode} +% We also have a need to give a \LaTeX\ \emph{label} to a +% hyper reference, to ease the pain of referring to it later. +% \verb|\hyperrefundefinedlink| may be redefined by a user +% to add colour or other formatting. +% \begin{macrocode} +\let\hyperrefundefinedlink\@firstofone +\def\label@hyperref[#1]{% + \expandafter\label@@hyperref\csname r@#1\endcsname{#1}% +}% +\def\label@@hyperref#1#2#3{% + \ifx#1\relax + \protect\G@refundefinedtrue + \@latex@warning{% + Hyper reference `#2' on page \thepage \space undefined% + }% + \begingroup + \hyperrefundefinedlink{#3}% + \endgroup + \else + \hyper@@link{\expandafter\@fifthoffive#1}% + {\expandafter\@fourthoffive#1\@empty\@empty}{#3}% + \fi +} +\def\label@hyperdef[#1]#2#3#4{% label name, category, name, + % anchor text + \@bsphack + \ifx\\#2\\% + \def\Hy@AnchorName{#3}% + \else + \def\Hy@AnchorName{#2.#3}% + \fi + \if@filesw + \protected@write\@auxout{}{% + \string\newlabel{#1}{{}{}{}{\Hy@AnchorName}{}}% + }% + \fi + \@esphack + \ifHy@nesting + \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{#4}% + \else + \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{\relax}#4% + \fi +} +% \end{macrocode} +% +% \subsection{Link box support for XeTeX} +% +% \begin{macrocode} +\newdimen\XeTeXLinkMargin +\setlength{\XeTeXLinkMargin}{2pt} +\ifxetex + \font\XeTeXLink@font=pzdr at 1sp\relax + \newcommand*{\XeTeXLink@space}{% + \begingroup + \XeTeXLink@font + \@xxxii + \endgroup + }% + \newcommand{\XeTeXLinkBox}[1]{% + \begingroup + \leavevmode + \sbox\z@{#1}% + \begingroup + \dimen@=\dp\z@ + \advance\dimen@\XeTeXLinkMargin + \setbox\tw@=\llap{% + \hb@xt@\XeTeXLinkMargin{% + \lower\dimen@\hbox{\XeTeXLink@space}% + \hss + }% + }% + \dp\tw@=\dp\z@ + \ht\tw@=\ht\z@ + \copy\tw@ + \endgroup + \copy\z@ + \dimen@=\ht\z@ + \advance\dimen@\XeTeXLinkMargin + \setbox\tw@=\rlap{% + \hb@xt@\XeTeXLinkMargin{% + \hss + \raise\dimen@\hbox{\XeTeXLink@space}% + }% + }% + \dp\tw@=\dp\z@ + \ht\tw@=\ht\z@ + \copy\tw@ + \endgroup + }% +\else + \newcommand*{\XeTeXLinkBox}[1]{% + \begingroup + \leavevmode + \sbox\z@{#1}% + \copy\z@ + \endgroup + }% +\fi +% \end{macrocode} +% +% \section{Underlying basic hypertext macros}\label{coremacros} +% +% Links have an optional type, a filename (possibly a URL), +% an internal name, and some marked text. (Caution: the internal +% name may contain babel shorthand characters.) +% If the second parameter is empty, its an internal link, +% otherwise we need to open another file or a URL. +% A link start has a type, and a URL. +% \begin{macrocode} +\def\hyper@@link{\let\Hy@reserved@a\relax + \@ifnextchar[{\hyper@link@}{\hyper@link@[link]}% +} +% #1: type +% #2: URL +% #3: destination name +% #4: text +\def\hyper@link@[#1]#2#3#4{% + \ltx@ifempty{#4}{% link text + \Hy@Warning{Suppressing empty link}% + }{% + \begingroup + \protected@edef\Hy@tempa{#2}% + \edef\Hy@tempb{#3}% + \ifx\Hy@tempa\ltx@empty + \ifx\Hy@tempb\ltx@empty + \Hy@Warning{Suppressing link with empty target}% + \toks@{% + \endgroup + \ltx@secondoftwo + }% + \else + \toks@{% + \endgroup + \hyper@link{#1}% + }% + \fi + \else + \toks@{% + \endgroup + \expandafter\hyper@readexternallink#2\\{#1}% + }% + \fi + \Hy@safe@activesfalse + \toks@\expandafter{% + \the\expandafter\toks@ + \expandafter{\Hy@tempb}{#4}% + }% + \the\toks@ + }% +} +% \end{macrocode} +% The problem here is that the first (URL) parameter may be a +% local \texttt{file:} reference +% (in which case some browsers treat it differently) +% or a genuine URL, in which case we'll have to activate +% a real Web browser. +% Note that a simple name is also a URL, as that is interpreted +% as a relative file name. We have to worry about |#| signs in a local +% file as well. +% +% \begin{macrocode} +\def\hyper@readexternallink#1\\#2#3#4{% + \begingroup + \let\\\relax + \expandafter\endgroup + \expandafter\@@hyper@@readexternallink#1\\{#2}{#3}{#4}% +} +\def\@@hyper@@readexternallink#1\\#2#3#4{% +% \end{macrocode} +% Parameters are: +% \begin{enumerate} +% \item The URL or file name +% \item The type +% \item The internal name +% \item The link string +% \end{enumerate} +% We need to get the 1st parameter properly expanded, +% so we delimit the arguments rather than passing it inside a group. +% \begin{macrocode} + \@hyper@readexternallink{#2}{#3}{#4}#1::\\{#1}% +} +% \end{macrocode} +% Now (potentially), we are passed: +% 1) The link type +% 2) The internal name, +% 3) the link string, +% 4) the URL type (http, mailto, file etc), +% 5) the URL details +% 6) anything after a real : in the URL +% 7) the whole URL again +% \begin{macrocode} +\def\@pdftempwordfile{file}% +\def\@pdftempwordrun{run}% +\def\@hyper@readexternallink#1#2#3#4:#5:#6\\#7{% +% \end{macrocode} +% If there are no colons at all (|#6| is blank), its a local +% file; if the URL type (|#4|) is blank, its probably a Mac filename, +% so treat it like a \texttt{file:} URL. The only flaw is if +% its a relative Mac path, with several colon-separated elements --- +% then we lose. Such names must be prefixed with an explicit |dvi:| +% \begin{macrocode} + \ifx\\#6\\% + \@hyper@linkfile file:#7\\{#3}{#2}{#7}% + \else + \ifx\\#4\\% + \@hyper@linkfile file:#7\\{#3}{#2}{#7}% + \else +% \end{macrocode} +% If the URL type is `file', pass it for local opening +% \begin{macrocode} + \def\@pdftempa{#4}% + \ifx\@pdftempa\@pdftempwordfile + \@hyper@linkfile#7\\{#3}{#2}{#7}% + \else +% \end{macrocode} +% if it starts `run:', its to launch an application. +% \begin{macrocode} + \ifx\@pdftempa\@pdftempwordrun + \ifHy@pdfa + \Hy@Error{% + PDF/A: Launch action is prohibited% + }\@ehc + \begingroup + \leavevmode + #2% + \endgroup + \else + \@hyper@launch#7\\{#3}{#2}% + \fi + \else +% \end{macrocode} +% otherwise its a URL +% \begin{macrocode} + \hyper@linkurl{#3}{#7\ifx\\#2\\\else\hyper@hash#2\fi}% + \fi + \fi + \fi + \fi +} +% \end{macrocode} +% By default, turn |run:| into |file:| +% \begin{macrocode} +\def\@hyper@launch run:#1\\#2#3{% filename, anchor text, linkname + \hyper@linkurl{#2}{% + \Hy@linkfileprefix + #1% + \ifx\\#3\\% + \else + \hyper@hash + #3% + \fi + }% +} +% \end{macrocode} +% D P Story <story@uakron.edu> pointed out that relative paths +% starting .. fell over. Switched to using |\filename@parse| to +% solve this. +% \begin{macrocode} +\def\@hyper@linkfile file:#1\\#2#3#4{% + %file url,link string, name, original uri + \filename@parse{#1}% + \ifx\filename@ext\relax + \edef\filename@ext{\XR@ext}% + \fi + \def\use@file{\filename@area\filename@base.\filename@ext}% + \Hy@IfStringEndsWith\filename@ext\XR@ext{% + \hyper@linkfile{#2}{\use@file}{#3}% + }{% + \ifx\@baseurl\@empty + \hyper@linkurl{#2}{% + #4\ifx\\#3\\\else\hyper@hash#3\fi + }% + \else + \hyper@linkurl{#2}{\use@file\ifx\\#3\\\else\hyper@hash#3\fi}% + \fi + }% +} +% \end{macrocode} +% \begin{macrocode} +\def\Hy@IfStringEndsWith#1#2{% + \begingroup + \edef\x{#1}% + \@onelevel@sanitize\x + \edef\x{.\x$}% + \edef\y{#2}% + \@onelevel@sanitize\y + \edef\y{.\y$}% + \expandafter\def\expandafter\z\expandafter##\expandafter1\y##2\@nil{% + \endgroup + \ifx\relax##2\relax + \expandafter\ltx@secondoftwo + \else + \expandafter\ltx@firstoftwo + \fi + }% + \expandafter\expandafter\expandafter\z\expandafter\x\y\@nil +} +% \end{macrocode} +% \begin{macrocode} +\def\Hy@StringLocalhost{localhost} +\@onelevel@sanitize\Hy@StringLocalhost +\def\Hy@CleanupFile#1{% + \edef#1{#1}% + \expandafter\Hy@@CleanupFile#1\hbox///\hbox\@nil{#1}% +} +\def\Hy@@CleanupFile#1//#2/#3\hbox#4\@nil#5{% + \begingroup + \toks@{\endgroup}% + \def\x{#1}% + \ifx\x\@empty + \def\x{#2}% + \ifx\x\@empty + \toks@{\endgroup\def#5{/#3}}% + \else + \@onelevel@sanitize\x + \ifx\x\Hy@StringLocalhost + \toks@{\endgroup\def#5{/#3}}% + \fi + \fi + \fi + \the\toks@ +} +% \end{macrocode} +% Anchors have a name, and marked text. +% We have to be careful with the marked text, as if we break +% off part of something to put a |\special| around it, all hell breaks +% loose. Therefore, we check the category code of the first token, +% and only proceed if its safe. Tanmoy sorted this out. +% +% A curious case arises if the original parameter +% was in braces. That means that |#2| comes here a multiple +% letters, and the |noexpand| just looks at the first one, +% putting the rest in the output. Yuck. +% \begin{macrocode} +\long\def\hyper@@anchor#1#2{\@hyper@@anchor#1\relax#2\relax} +\long\def\@hyper@@anchor#1\relax#2#3\relax{% + \ifx\\#1\\% + #2\Hy@Warning{Ignoring empty anchor}% + \else + \def\anchor@spot{#2#3}% + \let\put@me@back\@empty + \ifx\relax#2\relax + \else + \ifHy@nesting + \else + \ifcat a\noexpand#2\relax + \else + \ifcat 0\noexpand#2 \relax + \else +% \typeout{Anchor start is not alphanumeric % +% on input line\the\inputlineno% +% }% + \let\anchor@spot\@empty + \def\put@me@back{#2#3}% + \fi + \fi + \fi + \fi + \ifHy@activeanchor + \anchor@spot + \else + \hyper@anchor{#1}% + \fi + \expandafter\put@me@back + \fi + \let\anchor@spot\@empty +} +\let\anchor@spot\ltx@empty +% \end{macrocode} +% +% \section{Option `destlabel'} +% +% \begin{macrocode} +\ifHy@destlabel +% \end{macrocode} +% +% \begin{macro}{\hyper@newdestlabel} +% \begin{macrocode} + \def\hyper@newdestlabel#1#2{% + \begingroup + \Hy@safe@activestrue + \edef\x{\endgroup + \noexpand\@newl@bel{HyDL}{#1}{#2}% + }% + \x + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hyper@destlabel@hook} +% \begin{macrocode} + \providecommand*{\hyper@destlabel@hook}{}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hy@DestRename} +% \begin{macrocode} + \newcommand*{\Hy@DestRename}[2]{% + \ltx@IfUndefined{HyDL!#1}{% + \begingroup + \Hy@safe@activestrue + \edef\dest@name{#1}% + \edef\label@name{#2}% + \hyper@destlabel@hook + \Hy@IsNotEmpty{dest@name}{% + \Hy@IsNotEmpty{label@name}{% + \global\expandafter + \let\csname HyDL!#1\endcsname\ltx@empty + \if@filesw + \protected@write\@auxout{}{% + \string\hyper@newdestlabel + {#1}% + {\label@name}% + }% + \fi + }% + }% + \endgroup + }{}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyperDestRename} +% \begin{macrocode} + \newcommand*{\HyperDestRename}[2]{% + \AtBeginDocument{% + \Hy@DestRename{#1}{#2}% + }% + }% + \AtBeginDocument{% + \let\HyperDestRename\Hy@DestRename + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@IsNotEmpty} +% \begin{macrocode} + \def\Hy@IsNotEmpty#1{% + \ltx@IfUndefined{#1}\ltx@gobble{% + \expandafter\ifx\csname#1\endcsname\ltx@empty + \expandafter\ltx@gobble + \else + \expandafter\ltx@firstofone + \fi + }% + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + \ltx@GlobalAppendToMacro\label@hook{% + \HyperDestRename\@currentHref\label@name + }% +% \end{macrocode} +% +% \begin{macro}{\HyperDestLabelReplace} +% \begin{macrocode} + \def\HyperDestLabelReplace#1{% + \ltx@ifundefined{HyDL@#1}{% + #1% + }{% + \csname HyDL@#1\endcsname + }% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyperDestNameFilter} +% \begin{macrocode} +\let\HyperDestNameFilter\HyperDestLabelReplace +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\else +% \end{macrocode} +% \begin{macro}{\hyper@newdestlabel} +% \begin{macrocode} + \let\hyper@newdestlabel\ltx@gobbletwo +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyperDestLabelReplace} +% \begin{macrocode} + \let\HyperDestLabelReplace\ltx@firstofone +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyperDestRename} +% \begin{macrocode} +% \end{macrocode} + \let\HyperDestRename\ltx@gobbletwo +% \end{macro} +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \begin{macrocode} +\Hy@DisableOption{destlabel} +% \end{macrocode} +% +% Provide a dummy default definition of \cs{hyper@newdestlabel} +% inside the .aux files. +% \begin{macrocode} +\AddLineBeginAux{% + \string\providecommand\string\hyper@newdestlabel[2]{}% +} +% \end{macrocode} +% +% \section{Compatibility with the \emph{\LaTeX{}2html} package}\label{latex2html} +% +% Map our macro names on to Nikos', so that documents prepared +% for that system will work without change. +% +% Note, however, that the whole complicated structure for +% segmenting documents is not supported; it is assumed that the user +% will load |html.sty| first, and then |hyperref.sty|, so that the +% definitions in |html.sty| take effect, and are then overridden +% in a few circumstances by this package. +% \begin{macrocode} +\let\htmladdimg\hyperimage +% \end{macrocode} +% +% \begin{macrocode} +\def\htmladdnormallink#1#2{\href{#2}{#1}} +\def\htmladdnormallinkfoot#1#2{\href{#2}{#1}\footnote{#2}} +\def\htmlref#1#2{% anchor text, label + \label@hyperref[{#2}]{#1}% +} +% \end{macrocode} +% This is really too much. The \LaTeX2html package defines its own +% |\hyperref| command, with a different syntax. Was this always here? +% Its weird, anyway. We interpret it in the `printed' way, since +% we are about fidelity to the page. +% \begin{macrocode} +\def\@@latextohtmlX{% + \let\hhyperref\hyperref + \def\hyperref##1##2##3##4{% anchor text for HTML + % text to print before label in print + % label + % post-label text in print + ##2\ref{##4}##3% + }% +} +% \end{macrocode} +% +% \section{Forms creation} +% Allow for creation of PDF or HTML forms. The effects here are +% limited somewhat by the need to support both output formats, +% so it may not be as clever as something which only wants +% to make PDF forms. +% +% I (Sebastian) could not have started this without the +% encouragement of T V Raman. +% +% \subsection{Field flags} +% +% The field flags are organized in a bit set. +% \begin{macrocode} +\RequirePackage{bitset} +% \end{macrocode} +% +% Each flag has a option name, an \cs{if} switch, +% and a bit position. The default is always `false', the +% flag is clear. +% This is also the default of the switch created by \cs{newif}. +% +% The names of the flags in the PDF specification (1.7) +% are used as lowercase option names. +% \begin{macro}{\HyField@NewFlag} +% |#1|: type: |F| annot flags, |Ff| field flags\\ +% |#2|: PDF name\\ +% |#3|: PDF position +% \begin{macrocode} +\def\HyField@NewFlag#1#2{% + \lowercase{\HyField@NewOption{#2}}% + \lowercase{\HyField@NewBitsetFlag{#2}}{#2}{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@NewFlagOnly} +% \begin{macrocode} +\def\HyField@NewFlagOnly#1#2{% + \lowercase{\HyField@NewBitsetFlag{#2}}{#2}{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@NewOption} +% |#1|: option name +% \begin{macrocode} +\def\HyField@NewOption#1{% + \expandafter\newif\csname ifFld@#1\endcsname + \define@key{Field}{#1}[true]{% + \lowercase{\Field@boolkey{##1}}{#1}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@NewBitsetFlag} +% Package `bitset' uses zero based positions, the +% PDF specification starts with one.\\ +% |#1|: option\\ +% |#2|: PDF name\\ +% |#3|: type: |F| annot flags, |Ff| field flags\\ +% |#4|: PDF position +% \begin{macrocode} +\def\HyField@NewBitsetFlag#1#2#3#4{% + \begingroup + \count@=#4\relax + \advance\count@\m@ne + \def\x##1{% + \endgroup + \expandafter\def\csname HyField@#3@#1\endcsname{##1}% + \expandafter\ifx\csname HyField@#3@##1\endcsname\relax + \expandafter\edef\csname HyField@#3@##1\endcsname{% + (\number#4) #2% + }% + \else + \expandafter\edef\csname HyField@#3@##1\endcsname{% + \csname HyField@#3@##1\endcsname + /#2% + }% + \fi + }% + \expandafter\x\expandafter{\the\count@}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@UseFlag} +% The bit set is |HyField@#1| +% \begin{macrocode} +\def\HyField@UseFlag#1#2{% + \lowercase{\HyField@@UseFlag{#2}}{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@@UseFlag} +% \begin{macrocode} +\def\HyField@@UseFlag#1#2{% + \bitsetSetValue{HyField@#2}{% + \csname HyField@#2@#1\endcsname + }{% + \csname ifFld@#1\endcsname 1\else 0\fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@SetFlag} +% The bit set is |HyField@#1| +% \begin{macrocode} +\def\HyField@SetFlag#1#2{% + \lowercase{\HyField@@SetFlag{#2}}{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@@SetFlag} +% \begin{macrocode} +\def\HyField@@SetFlag#1#2{% + \bitsetSetValue{HyField@#2}{% + \csname HyField@#2@#1\endcsname + }{1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@PrintFlags} +% \begin{macrocode} +\def\HyField@PrintFlags#1#2{% + \ifHy@verbose + \begingroup + \let\Hy@temp\@empty + \let\MessageBreak\relax + \expandafter\@for\expandafter\x\expandafter:\expandafter=% + \bitsetGetSetBitList{HyField@#1}\do{% + \edef\Hy@temp{% + \Hy@temp + \csname HyField@#1@\x\endcsname\MessageBreak + }% + }% + \edef\x{\endgroup + \noexpand\Hy@Info{% + Field flags: % + \expandafter\ifx\@car#1\@nil S\else/\fi + #1 % + \bitsetGetDec{HyField@#1} % + (0x\bitsetGetHex{HyField@#1}{32})\MessageBreak + \Hy@temp + for #2% + }% + }\x + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Declarations of field flags} +% +% ``Table 8.70 Field flags common to all field types'' +% \begin{macrocode} +\HyField@NewFlag{Ff}{ReadOnly}{1} +\HyField@NewFlag{Ff}{Required}{2} +\HyField@NewFlag{Ff}{NoExport}{3} +% \end{macrocode} +% ``Table 8.75 Field flags specific to button fields'' +% \begin{macrocode} +\HyField@NewFlag{Ff}{NoToggleToOff}{15} +\HyField@NewFlag{Ff}{Radio}{16} +\HyField@NewFlag{Ff}{Pushbutton}{17} +\HyField@NewFlag{Ff}{RadiosInUnison}{26} +% \end{macrocode} +% ``Table 8.77 Field flags specific to text fields'' +% \begin{macrocode} +\HyField@NewFlag{Ff}{Multiline}{13} +\HyField@NewFlag{Ff}{Password}{14} +\HyField@NewFlag{Ff}{FileSelect}{21}% PDF 1.4 +\HyField@NewFlag{Ff}{DoNotSpellCheck}{23}% PDF 1.4 +\HyField@NewFlag{Ff}{DoNotScroll}{24}% PDF 1.4 +\HyField@NewFlag{Ff}{Comb}{25}% PDF 1.4 +\HyField@NewFlag{Ff}{RichText}{26}% PDF 1.5 +% \end{macrocode} +% ``Table 8.79 field flags specific to choice fields'' +% \begin{macrocode} +\HyField@NewFlag{Ff}{Combo}{18} +\HyField@NewFlag{Ff}{Edit}{19} +\HyField@NewFlag{Ff}{Sort}{20} +\HyField@NewFlag{Ff}{MultiSelect}{22}% PDF 1.4 +% \HyField@NewFlag{Ff}{DoNotSpellCheck}{23}% PDF 1.4 +\HyField@NewFlag{Ff}{CommitOnSelChange}{27}% PDF 1.5 +% \end{macrocode} +% Signature fields are not supported. +% +% Until 6.76i hyperref uses field option `combo' to set +% three flags `Combo', `Edit', and `Sort'. Option `popdown' sets +% flag `Combo' only. +% \begin{macrocode} +\newif\ifFld@popdown +\define@key{Field}{popdown}[true]{% + \lowercase{\Field@boolkey{#1}}{popdown}% +} +% \end{macrocode} +% +% Annotation flags. The form objects are widget annotations. +% There are two flags for readonly settings, the one in the annotation +% flags is ignored, instead the other in the field flags is used. +% +% Flag |Print| is not much useful, because hyperref do not +% use the appearance entry of the annotations for most fields. +% \begin{macrocode} +\HyField@NewFlag{F}{Invisible}{1} +\HyField@NewFlag{F}{Hidden}{2}% PDF 1.2 +\HyField@NewFlag{F}{Print}{3}% PDF 1.2 +\HyField@NewFlag{F}{NoZoom}{4}% PDF 1.2 +\HyField@NewFlag{F}{NoRotate}{5}% PDF 1.3 +\HyField@NewFlag{F}{NoView}{6}% PDF 1.3 +\HyField@NewFlag{F}{Locked}{8}% PDF 1.4 +\HyField@NewFlag{F}{ToggleNoView}{9}% PDF 1.5 +\HyField@NewFlag{F}{LockedContents}{10}% PDF 1.7 +% \end{macrocode} +% +% \begin{macrocode} +\ifHy@pdfa + \def\HyField@PDFAFlagWarning#1#2{% + \Hy@Warning{% + PDF/A: Annotation flag `#1' must\MessageBreak + be set to `#2'% + }% + }% + \Fld@invisiblefalse + \def\Fld@invisibletrue{% + \HyField@PDFAFlagWarning{invisible}{false}% + }% + \Fld@hiddenfalse + \def\Fld@hiddentrue{% + \HyField@PDFAFlagWarning{hidden}{false}% + }% + \Fld@printtrue + \def\Fld@printfalse{% + \HyField@PDFAFlagWarning{print}{true}% + }% + \Fld@nozoomtrue + \def\Fld@nozoomfalse{% + \HyField@PDFAFlagWarning{nozoom}{true}% + }% + \Fld@norotatetrue + \def\Fld@norotatefalse{% + \HyField@PDFAFlagWarning{norotate}{true}% + }% + \Fld@noviewfalse + \def\Fld@noviewtrue{% + \HyField@PDFAFlagWarning{noview}{false}% + }% +\fi +% \end{macrocode} +% +% Submit flags. Flag 1 Include/Exclude is not supported, +% use option noexport instead. +% \begin{macrocode} +\HyField@NewFlag{Submit}{IncludeNoValueFields}{2} +\HyField@NewFlagOnly{Submit}{ExportFormat}{3} +\HyField@NewFlag{Submit}{GetMethod}{4} +\HyField@NewFlag{Submit}{SubmitCoordinates}{5} +\HyField@NewFlagOnly{Submit}{XFDF}{6} +\HyField@NewFlag{Submit}{IncludeAppendSaves}{7} +\HyField@NewFlag{Submit}{IncludeAnnotations}{8} +\HyField@NewFlagOnly{Submit}{SubmitPDF}{9} +\HyField@NewFlag{Submit}{CanonicalFormat}{10} +\HyField@NewFlag{Submit}{ExclNonUserAnnots}{11} +\HyField@NewFlag{Submit}{ExclFKey}{12} +\HyField@NewFlag{Submit}{EmbedForm}{14} +% \end{macrocode} +% \begin{macrocode} +\define@key{Field}{export}{% + \lowercase{\def\Hy@temp{#1}}% + \@ifundefined{Fld@export@\Hy@temp}{% + \@onelevel@sanitize\Hy@temp + \Hy@Error{% + Unknown export format `\Hy@temp'.\MessageBreak + Known formats are `FDF', `HTML', `XFDF', and `PDF'% + }\@ehc + }{% + \let\Fld@export\Hy@temp + }% +} +\def\Fld@export{fdf} +\@namedef{Fld@export@fdf}{0}% +\@namedef{Fld@export@html}{1}% +\@namedef{Fld@export@xfdf}{2}% +\@namedef{Fld@export@pdf}{3}% +% \end{macrocode} +% +% \subsubsection{Set submit flags} +% +% \begin{macro}{\HyField@FlagsSubmit} +% \begin{macrocode} +\def\HyField@FlagsSubmit{% + \bitsetReset{HyField@Submit}% + \ifcase\@nameuse{Fld@export@\Fld@export} % + % FDF + \HyField@UseFlag{Submit}{IncludeNoValueFields}% + \HyField@UseFlag{Submit}{SubmitCoordinates}% + \HyField@UseFlag{Submit}{IncludeAppendSaves}% + \HyField@UseFlag{Submit}{IncludeAnnotations}% + \HyField@UseFlag{Submit}{CanonicalFormat}% + \HyField@UseFlag{Submit}{ExclNonUserAnnots}% + \HyField@UseFlag{Submit}{ExclFKey}% + \HyField@UseFlag{Submit}{EmbedForm}% + \or % HTML + \HyField@SetFlag{Submit}{ExportFormat}% + \HyField@UseFlag{Submit}{IncludeNoValueFields}% + \HyField@UseFlag{Submit}{GetMethod}% + \HyField@UseFlag{Submit}{SubmitCoordinates}% + \HyField@UseFlag{Submit}{CanonicalFormat}% + \or % XFDF + \HyField@SetFlag{Submit}{XFDF}% + \HyField@UseFlag{Submit}{IncludeNoValueFields}% + \HyField@UseFlag{Submit}{SubmitCoordinates}% + \HyField@UseFlag{Submit}{CanonicalFormat}% + \or % PDF + \HyField@SetFlag{Submit}{SubmitPDF}% + \HyField@UseFlag{Submit}{GetMethod}% + \fi + \HyField@PrintFlags{Submit}{submit button field}% + \bitsetIsEmpty{HyField@Submit}{% + \let\Fld@submitflags\ltx@empty + }{% + \edef\Fld@submitflags{/Flags \bitsetGetDec{HyField@Submit}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Set annot flags in fields} +% +% \begin{macro}{\HyField@FlagsAnnot} +% \begin{macrocode} +\def\HyField@FlagsAnnot#1{% + \bitsetReset{HyField@F}% + \HyField@UseFlag{F}{Invisible}% + \HyField@UseFlag{F}{Hidden}% + \HyField@UseFlag{F}{Print}% + \HyField@UseFlag{F}{NoZoom}% + \HyField@UseFlag{F}{NoRotate}% + \HyField@UseFlag{F}{NoView}% + \HyField@UseFlag{F}{Locked}% + \HyField@UseFlag{F}{ToggleNoView}% + \HyField@UseFlag{F}{LockedContents}% + \HyField@PrintFlags{F}{#1}% + \bitsetIsEmpty{HyField@F}{% + \let\Fld@annotflags\ltx@empty + }{% + \edef\Fld@annotflags{/F \bitsetGetDec{HyField@F}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Pushbutton field} +% +% \begin{macro}{\HyField@FlagsPushButton} +% \begin{macrocode} +\def\HyField@FlagsPushButton{% + \HyField@FlagsAnnot{push button field}% + \bitsetReset{HyField@Ff}% + \HyField@UseFlag{Ff}{ReadOnly}% + \HyField@UseFlag{Ff}{Required}% + \HyField@UseFlag{Ff}{NoExport}% + \HyField@SetFlag{Ff}{Pushbutton}% + \HyField@PrintFlags{Ff}{push button field}% + \bitsetIsEmpty{HyField@Ff}{% + \let\Fld@flags\ltx@empty + }{% + \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Check box field} +% +% \begin{macro}{\HyField@FlagsCheckBox} +% \begin{macrocode} +\def\HyField@FlagsCheckBox{% + \HyField@FlagsAnnot{check box field}% + \bitsetReset{HyField@Ff}% + \HyField@UseFlag{Ff}{ReadOnly}% + \HyField@UseFlag{Ff}{Required}% + \HyField@UseFlag{Ff}{NoExport}% + \HyField@PrintFlags{Ff}{check box field}% + \bitsetIsEmpty{HyField@Ff}{% + \let\Fld@flags\ltx@empty + }{% + \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Radio button field} +% +% \begin{macro}{\HyField@FlagsRadioButton} +% \begin{macrocode} +\def\HyField@FlagsRadioButton{% + \HyField@FlagsAnnot{radio button field}% + \bitsetReset{HyField@Ff}% + \HyField@UseFlag{Ff}{ReadOnly}% + \HyField@UseFlag{Ff}{Required}% + \HyField@UseFlag{Ff}{NoExport}% + \HyField@UseFlag{Ff}{NoToggleToOff}% + \HyField@SetFlag{Ff}{Radio}% + \HyField@UseFlag{Ff}{RadiosInUnison}% + \HyField@PrintFlags{Ff}{radio button field}% + \bitsetIsEmpty{HyField@Ff}{% + \let\Fld@flags\ltx@empty + }{% + \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Text fields} +% +% \begin{macro}{\HyField@FlagsText} +% \begin{macrocode} +\def\HyField@FlagsText{% + \HyField@FlagsAnnot{text field}% + \bitsetReset{HyField@Ff}% + \HyField@UseFlag{Ff}{ReadOnly}% + \HyField@UseFlag{Ff}{Required}% + \HyField@UseFlag{Ff}{NoExport}% + \HyField@UseFlag{Ff}{Multiline}% + \HyField@UseFlag{Ff}{Password}% + \HyField@UseFlag{Ff}{FileSelect}% + \HyField@UseFlag{Ff}{DoNotSpellCheck}% + \HyField@UseFlag{Ff}{DoNotScroll}% + \ifFld@comb + \ifcase0\ifFld@multiline + \else\ifFld@password + \else\ifFld@fileselect + \else 1\fi\fi\fi\relax + \Hy@Error{% + Field option `comb' cannot used together with\MessageBreak + `multiline', `password', or `fileselect'% + }\@ehc + \else + \HyField@UseFlag{Ff}{Comb}% + \fi + \fi + \HyField@UseFlag{Ff}{RichText}% + \HyField@PrintFlags{Ff}{text field}% + \bitsetIsEmpty{HyField@Ff}{% + \let\Fld@flags\ltx@empty + }{% + \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Choice fields} +% +% \begin{macro}{\HyField@FlagsChoice} +% \begin{macrocode} +\def\HyField@FlagsChoice{% + \HyField@FlagsAnnot{choice field}% + \bitsetReset{HyField@Ff}% + \HyField@UseFlag{Ff}{ReadOnly}% + \HyField@UseFlag{Ff}{Required}% + \HyField@UseFlag{Ff}{NoExport}% + \HyField@UseFlag{Ff}{Combo}% + \ifFld@combo + \HyField@UseFlag{Ff}{Edit}% + \fi + \HyField@UseFlag{Ff}{Sort}% + \HyField@UseFlag{Ff}{MultiSelect}% + \ifFld@combo + \ifFld@edit + \HyField@UseFlag{Ff}{DoNotSpellCheck}% + \fi + \fi + \HyField@UseFlag{Ff}{CommitOnSelChange}% + \HyField@PrintFlags{Ff}{choice field}% + \bitsetIsEmpty{HyField@Ff}{% + \let\Fld@flags\ltx@empty + }{% + \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Choice field} +% +% \begin{macro}{\HyField@PDFChoices} +% |#1|: list of choices in key value syntax, key = exported name, +% value = displayed text.\\ +% Input: \cs{Fld@default}, \cs{Fld@value}, \cs{ifFld@multiselect}\\ +% Result: \cs{Fld@choices} with entries: |/Opt|, |/DV|, |/V|, |/I|. +% \begin{macrocode} +\def\HyField@PDFChoices#1{% + \begingroup + \global\let\Fld@choices\ltx@empty + \let\HyTmp@optlist\ltx@empty + \let\HyTmp@optitem\relax + \count@=0 % + \kv@parse{#1}{% + \Hy@pdfstringdef\kv@key\kv@key + \ifx\kv@value\relax + \ifnum\Hy@pdfversion<3 % implementation note 122, PDF spec 1.7 + \xdef\Fld@choices{\Fld@choices[(\kv@key)(\kv@key)]}% + \else + \xdef\Fld@choices{\Fld@choices(\kv@key)}% + \fi + \else + \Hy@pdfstringdef\kv@value\kv@value + \xdef\Fld@choices{\Fld@choices[(\kv@value)(\kv@key)]}% + \fi + \edef\HyTmp@optlist{% + \HyTmp@optlist + \HyTmp@optitem{\the\count@}{\kv@key}0% + }% + \advance\count@ by 1 % + \@gobbletwo + }% + \xdef\Fld@choices{/Opt[\Fld@choices]}% + \ifFld@multiselect + \HyField@@PDFChoices{DV}\Fld@default + \HyField@@PDFChoices{V}\Fld@value + \else + \ifx\Fld@default\relax + \else + \pdfstringdef\Hy@gtemp\Fld@default + \xdef\Fld@choices{\Fld@choices/DV(\Hy@gtemp)}% + \fi + \ifx\Fld@value\relax + \else + \pdfstringdef\Hy@gtemp\Fld@value + \xdef\Fld@choices{\Fld@choices/V(\Hy@gtemp)}% + \fi + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@@PDFChoices} +% \begin{macrocode} +\def\HyField@@PDFChoices#1#2{% + \ifx#2\relax + \else + \count@=0 % + \def\HyTmp@optitem##1##2##3{% + \def\HyTmp@key{##2}% + \ifx\HyTmp@key\Hy@gtemp + \expandafter\def\expandafter\HyTmp@optlist\expandafter{% + \HyTmp@optlist + \HyTmp@optitem{##1}{##2}1% + }% + \let\HyTmp@found=Y% + \else + \expandafter\def\expandafter\HyTmp@optlist\expandafter{% + \HyTmp@optlist + \HyTmp@optitem{##1}{##2}##3% + }% + \fi + }% + \expandafter\comma@parse\expandafter{#2}{% + \pdfstringdef\Hy@gtemp\comma@entry + \let\HyTmp@found=N % + \expandafter\let\expandafter\HyTmp@optlist\expandafter\@empty + \HyTmp@optlist + \ifx\HyTmp@found Y% + \advance\count@ by 1 % + \else + \@onelevel@sanitize\comma@entry + \PackageWarning{hyperref}{% + \string\ChoiceBox: Ignoring value `\comma@entry',% + \MessageBreak + it cannot be found in the choices% + }% + \fi + \@gobble + }% + \def\HyTmp@optitem##1##2##3{% + \ifnum##3=1 % + (##2)% + \fi + }% + \ifcase\count@ + \or + \xdef\Fld@choices{\Fld@choices/#1\HyTmp@optlist}% + \else + \xdef\Fld@choices{\Fld@choices/#1[\HyTmp@optlist]}% + \ifx#1V% + \def\HyTmp@optitem##1##2##3{% + \ifnum##3=1 % + \@firstofone{ ##1}% + \fi + }% + \edef\HyTmp@optlist{\HyTmp@optlist}% + \xdef\Fld@choices{% + \Fld@choices + /I[\expandafter\@firstofone\HyTmp@optlist]% + }% + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Forms} +% +% \begin{macro}{\HyField@SetKeys} +% \begin{macrocode} +\def\HyField@SetKeys{% + \kvsetkeys{Field}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\newif\ifFld@checked +\newif\ifFld@disabled +\Fld@checkedfalse +\Fld@disabledfalse +\newcount\Fld@menulength +\newdimen\Field@Width +\newdimen\Fld@charsize +\Fld@charsize=10\p@ +\def\Fld@maxlen{0} +\def\Fld@align{0} +\def\Fld@color{0 0 0 rg} +\def\Fld@bcolor{1 1 1} +\def\Fld@bordercolor{1 0 0} +\def\Fld@bordersep{1\p@} +\def\Fld@borderwidth{1} +\def\Fld@borderstyle{S} +\def\Fld@cbsymbol{4} +\def\Fld@radiosymbol{H} +\def\Fld@rotation{0} +\def\Form{\@ifnextchar[{\@Form}{\@Form[]}} +\def\endForm{\@endForm} +\newif\ifForm@html +\Form@htmlfalse +\def\Form@boolkey#1#2{% + \csname Form@#2\ifx\relax#1\relax true\else#1\fi\endcsname +} +\define@key{Form}{action}{% + \hyper@normalise\Hy@DefFormAction{#1}% +} +\def\Hy@DefFormAction{\def\Form@action} +\def\enc@@html{html} +\define@key{Form}{encoding}{% + \def\Hy@tempa{#1}% + \ifx\Hy@tempa\enc@@html + \Form@htmltrue + \def\Fld@export{html}% + \else + \Hy@Warning{% + Form `encoding' key with \MessageBreak + unknown value `#1'% + }% + \Form@htmlfalse + \fi +} +\define@key{Form}{method}{% + \lowercase{\def\Hy@temp{#1}}% + \@ifundefined{Form@method@\Hy@temp}{% + \@onelevel@sanitize\Hy@temp + \Hy@Error{% + Unknown method `\Hy@temp'.\MessageBreak + Known values are `post' and `get'% + }\@ehc + }{% + \let\Form@method\Hy@temp + \ifcase\@nameuse{Form@method@\Hy@temp} % + \Fld@getmethodfalse + \else + \Fld@getmethodtrue + \fi + }% +} +\def\Form@method{} +\@namedef{Form@method@post}{0} +\@namedef{Form@method@get}{1} +% \end{macrocode} +% \begin{macrocode} +\newif\ifHyField@NeedAppearances +\def\HyField@NeedAppearancesfalse{% + \global\let\ifHyField@NeedAppearances\iffalse +} +\def\HyField@NeedAppearancestrue{% + \global\let\ifHyField@NeedAppearances\iftrue +} +\HyField@NeedAppearancestrue +\define@key{Form}{NeedAppearances}[true]{% + \edef\Hy@tempa{#1}% + \ifx\Hy@tempa\Hy@true + \HyField@NeedAppearancestrue + \else + \ifx\Hy@tempa\Hy@false + \HyField@NeedAppearancesfalse + \else + \Hy@Error{% + Unexpected value `\Hy@tempa'\MessageBreak + of option `NeedAppearances' instead of\MessageBreak + `true' or `false'% + }\@ehc + \fi + \fi +} +\def\Field@boolkey#1#2{% + \csname Fld@#2\ifx\relax#1\relax true\else#1\fi\endcsname +} +\ifHy@texht + \newtoks\Field@toks + \Field@toks={ }% + \def\Field@addtoks#1#2{% + \edef\@processme{\Field@toks{\the\Field@toks\space #1="#2"}}% + \@processme + }% +\else + \def\Hy@WarnHTMLFieldOption#1{% + \Hy@Warning{% + HTML field option `#1'\MessageBreak + is ignored% + }% + }% +\fi +\def\Fld@checkequals#1=#2=#3\\{% + \def\@currDisplay{#1}% + \ifx\\#2\\% + \def\@currValue{#1}% + \else + \def\@currValue{#2}% + \fi +} +\define@key{Field}{loc}{% + \def\Fld@loc{#1}% +} +\define@key{Field}{checked}[true]{% + \lowercase{\Field@boolkey{#1}}{checked}% +} +\define@key{Field}{disabled}[true]{% + \lowercase{\Field@boolkey{#1}}{disabled}% +} +\ifHy@texht + \define@key{Field}{accesskey}{% + \Field@addtoks{accesskey}{#1}% + }% + \define@key{Field}{tabkey}{% + \Field@addtoks{tabkey}{#1}% + }% +\else + \define@key{Field}{accesskey}{% + \Hy@WarnHTMLFieldOption{accesskey}% + }% + \define@key{Field}{tabkey}{% + \Hy@WarnHTMLFieldOption{tabkey}% + }% +\fi +\define@key{Field}{name}{% + \def\Fld@name{#1}% +} +\let\Fld@altname\relax +\define@key{Field}{altname}{% + \def\Fld@altname{#1}% +} +\let\Fld@mappingname\relax +\define@key{Field}{mappingname}{% + \def\Fld@mappingname{#1}% +} +\define@key{Field}{width}{% + \def\Fld@width{#1}% + \Field@Width#1\setbox0=\hbox{m}% +} +\define@key{Field}{maxlen}{% + \def\Fld@maxlen{#1}% +} +\define@key{Field}{menulength}{% + \Fld@menulength=#1\relax +} +\define@key{Field}{height}{% + \def\Fld@height{#1}% +} +\define@key{Field}{charsize}{% + \setlength{\Fld@charsize}{#1}% +} +\define@key{Field}{borderwidth}{% + \Hy@defaultbp\Fld@borderwidth{#1}% +} +\def\Hy@defaultbp#1#2{% + \begingroup + \afterassignment\Hy@defaultbpAux + \dimen@=#2bp\relax{#1}{#2}% +} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname dimexpr\endcsname\relax + \def\Hy@defaultbpAux#1\relax#2#3{% + \ifx!#1!% + \endgroup + \def#2{#3}% + \else + \dimen@=.99626\dimen@ + \edef\x{\endgroup + \def\noexpand#2{% + \strip@pt\dimen@ + }% + }\x + \fi + }% +\else + \def\Hy@defaultbpAux#1\relax#2#3{% + \ifx!#1!% + \endgroup + \def#2{#3}% + \else + \edef\x{\endgroup + \def\noexpand#2{% + \strip@pt\dimexpr\dimen@*800/803\relax + }% + }\x + \fi + }% +\fi +\define@key{Field}{borderstyle}{% + \let\Hy@temp\Fld@borderstyle + \def\Fld@borderstyle{#1}% + \Hy@Match\Fld@borderstyle{}{% + ^[SDBIU]$% + }{}{% + \Hy@Warning{% + Invalid value `\@pdfborderstyle'\MessageBreak + for option `pdfborderstyle'. Valid values:\MessageBreak + \space\space S (Solid), D (Dashed), B (Beveled),\MessageBreak + \space\space I (Inset), U (Underline)\MessageBreak + Option setting is ignored% + }% + \let\Fld@borderstyle\Hy@temp + }% +} +\define@key{Field}{bordersep}{% + \def\Fld@bordersep{#1}% +} +\define@key{Field}{default}{% + \def\Fld@default{#1}% +} +\define@key{Field}{align}{% + \def\Fld@align{#1}% +} +\define@key{Field}{value}{% + \Hy@pdfstringdef\Fld@value{#1}% +} +\define@key{Field}{checkboxsymbol}{% + \Fld@DingDef\Fld@cbsymbol{#1}% +} +\define@key{Field}{radiosymbol}{% + \Fld@DingDef\Fld@radiosymbol{#1}% +} +\def\Fld@DingDef#1#2{% + \let\Fld@temp\ltx@empty + \Fld@@DingDef#2\ding{}\@nil + \let#1\Fld@temp +} +\def\Fld@@DingDef#1\ding#2#3\@nil{% + \expandafter\def\expandafter\Fld@temp\expandafter{% + \Fld@temp + #1% + }% + \ifx\\#3\\% + \expandafter\@gobble + \else + \begingroup + \lccode`0=#2\relax + \lowercase{\endgroup + \expandafter\def\expandafter\Fld@temp\expandafter{% + \Fld@temp + 0% + }% + }% + \expandafter\@firstofone + \fi + {% + \Fld@@DingDef#3\@nil + }% +} +% \end{macrocode} +% \begin{macrocode} +\define@key{Field}{rotation}{% + \def\Fld@rotation{#1}% +} +% \end{macrocode} +% \begin{macrocode} +\define@key{Field}{backgroundcolor}{% + \HyColor@FieldBColor{#1}\Fld@bcolor{hyperref}{backgroundcolor}% +} +\define@key{Field}{bordercolor}{% + \HyColor@FieldBColor{#1}\Fld@bordercolor{hyperref}{bordercolor}% +} +\define@key{Field}{color}{% + \HyColor@FieldColor{#1}\Fld@color{hyperref}{color}% +} +% \end{macrocode} +% \begin{macrocode} +\let\Fld@onclick@code\ltx@empty +\let\Fld@format@code\ltx@empty +\let\Fld@validate@code\ltx@empty +\let\Fld@calculate@code\ltx@empty +\let\Fld@keystroke@code\ltx@empty +\let\Fld@onfocus@code\ltx@empty +\let\Fld@onblur@code\ltx@empty +\let\Fld@onmousedown@code\ltx@empty +\let\Fld@onmouseup@code\ltx@empty +\let\Fld@onenter@code\ltx@empty +\let\Fld@onexit@code\ltx@empty +\def\Hy@temp#1{% + \expandafter\Hy@@temp\csname Fld@#1@code\endcsname{#1}% +} +\def\Hy@@temp#1#2{% + \ifHy@pdfa + \define@key{Field}{#2}{% + \Hy@Error{% + PDF/A: Additional action `#2' is prohibited% + }\@ehc + }% + \else + \define@key{Field}{#2}{% + \def#1{##1}% + }% + \fi +} +\Hy@temp{keystroke} +\Hy@temp{format} +\Hy@temp{validate} +\Hy@temp{calculate} +\Hy@temp{onfocus} +\Hy@temp{onblur} +\Hy@temp{onenter} +\Hy@temp{onexit} +% \end{macrocode} +% \begin{macrocode} +\let\Fld@calculate@sortkey\ltx@empty +\define@key{Field}{calculatesortkey}[1]{% + \def\Fld@calculate@sortkey{#1}% +} +% \end{macrocode} +% \begin{macrocode} +\ifHy@texht + \def\Hy@temp#1{% + \define@key{Field}{#1}{% + \Field@addtoks{#1}{##1}% + }% + }% +\else + \def\Hy@temp#1{% + \define@key{Field}{#1}{% + \Hy@WarnHTMLFieldOption{#1}% + }% + }% +\fi +\Hy@temp{ondblclick} +\Hy@temp{onmousedown} +\Hy@temp{onmouseup} +\Hy@temp{onmouseover} +\Hy@temp{onmousemove} +\Hy@temp{onmouseout} +\Hy@temp{onkeydown} +\Hy@temp{onkeyup} +\Hy@temp{onselect} +\Hy@temp{onchange} +\Hy@temp{onkeypress} +\ifHy@texht + \define@key{Field}{onclick}{% + \Field@addtoks{onclick}{#1}% + }% +\else + \ifHy@pdfa + \define@key{Field}{onclick}{% + \Hy@Error{% + PDF/A: Action `onclick' is prohibited% + }\@ehc + }% + \else + \define@key{Field}{onclick}{% + \def\Fld@onclick@code{#1}% + }% + \fi +\fi +% \end{macrocode} +% \begin{macrocode} +\DeclareRobustCommand\TextField{% + \@ifnextchar[{\@TextField}{\@TextField[]}% +} +\DeclareRobustCommand\ChoiceMenu{% + \@ifnextchar[{\@ChoiceMenu}{\@ChoiceMenu[]}% +} +\DeclareRobustCommand\CheckBox{% + \@ifnextchar[{\@CheckBox}{\@CheckBox[]}% +} +\DeclareRobustCommand\PushButton{% + \@ifnextchar[{\@PushButton}{\@PushButton[]}% +} +\DeclareRobustCommand\Gauge{% + \@ifnextchar[{\@Gauge}{\@Gauge[]}% +} +\DeclareRobustCommand\Submit{% + \@ifnextchar[{\@Submit}{\@Submit[]}% +} +\DeclareRobustCommand\Reset{% + \@ifnextchar[{\@Reset}{\@Reset[]}% +} +\def\LayoutTextField#1#2{% label, field + #1 #2% +} +\def\LayoutChoiceField#1#2{% label, field + #1 #2% +} +\def\LayoutCheckField#1#2{% label, field + #1 #2% +} +\def\LayoutPushButtonField#1{% button + #1% +} +\def\MakeRadioField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}} +\def\MakeCheckField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}} +\def\MakeTextField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}} +\def\MakeChoiceField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}} +\def\MakeButtonField#1{% + \sbox0{% + \hskip\Fld@borderwidth bp#1\hskip\Fld@borderwidth bp% + }% + \@tempdima\ht0 % + \advance\@tempdima by \Fld@borderwidth bp % + \advance\@tempdima by \Fld@borderwidth bp % + \ht0\@tempdima + \@tempdima\dp0 % + \advance\@tempdima by \Fld@borderwidth bp % + \advance\@tempdima by \Fld@borderwidth bp % + \dp0\@tempdima + \box0\relax +} +\def\DefaultHeightofSubmit{14pt} +\def\DefaultWidthofSubmit{2cm} +\def\DefaultHeightofReset{14pt} +\def\DefaultWidthofReset{2cm} +\def\DefaultHeightofCheckBox{\baselineskip} +\def\DefaultWidthofCheckBox{\baselineskip} +\def\DefaultHeightofChoiceMenu{\baselineskip} +\def\DefaultWidthofChoiceMenu{\baselineskip} +\def\DefaultHeightofText{\baselineskip} +\def\DefaultHeightofTextMultiline{4\baselineskip} +\def\DefaultWidthofText{3cm} +\def\DefaultOptionsofSubmit{print,name=Submit,noexport} +\def\DefaultOptionsofReset{print,name=Reset,noexport} +\def\DefaultOptionsofPushButton{print} +\def\DefaultOptionsofCheckBox{print} +\def\DefaultOptionsofText{print} +% \end{macrocode} +% Default options for the types of \cs{ChoiceMenu}. +% \begin{macrocode} +\def\DefaultOptionsofListBox{print} +\def\DefaultOptionsofComboBox{print,edit,sort} +\def\DefaultOptionsofPopdownBox{print} +\def\DefaultOptionsofRadio{print,notoggletooff} +% \end{macrocode} +% +% \section{Setup} +% \begin{macrocode} +\ifHy@hyperfigures + \Hy@Info{Hyper figures ON}% +\else + \Hy@Info{Hyper figures OFF}% +\fi +\ifHy@nesting + \Hy@Info{Link nesting ON}% +\else + \Hy@Info{Link nesting OFF}% +\fi +\ifHy@hyperindex + \Hy@Info{Hyper index ON}% +\else + \Hy@Info{Hyper index OFF}% +\fi +\ifHy@backref + \Hy@Info{backreferencing ON}% +\else + \Hy@Info{backreferencing OFF}% +\fi +\ifHy@colorlinks + \Hy@Info{Link coloring ON}% +\else + \Hy@Info{Link coloring OFF}% +\fi +\ifHy@ocgcolorlinks + \Hy@Info{Link coloring with OCG ON}% +\else + \Hy@Info{Link coloring with OCG OFF}% +\fi +\ifHy@pdfa + \Hy@Info{PDF/A mode ON}% +\else + \Hy@Info{PDF/A mode OFF}% +\fi +% \end{macrocode} +% \section{Low-level utility macros} +% We need unrestricted access to the |#|, |~| and |"| characters, so make +% them nice macros. +% \begin{macrocode} +\edef\hyper@hash{\string#} +\edef\hyper@tilde{\string~} +\edef\hyper@quote{\string"} +% \end{macrocode} +% Support \cs{label} before |\begin{document}|. +% \begin{macrocode} +\def\@currentHref{Doc-Start} +\let\Hy@footnote@currentHref\@empty +% \end{macrocode} +% We give the start of document a special label; this is used +% in backreferencing-by-section, to allow for cites before +% any sectioning commands. Set up PDF info. +% \begin{macrocode} +\Hy@AtBeginDocument{% + \Hy@pdfstringtrue + \PDF@SetupDoc + \let\PDF@SetupDoc\@empty + \Hy@DisableOption{pdfpagescrop}% + \Hy@DisableOption{pdfpagemode}% + \Hy@DisableOption{pdfnonfullscreenpagemode}% + \Hy@DisableOption{pdfdirection}% + \Hy@DisableOption{pdfviewarea}% + \Hy@DisableOption{pdfviewclip}% + \Hy@DisableOption{pdfprintarea}% + \Hy@DisableOption{pdfprintclip}% + \Hy@DisableOption{pdfprintscaling}% + \Hy@DisableOption{pdfduplex}% + \Hy@DisableOption{pdfpicktraybypdfsize}% + \Hy@DisableOption{pdfprintpagerange}% + \Hy@DisableOption{pdfnumcopies}% + \Hy@DisableOption{pdfstartview}% + \Hy@DisableOption{pdfstartpage}% + \Hy@DisableOption{pdftoolbar}% + \Hy@DisableOption{pdfmenubar}% + \Hy@DisableOption{pdfwindowui}% + \Hy@DisableOption{pdffitwindow}% + \Hy@DisableOption{pdfcenterwindow}% + \Hy@DisableOption{pdfdisplaydoctitle}% + \Hy@DisableOption{pdfpagelayout}% + \Hy@DisableOption{pdflang}% + \Hy@DisableOption{baseurl}% + \ifHy@texht\else\hyper@anchorstart{Doc-Start}\hyper@anchorend\fi + \Hy@pdfstringfalse +} +% \end{macrocode} + +% Ignore star from referencing macros: +% \begin{macrocode} +\LetLtxMacro\NoHy@OrgRef\ref +\DeclareRobustCommand*{\ref}{% + \@ifstar\NoHy@OrgRef\NoHy@OrgRef +} +\LetLtxMacro\NoHy@OrgPageRef\pageref +\DeclareRobustCommand*{\pageref}{% + \@ifstar\NoHy@OrgPageRef\NoHy@OrgPageRef +} +% \end{macrocode} +% +% \section{Localized nullifying of package} +% Sometimes we just don't want the wretched package interfering +% with us. Define an environment we can put in manually, or include +% in a style file, which stops the hypertext functions doing anything. +% This is used, for instance, in the Elsevier classes, to stop +% |hyperref| playing havoc in the front matter. +% \begin{macrocode} +\def\NoHyper{% + \def\hyper@link@[##1]##2##3##4{##4\Hy@xspace@end}% + \def\hyper@@anchor##1##2{##2\Hy@xspace@end}% + \global\let\hyper@livelink\hyper@link + \gdef\hyper@link##1##2##3{##3\Hy@xspace@end}% + \let\hyper@anchor\ltx@gobble + \let\hyper@anchorstart\ltx@gobble + \def\hyper@anchorend{\Hy@xspace@end}% + \let\hyper@linkstart\ltx@gobbletwo + \def\hyper@linkend{\Hy@xspace@end}% + \def\hyper@linkurl##1##2{##1\Hy@xspace@end}% + \def\hyper@linkfile##1##2##3{##1\Hy@xspace@end}% + \let\Hy@backout\@gobble +} +\def\stop@hyper{% + \def\hyper@link@[##1]##2##3##4{##4\Hy@xspace@end}% + \let\Hy@backout\@gobble + \let\hyper@@anchor\ltx@gobble + \def\hyper@link##1##2##3{##3\Hy@xspace@end}% + \let\hyper@anchor\ltx@gobble + \let\hyper@anchorstart\ltx@gobble + \def\hyper@anchorend{\Hy@xspace@end}% + \let\hyper@linkstart\ltx@gobbletwo + \def\hyper@linkend{\Hy@xspace@end}% + \def\hyper@linkurl##1##2{##1\Hy@xspace@end}% + \def\hyper@linkfile##1##2##3{##1\Hy@xspace@end}% +} +\def\endNoHyper{% + \global\let\hyper@link\hyper@livelink +} +%</package> +% \end{macrocode} +% +% \section{Package nohyperref} +% +% This package is introduced by Sebastian Rahtz. +% +% Package nohyperref is a dummy package that defines +% some low level and some top-level commands. +% It is done for jadetex, which calls hyperref +% low-level commands, but it would also be useful with people using +% normal hyperref, who really do not want the package loaded at all. +% +% Some low-level commands: +% \begin{macrocode} +%<*nohyperref> +\RequirePackage{letltxmacro}[2008/06/13] +\let\hyper@@anchor\@gobble +\def\hyper@link#1#2#3{#3}% +\let\hyper@anchorstart\@gobble +\let\hyper@anchorend\@empty +\let\hyper@linkstart\@gobbletwo +\let\hyper@linkend\@empty +\def\hyper@linkurl#1#2{#1}% +\def\hyper@linkfile#1#2#3{#1}% +\def\hyper@link@[#1]#2#3{}% +\let\PDF@SetupDoc\@empty +\let\PDF@FinishDoc\@empty +\def\nohyperpage#1{#1} +% \end{macrocode} +% Some top-level commands: +% \begin{macrocode} +\def\Acrobatmenu#1#2{\leavevmode#2} +\let\pdfstringdefDisableCommands\@gobbletwo +\let\texorpdfstring\@firstoftwo +\let\pdfbookmark\@undefined +\newcommand\pdfbookmark[3][]{} +\let\phantomsection\@empty +\let\hypersetup\@gobble +\let\hyperbaseurl\@gobble +\newcommand*{\href}[3][]{#3} +\let\hyperdef\@gobbletwo +\let\hyperlink\@gobble +\let\hypertarget\@gobble +\def\hyperref{% + \@ifnextchar[\@gobbleopt{\expandafter\@gobbletwo\@gobble}% +} +\long\def\@gobbleopt[#1]{} +\let\hyperpage\@empty +% \end{macrocode} +% Ignore star from referencing macros: +% \begin{macrocode} +\LetLtxMacro\NoHy@OrgRef\ref +\DeclareRobustCommand*{\ref}{% + \@ifstar\NoHy@OrgRef\NoHy@OrgRef +} +\LetLtxMacro\NoHy@OrgPageRef\pageref +\DeclareRobustCommand*{\pageref}{% + \@ifstar\NoHy@OrgPageRef\NoHy@OrgPageRef +} +%</nohyperref> +% \end{macrocode} +% +% \section{The Mangling Of Aux and Toc Files} +% Some extra tests so that the hyperref package may be removed or added +% to a document without having to remove .aux and .toc files +% (this section is by David Carlisle) +% All the code is delayed to |\begin{document}| +% \begin{macrocode} +%<*package> +\Hy@AtBeginDocument{% +% \end{macrocode} +% First the code to deal with removing the hyperref package from +% a document. +% +% Write some stuff into the aux file so if the next run is done +% without hyperref, then |\contentsline| and |\newlabel| are defined +% to cope with the extra arguments. +% \begin{macrocode} + \if@filesw + \ifHy@typexml + \immediate\closeout\@mainaux + \immediate\openout\@mainaux\jobname.aux\relax + \immediate\write\@auxout{<relaxxml>\relax}% + \fi + \immediate\write\@auxout{% + \string\providecommand\string\HyperFirstAtBeginDocument{% + \string\AtBeginDocument}^^J% + \string\HyperFirstAtBeginDocument{% + \string\ifx\string\hyper@anchor\string\@undefined^^J% + \string\global\string\let\string\oldcontentsline\string\contentsline^^J% + \string\gdef\string\contentsline% + \string#1\string#2\string#3\string#4{% + \string\oldcontentsline% + {\string#1}{\string#2}{\string#3}}^^J% + \string\global\string\let\string\oldnewlabel\string\newlabel^^J% + \string\gdef\string\newlabel\string#1\string#2{% + \string\newlabelxx{\string#1}\string#2}^^J% + \string\gdef\string\newlabelxx% + \string#1\string#2\string#3\string#4\string#5\string#6{% + \string\oldnewlabel{\string#1}{{\string#2}{\string#3}}}^^J% +% \end{macrocode} +% +% But the new aux file will be read again at the end, with the normal +% definitions expected, so better put things back as they were. +% \begin{macrocode} + \string\AtEndDocument{% + \string\ifx\string\hyper@anchor\string\@undefined^^J% + \string\let\string\contentsline\string\oldcontentsline^^J% + \string\let\string\newlabel\string\oldnewlabel^^J% + \string\fi% + }^^J% +% \end{macrocode} +% +% If the document is being run with hyperref put this definition +% into the aux file, so we can spot it on the next run. +% \begin{macrocode} + \string\fi% + }^^J% + \string\global\string\let\string\hyper@last\relax^^J% + \string\gdef\string\HyperFirstAtBeginDocument\string#1{\string#1}% + }% + \fi + \let\HyperFirstAtBeginDocument\ltx@firstofone +% \end{macrocode} +% +% Now the code to deal with adding the hyperref package to a document +% with aux and toc written the standard way. +% +% If hyperref was used last time, do nothing. If it was not used, +% or an old version of hyperref was used, don't use that TOC at all +% but generate a warning. Not ideal, but better than failing +% with pre-5.0 hyperref TOCs. +% \begin{macrocode} + \ifx\hyper@last\@undefined + \def\@starttoc#1{% + \begingroup + \makeatletter + \ltx@ifpackageloaded{parskip}{\parskip\z@}{}% + \IfFileExists{\jobname.#1}{% + \Hy@WarningNoLine{% + old #1 file detected, not used; run LaTeX again% + }% + }{}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout\csname tf@#1\endcsname \jobname.#1\relax + \fi + \@nobreakfalse + \endgroup + }% + \def\newlabel#1#2{\@newl@bel r{#1}{#2{}{}{}{}}}% + \fi +} +% \end{macrocode} +% +% \section{Title strings} +% +% If options |pdftitle| and |pdfauthor| are not used, +% these informations for the pdf information dictionary +% can be extracted by the \cmd{\title} and \cmd{\author}. +% \begin{macrocode} +\ifHy@pdfusetitle + \let\HyOrg@title\title + \let\HyOrg@author\author + \def\title{\@ifnextchar[{\Hy@scanopttitle}{\Hy@scantitle}}% + \def\Hy@scanopttitle[#1]{% + \gdef\Hy@title{#1}% + \HyOrg@title[{#1}]% + }% + \def\Hy@scantitle#1{% + \gdef\Hy@title{#1}% + \HyOrg@title{#1}% + }% + \def\author{\@ifnextchar[{\Hy@scanoptauthor}{\Hy@scanauthor}}% + \def\Hy@scanoptauthor[#1]{% + \gdef\Hy@author{#1}% + \HyOrg@author[{#1}]% + }% + \def\Hy@scanauthor#1{% + \gdef\Hy@author{#1}% + \HyOrg@author{#1}% + }% +% \end{macrocode} +% +% The case, that \cmd{\title}, or \cmd{\author} are given before +% hyperref is loaded, is much more complicate, because +% LaTeX initializes the macros \cmd{\@title} and \cmd{\@author} with +% LaTeX error and warning messages. +% \begin{macrocode} + \begingroup + \def\process@me#1\@nil#2{% + \expandafter\let\expandafter\x\csname @#2\endcsname + \edef\y{\expandafter\strip@prefix\meaning\x}% + \def\c##1#1##2\@nil{% + \ifx\\##1\\% + \else + \expandafter\gdef\csname Hy@#2\expandafter\endcsname + \expandafter{\x}% + \fi + }% + \expandafter\c\y\relax#1\@nil + }% + \expandafter\process@me\string\@latex@\@nil{title}% + \expandafter\process@me\string\@latex@\@nil{author}% + \endgroup +\fi +\Hy@DisableOption{pdfusetitle} +% \end{macrocode} +% +% Macro |\Hy@UseMaketitleInfos| is used in the driver files, +% before the information entries are used. +% +% The newline macro |\newline| or |\\| is much more +% complicate. In the title a good replacement can be +% a space, but can be already a space after |\\| in +% the title string. So this space is removed by +% scanning for the next non-empty argument. +% +% In the macro |\author| the newline can perhaps +% separate the different authors, so the newline +% expands here to a comma with space. +% +% The possible arguments such as space or the optional +% argument after the newline macros are not detected. +% +% A possible \thanks removes its argument. +% +% \begin{macrocode} +\def\Hy@UseMaketitleString#1{% + \ltx@IfUndefined{Hy@#1}{}{% + \begingroup + \let\Hy@saved@hook\pdfstringdefPreHook + \pdfstringdefDisableCommands{% + \expandafter\let\expandafter\\\csname Hy@newline@#1\endcsname + \let\newline\\% + \def\and{; }% + \let\thanks\@gobble% + }% + \expandafter\ifx\csname @pdf#1\endcsname\@empty + \expandafter\pdfstringdef\csname @pdf#1\endcsname{% + \csname Hy@#1\endcsname\@empty + }% + \fi + \global\let\pdfstringdefPreHook\Hy@saved@hook + \endgroup + }% +} +\def\Hy@newline@title#1{ #1} +\def\Hy@newline@author#1{, #1} +\def\Hy@UseMaketitleInfos{% + \Hy@UseMaketitleString{title}% + \Hy@UseMaketitleString{author}% +} +% \end{macrocode} +% +% \section{Page numbers} +% This stuff is done by Heiko Oberdiek. +% +% \section{Every page} +% +% \begin{macrocode} +\RequirePackage{atbegshi}[2007/09/09] +\let\Hy@EveryPageHook\ltx@empty +\let\Hy@EveryPageBoxHook\ltx@empty +\let\Hy@FirstPageHook\ltx@empty +\AtBeginShipout{% + \Hy@EveryPageHook + \ifx\Hy@EveryPageBoxHook\ltx@empty + \else + \setbox\AtBeginShipoutBox=\vbox{% + \offinterlineskip + \Hy@EveryPageBoxHook + \box\AtBeginShipoutBox + }% + \fi +} +\ltx@iffileloaded{hpdftex.def}{% + \AtBeginShipout{% + \Hy@FirstPageHook + \global\let\Hy@FirstPageHook\ltx@empty + }% +}{% + \AtBeginShipoutFirst{% + \Hy@FirstPageHook + }% +} +\g@addto@macro\Hy@FirstPageHook{% + \PDF@FinishDoc + \global\let\PDF@FinishDoc\ltx@empty +} +% \end{macrocode} +% +% \subsection{PDF /PageLabels} +% Internal macros of this module are marked with |\HyPL@|. +% +% \begin{macrocode} +\ifHy@pdfpagelabels + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname thepage\endcsname\relax + \Hy@pdfpagelabelsfalse + \Hy@WarningNoLine{% + Option `pdfpagelabels' is turned off\MessageBreak + because \string\thepage\space is undefined% + }% + \csname fi\endcsname + \csname iffalse\expandafter\endcsname + \fi +% \end{macrocode} +% +% \begin{macro}{\thispdfpagelabel} +% The command \cmd{\thispdfpagelabel} allows to label a special +% page without the redefinition of \cmd{\thepage} for the page. +% \begin{macrocode} + \def\thispdfpagelabel#1{% + \gdef\HyPL@thisLabel{#1}% + }% + \global\let\HyPL@thisLabel\relax +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPL@Labels} +% The page labels are collected in \cmd{\HyPL@Labels} and +% set at the end of the document. +% \begin{macrocode} + \let\HyPL@Labels\ltx@empty +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@abspage} +% We have to know the the absolute page number and introduce +% a new counter for that. +% \begin{macrocode} + \newcount\Hy@abspage + \Hy@abspage=0 % +% \end{macrocode} +% \end{macro} +% For comparisons with the values of the previous page, some +% variables are needed: +% \begin{macrocode} + \def\HyPL@LastType{init}% + \def\HyPL@LastNumber{0}% + \let\HyPL@LastPrefix\ltx@empty +% \end{macrocode} +% Definitions for the PDF names of the \LaTeX{} pendents. +% \begin{macrocode} + \def\HyPL@arabic{D}% + \def\HyPL@Roman{R}% + \def\HyPL@roman{r}% + \def\HyPL@Alph{A}% + \def\HyPL@alph{a}% +% \end{macrocode} +% +% \begin{macrocode} + \let\HyPL@SlidesSetPage\ltx@empty + \ltx@ifclassloaded{slides}{% + \def\HyPL@SlidesSetPage{% + \advance\c@page\ltx@one + \ifnum\value{page}>\ltx@one + \protected@edef\HyPL@SlidesOptionalPage{% + \Hy@SlidesFormatOptionalPage{\thepage}% + }% + \else + \let\HyPL@SlidesOptionalPage\ltx@empty + \fi + \advance\c@page-\ltx@one + \def\HyPL@page{% + \csname the\Hy@SlidesPage\endcsname + \HyPL@SlidesOptionalPage + }% + }% + }{}% +% \end{macrocode} +% +% \begin{macro}{\HyPL@EveryPage} +% If a page is shipout and the page number is known, +% \cmd{\HyPL@EveryPage} has to be called. It stores the +% current page label. +% \begin{macrocode} + \def\HyPL@EveryPage{% + \begingroup + \ifx\HyPL@thisLabel\relax + \let\HyPL@page\thepage + \HyPL@SlidesSetPage + \else + \let\HyPL@page\HyPL@thisLabel + \global\let\HyPL@thisLabel\relax + \fi + \let\HyPL@Type\relax + \ifnum\c@page>0 % + \ifx\HyPL@SlidesSetPage\ltx@empty + \expandafter\HyPL@CheckThePage\HyPL@page\@nil + \fi + \fi + \let\Hy@temp Y% + \ifx\HyPL@Type\HyPL@LastType + \else + \let\Hy@temp N% + \fi + \ifx\HyPL@Type\relax + \pdfstringdef\HyPL@Prefix{\HyPL@page}% + \else + \pdfstringdef\HyPL@Prefix\HyPL@Prefix + \fi + \ifx\HyPL@Prefix\HyPL@LastPrefix + \else + \let\Hy@temp N% + \fi + \if Y\Hy@temp + \advance\c@page by -1 % + \ifnum\HyPL@LastNumber=\the\c@page\relax + \else + \let\Hy@temp N% + \fi + \Hy@StepCount\c@page + \fi + \if N\Hy@temp + \ifx\HyPL@Type\relax + \HyPL@StorePageLabel{/P(\HyPL@Prefix)}% + \else + \HyPL@StorePageLabel{% + \ifx\HyPL@Prefix\@empty + \else + /P(\HyPL@Prefix)% + \fi + /S/\csname HyPL\HyPL@Type\endcsname + \ifnum\the\c@page=1 % + \else + \space/St \the\c@page + \fi + }% + \fi + \fi + \xdef\HyPL@LastNumber{\the\c@page}% + \global\let\HyPL@LastType\HyPL@Type + \global\let\HyPL@LastPrefix\HyPL@Prefix + \endgroup + \Hy@GlobalStepCount\Hy@abspage + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPL@CheckThePage} +% Macro \cmd{\HyPL@CheckThePage} calls \cmd{\HyPL@@CheckThePage} +% that does the job. +% \begin{macrocode} + \def\HyPL@CheckThePage#1\@nil{% + \HyPL@@CheckThePage{#1}#1\csname\endcsname\c@page\@nil + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyPL@@CheckThePage} +% The first check is, is \cmd{\thepage} is defined +% such as in \LaTeX, e.\,g.: |\csname @arabic\endcsname\c@page|. +% In the current implemenation the check fails, if there is +% another \cmd{\csname} before. +% +% The second check tries to detect |\arabic{page}| at the +% end of the definition text of \cmd{\thepage}. +% \begin{macrocode} + \def\HyPL@@CheckThePage#1#2\csname#3\endcsname\c@page#4\@nil{% + \def\Hy@tempa{#4}% + \def\Hy@tempb{\csname\endcsname\c@page}% + \ifx\Hy@tempa\Hy@tempb + \expandafter\ifx\csname HyPL#3\endcsname\relax + \else + \def\HyPL@Type{#3}% + \def\HyPL@Prefix{#2}% + \fi + \else + \begingroup + \let\Hy@next\endgroup + \let\HyPL@found\@undefined + \def\arabic{\HyPL@Format{arabic}}% + \def\Roman{\HyPL@Format{Roman}}% + \def\roman{\HyPL@Format{roman}}% + \def\Alph{\HyPL@Format{Alph}}% + \def\alph{\HyPL@Format{alph}}% + \protected@edef\Hy@temp{#1}% + \ifx\HyPL@found\relax + \toks@\expandafter{\Hy@temp}% + \edef\Hy@next{\endgroup + \noexpand\HyPL@@@CheckThePage\the\toks@ + \noexpand\HyPL@found\relax\noexpand\@nil + }% + \fi + \Hy@next + \fi + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPL@Format} +% The help macro \cmd{\HyPL@Format} is executed while +% a \cmd{\protected@edef} in the second check +% method of \cmd{\HyPL@@CheckPage}. +% The first occurences of, for example, |\arabic{page}| is +% marked by \cmd{\HyPL@found} that is also defined by +% \cmd{\csname}. +% \begin{macrocode} + \def\HyPL@Format#1#2{% + \ifx\HyPL@found\@undefined + \expandafter\ifx\csname c@#2\endcsname\c@page + \expandafter\noexpand\csname HyPL@found\endcsname{#1}% + \else + \expandafter\noexpand\csname#1\endcsname{#2}% + \fi + \else + \expandafter\noexpand\csname#1\endcsname{#2}% + \fi + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPL@@@CheckThePage} +% If the second check method is successful, +% \cmd{\HyPL@@@CheckThePage} scans the result of +% \cmd{\HyPL@Format} and stores the found values. +% \begin{macrocode} + \def\HyPL@@@CheckThePage#1\HyPL@found#2#3\@nil{% + \def\Hy@tempa{#3}% + \def\Hy@tempb{\HyPL@found\relax}% + \ifx\Hy@tempa\Hy@tempb + \def\HyPL@Type{@#2}% + \def\HyPL@Prefix{#1}% + \fi + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPL@StorePageLabel} +% Dummy for drivers that does not support /PageLabel. +% \begin{macrocode} + \providecommand*{\HyPL@StorePageLabel}[1]{}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPL@Useless} +% The |/PageLabels| entry does not make sense, +% if the absolute page numbers and the page labels are the +% same. Then \cmd{\HyPL@Labels} has the meaning of \cmd{\HyPL@Useless}. +% \begin{macrocode} + \def\HyPL@Useless{0<</S/D>>}% + \@onelevel@sanitize\HyPL@Useless +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyPL@SetPageLabels} +% The page labels are written to the PDF cataloge. +% The command \cmd{\Hy@PutCatalog} is defined in the +% driver files. +% \begin{macrocode} + \def\HyPL@SetPageLabels{% + \@onelevel@sanitize\HyPL@Labels + \ifx\HyPL@Labels\@empty + \else + \ifx\HyPL@Labels\HyPL@Useless + \else + \Hy@PutCatalog{/PageLabels<</Nums[\HyPL@Labels]>>}% + \fi + \fi + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + \g@addto@macro\Hy@EveryPageHook{\HyPL@EveryPage}% +\fi +% \end{macrocode} +% +% Option `pdfpagelabels' has been used and is now disabled. +% \begin{macrocode} +\Hy@DisableOption{pdfpagelabels} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \subsubsection{pdfTeX and VTeX} +% +% Because of pdfTeX's \cmd{\pdfcatalog} command +% the /PageLabels entry can set at end of document +% in the first run. +% +% \begin{macro}{\Hy@PutCatalog} +% \begin{macrocode} +%<*pdftex> +\pdf@ifdraftmode{% + \let\Hy@PutCatalog\ltx@gobble +}{% + \let\Hy@PutCatalog\pdfcatalog +} +%</pdftex> +% \end{macrocode} +% The code for VTeX is more complicate, because it does +% not allow the direct access to the /Catalog object. +% The command scans its argument and looks +% for a /PageLabels entry. +% +% VTeX 6.59g is the first version, that +% implements \verb|\special{!pdfpagelabels...}|. +% For this version \cmd{\VTeXversion} reports 660. +% \begin{macrocode} +%<*vtex> +\providecommand*{\XR@ext}{pdf} +\edef\Hy@VTeXversion{% + \ifx\VTeXversion\@undefined + \z@ + \else + \ifx\VTeXversion\relax + \z@ + \else + \VTeXversion + \fi + \fi +} +\begingroup + \ifnum\Hy@VTeXversion<660 % + \gdef\Hy@PutCatalog#1{% + \Hy@WarningNoLine{% + VTeX 6.59g or above required for pdfpagelabels% + }% + }% + \else + \gdef\Hy@PutCatalog#1{% + \Hy@vt@PutCatalog#1/PageLabels<<>>\@nil + }% + \gdef\Hy@vt@PutCatalog#1/PageLabels<<#2>>#3\@nil{% + \ifx\\#2\\% + \else + \immediate\special{!pdfpagelabels #2}% + \fi + }% + \fi +\endgroup +%</vtex> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*pdftex|vtex> +% \end{macrocode} +% +% \begin{macro}{\HyPL@StorePageLabel} +% This macro adds the entry |#1| to \cmd{\HyPL@Labels}. +% \begin{macrocode} +\ifHy@pdfpagelabels + \def\HyPL@StorePageLabel#1{% + \toks@\expandafter{\HyPL@Labels}% + \xdef\HyPL@Labels{% + \the\toks@ + \the\Hy@abspage<<#1>>% + }% + }% +% \end{macrocode} +% \end{macro} +% +% Package \textsf{atveryend} is used to get behind the +% final \cs{clearpage} and to avoid a \cs{clearpage} +% in \cs{AtEndDocument}. +% Then the PDF catalog entry for |\PageLabels| is set. +% \begin{macrocode} + \RequirePackage{atveryend}[2009/12/07]% + \AtVeryEndDocument{% + \HyPL@SetPageLabels + }% +% \end{macrocode} +% +% \begin{macrocode} +\fi +%</pdftex|vtex> +% \end{macrocode} +% +% \subsubsection{xetex} +% +% \begin{macrocode} +%<*xetex> +\HyPsd@LoadUnicode +\Hy@unicodetrue +\ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@unicode +\else + \let\HyPsd@pdfencoding\HyPsd@pdfencoding@auto +\fi +\HyPsd@LoadStringEnc +\define@key{Hyp}{unicode}[true]{% + \Hy@boolkey{unicode}{#1}% + \ifHy@unicode + \else + \Hy@Warning{% + XeTeX driver only supports `unicode=true'. Ignoring\MessageBreak + option setting `unicode=false'% + }% + \Hy@unicodetrue + \fi +} +\define@key{Hyp}{pdfencoding}{% + \edef\HyPsd@temp{#1}% + \ifx\HyPsd@temp\HyPsd@pdfencoding@unicode + \let\HyPsd@pdfencoding\HyPsd@temp + \else + \ifx\HyPsd@temp\HyPsd@pdfencoding@auto + \let\HyPsd@pdfencoding\HyPsd@temp + \else + \Hy@Warning{% + XeTeX driver only supports\MessageBreak + `pdfencoding=unicode|auto'. Ignoring option\MessageBreak + setting `pdfencoding=\HyPsd@temp'% + }% + \fi + \fi +} +\let\HyXeTeX@CheckUnicode\relax +% \end{macrocode} +% Since 2016 (x)dvipdfmx has a special to control the spacing of annotation borders. +% So let's make use of it: +% \begin{macrocode} +\def\setpdflinkmargin#1{% + \begingroup + \setlength{\dimen@}{#1}% + \special{dvipdfmx:config g \strip@pt\dimen@}% + \endgroup} +%</xetex> +% \end{macrocode} +% +% \subsubsection{pdfmarkbase, dvipdfm, xetex} +% +% \begin{macrocode} +%<*pdfmarkbase> +\begingroup + \@ifundefined{headerps@out}{}{% + \toks@\expandafter{\Hy@FirstPageHook}% + \xdef\Hy@FirstPageHook{% + \noexpand\headerps@out{% + systemdict /pdfmark known% + {% + userdict /?pdfmark systemdict /exec get put% + }{% + userdict /?pdfmark systemdict /pop get put % + userdict /pdfmark systemdict /cleartomark get put% + }% + ifelse% + }% + \the\toks@ + }% + }% +\endgroup +%</pdfmarkbase> +% \end{macrocode} +% +% \begin{macro}{\Hy@PutCatalog} +% \begin{macrocode} +%<dvipdfm|xetex>\def\Hy@PutCatalog#1{\@pdfm@mark{docview <<#1>>}} +%<*pdfmarkbase> +\def\Hy@PutCatalog#1{% + \pdfmark{pdfmark=/PUT,Raw={\string{Catalog\string} <<#1>>}}% +} +%</pdfmarkbase> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*pdfmarkbase|dvipdfm|xetex> +\ifHy@pdfpagelabels +% \end{macrocode} +% +% \begin{macro}{\HyPL@StorePageLabel} +% This macro writes a string to the .aux file. +% \begin{macrocode} + \def\HyPL@StorePageLabel#1{% + \if@filesw + \begingroup + \edef\Hy@tempa{\the\Hy@abspage<<#1>>}% + \immediate\write\@mainaux{% + \string\HyPL@Entry{\Hy@tempa}% + }% + \endgroup + \fi + }% +% \end{macrocode} +% \end{macro} +% +% Write a dummy definition of \cmd{\HyPL@Entry} for the case, +% that the next run is done without hyperref. +% A marker for the rerun warning is set and the /PageLabels +% is written. +% \begin{macrocode} + \Hy@AtBeginDocument{% + \if@filesw + \immediate\write\@mainaux{% + \string\providecommand\string*\string\HyPL@Entry[1]{}% + }% + \fi + \ifx\HyPL@Labels\@empty + \Hy@WarningNoLine{Rerun to get /PageLabels entry}% + \else + \HyPL@SetPageLabels + \fi + \let\HyPL@Entry\@gobble + }% +% \end{macrocode} +% +% \begin{macro}{\HyPL@Entry} +% \begin{macrocode} + \def\HyPL@Entry#1{% + \expandafter\gdef\expandafter\HyPL@Labels\expandafter{% + \HyPL@Labels + #1% + }% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\fi +%</pdfmarkbase|dvipdfm|xetex> +% \end{macrocode} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +\ifx\MaybeStopEarly\relax +\else + \Hy@stoppedearlytrue + \expandafter\MaybeStopEarly +\fi +\Hy@stoppedearlyfalse +% \end{macrocode} +% +% \section{Automated \LaTeX\ hypertext cross-references}\label{latexxref} +% Anything which can be referenced advances some counter; we overload +% this to put in a hypertext starting point (with no visible anchor), +% and make a note of that for later use in |\label|. +% This will fail badly if |\theH<name>| +% does not expand to a sensible reference. This means that classes +% or package which introduce new elements need to define +% an equivalent |\theH<name>| for every |\the<name>|. We do make +% a trap to make |\theH<name>| be the same as |\arabic{<name>}|, +% if |\theH<name>| is not defined, but this is not necessarily a good idea. +% Alternatively, the `naturalnames' option uses whatever \LaTeX\ +% provides, which may be useable. But then its up to you to make +% sure these are legal PDF and HTML names. The `hypertexnames=false' option +% just makes up arbitrary names. +% +% All the shenanigans is to make sure section numbers etc +% are always arabic, separated by dots. Who knows how people +% will set up |\@currentlabel|? If they put spaces in, or brackets +% (quite legal) then the hypertext processors will get upset. +% +% But this is flaky, and open to abuse. Styles like +% |subeqn| will mess it up, for starters. Appendices are an issue, too. +% We just hope to cover most situations. We can at least cope +% with the standard sectioning structure, allowing for |\part| +% and |\chapter|. +% +% Start with a fallback for equations +% \begin{macrocode} +\def\Hy@CounterExists#1{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname c@#1\endcsname\relax + \expandafter\@gobble + \else + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname the#1\endcsname\relax + \expandafter\expandafter\expandafter\@gobble + \else + \expandafter\expandafter\expandafter\@firstofone + \fi + \fi +} +\Hy@CounterExists{section}{% + \providecommand\theHequation{\theHsection.\arabic{equation}}% +} +\Hy@CounterExists{part}{% + \providecommand\theHpart{\arabic{part}}% +} +\ltx@IfUndefined{thechapter}{% + \providecommand\theHsection {\arabic{section}}% + \providecommand\theHfigure {\arabic{figure}}% + \providecommand\theHtable {\arabic{table}}% +}{% + \providecommand\theHchapter {\arabic{chapter}}% + \providecommand\theHfigure {\theHchapter.\arabic{figure}}% + \providecommand\theHtable {\theHchapter.\arabic{table}}% + \providecommand\theHsection {\theHchapter.\arabic{section}}% +} +\providecommand\theHsubsection {\theHsection.\arabic{subsection}} +\providecommand\theHsubsubsection{\theHsubsection.\arabic{subsubsection}} +\providecommand\theHparagraph {\theHsubsubsection.\arabic{paragraph}} +\providecommand\theHsubparagraph {\theHparagraph.\arabic{subparagraph}} +\providecommand\theHtheorem {\theHsection.\arabic{theorem}} +\providecommand\theHthm {\theHsection.\arabic{thm}} +% \end{macrocode} +% Thanks to Greta Meyer (gbd@pop.cwru.edu) for making me realize +% that enumeration starts at 0 for every list! But |\item| +% occurs inside |\trivlist|, so check if its a real |\item| before +% incrementing counters. +% \begin{macrocode} +\let\H@item\item +\newcounter{Item} +\def\theHItem{\arabic{Item}} +\def\item{% + \@hyper@itemfalse + \if@nmbrlist\@hyper@itemtrue\fi + \H@item +} +% \end{macrocode} +% +% \begin{macrocode} +\providecommand\theHenumi {\theHItem} +\providecommand\theHenumii {\theHItem} +\providecommand\theHenumiii {\theHItem} +\providecommand\theHenumiv {\theHItem} +\providecommand\theHHfootnote {\arabic{Hfootnote}} +\providecommand\theHmpfootnote{\arabic{mpfootnote}} +\@ifundefined{theHHmpfootnote}{% + \let\theHHmpfootnote\theHHfootnote +}{} +% \end{macrocode} +% Tanmoy asked for this default handling of undefined |\theH<name>| +% situations. It really isn't clear what would be ideal, whether to +% turn off hyperizing of unknown elements, to pick up the textual +% definition of the counter, or to default it to something like +% |\arabic{name}|. We take the latter course, slightly worriedly. +% \begin{macrocode} +\let\H@refstepcounter\refstepcounter +\edef\name@of@eq{equation}% +\edef\name@of@slide{slide}% +% \end{macrocode} +% We do not want the handler for |\refstepcounter| to cut in +% during the processing of |\item| (we handle that separately), +% so we provide a bypass conditional. +% \begin{macrocode} +\newif\if@hyper@item +\newif\if@skiphyperref +\@hyper@itemfalse +\@skiphyperreffalse +\def\refstepcounter#1{% + \ifHy@pdfstring + \else + \H@refstepcounter{#1}% + \edef\This@name{#1}% + \ifx\This@name\name@of@slide + \else + \if@skiphyperref + \else + \if@hyper@item + \stepcounter{Item}% + \hyper@refstepcounter{Item}% + \@hyper@itemfalse + \else + \hyper@refstepcounter{#1}% + \fi + \fi + \fi + \fi +} +\let\Hy@saved@refstepcounter\refstepcounter +% \end{macrocode} +% AMS\LaTeX\ processes all equations twice; we want to make sure +% that the hyper stuff is not executed twice, so we use the AMS +% |\ifmeasuring@|, initialized if AMS math is not used. +% \begin{macrocode} +\@ifpackageloaded{amsmath}{}{\newif\ifmeasuring@\measuring@false} +% \end{macrocode} +% +% \begin{macro}{\hyper@refstepcounter} +% \begin{macrocode} +\def\hyper@refstepcounter#1{% + \edef\This@name{#1}% + \ifx\This@name\name@of@eq + \@ifundefined{theHequation}{% + \make@stripped@name{\theequation}% + \let\theHequation\newname + }{}% + \fi + \HyCnt@ProvideTheHCounter{#1}% + \hyper@makecurrent{#1}% + \ifmeasuring@ + \else + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@ProvideTheHCounter} +% \cs{theH<counter>} is not set for counters that +% are defined before `hyperref' is loaded. +% In \cs{cl@@ckpt}, the clear counter list of +% the artificial counter |@ckpt|, \LaTeX\ remembers +% the defined counters (needed for \cs{include}). We check +% the clear counter lists, whether our counter is present. +% If we found it, then we add the parent counter value +% to \cs{theH<counter>}. The \cs{@elt} list is +% used in sanitized form for the comparison, because the list +% might contain other stuff than \cs{@elt}s. Also it simplifies +% the implementation, because \LaTeX', substring search +% \cs{in@} can be used. +% \begin{macrocode} +\def\HyCnt@ProvideTheHCounter#1{% + \@ifundefined{theH#1}{% + \expandafter\def\csname theH#1\endcsname{}% + \def\Hy@temp{\@elt{#1}}% + \ltx@onelevel@sanitize\Hy@temp + \let\HyOrg@elt\@elt + \edef\@elt{% + \noexpand\HyCnt@LookForParentCounter + \expandafter\noexpand\csname theH#1\endcsname + }% + \cl@@ckpt + \let\@elt\HyOrg@elt + \expandafter + \ltx@LocalAppendToMacro\csname theH#1\expandafter\endcsname + \expandafter{% + \expandafter\@arabic\csname c@#1\endcsname + }% + }{}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@LookForParentCounter} +% \begin{macrocode} +\def\HyCnt@LookForParentCounter#1#2{% + \expandafter\let\expandafter\Hy@temp@A\csname cl@#2\endcsname + \ltx@IfUndefined{cl@#2}{% + }{% + \ltx@onelevel@sanitize\Hy@temp@A + \edef\Hy@temp@A{% + \noexpand\in@{\Hy@temp}{\Hy@temp@A}% + }\Hy@temp@A + \ifin@ + \ltx@IfUndefined{theH#2}{% + \expandafter\ltx@LocalAppendToMacro\expandafter#1% + \expandafter{% + \expandafter\@arabic\csname c@#2\endcsname.% + }% + }{% + \expandafter\ltx@LocalAppendToMacro\expandafter#1% + \expandafter{% + \csname theH#2\endcsname.% + }% + }% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% +% After \cmd{\appendix} ``chapter'' (or ``section'' for classes +% without chapter) should be replaced +% by ``appendix'' to get \cmd{\autoref} work. +% Macro \cmd{\Hy@chapapp} contains the current valid +% name like \cmd{\@chapapp}, which cannot be used, +% because this string depends on the current language. +% +% The ``french'' package defines counter \cmd{\thechapter} +% by \cmd{\newcounter{chapter}}, if \cmd{\@ifundefined{chapter}}. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname chapter\endcsname\relax + \def\Hy@chapterstring{section}% +\else + \def\Hy@chapterstring{chapter}% +\fi +\def\Hy@appendixstring{appendix} +\def\Hy@chapapp{\Hy@chapterstring} +\ltx@IfUndefined{appendix}{% +}{% + \let\HyOrg@appendix\appendix + \def\Hy@AlphNoErr#1{% + \ifnum\value{#1}>26 % + Alph\number\value{#1}% + \else + \ifnum\value{#1}<1 % + Alph\number\value{#1}% + \else + \Alph{#1}% + \fi + \fi + }% + \def\appendix{% + \ltx@IfUndefined{chapter}{% + \gdef\theHsection{\Hy@AlphNoErr{section}}% + }{% + \gdef\theHchapter{\Hy@AlphNoErr{chapter}}% + }% + \xdef\Hy@chapapp{\Hy@appendixstring}% + \HyOrg@appendix + }% +} +% \end{macrocode} +% \begin{macro}{\Hy@Test@alph} +% \begin{macrocode} +\def\Hy@Test@alph#1{% + \ifcase#1\or + a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or + u\or v\or w\or x\or y\or z% + \else + \@ctrerr + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@Test@Alph} +% \begin{macrocode} +\def\Hy@Test@Alph#1{% + \ifcase#1\or + A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or + K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or + U\or V\or W\or X\or Y\or Z% + \else + \@ctrerr + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\hyper@makecurrent} +% Because of Babel mucking around, nullify |\textlatin| when making names. +% And |\@number| because of babel's lrbabel.def. +% \begin{macrocode} +\def\hyper@makecurrent#1{% + \begingroup + \Hy@safe@activestrue + \edef\Hy@param{#1}% + \ifx\Hy@param\Hy@chapterstring + \let\Hy@param\Hy@chapapp + \fi + \ifHy@hypertexnames + \let\@number\@firstofone + \def\@fnsymbol##1{fnsymbol\number##1}% + \def\@arabic##1{\number##1}% + \ifx\@alph\Hy@Test@alph + \else + \def\@alph{alph\number}% + \fi + \ifx\@Alph\Hy@Test@Alph + \else + \def\@Alph{Alph\number}% + \fi + \ifHy@naturalnames + \let\textlatin\@firstofone + \xdef\HyperGlobalCurrentHref{\csname the#1\endcsname}% + \else + \xdef\HyperGlobalCurrentHref{% + \csname + the% + \expandafter\ifx\csname theH#1\endcsname\relax\else H\fi + #1% + \endcsname + }% + \fi + \xdef\HyperGlobalCurrentHref{% + \Hy@param.\expandafter\strip@prefix\meaning\HyperGlobalCurrentHref + }% + \else + \Hy@GlobalStepCount\Hy@linkcounter + \xdef\HyperGlobalCurrentHref{\Hy@param.\the\Hy@linkcounter}% + \fi + \endgroup + \let\HyperLocalCurrentHref\HyperGlobalCurrentHref + \ifHy@localanchorname + \let\@currentHref\HyperLocalCurrentHref + \else + \global\let\@currentHref\HyperGlobalCurrentHref + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@MakeCurrentHref} +% \begin{macrocode} +\def\Hy@MakeCurrentHref#1{% + \edef\HyperLocalCurrentHref{#1}% + \@onelevel@sanitize\HyperLocalCurrentHref + \global\let\HyperGlobalCurrentHref\HyperLocalCurrentHref + \let\HyperLocalCurrentHref\HyperGlobalCurrentHref + \ifHy@localanchorname + \let\@currentHref\HyperLocalCurrentHref + \else + \global\let\@currentHref\HyperGlobalCurrentHref + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@MakeCurrentHrefAuto} +% \begin{macrocode} +\def\Hy@MakeCurrentHrefAuto#1{% + \Hy@GlobalStepCount\Hy@linkcounter + \Hy@MakeCurrentHref{#1.\the\Hy@linkcounter}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@currentHlabel} +% \cs{@currrentHlabel} is only defined for compatibility with +% package `hypdvips'. +% \begin{macrocode} +\def\@currentHlabel{\@currentHref} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\@ifpackageloaded{fancyvrb}{% + \@ifpackagelater{fancyvrb}{1998/05/20}{}{% + \def\FV@StepLineNo{% + \FV@SetLineNo + \def\FV@StepLineNo{\H@refstepcounter{FancyVerbLine}}% + \FV@StepLineNo + }% + }% +}{} +% \end{macrocode} +% +% \section{Package lastpage support} +% Package lastpage directly writes the |\newlabel| command to the +% aux file. Because package hyperref requires additional arguments, +% the internal command |\lastpage@putlabel| is redefined. +% The patch is deferred by |\AtBeginDocument|, because it is possible +% that package lastpage is loaded after package hyperref. +% The same algorithm (options hypertexnames and plainpages) +% is used to get the page anchor name as +% in |\Hy@EveryPageAnchor| (see sec. \ref{pagenum}). +% The link will not work if option pageanchor is set to false. +% \begin{macro}{\lastpage@putlabel} +% \begin{macrocode} +\Hy@AtBeginDocument{% + \@ifclassloaded{revtex4}{% + \@namedef{ver@lastpage.sty}{1994/06/25}% + }{}% + \@ifpackageloaded{lastpage}{% + \ifHy@pageanchor + \else + \Hy@WarningNoLine{% + The \string\pageref{LastPage} link doesn't work\MessageBreak + with disabled option `pageanchor'% + }% + \fi + \def\lastpage@putlabel{% + \addtocounter{page}{-1}% + \if@filesw + \begingroup + \let\@number\@firstofone + \ifHy@pageanchor + \ifHy@hypertexnames + \ifHy@plainpages + \def\Hy@temp{\arabic{page}}% + \else + \Hy@unicodefalse + \pdfstringdef\Hy@temp{\thepage}% + \fi + \else + \def\Hy@temp{\the\Hy@pagecounter}% + \fi + \fi + \immediate\write\@auxout{% + \string\newlabel + {LastPage}{{}{\thepage}{}{% + \ifHy@pageanchor page.\Hy@temp\fi}{}}% + }% + \endgroup + \fi + \addtocounter{page}{1}% + }% + \@ifclassloaded{revtex4}{% + \begingroup + \toks@\expandafter{\lastpage@putlabel}% + \edef\x{\endgroup + \def\noexpand\lastpage@putlabel{% + \noexpand\stepcounter{page}% + \the\toks@ + \noexpand\addtocounter{page}\noexpand\m@ne + }% + }% + \x + }{}% + }{}% +} +%</package> +%<*check> +\checkpackage{lastpage}[1994/06/25] +\checkcommand\def\lastpage@putlabel{% + \addtocounter{page}{-1}% + \immediate\write\@auxout{% + \string\newlabel{LastPage}{{}{\thepage}}% + }% + \addtocounter{page}{1}% +} +%</check> +%<*package> +% \end{macrocode} +% \end{macro} +% +% \section{Package ifthen support} +% +% Since version 6.75a this is done in package nameref. +% +% For compatibility \cmd{\hypergetref} and +% \cmd{\hypergetpageref} are still provided. +% But they do not generate warnings, if the reference is +% undefined. +% \begin{macrocode} +\def\hypergetref#1{\getrefbykeydefault{#1}{}{??}} +\def\hypergetpageref#1{\getrefbykeydefault{#1}{page}{0}} +% \end{macrocode} +% +% \section{Package titlesec and titletoc support} +% +% This code is contributed by Javier Bezos +% (Email: \Email{jbezos@arrakis.es}). +% +% Package titlesec support: +% \begin{macrocode} +\@ifpackageloaded{titlesec}{% + \def\ttl@Hy@steplink#1{% + \Hy@MakeCurrentHrefAuto{#1*}% + \edef\ttl@Hy@saveanchor{% + \noexpand\Hy@raisedlink{% + \noexpand\hyper@anchorstart{\@currentHref}% + \noexpand\hyper@anchorend + \def\noexpand\ttl@Hy@SavedCurrentHref{\@currentHref}% + \noexpand\ttl@Hy@PatchSaveWrite + }% + }% + }% + \def\ttl@Hy@PatchSaveWrite{% + \begingroup + \toks@\expandafter{\ttl@savewrite}% + \edef\x{\endgroup + \def\noexpand\ttl@savewrite{% + \let\noexpand\@currentHref + \noexpand\ttl@Hy@SavedCurrentHref + \the\toks@ + }% + }% + \x + }% + \def\ttl@Hy@refstepcounter#1{% + \let\ttl@b\Hy@raisedlink + \def\Hy@raisedlink##1{% + \def\ttl@Hy@saveanchor{\Hy@raisedlink{##1}}% + }% + \refstepcounter{#1}% + \let\Hy@raisedlink\ttl@b + }% +}{} +% \end{macrocode} +% +% Package titletoc support: +% \begin{macrocode} +\@ifpackageloaded{titletoc}{% + \def\ttl@gobblecontents#1#2#3#4{\ignorespaces}% +}{} +% \end{macrocode} +% +% \section{Package varioref support} +% +% Package nameref uses five arguments for the ref system. +% Fix provided by Felix Neubauer (\Email{felix.neubauer@gmx.net}). +% \begin{macrocode} +\def\Hy@varioref@undefined{{??}{??}{}{}{}} +\@ifpackageloaded{varioref}{% + \def\vref@pagenum#1#2{% + \@ifundefined{r@#2}{% + \expandafter\let\csname r@#2\endcsname\Hy@varioref@undefined + }{}% + \edef#1{\getpagerefnumber{#2}}% + }% +}{} +% \end{macrocode} +% +% Package varioref redefines \cs{refstepcounter}, thus it needs +% fixing, if the package is loaded *after* hyperref. +% \begin{macrocode} +\def\Hy@varioref@refstepcounter#1{% + \stepcounter{#1}% + \protected@edef\@currentlabel{% + \csname p@#1\expandafter\endcsname\csname the#1\endcsname + }% +} +\AtBeginDocument{% + \ifx\refstepcounter\Hy@varioref@refstepcounter + \let\H@refstepcounter\refstepcounter + \let\refstepcounter\Hy@saved@refstepcounter + \fi +} +% \end{macrocode} +% +% \section{Package longtable support} +% +% Sometimes the anchor of the longtable goes to the previous +% page. Thus the following patch separates the anchor setting +% and counter incrementation by hyperref's \verb|\refstepcounter| +% and the anchor setting is moved after \verb|\vskip\LTpre|. +% +% Patch of \cmd{\LT@array}: +% replace \cmd{\refstepcounter} by the original +% \cmd{\H@refstepcounter} without anchor generation +% \begin{macrocode} +\@ifpackageloaded{longtable}{% + \begingroup + \def\y{\LT@array}% + \@ifundefined{scr@LT@array}{% + \@ifundefined{adl@LT@array}{}{\def\y{\adl@LT@array}}% + }{\def\y{\scr@LT@array}}% + \long\def\x\refstepcounter#1#2\@sharp#3#4\@nil{% + \expandafter\endgroup + \expandafter\def\y[##1]##2{% + \H@refstepcounter{#1}% + \hyper@makecurrent{table}% + \let\Hy@LT@currentHref\@currentHref + #2\@sharp#####4% + }% + }% + \expandafter\expandafter\expandafter\x\y[{#1}]{#2}\@nil +% \end{macrocode} +% Patch of \cmd{\LT@start}: +% add anchor before first line after \verb|\vskip\LTpre| +% \begin{macrocode} + \begingroup + \def\x#1\ifvoid\LT@foot#2\fi#3\@nil{% + \endgroup + \def\LT@start{% + #1% + \ifvoid\LT@foot#2\fi + \let\@currentHref\Hy@LT@currentHref + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + #3% + }% + }% + \expandafter\x\LT@start\@nil +}{} +% \end{macrocode} +% +% \section{Equations}\label{equations} +% We want to make the whole equation a target anchor. +% Overload equation, temporarily reverting to original +% |\refstepcounter|. If, however, it is in AMS math, we do not +% do anything, as the tag mechanism is used there (see section \ref{ams}). +% The execption is that we move the equation incrementation inside +% the math environment to avoid specials outside and a wrong vertical +% spacing of equation environments. +% \begin{macrocode} +\let\new@refstepcounter\refstepcounter +\let\H@equation\equation +\let\H@endequation\endequation +% \end{macrocode} +% +% \begin{macrocode} +\@ifpackageloaded{amsmath}{% + \long\def\Hy@temp{% + \incr@eqnum + \mathdisplay@push + \st@rredfalse \global\@eqnswtrue + \mathdisplay{equation}% + }% + \ifx\Hy@temp\equation + \expandafter\ifx\csname if@fleqn\expandafter\endcsname + \csname iftrue\endcsname + \else + \long\def\equation{% + \mathdisplay@push + \st@rredfalse \global\@eqnswtrue + \mathdisplay{equation}% + \incr@eqnum + }% + \fi + \fi +}{% + \def\equation{% + \let\refstepcounter\H@refstepcounter + \H@equation + \@ifundefined{theHequation}{% + \make@stripped@name{\theequation}% + \let\theHequation\newname + }{}% + \hyper@makecurrent{equation}% +% \end{macrocode} +% \cs{mathopen} is needed in case the equation starts with +% an unary minus, for example. +% \begin{macrocode} + \mathopen{% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}}% + }% + \let\refstepcounter\new@refstepcounter + }% + \def\endequation{% + \ifx\Hy@raisedlink\ltx@empty + \hyper@anchorend + \else + \mathclose{\Hy@raisedlink{\hyper@anchorend}}% + \fi + \H@endequation + }% +} +% \end{macrocode} +% My goodness, why can't \LaTeX{} be consistent? Why is |\eqnarray| +% set up differently from other objects? +% +% People (you know who you are, Thomas Beuth) sometimes make +% an eqnarray where \emph{all} the lines end with |\notag|, +% so there is no suitable anchor at all. In this case, pass by +% on the other side. +% \begin{macrocode} +\newif\if@eqnstar +\@eqnstarfalse +\let\H@eqnarray\eqnarray +\let\H@endeqnarray\endeqnarray +\def\eqnarray{% + \let\Hy@reserved@a\relax + \def\@currentHref{}% + \H@eqnarray + \if@eqnstar + \else + \ifx\\\@currentHref\\% + \else + \@ifundefined{theHequation}{% + \make@stripped@name{\theequation}% + \let\theHequation\newname + }{}% + \hyper@makecurrent{equation}% + \mathopen{% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + }% + \fi + \fi +} +\def\endeqnarray{% + \H@endeqnarray +} +% \end{macrocode} +% This is quite heavy-handed, but it works for now. If its an |eqnarray*| +% we need to disable the hyperref actions. There may well be a cleaner +% way to trap this. Bill Moss found this. +% \begin{macrocode} +\@namedef{eqnarray*}{% + \def\@eqncr{\nonumber\@seqncr}\@eqnstartrue\eqnarray +} +\@namedef{endeqnarray*}{% + \nonumber\endeqnarray\@eqnstarfalse +} +% \end{macrocode} +% Then again, we have the \emph{subeqnarray} +% package. Tanmoy provided some code for this: +% \begin{macrocode} +\ltx@IfUndefined{subeqnarray}{}{% + \let\H@subeqnarray\subeqnarray + \let\H@endsubeqnarray\endsubeqnarray + \def\subeqnarray{% + \let\Hy@reserved@a\relax + \H@subeqnarray + \@ifundefined{theHequation}{% + \make@stripped@name{\theequation}% + \let\theHequation\newname + }{}% + \hyper@makecurrent{equation}% + \hyper@anchorstart{\@currentHref}{}\hyper@anchorend + }% + \def\endsubeqnarray{% + \H@endsubeqnarray + }% + \providecommand\theHsubequation{\theHequation\alph{subequation}}% +} +% \end{macrocode} +% The aim of this macro is to produce a sanitized version of +% its argument, to make it a safe label. +% \begin{macrocode} +\def\make@stripped@name#1{% + \begingroup + \escapechar\m@ne + \global\let\newname\@empty + \protected@edef\Hy@tempa{#1}% + \edef\@tempb{% + \noexpand\@tfor\noexpand\Hy@tempa:=% + \expandafter\strip@prefix\meaning\Hy@tempa + }% + \@tempb\do{% + \if{\Hy@tempa\else + \if}\Hy@tempa\else + \xdef\newname{\newname\Hy@tempa}% + \fi + \fi + }% + \endgroup +} +% \end{macrocode} +% +% Support for amsmath's \texttt{subequations}: +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname subequations\endcsname\relax +\else + \let\HyOrg@subequations\subequations + \def\subequations{% + \stepcounter{equation}% + \protected@edef\theHparentequation{% + \@ifundefined{theHequation}\theequation\theHequation + }% + \addtocounter{equation}{-1}% + \HyOrg@subequations + \def\theHequation{\theHparentequation\alph{equation}}% + \ignorespaces + }% +\fi +% \end{macrocode} +% +% Support for package \texttt{amsthm} (Daniel M\"ullner): +% also \texttt{cleveref}. +% \begin{macrocode} +\Hy@AtBeginDocument{% +\@ifpackageloaded{cleveref}{% +\let\Hy@savedthm\@thm +\def\@thm{\ifhmode\unskip\fi\Hy@savedthm}% +}{% +\@ifpackageloaded{amsthm}{% +% \end{macrocode} +% Class amsbook uses a different definition of \cs{@thm}, +% where two lines are added (thanks to Dan Luecking for +% his analysis): +%\begin{quote} +%\begin{verbatim} +%\let\thm@indent\indent % indent +%\thm@headfont{\scshape}% heading font small caps +%\end{verbatim} +%\end{quote} +% \begin{macrocode} + \def\Hy@temp#1#2#3{% + \ifhmode\unskip\unskip\par\fi + \normalfont + \trivlist + \let\thmheadnl\relax + \let\thm@swap\@gobble + \let\thm@indent\indent % indent + \thm@headfont{\scshape}% heading font small caps + \thm@notefont{\fontseries\mddefault\upshape}% + \thm@headpunct{.}% add period after heading + \thm@headsep 5\p@ plus\p@ minus\p@\relax + \thm@space@setup + #1% style overrides + \@topsep \thm@preskip % used by thm head + \@topsepadd \thm@postskip % used by \@endparenv + \def\@tempa{#2}\ifx\@empty\@tempa + \def\@tempa{\@oparg{\@begintheorem{#3}{}}[]}% + \else + \refstepcounter{#2}% + \def\@tempa{% + \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]% + }% + \fi + \@tempa + }% + \ifx\Hy@temp\@thm + \def\@thm#1#2#3{% + \ifhmode + \unskip\unskip\par + \fi + \normalfont + \trivlist + \let\thmheadnl\relax + \let\thm@swap\@gobble + \let\thm@indent\indent % indent + \thm@headfont{\scshape}% heading font small caps + \thm@notefont{\fontseries\mddefault\upshape}% + \thm@headpunct{.}% add period after heading + \thm@headsep 5\p@ plus\p@ minus\p@\relax + \thm@space@setup + #1% style overrides + \@topsep \thm@preskip % used by thm head + \@topsepadd \thm@postskip % used by \@endparenv + \def\dth@counter{#2}% + \ifx\@empty\dth@counter + \def\@tempa{% + \@oparg{\@begintheorem{#3}{}}[]% + }% + \else + \H@refstepcounter{#2}% + \hyper@makecurrent{#2}% + \let\Hy@dth@currentHref\@currentHref + \def\@tempa{% + \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]% + }% + \fi + \@tempa + }% + \else + \def\@thm#1#2#3{% + \ifhmode + \unskip\unskip\par + \fi + \normalfont + \trivlist + \let\thmheadnl\relax + \let\thm@swap\@gobble + \thm@notefont{\fontseries\mddefault\upshape}% + \thm@headpunct{.}% add period after heading + \thm@headsep 5\p@ plus\p@ minus\p@\relax + \thm@space@setup + #1% style overrides + \@topsep \thm@preskip % used by thm head + \@topsepadd \thm@postskip % used by \@endparenv + \def\dth@counter{#2}% + \ifx\@empty\dth@counter + \def\@tempa{% + \@oparg{\@begintheorem{#3}{}}[]% + }% + \else + \H@refstepcounter{#2}% + \hyper@makecurrent{#2}% + \let\Hy@dth@currentHref\@currentHref + \def\@tempa{% + \@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]% + }% + \fi + \@tempa + }% + \fi + \dth@everypar={% + \@minipagefalse + \global\@newlistfalse + \@noparitemfalse + \if@inlabel + \global\@inlabelfalse + \begingroup + \setbox\z@\lastbox + \ifvoid\z@ + \kern-\itemindent + \fi + \endgroup + \ifx\@empty\dth@counter + \else + \Hy@raisedlink{% + \hyper@anchorstart{% + \ltx@ifundefined{Hy@dth@currentHref}% + \@currentHref\Hy@dth@currentHref + }\hyper@anchorend + }% + \fi + \unhbox\@labels + \fi + \if@nobreak + \@nobreakfalse \clubpenalty\@M + \else + \clubpenalty\@clubpenalty \everypar{}% + \fi + }% +}% +% \end{macrocode} +% non \texttt{amsthm} case, remove final space on line before a theorem +% for githib issue 11. +% \begin{macrocode} +{% +\let\Hy@savedthm\@thm +\def\@thm{\ifhmode\unskip\fi\Hy@savedthm}% +}% +}% +} +% \end{macrocode} +% +% \section{Footnotes}\label{footnotes} +% The footnote mark is a hypertext link, and the text is a target. +% We separately number the footnotes sequentially through the +% text, separately from whatever labels the text assigns. Too hard +% to keep track of markers otherwise. If the raw forms |\footnotemark| +% and |\footnotetext| are used, force them to use un-hyper original. +% +% \begin{macrocode} +\ifHy@hyperfootnotes + \newcounter{Hfootnote}% + \let\H@@footnotetext\@footnotetext + \let\H@@footnotemark\@footnotemark + \def\@xfootnotenext[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \ifx\@footnotetext\@mpfootnotetext + \expandafter\H@@mpfootnotetext + \else + \expandafter\H@@footnotetext + \fi + }% + \def\@xfootnotemark[#1]{% + \begingroup + \c@footnote #1\relax + \unrestored@protected@xdef\@thefnmark{\thefootnote}% + \endgroup + \H@@footnotemark + }% + \let\H@@mpfootnotetext\@mpfootnotetext + \long\def\@mpfootnotetext#1{% + \H@@mpfootnotetext{% + \ifHy@nesting + \expandafter\ltx@firstoftwo + \else + \expandafter\ltx@secondoftwo + \fi + {% + \expandafter\hyper@@anchor\expandafter{% + \Hy@footnote@currentHref + }{\ignorespaces #1}% + }{% + \Hy@raisedlink{% + \expandafter\hyper@@anchor\expandafter{% + \Hy@footnote@currentHref + }{\relax}% + }\ignorespaces #1% + }% + }% + }% + \long\def\@footnotetext#1{% + \H@@footnotetext{% + \ifHy@nesting + \expandafter\ltx@firstoftwo + \else + \expandafter\ltx@secondoftwo + \fi + {% + \expandafter\hyper@@anchor\expandafter{% + \Hy@footnote@currentHref + }{\ignorespaces #1}% + }{% + \Hy@raisedlink{% + \expandafter\hyper@@anchor\expandafter{% + \Hy@footnote@currentHref + }{\relax}% + }% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + \ignorespaces #1% + }% + }% + }% +% \end{macrocode} +% Redefine \verb+\@footnotemark+, borrowing its code (at the +% cost of getting out of sync with latex.ltx), to take +% advantage of its white space and hyphenation fudges. If we just +% overload it, we can get variant documents (the word before the +% footnote is treated differently). Thanks to David Carlisle and +% Brian Ripley for confusing and helping me on this. +% \begin{macrocode} + \def\@footnotemark{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \stepcounter{Hfootnote}% + \global\let\Hy@saved@currentHref\@currentHref + \hyper@makecurrent{Hfootnote}% + \global\let\Hy@footnote@currentHref\@currentHref + \global\let\@currentHref\Hy@saved@currentHref + \hyper@linkstart{link}{\Hy@footnote@currentHref}% + \@makefnmark + \hyper@linkend + \ifhmode\spacefactor\@x@sf\fi + \relax + }% +% \end{macrocode} +% +% Tabularx causes footnote problems, disable the linking if that is loaded. +% Since v6.82i footnotes are only disabled inside the environment +% `tabularx'. +% \begin{macrocode} + \@ifpackageloaded{tabularx}{% + \let\HyOrg@TX@endtabularx\TX@endtabularx + \def\Hy@tabularx@hook{% + \let\@footnotetext\H@@footnotetext + \let\@footnotemark\H@@footnotemark + \let\@mpfootnotetext\H@@mpfootnotetext + }% + \begingroup + \toks@\expandafter{\TX@endtabularx}% + \xdef\Hy@gtemp{% + \noexpand\Hy@tabularx@hook + \the\toks@ + }% + \endgroup + \let\TX@endtabularx\Hy@gtemp + }{}% +% \end{macrocode} +% +% Support for footnotes in p columns of longtable. +% Here \verb+\footnote+ commands are splitted into +% \verb+\footnotemark+ and a call of \verb+\footnotetext+ +% with the optional argument, that is not supported +% by hyperref. The result is a link by \verb+\footnotemark+ +% without valid anchor +% \begin{macrocode} + \@ifpackageloaded{longtable}{% + \CheckCommand*{\LT@p@ftntext}[1]{% + \edef\@tempa{% + \the\LT@p@ftn + \noexpand\footnotetext[\the\c@footnote]% + }% + \global\LT@p@ftn\expandafter{\@tempa{#1}}% + }% + \long\def\LT@p@ftntext#1{% + \edef\@tempa{% + \the\LT@p@ftn + \begingroup + \noexpand\c@footnote=\the\c@footnote\relax + \noexpand\protected@xdef\noexpand\@thefnmark{% + \noexpand\thempfn + }% + \noexpand\Hy@LT@footnotetext{% + \Hy@footnote@currentHref + }% + }% + \global\LT@p@ftn\expandafter{% + \@tempa{#1}% + \endgroup + }% + }% + \long\def\Hy@LT@footnotetext#1#2{% + \H@@footnotetext{% + \ifHy@nesting + \hyper@@anchor{#1}{#2}% + \else + \Hy@raisedlink{% + \hyper@@anchor{#1}{\relax}% + }% + \def\@currentHref{#1}% + \let\@currentlabelname\@empty + #2% + \fi + }% + }% + }{}% +% \end{macrocode} +% +% Footnotes for fancyvrb (Fix by Manuel P\'egouri\'e-Gonnard). +% \begin{macrocode} + \@ifpackageloaded{fancyvrb}{% + \def\V@@footnotetext{% + \insert\footins\bgroup + \csname reset@font\endcsname + \footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth\dp\strutbox + \floatingpenalty \@MM + \hsize\columnwidth + \@parboxrestore + \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% + \@makefntext{}% + \rule{\z@}{\footnotesep}% + \bgroup + \aftergroup\V@@@footnotetext + \Hy@raisedlink{% + \expandafter\hyper@@anchor\expandafter{% + \Hy@footnote@currentHref + }{\relax}% + }% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + \ignorespaces + }% + }{}% +% \end{macrocode} +% +% KOMA-Script defines \cs{footref} that uses both +% \cs{ref} and \cs{@footnotemark} resulting in two links, +% one of them wrong. +% \begin{macrocode} + \def\Hy@temp#1{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \@footnotemark + }% + \ifx\Hy@temp\footref + \def\footref#1{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \H@@footnotemark + }% + \fi +% \end{macrocode} +% +% But the special footnotes +% in |\maketitle| are much too hard to deal with +% properly. Let them revert to plain behaviour. +% The koma classes add an optional argument. +% \begin{macrocode} + \let\HyOrg@maketitle\maketitle + \def\maketitle{% + \let\Hy@saved@footnotemark\@footnotemark + \let\Hy@saved@footnotetext\@footnotetext + \let\@footnotemark\H@@footnotemark + \let\@footnotetext\H@@footnotetext + \@ifnextchar[\Hy@maketitle@optarg{% ] + \HyOrg@maketitle + \Hy@maketitle@end + }% + }% + \def\Hy@maketitle@optarg[#1]{% + \HyOrg@maketitle[{#1}]% + \Hy@maketitle@end + }% + \def\Hy@maketitle@end{% + \ifx\@footnotemark\H@@footnotemark + \let\@footnotemark\Hy@saved@footnotemark + \fi + \ifx\@footnotetext\H@@footnotetext + \let\@footnotetext\Hy@saved@footnotetext + \fi + }% +% \end{macrocode} +% \begin{macro}{\realfootnote} +% Does anyone remember the function and purpose of \cmd{\realfootnote}? +% \begin{macrocode} + \def\realfootnote{% + \@ifnextchar[\@xfootnote{% + \stepcounter{\@mpfn}% + \protected@xdef\@thefnmark{\thempfn}% + \H@@footnotemark\H@@footnotetext + }% + }% +% \end{macrocode} +% \begin{macrocode} +\fi +\Hy@DisableOption{hyperfootnotes} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</package> +%<*check> +\checklatex +\checkcommand\def\@xfootnotenext[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \@footnotetext +} +\checkcommand\def\@xfootnotemark[#1]{% + \begingroup + \c@footnote #1\relax + \unrestored@protected@xdef\@thefnmark{\thefootnote}% + \endgroup + \@footnotemark +} +\checkcommand\def\@footnotemark{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \@makefnmark + \ifhmode\spacefactor\@x@sf\fi + \relax +} +%</check> +%<*package> +% \end{macrocode} +% +% \section{Float captions}\label{captions} +% Make the float caption the hypertext anchor; curiously enough, +% we can't just copy the definition of |\@caption|. Its all to do +% with expansion. It screws up. Sigh. +% \begin{macrocode} +\def\caption{% + \ifx\@captype\@undefined + \@latex@error{\noexpand\caption outside float}\@ehd + \expandafter\@gobble + \else + \H@refstepcounter\@captype + \let\Hy@tempa\@caption + \@ifundefined{float@caption}{% + }{% + \expandafter\ifx\csname @float@c@\@captype\endcsname + \float@caption + \let\Hy@tempa\Hy@float@caption + \fi + }% + \expandafter\@firstofone + \fi + {\@dblarg{\Hy@tempa\@captype}}% +} +\long\def\@caption#1[#2]#3{% + \expandafter\ifx\csname if@capstart\expandafter\endcsname + \csname iftrue\endcsname + \global\let\@currentHref\hc@currentHref + \else + \hyper@makecurrent{\@captype}% + \fi + \@ifundefined{NR@gettitle}{% + \def\@currentlabelname{#2}% + }{% + \NR@gettitle{#2}% + }% + \par\addcontentsline{\csname ext@#1\endcsname}{#1}{% + \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}% + }% + \begingroup + \@parboxrestore + \if@minipage + \@setminipage + \fi + \normalsize + \expandafter\ifx\csname if@capstart\expandafter\endcsname + \csname iftrue\endcsname + \global\@capstartfalse + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces#3}% + \else + \@makecaption{\csname fnum@#1\endcsname}{% + \ignorespaces +% \end{macrocode} +% If we cannot have nesting, the anchor is empty. +% \begin{macrocode} + \ifHy@nesting + \expandafter\hyper@@anchor\expandafter{\@currentHref}{#3}% + \else + \Hy@raisedlink{% + \expandafter\hyper@@anchor\expandafter{% + \@currentHref + }{\relax}% + }% + #3% + \fi + }% + \fi + \par + \endgroup +} +% \end{macrocode} +% Compatibility with float.sty: anchor setting at the top +% of the float, if the float is controlled by float.sty. +% Several \verb|\caption| commands inside one float are +% not supported. +% +% \cs{HyNew@float@makebox} is introduced as feature request +% of Axel Sommerfeldt to make the life easier for his +% package `caption'. +% \begin{macrocode} +\let\Hy@float@caption\@caption +\newcommand{\HyNew@float@makebox}[1]{% + \HyOrg@float@makebox{% + #1\relax + \ifx\Hy@float@currentHref\@undefined + \else + \expandafter\hyper@@anchor\expandafter{% + \Hy@float@currentHref + }{\relax}% + \global\let\Hy@float@currentHref\@undefined + \fi + }% +}% +\@ifpackageloaded{float}{% + \def\Hy@float@caption{% + \ifx\Hy@float@currentHref\@undefined + \hyper@makecurrent{\@captype}% + \global\let\Hy@float@currentHref\@currentHref + \else + \let\@currentHref\Hy@float@currentHref + \fi + \float@caption + }% + \let\HyOrg@float@makebox\float@makebox + \let\float@makebox\HyNew@float@makebox +}{} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +%<*check> +\checklatex[1999/06/01 - 2000/06/01] +\checkcommand\def\caption{% + \ifx\@captype\@undefined + \@latex@error{\noexpand\caption outside float}\@ehd + \expandafter\@gobble + \else + \refstepcounter\@captype + \expandafter\@firstofone + \fi + {\@dblarg{\@caption\@captype}}% +} +\checkcommand\long\def\@caption#1[#2]#3{% + \par + \addcontentsline{\csname ext@#1\endcsname}{#1}{% + \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}% + }% + \begingroup + \@parboxrestore + \if@minipage + \@setminipage + \fi + \normalsize + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup +} +%</check> +%<*package> +% \end{macrocode} +% +% \section{Bibliographic references}\label{bib} +% This is not very robust, since many styles redefine these things. +% The package used to redefine |\@citex| and the like; then we tried +% adding the hyperref call explicitly into the .aux file. +% Now we redefine |\bibcite|; this still breaks some citation packages +% so we have to work around them. But this remains extremely dangerous. +% Any or all of \emph{achemso} +% and \emph{drftcite} may break. +% +% However, lets make an attempt to get \emph{natbib} right, because +% thats a powerful, important package. +% Patrick Daly (\Email{daly@linmpi.mpg.de}) has +% provided hooks for us, so all we need to do is activate them. +% \begin{macrocode} +\def\hyper@natlinkstart#1{% + \Hy@backout{#1}% + \hyper@linkstart{cite}{cite.#1}% + \def\hyper@nat@current{#1}% +} +\def\hyper@natlinkend{% + \hyper@linkend +} +\def\hyper@natlinkbreak#1#2{% + \hyper@linkend#1\hyper@linkstart{cite}{cite.#2}% +} +\def\hyper@natanchorstart#1{% + \Hy@raisedlink{\hyper@anchorstart{cite.#1}}% +} +\def\hyper@natanchorend{\hyper@anchorend} +% \end{macrocode} +% Do not play games if we have natbib support. +% Macro \@extra@binfo added for chapterbib support. Chapterbib also +% wants \cs{@extra@binfo} in the hyper-link, but since the link tag is +% not expanded immediately, we use \cs{@extra@b@citeb}, so cites in a +% chapter will link to the bibliography in that chapter. +% \begin{macrocode} +\ltx@IfUndefined{NAT@parse}{% + \providecommand*\@extra@binfo{}% + \providecommand*\@extra@b@citeb{}% + \def\bibcite#1#2{% + \@newl@bel{b}{#1\@extra@binfo}{% + \hyper@@link[cite]{}{cite.#1\@extra@b@citeb}{#2}% + }% + }% + \gdef\@extra@binfo{}% +% \end{macrocode} +% Package |babel| redefines \cmd{\bibcite} with +% macro \cmd{\bbl@cite@choice}. It needs to be overwritten +% to avoid the warning ``Label(s) may have changed.''. +% \begin{macrocode} + \let\Hy@bibcite\bibcite + \begingroup + \@ifundefined{bbl@cite@choice}{}{% + \g@addto@macro\bbl@cite@choice{% + \let\bibcite\Hy@bibcite + }% + }% + \endgroup +% \end{macrocode} +% |\@BIBLABEL| is working around a `feature' of Rev\TeX. +% \begin{macrocode} + \providecommand*{\@BIBLABEL}{\@biblabel}% + \def\@lbibitem[#1]#2{% + \@skiphyperreftrue + \H@item[% + \ifx\Hy@raisedlink\@empty + \hyper@anchorstart{cite.#2\@extra@b@citeb}% + \@BIBLABEL{#1}% + \hyper@anchorend + \else + \Hy@raisedlink{% + \hyper@anchorstart{cite.#2\@extra@b@citeb}\hyper@anchorend + }% + \@BIBLABEL{#1}% + \fi + \hfill + ]% + \@skiphyperreffalse + \if@filesw + \begingroup + \let\protect\noexpand + \immediate\write\@auxout{% + \string\bibcite{#2}{#1}% + }% + \endgroup + \fi + \ignorespaces + }% +% \end{macrocode} +% Since |\bibitem| is doing its own labelling, call the raw +% version of |\item|, to avoid extra spurious labels +% \begin{macrocode} + \def\@bibitem#1{% + \@skiphyperreftrue\H@item\@skiphyperreffalse + \Hy@raisedlink{% + \hyper@anchorstart{cite.#1\@extra@b@citeb}\relax\hyper@anchorend + }% + \if@filesw + \begingroup + \let\protect\noexpand + \immediate\write\@auxout{% + \string\bibcite{#1}{\the\value{\@listctr}}% + }% + \endgroup + \fi + \ignorespaces + }% +}{} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +%<*check> +\checklatex +\checkcommand\def\@lbibitem[#1]#2{% + \item[\@biblabel{#1}\hfill]% + \if@filesw + {% + \let\protect\noexpand + \immediate\write\@auxout{% + \string\bibcite{#2}{#1}% + }% + }% + \fi + \ignorespaces +} +\checkcommand\def\@bibitem#1{% + \item + \if@filesw + \immediate\write\@auxout{% + \string\bibcite{#1}{\the\value{\@listctr}}% + }% + \fi + \ignorespaces +} +%</check> +%<*package> +% \end{macrocode} +% +% Revtex (bless its little heart) takes over |\bibcite| and looks +% at the result to measure something. Make this a hypertext link +% and it goes ape. Therefore, make an anodyne result first, call +% its business, then go back to the real thing. +% \begin{macrocode} +\@ifclassloaded{revtex}{% + \Hy@Info{*** compatibility with revtex **** }% + \def\revtex@checking#1#2{% + \expandafter\let\expandafter\T@temp\csname b@#1\endcsname + \expandafter\def\csname b@#1\endcsname{#2}% + \@SetMaxRnhefLabel{#1}% + \expandafter\let\csname b@#1\endcsname\T@temp + }% +% \end{macrocode} +% Tanmoy provided this replacement for CITEX. Lord knows what it does. +% For chapterbib added: \@extra@b@citeb +% \begin{macrocode} + \@ifundefined{@CITE}{\def\@CITE{\@cite}}{}% + \providecommand*{\@extra@b@citeb}{}% + \def\@CITEX[#1]#2{% + \let\@citea\@empty + \leavevmode + \unskip + $^{% + \scriptstyle + \@CITE{% + \@for\@citeb:=#2\do{% + \@citea + \def\@citea{,\penalty\@m\ }% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw + \immediate\write\@auxout{\string\citation{\@citeb}}% + \fi + \@ifundefined{b@\@citeb\extra@b@citeb}{% + \mbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning{% + Citation `\@citeb' on page \thepage \space undefined% + }% + }{% + {\csname b@\@citeb\@extra@b@citeb\endcsname}% + }% + }% + }{#1}% + }$% + }% +% \end{macrocode} +% No, life is too short. I am not going to understand the +% Revtex |\@collapse| macro, I shall +% just restore the original behaviour of |\@citex|; +% sigh. This is SO vile. +% \begin{macrocode} + \def\@citex[#1]#2{% + \let\@citea\@empty + \@cite{% + \@for\@citeb:=#2\do{% + \@citea + \def\@citea{,\penalty\@m\ }% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw + \immediate\write\@auxout{\string\citation{\@citeb}}% + \fi + \@ifundefined{b@\@citeb\@extra@b@citeb}{% + \mbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning{% + Citation `\@citeb' on page \thepage \space undefined% + }% + }{% + \hbox{\csname b@\@citeb\@extra@b@citeb\endcsname}% + }% + }% + }{#1}% + }% +}{} +% \end{macrocode} +% +% \subsection{Package harvard} +% +% Override Peter Williams' Harvard package; we have to +% a) make each of the citation types into a link; b) make +% each citation write a backref entry, and c) kick off a backreference +% section for each bibliography entry. +% +% The redefinitions have to be deferred to |\begin{document}|, +% because if harvard.sty is loaded and html.sty is present and +% detects pdf\TeX, then hyperref is already loaded at the begin +% of harvard.sty, and the |\newcommand| macros causes error +% messages. +% \begin{macrocode} +\@ifpackageloaded{harvard}{% + \Hy@AtBeginDocument{% + \Hy@Info{*** compatibility with harvard **** }% + \Hy@raiselinksfalse + \def\harvardcite#1#2#3#4{% + \global\@namedef{HAR@fn@#1}{\hyper@@link[cite]{}{cite.#1}{#2}}% + \global\@namedef{HAR@an@#1}{\hyper@@link[cite]{}{cite.#1}{#3}}% + \global\@namedef{HAR@yr@#1}{\hyper@@link[cite]{}{cite.#1}{#4}}% + \global\@namedef{HAR@df@#1}{\csname HAR@fn@#1\endcsname}% + }% + \def\HAR@citetoaux#1{% + \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi% + \ifHy@backref + \ifx\@empty\@currentlabel + \else + \@bsphack + \if@filesw + \protected@write\@auxout{}{% + \string\@writefile{brf}{% + \string\backcite{#1}{% + {\thepage}{\@currentlabel}{\@currentHref}% + }% + }% + }% + \fi + \@esphack + \fi + \fi + }% + \def\harvarditem{% + \@ifnextchar[{\@harvarditem}{\@harvarditem[\null]}% + }% + \def\@harvarditem[#1]#2#3#4#5\par{% + \item[]% + \hyper@anchorstart{cite.#4}\relax\hyper@anchorend + \if@filesw + \begingroup + \def\protect##1{\string ##1\space}% + \ifthenelse{\equal{#1}{\null}}% + {\def\next{{#4}{#2}{#2}{#3}}}% + {\def\next{{#4}{#2}{#1}{#3}}}% + \immediate\write\@auxout{\string\harvardcite\codeof\next}% + \endgroup + \fi + \protect\hspace*{-\labelwidth}% + \protect\hspace*{-\labelsep}% + \ignorespaces + #5% + \ifHy@backref + \newblock + \backref{\csname br@#4\endcsname}% + \fi + \par + }% +% \end{macrocode} +% \begin{macro}{\HAR@checkcitations} +% Package hyperref has added \cmd{\hyper@@link}, so +% the original test \cmd{\HAR@checkcitations} will +% fail every time and always will appear the ``Changed +% labels'' warning. So we have to redefine +% \cmd{\Har@checkcitations}: +% \begin{macrocode} + \long\def\HAR@checkcitations#1#2#3#4{% + \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#2}}% + \expandafter\ifx\csname HAR@fn@#1\endcsname\HAR@tempa + \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#3}}% + \expandafter\ifx\csname HAR@an@#1\endcsname\HAR@tempa + \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#4}}% + \expandafter\ifx\csname HAR@yr@#1\endcsname\HAR@tempa + \else + \@tempswatrue + \fi + \else + \@tempswatrue + \fi + \else + \@tempswatrue + \fi + }% + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +}{} +% \end{macrocode} +% +% \subsection{Package chicago} +% The links by \cmd{\citeN} and \cmd{\shortciteN} should +% include the closing parentheses. +% +% \begin{macrocode} +\@ifpackageloaded{chicago}{% +% \end{macrocode} +% \begin{macro}{\citeN} +% \begin{macrocode} + \def\citeN{% + \def\@citeseppen{-1000}% + \def\@cite##1##2{##1}% + \def\citeauthoryear##1##2##3{##1 (##3\@cite@opt)}% + \@citedata@opt + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\shortciteN} +% \begin{macrocode} + \def\shortciteN{% + \def\@citeseppen{-1000}% + \def\@cite##1##2{##1}% + \def\citeauthoryear##1##2##3{##2 (##3\@cite@opt)}% + \@citedata@opt + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@citedata@opt} +% \begin{macrocode} + \def\@citedata@opt{% + \let\@cite@opt\@empty + \@ifnextchar [{% + \@tempswatrue + \@citedatax@opt + }{% + \@tempswafalse + \@citedatax[]% + }% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@citedatax@opt} +% \begin{macrocode} + \def\@citedatax@opt[#1]{% + \def\@cite@opt{, #1}% + \@citedatax[{#1}]% + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +}{} +% \end{macrocode} +% +% \section{Page numbers}\label{pagenum} +% +% The last page should not contain a /Dur key, because there +% is no page after the last page. Therefore at the last page +% there should be a command |\hypersetup{pdfpageduration={}}|. +% This can be set with \cmd{\AtEndDocument}, but it can +% be too late, if the last page is already finished, or too +% early, if lots of float pages will follow. +% Therefore currently nothing is done by hyperref. +% +% This where we supply a destination for each page. +% \begin{macrocode} +\ltx@ifclassloaded{slides}{% + \def\Hy@SlidesFormatOptionalPage#1{(#1)}% + \def\Hy@PageAnchorSlidesPlain{% + \advance\c@page\ltx@one + \edef\Hy@TempPageAnchor{% + \noexpand\hyper@@anchor{% + page.\the\c@slide.\the\c@overlay.\the\c@note% + \ifnum\c@page=\ltx@one + \else + .\the\c@page + \fi + }% + }% + \advance\c@page-\ltx@one + }% + \def\Hy@PageAnchorSlide{% + \advance\c@page\ltx@one + \ifnum\c@page>\ltx@one + \ltx@IfUndefined{theHpage}{% + \protected@edef\Hy@TheSlideOptionalPage{% + \Hy@SlidesFormatOptionalPage{\thepage}% + }% + }{% + \protected@edef\Hy@TheSlideOptionalPage{% + \Hy@SlidesFormatOptionalPage{\theHpage}% + }% + }% + \else + \def\Hy@TheSlideOptionalPage{}% + \fi + \advance\c@page-\ltx@one + \pdfstringdef\@the@H@page{% + \csname + the% + \ltx@ifundefined{theH\Hy@SlidesPage}{}{H}% + \Hy@SlidesPage + \endcsname + \Hy@TheSlideOptionalPage + }% + \ltx@gobblethree + }% + \def\Hy@SlidesPage{slide}% + \g@addto@macro\slide{% + \def\Hy@SlidesPage{slide}% + }% + \g@addto@macro\overlay{% + \def\Hy@SlidesPage{overlay}% + }% + \g@addto@macro\note{% + \def\Hy@SlidesPage{note}% + }% +}{% + \def\Hy@PageAnchorSlidesPlain{}% + \def\Hy@PageAnchorSlide{}% +} +\def\Hy@EveryPageAnchor{% + \Hy@DistillerDestFix + \ifHy@pageanchor + \ifHy@hypertexnames + \ifHy@plainpages + \def\Hy@TempPageAnchor{\hyper@@anchor{page.\the\c@page}}% + \Hy@PageAnchorSlidesPlain + \else + \begingroup + \let\@number\@firstofone + \Hy@unicodefalse + \Hy@PageAnchorSlide + \pdfstringdef\@the@H@page{\thepage}% + \endgroup + \EdefUnescapeString\@the@H@page{\@the@H@page}% + \def\Hy@TempPageAnchor{\hyper@@anchor{page.\@the@H@page}}% + \fi + \else + \Hy@GlobalStepCount\Hy@pagecounter + \def\Hy@TempPageAnchor{% + \hyper@@anchor{page.\the\Hy@pagecounter}% + }% + \fi + \vbox to 0pt{% + \kern\voffset + \kern\topmargin + \kern-1bp\relax + \hbox to 0pt{% + \kern\hoffset + \kern\ifodd\value{page}% + \oddsidemargin + \else + \evensidemargin + \fi + \kern-1bp\relax + \Hy@TempPageAnchor\relax + \hss + }% + \vss + }% + \fi +} +\g@addto@macro\Hy@EveryPageBoxHook{% + \Hy@EveryPageAnchor +} +% \end{macrocode} +% +% \section{Table of contents}\label{toc} +% TV Raman noticed that people who add arbitrary material into the TOC +% generate a bad or null link. We avoid that by checking if the current +% destination is empty. But if `the most recent destination' is not +% what you expect, you will be in trouble. +% \begin{macrocode} +% In newer \LaTeX\ releases this is defined to put a \verb|%| at the end of the +% line in the \textt{toc}file. +% \begin{macrocode} +\providecommand\protected@file@percent{} +% \end{macrocode} +% +% \begin{macrocode} +\def\addcontentsline#1#2#3{% toc extension, type, tag + \begingroup + \let\label\@gobble + \ifx\@currentHref\@empty + \Hy@Warning{% + No destination for bookmark of \string\addcontentsline,% + \MessageBreak destination is added% + }% + \phantomsection + \fi + \expandafter\ifx\csname toclevel@#2\endcsname\relax + \begingroup + \def\Hy@tempa{#1}% + \ifx\Hy@tempa\Hy@bookmarkstype + \Hy@WarningNoLine{% + bookmark level for unknown #2 defaults to 0% + }% + \else + \Hy@Info{bookmark level for unknown #2 defaults to 0}% + \fi + \endgroup + \expandafter\gdef\csname toclevel@#2\endcsname{0}% + \fi + \edef\Hy@toclevel{\csname toclevel@#2\endcsname}% + \Hy@writebookmark{\csname the#2\endcsname}% + {#3}% + {\@currentHref}% + {\Hy@toclevel}% + {#1}% + \ifHy@verbose + \begingroup + \def\Hy@tempa{#3}% + \@onelevel@sanitize\Hy@tempa + \let\temp@online\on@line + \let\on@line\@empty + \Hy@Info{% + bookmark\temp@online:\MessageBreak + thecounter {\csname the#2\endcsname}\MessageBreak + text {\Hy@tempa}\MessageBreak + reference {\@currentHref}\MessageBreak + toclevel {\Hy@toclevel}\MessageBreak + type {#1}% + }% + \endgroup + \fi + \addtocontents{#1}{% + \protect\contentsline{#2}{#3}{\thepage}{\@currentHref}\protected@file@percent + }% + \endgroup +} +% \end{macrocode} +% \begin{macro}{\contentsline} +% The page number might be empty. In this case the link for the +% page number is suppressed to avoid little link boxes. +% \begin{macrocode} +\def\contentsline#1#2#3#4{% + \begingroup + \Hy@safe@activestrue + \edef\x{\endgroup + \def\noexpand\Hy@tocdestname{#4}% + }\x + \ifx\Hy@tocdestname\ltx@empty + \csname l@#1\endcsname{#2}{#3}% + \else + \ifcase\Hy@linktoc % none + \csname l@#1\endcsname{#2}{#3}% + \or % section + \csname l@#1\endcsname{% + \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend + }{#3}% + \or % page + \def\Hy@temp{#3}% + \ifx\Hy@temp\ltx@empty + \csname l@#1\endcsname{#2}{#3}% + \else + \csname l@#1\endcsname{{#2}}{% + \hyper@linkstart{link}{\Hy@tocdestname}{#3}\hyper@linkend + }% + \fi + \else % all + \def\Hy@temp{#3}% + \ifx\Hy@temp\ltx@empty + \csname l@#1\endcsname{% + \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend + }{}% + \else + \csname l@#1\endcsname{% + \hyper@linkstart{link}{\Hy@tocdestname}{#2}\hyper@linkend + }{% + \hyper@linkstart{link}{\Hy@tocdestname}{#3}\hyper@linkend + }% + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</package> +%<*check> +\checklatex +\checkcommand\def\addcontentsline#1#2#3{% + \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}% +} +\checkcommand\def\contentsline#1{\csname l@#1\endcsname} +%</check> +%<*package> +% \end{macrocode} +% +% \section{New counters}\label{counters} +% The whole theorem business makes up new counters on the fly; +% we are going to intercept this. Sigh. Do it at the level where +% new counters are defined. +% \begin{macrocode} +\let\H@definecounter\@definecounter +\def\@definecounter#1{% + \H@definecounter{#1}% + \expandafter\gdef\csname theH#1\endcsname{\arabic{#1}}% +} +% \end{macrocode} +% But what if they have used the optional argument to e.g. |\newtheorem| +% to determine when the numbering is reset? OK, we'll trap that too. +% \begin{macrocode} +\let\H@newctr\@newctr +\def\@newctr#1[#2]{% + \H@newctr#1[{#2}]% + \expandafter\gdef\csname theH#1\endcsname{% + \csname the\@ifundefined{theH#2}{}{H}#2\endcsname.\arabic{#1}% + }% +} +% \end{macrocode} +% \section{AMS\LaTeX\ compatibility}\label{ams} +% Oh, no, they don't use anything as simple as |\refstepcounter| +% in the AMS! We need to intercept some low-level operations +% of theirs. Damned if we are going to try and work out what +% they get up to. Just stick a label of `AMS' on the front, and use the +% label \emph{they} worked out. If that produces something invalid, I give +% up. They'll change all the code again anyway, I expect (SR). +% +% Version 6.77p uses a patch by Ross Moore. +% \begin{macrocode} +\@ifpackageloaded{amsmath}{% + \def\Hy@make@anchor{% + \Hy@MakeCurrentHrefAuto{AMS}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% + }% + \def\Hy@make@df@tag@@#1{% + \gdef\df@tag{% + \maketag@@@{\Hy@make@anchor#1}% + \def\@currentlabel{#1}% + }% + }% + \def\Hy@make@df@tag@@@#1{% + \gdef\df@tag{% + \tagform@{\Hy@make@anchor#1}% + \toks@\@xp{\p@equation{#1}}% + \edef\@currentlabel{\the\toks@}% + }% + }% + \let\HyOrg@make@df@tag@@\make@df@tag@@ + \let\HyOrg@make@df@tag@@@\make@df@tag@@@ + \let\make@df@tag@@\Hy@make@df@tag@@ + \let\make@df@tag@@@\Hy@make@df@tag@@@ +}{} +% \end{macrocode} +% Only play with |\seteqlebal| if we are using pdftex. Other drivers +% cause problems; requested by Michael Downes (AMS). +% \begin{macrocode} +\@ifpackagewith{hyperref}{pdftex}{% + \let\H@seteqlabel\@seteqlabel + \def\@seteqlabel#1{% + \H@seteqlabel{#1}% + \xdef\@currentHref{AMS.\the\Hy@linkcounter}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + }% +}{} +% \end{macrocode} +% This code I simply cannot remember what I was trying to achieve. +% The final result seems to do nothing anyway. +%\begin{verbatim} +%\let\H@tagform@\tagform@ +%\def\tagform@#1{% +% \maketag@@@{\hyper@@anchor{\@currentHref}% +% {(\ignorespaces#1\unskip)}}% +%} +%\def\eqref#1{\textup{\H@tagform@{\ref{#1}}}} +%\end{verbatim} +% +% \subsection{\texorpdfstring{\cs{@addtoreset}}{\\@addtoreset} and +% \texorpdfstring{\cs{numberwithin}}{\\numberwithin} patches} +% +% \cs{@addtoreset} puts a counter to the reset list of +% another counter. After a reset the counter starts +% again with perhaps already used values. Therefore +% the hyperref version of the counter print command +% \cs{theHcounter} is redefined in order to add the +% parent counter. +% \begin{macrocode} +\let\HyOrg@addtoreset\@addtoreset +\def\@addtoreset#1#2{% + \HyOrg@addtoreset{#1}{#2}% + \expandafter\xdef\csname theH#1\endcsname{% + \expandafter\noexpand + \csname the\@ifundefined{theH#2}{}H#2\endcsname + .\noexpand\the\noexpand\value{#1}% + }% +} +% \end{macrocode} +% +% \begin{macro}{\numberwithin} +% A appropiate definition of hyperref's companion counter +% (\cmd{\theH...}) is added for correct link names. +% \begin{macrocode} +%</package> +%<*check> +\checkpackage{amsmath}[1999/12/14 - 2000/06/06] +\checkcommand\newcommand{\numberwithin}[3][\arabic]{% + \@ifundefined{c@#2}{\@nocounterr{#2}}{% + \@ifundefined{c@#3}{\@nocnterr{#3}}{% + \@addtoreset{#2}{#3}% + \@xp\xdef\csname the#2\endcsname{% + \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}% + }% + }% + }% +}% +%</check> +%<*package> +\@ifpackageloaded{amsmath}{% + \@ifpackagelater{amsmath}{1999/12/14}{% + \renewcommand*{\numberwithin}[3][\arabic]{% + \@ifundefined{c@#2}{\@nocounterr{#2}}{% + \@ifundefined{c@#3}{\@nocnterr{#3}}{% + \HyOrg@addtoreset{#2}{#3}% + \@xp\xdef\csname the#2\endcsname{% + \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}% + }% + \@xp\xdef\csname theH#2\endcsname{% + \@xp\@nx + \csname the\@ifundefined{theH#3}{}H#3\endcsname + .\@nx#1{#2}% + }% + }% + }% + }% + }{% + \Hy@WarningNoLine{% + \string\numberwithin\space of package `amsmath' % + only fixed\MessageBreak + for version 2000/06/06 v2.12 or newer% + }% + }% +}{} +% \end{macrocode} +% \end{macro} +% +% \section{Included figures} +% Simply intercept the low level graphics package macro. +% \begin{macrocode} +\ifHy@hyperfigures + \let\Hy@Gin@setfile\Gin@setfile + \def\Gin@setfile#1#2#3{% + \hyperimage{#3}{\Hy@Gin@setfile{#1}{#2}{#3}}% + }% +\fi +\Hy@DisableOption{hyperfigures} +% \end{macrocode} +% +% \section{hyperindex entries}\label{hyperindex} +% Internal command names are prefixed with \cmd{\HyInd@}. +% +% Hyper-indexing works crudely, by forcing code onto the end of the index +% entry with the \verb+|+ feature; this puts a hyperlink around +% the printed page numbers. It will not proceed if the author has already +% used the \verb+|+ specifier for something like emboldening entries. +% That would make Makeindex fail (cannot have two \verb+|+ specifiers). +% The solution is for the author to use generic coding, and put in +% the requisite |\hyperpage| in his/her own macros along with the boldness. +% +% This section is poor stuff; it's open to all sorts of abuse. Sensible +% large projects will design their own indexing macros any bypass this. +% \begin{macrocode} +\ifHy@hyperindex + \def\HyInd@ParenLeft{(}% + \def\HyInd@ParenRight{)}% + \def\hyperindexformat#1#2{% + \let\HyOrg@hyperpage\hyperpage + \let\hyperpage\@firstofone + #1{\HyOrg@hyperpage{#2}}% + \let\hyperpage\HyOrg@hyperpage + }% + \Hy@nextfalse + \@ifpackageloaded{multind}{\Hy@nexttrue}{}% + \@ifpackageloaded{index}{\Hy@nexttrue}{}% + \@ifpackageloaded{amsmidx}{\Hy@nexttrue}{}% + \begingroup + \lccode`\|=\expandafter`\HyInd@EncapChar\relax + \lccode`\/=`\\\relax + \lowercase{\endgroup + \ifHy@next + \let\HyInd@org@wrindex\@wrindex + \def\@wrindex#1#2{\HyInd@@wrindex{#1}#2||\\}% + \def\HyInd@@wrindex#1#2|#3|#4\\{% + \ifx\\#3\\% + \HyInd@org@wrindex{#1}{#2|hyperpage}% + \else + \HyInd@@@wrindex{#1}{#2}#3\\% + \fi + }% + \def\HyInd@@@wrindex#1#2#3#4\\{% + \def\Hy@temp@A{#3}% + \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi + \ifx\Hy@temp@A\HyInd@ParenRight 1\fi + \relax + \HyInd@org@wrindex{#1}{% + #2|hyperindexformat{/#3#4}% + }% + \else + \ifx\\#4\\% + \ifx\Hy@temp@A\HyInd@ParenRight + \HyInd@org@wrindex{#1}{#2|#3}% + \else + \HyInd@org@wrindex{#1}{#2|#3hyperpage}% + \fi + \else + \HyInd@org@wrindex{#1}{% + #2|#3hyperindexformat{/#4}% + }% + \fi + \fi + }% + \else + \def\@wrindex#1{\@@wrindex#1||\\}% + \def\@@wrindex#1|#2|#3\\{% + \if@filesw + \ifx\\#2\\% + \protected@write\@indexfile{}{% + \string\indexentry{#1|hyperpage}{\thepage}% + }% + \else + \HyInd@@@wrindex{#1}#2\\% + \fi + \fi + \endgroup + \@esphack + }% + \def\HyInd@@@wrindex#1#2#3\\{% + \def\Hy@temp@A{#2}% + \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi + \ifx\Hy@temp@A\HyInd@ParenRight 1\fi + \relax + \protected@write\@indexfile{}{% + \string\indexentry{% + #1|hyperindexformat{/#2#3}% + }{\thepage}% + }% + \else + \ifx\\#3\\% + \ifx\Hy@temp@A\HyInd@ParenRight + \HyInd@DefKey{#1}% + \ltx@IfUndefined{HyInd@(\HyInd@key)}{% + \let\Hy@temp\ltx@empty + }{% + \expandafter\let\expandafter\Hy@temp + \csname HyInd@(\HyInd@key)\endcsname + }% + \protected@write\@indexfile{}{% + \string\indexentry{#1|#2\Hy@temp}{\thepage}% + }% + \else + \protected@write\@indexfile{}{% + \string\indexentry{#1|#2hyperpage}{\thepage}% + }% + \HyInd@DefKey{#1}% + \expandafter + \gdef\csname HyInd@(\HyInd@key)\endcsname{% + hyperpage% + }% + \fi + \else + \protected@write\@indexfile{}{% + \string\indexentry{% + #1|#2hyperindexformat{/#3}% + }{\thepage}% + }% + \ifx\Hy@temp@A\HyInd@ParenLeft + \HyInd@DefKey{#1}% + \expandafter + \gdef\csname HyInd@(\HyInd@key)\endcsname{% + hyperindexformat{/#3}% + }% + \fi + \fi + \fi + }% + \def\HyInd@DefKey#1{% + \begingroup + \let\protect\@unexpandable@protect + \edef\Hy@temp{#1}% + \ltx@onelevel@sanitize\Hy@temp + \global\let\HyInd@key\Hy@temp + \endgroup + }% + \fi + }% +\fi +\Hy@DisableOption{hyperindex} +\Hy@DisableOption{encap} +% \end{macrocode} +% +% \begin{macro}{\nohyperpage} +% The definition of \cs{nohyperpage} is just a precaution. +% It is used to mark code that does not belong to a page +% number, but \cs{nohyperpage} is never executed. +% \begin{macrocode} +\def\nohyperpage#1{#1} +% \end{macrocode} +% \end{macro} +% This again is quite flaky, but allow for the common situation of a +% page range separated by en-rule. We split this into two different +% hyperlinked pages. +% \begin{macrocode} +\def\hyperpage#1{% + \HyInd@hyperpage#1\nohyperpage{}\@nil +} +\def\HyInd@hyperpage#1\nohyperpage#2#3\@nil{% + \HyInd@@hyperpage{#1}% + #2% + \def\Hy@temp{#3}% + \ifx\Hy@temp\@empty + \else + \ltx@ReturnAfterFi{% + \HyInd@hyperpage#3\@nil + }% + \fi +} +\def\HyInd@@hyperpage#1{\@hyperpage#1----\\} +\def\@hyperpage#1--#2--#3\\{% + \ifx\\#2\\% + \@commahyperpage{#1}% + \else + \HyInd@pagelink{#1}--\HyInd@pagelink{#2}% + \fi +} +\def\@commahyperpage#1{\@@commahyperpage#1, ,\\} +\def\@@commahyperpage#1, #2,#3\\{% + \ifx\\#2\\% + \HyInd@pagelink{#1}% + \else + \HyInd@pagelink{#1}, \HyInd@pagelink{#2}% + \fi +} +% \end{macrocode} +% +% The argument of \cmd{\hyperpage} can be empty. And the +% line breaking algorithm of Makeindex can introduce spaces. +% So we have to remove them. +% \begin{macrocode} +\def\HyInd@pagelink#1{% + \begingroup + \toks@={}% + \HyInd@removespaces#1 \@nil + \endgroup +} +\def\HyInd@removespaces#1 #2\@nil{% + \toks@=\expandafter{\the\toks@#1}% + \ifx\\#2\\% + \edef\x{\the\toks@}% + \ifx\x\@empty + \else + \hyperlink{page.\the\toks@}{\the\toks@}% + \fi + \else + \ltx@ReturnAfterFi{% + \HyInd@removespaces#2\@nil + }% + \fi +} +% \end{macrocode} +% +% \section{Compatibility with foiltex} +% +% \begin{macrocode} +\@ifclassloaded{foils}{% + \providecommand*\ext@table{lot}% + \providecommand*\ext@figure{lof}% +}{} +% \end{macrocode} +% +% \section{Compatibility with seminar slide package}\label{seminar} +% This requires \texttt{seminar.bg2}, version 1.6 or later. +% Contributions by Denis Girou (\Email{denis.girou@idris.fr}). +% \begin{macrocode} +\@ifclassloaded{seminar}{% + \Hy@seminarslidestrue + \providecommand\theHslide{\arabic{slide}}% +}{% + \Hy@seminarslidesfalse +} +\@ifpackageloaded{slidesec}{% + \providecommand\theHslidesection {\arabic{slidesection}}% + \providecommand\theHslidesubsection{% + \theHslidesection.\arabic{slidesubsection}% + }% + \def\slide@heading[#1]#2{% + \H@refstepcounter{slidesection}% + \@addtoreset{slidesubsection}{slidesection}% + \addtocontents{los}{% + \protect\l@slide{\the\c@slidesection}{\ignorespaces#1}% + {\@SCTR}{slideheading.\theslidesection}% + }% + \def\Hy@tempa{#2}% + \ifx\Hy@tempa\@empty + \else + {% + \edef\@currentlabel{% + \csname p@slidesection\endcsname\theslidesection + }% + \makeslideheading{#2}% + }% + \fi + \gdef\theslideheading{#1}% + \gdef\theslidesubheading{}% + \ifHy@bookmarksnumbered + \def\Hy@slidetitle{\theslidesection\space #1}% + \else + \def\Hy@slidetitle{#1}% + \fi + \ifHy@hypertexnames + \ifHy@naturalnames + \hyper@@anchor{slideheading.\theslidesection}{\relax}% + \Hy@writebookmark + {\theslidesection}% + {\Hy@slidetitle}% + {slideheading.\theslidesection}% + {1}% + {toc}% + \else + \hyper@@anchor{slideheading.\theHslidesection}{\relax}% + \Hy@writebookmark + {\theslidesection}% + {\Hy@slidetitle}% + {slideheading.\theHslidesection}% + {1}% + {toc}% + \fi + \else + \Hy@GlobalStepCount\Hy@linkcounter + \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}% + \Hy@writebookmark + {\theslidesection}% + {\Hy@slidetitle}% + {slideheading.\the\Hy@linkcounter}% + {1}% + {toc}% + \fi + }% + \def\slide@subheading[#1]#2{% + \H@refstepcounter{slidesubsection}% + \addtocontents{los}{% + \protect\l@subslide{\the\c@slidesubsection}{\ignorespaces#1}% + {\@SCTR}{slideheading.\theslidesubsection}% + }% + \def\Hy@tempa{#2}% + \ifx\Hy@tempa\@empty + \else + {% + \edef\@currentlabel{% + \csname p@slidesubsection\endcsname\theslidesubsection + }% + \makeslidesubheading{#2}% + }% + \fi + \gdef\theslidesubheading{#1}% + \ifHy@bookmarksnumbered + \def\Hy@slidetitle{\theslidesubsection\space #1}% + \else + \def\Hy@slidetitle{#1}% + \fi + \ifHy@hypertexnames + \ifHy@naturalnames + \hyper@@anchor{slideheading.\theslidesubsection}{\relax}% + \Hy@writebookmark + {\theslidesubsection}% + {\Hy@slidetitle}% + {slideheading.\theslidesubsection}% + {2}% + {toc}% + \else + \hyper@@anchor{slideheading.\theHslidesubsection}{\relax}% + \Hy@writebookmark + {\theslidesubsection}% + {\Hy@slidetitle}% + {slideheading.\theHslidesubsection}% + {2}% + {toc}% + \fi + \else + \Hy@GlobalStepCount\Hy@linkcounter + \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}% + \Hy@writebookmark + {\theslidesubsection}% + {\Hy@slidetitle}% + {slideheading.\the\Hy@linkcounter}% + {1}% + {toc}% + \fi + }% + \providecommand*{\listslidename}{List of Slides}% + \def\listofslides{% + \section*{% + \listslidename + \@mkboth{% + \expandafter\MakeUppercase\listslidename + }{% + \expandafter\MakeUppercase\listslidename + }% + }% + \def\l@slide##1##2##3##4{% + \slide@undottedcline{% + \slidenumberline{##3}{\hyperlink{##4}{##2}}% + }{}% + }% + \let\l@subslide\l@slide + \@startlos + }% + \def\slide@contents{% + \def\l@slide##1##2##3##4{% + \slide@cline{\slidenumberline{##3}{\hyperlink{##4}{##2}}}{##3}% + }% + \let\l@subslide\@gobblefour + \@startlos + }% + \def\Slide@contents{% + \def\l@slide##1##2##3##4{% + \ifcase\lslide@flag + \message{##1 ** \the\c@slidesection}% + \ifnum##1>\c@slidesection + \def\lslide@flag{1}% + {% + \large + \slide@cline{% + \slidenumberline{$\Rightarrow\bullet$}% + {\hyperlink{##4}{##2}}% + }{##3}% + }% + \else + {% + \large + \slide@cline{% + \slidenumberline{$\surd\;\bullet$}% + {\hyperlink{##4}{##2}}% + }{##3}% + }% + \fi + \or + \def\lslide@flag{2}% + {% + \large + \slide@cline{% + \slidenumberline{$\bullet$}% + {\hyperlink{##4}{##2}}% + }{##3}% + }% + \or + {% + \large + \slide@cline{% + \slidenumberline{$\bullet$}% + {\hyperlink{##4}{##2}}% + }{##3}% + }% + \fi + }% + \def\l@subslide##1##2##3##4{% + \ifnum\lslide@flag=1 % + \@undottedtocline{2}{3.8em}{3.2em}{\hyperlink{##4}{##2}}{}% + \fi + }% + \def\lslide@flag{0}% + \@startlos + }% +}{} +% \end{macrocode} +% This breaks TeX4ht, so leave it to last. +% Emend |\@setref| to put out a hypertext link as well as its +% normal text (which is used as an anchor). +% (|\endinput| have to be on the same line like |\fi|, or you +% have to use |\expandafter| before.) +% \begin{macrocode} +\ifHy@texht + \expandafter\endinput +\fi +\let\real@setref\@setref +\def\@setref#1#2#3{% csname, extract group, refname + \ifx#1\relax + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{% + Reference `#3' on page \thepage \space undefined% + }% + \else + \expandafter\Hy@setref@link#1\@empty\@empty\@nil{#2}% + \fi +} +% \end{macrocode} +% \cmd{\Hy@setref@link} extracts the reference information entries, +% because \cmd{\hyper@@link} does not expand arguments for the +% automatic link type detection. +% \begin{macrocode} +\def\Hy@setref@link#1#2#3#4#5#6\@nil#7{% + \begingroup + \toks0={\hyper@@link{#5}{#4}}% + \toks1=\expandafter{#7{#1}{#2}{#3}{#4}{#5}}% + \edef\x{\endgroup + \the\toks0 {\the\toks1 }% + }% + \x +} +\def\@pagesetref#1#2#3{% csname, extract macro, ref + \ifx#1\relax + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{% + Reference `#3' on page \thepage \space undefined% + }% + \else + \protect\hyper@@link + {\expandafter\@fifthoffive#1}% + {page.\expandafter\@secondoffive#1}% + {\expandafter\@secondoffive#1}% + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +%<*check> +\checklatex +\checkcommand\def\@setref#1#2#3{% + \ifx#1\relax + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{% + Reference `#3' on page \thepage\space undefined% + }% + \else + \expandafter#2#1\null + \fi +} +%</check> +%<*package> +% \end{macrocode} +% +% Now some extended referencing. |\ref*| and |\pageref*| are not linked, +% and |\autoref| prefixes with a tag based on the type. +% \begin{macrocode} +\def\HyRef@StarSetRef#1{% + \begingroup + \Hy@safe@activestrue + \edef\x{#1}% + \@onelevel@sanitize\x + \edef\x{\endgroup + \noexpand\HyRef@@StarSetRef + \expandafter\noexpand\csname r@\x\endcsname{\x}% + }% + \x +} +\def\HyRef@@StarSetRef#1#2#3{% + \ifx#1\@undefined + \let#1\relax + \fi + \real@setref#1#3{#2}% +} +\def\@refstar#1{% + \HyRef@StarSetRef{#1}\@firstoffive +} +\def\@pagerefstar#1{% + \HyRef@StarSetRef{#1}\@secondoffive +} +\def\@namerefstar#1{% + \HyRef@StarSetRef{#1}\@thirdoffive +} +\Hy@AtBeginDocument{% + \@ifpackageloaded{varioref}{% + \def\@Refstar#1{% + \HyRef@StarSetRef{#1}\HyRef@MakeUppercaseFirstOfFive + }% + \def\HyRef@MakeUppercaseFirstOfFive#1#2#3#4#5{% + \MakeUppercase#1% + }% + \DeclareRobustCommand*{\Ref}{% + \@ifstar\@Refstar\HyRef@Ref + }% + \def\HyRef@Ref#1{% + \hyperref[{#1}]{\Ref*{#1}}% + }% + \def\Vr@f#1{% + \leavevmode\unskip\vref@space + \hyperref[{#1}]{% + \Ref*{#1}% + \let\vref@space\nobreakspace + \@vpageref[\unskip]{#1}% + }% + }% + \def\vr@f#1{% + \leavevmode\unskip\vref@space + \begingroup + \let\T@pageref\@pagerefstar + \hyperref[{#1}]{% + \ref*{#1}% + \vpageref[\unskip]{#1}% + }% + \endgroup + }% + }{}% +} +\DeclareRobustCommand*{\autopageref}{% + \@ifstar{% + \HyRef@autopagerefname\pageref*% + }\HyRef@autopageref +} +\def\HyRef@autopageref#1{% + \hyperref[{#1}]{\HyRef@autopagerefname\pageref*{#1}}% +} +\def\HyRef@autopagerefname{% + \ltx@IfUndefined{pageautorefname}{% + \ltx@IfUndefined{pagename}{% + \Hy@Warning{No autoref name for `page'}% + }{% + \pagename\nobreakspace + }% + }{% + \pageautorefname\nobreakspace + }% +} +% \end{macrocode} +% \cs{leavevmode} is added to make package wrapfigure happy, if +% \cs{autoref} starts a paragraph. +% \begin{macrocode} +\DeclareRobustCommand*{\autoref}{% + \leavevmode + \@ifstar{\HyRef@autoref\@gobbletwo}{\HyRef@autoref\hyper@@link}% +} +\def\HyRef@autoref#1#2{% + \begingroup + \Hy@safe@activestrue + \expandafter\HyRef@autosetref\csname r@#2\endcsname{#2}{#1}% + \endgroup +} +\def\HyRef@autosetref#1#2#3{% link command, csname, refname + \HyRef@ShowKeysRef{#2}% + \ifcase 0\ifx#1\relax 1\fi\ifx#1\Hy@varioref@undefined 1\fi\relax + \edef\HyRef@thisref{% + \expandafter\@fourthoffive#1\@empty\@empty\@empty + }% + \expandafter\HyRef@testreftype\HyRef@thisref.\\% + \Hy@safe@activesfalse + #3{% + \expandafter\@fifthoffive#1\@empty\@empty\@empty + }{% + \expandafter\@fourthoffive#1\@empty\@empty\@empty + }{% + \HyRef@currentHtag + \expandafter\@firstoffive#1\@empty\@empty\@empty + \null + }% + \else + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{% + Reference `#2' on page \thepage\space undefined% + }% + \fi +} +\def\HyRef@testreftype#1.#2\\{% + \ltx@IfUndefined{#1autorefname}{% + \ltx@IfUndefined{#1name}{% + \HyRef@StripStar#1\\*\\\@nil{#1}% + \ltx@IfUndefined{\HyRef@name autorefname}{% + \ltx@IfUndefined{\HyRef@name name}{% + \def\HyRef@currentHtag{}% + \Hy@Warning{No autoref name for `#1'}% + }{% + \edef\HyRef@currentHtag{% + \expandafter\noexpand\csname\HyRef@name name\endcsname + \noexpand~% + }% + }% + }{% + \edef\HyRef@currentHtag{% + \expandafter\noexpand + \csname\HyRef@name autorefname\endcsname + \noexpand~% + }% + }% + }{% + \edef\HyRef@currentHtag{% + \expandafter\noexpand\csname#1name\endcsname + \noexpand~% + }% + }% + }{% + \edef\HyRef@currentHtag{% + \expandafter\noexpand\csname#1autorefname\endcsname + \noexpand~% + }% + }% +} +\def\HyRef@StripStar#1*\\#2\@nil#3{% + \def\HyRef@name{#2}% + \ifx\HyRef@name\HyRef@CaseStar + \def\HyRef@name{#1}% + \else + \def\HyRef@name{#3}% + \fi +} +\def\HyRef@CaseStar{*\\} +\def\HyRef@currentHtag{} +% \end{macrocode} +% +% Support for package |showkeys|. +% \begin{macro}{\HyRef@ShowKeysRef} +% \begin{macrocode} +\let\HyRef@ShowKeysRef\@gobble +\def\HyRef@ShowKeysInit{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname SK@@label\endcsname\relax + \else + \ifx\SK@ref\@empty + \else + \def\HyRef@ShowKeysRef{% + \SK@\SK@@ref + }% + \fi + \fi +} +\@ifpackageloaded{showkeys}{% + \HyRef@ShowKeysInit +}{% + \Hy@AtBeginDocument{% + \@ifpackageloaded{showkeys}{% + \HyRef@ShowKeysInit + }{}% + }% +} +% \end{macrocode} +% \end{macro} +% +% Defaults for the names that \cmd{\autoref} uses. +% \begin{macrocode} +\providecommand*\AMSautorefname{\equationautorefname} +\providecommand*\Hfootnoteautorefname{\footnoteautorefname} +\providecommand*\Itemautorefname{\itemautorefname} +\providecommand*\itemautorefname{item} +\providecommand*\equationautorefname{Equation} +\providecommand*\footnoteautorefname{footnote} +\providecommand*\itemautorefname{item} +\providecommand*\figureautorefname{Figure} +\providecommand*\tableautorefname{Table} +\providecommand*\partautorefname{Part} +\providecommand*\appendixautorefname{Appendix} +\providecommand*\chapterautorefname{chapter} +\providecommand*\sectionautorefname{section} +\providecommand*\subsectionautorefname{subsection} +\providecommand*\subsubsectionautorefname{subsubsection} +\providecommand*\paragraphautorefname{paragraph} +\providecommand*\subparagraphautorefname{subparagraph} +\providecommand*\FancyVerbLineautorefname{line} +\providecommand*\theoremautorefname{Theorem} +\providecommand*\pageautorefname{page} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \section{Configuration files} +% +% \subsection{PS/PDF strings} +% +% Some drivers write PS or PDF strings. These strings are delimited +% by parentheses, therefore a lonely unmatched parenthesis must be +% avoided to avoid PS or PDF syntax errors. Also the backslash character +% itself has to be protected. +% +% \begin{macro}{\Hy@pstringdef} +% Therefore such strings should be passed through |\Hy@pstringdef|. +% The first argument holds a macro for the result, the second +% argument is the string that needs protecting. +% Since version 1.30.0 pdf\TeX\ offers \cs{pdfescapestring}. +% \begin{macrocode} +%<*pdftex|dvipdfm|xetex|vtex|pdfmarkbase|dviwindo> +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdf@escapestring\endcsname\relax + \begingroup + \catcode`\|=0 % + \@makeother\\% + |@firstofone{|endgroup + |def|Hy@pstringdef#1#2{% + |begingroup + |edef~{|string~}% + |xdef|Hy@gtemp{#2}% + |endgroup + |let#1|Hy@gtemp + |@onelevel@sanitize#1% + |edef#1{|expandafter|Hy@ExchangeBackslash#1\|@nil}% + |edef#1{|expandafter|Hy@ExchangeLeftParenthesis#1(|@nil}% + |edef#1{|expandafter|Hy@ExchangeRightParenthesis#1)|@nil}% + }% + |def|Hy@ExchangeBackslash#1\#2|@nil{% + #1% + |ifx|\#2|\%% + |else + \\% + |ltx@ReturnAfterFi{% + |Hy@ExchangeBackslash#2|@nil + }% + |fi + }% + }% + \def\Hy@ExchangeLeftParenthesis#1(#2\@nil{% + #1% + \ifx\\#2\\% + \else + \@backslashchar(% + \ltx@ReturnAfterFi{% + \Hy@ExchangeLeftParenthesis#2\@nil + }% + \fi + }% + \def\Hy@ExchangeRightParenthesis#1)#2\@nil{% + #1% + \ifx\\#2\\% + \else + \@backslashchar)% + \ltx@ReturnAfterFi{% + \Hy@ExchangeRightParenthesis#2\@nil + }% + \fi + }% +\else + \def\Hy@pstringdef#1#2{% + \begingroup + \edef~{\string~}% + \xdef\Hy@gtemp{\pdf@escapestring{#2}}% + \endgroup + \let#1\Hy@gtemp + }% +\fi +%</pdftex|dvipdfm|xetex|vtex|pdfmarkbase|dviwindo> +% \end{macrocode} +% \end{macro} +% +% \subsection{pdftex} +% +% \begin{macrocode} +%<*pdftex> +\providecommand*{\XR@ext}{pdf} +\Hy@setbreaklinks{true} +\def\HyPat@ObjRef{% + [0-9]*[1-9][0-9]* 0 R% +} +% \end{macrocode} +% This driver is for Han The Thanh's \TeX{} variant +% which produces PDF directly. This has new primitives +% to do PDF things, which usually translate almost directly to +% PDF code, so there is a lot of flexibility which we do not at +% present harness. +% +% Set PDF version if requested by option \textsf{pdfversion}. +% \begin{itemize} +% \item pdf\TeX\ 1.10a, 2003-01-16: \cs{pdfoptionpdfminorversion} +% \item pdf\TeX\ 1.30, 2005-08-081: \cs{pdfminorversion} +% \end{itemize} +% \begin{macrocode} +\let\Hy@pdfminorversion\relax +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdfminorversion\endcsname\relax + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname pdfoptionpdfminorversion\endcsname\relax + \else + \def\Hy@pdfminorversion{\pdfoptionpdfminorversion}% + \fi +\else + \def\Hy@pdfminorversion{\pdfminorversion}% +\fi +\@ifundefined{Hy@pdfminorversion}{% + \PackageInfo{hyperref}{% + PDF version is not set, because pdfTeX is too old (<1.10a)% + }% +}{% + \ifHy@ocgcolorlinks + \ifnum\Hy@pdfminorversion<5 % + \kvsetkeys{Hyp}{pdfversion=1.5}% + \fi + \fi + \ifHy@setpdfversion + \ifnum\Hy@pdfversion<5 % + \ltx@IfUndefined{pdfobjcompresslevel}{% + }{% + \ifHy@verbose + \Hy@InfoNoLine{% + PDF object streams are disabled, because they are% + \MessageBreak + not supported in requested PDF version % + 1.\Hy@pdfversion + }% + \fi + \pdfobjcompresslevel=\ltx@zero + }% + \fi + \ifnum\Hy@pdfminorversion=\Hy@pdfversion\relax + \else + \let\Hy@temp\ltx@empty + \def\Hy@temp@A#1#2{% + \ifnum#1>\ltx@zero + \edef\Hy@temp{% + \Hy@temp + \space\space + \the#1\space #2% + \ifnum#1=\ltx@one\else s\fi + \MessageBreak + }% + \fi + }% + \Hy@temp@A\pdflastobj{PDF object}% + \Hy@temp@A\pdflastxform{form XObject}% + \Hy@temp@A\pdflastximage{image XObject}% + \Hy@temp@A\pdflastannot{annotation}% + \ltx@IfUndefined{pdflastlink}{% + }{% + \Hy@temp@A\pdflastlink{link}% + }% + \ifx\Hy@temp\ltx@empty + \Hy@pdfminorversion=\Hy@pdfversion\relax + \else + \let\Hy@temp@A\ltx@empty + \ifnum\Hy@pdfversion=4 % + \IfFileExists{pdf14.sty}{% + \def\Hy@temp@A{% + \MessageBreak + Or \string\RequirePackage{pdf14} can be used% + \MessageBreak + before \string\documentclass\space as shortcut% + }% + }{}% + \fi + \Hy@WarningNoLine{% + The PDF version number could not be set,\MessageBreak + because some PDF objects are already written:% + \MessageBreak + \Hy@temp + The version should be set as early as possible:% + \MessageBreak + \space\space + \expandafter\string\Hy@pdfminorversion=\Hy@pdfversion + \string\relax + \ifnum\Hy@pdfversion<5 % + \ltx@ifundefined{pdfobjcompresslevel}{% + }{% + \MessageBreak + \space\space + \string\pdfobjcompresslevel=0\string\relax + }% + \fi + \Hy@temp@A + }% + \fi + \fi + \PackageInfo{hyperref}{% + \expandafter\string\Hy@pdfminorversion + :=\number\Hy@pdfversion\space + }% + \fi + \edef\Hy@pdfversion{\number\Hy@pdfminorversion}% +} +\Hy@DisableOption{pdfversion}% +% \end{macrocode} +% +% \begin{macrocode} +\ifHy@ocgcolorlinks + \pdf@ifdraftmode{}{% + \immediate\pdfobj{% + <<% + /Type/OCG% + /Name(View)% + /Usage<<% + /Print<<% + /PrintState/OFF% + >>% + /View<<% + /ViewState/ON% + >>% + >>% + >>% + }% + \edef\OBJ@OCG@view{\the\pdflastobj\space 0 R}% + \immediate\pdfobj{% + <<% + /Type/OCG% + /Name(Print)% + /Usage<<% + /Print<<% + /PrintState/ON% + >>% + /View<<% + /ViewState/OFF% + >>% + >>% + >>% + }% + \edef\OBJ@OCG@print{\the\pdflastobj\space 0 R}% + \immediate\pdfobj{% + [% + \OBJ@OCG@view\space\OBJ@OCG@print + ]% + }% + \edef\OBJ@OCGs{\the\pdflastobj\space 0 R}% + \pdfcatalog{% + /OCProperties<<% + /OCGs \OBJ@OCGs + /D<<% + /OFF[\OBJ@OCG@print]% + /AS[% + <<% + /Event/View% + /OCGs \OBJ@OCGs + /Category[/View]% + >>% + <<% + /Event/Print% + /OCGs \OBJ@OCGs + /Category[/Print]% + >>% + <<% + /Event/Export% + /OCGs \OBJ@OCGs + /Category[/Print]% + >>% + ]% + >>% + >>% + }% + \begingroup + \edef\x{\endgroup + \pdfpageresources{% + \the\pdfpageresources + /Properties<<% + /OCView \OBJ@OCG@view + /OCPrint \OBJ@OCG@print + >>% + }% + }% + \x + }% + \Hy@AtBeginDocument{% + \def\Hy@colorlink#1{% + \begingroup + \ifHy@ocgcolorlinks + \def\Hy@ocgcolor{#1}% + \setbox0=\hbox\bgroup\color@begingroup + \else + \HyColor@UseColor#1% + \fi + }% + \def\Hy@endcolorlink{% + \ifHy@ocgcolorlinks + \color@endgroup\egroup + \mbox{% + \pdfliteral page{/OC/OCPrint BDC}% + \rlap{\copy0}% + \pdfliteral page{EMC/OC/OCView BDC}% + \begingroup + \expandafter\HyColor@UseColor\Hy@ocgcolor + \box0 % + \endgroup + \pdfliteral page{EMC}% + }% + \fi + \endgroup + }% + }% +\else + \Hy@DisableOption{ocgcolorlinks}% +\fi +% \end{macrocode} +% +% First, allow for some changes and additions to pdftex syntax: +% \begin{macrocode} +\def\setpdflinkmargin#1{% + \begingroup + \setlength{\dimen@}{#1}% + \expandafter\endgroup + \expandafter\pdflinkmargin\the\dimen@\relax +} +\ifx\pdfstartlink\@undefined% less than version 14 + \let\pdfstartlink\pdfannotlink + \let\pdflinkmargin\@tempdima + \let\pdfxform\pdfform + \let\pdflastxform\pdflastform + \let\pdfrefxform\pdfrefform +\else + \pdflinkmargin1pt % +\fi +% \end{macrocode} +% First set up the default linking +% \begin{macrocode} +\providecommand*\@pdfview{XYZ} +% \end{macrocode} +% First define the anchors: +% \begin{macrocode} +\Hy@WrapperDef\new@pdflink#1{% + \ifhmode + \@savsf\spacefactor + \fi + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}% + \Hy@DestName\Hy@pstringDest\@pdfview + \Hy@RestoreLastskip + \ifhmode + \spacefactor\@savsf + \fi +} +\let\pdf@endanchor\@empty +% \end{macrocode} +% \begin{macro}{\Hy@DestName} +% Wrap the call of \verb|\pdfdest name| in \cs{Hy@DestName}. +% Then it can easier be catched by package |hypdestopt|. +% \begin{macrocode} +\def\Hy@DestName#1#2{% + \pdfdest name{#1}#2\relax +} +% \end{macrocode} +% \end{macro} +% +% Now the links; the interesting part here is the set of attributes +% which define how the link looks. We probably want to add a border +% and color it, but there are other choices. This directly translates +% to PDF code, so consult the manual for how to change this. We will +% add an interface at some point. +% \begin{macrocode} +\providecommand*\@pdfborder{0 0 1} +\providecommand*\@pdfborderstyle{} +\def\Hy@undefinedname{UNDEFINED} +\def\find@pdflink#1#2{% + \leavevmode + \protected@edef\Hy@testname{#2}% + \ifx\Hy@testname\@empty + \Hy@Warning{% + Empty destination name,\MessageBreak + using `\Hy@undefinedname'% + }% + \let\Hy@testname\Hy@undefinedname + \else + \Hy@pstringdef\Hy@testname{% + \expandafter\HyperDestNameFilter\expandafter{\Hy@testname}% + }% + \fi + \Hy@StartlinkName{% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\CurrentBorderColor\relax + \else + /C[\CurrentBorderColor]% + \fi + }\Hy@testname + \expandafter\Hy@colorlink\csname @#1color\endcsname +} +\def\Hy@StartlinkName#1#2{% + \pdfstartlink attr{#1}goto name{#2}\relax +} +\def\close@pdflink{% + \Hy@endcolorlink + \Hy@VerboseLinkStop + \pdfendlink +} +\def\hyper@anchor#1{% + \new@pdflink{#1}\anchor@spot\pdf@endanchor +} +\def\hyper@anchorstart#1{% + \new@pdflink{#1}% + \Hy@activeanchortrue +} +\def\hyper@anchorend{% + \pdf@endanchor + \Hy@activeanchorfalse +} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \ltx@IfUndefined{@#1bordercolor}{% + \let\CurrentBorderColor\relax + }{% + \edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}% + }% + \find@pdflink{#1}{#2}% +} +\def\hyper@linkend{\close@pdflink} +\def\hyper@link#1#2#3{% + \Hy@VerboseLinkStart{#1}{#2}% + \ltx@IfUndefined{@#1bordercolor}{% + \let\CurrentBorderColor\relax + }{% + \edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}% + }% + \find@pdflink{#1}{#2}#3\Hy@xspace@end + \close@pdflink +} +\let\CurrentBorderColor\@linkbordercolor +\def\hyper@linkurl#1#2{% + \begingroup + \Hy@pstringdef\Hy@pstringURI{#2}% + \hyper@chars + \leavevmode + \pdfstartlink + attr{% + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\@urlbordercolor\relax + \else + /C[\@urlbordercolor]% + \fi + }% + user{% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + /A<<% + /Type/Action% + /S/URI% + /URI(\Hy@pstringURI)% + \ifHy@href@ismap + /IsMap true% + \fi + \Hy@href@nextactionraw + >>% + }% + \relax + \Hy@colorlink\@urlcolor#1\Hy@xspace@end + \close@pdflink + \endgroup +} +\def\hyper@linkfile#1#2#3{% anchor text, filename, linkname + \begingroup + \def\Hy@pstringF{#2}% + \Hy@CleanupFile\Hy@pstringF + \Hy@pstringdef\Hy@pstringF\Hy@pstringF + \Hy@pstringdef\Hy@pstringD{#3}% + \Hy@MakeRemoteAction + \leavevmode + \pdfstartlink + attr{% + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\@filebordercolor\relax + \else + /C[\@filebordercolor]% + \fi + }% + user {% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + /A<<% + /F(\Hy@pstringF)% + /S/GoToR% + \Hy@SetNewWindow +% \end{macrocode} +% If |#3| is empty, page 0; if its a number, Page number, otherwise +% a named destination. +% \begin{verbatim} +% \afterassignment\xxx\count@=0\foo!% +% +%\def\xxx#1!{% +% \ifx\xxx#1\xxx +% foo was an integer +% \else +% it wasnt +% \fi} +% \end{verbatim} +% \begin{macrocode} + \ifx\\#3\\% + /D[\Hy@href@page\@pdfremotestartview]% + \else + /D(\Hy@pstringD)% + \fi + \Hy@href@nextactionraw + >>% + }% + \relax + \Hy@colorlink\@filecolor#1\Hy@xspace@end + \close@pdflink + \endgroup +} +\def\@hyper@launch run:#1\\#2#3{% filename, anchor text linkname + \begingroup + \Hy@pstringdef\Hy@pstringF{#1}% + \Hy@pstringdef\Hy@pstringP{#3}% + \leavevmode + \pdfstartlink + attr{% + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\@runbordercolor\relax + \else + /C[\@runbordercolor]% + \fi + }% + user {% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + /A<<% + /F(\Hy@pstringF)% + /S/Launch% + \Hy@SetNewWindow + \ifx\\#3\\% + \else + /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>% + \fi + \Hy@href@nextactionraw + >>% + }% + \relax + \Hy@colorlink\@runcolor#2\Hy@xspace@end + \close@pdflink + \endgroup +} +% \end{macrocode} +% \begin{macro}{\PDF@SetupDox} +% \begin{macrocode} +\def\PDF@SetupDoc{% + \ifx\@pdfpagescrop\@empty + \else + \edef\process@me{% + \pdfpagesattr={% + /CropBox[\@pdfpagescrop]% + \expandafter\ifx\expandafter\\\the\pdfpagesattr\\% + \else + ^^J\the\pdfpagesattr + \fi + }% + }% + \process@me + \fi + \Hy@pstringdef\Hy@pstringB{\@baseurl}% + \pdfcatalog{% + /PageMode/\@pdfpagemode + \ifx\@baseurl\@empty + \else + /URI<</Base(\Hy@pstringB)>>% + \fi + }% + \ifx\@pdfstartpage\@empty + \else + \ifx\@pdfstartview\@empty + \else + openaction goto page\@pdfstartpage{\@pdfstartview}% + \fi + \fi + \edef\Hy@temp{% + \ifHy@pdftoolbar\else /HideToolbar true\fi + \ifHy@pdfmenubar\else /HideMenubar true\fi + \ifHy@pdfwindowui\else /HideWindowUI true\fi + \ifHy@pdffitwindow /FitWindow true\fi + \ifHy@pdfcenterwindow /CenterWindow true\fi + \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi + \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode + \Hy@UseNameKey{Direction}\@pdfdirection + \Hy@UseNameKey{ViewArea}\@pdfviewarea + \Hy@UseNameKey{ViewClip}\@pdfviewclip + \Hy@UseNameKey{PrintArea}\@pdfprintarea + \Hy@UseNameKey{PrintClip}\@pdfprintclip + \Hy@UseNameKey{PrintScaling}\@pdfprintscaling + \Hy@UseNameKey{Duplex}\@pdfduplex + \ifx\@pdfpicktraybypdfsize\@empty + \else + /PickTrayByPDFSize \@pdfpicktraybypdfsize + \fi + \ifx\@pdfprintpagerange\@empty + \else + /PrintPageRange[\@pdfprintpagerange]% + \fi + \ifx\@pdfnumcopies\@empty + \else + /NumCopies \@pdfnumcopies + \fi + }% + \pdfcatalog{% + \ifx\Hy@temp\@empty + \else + /ViewerPreferences<<\Hy@temp>>% + \fi + \Hy@UseNameKey{PageLayout}\@pdfpagelayout + \ifx\@pdflang\relax + \else + /Lang(\@pdflang)% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PDF@FinishDoc} +% \begin{macrocode} +\def\PDF@FinishDoc{% + \pdf@ifdraftmode{}{% + \Hy@UseMaketitleInfos + \HyInfo@GenerateAddons + \pdfinfo{% + /Author(\@pdfauthor)% + /Title(\@pdftitle)% + /Subject(\@pdfsubject)% + /Creator(\@pdfcreator)% + \ifx\@pdfcreationdate\@empty + \else + /CreationDate(\@pdfcreationdate)% + \fi + \ifx\@pdfmoddate\@empty + \else + /ModDate(\@pdfmoddate)% + \fi + \ifx\@pdfproducer\relax + \else + /Producer(\@pdfproducer)% + \fi + /Keywords(\@pdfkeywords)% + \ifx\@pdftrapped\@empty + \else + /Trapped/\@pdftrapped + \fi + \HyInfo@Addons + }% + }% + \Hy@DisableOption{pdfauthor}% + \Hy@DisableOption{pdftitle}% + \Hy@DisableOption{pdfsubject}% + \Hy@DisableOption{pdfcreator}% + \Hy@DisableOption{addtopdfcreator}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfmoddate}% + \Hy@DisableOption{pdfproducer}% + \Hy@DisableOption{pdfkeywords}% + \Hy@DisableOption{pdftrapped}% + \Hy@DisableOption{pdfinfo}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\hyper@pagetransition} +% \cmd{\@pdfpagetransition} is initialized with \cmd{\relax}. So +% it indicates, if option pdfpagetransition is used. First previous +% |/Trans| entries are removed. If a new |/Trans| key exists, it is +% appended to \cmd{\pdfpageattr}. +% \begin{macrocode} +\def\hyper@pagetransition{% + \ifx\@pdfpagetransition\relax + \else + \expandafter\Hy@RemoveTransPageAttr + \the\pdfpageattr^^J/Trans{}>>\END + \ifx\@pdfpagetransition\@empty + \else + \edef\@processme{% + \global\pdfpageattr{% + \the\pdfpageattr + ^^J/Trans << /S /\@pdfpagetransition\space >>% + }% + }% + \@processme + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@RemoveTransPageAttr} +% Macro \cmd{\Hy@RemoveTransPageAttr} removes a |/Trans| +% entry from \cmd{\pdfpageattr}. It is called with +% the end marker |^^J/Trans{}>>\END|. The trick is the +% empty group that does not appear in legal +% \cmd{\pdfpageattr} code. It appears in argument +% |#2| and shows, whether the parameter text +% catches a really |/Trans| object or the end marker. +% \begin{macrocode} +\gdef\Hy@RemoveTransPageAttr#1^^J/Trans#2#3>>#4\END{% + \ifx\\#2\\% + \global\pdfpageattr{#1}% + \else + \Hy@RemoveTransPageAttr#1#4\END + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hyper@pageduration} +% \cmd{\@pdfpageduration} is initialized with \cmd{\relax}. So +% it indicates, if option pdfpageduration is used. First previous +% |/Dur| entries are removed. If a new |/Dur| key exists, it is +% appended to \cmd{\pdfpageattr}. +% \begin{macrocode} +\def\hyper@pageduration{% + \ifx\@pdfpageduration\relax + \else + \expandafter + \Hy@RemoveDurPageAttr\the\pdfpageattr^^J/Dur{} \END + \ifx\@pdfpageduration\@empty + \else + \edef\@processme{% + \global\pdfpageattr{% + \the\pdfpageattr + ^^J/Dur \@pdfpageduration\space + }% + }% + \@processme + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@RemoveDurPageAttr} +% Macro \cmd{\Hy@RemoveDurPageAttr} removes a |/Dur| +% entry from \cmd{\pdfpageattr}. It is called with +% the end marker |^^J/Dur{} \END|. The trick is the +% empty group that does not appear in legal +% \cmd{\pdfpageattr} code. It appears in argument +% |#2| and shows, whether the parameter text +% catches a really |/Dur| object or the end marker. +% \begin{macrocode} +\gdef\Hy@RemoveDurPageAttr#1^^J/Dur#2#3 #4\END{% + \ifx\\#2\\% + \global\pdfpageattr{#1}% + \else + \Hy@RemoveDurPageAttr#1#4\END + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hyper@pagehidden} +% The boolean value of the key |/Hid| is stored in switch +% \cmd{\ifHy@pdfpagehidden}. +% First previous |/Hid| entries are removed, then the new +% one is appended, if the value is true (the PDF default +% is false). +% \begin{macrocode} +\def\hyper@pagehidden{% + \ifHy@useHidKey + \expandafter + \Hy@RemoveHidPageAttr\the\pdfpageattr^^J/Hid{} \END + \ifHy@pdfpagehidden + \edef\@processme{% + \global\pdfpageattr{% + \the\pdfpageattr + ^^J/Hid true % SPACE + }% + }% + \@processme + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Hy@RemoveHidPageAttr} +% Macro \cmd{\Hy@RemoveHidPageAttr} removes a |/Hid| +% entry from \cmd{\pdfpageattr}. It is called with +% the end marker |^^J/Hid{} \END|. The trick is the +% empty group that does not appear in legal +% \cmd{\pdfpageattr} code. It appears in argument +% |#2| and shows, whether the parameter text +% catches a really |/Hid| object or the end marker. +% \begin{macrocode} +\gdef\Hy@RemoveHidPageAttr#1^^J/Hid#2#3 #4\END{% + \ifx\\#2\\% + \global\pdfpageattr{#1}% + \else + \Hy@RemoveHidPageAttr#1#4\END + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\pdf@ifdraftmode{}{% + \g@addto@macro\Hy@EveryPageHook{% + \hyper@pagetransition + \hyper@pageduration + \hyper@pagehidden + }% +} +% \end{macrocode} +% +% Also Xe\TeX\ support \cs{pdfpagewidth} and \cs{pdfpageheight}, +% but it does not provide \cs{pdfhorigin} and \cs{pdfvorigin}. +% \begin{macrocode} +%</pdftex> +%<*pdftex|xetex> +\Hy@AtBeginDocument{% + \ifHy@setpagesize + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@ifclassloaded{seminar}{% +%<*pdftex> + \setlength{\pdfhorigin}{1truein}% + \setlength{\pdfvorigin}{1truein}% +%</pdftex> + \ifportrait + \ifdim\paperwidth=\z@ + \else + \setlength{\pdfpagewidth}{\strip@pt\paperwidth truept}% + \fi + \ifdim\paperheight=\z@ + \else + \setlength{\pdfpageheight}{\strip@pt\paperheight truept}% + \fi + \else + \ifdim\paperheight=\z@ + \else + \setlength{\pdfpagewidth}{\strip@pt\paperheight truept}% + \fi + \ifdim\paperwidth=\z@ + \else + \setlength{\pdfpageheight}{\strip@pt\paperwidth truept}% + \fi + \fi + }{% + \ltx@IfUndefined{stockwidth}{% + \ifdim\paperwidth>\z@ + \setlength{\pdfpagewidth}{\paperwidth}% + \fi + \ifdim\paperheight>\z@ + \setlength{\pdfpageheight}{\paperheight}% + \fi + }{% + \ifdim\stockwidth>\z@ + \setlength{\pdfpagewidth}{\stockwidth}% + \fi + \ifdim\stockheight>\z@ + \setlength{\pdfpageheight}{\stockheight}% + \fi + }% + }% + }% + \Hy@DisableOption{setpagesize}% +} +%</pdftex|xetex> +%<*pdftex> +\def\Acrobatmenu#1#2{% + \Hy@Acrobatmenu{#1}{#2}{% + \leavevmode + \EdefEscapeName\Hy@temp@menu{#1}% + \pdfstartlink + attr{% + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\@menubordercolor\relax + \else + /C[\@menubordercolor]% + \fi + }% + user{% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + /A<<% + /S/Named% + /N/\Hy@temp@menu + \Hy@href@nextactionraw + >>% + }% + \relax + \Hy@colorlink\@menucolor#2% + \close@pdflink + }% +} +% \end{macrocode} +% +% \subsubsection{Fix for problem with different nesting levels} +% +% \cs{AtBeginShipoutFirst} adds an additional box layer around +% the first output page. This disturbs pdf\TeX's low level +% link commands \cs{pdfstartlink} and \cs{pdfendlink}, if a +% link is broken across the first and second output page. +% +% The problem could be fixed by replacing \cs{AtBeginShipoutFirst}, +% because the box layer is not necessary for pdf\TeX -- no \cs{special}s +% need to be inserted. However it's easier to add an additional +% box level for the pages after the first one. Also \cs{AtBeginShipoutFirst} +% could be invoked independently from hyperref. +% +% Since version 2011/10/05 v1.16 of package `atbegshi' +% \cs{AtBeginShipoutFirst} does not add a additional box layer. +% \begin{macrocode} +\def\Hy@FixNotFirstPage{% + \gdef\Hy@FixNotFirstPage{% + \setbox\AtBeginShipoutBox=\hbox{% + \copy\AtBeginShipoutBox + }% + }% +} +\ltx@ifpackagelater{atbegshi}{2011/10/05}{% +}{% + \AtBeginShipout{\Hy@FixNotFirstPage}% +} +% \end{macrocode} +% +% \begin{macrocode} +%</pdftex> +% \end{macrocode} +% +% \subsection{hypertex} +% +% The Hyper\TeX\ specification (this is +% borrowed from an article by Arthur Smith) +% says that conformant viewers/translators +% must recognize the following set of |\special| commands: +% \begin{description} +% \item[href:] |html:<a href = "href_string">| +% \item[name:] |html:<a name = "name_string">| +% \item[end:] |html:</a>| +% \item[image:] |html:<img src = "href_string">| +% \item[base\_name:] |html:<base href = "href_string">| +% \end{description} +% +% The \emph{href}, \emph{name} and \emph{end} commands are used to do +% the basic hypertext operations of establishing links between sections +% of documents. The \emph{image} command is intended (as with current +% html viewers) to place an image of arbitrary graphical +% format on the page in the current location. The \emph{base\_name} +% command is be used to communicate to the \emph{dvi} viewer the full (URL) +% location of the current document so that +% files specified by relative URL's may be retrieved correctly. +% +% The \emph{href} and \emph{name} commands must be paired with an +% \emph{end} command later in +% the \TeX{} file --- the \TeX{} commands between the two ends of a pair +% form an \emph{anchor} in the document. In the case of an \emph{href} +% command, the \emph{anchor} is to be highlighted in the +% \emph{dvi} viewer, and +% when clicked on will cause the scene to shift to the destination +% specified by \emph{href\_string}. The \emph{anchor} associated with a +% name command represents a possible location to which other hypertext +% links may refer, either as local references (of the form +% \texttt{href="\#name\_string"} with the \emph{name\_string} +% identical to the one in the name command) or as part of a URL (of the +% form \emph{URL\#name\_string}). Here \emph{href\_string} is a valid +% URL or local identifier, while name\_string could be any string at +% all: the only caveat is that `|"|' characters should be escaped with a +% backslash (|\|), and if it looks like a URL name it may cause +% problems. +% +% \begin{macrocode} +%<*hypertex> +\providecommand*{\XR@ext}{dvi} +\let\PDF@FinishDoc\ltx@empty +\def\PDF@SetupDoc{% + \ifx\@baseurl\@empty + \else + \special{html:<base href="\@baseurl">}% + \fi +} +\Hy@WrapperDef\hyper@anchor#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \let\protect=\string + \hyper@chars + \special{html:<a name=% + \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}% + \endgroup + \Hy@activeanchortrue + \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink + \special{html:</a>}% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\Hy@WrapperDef\hyper@anchorstart#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \hyper@chars + \special{html:<a name=% + \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}% + \endgroup + \Hy@activeanchortrue +} +\def\hyper@anchorend{% + \special{html:</a>}% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\def\@urltype{url} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \expandafter\Hy@colorlink\csname @#1color\endcsname + \def\Hy@tempa{#1}% + \ifx\Hy@tempa\@urltype + \special{html:<a href=\hyper@quote#2\hyper@quote>}% + \else + \begingroup + \hyper@chars + \special{html:<a href=% + \hyper@quote\#\HyperDestNameFilter{#2}\hyper@quote>}% + \endgroup + \fi +} +\def\hyper@linkend{% + \special{html:</a>}% + \Hy@endcolorlink +} +\def\hyper@linkfile#1#2#3{% + \hyper@linkurl{#1}{\Hy@linkfileprefix#2\ifx\\#3\\\else\##3\fi}% +} +\def\hyper@linkurl#1#2{% +% \end{macrocode} +% If we want to raise up the final link |\special|, we need to +% get its height; ask me why \LaTeX\ constructs make this totally +% foul up, and make us revert to basic \TeX. I do not know. +% \begin{macrocode} + \leavevmode + \ifHy@raiselinks + \Hy@SaveSpaceFactor + \Hy@SaveSavedSpaceFactor + \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}% + \Hy@RestoreSavedSpaceFactor + \@linkdim\dp\@tempboxa + \lower\@linkdim\hbox{% + \hyper@chars + \special{html:<a href=\hyper@quote#2\hyper@quote>}% + }% + \Hy@colorlink\@urlcolor + \Hy@RestoreSpaceFactor + #1% + \Hy@SaveSpaceFactor + \@linkdim\ht\@tempboxa +% \end{macrocode} +% Because of the interaction with the dvihps processor, we have to subtract a +% little from the height. This is not clean, or checked. Check with Mark +% Doyle about what gives here. It may not be needed with +% the new dvips (Jan 1997). +% \begin{macrocode} + \advance\@linkdim by -6.5\p@ + \raise\@linkdim\hbox{\special{html:</a>}}% + \Hy@endcolorlink + \Hy@RestoreSpaceFactor + \else + \begingroup + \hyper@chars + \special{html:<a href=\hyper@quote#2\hyper@quote>}% + \Hy@colorlink\@urlcolor#1\Hy@xspace@end + \special{html:</a>}% + \Hy@endcolorlink + \endgroup + \fi +} +% \end{macrocode} +% Very poor implementation of \cs{hyper@link} without considering |#1|. +% \begin{macrocode} +\def\hyper@link#1#2#3{% + \Hy@VerboseLinkStart{#1}{#2}% + \hyper@linkurl{#3}{\#\HyperDestNameFilter{#2}}% +} +% \end{macrocode} +% +% \begin{macrocode} +\def\hyper@image#1#2{% + \begingroup + \hyper@chars + \special{html:<img src=\hyper@quote#1\hyper@quote>}% + \endgroup +} +%</hypertex> +%<*dviwindo> +% \end{macrocode} +% \subsection{dviwindo} +% [This was developed by David Carlisle]. +% Within a file dviwindo hyperlinking is used, for external +% URL's a call to |\wwwbrowser| is made. (You can define +% this command before or after loading the hyperref package +% if the default |c:/netscape/netscape| is not suitable) +% Dviwindo could in fact handle external links to dvi files on +% the same machine without calling a web browser, but that would +% mean parsing the URL to recognise such, and this is currently +% not done. +% +% This was more or less blindly copied from the hypertex cfg. +% For dviwindo, \LaTeX{} must specify the size of the active area +% for links. For some hooks this information is available +% but for some, the start and end of the link are +% specified separately in which case a fixed size area +% of 10000000sp wide by |\baselineskip| high is used. +% \begin{macrocode} +\providecommand*{\XR@ext}{dvi} +\providecommand*\wwwbrowser{c:\string\netscape\string\netscape} +\Hy@WrapperDef\hyper@anchor#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \let\protect=\string + \special{mark: #1}% + \endgroup + \Hy@activeanchortrue + \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\Hy@WrapperDef\hyper@anchorstart#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \special{mark: #1}% + \Hy@activeanchortrue +} +\def\hyper@anchorend{% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \expandafter\Hy@colorlink\csname @#1color\endcsname + \special{button: % + 10000000 % + \number\baselineskip\space + #2% + }% +} +\def\hyper@linkend{% + \Hy@endcolorlink +} +\def\hyper@link#1#2#3{% + \Hy@VerboseLinkStart{#1}{#2}% + \leavevmode + \ifHy@raiselinks + \Hy@SaveSpaceFactor + \Hy@SaveSavedSpaceFactor + \sbox\@tempboxa{\Hy@RestoreSpaceFactor#3}% + \Hy@RestoreSavedSpaceFactor + \@linkdim\dp\@tempboxa + \lower\@linkdim\hbox{% + \special{button: % + \number\wd\@tempboxa\space + \number\ht\@tempboxa\space + #2% + }% + \expandafter\Hy@colorlink\csname @#1color\endcsname + \Hy@RestoreSpaceFactor + #3\Hy@xspace@end + \Hy@SaveSpaceFactor + \Hy@endcolorlink + }% + \@linkdim\ht\@tempboxa + \advance\@linkdim by -6.5\p@ + \raise\@linkdim\hbox{}% + \Hy@RestoreSpaceFactor + \else + \special{button: % + \number\wd\@tempboxa\space + \number\ht\@tempboxa\space + #2% + }% + \expandafter\Hy@colorlink\csname @#1color\endcsname + #3\Hy@xspace@end + \Hy@endcolorlink + \fi +} +\def\hyper@linkurl#1#2{% + \begingroup + \hyper@chars + \leavevmode + \ifHy@raiselinks + \Hy@SaveSpaceFactor + \Hy@SaveSavedSpaceFactor + \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}% + \Hy@RestoreSavedSpaceFactor + \@linkdim\dp\@tempboxa + \lower\@linkdim\hbox{% + \special{button: % + \number\wd\@tempboxa\space + \number\ht\@tempboxa\space + launch: \wwwbrowser\space + #2% + }% + \Hy@colorlink\@urlcolor + \Hy@RestoreSpaceFactor + #1\Hy@xspace@end + \Hy@SaveSpaceFactor + \Hy@endcolorlink + }% + \@linkdim\ht\@tempboxa + \advance\@linkdim by -6.5\p@ + \raise\@linkdim\hbox{}% + \Hy@RestoreSpaceFactor + \else + \special{button: % + \number\wd\@tempboxa\space + \number\ht\@tempboxa\space + launch: \wwwbrowser\space + #2% + }% + \Hy@colorlink\@urlcolor + #1\Hy@xspace@end + \Hy@endcolorlink + \fi + \endgroup +} +\def\hyper@linkfile#1#2#3{% + \begingroup + \hyper@chars + \leavevmode + \ifHy@raiselinks + \Hy@SaveSpaceFactor + \Hy@SaveSavedSpaceFactor + \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}% + \Hy@RestoreSavedSpaceFactor + \@linkdim\dp\@tempboxa + \lower\@linkdim\hbox{% + \special{button: % + \number\wd\@tempboxa\space + \number\ht\@tempboxa\space + #3,% + file: #2% + }% + \Hy@colorlink\@filecolor + \Hy@RestoreSpaceFactor + #1\Hy@xspace@end + \Hy@SaveSpaceFactor + \Hy@endcolorlink + }% + \@linkdim\ht\@tempboxa + \advance\@linkdim by -6.5\p@ + \raise\@linkdim\hbox{}% + \Hy@RestoreSpaceFactor + \else + \special{button: % + \number\wd\@tempboxa\space + \number\ht\@tempboxa\space + #3,% + file: #2% + }% + \Hy@colorlink\@filecolor + #1\Hy@xspace@end + \Hy@endcolorlink + \fi + \endgroup +} +\HyInfo@AddonUnsupportedtrue +\def\PDF@FinishDoc{% + \Hy@UseMaketitleInfos + \HyInfo@TrappedUnsupported + \special{PDF: Keywords \@pdfkeywords}% + \special{PDF: Title \@pdftitle}% + \special{PDF: Creator \@pdfcreator}% + \ifx\@pdfcreationdate\@empty + \else + \special{PDF: CreationDate \@pdfcreationdate}% + \fi + \ifx\@pdfmoddate\@empty + \else + \special{PDF: ModDate \@pdfmoddate}% + \fi + \special{PDF: Author \@pdfauthor}% + \ifx\@pdfproducer\relax + \else + \special{PDF: Producer \@pdfproducer}% + \fi + \special{PDF: Subject \@pdfsubject}% + \Hy@DisableOption{pdfauthor}% + \Hy@DisableOption{pdftitle}% + \Hy@DisableOption{pdfsubject}% + \Hy@DisableOption{pdfcreator}% + \Hy@DisableOption{addtopdfcreator}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfmoddate}% + \Hy@DisableOption{pdfproducer}% + \Hy@DisableOption{pdfkeywords}% + \Hy@DisableOption{pdftrapped}% + \Hy@DisableOption{pdfinfo}% +} +\def\PDF@SetupDoc{% + \ifx\@baseurl\@empty + \else + \special{PDF: Base \@baseurl}% + \fi + \ifx\@pdfpagescrop\@empty\else + \special{PDF: BBox \@pdfpagescrop}% + \fi + \def\Hy@temp{}% + \ifx\@pdfstartpage\@empty + \else + \ifx\@pdfstartview\@empty + \else + \edef\Hy@temp{% + ,Page=\@pdfstartpage + ,View=\@pdfstartview + }% + \fi + \fi + \edef\Hy@temp{% + \noexpand\pdfmark{% + pdfmark=/DOCVIEW,% + PageMode=/\@pdfpagemode + \Hy@temp + }% + }% + \Hy@temp + \ifx\@pdfpagescrop\@empty + \else + \pdfmark{pdfmark=/PAGES,CropBox=\@pdfpagescrop}% + \fi + \edef\Hy@temp{% + \ifHy@pdftoolbar\else /HideToolbar true\fi + \ifHy@pdfmenubar\else /HideMenubar true\fi + \ifHy@pdfwindowui\else /HideWindowUI true\fi + \ifHy@pdffitwindow /FitWindow true\fi + \ifHy@pdfcenterwindow /CenterWindow true\fi + \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi + \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode + \Hy@UseNameKey{Direction}\@pdfdirection + \Hy@UseNameKey{ViewArea}\@pdfviewarea + \Hy@UseNameKey{ViewClip}\@pdfviewclip + \Hy@UseNameKey{PrintArea}\@pdfprintarea + \Hy@UseNameKey{PrintClip}\@pdfprintclip + \Hy@UseNameKey{PrintScaling}\@pdfprintscaling + \Hy@UseNameKey{Duplex}\@pdfduplex + \ifx\@pdfpicktraybypdfsize\@empty + \else + /PickTrayByPDFSize \@pdfpicktraybypdfsize + \fi + \ifx\@pdfprintpagerange\@empty + \else + /PrintPageRange[\@pdfprintpagerange]% + \fi + \ifx\@pdfnumcopies\@empty + \else + /NumCopies \@pdfnumcopies + \fi + }% + \pdfmark{pdfmark=/PUT,% + Raw={% + \string{Catalog\string}<<% + \ifx\Hy@temp\@empty + \else + /ViewerPreferences<<\Hy@temp>>% + \fi + \Hy@UseNameKey{PageLayout}\@pdfpagelayout + \ifx\@pdflang\relax + \else + /Lang(\@pdflang)% + \fi + >>% + }% + }% +} +%</dviwindo> +%<*dvipdfm|xetex> +% \end{macrocode} +% \subsection{dvipdfm/xetex dvi to PDF converter} +% Provided by Mark Wicks (mwicks@kettering.edu) +% \begin{macrocode} +\providecommand*{\XR@ext}{pdf} +\Hy@setbreaklinks{true} +\def\HyPat@ObjRef{% + @[^ ]+% +} +\newsavebox{\pdfm@box} +\def\@pdfm@mark#1{\special{pdf:#1}} +\Hy@WrapperDef\@pdfm@dest#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}% + \def\x{XYZ}% + \ifx\x\@pdfview + \def\x{XYZ @xpos @ypos null}% + \else + \def\x{FitH}% + \ifx\x\@pdfview + \def\x{FitH @ypos}% + \else + \def\x{FitBH}% + \ifx\x\@pdfview + \def\x{FitBH @ypos}% + \else + \def\x{FitV}% + \ifx\x\@pdfview + \def\x{FitV @xpos}% + \else + \def\x{FitBV}% + \ifx\x\@pdfview + \def\x{FitBV @xpos}% + \else + \def\x{Fit}% + \ifx\x\@pdfview + \let\x\@pdfview + \else + \def\x{FitB}% + \ifx\x\@pdfview + \let\x\@pdfview + \else + \def\x{FitR}% + \ifx\x\@pdfview + \Hy@Warning{`pdfview=FitR' is not supported}% + \def\x{XYZ @xpos @ypos null}% + \else + \@onelevel@sanitize\@pdfview + \Hy@Warning{% + Unknown value `\@pdfview' for pdfview% + }% + \def\x{XYZ @xpos @ypos null}% + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \@pdfm@mark{dest (\Hy@pstringDest) [@thispage /\x]}% + \endgroup + \Hy@RestoreLastskip +} +\providecommand*\@pdfview{XYZ} +\providecommand*\@pdfborder{0 0 1} +\providecommand*\@pdfborderstyle{} +\def\hyper@anchor#1{% + \@pdfm@dest{#1}% +} +\def\hyper@anchorstart#1{% + \Hy@activeanchortrue + \@pdfm@dest{#1}% +} +\def\hyper@anchorend{% + \Hy@activeanchorfalse +} +% \end{macrocode} +% \begin{macrocode} +\newcounter{Hy@AnnotLevel} +% \end{macrocode} +% \begin{macrocode} +\ifHy@ocgcolorlinks + \def\OBJ@OCG@view{@OCG@view}% + \@pdfm@mark{% + obj \OBJ@OCG@view <<% + /Type/OCG% + /Name(View)% + /Usage<<% + /Print<<% + /PrintState/OFF% + >>% + /View<<% + /ViewState/ON% + >>% + >>% + >>% + }% + \@pdfm@mark{close \OBJ@OCG@view}% + \def\OBJ@OCG@print{@OCG@print}% + \@pdfm@mark{% + obj \OBJ@OCG@print <<% + /Type/OCG% + /Name(Print)% + /Usage<<% + /Print<<% + /PrintState/ON% + >>% + /View<<% + /ViewState/OFF% + >>% + >>% + >>% + }% + \@pdfm@mark{close \OBJ@OCG@print}% + \def\OBJ@OCGs{@OCGs}% + \@pdfm@mark{% + obj \OBJ@OCGs [% + \OBJ@OCG@view\space\OBJ@OCG@print + ]% + }% + \@pdfm@mark{close \OBJ@OCGs}% + \@pdfm@mark{% + put @catalog <<% + /OCProperties<<% + /OCGs \OBJ@OCGs + /D<<% + /OFF[\OBJ@OCG@print]% + /AS[% + <<% + /Event/View% + /OCGs \OBJ@OCGs + /Category[/View]% + >>% + <<% + /Event/Print% + /OCGs \OBJ@OCGs + /Category[/Print]% + >>% + <<% + /Event/Export% + /OCGs \OBJ@OCGs + /Category[/Print]% + >>% + ]% + >>% + >>% + >>% + }% + \AtBeginShipout{% + \setbox\AtBeginShipoutBox=\hbox{% + \copy\AtBeginShipoutBox + \@pdfm@mark{% + put @resources <<% + /Properties<<% + /OCView \OBJ@OCG@view + /OCPrint \OBJ@OCG@print + >>% + >>% + }% + }% + }% + \Hy@AtBeginDocument{% + \def\Hy@colorlink#1{% + \begingroup + \ifHy@ocgcolorlinks + \def\Hy@ocgcolor{#1}% + \setbox0=\hbox\bgroup\color@begingroup + \else + \HyColor@UseColor#1% + \fi + }% + \def\Hy@endcolorlink{% + \ifHy@ocgcolorlinks + \color@endgroup\egroup + \mbox{% + \@pdfm@mark{content /OC/OCPrint BDC}% + \rlap{\copy0}% + \@pdfm@mark{content EMC/OC/OCView BDC}% + \begingroup + \expandafter\HyColor@UseColor\Hy@ocgcolor + \box0 % + \endgroup + \@pdfm@mark{content EMC}% + }% + \fi + \endgroup + }% + }% +\else + \Hy@DisableOption{ocgcolorlinks}% +\fi +% \end{macrocode} +% Use primitive counter arithmetic here to avoid amsmath +% redefining |\stepcounter| (github issue/13) +% \begin{macrocode} +\def\Hy@BeginAnnot#1{% + \global\advance\c@Hy@AnnotLevel\@ne + \ifnum\c@Hy@AnnotLevel=\@ne + #1% + \fi +} +\def\Hy@EndAnnot{% + \ifnum\value{Hy@AnnotLevel}=\@ne + \Hy@endcolorlink + \@pdfm@mark{eann}% + \fi + \global\advance\c@Hy@AnnotLevel\m@ne +} +% \end{macrocode} +% \begin{macrocode} +\def\Hy@undefinedname{UNDEFINED} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \leavevmode + \Hy@BeginAnnot{% + \protected@edef\Hy@testname{#2}% + \ifx\Hy@testname\@empty + \Hy@Warning{% + Empty destination name,\MessageBreak + using `\Hy@undefinedname'% + }% + \let\Hy@testname\Hy@undefinedname + \else + \Hy@pstringdef\Hy@testname{% + \expandafter\HyperDestNameFilter\expandafter{% + \Hy@testname + }% + }% + \fi + \@pdfm@mark{% + bann<<% + /Type/Annot% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \Hy@setpdfhighlight + \expandafter\ifx\csname @#1bordercolor\endcsname\relax + \else + /C[\csname @#1bordercolor\endcsname]% + \fi + /A<<% + /S/GoTo% + /D(\Hy@testname)% + \Hy@href@nextactionraw + >>% + >>% + }% + \expandafter\Hy@colorlink\csname @#1color\endcsname + }% +} +\def\hyper@linkend{\Hy@EndAnnot}% +\def\hyper@link#1#2#3{% + \hyper@linkstart{#1}{#2}#3\Hy@xspace@end\hyper@linkend +} +\def\hyper@linkfile#1#2#3{% + \leavevmode + \Hy@BeginAnnot{% + \def\Hy@pstringF{#2}% + \Hy@CleanupFile\Hy@pstringF + \Hy@pstringdef\Hy@pstringF\Hy@pstringF + \Hy@pstringdef\Hy@pstringD{#3}% + \Hy@MakeRemoteAction + \@pdfm@mark{% + bann<<% + /Type/Annot% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\@filebordercolor\relax + \else + /C[\@filebordercolor]% + \fi + /A<<% + /S/GoToR% + /F(\Hy@pstringF)% + /D% + \ifx\\#3\\% + [\Hy@href@page\@pdfremotestartview]% + \else + (\Hy@pstringD)% + \fi + \Hy@SetNewWindow + \Hy@href@nextactionraw + >>% + >>% + }% + \Hy@colorlink\@filecolor + }% + #1\Hy@xspace@end + \Hy@EndAnnot +} +\def\@hyper@launch run:#1\\#2#3{% filename, anchor text linkname + \leavevmode + \Hy@BeginAnnot{% + \Hy@pstringdef\Hy@pstringF{#1}% + \Hy@pstringdef\Hy@pstringP{#3}% + \@pdfm@mark{% + bann<<% + /Type/Annot% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\@runbordercolor\relax + \else + /C[\@runbordercolor]% + \fi + /A<<% + /F(\Hy@pstringF)% + /S/Launch% + \Hy@SetNewWindow + \ifx\\#3\\% + \else + /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>% + \fi + \Hy@href@nextactionraw + >>% + >>% + }% + \Hy@colorlink\@runcolor + }% + #2\Hy@xspace@end + \Hy@EndAnnot +} +\def\hyper@linkurl#1#2{% + \leavevmode + \Hy@BeginAnnot{% + \Hy@pstringdef\Hy@pstringURI{#2}% + \@pdfm@mark{% + bann<<% + /Type/Annot% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\@urlbordercolor\relax + \else + /C[\@urlbordercolor]% + \fi + /A<<% + /S/URI% + /URI(\Hy@pstringURI)% + \ifHy@href@ismap + /IsMap true% + \fi + \Hy@href@nextactionraw + >>% + >>% + }% + \Hy@colorlink\@urlcolor + }% + #1\Hy@xspace@end + \Hy@EndAnnot +} +\def\Acrobatmenu#1#2{% + \Hy@Acrobatmenu{#1}{#2}{% + \Hy@BeginAnnot{% + \EdefEscapeName\Hy@temp@menu{#1}% + \@pdfm@mark{% + bann<<% + /Type/Annot% + /Subtype/Link% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \Hy@setpdfhighlight + \ifx\@menubordercolor\relax + \else + /C[\@menubordercolor]% + \fi + /A<<% + /S/Named% + /N/\Hy@temp@menu + \Hy@href@nextactionraw + >>% + >>% + }% + \Hy@colorlink\@menucolor + }% + #2\Hy@xspace@end + \Hy@EndAnnot + }% +} + +\def\PDF@FinishDoc{% + \Hy@UseMaketitleInfos + \HyInfo@GenerateAddons + \@pdfm@mark{% + docinfo<<% + /Title(\@pdftitle)% + /Subject(\@pdfsubject)% + /Creator(\@pdfcreator)% + \ifx\@pdfcreationdate\@empty + \else + /CreationDate(\@pdfcreationdate)% + \fi + \ifx\@pdfmoddate\@empty + \else + /ModDate(\@pdfmoddate)% + \fi + /Author(\@pdfauthor)% + \ifx\@pdfproducer\relax + \else + /Producer(\@pdfproducer)% + \fi + /Keywords(\@pdfkeywords)% + \ifx\@pdftrapped\@empty + \else + /Trapped/\@pdftrapped + \fi + \HyInfo@Addons + >>% + }% + \Hy@DisableOption{pdfauthor}% + \Hy@DisableOption{pdftitle}% + \Hy@DisableOption{pdfsubject}% + \Hy@DisableOption{pdfcreator}% + \Hy@DisableOption{addtopdfcreator}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfmoddate}% + \Hy@DisableOption{pdfproducer}% + \Hy@DisableOption{pdfkeywords}% + \Hy@DisableOption{pdftrapped}% + \Hy@DisableOption{pdfinfo}% +} +% \end{macrocode} +% \begin{macrocode} +\def\PDF@SetupDoc{% + \edef\Hy@temp{% + \ifHy@pdftoolbar\else /HideToolbar true\fi + \ifHy@pdfmenubar\else /HideMenubar true\fi + \ifHy@pdfwindowui\else /HideWindowUI true\fi + \ifHy@pdffitwindow /FitWindow true\fi + \ifHy@pdfcenterwindow /CenterWindow true\fi + \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi + \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode + \Hy@UseNameKey{Direction}\@pdfdirection + \Hy@UseNameKey{ViewArea}\@pdfviewarea + \Hy@UseNameKey{ViewClip}\@pdfviewclip + \Hy@UseNameKey{PrintArea}\@pdfprintarea + \Hy@UseNameKey{PrintClip}\@pdfprintclip + \Hy@UseNameKey{PrintScaling}\@pdfprintscaling + \Hy@UseNameKey{Duplex}\@pdfduplex + \ifx\@pdfpicktraybypdfsize\@empty + \else + /PickTrayByPDFSize \@pdfpicktraybypdfsize + \fi + \ifx\@pdfprintpagerange\@empty + \else + /PrintPageRange[\@pdfprintpagerange]% + \fi + \ifx\@pdfnumcopies\@empty + \else + /NumCopies \@pdfnumcopies + \fi + }% + \Hy@pstringdef\Hy@pstringB{\@baseurl}% + \@pdfm@mark{% + docview<<% + \ifx\@pdfstartpage\@empty + \else + \ifx\@pdfstartview\@empty + \else + /OpenAction[@page\@pdfstartpage\@pdfstartview]% + \fi + \fi + \ifx\@baseurl\@empty + \else + /URI<</Base(\Hy@pstringB)>>% + \fi + /PageMode/\@pdfpagemode + \ifx\Hy@temp\@empty + \else + /ViewerPreferences<<\Hy@temp>>% + \fi + \Hy@UseNameKey{PageLayout}\@pdfpagelayout + \ifx\@pdflang\relax + \else + /Lang(\@pdflang)% + \fi + >>% + }% + \ifx\@pdfpagescrop\@empty + \else + \@pdfm@mark{put @pages <</CropBox[\@pdfpagescrop]>>}% + \fi +} +%</dvipdfm|xetex> +% \end{macrocode} +% +% \begin{macrocode} +%<*dvipdfm|xetex> +% \end{macrocode} +% \begin{macro}{\hyper@pagetransition} +% \begin{macrocode} +\def\hyper@pagetransition{% + \ifx\@pdfpagetransition\relax + \else + \ifx\@pdfpagetransition\@empty + \else + \special{pdf:put @thispage % + <</Trans<</S/\@pdfpagetransition>>>>% + }% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\hyper@pageduration} +% \begin{macrocode} +\def\hyper@pageduration{% + \ifx\@pdfpageduration\relax + \else + \ifx\@pdfpageduration\@empty + \else + \special{pdf:put @thispage % + <</Dur \@pdfpageduration>>% + }% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\hyper@pagehidden} +% \begin{macrocode} +\def\hyper@pagehidden{% + \ifHy@useHidKey + \special{pdf:put @thispage % + <</Hid \ifHy@pdfpagehidden true\else false\fi>>% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\g@addto@macro\Hy@EveryPageBoxHook{% + \hyper@pagetransition + \hyper@pageduration + \hyper@pagehidden +} +% \end{macrocode} +% \begin{macrocode} +%</dvipdfm|xetex> +% \end{macrocode} +% +% Xe\TeX\ uses pdf\TeX's method \cs{pdfpagewidth} +% and \cs{pdfpageheight} for setting the paper size. +% \begin{macrocode} +%<*dvipdfm> +\AtBeginShipoutFirst{% + \ifHy@setpagesize + \begingroup + \@ifundefined{stockwidth}{% + \ifdim\paperwidth>\z@ + \ifdim\paperheight>\z@ + \special{papersize=\the\paperwidth,\the\paperheight}% + \fi + \fi + }{% + \ifdim\stockwidth>\z@ + \ifdim\stockheight>\z@ + \special{papersize=\the\stockwidth,\the\stockheight}% + \fi + \fi + }% + \endgroup + \fi + \Hy@DisableOption{setpagesize}% +} +%</dvipdfm> +% \end{macrocode} +% +% \subsection{VTeX typesetting system} +% Provided by MicroPress, May 1998. +% They require VTeX version 6.02 or newer; +% see \url{http://www.micropress-inc.com/} for details. +% \begin{macrocode} +%<*vtexhtml> +\providecommand*{\XR@ext}{htm} +\RequirePackage{vtexhtml} +\newif\if@Localurl +\let\PDF@FinishDoc\ltx@empty +\def\PDF@SetupDoc{% + \ifx\@baseurl\@empty + \else + \special{!direct <base href="\@baseurl">}% + \fi +} +\def\@urltype{url} +\def\hyper@link#1#2#3{% + \Hy@VerboseLinkStart{#1}{#2}% + \leavevmode + \special{!direct <a href=% + \hyper@quote\hyper@hash\HyperDestNameFilter{#2}\hyper@quote>}% + #3\Hy@xspace@end + \special{!direct </a>}% +} +\def\hyper@linkurl#1#2{% + \begingroup + \hyper@chars + \leavevmode + \MathBSuppress=1\relax + \special{!direct <a href=% + \hyper@quote\HyperDestNameFilter{#2}\hyper@quote>}% + #1\Hy@xspace@end + \MathBSuppress=0\relax + \special{!direct </a>}% + \endgroup +} +\def\hyper@linkfile#1#2#3{% + \hyper@linkurl{#1}{\Hy@linkfileprefix#2\ifx\\#3\\\else\##3\fi}% +} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \def\Hy@tempa{#1}\ifx\Hy@tempa\@urltype + \@Localurltrue + \special{!direct <a href=\hyper@quote#2\hyper@quote>}% + \else + \@Localurlfalse + \begingroup + \hyper@chars + \special{!aref \HyperDestNameFilter{#2}}% + \endgroup + \fi +} +\def\hyper@linkend{% + \if@Localurl + \special{!endaref}% + \else + \special{!direct </a>}% + \fi +} +\Hy@WrapperDef\hyper@anchorstart#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \hyper@chars + \special{!aname #1}% + \special{!direct <a name=% + \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}% + \endgroup + \Hy@activeanchortrue +} +\def\hyper@anchorend{% + \special{!direct </a>}% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\Hy@WrapperDef\hyper@anchor#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \let\protect=\string + \hyper@chars + \leavevmode + \special{!aname #1}% + \special{!direct <a name=% + \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}% + \endgroup + \Hy@activeanchortrue + \bgroup\anchor@spot\egroup + \special{!direct </a>}% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\def\@Form[#1]{% + \Hy@Message{Sorry, TeXpider does not yet support FORMs}% +} +\let\@endForm\ltx@empty +\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum + \Hy@Message{Sorry, TeXpider does not yet support FORM gauges}% +} +\def\@TextField[#1]#2{% parameters, label + \Hy@Message{Sorry, TeXpider does not yet support FORM text fields}% +} +\def\@CheckBox[#1]#2{% parameters, label + \Hy@Message{Sorry, TeXpider does not yet support FORM checkboxes}% +} +\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices + \Hy@Message{Sorry, TeXpider does not yet support FORM choice menus}% +} +\def\@PushButton[#1]#2{% parameters, label + \Hy@Message{Sorry, TeXpider does not yet support FORM pushbuttons}% +} +\def\@Reset[#1]#2{% + \Hy@Message{Sorry, TeXpider does not yet support FORMs}% +} +\def\@Submit[#1]#2{% + \Hy@Message{Sorry, TeXpider does not yet support FORMs}% +} +%</vtexhtml> +% \end{macrocode} +% \begin{macrocode} +%<*vtex> +% \end{macrocode} +% VTeX version 6.68 supports \cs{mediawidth} and \cs{mediaheight}. +% The \cs{ifx} construct is better than a \cs{csname}, because +% it avoids the definition and the hash table entry of a +% previous undefined macro. +% \begin{macrocode} +\ifx\mediaheight\@undefined +\else + \ifx\mediaheight\relax + \else + \ifHy@setpagesize + \providecommand*{\VTeXInitMediaSize}{% + \ltx@IfUndefined{stockwidth}{% + \ifdim\paperheight>0pt % + \setlength\mediaheight\paperheight + \fi + \ifdim\paperheight>0pt % + \setlength\mediawidth\paperwidth + \fi + }{% + \ifdim\stockheight>0pt % + \setlength\mediaheight\stockheight + \fi + \ifdim\stockwidth>0pt % + \setlength\mediawidth\stockwidth + \fi + }% + }% + \Hy@AtBeginDocument{\VTeXInitMediaSize}% + \fi + \Hy@DisableOption{setpagesize}% + \fi +\fi +% \end{macrocode} +% Older versions of VTeX require |xyz| in lower case. +% \begin{macrocode} +\providecommand*\@pdfview{xyz} +\providecommand*\@pdfborder{0 0 1} +\providecommand*\@pdfborderstyle{} +\let\CurrentBorderColor\@linkbordercolor +\Hy@WrapperDef\hyper@anchor#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \let\protect=\string + \hyper@chars + \special{!aname \HyperDestNameFilter{#1};\@pdfview}% + \endgroup + \Hy@activeanchortrue + \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\Hy@WrapperDef\hyper@anchorstart#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \hyper@chars + \special{!aname \HyperDestNameFilter{#1};\@pdfview}% + \endgroup + \Hy@activeanchortrue +} +\def\hyper@anchorend{% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\def\@urltype{url} +\def\Hy@undefinedname{UNDEFINED} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \Hy@pstringdef\Hy@pstringURI{#2}% + \expandafter\Hy@colorlink\csname @#1color\endcsname + \ltx@IfUndefined{@#1bordercolor}{% + \let\CurrentBorderColor\relax + }{% + \edef\CurrentBorderColor{% + \csname @#1bordercolor\endcsname + }% + }% + \def\Hy@tempa{#1}% + \ifx\Hy@tempa\@urltype + \special{!% + aref <u=/Type/Action/S/URI/URI(\Hy@pstringURI)% + \ifHy@href@ismap + /IsMap true% + \fi + \Hy@href@nextactionraw + >;% + a=<% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \ifx\CurrentBorderColor\relax + \else + /C [\CurrentBorderColor]% + \fi + >% + }% + \else + \protected@edef\Hy@testname{#2}% + \ifx\Hy@testname\@empty + \Hy@Warning{% + Empty destination name,\MessageBreak + using `\Hy@undefinedname'% + }% + \let\Hy@testname\Hy@undefinedname + \fi + \special{!% + aref \expandafter\HyperDestNameFilter + \expandafter{\Hy@testname};% + a=<% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \ifx\CurrentBorderColor\relax + \else + /C [\CurrentBorderColor]% + \fi + >% + }% + \fi +} +\def\hyper@linkend{% + \special{!endaref}% + \Hy@endcolorlink +} +\def\hyper@linkfile#1#2#3{% + \leavevmode + \def\Hy@pstringF{#2}% + \Hy@CleanupFile\Hy@pstringF + \special{!% + aref <% + \ifnum\Hy@VTeXversion>753 \ifHy@pdfnewwindow n\fi\fi + f=\Hy@pstringF>#3;% + a=<% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \ifx\@filebordercolor\relax + \else + /C [\@filebordercolor]% + \fi + >% + }% + \Hy@colorlink\@filecolor + #1\Hy@xspace@end + \Hy@endcolorlink + \special{!endaref}% +} +\def\hyper@linkurl#1#2{% + \begingroup + \Hy@pstringdef\Hy@pstringURI{#2}% + \hyper@chars + \leavevmode + \special{!% + aref <u=/Type/Action/S/URI/URI(\Hy@pstringURI)% + \ifHy@href@ismap + /IsMap true% + \fi + \Hy@href@nextactionraw + >;% + a=<% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \ifx\@urlbordercolor\relax + \else + /C [\@urlbordercolor]% + \fi + >% + }% + \Hy@colorlink\@urlcolor + #1\Hy@xspace@end + \Hy@endcolorlink + \special{!endaref}% + \endgroup +} +\def\hyper@link#1#2#3{% + \Hy@VerboseLinkStart{#1}{#2}% + \ltx@IfUndefined{@#1bordercolor}{% + \let\CurrentBorderColor\relax + }{% + \edef\CurrentBorderColor{\csname @#1bordercolor\endcsname}% + }% + \leavevmode + \protected@edef\Hy@testname{#2}% + \ifx\Hy@testname\@empty + \Hy@Warning{% + Empty destination name,\MessageBreak + using `\Hy@undefinedname'% + }% + \let\Hy@testname\Hy@undefinedname + \fi + \special{!% + aref \expandafter\HyperDestNameFilter + \expandafter{\Hy@testname};% + a=<% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \ifx\CurrentBorderColor\relax + \else + /C [\CurrentBorderColor]% + \fi + >% + }% + \expandafter + \Hy@colorlink\csname @#1color\endcsname + #3\Hy@xspace@end + \Hy@endcolorlink + \special{!endaref}% +} +\def\hyper@image#1#2{% + \hyper@linkurl{#2}{#1}% +} +\def\@hyper@launch run:#1\\#2#3{% + \Hy@pstringdef\Hy@pstringF{#1}% + \Hy@pstringdef\Hy@pstringP{#3}% + \leavevmode + \special{!aref % + <u=% + /Type/Action% + /S/Launch% + /F(\Hy@pstringF)% + \Hy@SetNewWindow + \ifx\\#3\\% + \else + /Win<</F(\Hy@pstringF)/P(\Hy@pstringP)>>% + \fi + \Hy@href@nextactionraw + >;% + a=<% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \ifx\@runbordercolor\relax + \else + /C[\@runbordercolor]% + \fi + >% + }% + \Hy@colorlink\@runcolor + #2\Hy@xspace@end + \Hy@endcolorlink + \special{!endaref}% +} +\def\Acrobatmenu#1#2{% + \EdefEscapeName\Hy@temp@menu{#1}% + \Hy@Acrobatmenu{#1}{#2}{% + \special{!% + aref <u=/S /Named /N /\Hy@temp@menu>;% + a=<% + \ifHy@pdfa /F 4\fi + \Hy@setpdfborder + \ifx\@menubordercolor\relax + \else + /C[\@menubordercolor]% + \fi + >% + }% + \Hy@colorlink\@menucolor + #2\Hy@xspace@end + \Hy@endcolorlink + \special{!endaref}% + }% +} +% \end{macrocode} +% +% The following code (transition effects) is +% made by Alex Kostin. +% +% The code below makes sense for V\TeX\ 7.02 or later. +% +% Please never use |\@ifundefined{VTeXversion}{..}{..}| \emph{globally}. +% \begin{macrocode} +\ifnum\Hy@VTeXversion<702 % +\else + \def\hyper@pagetransition{% + \ifx\@pdfpagetransition\relax + \else + \ifx\@pdfpagetransition\@empty +% \end{macrocode} +% +% Standard incantation. +% +% 1. Does an old entry have to be deleted? +% 2. If 1=yes, how to delete? +% \begin{macrocode} + \else + \hvtex@parse@trans\@pdfpagetransition + \fi + \fi + }% +% \end{macrocode} +% +% I have to write an ``honest'' parser to convert raw PDF code +% into V\TeX\ |\special|. (AVK) +% +% Syntax of V\TeX\ |\special{!trans <transition_effect>}|: +%\begin{verbatim} +%<transition_effect> ::= <transition_style>[,<transition_duration>] +%<transition_style> ::= <Blinds_effect> | <Box_effect> | +% <Dissolve_effect> | <Glitter_effect> | +% <Split_effect> | <Wipe_effect> +%<Blinds_effect> ::= B[<effect_dimension>] +%<Box_effect> ::= X[<effect_motion>] +%<Dissolve_effect> ::= D +%<Glitter_effect> ::= G[<effect_direction>] +%<Split_effect> ::= S[<effect_motion>][<effect_dimension>] +%<Wipe_effect> ::= W[<effect_direction>] +%<Replace_effect> ::= R +%<effect_direction> ::= <number> +%<effect_dimension> ::= H | V +%<effect_motion> ::= I | O +%<transition_duration> ::= <number> +%\end{verbatim} +% +% Transition codes: +% \begin{macrocode} + \def\hvtex@trans@effect@Blinds{\def\hvtex@trans@code{B}}% + \def\hvtex@trans@effect@Box{\def\hvtex@trans@code{X}}% + \def\hvtex@trans@effect@Dissolve{\def\hvtex@trans@code{D}}% + \def\hvtex@trans@effect@Glitter{\def\hvtex@trans@code{G}}% + \def\hvtex@trans@effect@Split{\def\hvtex@trans@code{S}}% + \def\hvtex@trans@effect@Wipe{\def\hvtex@trans@code{W}}% + \def\hvtex@trans@effect@R{\def\hvtex@trans@code{R}}% +% \end{macrocode} +% +% Optional parameters: +% \begin{macrocode} + \def\hvtex@par@dimension{/Dm}% + \def\hvtex@par@direction{/Di}% + \def\hvtex@par@duration{/D}% + \def\hvtex@par@motion{/M}% +% \end{macrocode} +% +% Tokenizer: +% \begin{macrocode} + \def\hvtex@gettoken{% + \expandafter\hvtex@gettoken@\hvtex@buffer\@nil + }% +% \end{macrocode} +% +% Notice that tokens in the input buffer must be space delimited. +% \begin{macrocode} + \def\hvtex@gettoken@#1 #2\@nil{% + \edef\hvtex@token{#1}% + \edef\hvtex@buffer{#2}% + }% + \def\hvtex@parse@trans#1{% +% \end{macrocode} +% +% Initializing code: +% \begin{macrocode} + \let\hvtex@trans@code\@empty + \let\hvtex@param@dimension\@empty + \let\hvtex@param@direction\@empty + \let\hvtex@param@duration\@empty + \let\hvtex@param@motion\@empty + \edef\hvtex@buffer{#1\space}% +% \end{macrocode} +% First token is the PDF transition name without escape. +% \begin{macrocode} + \hvtex@gettoken + \ifx\hvtex@token\@empty +% \end{macrocode} +% Leading space(s)? +% \begin{macrocode} + \ifx\hvtex@buffer\@empty +% \end{macrocode} +% The buffer is empty, nothing to do. +% \begin{macrocode} + \else + \hvtex@gettoken + \fi + \fi + \csname hvtex@trans@effect@\hvtex@token\endcsname +% \end{macrocode} +% Now is time to parse optional parameters. +% \begin{macrocode} + \hvtex@trans@params + }% +% \end{macrocode} +% +% Reentrable macro to parse optional parameters. +% \begin{macrocode} + \def\hvtex@trans@params{% + \ifx\hvtex@buffer\@empty + \else + \hvtex@gettoken + \let\hvtex@trans@par\hvtex@token + \ifx\hvtex@buffer\@empty + \else + \hvtex@gettoken + \ifx\hvtex@trans@par\hvtex@par@duration +% \end{macrocode} +% /D is the effect duration in seconds. V\TeX\ special +% takes it in milliseconds. +% \begin{macrocode} + \let\hvtex@param@duration\hvtex@token + \else \ifx\hvtex@trans@par\hvtex@par@motion +% \end{macrocode} +% /M can be either /I or /O +% \begin{macrocode} + \expandafter\edef\expandafter\hvtex@param@motion + \expandafter{\expandafter\@gobble\hvtex@token}% + \else \ifx\hvtex@trans@par\hvtex@par@dimension +% \end{macrocode} +% /Dm can be either /H or /V +% \begin{macrocode} + \expandafter\edef\expandafter\hvtex@param@dimension + \expandafter{\expandafter\@gobble\hvtex@token}% + \else \ifx\hvtex@trans@par\hvtex@par@direction +% \end{macrocode} +% +% Valid values for /Di are 0, 270, 315 (the Glitter effect) or +% 0, 90, 180, 270 (the Wipe effect). +% \begin{macrocode} + \let\hvtex@param@direction\hvtex@token + \fi\fi\fi\fi + \fi + \fi + \ifx\hvtex@buffer\@empty + \let\next\hvtex@produce@trans + \else + \let\next\hvtex@trans@params + \fi + \next + }% +% \end{macrocode} +% +% Merge |<transition_effect>| and issue the special when possible. +% Too lazy to validate optional parameters. +% \begin{macrocode} + \def\hvtex@produce@trans{% + \let\vtex@trans@special\@empty + \if S\hvtex@trans@code + \edef\vtex@trans@special{\hvtex@trans@code + \hvtex@param@dimension\hvtex@param@motion}% + \else\if B\hvtex@trans@code + \edef\vtex@trans@special{% + \hvtex@trans@code\hvtex@param@dimension + }% + \else\if X\hvtex@trans@code + \edef\vtex@trans@special{% + \hvtex@trans@code\hvtex@param@motion + }% + \else\if W\hvtex@trans@code + \edef\vtex@trans@special{% + \hvtex@trans@code\hvtex@param@direction + }% + \else\if D\hvtex@trans@code + \let\vtex@trans@special\hvtex@trans@code + \else\if R\hvtex@trans@code + \let\vtex@trans@special\hvtex@trans@code + \else\if G\hvtex@trans@code + \edef\vtex@trans@special{% + \hvtex@trans@code\hvtex@param@direction + }% + \fi\fi\fi\fi\fi\fi\fi + \ifx\vtex@trans@special\@empty + \else + \ifx\hvtex@param@duration\@empty + \else + \setlength{\dimen@}{\hvtex@param@duration\p@}% +% \end{macrocode} +% I'm not guilty of possible overflow. +% \begin{macrocode} + \multiply\dimen@\@m + \edef\vtex@trans@special{% + \vtex@trans@special,\strip@pt\dimen@ + }% + \fi +% \end{macrocode} +% +% And all the mess is just for this. +% +% \begin{macrocode} + \special{!trans \vtex@trans@special}% + \fi + }% +% \end{macrocode} +% \begin{macrocode} + \def\hyper@pageduration{% + \ifx\@pdfpageduration\relax + \else + \ifx\@pdfpageduration\@empty + \special{!duration-}% + \else + \special{!duration \@pdfpageduration}% + \fi + \fi + }% + \def\hyper@pagehidden{% + \ifHy@useHidKey + \special{!hidden\ifHy@pdfpagehidden +\else -\fi}% + \fi + }% + \g@addto@macro\Hy@EveryPageBoxHook{% + \hyper@pagetransition + \hyper@pageduration + \hyper@pagehidden + }% +\fi +% \end{macrocode} +% +% Caution: In opposite to the other drivers, +% the argument of |\special{!onopen #1}| is +% a reference name. The VTeX's postscript +% mode will work with a version higher than +% 7.0x. +% +% The command \verb|\VTeXOS| is defined since version 7.45. +% Magic values encode the operating system:\\ +% \begin{tabular}{@{}l@{: }l@{}} +% 1 & WinTel\\ +% 2 & Linux\\ +% 3 & OS/2\\ +% 4 & MacOS\\ +% 5 & MacOS/X\\ +% \end{tabular} +% \begin{macrocode} +\ifx\@pdfproducer\relax + \def\@pdfproducer{VTeX}% + \ifnum\Hy@VTeXversion>\z@ + \count@\VTeXversion + \divide\count@ 100 % + \edef\@pdfproducer{\@pdfproducer\space v\the\count@}% + \multiply\count@ -100 % + \advance\count@\VTeXversion + \edef\@pdfproducer{% + \@pdfproducer + .\ifnum\count@<10 0\fi\the\count@ + \ifx\VTeXOS\@undefined\else + \ifnum\VTeXOS>0 % + \ifnum\VTeXOS<6 % + \space(% + \ifcase\VTeXOS + \or Windows\or Linux\or OS/2\or MacOS\or MacOS/X% + \fi + )% + \fi + \fi + \fi + ,\space + \ifnum\OpMode=\@ne PDF\else PS\fi + \space backend% + \ifx\gexmode\@undefined\else + \ifnum\gexmode>\z@\space with GeX\fi + \fi + }% + \fi +\fi +% \end{macrocode} +% +% Current |!pdfinfo| key syntax: +% +% \begin{tabular}{lll} +% \hline +% Key & Field & Type \\ +% \hline +% \texttt{a} & \textbf{A}uthor & String \\ +% \texttt{b} & Crop\textbf{B}ox & String \\ +% \texttt{c} & \textbf{C}reator & String \\ +% \texttt{k} & \textbf{K}eywords & String \\ +% \texttt{l} & Page\textbf{L}ayout & PS \\ +% \texttt{p} & \textbf{P}ageMode & PS \\ +% \texttt{r} & P\textbf{r}oducer & String \\ +% \texttt{s} & \textbf{S}ubject & String \\ +% \texttt{t} & \textbf{T}itle & String \\ +% \texttt{u} & \textbf{U}RI & PS \\ +% \texttt{v} & \textbf{V}iewPreferences & PS \\ +% \hline +% \end{tabular} +% +% Note: PS objects that are dicts are in |<<<..>>>| (yuck; no choice). +% +% \begin{macrocode} +\def\PDF@SetupDoc{% + \ifx\@pdfpagescrop\@empty + \else + \special{!pdfinfo b=<\@pdfpagescrop>}% + \fi + \ifx\@pdfstartpage\@empty + \else + \ifx\@pdfstartview\@empty + \else + \special{!onopen Page\@pdfstartpage}% + \fi + \fi + \special{!pdfinfo p=</\@pdfpagemode>}% + \ifx\@baseurl\@empty + \else + \special{!pdfinfo u=<<</Base (\@baseurl)>>>}% + \fi + \special{!pdfinfo v=<<<% + \ifHy@pdftoolbar\else /HideToolbar true\fi + \ifHy@pdfmenubar\else /HideMenubar true\fi + \ifHy@pdfwindowui\else /HideWindowUI true\fi + \ifHy@pdffitwindow /FitWindow true\fi + \ifHy@pdfcenterwindow /CenterWindow true\fi + \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi + \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode + \Hy@UseNameKey{Direction}\@pdfdirection + \Hy@UseNameKey{ViewArea}\@pdfviewarea + \Hy@UseNameKey{ViewClip}\@pdfviewclip + \Hy@UseNameKey{PrintArea}\@pdfprintarea + \Hy@UseNameKey{PrintClip}\@pdfprintclip + \Hy@UseNameKey{PrintScaling}\@pdfprintscaling + \Hy@UseNameKey{Duplex}\@pdfduplex + \ifx\@pdfpicktraybypdfsize\@empty + \else + /PickTrayByPDFSize \@pdfpicktraybypdfsize + \fi + \ifx\@pdfprintpagerange\@empty + \else + /PrintPageRange[\@pdfprintpagerange]% + \fi + \ifx\@pdfnumcopies\@empty + \else + /NumCopies \@pdfnumcopies + \fi + >>>}% + \ifx\@pdfpagelayout\@empty + \else + \special{!pdfinfo l=</\@pdfpagelayout\space>}% + \fi +}% +\HyInfo@AddonUnsupportedtrue +\define@key{Hyp}{pdfcreationdate}{% + \Hy@Warning{% + VTeX does not support pdfcreationdate.\MessageBreak + Therefore its setting is ignored% + }% +} +\define@key{Hyp}{pdfmoddate}{% + \Hy@Warning{% + VTeX does not support pdfmoddate.\MessageBreak + Therefore its setting is ignored% + }% +} +\def\PDF@FinishDoc{% + \Hy@UseMaketitleInfos + \HyInfo@TrappedUnsupported + \special{!pdfinfo a=<\@pdfauthor>}% + \special{!pdfinfo t=<\@pdftitle>}% + \special{!pdfinfo s=<\@pdfsubject>}% + \special{!pdfinfo c=<\@pdfcreator>}% + \ifx\@pdfproducer\relax + \else + \special{!pdfinfo r=<\@pdfproducer>}% + \fi + \special{!pdfinfo k=<\@pdfkeywords>}% + \Hy@DisableOption{pdfauthor}% + \Hy@DisableOption{pdftitle}% + \Hy@DisableOption{pdfsubject}% + \Hy@DisableOption{pdfcreator}% + \Hy@DisableOption{addtopdfcreator}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfmoddate}% + \Hy@DisableOption{pdfproducer}% + \Hy@DisableOption{pdfkeywords}% + \Hy@DisableOption{pdftrapped}% + \Hy@DisableOption{pdfinfo}% +} +%</vtex> +% \end{macrocode} +% +% \subsection{Fix for Adobe bug number 466320} +% If a destination occurs at the very begin of a page, +% the destination is moved to the previous page by +% Adobe Distiller 5. +% As workaround Adobe suggests: +%\begin{verbatim} +%/showpage { +% //showpage +% clippath stroke erasepage +%} bind def +%\end{verbatim} +% +% But unfortunately this fix generates an empty page +% at the end of the document. Therefore another fix +% is used by writing some clipped text. +% \begin{macrocode} +%<dviwindo>\def\literalps@out#1{\special{ps:#1}}% +%<package>\providecommand*{\Hy@DistillerDestFix}{} +%<*pdfmark|dviwindo> +\def\Hy@DistillerDestFix{% + \begingroup + \let\x\literalps@out +% \end{macrocode} +% The fix has to be passed unchanged through GeX, if +% VTeX in PostScript mode with GeX is used. +% \begin{macrocode} + \ifnum \@ifundefined{OpMode}{0}{% + \@ifundefined{gexmode}{0}{% + \ifnum\gexmode>0 \OpMode\else 0\fi + }}>1 % + \def\x##1{% + \immediate\special{!=##1}% + }% + \fi + \x{% + /product where{% + pop % + product(Distiller)search{% + pop pop pop % + version(.)search{% + exch pop exch pop% + (3011)eq{% + gsave % + newpath 0 0 moveto closepath clip% + /Courier findfont 10 scalefont setfont % + 72 72 moveto(.)show % + grestore% + }if% + }{pop}ifelse% + }{pop}ifelse% + }if% + }% + \endgroup +} +%</pdfmark|dviwindo> +% \end{macrocode} +% +% \subsection{Direct pdfmark support} +% Drivers that load |pdfmark.def| have to provide the +% correct macro definitions of +% \begin{center} +% \begin{tabular}{@{}ll@{}} +% |\@pdfproducer|& for document information\\ +% |\literalps@out|& PostScript output\\ +% |\headerps@out|& PostScript output that goes in the header area\\ +% \end{tabular} +% \end{center} +% and the correct definitions of the following PostScript procedures: +% \begin{center} +% \begin{tabular}{@{}ll@{}} +% |H.S|& start of anchor, link or rect\\ +% |#1 H.A|& end of anchor, argument=baselineskip in pt\\ +% |#1 H.L|& end of link, argument=baselineskip in pt\\ +% |H.R|& end of rect\\ +% |H.B|& raw rect code\\ +% \end{tabular} +% \end{center} +% +% \begin{macrocode} +%<*pdfmark> +\Hy@breaklinks@unsupported +\def\HyPat@ObjRef{% + \{[^{}]+\}% +} +\Hy@WrapperDef\hyper@anchor#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \pdfmark[\anchor@spot]{% + pdfmark=/DEST,% + linktype=anchor,% + View=/\@pdfview \@pdfviewparams,% + DestAnchor={#1}% + }% + \endgroup + \Hy@RestoreLastskip +} +\ltx@IfUndefined{hyper@anchorstart}{}{\endinput} +\Hy@WrapperDef\hyper@anchorstart#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \literalps@out{H.S}% + \Hy@AllowHyphens + \xdef\hyper@currentanchor{#1}% + \Hy@activeanchortrue +} +\def\hyper@anchorend{% + \literalps@out{\strip@pt@and@otherjunk\baselineskip\space H.A}% + \pdfmark{% + pdfmark=/DEST,% + linktype=anchor,% + View=/\@pdfview \@pdfviewparams,% + DestAnchor=\hyper@currentanchor,% + }% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \ifHy@breaklinks + \else + \leavevmode + \ifmmode + \def\Hy@LinkMath{$}% + \else + \let\Hy@LinkMath\ltx@empty + \fi + \Hy@SaveSpaceFactor + \hbox\bgroup + \Hy@RestoreSpaceFactor + \Hy@LinkMath + \fi + \expandafter\Hy@colorlink\csname @#1color\endcsname + \literalps@out{H.S}% + \Hy@AllowHyphens + \xdef\hyper@currentanchor{#2}% + \gdef\hyper@currentlinktype{#1}% +} +\def\hyper@linkend{% + \literalps@out{\strip@pt@and@otherjunk\baselineskip\space H.L}% + \ltx@IfUndefined{@\hyper@currentlinktype bordercolor}{% + \let\Hy@tempcolor\relax + }{% + \edef\Hy@tempcolor{% + \csname @\hyper@currentlinktype bordercolor\endcsname + }% + }% + \pdfmark{% + pdfmark=/ANN,% + linktype=link,% + Subtype=/Link,% + PDFAFlags=4,% + Dest=\hyper@currentanchor,% + AcroHighlight=\@pdfhighlight,% + Border=\@pdfborder,% + BorderStyle=\@pdfborderstyle,% + Color=\Hy@tempcolor,% + Raw=H.B% + }% + \Hy@endcolorlink + \ifHy@breaklinks + \else + \Hy@LinkMath + \Hy@SaveSpaceFactor + \egroup + \Hy@RestoreSpaceFactor + \fi +} +% \end{macrocode} +% +% We have to allow for |\baselineskip| having an optional +% stretch and shrink (you meet this in slide packages, for instance), +% so we need to strip off the junk. David Carlisle, of course, +% wrote this bit of code. +% \begin{macrocode} +\begingroup + \catcode`P=12 % + \catcode`T=12 % + \lowercase{\endgroup + \gdef\rem@ptetc#1.#2PT#3!{#1\ifnum#2>\z@.#2\fi}% +} +\def\strip@pt@and@otherjunk#1{\expandafter\rem@ptetc\the#1!} +% \end{macrocode} +% +% \begin{macro}{\hyper@pagetransition} +% \begin{macrocode} +\def\hyper@pagetransition{% + \ifx\@pdfpagetransition\relax + \else + \ifx\@pdfpagetransition\@empty + % 1. Does an old entry have to be deleted? + % 2. If 1=yes, how to delete? + \else + \pdfmark{% + pdfmark=/PUT,% + Raw={% + \string{ThisPage\string}% + <</Trans << /S /\@pdfpagetransition\space >> >>% + }% + }% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\hyper@pageduration} +% \begin{macrocode} +\def\hyper@pageduration{% + \ifx\@pdfpageduration\relax + \else + \ifx\@pdfpageduration\@empty + % 1. Does an old entry have to be deleted? + % 2. If 1=yes, how to delete? + \else + \pdfmark{% + pdfmark=/PUT,% + Raw={% + \string{ThisPage\string}% + <</Dur \@pdfpageduration>>% + }% + }% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\hyper@pagehidden} +% \begin{macrocode} +\def\hyper@pagehidden{% + \ifHy@useHidKey + \pdfmark{% + pdfmark=/PUT,% + Raw={% + \string{ThisPage\string}% + <</Hid \ifHy@pdfpagehidden true\else false\fi>>% + }% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\g@addto@macro\Hy@EveryPageBoxHook{% + \hyper@pagetransition + \hyper@pageduration + \hyper@pagehidden +} +% \end{macrocode} +% \begin{macrocode} +\def\hyper@image#1#2{% + \hyper@linkurl{#2}{#1}% +} +\def\Hy@undefinedname{UNDEFINED} +\def\hyper@link#1#2#3{% + \Hy@VerboseLinkStart{#1}{#2}% + \ltx@IfUndefined{@#1bordercolor}{% + \let\Hy@tempcolor\relax + }{% + \edef\Hy@tempcolor{\csname @#1bordercolor\endcsname}% + }% + \begingroup + \protected@edef\Hy@testname{#2}% + \ifx\Hy@testname\@empty + \Hy@Warning{% + Empty destination name,\MessageBreak + using `\Hy@undefinedname'% + }% + \let\Hy@testname\Hy@undefinedname + \fi + \pdfmark[{#3}]{% + Color=\Hy@tempcolor,% + linktype={#1},% + AcroHighlight=\@pdfhighlight,% + Border=\@pdfborder,% + BorderStyle=\@pdfborderstyle,% + pdfmark=/ANN,% + Subtype=/Link,% + PDFAFlags=4,% + Dest=\Hy@testname + }% + \endgroup +} +\newtoks\pdf@docset +\def\PDF@FinishDoc{% + \Hy@UseMaketitleInfos + \HyInfo@GenerateAddons + \let\Hy@temp\@empty + \ifx\@pdfcreationdate\@empty + \else + \def\Hy@temp{CreationDate=\@pdfcreationdate,}% + \fi + \ifx\@pdfmoddate\@empty + \else + \expandafter\def\expandafter\Hy@temp\expandafter{% + \Hy@temp + ModDate=\@pdfmoddate,% + }% + \fi + \ifx\@pdfproducer\relax + \else + \expandafter\def\expandafter\Hy@temp\expandafter{% + \Hy@temp + Producer=\@pdfproducer,% + }% + \fi + \expandafter + \pdfmark\expandafter{% + \Hy@temp + pdfmark=/DOCINFO,% + Title=\@pdftitle,% + Subject=\@pdfsubject,% + Creator=\@pdfcreator,% + Author=\@pdfauthor,% + Keywords=\@pdfkeywords,% + Trapped=\@pdftrapped + }% + \ifx\HyInfo@Addons\@empty + \else + \pdfmark{% + pdfmark=/DOCINFO,% + Raw={\HyInfo@Addons}% + }% + \fi + \Hy@DisableOption{pdfauthor}% + \Hy@DisableOption{pdftitle}% + \Hy@DisableOption{pdfsubject}% + \Hy@DisableOption{pdfcreator}% + \Hy@DisableOption{addtopdfcreator}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfmoddate}% + \Hy@DisableOption{pdfproducer}% + \Hy@DisableOption{pdfkeywords}% + \Hy@DisableOption{pdftrapped}% + \Hy@DisableOption{pdfinfo}% +} +\def\PDF@SetupDoc{% + \def\Hy@temp{}% + \ifx\@pdfstartpage\@empty + \else + \ifx\@pdfstartview\@empty + \else + \edef\Hy@temp{% + ,Page=\@pdfstartpage + ,View=\@pdfstartview + }% + \fi + \fi + \edef\Hy@temp{% + \noexpand\pdfmark{% + pdfmark=/DOCVIEW,% + PageMode=/\@pdfpagemode + \Hy@temp + }% + }% + \Hy@temp + \ifx\@pdfpagescrop\@empty + \else + \pdfmark{pdfmark=/PAGES,CropBox=\@pdfpagescrop}% + \fi + \edef\Hy@temp{% + \ifHy@pdftoolbar\else /HideToolbar true\fi + \ifHy@pdfmenubar\else /HideMenubar true\fi + \ifHy@pdfwindowui\else /HideWindowUI true\fi + \ifHy@pdffitwindow /FitWindow true\fi + \ifHy@pdfcenterwindow /CenterWindow true\fi + \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi + \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode + \Hy@UseNameKey{Direction}\@pdfdirection + \Hy@UseNameKey{ViewArea}\@pdfviewarea + \Hy@UseNameKey{ViewClip}\@pdfviewclip + \Hy@UseNameKey{PrintArea}\@pdfprintarea + \Hy@UseNameKey{PrintClip}\@pdfprintclip + \Hy@UseNameKey{PrintScaling}\@pdfprintscaling + \Hy@UseNameKey{Duplex}\@pdfduplex + \ifx\@pdfpicktraybypdfsize\@empty + \else + /PickTrayByPDFSize \@pdfpicktraybypdfsize + \fi + \ifx\@pdfprintpagerange\@empty + \else + /PrintPageRange[\@pdfprintpagerange]% + \fi + \ifx\@pdfnumcopies\@empty + \else + /NumCopies \@pdfnumcopies + \fi + }% + \Hy@pstringdef\Hy@pstringB{\@baseurl}% + \pdfmark{% + pdfmark=/PUT,% + Raw={% + \string{Catalog\string}<<% + \ifx\Hy@temp\@empty + \else + /ViewerPreferences<<\Hy@temp>>% + \fi + \Hy@UseNameKey{PageLayout}\@pdfpagelayout + \ifx\@pdflang\relax + \else + /Lang(\@pdflang)% + \fi + \ifx\@baseurl\@empty + \else + /URI<</Base(\Hy@pstringB)>>% + \fi + >>% + }% + }% +} +%</pdfmark> +%<*pdfmarkbase> +% \end{macrocode} +% We define a single macro, pdfmark, which uses the `keyval' system +% to define the various allowable keys; these are \emph{exactly} +% as listed in the pdfmark reference for Acrobat 3.0. The only addition +% is \texttt{pdfmark} which specifies the type of pdfmark to create +% (like ANN, LINK etc). The +% surrounding round and square brackets in the pdfmark commands +% are supplied, but you have to put in / characters as needed for the +% values. +% +% \begin{macrocode} +\newif\ifHy@pdfmarkerror +\def\pdfmark{\@ifnextchar[{\pdfmark@}{\pdfmark@[]}} +\def\pdfmark@[#1]#2{% + \Hy@pdfmarkerrorfalse + \edef\@processme{\noexpand\pdf@toks={\the\pdf@defaulttoks}}% + \@processme + \let\pdf@type\relax + \let\pdf@objdef\ltx@empty + \kvsetkeys{PDF}{#2}% + \ifHy@pdfmarkerror + \else + \ifx\pdf@type\relax + \Hy@WarningNoLine{no pdfmark type specified in #2!!}% + \ifx\\#1\\% + \else + \pdf@rect{#1}% + \fi + \else + \ifx\\#1\\% + \literalps@out{% + [% + \ifx\pdf@objdef\ltx@empty + \else + /_objdef\string{\pdf@objdef\string}% + \fi + \the\pdf@toks\space\pdf@type\space pdfmark% + }% + \else + \ltx@IfUndefined{@\pdf@linktype color}{% + \Hy@colorlink\@linkcolor + }{% + \expandafter\Hy@colorlink + \csname @\pdf@linktype color\endcsname + }% + \pdf@rect{#1}% + \literalps@out{% + [% + \ifx\pdf@objdef\ltx@empty + \else + /_objdef\string{\pdf@objdef\string}% + \fi + \the\pdf@toks\space\pdf@type\space pdfmark% + }% + \Hy@endcolorlink + \fi + \fi + \fi +} +% \end{macrocode} +% The complicated bit is working out the right enclosing rectangle of +% some piece of \TeX\ text, needed by the /Rect key. This solution originates +% with Toby Thain (\texttt{tobyt@netspace.net.au}). +% +% For the case breaklinks is enabled, I have added two hooks, +% the first one for package setouterhbox, it provides +% a hopefully better method without setting the text twice. +% \begin{quote} +% \verb|\usepackage[hyperref]{setouterhbox}| +% \end{quote} +% With the second hook, also you can set the text twice, e.g.: +% \begin{quote} +% \verb|\long\def\Hy@setouterhbox#1#2{\long\def\my@temp{#2}}|\\ +% \verb|\def\Hy@breaklinksunhbox#1{\my@temp}| +% \end{quote} +% \begin{macrocode} +\newsavebox{\pdf@box} +\providecommand*{\Hy@setouterhbox}{\sbox} +\providecommand*{\Hy@breaklinksunhbox}{\unhbox} +\def\Hy@DEST{/DEST} +\def\pdf@rect#1{% + \begingroup + \chardef\x=1 % + \def\Hy@temp{#1}% + \ifx\Hy@temp\ltx@empty + \chardef\x=0 % + \else + \def\y{\anchor@spot}% + \ifx\Hy@temp\y + \def\y{\relax}% + \ifx\anchor@spot\y + \chardef\x=0 % + \fi + \fi + \fi + \expandafter\endgroup + \ifcase\x + \literalps@out{H.S}% + \literalps@out{H.R}% + \else + \leavevmode + \Hy@SaveSpaceFactor + \ifmmode + \def\Hy@LinkMath{$}% + \else + \let\Hy@LinkMath\ltx@empty + \fi + \ifHy@breaklinks + \Hy@setouterhbox\pdf@box{% + \Hy@RestoreSpaceFactor + \Hy@LinkMath + \Hy@AllowHyphens#1\Hy@xspace@end + \Hy@LinkMath + \Hy@SaveSpaceFactor + }% + \else + \sbox\pdf@box{% + \Hy@RestoreSpaceFactor + \Hy@LinkMath + #1\Hy@xspace@end + \Hy@LinkMath + \Hy@SaveSpaceFactor + }% + \fi + \dimen@\ht\pdf@box + \ifdim\dp\pdf@box=\z@ + \literalps@out{H.S}% + \else + \lower\dp\pdf@box\hbox{\literalps@out{H.S}}% + \fi +% \end{macrocode} +% If the text has to be horizontal mode stuff then just unbox +% the saved box like this, which saves executing it twice, which can +% mess up counters etc (thanks DPC\ldots). +% \begin{macrocode} + \ifHy@breaklinks + \ifhmode + \Hy@breaklinksunhbox\pdf@box + \else + \box\pdf@box + \fi + \else + \expandafter\box\pdf@box + \fi +% \end{macrocode} +% but if it can have multiple paragraphs you'd need one of these, +% but in that case the measured box size would be wrong anyway. +% \begin{quote} +% |\ifHy@breaklinks#1\else\box\pdf@box\fi|\\ +% |\ifHy@breaklinks{#1}\else\box\pdf@box\fi| +% \end{quote} +% \begin{macrocode} + \ifdim\dimen@=\z@ + \literalps@out{H.R}% + \else + \raise\dimen@\hbox{\literalps@out{H.R}}% + \fi + \Hy@RestoreSpaceFactor + \fi + \ifx\pdf@type\Hy@DEST + \else + \pdf@addtoksx{H.B}% + \fi +} +% \end{macrocode} +% All the supplied material is stored in a token list; since I do not +% feel sure I quite understand these, things may not work as expected +% with expansion. We'll have to experiment. +% \begin{macrocode} +\newtoks\pdf@toks +\newtoks\pdf@defaulttoks +\pdf@defaulttoks={}% +\def\pdf@addtoks#1#2{% + \edef\@processme{\pdf@toks{\the\pdf@toks/#2 #1}}% + \@processme +} +\def\pdf@addtoksx#1{% + \edef\@processme{\pdf@toks{\the\pdf@toks\space #1}}% + \@processme +} +\def\PDFdefaults#1{% + \pdf@defaulttoks={#1}% +} +% \end{macrocode} +% This is the list of allowed keys. See the Acrobat manual for an +% explanation. +% \begin{macrocode} +% what is the type of pdfmark? +\define@key{PDF}{pdfmark}{\def\pdf@type{#1}} +% what is the link type? +\define@key{PDF}{linktype}{\def\pdf@linktype{#1}} +\def\pdf@linktype{link} +% named object? +\define@key{PDF}{objdef}{\edef\pdf@objdef{#1}} +\let\pdf@objdef\ltx@empty +% parameter is a stream of PDF +\define@key{PDF}{Raw}{\pdf@addtoksx{#1}} +% parameter is a name +\define@key{PDF}{Action}{\pdf@addtoks{#1}{Action}} +% parameter is a array +\define@key{PDF}{Border}{% + \edef\Hy@temp{#1}% + \ifx\Hy@temp\@empty + \else + \pdf@addtoks{[#1]\Hy@BorderArrayPatch}{Border}% hash-ok + \fi +} +\let\Hy@BorderArrayPatch\@empty +% parameter is a dictionary +\define@key{PDF}{BorderStyle}{% + \edef\Hy@temp{#1}% + \ifx\Hy@temp\@empty + \else + \pdf@addtoks{<<#1>>}{BS}% + \fi +} +% parameter is a array +\define@key{PDF}{Color}{% + \ifx\relax#1\relax + \else + \pdf@addtoks{[#1]}{Color}% hash-ok + \fi +} +% parameter is a string +\define@key{PDF}{Contents}{\pdf@addtoks{(#1)}{Contents}} +% parameter is a integer +\define@key{PDF}{Count}{\pdf@addtoks{#1}{Count}} +% parameter is a array +\define@key{PDF}{CropBox}{\pdf@addtoks{[#1]}{CropBox}}% hash-ok +% parameter is a string +\define@key{PDF}{DOSFile}{\pdf@addtoks{(#1)}{DOSFile}} +% parameter is a string or file +\define@key{PDF}{DataSource}{\pdf@addtoks{(#1)}{DataSource}} +% parameter is a destination +\define@key{PDF}{Dest}{% + \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}% + \ifx\Hy@pstringDest\@empty + \Hy@pdfmarkerrortrue + \Hy@Warning{Destination with empty name ignored}% + \else + \pdf@addtoks{(\Hy@pstringDest) cvn}{Dest}% + \fi +} +\define@key{PDF}{DestAnchor}{% + \Hy@pstringdef\Hy@pstringDest{\HyperDestNameFilter{#1}}% + \ifx\Hy@pstringDest\@empty + \Hy@pdfmarkerrortrue + \Hy@Warning{Destination with empty name ignored}% + \else + \pdf@addtoks{(\Hy@pstringDest) cvn}{Dest}% + \fi +} +% parameter is a string +\define@key{PDF}{Dir}{\pdf@addtoks{(#1)}{Dir}} +% parameter is a string +\define@key{PDF}{File}{\pdf@addtoks{(#1)}{File}} +% parameter is a int +\define@key{PDF}{Flags}{\pdf@addtoks{#1}{Flags}} +\define@key{PDF}{PDFAFlags}{% + \ifHy@pdfa + \pdf@addtoks{#1}{F}% + \fi +} +% parameter is a name +\define@key{PDF}{AcroHighlight}{% + \begingroup + \edef\x{#1}% + \expandafter\endgroup\ifx\x\@empty + \else + \pdf@addtoks{#1}{H}% + \fi +} +% parameter is a string +\define@key{PDF}{ID}{\pdf@addtoks{[#1]}{ID}}% hash-ok +% parameter is a string +\define@key{PDF}{MacFile}{\pdf@addtoks{(#1)}{MacFile}} +% parameter is a string +\define@key{PDF}{ModDate}{\pdf@addtoks{(#1)}{ModDate}} +% parameter is a string +\define@key{PDF}{Op}{\pdf@addtoks{(#1)}{Op}} +% parameter is a Boolean +\define@key{PDF}{Open}{\pdf@addtoks{#1}{Open}} +% parameter is a integer or name +\define@key{PDF}{Page}{\pdf@addtoks{#1}{Page}} +% parameter is a name +\define@key{PDF}{PageMode}{\pdf@addtoks{#1}{PageMode}} +% parameter is a string +\define@key{PDF}{Params}{\pdf@addtoks{(#1)}{Params}} +% parameter is a array +\define@key{PDF}{Rect}{\pdf@addtoks{[#1]}{Rect}}% hash-ok +% parameter is a integer +\define@key{PDF}{SrcPg}{\pdf@addtoks{#1}{SrcPg}} +% parameter is a name +\define@key{PDF}{Subtype}{\pdf@addtoks{#1}{Subtype}} +% parameter is a string +\define@key{PDF}{Title}{\pdf@addtoks{(#1)}{Title}} +% parameter is a string +\define@key{PDF}{Unix}{\pdf@addtoks{(#1)}{Unix}} +% parameter is a string +\define@key{PDF}{UnixFile}{\pdf@addtoks{(#1)}{UnixFile}} +% parameter is an array +\define@key{PDF}{View}{\pdf@addtoks{[#1]}{View}}% hash-ok +% parameter is a string +\define@key{PDF}{WinFile}{\pdf@addtoks{(#1)}{WinFile}} +% \end{macrocode} +% These are the keys used in the DOCINFO section. +% \begin{macrocode} +\define@key{PDF}{Author}{\pdf@addtoks{(#1)}{Author}} +\define@key{PDF}{Creator}{\pdf@addtoks{(#1)}{Creator}} +\define@key{PDF}{CreationDate}{\pdf@addtoks{(#1)}{CreationDate}} +\define@key{PDF}{ModDate}{\pdf@addtoks{(#1)}{ModDate}} +\define@key{PDF}{Producer}{\pdf@addtoks{(#1)}{Producer}} +\define@key{PDF}{Subject}{\pdf@addtoks{(#1)}{Subject}} +\define@key{PDF}{Keywords}{\pdf@addtoks{(#1)}{Keywords}} +\define@key{PDF}{ModDate}{\pdf@addtoks{(#1)}{ModDate}} +\define@key{PDF}{Base}{\pdf@addtoks{(#1)}{Base}} +\define@key{PDF}{URI}{\pdf@addtoks{#1}{URI}} +\define@key{PDF}{Trapped}{% + \edef\Hy@temp{#1}% + \ifx\Hy@temp\@empty + \else + \pdf@addtoks{/#1}{Trapped}% + \fi +} + +%</pdfmarkbase> +%<*pdfmark> +\def\Acrobatmenu#1#2{% + \EdefEscapeName\Hy@temp@menu{#1}% + \Hy@Acrobatmenu{#1}{#2}{% + \pdfmark[{#2}]{% + linktype=menu,% + pdfmark=/ANN,% + AcroHighlight=\@pdfhighlight,% + Border=\@pdfborder,% + BorderStyle=\@pdfborderstyle,% + Color=\@menubordercolor,% + Action={<</Subtype/Named/N/\Hy@temp@menu>>},% + Subtype=/Link,% + PDFAFlags=4% + }% + }% +} +% \end{macrocode} +% And now for some useful examples: +% \begin{macrocode} +\def\PDFNextPage{\@ifnextchar[{\PDFNextPage@}{\PDFNextPage@[]}} +\def\PDFNextPage@[#1]#2{% + \pdfmark[{#2}]{% + #1,% + Border=\@pdfborder,% + BorderStyle=\@pdfborderstyle,% + Color=.2 .1 .5,% + pdfmark=/ANN,% + Subtype=/Link,% + PDFAFlags=4,% + Page=/Next% + }% +} +\def\PDFPreviousPage{% + \@ifnextchar[{\PDFPreviousPage@}{\PDFPreviousPage@[]}% +} +\def\PDFPreviousPage@[#1]#2{% + \pdfmark[{#2}]{% + #1,% + Border=\@pdfborder,% + BorderStyle=\@pdfborderstyle,% + Color=.4 .4 .1,% + pdfmark=/ANN,% + Subtype=/Link,% + PDFAFlags=4,% + Page=/Prev% + }% +} +\def\PDFOpen#1{% + \pdfmark{#1,pdfmark=/DOCVIEW}% +} +% \end{macrocode} +% This will only work if you use Distiller 2.1 or higher. +% \begin{macrocode} +\def\hyper@linkurl#1#2{% + \begingroup + \Hy@pstringdef\Hy@pstringURI{#2}% + \hyper@chars + \leavevmode + \pdfmark[{#1}]{% + pdfmark=/ANN,% + linktype=url,% + AcroHighlight=\@pdfhighlight,% + Border=\@pdfborder,% + BorderStyle=\@pdfborderstyle,% + Color=\@urlbordercolor,% + Action={<<% + /Subtype/URI% + /URI(\Hy@pstringURI)% + \ifHy@href@ismap + /IsMap true% + \fi + >>},% + Subtype=/Link,% + PDFAFlags=4% + }% + \endgroup +} +\def\hyper@linkfile#1#2#3{% + \begingroup + \def\Hy@pstringF{#2}% + \Hy@CleanupFile\Hy@pstringF + \Hy@pstringdef\Hy@pstringF\Hy@pstringF + \Hy@pstringdef\Hy@pstringD{#3}% + \Hy@MakeRemoteAction + \leavevmode + \pdfmark[{#1}]{% + pdfmark=/ANN,% + Subtype=/Link,% + PDFAFlags=4,% + AcroHighlight=\@pdfhighlight,% + Border=\@pdfborder,% + BorderStyle=\@pdfborderstyle,% + linktype=file,% + Color=\@filebordercolor,% + Action={% + <<% + /S/GoToR% + \Hy@SetNewWindow + /F(\Hy@pstringF)% + /D% + \ifx\\#3\\% + [\Hy@href@page\@pdfremotestartview]% + \else + (\Hy@pstringD)cvn% + \fi + \Hy@href@nextactionraw + >>% + }% + }% + \endgroup +} +\def\@hyper@launch run:#1\\#2#3{% + \begingroup + \Hy@pstringdef\Hy@pstringF{#1}% + \Hy@pstringdef\Hy@pstringP{#3}% + \leavevmode + \pdfmark[{#2}]{% + pdfmark=/ANN,% + Subtype=/Link,% + PDFAFlags=4,% + AcroHighlight=\@pdfhighlight,% + Border=\@pdfborder,% + BorderStyle=\@pdfborderstyle,% + linktype=run,% + Color=\@runbordercolor,% + Action={% + <<% + /S/Launch% + \Hy@SetNewWindow + /F(\Hy@pstringF)% + \ifx\\#3\\% + \else + /Win<</P(\Hy@pstringP)/F(\Hy@pstringF)>>% + \fi + \Hy@href@nextactionraw + >>% + }% + }% + \endgroup +} +%</pdfmark> +% \end{macrocode} +% Unfortunately, some parts of the |pdfmark| +% PostScript code depend on vagaries +% of the dvi driver. We isolate here all the problems. +% +% \subsection{Rokicki's dvips} +% dvips thinks in 10ths of a big point, its +% coordinate space is resolution dependent, +% and its $y$ axis starts at the top of the +% page. Other drivers can and will be different! +% +% The work is done in |SDict|, because we add in some header +% definitions in a moment. +% \begin{macrocode} +%<*dvips> +\providecommand*{\XR@ext}{pdf} +\let\Hy@raisedlink\ltx@empty +\def\literalps@out#1{\special{ps:SDict begin #1 end}}% +\def\headerps@out#1{\special{! #1}}% +\input{pdfmark.def}% +\ifx\@pdfproducer\relax + \def\@pdfproducer{dvips + Distiller}% +\fi +\providecommand*\@pdfborder{0 0 1} +\providecommand*\@pdfborderstyle{} +\providecommand*\@pdfview{XYZ} +\providecommand*\@pdfviewparams{ H.V} +\def\Hy@BorderArrayPatch{BorderArrayPatch} +% \end{macrocode} +% +% \begin{macrocode} +\g@addto@macro\Hy@FirstPageHook{% + \headerps@out{% +% \end{macrocode} +% Unless I am going mad, this \emph{appears} to be the relationship +% between the default coordinate system (PDF), and dvips; +% \begin{verbatim} +% /DvipsToPDF { .01383701 div Resolution div } def +% /PDFToDvips { .01383701 mul Resolution mul } def +% \end{verbatim} +% the latter's coordinates are resolution dependent, but what that +% .01383701 is, who knows? well, almost everyone except me, I expect\ldots +% And yes, Maarten Gelderman \texttt{<mgelderman@econ.vu.nl>} +% points out that its 1/72.27 (the number of points to an inch, big points +% to inch is 1/72). This also suggests that the code would be more +% understandable (and exact) if 0.013 div would be replaced by 72.27 mul, +% so here we go. If this isn't right, I'll revert it. +% \begin{macrocode} + /DvipsToPDF{72.27 mul Resolution div} def% + /PDFToDvips{72.27 div Resolution mul} def% + /BPToDvips{72 div Resolution mul}def% +% \end{macrocode} +% The values inside the /Boder array are not taken literally, but +% interpreted by ghostscript using the resolution of the dvi driver. +% I don't know how other distiller programs behaves in this manner. +% \begin{macrocode} + /BorderArrayPatch{% + [exch{% + dup dup type/integertype eq exch type/realtype eq or% + {BPToDvips}if% + }forall]% + }def% +% \end{macrocode} +% The rectangle around the links starts off +% \emph{exactly} the size of the box; +% we will to make it slightly bigger, 1 point on all sides. +% \begin{macrocode} + /HyperBorder {1 PDFToDvips} def% + /H.V {pdf@hoff pdf@voff null} def% + /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def% +% \end{macrocode} +% |H.S| (start of anchor, link, or rect) stores +% the $x$ and $y$ coordinates of the current point, in PDF coordinates +% \begin{macrocode} + /H.S {% + currentpoint % + HyperBorder add /pdf@lly exch def % + dup DvipsToPDF 72 add /pdf@hoff exch def % + HyperBorder sub /pdf@llx exch def% + } def% +% \end{macrocode} +% +% The calculation of upper left $y$ is done without +% raising the point in \TeX, +% by simply adding on the current |\baselineskip| to the current $y$. +% This is usually too much, so we remove a notional 2 points. +% +% We have to see what the current baselineskip is, and convert it +% to the dvips coordinate system. +% +% Argument: baselineskip in pt. +% The $x$ and $y$ coordinates of the current point, minus the baselineskip +% \begin{macrocode} + /H.L {% + 2 sub dup% + /HyperBasePt exch def % + PDFToDvips /HyperBaseDvips exch def % + currentpoint % + HyperBaseDvips sub /pdf@ury exch def% + /pdf@urx exch def% + } def% + /H.A {% + H.L % +% |/pdf@voff| = the distance from the top of the page to a point +% |\baselineskip| above the current point in PDF coordinates + currentpoint exch pop % + vsize 72 sub exch DvipsToPDF % + HyperBasePt sub % baseline skip + sub /pdf@voff exch def% + } def% + /H.R {% + currentpoint % + HyperBorder sub /pdf@ury exch def % + HyperBorder add /pdf@urx exch def % +% |/pdf@voff| = the distance from the top of the page to the current point, in +% PDF coordinates + currentpoint exch pop vsize 72 sub % + exch DvipsToPDF sub /pdf@voff exch def% + } def% + }% +} +\AtBeginShipoutFirst{% + \ifHy@setpagesize + \begingroup + \@ifundefined{stockwidth}{% + \ifdim\paperwidth>\z@ + \ifdim\paperheight>\z@ + \special{papersize=\the\paperwidth,\the\paperheight}% + \fi + \fi + }{% + \ifdim\stockwidth>\z@ + \ifdim\stockheight>\z@ + \special{papersize=\the\stockwidth,\the\stockheight}% + \fi + \fi + }% + \endgroup + \fi + \Hy@DisableOption{setpagesize}% +} +% \end{macrocode} +% \begin{macrocode} +\def\setpdflinkmargin#1{% + \begingroup + \setlength{\dimen@}{#1}% + \literalps@out{% + /HyperBorder{\strip@pt\dimen@\space PDFToDvips}def% + }% + \endgroup +} +% \end{macrocode} +% \begin{macrocode} +%</dvips> +% \end{macrocode} +% +% \subsection{VTeX's vtexpdfmark driver} +% +% This part is derived from the dvips +% (many names reflect this). +% +% The origin seems to be the same as TeX's origin, +% 1 in from the left and 1 in downwards from the top. +% The direction of the $y$ axis is downwards, +% the opposite of the dvips case. Units seems +% to be pt or bp. +% +% \begin{macrocode} +%<*vtexpdfmark> +\providecommand*{\XR@ext}{pdf} +\let\Hy@raisedlink\ltx@empty +\def\literalps@out#1{\special{pS:#1}}% +\def\headerps@out#1{\immediate\special{pS:#1}}% +\input{pdfmark.def}% +\ifx\@pdfproducer\relax + \ifnum\OpMode=\@ne + \def\@pdfproducer{VTeX}% + \else + \def\@pdfproducer{VTeX + Distiller}% + \fi +\fi +\providecommand*\@pdfborder{0 0 1} +\providecommand*\@pdfborderstyle{} +\providecommand*\@pdfview{XYZ} +\providecommand*\@pdfviewparams{ H.V} +% \end{macrocode} +% +% \begin{macrocode} +\g@addto@macro\Hy@FirstPageHook{% + \headerps@out{% + /vsize {\Hy@pageheight} def% +% \end{macrocode} +% The rectangle around the links starts off +% \emph{exactly} the size of the box; +% we will to make it slightly bigger, 1 point on all sides. +% \begin{macrocode} + /HyperBorder {1} def% + /H.V {pdf@hoff pdf@voff null} def% + /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def% +% \end{macrocode} +% +% |H.S| (start of anchor, link, or rect) stores +% the $x$ and $y$ coordinates of the current point, in PDF coordinates: +% $\mathtt{pdf@lly} = Y_c - \mathtt{HyperBorder}$, +% $\mathtt{pdf@hoff} = X_c + 72$, +% $\mathtt{pdf@llx} = X_c - \mathtt{HyperBorder}$ +% \begin{macrocode} + /H.S {% + currentpoint % + HyperBorder sub% + /pdf@lly exch def % + dup 72 add /pdf@hoff exch def % + HyperBorder sub% + /pdf@llx exch def% + } def% +% \end{macrocode} +% The $x$ and $y$ coordinates of the current point, minus the +% |\baselineskip|: +% $\mathtt{pdf@ury} = Y_c + \mathtt{HyperBasePt} + \mathtt{HyperBorder}$, +% $\mathtt{pdf@urx} = X_c + \mathtt{HyperBorder}$ +% \begin{macrocode} + /H.L {% + 2 sub% + /HyperBasePt exch def % + currentpoint % + HyperBasePt add HyperBorder add% + /pdf@ury exch def % + HyperBorder add% + /pdf@urx exch def% + } def% + /H.A {% + H.L % + currentpoint exch pop % + vsize 72 sub exch % + HyperBasePt add add% + /pdf@voff exch def% + } def% +% \end{macrocode} +% $\mathtt{pdf@ury} = Y_c + \mathtt{HyperBorder}$, +% $\mathtt{pdf@urx} = X_c + \mathtt{HyperBorder}$ +% \begin{macrocode} + /H.R {% + currentpoint % + HyperBorder add% + /pdf@ury exch def % + HyperBorder add% + /pdf@urx exch def % + currentpoint exch pop vsize 72 sub add% + /pdf@voff exch def% + } def% + }% +} +% \end{macrocode} +% \begin{macrocode} +\def\setpdflinkmargin#1{% + \begingroup + \setlength{\dimen@}{#1}% + \literalps@out{% + /HyperBorder{\strip@pt\dimen@}def% + }% + \endgroup +} +% \end{macrocode} +% \begin{macrocode} +%</vtexpdfmark> +% \end{macrocode} +% +% \subsection{Textures} +% +% \begin{macrocode} +%<*textures> +\providecommand*{\XR@ext}{pdf} +% \end{macrocode} +% +% At the suggestion of Jacques Distler (distler@golem.ph.utexas.edu), try +% to derive a suitable driver for Textures. This was initially a copy of +% dvips, with some guesses about Textures behaviour. +% Ross Moore (\Email{ross@maths.mq.edu.au}) has added modifications +% for better compatibility, and to support use of pdfmark. +% +% Start by defining a macro that expands to the end-of-line character. +% This will be used to format the appearance of PostScript code, +% to enhance readability, and avoid excessively long lines which +% might otherwise become broken to bad places. +% +% \begin{macro}{\Hy@ps@CR} +% The macro \verb|\Hy@ps@CR| contains the end-of-line character. +% \begin{macrocode} +\begingroup + \obeylines % + \gdef\Hy@ps@CR{\noexpand + }% +\endgroup % +% \end{macrocode} +% \end{macro} +% +% Textures has two types of \verb|\special| command for inserting +% PostScript code directly into the dvi output. The `postscript' +% way preserves TeX's idea of where on the page the \verb|\special| +% occurred, but it wraps the contents with a \verb|save|--\verb|restore| +% pair, and adjusts the user-space coordinate system for local drawing +% commands. The `rawpostscript' way simply inserts code, without regard +% for the location on the page. +% +% Thus, to put arbitrary PostScript coding at a fixed location requires +% using \emph{both} \verb|\special| constructions. +% It works by pushing the device-space coordinates onto the operand stack, +% where they can be used to transform back to the correct user-space +% coordinates for the whole page, within a `rawpostscript' \verb|\special|. +% +% \begin{macrocode} +\def\literalps@out#1{% + \special{postscript 0 0 transform}% + \special{rawpostscript itransform moveto\Hy@ps@CR #1}% +}% +% +% \end{macrocode} +% +% The `prepostscript' is a 3rd kind of \verb|\special|, used for +% inserting definitions into the dictionaries, before page-building +% begins. These are to be available for use on all pages. +% +% \begin{macrocode} +\def\headerps@out#1{% + \special{% + prepostscript TeXdict begin\Hy@ps@CR + #1\Hy@ps@CR + end% + }% +}% +% +% \end{macrocode} +% +% To correctly support the \verb|pdfmark| method, for embedding +% PDF definitions with \verb|.ps| files in a non-intrusive way, +% an appropriate definition needs to be made \emph{before} +% the file \verb|pdfmark.def| is read. Other parameters are best +% set afterwards. +% +% \begin{macrocode} +\g@addto@macro\Hy@FirstPageHook{% + \headerps@out{% + /betterpdfmark {% + systemdict begin % + dup /BP eq% + {cleartomark gsave nulldevice [}% + {dup /EP eq% + {cleartomark cleartomark grestore}% + {cleartomark}% + ifelse% + }ifelse % + end% + }def\Hy@ps@CR + __pdfmark__ not{/pdfmark /betterpdfmark load def}if% + }% end of \headerps@out +}% end of \AtBeginShipoutFirst +% +\input{pdfmark.def}% +% +\ifx\@pdfproducer\relax + \def\@pdfproducer{Textures + Distiller}% +\fi +\providecommand*\@pdfborder{0 0 1} +\providecommand*\@pdfborderstyle{} +\providecommand*\@pdfview{XYZ} +\providecommand*\@pdfviewparams{ H.V} +% +% \end{macrocode} +% These are called at the start and end of unboxed links; +% their job is to leave available PS variables called +% |pdf@llx pdf@lly pdf@urx pdf@ury|, which are the coordinates +% of the bounding rectangle of the link, and |pdf@hoff pdf@voff| +% which are the PDF page offsets. +% The Rect pair are called at the LL and UR corners of a box +% known to \TeX. +% \begin{macrocode} +\Hy@AtBeginDocument{% + \headerps@out{% +% \end{macrocode} +% Textures lives in normal points, I think. So conversion from one +% coordinate system to another involves doing nothing. +% +% \begin{macrocode} + /vsize {\Hy@pageheight} def% + /DvipsToPDF {} def% + /PDFToDvips {} def% + /BPToDvips {} def% + /HyperBorder { 1 PDFToDvips } def\Hy@ps@CR + /H.V {pdf@hoff pdf@voff null} def\Hy@ps@CR + /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def\Hy@ps@CR + /H.S {% + currentpoint % + HyperBorder add /pdf@lly exch def % + dup DvipsToPDF 72 add /pdf@hoff exch def % + HyperBorder sub /pdf@llx exch def% + } def\Hy@ps@CR + /H.L {% + 2 sub % + PDFToDvips /HyperBase exch def % + currentpoint % + HyperBase sub /pdf@ury exch def% + /pdf@urx exch def% + } def\Hy@ps@CR + /H.A {% + H.L % + currentpoint exch pop % + vsize 72 sub exch DvipsToPDF % + HyperBase sub % baseline skip + sub /pdf@voff exch def% + } def\Hy@ps@CR + /H.R {% + currentpoint % + HyperBorder sub /pdf@ury exch def % + HyperBorder add /pdf@urx exch def % + currentpoint exch pop vsize 72 sub % + exch DvipsToPDF sub /pdf@voff exch def% + } def\Hy@ps@CR + }% +} +% \end{macrocode} +% \begin{macrocode} +\def\setpdflinkmargin#1{% + \begingroup + \setlength{\dimen@}{#1}% + \literalps@out{% + /HyperBorder{\strip@pt\dimen@\space PDFToDvips}def% + }% + \endgroup +} +% \end{macrocode} +% \begin{macrocode} +\Hy@AtBeginDocument{% + \ifHy@colorlinks + \headerps@out{/PDFBorder{/Border [0 0 0]}def}% + \fi +} +% \end{macrocode} +% Textures provides built-in support for HyperTeX specials +% so this part combines code from \verb|hypertex.def| with what +% is established by loading \verb|pdfmark.def|, or any other driver. +% \begin{macrocode} +\expandafter\let\expandafter\keepPDF@SetupDoc + \csname PDF@SetupDoc\endcsname +\def\PDF@SetupDoc{% + \ifx\@baseurl\@empty + \else + \special{html:<base href="\@baseurl">}% + \fi + \keepPDF@SetupDoc +} +\Hy@WrapperDef\hyper@anchor#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \let\protect=\string + \special{html:<a name=% + \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}% + \endgroup + \Hy@activeanchortrue + \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink + \special{html:</a>}% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\Hy@WrapperDef\hyper@anchorstart#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \hyper@chars + \special{html:<a name=% + \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}% + \endgroup + \Hy@activeanchortrue +} +\def\hyper@anchorend{% + \special{html:</a>}% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\def\@urltype{url} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \expandafter\Hy@colorlink\csname @#1color\endcsname + \def\Hy@tempa{#1}% + \ifx\Hy@tempa\@urltype + \special{html:<a href=\hyper@quote#2\hyper@quote>}% + \else + \begingroup + \hyper@chars + \special{% + html:<a href=% + \hyper@quote\#\HyperDestNameFilter{#2}\hyper@quote>% + }% + \endgroup + \fi +} +\def\hyper@linkend{% + \special{html:</a>}% + \Hy@endcolorlink +} +\def\hyper@linkfile#1#2#3{% + \hyper@linkurl{#1}{% + \Hy@linkfileprefix#2\ifx\\#3\\\else\##3\fi + }% +} +\def\hyper@linkurl#1#2{% + \leavevmode + \ifHy@raiselinks + \Hy@SaveSpaceFactor + \Hy@SaveSavedSpaceFactor + \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}% + \Hy@RestoreSavedSpaceFactor + \@linkdim\dp\@tempboxa + \lower\@linkdim\hbox{% + \hyper@chars + \special{html:<a href=\hyper@quote#2\hyper@quote>}% + }% + \Hy@colorlink\@urlcolor + \Hy@RestoreSpaceFactor + #1\Hy@xspace@end + \Hy@SaveSpaceFactor + \@linkdim\ht\@tempboxa + \advance\@linkdim by -6.5\p@ + \raise\@linkdim\hbox{\special{html:</a>}}% + \Hy@endcolorlink + \Hy@RestoreSpaceFactor + \else + \begingroup + \hyper@chars + \special{html:<a href=\hyper@quote#2\hyper@quote>}% + \Hy@colorlink\@urlcolor#1\Hy@xspace@end + \special{html:</a>}% + \Hy@endcolorlink + \endgroup + \fi +} +% \end{macrocode} +% Very poor implementation of \cs{hyper@link} without considering |#1|. +% \begin{macrocode} +\def\hyper@link#1#2#3{% + \Hy@VerboseLinkStart{#1}{#2}% + \hyper@linkurl{#3}{\#\HyperDestNameFilter{#2}}% +} +\def\hyper@image#1#2{% + \begingroup + \hyper@chars + \special{html:<img src=\hyper@quote#1\hyper@quote>}% + \endgroup +} +%</textures> +% \end{macrocode} +% \subsection{dvipsone} +% \begin{macrocode} +% \subsection{dvipsone driver} +% Over-ride the default setup macro in pdfmark driver to use Y\&Y +% |\special| commands. +%<*dvipsone> +\providecommand*{\XR@ext}{pdf} +\let\Hy@raisedlink\ltx@empty +\providecommand*\@pdfborder{0 0 1} +\providecommand*\@pdfborderstyle{} +\def\literalps@out#1{\special{ps:#1}}% +\def\headerps@out#1{\special{headertext=#1}}% +\input{pdfmark.def}% +\HyInfo@AddonUnsupportedtrue +\def\PDF@FinishDoc{% + \Hy@UseMaketitleInfos + \HyInfo@TrappedUnsupported + \special{PDF: Keywords \@pdfkeywords}% + \special{PDF: Title \@pdftitle}% + \special{PDF: Creator \@pdfcreator}% + \ifx\@pdfcreationdate\@empty + \else + \special{PDF: CreationDate \@pdfcreationdate}% + \fi + \ifx\@pdfmoddate\@empty + \else + \special{PDF: ModDate \@pdfmoddate}% + \fi + \special{PDF: Author \@pdfauthor}% + \ifx\@pdfproducer\relax + \else + \special{PDF: Producer \@pdfproducer}% + \fi + \special{PDF: Subject \@pdfsubject}% + \Hy@DisableOption{pdfauthor}% + \Hy@DisableOption{pdftitle}% + \Hy@DisableOption{pdfsubject}% + \Hy@DisableOption{pdfcreator}% + \Hy@DisableOption{addtopdfcreator}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfcreationdate}% + \Hy@DisableOption{pdfmoddate}% + \Hy@DisableOption{pdfproducer}% + \Hy@DisableOption{pdfkeywords}% + \Hy@DisableOption{pdftrapped}% + \Hy@DisableOption{pdfinfo}% +} +\def\PDF@SetupDoc{% + \def\Hy@temp{}% + \ifx\@pdfstartpage\@empty + \else + \ifx\@pdfstartview\@empty + \else + \edef\Hy@temp{% + ,Page=\@pdfstartpage + ,View=\@pdfstartview + }% + \fi + \fi + \edef\Hy@temp{% + \noexpand\pdfmark{% + pdfmark=/DOCVIEW,% + PageMode=/\@pdfpagemode + \Hy@temp + }% + }% + \Hy@temp + \ifx\@pdfpagescrop\@empty + \else + \pdfmark{pdfmark=/PAGES,CropBox=\@pdfpagescrop}% + \fi + \edef\Hy@temp{% + \ifHy@pdftoolbar\else /HideToolbar true\fi + \ifHy@pdfmenubar\else /HideMenubar true\fi + \ifHy@pdfwindowui\else /HideWindowUI true\fi + \ifHy@pdffitwindow /FitWindow true\fi + \ifHy@pdfcenterwindow /CenterWindow true\fi + \ifHy@pdfdisplaydoctitle /DisplayDocTitle true\fi + \Hy@UseNameKey{NonFullScreenPageMode}\@pdfnonfullscreenpagemode + \Hy@UseNameKey{Direction}\@pdfdirection + \Hy@UseNameKey{ViewArea}\@pdfviewarea + \Hy@UseNameKey{ViewClip}\@pdfviewclip + \Hy@UseNameKey{PrintArea}\@pdfprintarea + \Hy@UseNameKey{PrintClip}\@pdfprintclip + \Hy@UseNameKey{PrintScaling}\@pdfprintscaling + \Hy@UseNameKey{Duplex}\@pdfduplex + \ifx\@pdfpicktraybypdfsize\@empty + \else + /PickTrayByPDFSize \@pdfpicktraybypdfsize + \fi + \ifx\@pdfprintpagerange\@empty + \else + /PrintPageRange[\@pdfprintpagerange]% + \fi + \ifx\@pdfnumcopies\@empty + \else + /NumCopies \@pdfnumcopies + \fi + }% + \Hy@pstringdef\Hy@pstringB{\@baseurl}% + \pdfmark{% + pdfmark=/PUT,% + Raw={% + \string{Catalog\string}<<% + \ifx\Hy@temp\@empty + \else + /ViewerPreferences<<\Hy@temp>>% + \fi + \Hy@UseNameKey{PageLayout}\@pdfpagelayout + \ifx\@pdflang\relax + \else + /Lang(\@pdflang)% + \fi + \ifx\@baseurl\@empty + \else + /URI<</Base(\Hy@pstringB)>>% + \fi + >>% + }% + }% +} +\providecommand*\@pdfview{XYZ} +\providecommand*\@pdfviewparams{ % + gsave revscl currentpoint grestore % + 72 add exch pop null exch null% +} +\def\Hy@BorderArrayPatch{BorderArrayPatch} +% \end{macrocode} +% These are called at the start and end of unboxed links; +% their job is to leave available PS variables called +% |pdf@llx pdf@lly pdf@urx pdf@ury|, which are the coordinates +% of the bounding rectangle of the link, and |pdf@hoff pdf@voff| +% which are the PDF page offsets. These latter are currently not +% used in the dvipsone setup. +% The Rect pair are called at the LL and UR corners of a box +% known to \TeX. +% \begin{macrocode} +\g@addto@macro\Hy@FirstPageHook{% + \headerps@out{% +% \end{macrocode} +% dvipsone lives in scaled points; does this mean 65536 or 65781? +% \begin{macrocode} + /DvipsToPDF { 65781 div } def% + /PDFToDvips { 65781 mul } def% + /BPToDvips{65781 mul}def% + /HyperBorder { 1 PDFToDvips } def% + /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def% +% \end{macrocode} +% The values inside the /Boder array are not taken literally, but +% interpreted by ghostscript using the resolution of the dvi driver. +% I don't know how other distiller programs behaves in this manner. +% \begin{macrocode} + /BorderArrayPatch{% + [exch{% + dup dup type/integertype eq exch type/realtype eq or% + {BPToDvips}if% + }forall]% + }def% +% \end{macrocode} +% +% \begin{macrocode} + /H.S {% + currentpoint % + HyperBorder add /pdf@lly exch def % + dup DvipsToPDF 72 add /pdf@hoff exch def % + HyperBorder sub /pdf@llx exch def% + } def% + /H.L {% + 2 sub % + PDFToDvips /HyperBase exch def % + currentpoint % + HyperBase sub /pdf@ury exch def% + /pdf@urx exch def% + } def% + /H.A {% + H.L % + currentpoint exch pop % + HyperBase sub % baseline skip + DvipsToPDF /pdf@voff exch def% + } def% + /H.R {% + currentpoint % + HyperBorder sub /pdf@ury exch def % + HyperBorder add /pdf@urx exch def % + currentpoint exch pop DvipsToPDF /pdf@voff exch def% + } def% + }% +} +% \end{macrocode} +% \begin{macrocode} +\def\setpdflinkmargin#1{% + \begingroup + \setlength{\dimen@}{#1}% + \literalps@out{% + /HyperBorder{\strip@pt\dimen@\space PDFToDvips}def% + }% + \endgroup +} +% \end{macrocode} +% \begin{macrocode} +%</dvipsone> +% \end{macrocode} +% +% \subsection{TeX4ht} +% \begin{macrocode} +%<*tex4ht> +\providecommand*{\XR@ext}{html} +\let\Hy@raisedlink\ltx@empty +\@ifpackageloaded{tex4ht}{% + \Hy@InfoNoLine{tex4ht is already loaded}% +}{% + \RequirePackage[htex4ht]{tex4ht}% +} +\hyperlinkfileprefix{} +\let\PDF@FinishDoc\ltx@empty +\def\PDF@SetupDoc{% + \ifx\@baseurl\@empty + \else + \special{t4ht=<base href="\@baseurl">}% + \fi +} +\Hy@WrapperDef\hyper@anchor#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \let\protect=\string + \special{t4ht=<a name=% + \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}% + \endgroup + \Hy@activeanchortrue + \Hy@colorlink\@anchorcolor\anchor@spot\Hy@endcolorlink + \special{t4ht=</a>}% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\Hy@WrapperDef\hyper@anchorstart#1{% + \Hy@SaveLastskip + \Hy@VerboseAnchor{#1}% + \begingroup + \hyper@chars\special{t4ht=<a name=% + \hyper@quote\HyperDestNameFilter{#1}\hyper@quote>}% + \endgroup + \Hy@activeanchortrue +} +\def\hyper@anchorend{% + \special{t4ht=</a>}% + \Hy@activeanchorfalse + \Hy@RestoreLastskip +} +\def\@urltype{url} +\def\hyper@linkstart#1#2{% + \Hy@VerboseLinkStart{#1}{#2}% + \expandafter\Hy@colorlink\csname @#1color\endcsname + \def\Hy@tempa{#1}% + \ifx\Hy@tempa\@urltype + \special{t4ht=<a href=\hyper@quote#2\hyper@quote>}% + \else + \begingroup + \hyper@chars + \special{t4ht=<a href=% + \hyper@quote\#\HyperDestNameFilter{#2}\hyper@quote>}% + \endgroup + \fi +} +\def\hyper@linkend{% + \special{t4ht=</a>}% + \Hy@endcolorlink +} +\def\hyper@linkfile#1#2#3{% + \hyper@linkurl{#1}{\Hy@linkfileprefix#2\ifx\\#3\\\else\##3\fi}% +} +\def\hyper@linkurl#1#2{% + \leavevmode + \ifHy@raiselinks + \Hy@SaveSpaceFactor + \Hy@SaveSavedSpaceFactor + \sbox\@tempboxa{\Hy@RestoreSpaceFactor#1}% + \Hy@RestoreSavedSpaceFactor + \@linkdim\dp\@tempboxa + \lower\@linkdim\hbox{% + \begingroup + \hyper@chars + \special{% + t4ht=<a href=\hyper@quote#2\hyper@quote>% + }% + \endgroup + }% + \Hy@colorlink\@urlcolor + \Hy@RestoreSpaceFactor + #1\Hy@xspace@end + \Hy@SaveSpaceFactor + \Hy@endcolorlink + \@linkdim\ht\@tempboxa + \advance\@linkdim by -6.5\p@ + \raise\@linkdim\hbox{\special{t4ht=</a>}}% + \Hy@RestoreSpaceFactor + \else + \begingroup + \hyper@chars + \special{t4ht=<a href=\hyper@quote#2\hyper@quote>}% + \Hy@colorlink\@urlcolor + #1\Hy@xspace@end + \Hy@endcolorlink + \special{t4ht=</a>}% + \endgroup + \fi +} +% \end{macrocode} +% Poor implementation of \cs{hyper@link} without considering |#1|. +% \begin{macrocode} +\def\hyper@link#1#2#3{% + \Hy@VerboseLinkStart{#1}{#2}% + \hyper@linkurl{#3}{\#\HyperDestNameFilter{#2}}% +} +\def\hyper@image#1#2{% + \begingroup + \hyper@chars + \special{t4ht=<img src=\hyper@quote#1\hyper@quote>}% + \endgroup +} +\let\autoref\ref +\ifx \rEfLiNK \UnDef + \def\rEfLiNK #1#2{#2}% +\fi +\let\backref\ltx@gobble +% \end{macrocode} +% Fix for tex4ht. +% \begin{macrocode} +\AtBeginDocument{% + \expandafter + \let\expandafter\Hy@OrgMakeLabel\csname Make:Label\endcsname + \expandafter\def\csname Make:Label\endcsname#1#2{% + \ifhmode + \Hy@SaveSpaceFactor + \else + \global\Hy@SavedSpaceFactor=1000 % + \fi + \Hy@OrgMakeLabel{#1}{% + \Hy@RestoreSpaceFactor + #2\Hy@xspace@end% + \Hy@SaveSpaceFactor + }% + \Hy@RestoreSpaceFactor + }% +} +%</tex4ht> +%<*tex4htcfg> +\IfFileExists{\jobname.cfg}{\endinput}{} +\Preamble{html} + \begin{document}% +\EndPreamble +\def\TeX{TeX} +\def\OMEGA{Omega} +\def\LaTeX{La\TeX} +\def\LaTeXe{\LaTeX2e} +\def\eTeX{e-\TeX} +\def\MF{Metafont} +\def\MP{MetaPost} +%</tex4htcfg> +% \end{macrocode} +% +% \section{Driver-specific form support} +% \subsection{pdfmarks} +% \begin{macrocode} +%<*pdfmark> +\long\def\@Form[#1]{% +\g@addto@macro\Hy@FirstPageHook{% + \headerps@out{% +[% + /_objdef{pdfDocEncoding}% + /type/dict% +/OBJ pdfmark% +[% + {pdfDocEncoding}% + <<% + /Type/Encoding% + /Differences[% + 24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek/ring% + /tilde % + 39/quotesingle % + 96/grave % + 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin% + /fraction/guilsinglleft/guilsinglright/minus/perthousand% + /quotedblbase/quotedblleft/quotedblright/quoteleft% + /quoteright/quotesinglbase/trademark/fi/fl/Lslash/OE/Scaron% + /Ydieresis/Zcaron/dotlessi/lslash/oe/scaron/zcaron % + 164/currency % + 166/brokenbar % + 168/dieresis/copyright/ordfeminine % + 172/logicalnot/.notdef/registered/macron/degree/plusminus% + /twosuperior/threesuperior/acute/mu % + 183/periodcentered/cedilla/onesuperior/ordmasculine % + 188/onequarter/onehalf/threequarters % + 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE% + /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave% + /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute% + /Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave% + /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls% + /agrave/aacute/acircumflex/atilde/adieresis/aring/ae% + /ccedilla/egrave/eacute/ecircumflex/edieresis/igrave% + /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute% + /ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute% + /ucircumflex/udieresis/yacute/thorn/ydieresis% + ]% + >>% +/PUT pdfmark% +[% + /_objdef{ZaDb}% + /type/dict% +/OBJ pdfmark% +[% + {ZaDb}% + <<% + /Type/Font% + /Subtype/Type1% + /Name/ZaDb% + /BaseFont/ZapfDingbats% + >>% +/PUT pdfmark% +[% + /_objdef{Helv}% + /type/dict% +/OBJ pdfmark% +[% + {Helv}% + <<% + /Type/Font% + /Subtype/Type1% + /Name/Helv% + /BaseFont/Helvetica% + /Encoding{pdfDocEncoding}% + >>% +/PUT pdfmark% +[% + /_objdef{aform}% + /type/dict% +/OBJ pdfmark% +[% + /_objdef{afields}% + /type/array% +/OBJ pdfmark% +[% + /_objdef{corder}% + /type/array% +/OBJ pdfmark% +{% + [% + /BBox[0 0 100 100]% + /_objdef{Check}% + /BP pdfmark % + 1 0 0 setrgbcolor% + /ZapfDingbats 80 selectfont % + 20 20 moveto% + (4)show% + [/EP pdfmark% + [% + /BBox[0 0 100 100]% + /_objdef{Cross}% + /BP pdfmark % + 1 0 0 setrgbcolor% + /ZapfDingbats 80 selectfont % + 20 20 moveto% + (8)show% + [/EP pdfmark% + [% + /BBox[0 0 250 100]% + /_objdef{Submit}% + /BP pdfmark % + 0.6 setgray % + 0 0 250 100 rectfill % + 1 setgray % + 2 2 moveto % + 2 98 lineto % + 248 98 lineto % + 246 96 lineto % + 4 96 lineto % + 4 4 lineto % + fill % + 0.34 setgray % + 248 98 moveto % + 248 2 lineto % + 2 2 lineto % + 4 4 lineto % + 246 4 lineto % + 246 96 lineto % + fill% + /Helvetica 76 selectfont % + 0 setgray % + 8 22.5 moveto% + (Submit)show% + [/EP pdfmark% + [% + /BBox[0 0 250 100]% + /_objdef{SubmitP}% + /BP pdfmark % + 0.6 setgray % + 0 0 250 100 rectfill % + 0.34 setgray % + 2 2 moveto % + 2 98 lineto % + 248 98 lineto % + 246 96 lineto % + 4 96 lineto % + 4 4 lineto % + fill % + 1 setgray % + 248 98 moveto % + 248 2 lineto % + 2 2 lineto % + 4 4 lineto % + 246 4 lineto % + 246 96 lineto % + fill% + /Helvetica 76 selectfont % + 0 setgray % + 10 20.5 moveto% + (Submit)show% + [/EP pdfmark% +} ?pdfmark% +[% + {aform}% + <<% + /Fields{afields}% + /DR<<% + /Font<<% + /ZaDb{ZaDb}% + /Helv{Helv}% + >>% + >>% + /DA(/Helv 10 Tf 0 g)% + /CO{corder}% + \ifHy@pdfa + \else + \ifHyField@NeedAppearances + /NeedAppearances true% + \fi + \fi + >>% +/PUT pdfmark% +[% + {Catalog}% + <<% + /AcroForm{aform}% + >>% +/PUT pdfmark% +}}% + \kvsetkeys{Form}{#1}% +} +\let\@endForm\ltx@empty +\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum + \Hy@Message{Sorry, pdfmark drivers do not support FORM gauges}% +} +% \end{macrocode} +% \begin{macrocode} +\newcount\HyField@AnnotCount +\HyField@AnnotCount=\z@ +\def\HyField@AdvanceAnnotCount{% + \global\advance\HyField@AnnotCount\@ne +} +\def\HyField@TheAnnotCount{% + \the\HyField@AnnotCount +} +% \end{macrocode} +% \begin{macrocode} +\edef\Fld@pageobjref{/P\string{ThisPage\string}} +% \end{macrocode} +% \begin{macrocode} +\def\HyField@AddToFields#1{% + \pdfmark{% + pdfmark=/APPEND,% + Raw={% + \string{afields\string}% + \string{#1\HyField@TheAnnotCount\string}% + }% + }% + \ifx\Fld@calculate@code\ltx@empty + \else + \pdfmark{% + pdfmark=/APPEND,% + Raw={% + \string{corder\string}% + \string{#1\HyField@TheAnnotCount\string}% + }% + }% + \fi +} +% \end{macrocode} +% \begin{macrocode} +\def\@TextField[#1]#2{% parameters, label + \def\Fld@name{#2}% + \let\Fld@default\ltx@empty + \let\Fld@value\@empty + \def\Fld@width{\DefaultWidthofText}% + \def\Fld@height{% + \ifFld@multiline + \DefaultHeightofTextMultiline + \else + \DefaultHeightofText + \fi + }% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofText,#1% + }% + \HyField@FlagsText + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi + \HyField@AdvanceAnnotCount + \LayoutTextField{#2}{% + \leavevmode + \Hy@escapeform\PDFForm@Text + \pdfmark[\MakeTextField{\Fld@width}{\Fld@height}]{% + pdfmark=/ANN,% + objdef=text\HyField@TheAnnotCount,% + Raw={\PDFForm@Text}% + }% + }% + \HyField@AddToFields{text}% + \endgroup +} +\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices + \def\Fld@name{#2}% + \let\Fld@default\relax + \let\Fld@value\relax + \def\Fld@width{\DefaultWidthofChoiceMenu}% + \def\Fld@height{\DefaultHeightofChoiceMenu}% + \begingroup + \Fld@menulength=0 % + \@tempdima\z@ + \@for\@curropt:=#3\do{% + \expandafter\Fld@checkequals\@curropt==\\% + \Hy@StepCount\Fld@menulength + \settowidth{\@tempdimb}{\@currDisplay}% + \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi + }% + \advance\@tempdima by 15\p@ + \begingroup + \HyField@SetKeys{#1}% + \edef\x{\endgroup + \noexpand\expandafter + \noexpand\HyField@SetKeys + \noexpand\expandafter{% + \expandafter\noexpand\csname DefaultOptionsof% + \ifFld@radio + Radio% + \else + \ifFld@combo + \ifFld@popdown + PopdownBox% + \else + ComboBox% + \fi + \else + ListBox% + \fi + \fi + \endcsname + }% + }\x + \HyField@SetKeys{#1}% + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\relax + \let\Fld@value\Fld@default + \fi + \LayoutChoiceField{#2}{% + \ifFld@radio + \HyField@FlagsRadioButton + \@@Radio{#3}% + \else + \begingroup + \HyField@FlagsChoice + \ifdim\Fld@width<\@tempdima + \ifdim\@tempdima<1cm\@tempdima1cm\fi + \edef\Fld@width{\the\@tempdima}% + \fi + \ifFld@combo + \else + \@tempdima=\the\Fld@menulength\Fld@charsize + \advance\@tempdima by \Fld@borderwidth bp % + \advance\@tempdima by \Fld@borderwidth bp % + \edef\Fld@height{\the\@tempdima}% + \fi + \@@Listbox{#3}% + \endgroup + \fi + }% + \endgroup +} +\def\@@Radio#1{% + \Fld@listcount=0 % + \EdefEscapeName\Fld@default{\Fld@default}% + \@for\@curropt:=#1\do{% + \expandafter\Fld@checkequals\@curropt==\\% + \EdefEscapeName\@currValue{\@currValue}% + \Hy@StepCount\Fld@listcount + \@currDisplay\space + \Hy@escapeform\PDFForm@Radio + \ifnum\Fld@listcount=1 % + \HyField@AdvanceAnnotCount + \fi + \pdfmark[\MakeRadioField{\Fld@width}{\Fld@height}]{% + pdfmark=/ANN,% + objdef=\ifnum\Fld@listcount=1 radio\HyField@TheAnnotCount\fi,% + Raw={% + \PDFForm@Radio /AP <</N <</\@currValue\space {Check}>> >>% + }% + } % deliberate space between radio buttons + \ifnum\Fld@listcount=1 % + \HyField@AddToFields{radio}% + \fi + }% +} +\newcount\Fld@listcount +\def\@@Listbox#1{% + \HyField@PDFChoices{#1}% + \Hy@escapeform\PDFForm@List + \HyField@AdvanceAnnotCount + \pdfmark[\MakeChoiceField{\Fld@width}{\Fld@height}]{% + pdfmark=/ANN,% + objdef=list\HyField@TheAnnotCount,% + Raw={\PDFForm@List}% + }% + \HyField@AddToFields{list}% +} +\def\@PushButton[#1]#2{% parameters, label + \def\Fld@name{#2}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofPushButton,#1% + }% + \ifHy@pdfa + \Hy@Error{% + PDF/A: Push button with JavaScript is prohibited% + }\@ehc + \LayoutPushButtonField{% + \leavevmode + \MakeButtonField{#2}% + }% + \else + \HyField@FlagsPushButton + \ifFld@hidden\def\Fld@width{1sp}\fi + \HyField@AdvanceAnnotCount + \LayoutPushButtonField{% + \leavevmode + \Hy@escapeform\PDFForm@Push + \pdfmark[\MakeButtonField{#2}]{% + pdfmark=/ANN,% + objdef=push\HyField@TheAnnotCount,% + Raw={\PDFForm@Push}% + }% + }% + \HyField@AddToFields{push}% + \fi + \endgroup +} +\def\@Submit[#1]#2{% + \def\Fld@width{\DefaultWidthofSubmit}% + \def\Fld@height{\DefaultHeightofSubmit}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofSubmit,#1% + }% + \HyField@FlagsPushButton + \HyField@FlagsSubmit + \ifFld@hidden\def\Fld@width{1sp}\fi + \Hy@escapeform\PDFForm@Submit + \HyField@AdvanceAnnotCount + \pdfmark[\MakeButtonField{#2}]{% + pdfmark=/ANN,% + objdef=submit\HyField@TheAnnotCount,% + Raw={\PDFForm@Submit /AP<</N{Submit}/D{SubmitP}>>}% + }% + \HyField@AddToFields{submit}% + \endgroup +} +\def\@Reset[#1]#2{% + \def\Fld@width{\DefaultWidthofReset}% + \def\Fld@height{\DefaultHeightofReset}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofReset,#1% + }% + \leavevmode + \ifHy@pdfa + \Hy@Error{% + PDF/A: Reset action is prohibited% + }\@ehc + \MakeButtonField{#2}% + \else + \HyField@FlagsPushButton + \ifFld@hidden\def\Fld@width{1sp}\fi + \Hy@escapeform\PDFForm@Reset + \HyField@AdvanceAnnotCount + \pdfmark[\MakeButtonField{#2}]{% + pdfmark=/ANN,% + objdef=reset\HyField@TheAnnotCount,% + Raw={\PDFForm@Reset}% + }% + \HyField@AddToFields{reset}% + \fi + \endgroup +}% +\def\@CheckBox[#1]#2{% parameters, label + \def\Fld@name{#2}% + \def\Fld@default{0}% + \begingroup + \def\Fld@width{\DefaultWidthofCheckBox}% + \def\Fld@height{\DefaultHeightofCheckBox}% + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofCheckBox,#1% + }% + \HyField@FlagsCheckBox + \ifFld@hidden\def\Fld@width{1sp}\fi + \HyField@AdvanceAnnotCount + \LayoutCheckField{#2}{% + \leavevmode + \Hy@escapeform\PDFForm@Check + \pdfmark[\MakeCheckField{\Fld@width}{\Fld@height}]{% + pdfmark=/ANN,% + objdef=check\HyField@TheAnnotCount,% + Raw={\PDFForm@Check}% + }% + }% + \HyField@AddToFields{check}% + \endgroup +} +%</pdfmark> +% \end{macrocode} +% +% \subsection{HyperTeX} +% \begin{macrocode} +%<*hypertex> +\def\@Form[#1]{% + \Hy@Message{Sorry, HyperTeX does not support FORMs}% +} +\let\@endForm\ltx@empty +\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum + \Hy@Message{Sorry, HyperTeX does not support FORM gauges}% +} +\def\@TextField[#1]#2{% parameters, label + \Hy@Message{Sorry, HyperTeX does not support FORM text fields}% +} +\def\@CheckBox[#1]#2{% parameters, label + \Hy@Message{Sorry, HyperTeX does not support FORM checkboxes}% +} +\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices + \Hy@Message{Sorry, HyperTeX does not support FORM choice menus}% +} +\def\@PushButton[#1]#2{% parameters, label + \Hy@Message{Sorry, HyperTeX does not support FORM pushbuttons}% +} +\def\@Reset[#1]#2{% + \Hy@Message{Sorry, HyperTeX does not support FORMs}% +} +\def\@Submit[#1]#2{% + \Hy@Message{Sorry, HyperTeX does not support FORMs}% +} +%</hypertex> +% \end{macrocode} +% \subsection{TeX4ht} +% \begin{macrocode} +%<*tex4ht> +\def\@Form[#1]{% + \kvsetkeys{Form}{#1}% + \HCode{<form action="\Form@action" method="\Form@method">}% +} +\def\@endForm{\HCode{</form>}} +\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum + \Hy@Message{Sorry, TeX4ht does not support gauges}% +} +\def\@TextField[#1]#2{% parameters, label + \let\Hy@reserved@a\@empty + \def\Fld@name{#2}% + \let\Fld@default\ltx@empty + \bgroup + \Field@toks={ }% + \kvsetkeys{Field}{#1}% + \HCode{<label for="\Fld@name">#2</label>}% + \ifFld@password + \@@PasswordField + \else + \@@TextField + \fi + \egroup +} +\def\@@PasswordField{% + \HCode{% + <input type="password" % + id="\Fld@name" % + name="\Fld@name" % + \ifFld@hidden type="hidden" \fi + value="\Fld@default" % + \the\Field@toks + >% + }% +} +\def\@@TextField{% + \ifFld@multiline + \HCode{<textarea % + \ifFld@readonly readonly \fi + id="\Fld@name" % + name="\Fld@name" % + \ifFld@hidden type="hidden" \fi + \the\Field@toks>% + }% + \Fld@default + \HCode{</textarea>}% + \else + \HCode{<input type="textbox" % + \ifFld@readonly readonly \fi + id="\Fld@name" % + name="\Fld@name" % + \ifFld@hidden type="hidden" \fi + value="\Fld@default" % + \the\Field@toks>% + }% + \fi +} +\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices + \def\Fld@name{#2}% + \let\Fld@default\ltx@empty + \let\Hy@reserved@a\relax + \begingroup + \expandafter\Fld@findlength#3\\% + \Field@toks={ }% + \kvsetkeys{Field}{#1}% + #2% + \ifFld@radio + \expandafter\@@Radio#3\\% + \else + \expandafter\@@Menu#3\\% + \fi + \endgroup +} +\def\Fld@findlength#1\\{% + \Fld@menulength=0 % + \@for\@curropt:=#1\do{\Hy@StepCount\Fld@menulength}% +} +\def\@@Menu#1\\{% + \HCode{<select size="\the\Fld@menulength" % + name="\Fld@name" % + \the\Field@toks>% + }% + \@for\@curropt:=#1\do{% + \expandafter\Fld@checkequals\@curropt==\\% + \HCode{<option % + \ifx\@curropt\Fld@default selected \fi + value="\@currValue">\@currDisplay</option>% + }% + }% + \HCode{</select>}% +} +\def\@@Radio#1\\{% + \@for\@curropt:=#1\do{% + \expandafter\Fld@checkequals\@curropt==\\% + \HCode{<input type="radio" % + \ifx\@curropt\Fld@default checked \fi + name="\Fld@name" % + value="\@currValue" % + \the\Field@toks>% + }% + \@currDisplay + }% +} +\def\@PushButton[#1]#2{% parameters, label + \def\Fld@name{#2}% + \bgroup + \Field@toks={ }% + \kvsetkeys{Field}{#1}% + \HCode{<input type="button" % + name="\Fld@name" % + value="#2" % + \the\Field@toks>% + }% + \HCode{</button>}% + \egroup +} +\def\@Submit[#1]#2{% + \HCode{<button type="submit">#2</button>}% +} +\def\@Reset[#1]#2{% + \HCode{<button type="reset">#2</button>}% +} +\def\@CheckBox[#1]#2{% parameters, label + \let\Hy@reserved@a\@empty + \def\Fld@name{#2}% + \def\Fld@default{0}% + \bgroup + \Field@toks={ }% + \kvsetkeys{Field}{#1}% + \HCode{<input type="checkbox" % + \ifFld@checked checked \fi + \ifFld@disabled disabled \fi + \ifFld@readonly readonly \fi + name="\Fld@name" % + \ifFld@hidden type="hidden" \fi + value="\Fld@default" % + \the\Field@toks>% + #2% + }% + \egroup +} +%</tex4ht> +% \end{macrocode} +% +% \subsection{pdfTeX} +% \begin{macrocode} +%<*pdftex> +\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum + \Hy@Message{Sorry, pdftex does not support FORM gauges}% +} +\def\MakeFieldObject#1#2{\sbox0{#1}% + \immediate\pdfxform0 % + \expandafter\edef\csname #2Object\endcsname{% + \the\pdflastxform\space 0 R% + }% +% \hbox to 0pt{\hskip-\maxdimen{\pdfrefxform \the\pdflastxform}}% +}% +\let\HyField@afields\ltx@empty +\let\HyField@cofields\ltx@empty +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdflastlink\endcsname\relax + \let\HyField@AddToFields\relax + \PackageInfo{hyperref}{% + You need pdfTeX 1.40.0 for setting the /Fields entry.% + \MessageBreak + Adobe Reader/Acrobat accepts an empty /Field array,% + \MessageBreak + but other PDF viewers might complain% + }% +\else + \let\HyField@AuxAddToFields\ltx@gobble + \let\HyField@AuxAddToCoFields\ltx@gobbletwo + \def\HyField@AfterAuxOpen{\Hy@AtBeginDocument}% +% \end{macrocode} +% Insertion sort for calculation field list. +% In case of equal sort keys (for example, if `calculatesortkey` +% is not used at all) the keys keep document calling order. +% \begin{macrocode} + \def\HyField@ABD@AuxAddToCoFields#1#2{% + \begingroup + \Hy@safe@activestrue + \let\ltx@secondoftwo\relax + \ifx\HyField@cofields\ltx@empty + \xdef\HyField@cofields{% + \ltx@secondoftwo{#1}{ #2 0 R}% + }% + \else + \let\ltx@secondoftwo\relax + \def\HyField@AddCoField##1##2##3{% + \ifx##1\ltx@empty + \ltx@secondoftwo{#1}{ #2 0 R}% + \expandafter\ltx@gobble + \else + \ifnum\pdfstrcmp{##2}{#1}>\ltx@zero + \ltx@secondoftwo{#1}{ #2 0 R}% + \ltx@secondoftwo{##2}{##3}% + \expandafter\expandafter\expandafter\ltx@gobble + \else + \ltx@secondoftwo{##2}{##3}% + \fi + \fi + \HyField@AddCoField + }% + \xdef\HyField@cofields{% + \expandafter\HyField@AddCoField + \HyField@cofields\ltx@empty\ltx@empty\ltx@empty + }% + \fi + \endgroup + }% + \Hy@AtBeginDocument{% + \if@filesw + \immediate\write\@mainaux{% + \string\providecommand\string\HyField@AuxAddToFields[1]{}% + }% + \immediate\write\@mainaux{% + \string\providecommand\string\HyField@AuxAddToCoFields[2]{}% + }% + \fi + \let\HyField@AfterAuxOpen\@firstofone + \def\HyField@AuxAddToFields#1{% + \xdef\HyField@afields{% + \ifx\HyField@afields\@empty + \else + \HyField@afields + \space + \fi + #1 0 R% + }% + }% + \let\HyField@AuxAddToCoFields\HyField@ABD@AuxAddToCoFields + }% + \def\HyField@AddToFields{% + \expandafter\HyField@@AddToFields\expandafter{% + \the\pdflastlink + }% + \ifx\Fld@calculate@code\ltx@empty + \else + \begingroup + \Hy@safe@activestrue + \edef\Hy@temp{% + \endgroup + \if@filesw + \write\@mainaux{% + \string\HyField@AuxAddToCoFields{% + \Fld@calculate@sortkey + }{% + \the\pdflastlink + }% + }% + \fi + }% + \Hy@temp + \fi + }% + \def\HyField@@AddToFields#1{% + \HyField@AfterAuxOpen{% + \if@filesw + \write\@mainaux{% + \string\HyField@AuxAddToFields{#1}% + }% + \fi + }% + }% +\fi +\def\@Form[#1]{% + \@ifundefined{textcolor}{\let\textcolor\@gobble}{}% + \kvsetkeys{Form}{#1}% + \pdf@ifdraftmode{}{% + \Hy@FormObjects + \ifnum\pdftexversion>13 % + \pdfrefobj\OBJ@pdfdocencoding + \pdfrefobj\OBJ@ZaDb + \pdfrefobj\OBJ@Helv + \fi + \AtVeryEndDocument{% + \immediate\pdfobj{% + <<% + /Fields[\HyField@afields]% + \ifx\HyField@cofields\ltx@empty + \else + /CO[\romannumeral-`\Q\HyField@cofields]% + \fi + /DR<<% + /Font<<% + /ZaDb \OBJ@ZaDb\space 0 R% + /Helv \OBJ@Helv\space 0 R% + >>% + >>% + /DA(/Helv 10 Tf 0 g)% + \ifHy@pdfa + \else + \ifHyField@NeedAppearances + /NeedAppearances true% + \fi + \fi + >>% + }% + \edef\OBJ@acroform{\the\pdflastobj}% + \pdfcatalog{/AcroForm \OBJ@acroform\space 0 R}% + }% + }% + \MakeFieldObject{% +% \end{macrocode} +% Same as \verb|\ding{123}| of package pifont. +% \begin{macrocode} + \begingroup + \fontfamily{pzd}% + \fontencoding{U}% + \fontseries{m}% + \fontshape{n}% + \selectfont + \char123 % + \endgroup + }{Ding}% + \MakeFieldObject{% + \fbox{\textcolor{yellow}{\textsf{Submit}}}% + }{Submit}% + \MakeFieldObject{% + \fbox{\textcolor{yellow}{\textsf{SubmitP}}}% + }{SubmitP}% +} +\let\@endForm\ltx@empty +% \end{macrocode} +% \begin{macrocode} +\let\HyAnn@AbsPageLabel\ltx@empty +\let\Fld@pageobjref\ltx@empty +\ltx@IfUndefined{pdfpageref}{% +}{% + \ltx@ifpackageloaded{zref-abspage}{% + \newcount\HyAnn@Count + \HyAnn@Count=\ltx@zero + \def\HyAnn@AbsPageLabel{% + \global\advance\HyAnn@Count by\ltx@one + \zref@labelbyprops{HyAnn@\the\HyAnn@Count}{abspage}% + \zref@refused{HyAnn@\the\HyAnn@Count}% + }% + \def\Fld@pageobjref{% + \zref@ifrefundefined{HyAnn@\the\HyAnn@Count}{% + }{% + \zref@ifrefcontainsprop{HyAnn@\the\HyAnn@Count}{abspage}{% + /P \pdfpageref + \zref@extractdefault{HyAnn@\the\HyAnn@Count}{abspage}{1} % + \space 0 R% + }{% + }% + }% + }% + }{% + }% +} +% \end{macrocode} +% \begin{macrocode} +\def\@TextField[#1]#2{% parameters, label + \def\Fld@name{#2}% + \let\Fld@default\ltx@empty + \let\Fld@value\@empty + \def\Fld@width{\DefaultWidthofText}% + \def\Fld@height{% + \ifFld@multiline + \DefaultHeightofTextMultiline + \else + \DefaultHeightofText + \fi + }% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofText,#1% + }% + \PDFForm@Name + \HyField@FlagsText + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi + \LayoutTextField{#2}{% + \leavevmode + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Text + \pdfstartlink user {\PDFForm@Text}\relax + \MakeTextField{\Fld@width}{\Fld@height}\pdfendlink + \HyField@AddToFields + }% + \endgroup +} +\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices + \def\Fld@name{#2}% + \let\Fld@default\relax + \let\Fld@value\relax + \def\Fld@width{\DefaultWidthofChoiceMenu}% + \def\Fld@height{\DefaultHeightofChoiceMenu}% + \begingroup + \Fld@menulength=0 % + \@tempdima\z@ + \@for\@curropt:=#3\do{% + \expandafter\Fld@checkequals\@curropt==\\% + \Hy@StepCount\Fld@menulength + \settowidth{\@tempdimb}{\@currDisplay}% + \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi + }% + \advance\@tempdima by 15\p@ + \begingroup + \HyField@SetKeys{#1}% + \edef\x{\endgroup + \noexpand\expandafter + \noexpand\HyField@SetKeys + \noexpand\expandafter{% + \expandafter\noexpand\csname DefaultOptionsof% + \ifFld@radio + Radio% + \else + \ifFld@combo + \ifFld@popdown + PopdownBox% + \else + ComboBox% + \fi + \else + ListBox% + \fi + \fi + \endcsname + }% + }\x + \HyField@SetKeys{#1}% + \PDFForm@Name + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\relax + \let\Fld@value\Fld@default + \fi + \LayoutChoiceField{#2}{% + \ifFld@radio + \HyField@FlagsRadioButton + \@@Radio{#3}% + \else + \begingroup + \HyField@FlagsChoice + \ifdim\Fld@width<\@tempdima + \ifdim\@tempdima<1cm\@tempdima1cm\fi + \edef\Fld@width{\the\@tempdima}% + \fi + \ifFld@combo + \else + \@tempdima=\the\Fld@menulength\Fld@charsize + \advance\@tempdima by \Fld@borderwidth bp % + \advance\@tempdima by \Fld@borderwidth bp % + \edef\Fld@height{\the\@tempdima}% + \fi + \@@Listbox{#3}% + \endgroup + \fi + }% + \endgroup +} +\def\@@Radio#1{% + \Fld@listcount=0 % + \EdefEscapeName\Fld@default{\Fld@default}% + \@for\@curropt:=#1\do{% + \expandafter\Fld@checkequals\@curropt==\\% + \EdefEscapeName\@currValue{\@currValue}% + \Hy@StepCount\Fld@listcount + \@currDisplay\space + \leavevmode + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Radio + \pdfstartlink user {% + \PDFForm@Radio + /AP<<% + /N<<% +% \end{macrocode} +% Laurent.Guillope@math.univ-nantes.fr (Laurent Guillope) +% persuades me that this was wrong: +% |/\Fld@name\the\Fld@listcount|. But I leave it here to remind +% me that it is untested. +% \begin{macrocode} + /\@currValue\space \DingObject + >>% + >>% + }% + \relax + \MakeRadioField{\Fld@width}{\Fld@height}\pdfendlink + \ifnum\Fld@listcount=1 % + \HyField@AddToFields + \fi + \space % deliberate space between radio buttons + }% +} +\newcount\Fld@listcount +\def\@@Listbox#1{% + \HyField@PDFChoices{#1}% + \leavevmode + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@List + \pdfstartlink user {\PDFForm@List}\relax + \MakeChoiceField{\Fld@width}{\Fld@height}% + \pdfendlink + \HyField@AddToFields +} +\def\@PushButton[#1]#2{% parameters, label + \def\Fld@name{#2}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofPushButton,#1% + }% + \PDFForm@Name + \ifHy@pdfa + \Hy@Error{% + PDF/A: Push button with JavaScript is prohibited% + }\@ehc + \LayoutPushButtonField{% + \leavevmode + \MakeButtonField{#2}% + }% + \else + \HyField@FlagsPushButton + \ifFld@hidden\def\Fld@width{1sp}\fi + \LayoutPushButtonField{% + \leavevmode + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Push + \pdfstartlink user {\PDFForm@Push}\relax + \MakeButtonField{#2}% + \pdfendlink + \HyField@AddToFields + }% + \fi + \endgroup +} +\def\@Submit[#1]#2{% + \def\Fld@width{\DefaultWidthofSubmit}% + \def\Fld@height{\DefaultHeightofSubmit}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofSubmit,#1% + }% + \HyField@FlagsPushButton + \HyField@FlagsSubmit + \ifFld@hidden\def\Fld@width{1sp}\fi + \leavevmode + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Submit + \pdfstartlink user {% + \PDFForm@Submit + /AP<</N \SubmitObject/D \SubmitPObject>>% + }% + \relax + \MakeButtonField{#2}% + \pdfendlink + \HyField@AddToFields + \endgroup +} +\def\@Reset[#1]#2{% + \def\Fld@width{\DefaultWidthofReset}% + \def\Fld@height{\DefaultHeightofReset}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofReset,#1% + }% + \leavevmode + \ifHy@pdfa + \Hy@Error{% + PDF/A: Reset action is prohibited% + }\@ehc + \MakeButtonField{#2}% + \else + \HyField@FlagsPushButton + \ifFld@hidden\def\Fld@width{1sp}\fi + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Reset + \pdfstartlink user {\PDFForm@Reset}\relax + \MakeButtonField{#2}% + \pdfendlink + \HyField@AddToFields + \fi + \endgroup +} +\def\@CheckBox[#1]#2{% parameters, label + \def\Fld@name{#2}% + \def\Fld@default{0}% + \begingroup + \def\Fld@width{\DefaultWidthofCheckBox}% + \def\Fld@height{\DefaultHeightofCheckBox}% + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofCheckBox,#1% + }% + \PDFForm@Name + \HyField@FlagsCheckBox + \ifFld@hidden\def\Fld@width{1sp}\fi + \LayoutCheckField{#2}{% + \leavevmode + \HyAnn@AbsPageLabel + \Hy@escapeform\PDFForm@Check + \pdfstartlink user {\PDFForm@Check}\relax + \MakeCheckField{\Fld@width}{\Fld@height}% + \pdfendlink + \HyField@AddToFields + }% + \endgroup +} +\def\Hy@FormObjects{% + \pdfobj {% + <<% + /Type/Encoding% + /Differences[% + 24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek% + /ring/tilde % + 39/quotesingle % + 96/grave % + 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin% + /fraction/guilsinglleft/guilsinglright/minus/perthousand% + /quotedblbase/quotedblleft/quotedblright/quoteleft% + /quoteright/quotesinglbase/trademark/fi/fl/Lslash/OE% + /Scaron/Ydieresis/Zcaron/dotlessi/lslash/oe/scaron/zcaron % + 164/currency % + 166/brokenbar % + 168/dieresis/copyright/ordfeminine % + 172/logicalnot/.notdef/registered/macron/degree/plusminus% + /twosuperior/threesuperior/acute/mu % + 183/periodcentered/cedilla/onesuperior/ordmasculine % + 188/onequarter/onehalf/threequarters % + 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE% + /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave% + /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute% + /Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave% + /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls% + /agrave/aacute/acircumflex/atilde/adieresis/aring/ae% + /ccedilla/egrave/eacute/ecircumflex/edieresis/igrave% + /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute% + /ocircumflex/otilde/odieresis/divide/oslash/ugrave% + /uacute/ucircumflex/udieresis/yacute/thorn/ydieresis% + ]% + >>% + }% + \xdef\OBJ@pdfdocencoding{\the\pdflastobj}% + \pdfobj{% + <<% + /Type/Font% + /Subtype/Type1% + /Name/ZaDb% + /BaseFont/ZapfDingbats% + >>% + }% + \xdef\OBJ@ZaDb{\the\pdflastobj}% + \pdfobj{% + <<% + /Type/Font% + /Subtype/Type1% + /Name/Helv% + /BaseFont/Helvetica% + /Encoding \OBJ@pdfdocencoding\space 0 R% + >>% + }% + \xdef\OBJ@Helv{\the\pdflastobj}% + \global\let\Hy@FormObjects\relax +} +%</pdftex> +% \end{macrocode} +% +% \subsection{dvipdfm, xetex} +% D. P. Story adapted the pdf\TeX{} forms part for dvipdfm, of which +% version 0.12.7b or higher is required because of a bug. +% \begin{macrocode} +%<*dvipdfm|xetex> +% \end{macrocode} +% +% \begin{macro}{\@Gauge} +% \begin{macrocode} +\def\@Gauge[#1]#2#3#4{% parameters, label, minimum, maximum + \Hy@Message{Sorry, dvipdfm/XeTeX does not support FORM gauges}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@Form} +% \begin{macrocode} +\def\@Form[#1]{% + \@ifundefined{textcolor}{\let\textcolor\@gobble}{}% + \kvsetkeys{Form}{#1}% + \Hy@FormObjects + \@pdfm@mark{obj @afields []}% + \@pdfm@mark{obj @corder []}% + \@pdfm@mark{% + obj @aform <<% + /Fields @afields% + /DR<<% + /Font<<% + /ZaDb @OBJZaDb% + /Helv @OBJHelv% + >>% + >>% + /DA(/Helv 10 Tf 0 g)% + /CO @corder% + \ifHy@pdfa + \else + \ifHyField@NeedAppearances + /NeedAppearances true% + \fi + \fi + >>% + }% + \@pdfm@mark{put @catalog <</AcroForm @aform>>}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@endForm} +% \begin{macrocode} +\let\@endForm\ltx@empty +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dvipdfm@setdim} +% \cmd{\dvipdfm@setdim} sets dimensions for ann using +% \cmd{\pdfm@box}. +% \begin{macrocode} +\def\dvipdfm@setdim{% + height \the\ht\pdfm@box\space + width \the\wd\pdfm@box\space + depth \the\dp\pdfm@box\space +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyField@AnnotCount} +% \begin{macrocode} +\newcount\HyField@AnnotCount +\HyField@AnnotCount=\z@ +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@AdvanceAnnotCount} +% \begin{macrocode} +\def\HyField@AdvanceAnnotCount{% + \global\advance\HyField@AnnotCount\@ne +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\HyField@TheAnnotCount} +% \begin{macrocode} +\def\HyField@TheAnnotCount{% + \the\HyField@AnnotCount +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Fld@pageobjref} +% \begin{macrocode} +\def\Fld@pageobjref{/P @thispage}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HyField@AddToFields} +% \begin{macrocode} +\def\HyField@AddToFields#1{% + \@pdfm@mark{put @afields @#1\HyField@TheAnnotCount}% + \ifx\Fld@calculate@code\ltx@empty + \else + \@pdfm@mark{put @corder @#1\HyField@TheAnnotCount}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@TextField} +% \begin{macrocode} +\def\@TextField[#1]#2{% parameters, label + \def\Fld@name{#2}% + \let\Fld@default\ltx@empty + \let\Fld@value\@empty + \def\Fld@width{\DefaultWidthofText}% + \def\Fld@height{% + \ifFld@multiline + \DefaultHeightofTextMultiline + \else + \DefaultHeightofText + \fi + }% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofText,#1% + }% + \PDFForm@Name + \HyField@FlagsText + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi + \setbox\pdfm@box=\hbox{% + \MakeTextField{\Fld@width}{\Fld@height}% + }% + \HyField@AdvanceAnnotCount + \LayoutTextField{#2}{% + \leavevmode + \Hy@escapeform\PDFForm@Text + \@pdfm@mark{% + ann @text\HyField@TheAnnotCount\space + \dvipdfm@setdim << \PDFForm@Text >>% + }% + }% + \unhbox\pdfm@box + \HyField@AddToFields{text}% + % record in @afields array + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ChoiceMenu} +% \begin{macrocode} +\def\@ChoiceMenu[#1]#2#3{% parameters, label, choices + \def\Fld@name{#2}% + \let\Fld@default\relax + \let\Fld@value\relax + \def\Fld@width{\DefaultWidthofChoiceMenu}% + \def\Fld@height{\DefaultHeightofChoiceMenu}% + \begingroup + \Fld@menulength=0 % + \@tempdima\z@ + \@for\@curropt:=#3\do{% + \expandafter\Fld@checkequals\@curropt==\\% + \Hy@StepCount\Fld@menulength + \settowidth{\@tempdimb}{\@currDisplay}% + \ifdim\@tempdimb>\@tempdima\@tempdima\@tempdimb\fi + }% + \advance\@tempdima by 15\p@ + \begingroup + \HyField@SetKeys{#1}% + \edef\x{\endgroup + \noexpand\expandafter + \noexpand\HyField@SetKeys + \noexpand\expandafter{% + \expandafter\noexpand\csname DefaultOptionsof% + \ifFld@radio + Radio% + \else + \ifFld@combo + \ifFld@popdown + PopdownBox% + \else + ComboBox% + \fi + \else + ListBox% + \fi + \fi + \endcsname + }% + }\x + \HyField@SetKeys{#1}% + \PDFForm@Name + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\relax + \let\Fld@value\Fld@default + \fi + \LayoutChoiceField{#2}{% + \ifFld@radio + \HyField@FlagsRadioButton + \@@Radio{#3}% + \else + \begingroup + \HyField@FlagsChoice + \ifdim\Fld@width<\@tempdima + \ifdim\@tempdima<1cm\@tempdima1cm\fi + \edef\Fld@width{\the\@tempdima}% + \fi + \ifFld@combo + \else + \@tempdima=\the\Fld@menulength\Fld@charsize + \advance\@tempdima by \Fld@borderwidth bp % + \advance\@tempdima by \Fld@borderwidth bp % + \edef\Fld@height{\the\@tempdima}% + \fi + \@@Listbox{#3}% + \endgroup + \fi + }% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@Radio} +% \begin{macrocode} +\def\@@Radio#1{% + \Fld@listcount=0 % + \EdefEscapeName\Fld@default{\Fld@default}% + \setbox\pdfm@box=\hbox{% + \MakeRadioField{\Fld@width}{\Fld@height}% + }% + \@for\@curropt:=#1\do{% + \expandafter\Fld@checkequals\@curropt==\\% + \EdefEscapeName\@currValue{\@currValue}% + \Hy@StepCount\Fld@listcount + \@currDisplay\space + \leavevmode + \Hy@escapeform\PDFForm@Radio + \ifnum\Fld@listcount=1 % + \HyField@AdvanceAnnotCount + \fi + \@pdfm@mark{% + ann % + \ifnum\Fld@listcount=1 % + @radio\HyField@TheAnnotCount% + \space + \fi + \dvipdfm@setdim + <<% + \PDFForm@Radio + /AP<</N<</\@currValue /null>>>>% + >>% + }% + \unhcopy\pdfm@box\space% deliberate space between radio buttons + \ifnum\Fld@listcount=1 % + \HyField@AddToFields{radio}% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Fld@listcount} +% \begin{macrocode} +\newcount\Fld@listcount +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@Listbox} +% \begin{macrocode} +\def\@@Listbox#1{% + \HyField@PDFChoices{#1}% + \setbox\pdfm@box=\hbox{% + \MakeChoiceField{\Fld@width}{\Fld@height}% + }% + \leavevmode + \Hy@escapeform\PDFForm@List + \HyField@AdvanceAnnotCount + \@pdfm@mark{% + ann @list\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@List>>% + }% + \unhbox\pdfm@box + \HyField@AddToFields{list}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@PushButton} +% \begin{macrocode} +\def\@PushButton[#1]#2{% parameters, label + \def\Fld@name{#2}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofPushButton,#1% + }% + \PDFForm@Name + \ifHy@pdfa + \Hy@Error{% + PDF/A: Push button with JavaScript is prohibited% + }\@ehc + \LayoutPushButtonField{% + \leavevmode + \MakeButtonField{#2}% + }% + \else + \setbox\pdfm@box=\hbox{\MakeButtonField{#2}}% + \HyField@FlagsPushButton + \ifFld@hidden\def\Fld@width{1sp}\fi + \HyField@AdvanceAnnotCount + \LayoutPushButtonField{% + \leavevmode + \Hy@escapeform\PDFForm@Push + \@pdfm@mark{% + ann @push\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@Push>>% + }% + }% + \unhbox\pdfm@box + \HyField@AddToFields{push}% + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@Submit} +% \begin{macrocode} +\def\@Submit[#1]#2{% + \def\Fld@width{\DefaultWidthofSubmit}% + \def\Fld@height{\DefaultHeightofSubmit}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofSubmit,#1% + }% + \HyField@FlagsPushButton + \HyField@FlagsSubmit + \ifFld@hidden\def\Fld@width{1sp}\fi + \setbox\pdfm@box=\hbox{\MakeButtonField{#2}}% + \leavevmode + \Hy@escapeform\PDFForm@Submit + \HyField@AdvanceAnnotCount + \@pdfm@mark{% + ann @submit\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@Submit>>% + }% + \unhbox\pdfm@box% + \HyField@AddToFields{submit}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@Reset} +% \begin{macrocode} +\def\@Reset[#1]#2{% + \def\Fld@width{\DefaultWidthofReset}% + \def\Fld@height{\DefaultHeightofReset}% + \begingroup + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofReset,#1% + }% + \leavevmode + \ifHy@pdfa + \Hy@Error{% + PDF/A: Reset action is prohibited% + }\@ehc + \MakeButtonField{#2}% + \else + \HyField@FlagsPushButton + \ifFld@hidden\def\Fld@width{1sp}\fi + \setbox\pdfm@box=\hbox{\MakeButtonField{#2}}% + \Hy@escapeform\PDFForm@Reset + \HyField@AdvanceAnnotCount + \@pdfm@mark{% + ann @reset\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@Reset>>% + }% + \unhbox\pdfm@box + \HyField@AddToFields{reset}% + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@CheckBox} +% \begin{macrocode} +\def\@CheckBox[#1]#2{% parameters, label + \def\Fld@name{#2}% + \def\Fld@default{0}% + \begingroup + \def\Fld@width{\DefaultWidthofCheckBox}% + \def\Fld@height{\DefaultHeightofCheckBox}% + \expandafter\HyField@SetKeys\expandafter{% + \DefaultOptionsofCheckBox,#1% + }% + \PDFForm@Name + \HyField@FlagsCheckBox + \ifFld@hidden\def\Fld@width{1sp}\fi + \setbox\pdfm@box=\hbox{% + \MakeCheckField{\Fld@width}{\Fld@height}% + }% + \HyField@AdvanceAnnotCount + \LayoutCheckField{#2}{% + \leavevmode + \Hy@escapeform\PDFForm@Check + \@pdfm@mark{% + ann @check\HyField@TheAnnotCount\space + \dvipdfm@setdim + <<\PDFForm@Check>>% + }% + \unhbox\pdfm@box + \HyField@AddToFields{check}% + }% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\def\Hy@FormObjects{% + \@pdfm@mark{obj @OBJpdfdocencoding% + <<% + /Type/Encoding% + /Differences[% + 24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek/ring/tilde % + 39/quotesingle % + 96/grave % + 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin% + /fraction/guilsinglleft/guilsinglright/minus/perthousand% + /quotedblbase/quotedblleft/quotedblright/quoteleft/quoteright% + /quotesinglbase/trademark/fi/fl/Lslash/OE/Scaron/Ydieresis% + /Zcaron/dotlessi/lslash/oe/scaron/zcaron % + 164/currency % + 166/brokenbar % + 168/dieresis/copyright/ordfeminine % + 172/logicalnot/.notdef/registered/macron/degree/plusminus% + /twosuperior/threesuperior/acute/mu % + 183/periodcentered/cedilla/onesuperior/ordmasculine % + 188/onequarter/onehalf/threequarters % + 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE% + /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute% + /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex% + /Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex% + /Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex% + /atilde/adieresis/aring/ae/ccedilla/egrave/eacute% + /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis% + /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis% + /divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute% + /thorn/ydieresis% + ]% + >>% + }% + \@pdfm@mark{obj @OBJZaDb% + <<% + /Type/Font% + /Subtype/Type1% + /Name/ZaDb% + /BaseFont/ZapfDingbats% + >>% + }% + \@pdfm@mark{obj @OBJHelv% + <<% + /Type/Font% + /Subtype/Type1% + /Name/Helv% + /BaseFont/Helvetica% + /Encoding @OBJpdfdocencoding% + >>% + }% + \global\let\Hy@FormObjects\relax +} +%</dvipdfm|xetex> +% \end{macrocode} +% +% \subsection{Common forms part} +% \begin{macrocode} +%<*pdfform> +% \end{macrocode} +% +% \begin{macro}{\Fld@pageobjref} +% \begin{macrocode} +\providecommand*{\Fld@pageobjref}{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hy@escapestring} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdf@escapestring\endcsname\relax + \let\Hy@escapestring\@firstofone + \def\Hy@escapeform#1{% + \ifHy@pdfescapeform + \def\Hy@escapestring##1{% + \noexpand\Hy@escapestring{\noexpand##1}% + }% + \edef\Hy@temp{#1}% + \expandafter\Hy@@escapeform\Hy@temp\Hy@escapestring{}\@nil + \def\Hy@escapestring##1{% + \@ifundefined{Hy@esc@\string##1}{% + ##1% + \ThisShouldNotHappen + }{% + \csname Hy@esc@\string##1\endcsname + }% + }% + \else + \let\Hy@escapestring\@firstofone + \fi + }% + \def\Hy@@escapeform#1\Hy@escapestring#2#3\@nil{% + \ifx\\#3\\% + \else + \expandafter + \Hy@pstringdef\csname Hy@esc@\string#2\endcsname{#2}% + \ltx@ReturnAfterFi{% + \Hy@@escapeform#3\@nil + }% + \fi + }% +\else + \def\Hy@escapeform#1{% + \ifHy@pdfescapeform + \let\Hy@escapestring\pdfescapestring + \else + \let\Hy@escapestring\@firstofone + \fi + }% + \Hy@escapeform{}% +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PDFForm@Name} +% \begin{macrocode} +\def\PDFForm@Name{% + \PDFForm@@Name\Fld@name + \ifx\Fld@altname\relax + \else + \PDFForm@@Name\Fld@altname + \fi + \ifx\Fld@mappingname\relax + \else + \PDFForm@@Name\Fld@mappingname + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PDFForm@@Name} +% \begin{macrocode} +\def\PDFForm@@Name#1{% + \begingroup + \ifnum\Hy@pdfversion<5 % implementation note 117, PDF spec 1.7 + \ifHy@unicode + \Hy@unicodefalse + \fi + \fi + \HyPsd@XeTeXBigCharstrue + \pdfstringdef\Hy@gtemp#1% + \endgroup + \let#1\Hy@gtemp +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Fld@additionalactions} +% \begin{macrocode} +\def\Fld@@additionalactions{% +% \end{macrocode} +% K input (keystroke) format +% \begin{macrocode} + \ifx\Fld@keystroke@code\@empty + \else + /K<</S/JavaScript/JS(\Hy@escapestring{\Fld@keystroke@code})>>% + \fi +% \end{macrocode} +% F display format +% \begin{macrocode} + \ifx\Fld@format@code\@empty + \else + /F<</S/JavaScript/JS(\Hy@escapestring{\Fld@format@code})>>% + \fi +% \end{macrocode} +% V validation +% \begin{macrocode} + \ifx\Fld@validate@code\@empty + \else + /V<</S/JavaScript/JS(\Hy@escapestring{\Fld@validate@code})>>% + \fi +% \end{macrocode} +% C calculation +% \begin{macrocode} + \ifx\Fld@calculate@code\@empty + \else + /C<</S/JavaScript/JS(\Hy@escapestring{\Fld@calculate@code})>>% + \fi +% \end{macrocode} +% Fo receiving the input focus +% \begin{macrocode} + \ifx\Fld@onfocus@code\@empty + \else + /Fo<</S/JavaScript/JS(\Hy@escapestring{\Fld@onfocus@code})>>% + \fi +% \end{macrocode} +% Bl loosing the input focus (blurred) +% \begin{macrocode} + \ifx\Fld@onblur@code\@empty + \else + /Bl<</S/JavaScript/JS(\Hy@escapestring{\Fld@onblur@code})>>% + \fi +% \end{macrocode} +% D pressing the mouse button (down) +% \begin{macrocode} + \ifx\Fld@onmousedown@code\@empty + \else + /D<</S/JavaScript/JS(\Hy@escapestring{\Fld@onmousedown@code})>>% + \fi +% \end{macrocode} +% U releasing the mouse button (up) +% \begin{macrocode} + \ifx\Fld@onmouseup@code\@empty + \else + /U<</S/JavaScript/JS(\Hy@escapestring{\Fld@onmouseup@code})>>% + \fi +% \end{macrocode} +% E cursor enters the annotation's active area. +% \begin{macrocode} + \ifx\Fld@onenter@code\@empty + \else + /E<</S/JavaScript/JS(\Hy@escapestring{\Fld@onenter@code})>>% + \fi +% \end{macrocode} +% X cursor exits the annotation's active area. +% \begin{macrocode} + \ifx\Fld@onexit@code\@empty + \else + /X<</S/JavaScript/JS(\Hy@escapestring{\Fld@onexit@code})>>% + \fi +} +\def\Fld@additionalactions{% + \if-\Fld@@additionalactions-% + \else + \ifHy@pdfa + \else + /AA<<\Fld@@additionalactions>>% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Fld@annotnames} +% \begin{macrocode} +\def\Fld@annotnames{% + /T(\Fld@name)% + \ifx\Fld@altname\relax + \else + /TU(\Fld@altname)% + \fi + \ifx\Fld@mappingname\relax + \else + /TM(\Fld@mappingname)% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PDFForm@Check} +% \begin{macrocode} +\def\PDFForm@Check{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Btn% + \Fld@flags + /Q \Fld@align + /BS<</W \Fld@borderwidth /S/\Fld@borderstyle>>% + /AP<< /N <</Yes<<>>>> >> %new string /Yes is from below + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + \ifx\Fld@bcolor\relax + \else + /BG[\Fld@bcolor]% + \fi + /CA(\Hy@escapestring{\Fld@cbsymbol})% + >>% + /DA(/ZaDb \strip@pt\Fld@charsize\space Tf% + \ifx\Fld@color\@empty\else\space\Fld@color\fi)% + /H/P% + \ifFld@checked /V/Yes/AS/Yes\else /V/Off/AS/Off\fi + \Fld@additionalactions +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PDFForm@Push} +% \begin{macrocode} +\ifHy@pdfa +\else + \def\PDFForm@Push{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Btn% + \Fld@flags + /H/P% + /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + >>% + \fi + /A<</S/JavaScript/JS(\Hy@escapestring{\Fld@onclick@code})>>% + \Fld@additionalactions + }% +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PDFForm@List} +% \begin{macrocode} +\def\PDFForm@List{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Ch% + \Fld@flags + /Q \Fld@align + /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \ifx\fld@bcolor\relax \else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + \ifx\Fld@bcolor\relax + \else + /BG[\Fld@bcolor]% + \fi + >>% + \fi + /DA(/Helv \strip@pt\Fld@charsize\space Tf% + \ifx\Fld@color\@empty\else\space\Fld@color\fi)% + \Fld@choices + \Fld@additionalactions +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PDFForm@Radio} +% \begin{macrocode} +\def\PDFForm@Radio{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Btn% + \Fld@flags + /H/P% + /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>% + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + \ifx\Fld@bcolor\relax + \else + /BG[\Fld@bcolor]% + \fi + /CA(\Hy@escapestring{\Fld@radiosymbol})% + >>% + /DA(/ZaDb \strip@pt\Fld@charsize\space Tf% + \ifx\Fld@color\@empty\else\space\Fld@color\fi)% +% \end{macrocode} +%^^A \ifx\@currValue\Fld@default %old code +%^^A /V/\Fld@default +%^^A /DV/\Fld@default +%^^A \else +%^^A /V/Off% +%^^A /DV/Off% +%^^A \fi +% New code, the default value is used for all buttons +% \begin{macrocode} + \ifx\Fld@default\@empty + /V/Off% + /DV/Off% + \else + /V/\Fld@default + /DV/\Fld@default + \fi + \Fld@additionalactions +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PDFForm@Text} +% \begin{macrocode} +\def\PDFForm@Text{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Tx% + \Fld@flags + /Q \Fld@align + /BS<</W \Fld@borderwidth\space /S /\Fld@borderstyle>>% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \ifx\Fld@bcolor\relax \else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + \ifx\Fld@bcolor\relax + \else + /BG[\Fld@bcolor]% + \fi + >>% + \fi + /DA(/Helv \strip@pt\Fld@charsize\space Tf% + \ifx\Fld@color\@empty\else\space\Fld@color\fi)% + /DV(\Hy@escapestring{\Fld@default})% + /V(\Hy@escapestring{\Fld@value})% + \Fld@additionalactions + \ifnum\Fld@maxlen>\z@/MaxLen \Fld@maxlen \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PDFForm@Submit} +% \begin{macrocode} +\def\PDFForm@Submit{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Btn% + \Fld@flags + /H/P% + /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + >>% + \fi + /A<<% + /S/SubmitForm% + /F<<% + /FS/URL% + /F(\Hy@escapestring{\Form@action})% + >>% + \Fld@submitflags + >>% + \Fld@additionalactions +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PDFForm@Reset} +% \begin{macrocode} +\ifHy@pdfa +\else + \def\PDFForm@Reset{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Btn% + \Fld@flags + /H/P% + /DA(/Helv \strip@pt\Fld@charsize\space Tf 0 0 1 rg)% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi +% /CA (Clear) +% /AC (Done) + >>% + \fi + /BS<</W \Fld@borderwidth/S/\Fld@borderstyle>>% + /A<</S/ResetForm>>% + \Fld@additionalactions + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +%</pdfform> +%<*package> +% \end{macrocode} +% +% \section{Bookmarks in the PDF file} +% This was originally developed by Yannis Haralambous +% (it was the separate |repere.sty|); it needed +% the |repere| or |makebook.pl| post-processor to work properly. Now +% redundant, as it is done entirely in \LaTeX{} macros. +% +% To write out the current section title, and its rationalized number, +% we have to intercept the |\@sect| command, which is rather +% dangerous. But how else to see the information we need? +% We do the \emph{same} for |\@ssect|, giving anchors to +% unnumbered sections. This allows things like bibliographies +% to get bookmarks when used with a manual |\addcontentsline| +% \begin{macrocode} +\def\phantomsection{% + \Hy@MakeCurrentHrefAuto{section*}% + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% +} +%</package> +% \end{macrocode} +% +% \subsection{Bookmarks} +% \begin{macrocode} +%<*outlines> +% \end{macrocode} +% +% This section was written by Heiko Oberdiek; the code replaces +% an earlier version by David Carlisle. +% +% The first part of bookmark code is in section \ref{sec:pdfstring}. +% Further documentation is available as paper and slides of the +% talk, that Heiko Oberdiek has given at the EuroTeX'99 meating +% in Heidelberg. See |paper.pdf| and |slides.pdf| in the +% |doc| directory of hyperref. +% +% When using the right-to-left typesetting based on \eTeX, the order +% of the |\BOOKMARK| commands written to the |\@outlinefile| could +% appear wrong, because of mis-feature of \eTeX's implementation (that +% it processes the shipped out lines left-to-right, instead of the +% order in which they appear in the document). The wrong order will +% appear when the file contains two bookmarks on the same line typeset +% right-to-left. +% +% To work around this problem, the |bookmark@seq@number| counter is +% used to write the bookmark's sequential number into a comment in the +% |\@outlinefile|, which could be used to post-process it to achieve +% the proper ordering of |\BOOKMARK| commands in that file. +% +% \begin{macrocode} +\def\Hy@writebookmark#1#2#3#4#5{% + % section number, text, label, level, file + \ifx\WriteBookmarks\relax% + \else + \ifnum#4>\Hy@bookmarksdepth\relax + \else + \@@writetorep{#1}{#2}{#3}{#4}{#5}% + \fi + \fi +} +\def\Hy@currentbookmarklevel{0} +\def\Hy@numberline#1{#1 } +\def\@@writetorep#1#2#3#4#5{% + \begingroup + \edef\Hy@tempa{#5}% + \ifx\Hy@tempa\Hy@bookmarkstype + \edef\Hy@level{#4}% + \ifx\Hy@levelcheck Y% + \@tempcnta\Hy@level\relax + \advance\@tempcnta by -1 % + \ifnum\Hy@currentbookmarklevel<\@tempcnta + \advance\@tempcnta by -\Hy@currentbookmarklevel\relax + \advance\@tempcnta by 1 % + \Hy@Warning{% + Difference (\the\@tempcnta) between bookmark levels is % + greater \MessageBreak than one, level fixed% + }% + \@tempcnta\Hy@currentbookmarklevel + \advance\@tempcnta by 1 % + \edef\Hy@level{\the\@tempcnta}% + \fi + \else + \global\let\Hy@levelcheck Y% + \fi + \global\let\Hy@currentbookmarklevel\Hy@level + \@tempcnta\Hy@level\relax + \expandafter\xdef\csname Parent\Hy@level\endcsname{#3}% + \advance\@tempcnta by -1 % + \edef\Hy@tempa{#3}% + \edef\Hy@tempb{\csname Parent\the\@tempcnta\endcsname}% + \ifx\Hy@tempa\Hy@tempb + \Hy@Warning{% + The anchor of a bookmark and its parent's must not% + \MessageBreak be the same. Added a new anchor% + }% + \phantomsection + \fi + \ifHy@bookmarksnumbered + \let\numberline\Hy@numberline + \let\booknumberline\Hy@numberline + \let\partnumberline\Hy@numberline + \let\chapternumberline\Hy@numberline + \else + \let\numberline\@gobble + \let\booknumberline\@gobble + \let\partnumberline\@gobble + \let\chapternumberline\@gobble + \fi + \HyPsd@XeTeXBigCharstrue + \pdfstringdef\Hy@tempa{#2}% + \HyPsd@SanitizeForOutFile\Hy@tempa + \if@filesw + \stepcounter{bookmark@seq@number}% + \@ifundefined{@outlinefile}{% + }{% + \protected@write\@outlinefile{}{% + \protect\BOOKMARK + [\Hy@level][\@bookmarkopenstatus{\Hy@level}]{#3}% + {\Hy@tempa}{\Hy@tempb}% + \@percentchar\space\thebookmark@seq@number + }% + }% + \fi + \fi + \endgroup +} +\newcounter{bookmark@seq@number} +% \end{macrocode} +% \begin{macrocode} +\begingroup + \lccode`(=`{% + \lccode`)=`}% + \lccode`1=\z@ + \lccode`2=\z@ + \lccode`3=\z@ + \lccode`5=\z@ + \lccode`7=\z@ + \lccode`\#=\z@ + \lccode`\`=\z@ + \lccode`\{=\z@ + \lccode`\}=\z@ +\lowercase{% + \endgroup + \def\HyPsd@SanitizeForOutFile#1{% + \@onelevel@sanitize\Hy@tempa + \escapechar`\\% + \edef\Hy@tempa{% + \expandafter\HyPsd@SanitizeOut@BraceLeft\Hy@tempa(\@nil + }% + \edef\Hy@tempa{% + \expandafter\HyPsd@SanitizeOut@BraceRight\Hy@tempa)\@nil + }% + }% + \def\HyPsd@SanitizeOut@BraceLeft#1(#2\@nil{% + #1% + \ifx\\#2\\% + \expandafter\ltx@gobble + \else + \expandafter\ltx@firstofone + \fi + {% + \string\173% + \HyPsd@SanitizeOut@BraceLeft#2\@nil + }% + }% + \def\HyPsd@SanitizeOut@BraceRight#1)#2\@nil{% + #1% + \ifx\\#2\\% + \expandafter\ltx@gobble + \else + \expandafter\ltx@firstofone + \fi + {% + \string\175% + \HyPsd@SanitizeOut@BraceRight#2\@nil + }% + }% +} +% \end{macrocode} +% In the call of \cmd{\BOOKMARK} the braces around \verb|#4| +% are omitted, because it is not likely, that the level number +% contains \verb|]|. +% \begin{macrocode} +\newcommand{\currentpdfbookmark}{% + \pdfbookmark[\Hy@currentbookmarklevel]% +} +\newcommand{\subpdfbookmark}{% + \@tempcnta\Hy@currentbookmarklevel + \Hy@StepCount\@tempcnta + \expandafter\pdfbookmark\expandafter[\the\@tempcnta]% +} +\newcommand{\belowpdfbookmark}[2]{% + \@tempcnta\Hy@currentbookmarklevel + \Hy@StepCount\@tempcnta + \expandafter\pdfbookmark\expandafter[\the\@tempcnta]{#1}{#2}% + \advance\@tempcnta by -1 % + \xdef\Hy@currentbookmarklevel{\the\@tempcnta}% +} +% \end{macrocode} +% Tobias Oetiker rightly points out that we need a way to +% force a bookmark entry. So we introduce |\pdfbookmark|, +% with two parameters, the title, and a symbolic name. +% By default this is at level 1, but we can reset that with the +% optional first argument. +% \begin{macrocode} +\renewcommand\pdfbookmark[3][0]{% + \Hy@writebookmark{}{#2}{#3.#1}{#1}{toc}% + \hyper@anchorstart{#3.#1}\hyper@anchorend +} +\def\BOOKMARK{% + \@ifnextchar[{\@BOOKMARK}{\@@BOOKMARK[1][-]}% +} +\def\@BOOKMARK[#1]{% + \@ifnextchar[{\@@BOOKMARK[{#1}]}{\@@BOOKMARK[{#1}][-]}% +} +% \end{macrocode} +% The macros for calculating structure of outlines +% are derived from those by Petr Olsak used in the texinfopdf macros. +% +% \subsubsection{Rerun warning} +% +% \begin{macro}{\Hy@OutlineRerunCheck} +% \begin{macrocode} +\RequirePackage{rerunfilecheck}[2009/12/10] +\def\Hy@OutlineRerunCheck{% + \RerunFileCheck{\jobname.out}{% + \immediate\closeout\@outlinefile + }{% + Rerun to get outlines right\MessageBreak + or use package `bookmark'% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Driver stuff} +% +% The VTEX section was written originally by VTEX, but then +% amended by Denis Girou (\Email{denis.girou@idris.fr}), +% then by by Taco Hoekwater (\Email{taco.hoekwater@wkap.nl}. The problem +% is that VTEX, with its close integration of the PDF backend, does +% look at the contents of bookmarks, escaping |\| and the like. +% \begin{macrocode} +%<*vtex> +% \end{macrocode} +% \begin{macrocode} +\newcount\@serial@counter\@serial@counter=1\relax +% \end{macrocode} +% \begin{macro}{\hv@pdf@char} +% Plain octal codes doesn't work with versions below 6.50. +% So for early versions hex numbers have to be used. +% It would be possible to program this instead of the +% large |\ifcase|, but I'm too lazy to sort that out now. +% \begin{macrocode} +\begingroup + \catcode`\'=12 % + \ifnum\Hy@VTeXversion<650 % + \catcode`\"=12 % + \gdef\hv@pdf@char#1#2#3{% + \char + \ifcase'#1#2#3 % + "00\or"01\or"02\or"03\or"04\or"05\or"06\or"07% + \or"08\or"09\or"0A\or"0B\or"0C\or"0D\or"0E\or"0F% + \or"10\or"11\or"12\or"13\or"14\or"15\or"16\or"17% + \or"18\or"19\or"1A\or"1B\or"1C\or"1D\or"1E\or"1F% + \or"20\or"21\or"22\or"23\or"24\or"25\or"26\or"27% + \or"28\or"29\or"2A\or"2B\or"2C\or"2D\or"2E\or"2F% + \or"30\or"31\or"32\or"33\or"34\or"35\or"36\or"37% + \or"38\or"39\or"3A\or"3B\or"3C\or"3D\or"3E\or"3F% + \or"40\or"41\or"42\or"43\or"44\or"45\or"46\or"47% + \or"48\or"49\or"4A\or"4B\or"4C\or"4D\or"4E\or"4F% + \or"50\or"51\or"52\or"53\or"54\or"55\or"56\or"57% + \or"58\or"59\or"5A\or"5B\or"5C\or"5D\or"5E\or"5F% + \or"60\or"61\or"62\or"63\or"64\or"65\or"66\or"67% + \or"68\or"69\or"6A\or"6B\or"6C\or"6D\or"6E\or"6F% + \or"70\or"71\or"72\or"73\or"74\or"75\or"76\or"77% + \or"78\or"79\or"7A\or"7B\or"7C\or"7D\or"7E\or"7F% + \or"80\or"81\or"82\or"83\or"84\or"85\or"86\or"87% + \or"88\or"89\or"8A\or"8B\or"8C\or"8D\or"8E\or"8F% + \or"90\or"91\or"92\or"93\or"94\or"95\or"96\or"97% + \or"98\or"99\or"9A\or"9B\or"9C\or"9D\or"9E\or"9F% + \or"A0\or"A1\or"A2\or"A3\or"A4\or"A5\or"A6\or"A7% + \or"A8\or"A9\or"AA\or"AB\or"AC\or"AD\or"AE\or"AF% + \or"B0\or"B1\or"B2\or"B3\or"B4\or"B5\or"B6\or"B7% + \or"B8\or"B9\or"BA\or"BB\or"BC\or"BD\or"BE\or"BF% + \or"C0\or"C1\or"C2\or"C3\or"C4\or"C5\or"C6\or"C7% + \or"C8\or"C9\or"CA\or"CB\or"CC\or"CD\or"CE\or"CF% + \or"D0\or"D1\or"D2\or"D3\or"D4\or"D5\or"D6\or"D7% + \or"D8\or"D9\or"DA\or"DB\or"DC\or"DD\or"DE\or"DF% + \or"E0\or"E1\or"E2\or"E3\or"E4\or"E5\or"E6\or"E7% + \or"E8\or"E9\or"EA\or"EB\or"EC\or"ED\or"EE\or"EF% + \or"F0\or"F1\or"F2\or"F3\or"F4\or"F5\or"F6\or"F7% + \or"F8\or"F9\or"FA\or"FB\or"FC\or"FD\or"FE\or"FF% + \fi + }% + \else + \gdef\hv@pdf@char{\char'}% + \fi +\endgroup +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@BOOKMARK} +% \begin{macrocode} +\def\@@BOOKMARK[#1][#2]#3#4#5{% + \expandafter\edef\csname @count@#3\endcsname{% + \the\@serial@counter + }% + \edef\@mycount{\the\@serial@counter}% + \Hy@StepCount\@serial@counter + \edef\@parcount{% + \expandafter\ifx\csname @count@#5\endcsname\relax + 0% + \else + \csname @count@#5\endcsname + \fi + }% + \immediate\special{% + !outline \HyperDestNameFilter{#3};p=\@parcount,i=\@mycount,% + s=\ifx#2-c\else o\fi,t=#4% + }% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ReadBookmarks} +% \begin{macrocode} +\def\ReadBookmarks{% + \begingroup + \def\0{\hv@pdf@char 0}% + \def\1{\hv@pdf@char 1}% + \def\2{\hv@pdf@char 2}% + \def\3{\hv@pdf@char 3}% + \def\({(}% + \def\){)}% + \def\do##1{% + \ifnum\catcode`##1=\active + \@makeother##1% + \else + \ifnum\catcode`##1=6 % + \@makeother##1% + \fi + \fi + }% + \dospecials + \Hy@safe@activestrue + \InputIfFileExists{\jobname.out}{}{}% + \endgroup + \ifx\WriteBookmarks\relax + \else + \if@filesw + \newwrite\@outlinefile + \Hy@OutlineRerunCheck + \immediate\openout\@outlinefile=\jobname.out\relax + \ifHy@typexml + \immediate\write\@outlinefile{<relaxxml>\relax}% + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +%</vtex> +% \end{macrocode} +% \begin{macrocode} +%<*!vtex> +\def\ReadBookmarks{% + \pdf@ifdraftmode{}{% + \begingroup + \def\do##1{% + \ifnum\catcode`##1=\active + \@makeother##1% + \else + \ifnum\catcode`##1=6 % + \@makeother##1% + \fi + \fi + }% + \dospecials + \Hy@safe@activestrue + \escapechar=`\\% + \def\@@BOOKMARK[##1][##2]##3##4##5{% + \calc@bm@number{##5}% + }% + \InputIfFileExists{\jobname.out}{}{}% + \ifx\WriteBookmarks\relax + \global\let\WriteBookmarks\relax + \fi + \def\@@BOOKMARK[##1][##2]##3##4##5{% + \def\Hy@temp{##4}% +%<*pdftex> + \Hy@pstringdef\Hy@pstringName{\HyperDestNameFilter{##3}}% + \Hy@OutlineName{}\Hy@pstringName{% + ##2\check@bm@number{##3}% + }{% + \expandafter\strip@prefix\meaning\Hy@temp + }% +%</pdftex> +%<*pdfmark> + \pdfmark{% + pdfmark=/OUT,% + Count={##2\check@bm@number{##3}},% + Dest={##3},% + Title=\expandafter\strip@prefix\meaning\Hy@temp + }% +%</pdfmark> +%<*dvipdfm|xetex> + \Hy@pstringdef\Hy@pstringName{\HyperDestNameFilter{##3}}% + \@pdfm@mark{% + outline \ifHy@DvipdfmxOutlineOpen + [% + \ifnum##21>\z@ + \else + -% + \fi + ] % + \fi + ##1<<% + /Title(\expandafter\strip@prefix\meaning\Hy@temp)% + /A<<% + /S/GoTo% + /D(\Hy@pstringName)% + >>% + >>% + }% +%</dvipdfm|xetex> + }% + \begingroup + \def\WriteBookmarks{0}% + \InputIfFileExists{\jobname.out}{}{}% + \endgroup + %{\escapechar\m@ne\InputIfFileExists{\jobname.out}{}{}}% + \endgroup + }% + \ifx\WriteBookmarks\relax + \else + \if@filesw + \newwrite\@outlinefile + \Hy@OutlineRerunCheck + \immediate\openout\@outlinefile=\jobname.out\relax + \ifHy@typexml + \immediate\write\@outlinefile{<relaxxml>\relax}% + \fi + \fi + \fi +} +%<*pdftex> +\def\Hy@OutlineName#1#2#3#4{% + \pdfoutline goto name{#2}count#3{#4}% +} +%</pdftex> +\def\check@bm@number#1{% + \expandafter\ifx\csname B_#1\endcsname\relax + 0% + \else + \csname B_#1\endcsname + \fi +} +\def\calc@bm@number#1{% + \@tempcnta=\check@bm@number{#1}\relax + \advance\@tempcnta by 1 % + \expandafter\xdef\csname B_#1\endcsname{\the\@tempcnta}% +} +%</!vtex> +% \end{macrocode} +% +% \begin{macrocode} +\ifHy@implicit +\else + \expandafter\endinput +\fi +% \end{macrocode} +% +% \begin{macrocode} +%</outlines> +%<*outlines|hypertex> +% \end{macrocode} +% \begin{macrocode} +\newlength\Hy@SectionHShift +\def\Hy@SectionAnchorHref#1{% + \ifx\protect\@typeset@protect + \Hy@@SectionAnchor{#1}% + \fi +} +\DeclareRobustCommand*{\Hy@@SectionAnchor}[1]{% + \leavevmode + \hbox to 0pt{% + \kern-\Hy@SectionHShift + \Hy@raisedlink{% + \hyper@anchorstart{#1}\hyper@anchorend + }% + \hss + }% +} +\let\H@old@ssect\@ssect +\def\@ssect#1#2#3#4#5{% + \Hy@MakeCurrentHrefAuto{section*}% + \setlength{\Hy@SectionHShift}{#1}% + \begingroup + \toks@{\H@old@ssect{#1}{#2}{#3}{#4}}% + \toks\tw@\expandafter{% + \expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}% + #5% + }% + \edef\x{\endgroup + \the\toks@{\the\toks\tw@}% + }\x +} +\let\H@old@schapter\@schapter +\def\@schapter#1{% + \begingroup + \let\@mkboth\@gobbletwo + \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \endgroup + \H@old@schapter{#1}% +} +% \end{macrocode} +% If there is no chapter number (\cmd{\frontmatter} or +% \cmd{\backmatter}) then the counting by |\refstepcounter{chapter}| +% is not executed, so there will be no destination for \cmd{addcontentsline}. +% So \cmd{\@chapter} is overloaded to avoid this: +% \begin{macrocode} +\ltx@IfUndefined{@chapter}{}{% + \let\Hy@org@chapter\@chapter + \def\@chapter{% + \def\Hy@next{% + \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + }% + \ifnum\c@secnumdepth>\m@ne + \ltx@IfUndefined{if@mainmatter}% + \iftrue{\csname if@mainmatter\endcsname}% + \let\Hy@next\relax + \fi + \fi + \Hy@next + \Hy@org@chapter + }% +} +% \end{macrocode} +% \begin{macrocode} +\let\H@old@part\@part +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname chapter\endcsname\relax + \let\Hy@secnum@part\z@ +\else + \let\Hy@secnum@part\m@ne +\fi +\def\@part{% + \ifnum\Hy@secnum@part>\c@secnumdepth + \phantomsection + \fi + \H@old@part +} +% \end{macrocode} +% \begin{macrocode} +\let\H@old@spart\@spart +\def\@spart#1{% + \Hy@MakeCurrentHrefAuto{part*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \H@old@spart{#1}% +} +\let\H@old@sect\@sect +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \Hy@MakeCurrentHrefAuto{section*}% + \setlength{\Hy@SectionHShift}{#3}% + \begingroup + \toks@{\H@old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]}% + \toks\tw@\expandafter{% + \expandafter\Hy@SectionAnchorHref\expandafter{\@currentHref}% + #8% + }% + \edef\x{\endgroup + \the\toks@{\the\toks\tw@}% + }\x + }{% + \H@old@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}% + }% +} +% \end{macrocode} +% \begin{macrocode} +%</outlines|hypertex> +%<*outlines> +% \end{macrocode} +% +% \begin{macrocode} +\expandafter\def\csname Parent-4\endcsname{} +\expandafter\def\csname Parent-3\endcsname{} +\expandafter\def\csname Parent-2\endcsname{} +\expandafter\def\csname Parent-1\endcsname{} +\expandafter\def\csname Parent0\endcsname{} +\expandafter\def\csname Parent1\endcsname{} +\expandafter\def\csname Parent2\endcsname{} +\expandafter\def\csname Parent3\endcsname{} +\expandafter\def\csname Parent4\endcsname{} +% \end{macrocode} +% +% \begin{macrocode} +%</outlines> +% \end{macrocode} +% +% \section{Compatibility with koma-script classes} +% +% \begin{macrocode} +%<*outlines|hypertex> +% \end{macrocode} +% +% Hard-wire in an unpleasant over-ride of komascript `scrbook' class +% for Tobias Isenberg (\Email{Tobias.Isenberg@gmx.de}). +% With version 6.71b the hack is also applied to `scrreprt' class +% and is removed for koma-script versions since 2001/01/01, +% because Markus Kohm supports hyperref in komascript. +% \begin{macrocode} +\def\Hy@tempa{% + \def\@addchap[##1]##2{% + \typeout{##2}% + \if@twoside + \@mkboth{##1}{}% + \else + \@mkboth{}{##1}% + \fi + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \Hy@MakeCurrentHrefAuto{\Hy@chapapp*}% + \Hy@raisedlink{% + \hyper@anchorstart{\@currentHref}\hyper@anchorend + }% + \if@twocolumn + \@topnewpage[\@makeschapterhead{##2}]% + \else + \@makeschapterhead{##2}% + \@afterheading + \fi + \addcontentsline{toc}{chapter}{##1}% + }% +} +\@ifclassloaded{scrbook}{% + \@ifclasslater{scrbook}{2001/01/01}{% + \let\Hy@tempa\@empty + }{}% +}{% + \@ifclassloaded{scrreprt}{% + \@ifclasslater{scrreprt}{2001/01/01}{% + \let\Hy@tempa\@empty + }{}% + }{% + \let\Hy@tempa\@empty + }% +}% +\Hy@tempa +% \end{macrocode} +% +% \begin{macrocode} +%</outlines|hypertex> +% \end{macrocode} +% +% \section{Encoding definition files for encodings of PDF strings} +% This was contributed by +% Heiko Oberdiek. +% +% \subsection{PD1 encoding} +% \begin{macrocode} +%<*pd1enc> +\DeclareFontEncoding{PD1}{}{} +% \end{macrocode} +% Accents +% \begin{macrocode} +\DeclareTextAccent{\`}{PD1}{\textasciigrave} +\DeclareTextAccent{\'}{PD1}{\textacute} +\DeclareTextAccent{\^}{PD1}{\textasciicircum} +\DeclareTextAccent{\~}{PD1}{\texttilde} +\DeclareTextAccent{\"}{PD1}{\textasciidieresis} +\DeclareTextAccent{\r}{PD1}{\textring} +\DeclareTextAccent{\v}{PD1}{\textasciicaron} +\DeclareTextAccent{\.}{PD1}{\textdotaccent} +\DeclareTextAccent{\c}{PD1}{\textcedilla} +\DeclareTextAccent{\=}{PD1}{\textasciimacron} +\DeclareTextAccent{\b}{PD1}{\textmacronbelow} +\DeclareTextAccent{\d}{PD1}{\textdotbelow} +\DeclareTextCompositeCommand{\`}{PD1}{\@empty}{\textasciigrave} +\DeclareTextCompositeCommand{\'}{PD1}{\@empty}{\textacute} +\DeclareTextCompositeCommand{\^}{PD1}{\@empty}{\textasciicircum} +\DeclareTextCompositeCommand{\~}{PD1}{\@empty}{\texttilde} +\DeclareTextCompositeCommand{\"}{PD1}{\@empty}{\textasciidieresis} +\DeclareTextCompositeCommand{\r}{PD1}{\@empty}{\textring} +\DeclareTextCompositeCommand{\v}{PD1}{\@empty}{\textasciicaron} +\DeclareTextCompositeCommand{\.}{PD1}{\@empty}{\textdotaccent} +\DeclareTextCompositeCommand{\c}{PD1}{\@empty}{\textcedilla} +\DeclareTextCompositeCommand{\=}{PD1}{\@empty}{\textasciimacron} +\DeclareTextCompositeCommand{\b}{PD1}{\@empty}{\textmacronbelow} +\DeclareTextCompositeCommand{\d}{PD1}{\@empty}{\textdotbelow} +\DeclareTextCompositeCommand{\`}{PD1}{\ }{\textasciigrave} +\DeclareTextCompositeCommand{\'}{PD1}{\ }{\textacute} +\DeclareTextCompositeCommand{\^}{PD1}{\ }{\textasciicircum} +\DeclareTextCompositeCommand{\~}{PD1}{\ }{\texttilde} +\DeclareTextCompositeCommand{\"}{PD1}{\ }{\textasciidieresis} +\DeclareTextCompositeCommand{\r}{PD1}{\ }{\textring} +\DeclareTextCompositeCommand{\v}{PD1}{\ }{\textasciicaron} +\DeclareTextCompositeCommand{\.}{PD1}{\ }{\textdotaccent} +\DeclareTextCompositeCommand{\c}{PD1}{\ }{\textcedilla} +\DeclareTextCompositeCommand{\=}{PD1}{\ }{\textasciimacron} +\DeclareTextCompositeCommand{\b}{PD1}{\ }{\textmacronbelow} +\DeclareTextCompositeCommand{\d}{PD1}{\ }{\textdotbelow} +\DeclareTextCommand{\k}{PD1}[1]{\TextSymbolUnavailable{\k{#1}}#1} +\DeclareTextCommand{\t}{PD1}[1]{\TextSymbolUnavailable{\t{#1}}#1} +\DeclareTextCommand{\newtie}{PD1}[1]{% + \TextSymbolUnavailable{\newtie{#1}}#1% +} +% \end{macrocode} +% Special white space escape characters +% not for use in bookmarks but for other PDF strings. +% \begin{macrocode} +% U+0009 (CHARACTER TABULATION) +\DeclareTextCommand{\textHT}{PD1}{\011}% U+0009 +% U+000A (LINE FEED) +\DeclareTextCommand{\textLF}{PD1}{\012}% U+000A +% U+000D (CARRIAGE RETURN) +\DeclareTextCommand{\textCR}{PD1}{\015}% U+000D +% \end{macrocode} +% Accent glyph names +% \begin{macrocode} +% U+02D8 BREVE; breve +\DeclareTextCommand{\textasciibreve}{PD1}{\030}% U+02D8 +% U+02C7 CARON; caron +\DeclareTextCommand{\textasciicaron}{PD1}{\031}% U+02C7 +% U+02C6 MODIFIER LETTER CIRCUMFLEX ACCENT; circumflex +\DeclareTextCommand{\textcircumflex}{PD1}{\032}% U+02C6 +% U+02D9 DOT ABOVE; dotaccent +\DeclareTextCommand{\textdotaccent}{PD1}{\033}% U+02D9 +% U+02DD DOUBLE ACUTE ACCENT; hungarumlaut +\DeclareTextCommand{\texthungarumlaut}{PD1}{\034}% U+02DD +% U+02DB OGONEK; ogonek +\DeclareTextCommand{\textogonek}{PD1}{\035}% U+02DB +% U+02DA RING ABOVE; ring +\DeclareTextCommand{\textring}{PD1}{\036}% U+02DA +% U+02DC SMALL TILDE; ilde, *tilde +\DeclareTextCommand{\texttilde}{PD1}{\037}% U+02DC +% \end{macrocode} +% \cs{040}: U+0020 SPACE; *space, spacehackarabic\\ +% \cs{041}: U+0021 EXCLAMATION MARK; exclam +% \begin{macrocode} +% U+0022 QUOTATION MARK; quotedbl +\DeclareTextCommand{\textquotedbl}{PD1}{"}% \042 U+0022 +% U+0023 NUMBER SIGN; numbersign +\DeclareTextCommand{\textnumbersign}{PD1}{\043}% U+0023 +% U+0024 DOLLAR SIGN; dollar +\DeclareTextCommand{\textdollar}{PD1}{\044}% U+0024 +% U+0025 PERCENT SIGN; percent +\DeclareTextCommand{\textpercent}{PD1}{\045}% U+0025 +% U+0026 AMPERSAND; ampersand +\DeclareTextCommand{\textampersand}{PD1}{\046}% U+0026 +% \end{macrocode} +% \cs{047}: U+0027 APOSTROPHE; quotesingle\\ +% \begin{macrocode} +% U+0028 LEFT PARENTHESIS; parenleft +\DeclareTextCommand{\textparenleft}{PD1}{\string\(}% \050 U+0028 +% U+0029 RIGHT PARENTHESIS; parenright +\DeclareTextCommand{\textparenright}{PD1}{\string\)}% \051 U+0029 +% \end{macrocode} +% \cs{052}: U+002A ASTERISK; asterisk\\ +% \cs{053}: U+002B PLUS SIGN; plus\\ +% \cs{054}: U+002C COMMA; comma\\ +% \cs{055}: U+002D HYPHEN-MINUS; hyphen\\ +% \cs{056}: U+002E FULL STOP; period +% \begin{macrocode} +% U+002E FULL STOP; period +\DeclareTextCommand{\textdotbelow}{PD1}{.}% \056 U+002E +% \end{macrocode} +% \cs{057}: % U+002F SOLIDUS; slash\\ +% \cs{060}: U+0030 DIGIT ZERO; zero\\ +% \dots\\ +% \cs{071}: U+0039 DIGIT NINE; nine\\ +% \cs{072}: U+003A COLON; colon\\ +% \cs{073}: U+003B SEMICOLON; semicolon +% \begin{macrocode} +% U+003C LESS-THAN SIGN; less +\DeclareTextCommand{\textless}{PD1}{<}% \074 U+003C +% \end{macrocode} +% \cs{075}: U+003D EQUALS SIGN; equal +% \begin{macrocode} +% U+003E GREATER-THAN SIGN; greater +\DeclareTextCommand{\textgreater}{PD1}{>}% \076 U+003E +% \end{macrocode} +% \cs{077}: U+003F QUESTION MARK; question\\ +% \cs{100}: U+0040 COMMERCIAL AT; at\\ +% \cs{101}: U+0041 LATIN CAPITAL LETTER A; A\\ +% \dots\\ +% \cs{132}: U+005A LATIN CAPITAL LETTER Z; Z\\ +% \cs{133}: U+005B LEFT SQUARE BRACKET; bracketleft +% \begin{macrocode} +% U+005C REVERSE SOLIDUS; backslash +\DeclareTextCommand{\textbackslash}{PD1}{\134}% U+005C +% "U+2216 SET MINUS" simulated by "U+005C REVERSE SOLIDUS" +\DeclareTextCommand{\textsetminus}{PD1}{\textbackslash} +% \end{macrocode} +% \cs{135}: U+005D RIGHT SQUARE BRACKET; bracketright +% \begin{macrocode} +% U+005E CIRCUMFLEX ACCENT; asciicircum +\DeclareTextCommand{\textasciicircum}{PD1}{\136}% U+005E +% U+005F LOW LINE; underscore +\DeclareTextCommand{\textunderscore}{PD1}{\137}% U+005F +\DeclareTextCommand{\textmacronbelow}{PD1}{\137}% U+005F +% U+0060 GRAVE ACCENT; grave +\DeclareTextCommand{\textasciigrave}{PD1}{\140}% U+0060 +% \end{macrocode} +% \cs{141}: U+0061 LATIN SMALL LETTER A; a\\ +% \dots\\ +% \cs{150}: U+0068 LATIN SMALL LETTER H; h +% \begin{macrocode} +% U+0069 LATIN SMALL LETTER I; i +\DeclareTextCompositeCommand{\.}{PD1}{i}{i}% \151 U+0069 +% \end{macrocode} +% \cs{152}: U+006A LATIN SMALL LETTER J; j\\ +% \dots\\ +% \cs{172}: U+007A LATIN SMALL LETTER Z; z +% \begin{macrocode} +% U+007B LEFT CURLY BRACKET; braceleft +\DeclareTextCommand{\textbraceleft}{PD1}{\173}% U+007B +% U+007C VERTICAL LINE; *bar, verticalbar +\DeclareTextCommand{\textbar}{PD1}{|}% U+007C +% U+007D RIGHT CURLY BRACKET; braceright +\DeclareTextCommand{\textbraceright}{PD1}{\175}% U+007D +% U+007E TILDE; asciitilde +\DeclareTextCommand{\textasciitilde}{PD1}{\176}% U+007E +% \end{macrocode} +% Slot \cs{177} (0x7F) is undefined in PDFDocEncoding. +% \begin{macrocode} +% U+2022 BULLET; bullet +\DeclareTextCommand{\textbullet}{PD1}{\200}% U+2022 +% U+2020 DAGGER; dagger +\DeclareTextCommand{\textdagger}{PD1}{\201}% U+2020 +% U+2021 DOUBLE DAGGER; daggerdbl; \ddagger (LaTeX) +\DeclareTextCommand{\textdaggerdbl}{PD1}{\202}% U+2021 +\DeclareTextCommand{\textddagger}{PD1}{\textddagger} +% U+2026 HORIZONTAL ELLIPSIS; ellipsis +\DeclareTextCommand{\textellipsis}{PD1}{\203}% U+2026 +% U+2014 EM DASH; emdash +\DeclareTextCommand{\textemdash}{PD1}{\204}% U+2014 +% U+2013 EN DASH; endash +\DeclareTextCommand{\textendash}{PD1}{\205}% U+2013 +% U+0192 LATIN SMALL LETTER F WITH HOOK; florin +\DeclareTextCommand{\textflorin}{PD1}{\206}% U+0192 +% U+2044 FRACTION SLASH; fraction +\DeclareTextCommand{\textfractionsolidus}{PD1}{\207}% U+2044 +% U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK; guilsinglleft +\DeclareTextCommand{\guilsinglleft}{PD1}{\210}% U+2039 +% U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK; guilsinglright +\DeclareTextCommand{\guilsinglright}{PD1}{\211}% U+203A +% U+2212 MINUS SIGN; minus +\DeclareTextCommand{\textminus}{PD1}{\212}% U+2212 +% U+2030 PER MILLE SIGN; perthousand +\DeclareTextCommand{\textperthousand}{PD1}{\213}% U+2030 +% U+201E DOUBLE LOW-9 QUOTATION MARK; quotedblbase +\DeclareTextCommand{\quotedblbase}{PD1}{\214}% U+201E +% U+201C LEFT DOUBLE QUOTATION MARK; quotedblleft +\DeclareTextCommand{\textquotedblleft}{PD1}{\215}% U+201C +% U+201D RIGHT DOUBLE QUOTATION MARK; quotedblright +\DeclareTextCommand{\textquotedblright}{PD1}{\216}% U+201D +% U+2018 LEFT SINGLE QUOTATION MARK; quoteleft +\DeclareTextCommand{\textquoteleft}{PD1}{\217}% U+2018 +% U+2019 RIGHT SINGLE QUOTATION MARK; quoteright +\DeclareTextCommand{\textquoteright}{PD1}{\220}% U+2019 +% U+201A SINGLE LOW-9 QUOTATION MARK; quotesinglbase +\DeclareTextCommand{\quotesinglbase}{PD1}{\221}% U+201A +% U+2122 TRADE MARK SIGN; trademark +\DeclareTextCommand{\texttrademark}{PD1}{\222}% U+2122 +% U+FB01 LATIN SMALL LIGATURE FI; fi +\DeclareTextCommand{\textfi}{PD1}{\223}% U+FB01 +% U+FB02 LATIN SMALL LIGATURE FL; fl +\DeclareTextCommand{\textfl}{PD1}{\224}% U+FB02 +% U+0141 LATIN CAPITAL LETTER L WITH STROKE; Lslash +\DeclareTextCommand{\L}{PD1}{\225}% U+0141 +% U+0152 LATIN CAPITAL LIGATURE OE; OE +\DeclareTextCommand{\OE}{PD1}{\226}% U+0152 +% U+0160 LATIN CAPITAL LETTER S WITH CARON; Scaron +\DeclareTextCompositeCommand{\v}{PD1}{S}{\227}% U+0160 +% U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS; Ydieresis +\DeclareTextCompositeCommand{\"}{PD1}{Y}{\230}% U+0178 +\DeclareTextCommand{\IJ}{PD1}{IJ}% ligature U+0049 U+004A +% U+017D LATIN CAPITAL LETTER Z WITH CARON; Zcaron +\DeclareTextCompositeCommand{\v}{PD1}{Z}{\231}% U+017D +% U+0131 LATIN SMALL LETTER DOTLESS I; dotlessi +\DeclareTextCommand{\i}{PD1}{\232}% U+0131 +% U+0142 LATIN SMALL LETTER L WITH STROKE; lslash +\DeclareTextCommand{\l}{PD1}{\233}% U+0142 +% U+0153 LATIN SMALL LIGATURE OE; oe +\DeclareTextCommand{\oe}{PD1}{\234}% U+0153 +% U+0161 LATIN SMALL LETTER S WITH CARON; scaron +\DeclareTextCompositeCommand{\v}{PD1}{s}{\235}% U+0161 +% U+017E LATIN SMALL LETTER Z WITH CARON; zcaron +\DeclareTextCompositeCommand{\v}{PD1}{z}{\236}% U+017E +% \end{macrocode} +% Slot \cs{237} (0x9F) is not defined in PDFDocEncoding.\\ +% The euro \cs{240} is inserted in version 1.3 of the pdf +% specification. +% \begin{macrocode} +% U+20AC EURO SIGN; *Euro, euro +\DeclareTextCommand{\texteuro}{PD1}{\240}% U+20AC +% U+00A1 INVERTED EXCLAMATION MARK; exclamdown +\DeclareTextCommand{\textexclamdown}{PD1}{\241}% U+00A1 +% U+00A2 CENT SIGN; cent +\DeclareTextCommand{\textcent}{PD1}{\242}% U+00A2 +% U+00A3 POUND SIGN; sterling +\DeclareTextCommand{\textsterling}{PD1}{\243}% U+00A3 +% U+00A4 CURRENCY SIGN; currency +\DeclareTextCommand{\textcurrency}{PD1}{\244}% U+00A4 +% U+00A5 YEN SIGN; yen +\DeclareTextCommand{\textyen}{PD1}{\245}% U+00A5 +% U+00A6 BROKEN BAR; brokenbar +\DeclareTextCommand{\textbrokenbar}{PD1}{\246}% U+00A6 +% U+00A7 SECTION SIGN; section +\DeclareTextCommand{\textsection}{PD1}{\247}% U+00A7 +% U+00A8 DIAERESIS; dieresis +\DeclareTextCommand{\textasciidieresis}{PD1}{\250}% U+00A8 +% U+00A9 COPYRIGHT SIGN; copyright +\DeclareTextCommand{\textcopyright}{PD1}{\251}% U+00A9 +% U+00AA FEMININE ORDINAL INDICATOR; ordfeminine +\DeclareTextCommand{\textordfeminine}{PD1}{\252}% U+00AA +% U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK; guillemotleft +\DeclareTextCommand{\guillemotleft}{PD1}{\253}% U+00AB +% U+00AC NOT SIGN; logicalnot +\DeclareTextCommand{\textlogicalnot}{PD1}{\254}% U+00AC +\DeclareTextCommand{\textlnot}{PD1}{\254}% logical not +% \end{macrocode} +% No glyph \cs{255} in PDFDocEncoding. +% \begin{macrocode} +% U+00AE REGISTERED SIGN; registered +\DeclareTextCommand{\textregistered}{PD1}{\256}% U+00AE +% U+00AF MACRON; *macron, overscore +\DeclareTextCommand{\textasciimacron}{PD1}{\257}% U+00AF +% U+00B0 DEGREE SIGN; degree +\DeclareTextCommand{\textdegree}{PD1}{\260}% U+00B0 +% U+00B1 PLUS-MINUS SIGN; plusminus +\DeclareTextCommand{\textplusminus}{PD1}{\261}% U+00B1 +% U+00B2 SUPERSCRIPT TWO; twosuperior +\DeclareTextCommand{\texttwosuperior}{PD1}{\262}%* U+00B2 +% U+00B3 SUPERSCRIPT THREE; threesuperior +\DeclareTextCommand{\textthreesuperior}{PD1}{\263}%* U+00B3 +% U+00B4 ACUTE ACCENT; acute +\DeclareTextCommand{\textacute}{PD1}{\264}% U+00B4 +% U+00B5 MICRO SIGN; mu, mu1 +\DeclareTextCommand{\textmu}{PD1}{\265}% U+00B5 +% U+00B6 PILCROW SIGN; paragraph +\DeclareTextCommand{\textparagraph}{PD1}{\266}% U+00B6 +% U+00B7 MIDDLE DOT; middot, *periodcentered +\DeclareTextCommand{\textperiodcentered}{PD1}{\267}% U+00B7 +% U+00B8 CEDILLA; cedilla +\DeclareTextCommand{\textcedilla}{PD1}{\270}% U+00B8 +% U+00B9 SUPERSCRIPT ONE; onesuperior +\DeclareTextCommand{\textonesuperior}{PD1}{\271}%* U+00B9 +% U+00BA MASCULINE ORDINAL INDICATOR; ordmasculine +\DeclareTextCommand{\textordmasculine}{PD1}{\272}% U+00BA +% U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK; guillemotright +\DeclareTextCommand{\guillemotright}{PD1}{\273}% U+00BB +% U+00BC VULGAR FRACTION ONE QUARTER; onequarter +\DeclareTextCommand{\textonequarter}{PD1}{\274}% U+00BC +% U+00BD VULGAR FRACTION ONE HALF; onehalf +\DeclareTextCommand{\textonehalf}{PD1}{\275}% U+00BD +% U+00BE VULGAR FRACTION THREE QUARTERS; threequarters +\DeclareTextCommand{\textthreequarters}{PD1}{\276}% U+00BE +% U+00BF INVERTED QUESTION MARK; questiondown +\DeclareTextCommand{\textquestiondown}{PD1}{\277}% U+00BF +% U+00C0 LATIN CAPITAL LETTER A WITH GRAVE; Agrave +\DeclareTextCompositeCommand{\`}{PD1}{A}{\300}% U+00C0 +% U+00C1 LATIN CAPITAL LETTER A WITH ACUTE; Aacute +\DeclareTextCompositeCommand{\'}{PD1}{A}{\301}% U+00C1 +% U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX; Acircumflex +\DeclareTextCompositeCommand{\^}{PD1}{A}{\302}% U+00C2 +% U+00C3 LATIN CAPITAL LETTER A WITH TILDE; Atilde +\DeclareTextCompositeCommand{\~}{PD1}{A}{\303}% U+00C3 +% U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS; Adieresis +\DeclareTextCompositeCommand{\"}{PD1}{A}{\304}% U+00C4 +% U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE; Aring +\DeclareTextCompositeCommand{\r}{PD1}{A}{\305}% U+00C5 +% U+00C6 LATIN CAPITAL LETTER AE; AE +\DeclareTextCommand{\AE}{PD1}{\306}% U+00C6 +% U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA; Ccedilla +\DeclareTextCompositeCommand{\c}{PD1}{C}{\307}% U+00C7 +% U+00C8 LATIN CAPITAL LETTER E WITH GRAVE; Egrave +\DeclareTextCompositeCommand{\`}{PD1}{E}{\310}% U+00C8 +% U+00C9 LATIN CAPITAL LETTER E WITH ACUTE; Eacute +\DeclareTextCompositeCommand{\'}{PD1}{E}{\311}% U+00C9 +% U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX; Ecircumflex +\DeclareTextCompositeCommand{\^}{PD1}{E}{\312}% U+00CA +% U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS; Edieresis +\DeclareTextCompositeCommand{\"}{PD1}{E}{\313}% U+00CB +% U+00CC LATIN CAPITAL LETTER I WITH GRAVE; Igrave +\DeclareTextCompositeCommand{\`}{PD1}{I}{\314}% U+00CC +% U+00CD LATIN CAPITAL LETTER I WITH ACUTE; Iacute +\DeclareTextCompositeCommand{\'}{PD1}{I}{\315}% U+00CD +% U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX; Icircumflex +\DeclareTextCompositeCommand{\^}{PD1}{I}{\316}% U+00CE +% U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS; Idieresis +\DeclareTextCompositeCommand{\"}{PD1}{I}{\317}% U+00CF +% U+00D0 LATIN CAPITAL LETTER ETH; Eth +\DeclareTextCommand{\DH}{PD1}{\320}% U+00D0 +\DeclareTextCommand{\DJ}{PD1}{\320}% U+00D0 +% U+00D1 LATIN CAPITAL LETTER N WITH TILDE; Ntilde +\DeclareTextCompositeCommand{\~}{PD1}{N}{\321}% U+00D1 +% U+00D2 LATIN CAPITAL LETTER O WITH GRAVE; Ograve +\DeclareTextCompositeCommand{\`}{PD1}{O}{\322}% U+00D2 +% U+00D3 LATIN CAPITAL LETTER O WITH ACUTE; Oacute +\DeclareTextCompositeCommand{\'}{PD1}{O}{\323}% U+00D3 +% U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX; Ocircumflex +\DeclareTextCompositeCommand{\^}{PD1}{O}{\324}% U+00D4 +% U+00D5 LATIN CAPITAL LETTER O WITH TILDE; Otilde +\DeclareTextCompositeCommand{\~}{PD1}{O}{\325}% U+00D5 +% U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS; Odieresis +\DeclareTextCompositeCommand{\"}{PD1}{O}{\326}% U+00D6 +% U+00D7 MULTIPLICATION SIGN; multiply +\DeclareTextCommand{\textmultiply}{PD1}{\327}% U+00D7 +% U+00D8 LATIN CAPITAL LETTER O WITH STROKE; Oslash +\DeclareTextCommand{\O}{PD1}{\330}% U+00D8 +% U+00D9 LATIN CAPITAL LETTER U WITH GRAVE; Ugrave +\DeclareTextCompositeCommand{\`}{PD1}{U}{\331}% U+00D9 +% U+00DA LATIN CAPITAL LETTER U WITH ACUTE; Uacute +\DeclareTextCompositeCommand{\'}{PD1}{U}{\332}% U+00DA +% U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX; Ucircumflex +\DeclareTextCompositeCommand{\^}{PD1}{U}{\333}% U+00DB +% U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS; Udieresis +\DeclareTextCompositeCommand{\"}{PD1}{U}{\334}% U+00DC +% U+00DD LATIN CAPITAL LETTER Y WITH ACUTE; Yacute +\DeclareTextCompositeCommand{\'}{PD1}{Y}{\335}% U+00DD +% U+00DE LATIN CAPITAL LETTER THORN; Thorn; \TH, \Thorn (wasysym) +\DeclareTextCommand{\TH}{PD1}{\336}% U+00DE +\DeclareTextCommand{\textThorn}{PD1}{\336}%* U+00DE +% U+00DF LATIN SMALL LETTER SHARP S; germandbls +\DeclareTextCommand{\ss}{PD1}{\337}% U+00DF +% U+00E0 LATIN SMALL LETTER A WITH GRAVE; agrave +\DeclareTextCompositeCommand{\`}{PD1}{a}{\340}% U+00E0 +% U+00E1 LATIN SMALL LETTER A WITH ACUTE; aacute +\DeclareTextCompositeCommand{\'}{PD1}{a}{\341}% U+00E1 +% U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX; acircumflex +\DeclareTextCompositeCommand{\^}{PD1}{a}{\342}% U+00E2 +% U+00E3 LATIN SMALL LETTER A WITH TILDE; atilde +\DeclareTextCompositeCommand{\~}{PD1}{a}{\343}% U+00E3 +% U+00E4 LATIN SMALL LETTER A WITH DIAERESIS; adieresis +\DeclareTextCompositeCommand{\"}{PD1}{a}{\344}% U+00E4 +% U+00E5 LATIN SMALL LETTER A WITH RING ABOVE; aring +\DeclareTextCompositeCommand{\r}{PD1}{a}{\345}% U+00E5 +% U+00E6 LATIN SMALL LETTER AE; ae +\DeclareTextCommand{\ae}{PD1}{\346}% U+00E6 +% U+00E7 LATIN SMALL LETTER C WITH CEDILLA; ccedilla +\DeclareTextCompositeCommand{\c}{PD1}{c}{\347}% U+00E7 +% U+00E8 LATIN SMALL LETTER E WITH GRAVE; egrave +\DeclareTextCompositeCommand{\`}{PD1}{e}{\350}% U+00E8 +% U+00E9 LATIN SMALL LETTER E WITH ACUTE; eacute +\DeclareTextCompositeCommand{\'}{PD1}{e}{\351}% U+00E9 +% U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX; ecircumflex +\DeclareTextCompositeCommand{\^}{PD1}{e}{\352}% U+00EA +% U+00EB LATIN SMALL LETTER E WITH DIAERESIS; edieresis +\DeclareTextCompositeCommand{\"}{PD1}{e}{\353}% U+00EB +% U+00EC LATIN SMALL LETTER I WITH GRAVE; igrave +\DeclareTextCompositeCommand{\`}{PD1}{i}{\354}% U+00EC +\DeclareTextCompositeCommand{\`}{PD1}{\i}{\354}% U+00EC +% U+00ED LATIN SMALL LETTER I WITH ACUTE; iacute +\DeclareTextCompositeCommand{\'}{PD1}{i}{\355}% U+00ED +\DeclareTextCompositeCommand{\'}{PD1}{\i}{\355}% U+00ED +% U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX; icircumflex +\DeclareTextCompositeCommand{\^}{PD1}{i}{\356}% U+00EE +\DeclareTextCompositeCommand{\^}{PD1}{\i}{\356}% U+00EE +% U+00EF LATIN SMALL LETTER I WITH DIAERESIS; idieresis +\DeclareTextCompositeCommand{\"}{PD1}{i}{\357}% U+00EF +\DeclareTextCompositeCommand{\"}{PD1}{\i}{\357}% U+00EF +% U+00F0 LATIN SMALL LETTER ETH; eth +\DeclareTextCommand{\dh}{PD1}{\360}% U+00F0 +% U+00F1 LATIN SMALL LETTER N WITH TILDE; ntilde +\DeclareTextCompositeCommand{\~}{PD1}{n}{\361}% U+00F1 +% U+00F2 LATIN SMALL LETTER O WITH GRAVE; ograve +\DeclareTextCompositeCommand{\`}{PD1}{o}{\362}% U+00F2 +% U+00F3 LATIN SMALL LETTER O WITH ACUTE; oacute +\DeclareTextCompositeCommand{\'}{PD1}{o}{\363}% U+00F3 +% U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX; ocircumflex +\DeclareTextCompositeCommand{\^}{PD1}{o}{\364}% U+00F4 +% U+00F5 LATIN SMALL LETTER O WITH TILDE; otilde +\DeclareTextCompositeCommand{\~}{PD1}{o}{\365}% U+00F5 +% U+00F6 LATIN SMALL LETTER O WITH DIAERESIS; odieresis +\DeclareTextCompositeCommand{\"}{PD1}{o}{\366}% U+00F6 +% U+00F7 DIVISION SIGN; divide +\DeclareTextCommand{\textdivide}{PD1}{\367}% U+00F7 +% U+00F8 LATIN SMALL LETTER O WITH STROKE; oslash +\DeclareTextCommand{\o}{PD1}{\370}% U+00F8 +% U+00F9 LATIN SMALL LETTER U WITH GRAVE; ugrave +\DeclareTextCompositeCommand{\`}{PD1}{u}{\371}% U+00F9 +% U+00FA LATIN SMALL LETTER U WITH ACUTE; uacute +\DeclareTextCompositeCommand{\'}{PD1}{u}{\372}% U+00FA +% U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX; ucircumflex +\DeclareTextCompositeCommand{\^}{PD1}{u}{\373}% U+00FB +% U+00FC LATIN SMALL LETTER U WITH DIAERESIS; udieresis +\DeclareTextCompositeCommand{\"}{PD1}{u}{\374}% U+00FC +% U+00FD LATIN SMALL LETTER Y WITH ACUTE; yacute +\DeclareTextCompositeCommand{\'}{PD1}{y}{\375}% U+00FD +% U+00FE LATIN SMALL LETTER THORN; thorn; \th, \thorn (wasysym) +\DeclareTextCommand{\th}{PD1}{\376}% U+00FE +\DeclareTextCommand{\textthorn}{PD1}{\376}%* U+00FE +% U+00FF LATIN SMALL LETTER Y WITH DIAERESIS; ydieresis +\DeclareTextCompositeCommand{\"}{PD1}{y}{\377}% U+00FF +\DeclareTextCommand{\ij}{PD1}{ij}% ligature U+0069 U+006A +% \end{macrocode} +% Glyphs that consist of several characters. +% \begin{macrocode} +\DeclareTextCommand{\SS}{PD1}{SS}% +\DeclareTextCommand{\textcelsius}{PD1}{\textdegree C}% +% \end{macrocode} +% Aliases (german.sty) +% \begin{macrocode} +\DeclareTextCommand{\textglqq}{PD1}{\quotedblbase}% +\DeclareTextCommand{\textgrqq}{PD1}{\textquotedblleft}% +\DeclareTextCommand{\textglq}{PD1}{\quotesinglbase}% +\DeclareTextCommand{\textgrq}{PD1}{\textquoteleft}% +\DeclareTextCommand{\textflqq}{PD1}{\guillemotleft}% +\DeclareTextCommand{\textfrqq}{PD1}{\guillemotright}% +\DeclareTextCommand{\textflq}{PD1}{\guilsinglleft}% +\DeclareTextCommand{\textfrq}{PD1}{\guilsinglright}% +% \end{macrocode} +% Aliases (math names) +% \begin{macrocode} +\DeclareTextCommand{\textneg}{PD1}{\textlogicalnot}% +\DeclareTextCommand{\texttimes}{PD1}{\textmultiply}% +\DeclareTextCommand{\textdiv}{PD1}{\textdivide}% +\DeclareTextCommand{\textpm}{PD1}{\textplusminus}% +\DeclareTextCommand{\textcdot}{PD1}{\textperiodcentered}% +\DeclareTextCommand{\textbeta}{PD1}{\ss}% +% \end{macrocode} +% Polish aliases. PDF encoding does not have the characters, but it +% is useful to Poles to have the plain letters regardless. Requested by +% Wojciech Myszka (\Email{W.Myszka@immt.pwr.wroc.pl}). +% \begin{macrocode} +\DeclareTextCompositeCommand{\k}{PD1}{a}{a}% aogonek +\DeclareTextCompositeCommand{\'}{PD1}{c}{c}% cacute +\DeclareTextCompositeCommand{\k}{PD1}{e}{e}% eogonek +\DeclareTextCompositeCommand{\'}{PD1}{n}{n}% nacute +\DeclareTextCompositeCommand{\'}{PD1}{s}{s}% sacute +\DeclareTextCompositeCommand{\'}{PD1}{z}{z}% zacute +\DeclareTextCompositeCommand{\.}{PD1}{z}{z}% zdot +% \end{macrocode} +% \begin{macrocode} +\DeclareTextCompositeCommand{\k}{PD1}{A}{A}% Aogonek +\DeclareTextCompositeCommand{\'}{PD1}{C}{C}% Cacute +\DeclareTextCompositeCommand{\k}{PD1}{E}{E}% Eogonek +\DeclareTextCompositeCommand{\'}{PD1}{N}{N}% Nacute +\DeclareTextCompositeCommand{\'}{PD1}{S}{S}% Sacute +\DeclareTextCompositeCommand{\'}{PD1}{Z}{Z}% Zacute +\DeclareTextCompositeCommand{\.}{PD1}{Z}{Z}% Zdot +% \end{macrocode} +% \begin{macrocode} +%</pd1enc> +% \end{macrocode} +% +% \subsection{PU encoding} +% \begin{macrocode} +%<*puenc> +\DeclareFontEncoding{PU}{}{} +% \end{macrocode} +% +% \subsubsection{NFSS2 accents} +% +% \begin{macrocode} +% U+0300 COMBINING GRAVE ACCENT; gravecmb, *gravecomb +\DeclareTextCommand{\`}{PU}[1]{#1\83\000}% U+0300 +% U+0301 COMBINING ACUTE ACCENT; acutecmb, *acutecomb +\DeclareTextCommand{\'}{PU}[1]{#1\83\001}% U+0301 +% U+0302 COMBINING CIRCUMFLEX ACCENT; circumflexcmb +\DeclareTextCommand{\^}{PU}[1]{#1\83\002}% U+0302 +% U+0303 COMBINING TILDE; tildecmb, *tildecomb +\DeclareTextCommand{\~}{PU}[1]{#1\83\003}% U+0303 +% U+0304 COMBINING MACRON; macroncmb +\DeclareTextCommand{\=}{PU}[1]{#1\83\004}% U+0304 +% U+0306 COMBINING BREVE; brevecmb +\DeclareTextCommand{\u}{PU}[1]{#1\83\006}% U+0306 +\DeclareTextCommand{\U}{PU}[1]{#1\83\006}% U+0306 +% U+0307 COMBINING DOT ABOVE; dotaccentcmb +\DeclareTextCommand{\.}{PU}[1]{#1\83\007}% U+0307 +% U+0308 COMBINING DIAERESIS; dieresiscmb +\DeclareTextCommand{\"}{PU}[1]{#1\83\010}% U+0308 +% U+030A COMBINING RING ABOVE; ringcmb +\DeclareTextCommand{\r}{PU}[1]{#1\83\012}% U+030A +% U+030B COMBINING DOUBLE ACUTE ACCENT; hungarumlautcmb +\DeclareTextCommand{\H}{PU}[1]{#1\83\013}% U+030B +% U+030C COMBINING CARON; caroncmb +\DeclareTextCommand{\v}{PU}[1]{#1\83\014}% U+030C +% U+030F COMBINING DOUBLE GRAVE ACCENT; dblgravecmb +\DeclareTextCommand{\G}{PU}[1]{#1\83\017}% U+030F +\DeclareTextCommand{\C}{PU}[1]{#1\83\017}% U+030F +% U+0311 COMBINING INVERTED BREVE; breveinvertedcmb +\DeclareTextCommand{\textinvbreve}{PU}[1]{#1\83\021}% U+0311 +\DeclareTextCommand{\newtie}{PU}[1]{#1\83\021}% U+0311 +% U+0323 COMBINING DOT BELOW; dotbelowcmb, *dotbelowcomb +\DeclareTextCommand{\d}{PU}[1]{#1\83\043}% U+0323 +% U+0324 COMBINING DIAERESIS BELOW; dieresisbelowcmb; \textsubumlaut (tipa) +\DeclareTextCommand{\textsubumlaut}{PU}[1]{#1\83\044}% U+0324 +% U+0325 COMBINING RING BELOW; ringbelowcmb; \textsubring (tipa) +\DeclareTextCommand{\textsubring}{PU}[1]{#1\83\045}% U+0325 +% U+0327 COMBINING CEDILLA; cedillacmb +\DeclareTextCommand{\c}{PU}[1]{#1\83\047}% U+0327 +% U+0328 COMBINING OGONEK; ogonekcmb +\DeclareTextCommand{\k}{PU}[1]{#1\83\050}% U+0328 +% U+032D COMBINING CIRCUMFLEX ACCENT BELOW; +% \textsubcircum (tipa) +\DeclareTextCommand{\textsubcircum}{PU}[1]{#1\83\055}% U+032D +% U+032E COMBINING BREVE BELOW; brevebelowcmb +\DeclareTextCommand{\textsubbreve}{PU}[1]{#1\83\056}% U+032E +% U+0330 COMBINING TILDE BELOW; tildebelowcmb; \textsubtilde (tipa) +\DeclareTextCommand{\textsubtilde}{PU}[1]{#1\83\060}% U+0330 +% U+0331 COMBINING MACRON BELOW; macronbelowcmb +\DeclareTextCommand{\b}{PU}[1]{#1\83\061}% U+0331 +% U+0361 COMBINING DOUBLE INVERTED BREVE; breveinverteddoublecmb +\DeclareTextCommand{\t}{PU}[1]{#1\83\141}% U+0361 +% U+20DD COMBINING ENCLOSING CIRCLE +\DeclareTextCommand{\textcircled}{PU}[1]{#1\9040\335}% U+20DD +% \end{macrocode} +% +% Double accents. +% \begin{macrocode} +\DeclareTextCommand{\textacutemacron}{PU}[1]{#1\83\001\83\004}% U+0301 U+0304 +\DeclareTextCommand{\textgravemacron}{PU}[1]{#1\83\000\83\004}% U+0300 U+0304 +% \end{macrocode} +% +% \cs{@empty} is an artefact of the NFSS2 machinery, it +% gets inserted for empty arguments and spaces. +% \begin{macrocode} +\DeclareTextCompositeCommand{\`}{PU}{\@empty}{\textasciigrave}% +\DeclareTextCompositeCommand{\'}{PU}{\@empty}{\textacute}% +\DeclareTextCompositeCommand{\^}{PU}{\@empty}{\textasciicircum}% +\DeclareTextCompositeCommand{\~}{PU}{\@empty}{\texttilde}% +\DeclareTextCompositeCommand{\"}{PU}{\@empty}{\textasciidieresis}% +\DeclareTextCompositeCommand{\r}{PU}{\@empty}{\textring}% +\DeclareTextCompositeCommand{\v}{PU}{\@empty}{\textasciicaron}% +\DeclareTextCompositeCommand{\.}{PU}{\@empty}{\textdotaccent}% +\DeclareTextCompositeCommand{\c}{PU}{\@empty}{\textcedilla}% +\DeclareTextCompositeCommand{\u}{PU}{\@empty}{\textasciibreve}% +\DeclareTextCompositeCommand{\G}{PU}{\@empty}{\textdoublegrave}% +\DeclareTextCompositeCommand{\=}{PU}{\@empty}{\textasciimacron}% +\DeclareTextCompositeCommand{\H}{PU}{\@empty}{\texthungarumlaut}% +\DeclareTextCompositeCommand{\k}{PU}{\@empty}{\textogonek}% +\DeclareTextCompositeCommand{\textinvbreve}{PU}{\@empty}{{ \83\021}}% U+0311 +\DeclareTextCompositeCommand{\textsubumlaut}{PU}{\@empty}{{ \83\044}}% U+0324 +\DeclareTextCompositeCommand{\textsubring}{PU}{\@empty}{\textringlow}% +\DeclareTextCompositeCommand{\textsubcircum}{PU}{\@empty}{\textcircumlow}% +\DeclareTextCompositeCommand{\textsubbreve}{PU}{\@empty}{{ \83\056}}% U+032E +\DeclareTextCompositeCommand{\textsubtilde}{PU}{\@empty}{\texttildelow}% +\DeclareTextCompositeCommand{\b}{PU}{\@empty}{\textmacronbelow}% +\DeclareTextCompositeCommand{\d}{PU}{\@empty}{\textdotbelow}% +\DeclareTextCompositeCommand{\t}{PU}{\@empty}{\texttie}% +\DeclareTextCompositeCommand{\newtie}{PU}{\@empty}{\textnewtie}% +\DeclareTextCompositeCommand{\textcircled}{PU}{\@empty}{\textbigcircle}% +\DeclareTextCompositeCommand{\textacutemacron}{PU}{\@empty}{{ \83\001\83\004}}% U+0301 U+0304 +\DeclareTextCompositeCommand{\textgravemacron}{PU}{\@empty}{{ \83\000\83\004}}% U+0300 U+0304 +% \end{macrocode} +% \begin{macrocode} +\DeclareTextCompositeCommand{\`}{PU}{\ }{\textasciigrave}% +\DeclareTextCompositeCommand{\'}{PU}{\ }{\textacute}% +\DeclareTextCompositeCommand{\^}{PU}{\ }{\textasciicircum}% +\DeclareTextCompositeCommand{\~}{PU}{\ }{\texttilde}% +\DeclareTextCompositeCommand{\"}{PU}{\ }{\textasciidieresis}% +\DeclareTextCompositeCommand{\r}{PU}{\ }{\textring}% +\DeclareTextCompositeCommand{\v}{PU}{\ }{\textasciicaron}% +\DeclareTextCompositeCommand{\.}{PU}{\ }{\textdotaccent}% +\DeclareTextCompositeCommand{\c}{PU}{\ }{\textcedilla}% +\DeclareTextCompositeCommand{\u}{PU}{\ }{\textasciibreve}% +\DeclareTextCompositeCommand{\G}{PU}{\ }{\textdoublegrave}% +\DeclareTextCompositeCommand{\=}{PU}{\ }{\textasciimacron}% +\DeclareTextCompositeCommand{\H}{PU}{\ }{\texthungarumlaut}% +\DeclareTextCompositeCommand{\k}{PU}{\ }{\textogonek}% +\DeclareTextCompositeCommand{\textinvbreve}{PU}{\ }{{ \83\021}}% U+0311 +\DeclareTextCompositeCommand{\textsubumlaut}{PU}{\ }{{ \83\044}}% U+0324 +\DeclareTextCompositeCommand{\textsubring}{PU}{\ }{\textringlow}% +\DeclareTextCompositeCommand{\textsubcircum}{PU}{\ }{\textcircumlow}% +\DeclareTextCompositeCommand{\textsubbreve}{PU}{\ }{{ \83\056}}% U+032E +\DeclareTextCompositeCommand{\textsubtilde}{PU}{\ }{\texttildelow}% +\DeclareTextCompositeCommand{\b}{PU}{\ }{\textmacronbelow}% +\DeclareTextCompositeCommand{\d}{PU}{\ }{\textdotbelow}% +\DeclareTextCompositeCommand{\t}{PU}{\ }{\texttie}% +\DeclareTextCompositeCommand{\newtie}{PU}{\ }{\textnewtie}% +\DeclareTextCompositeCommand{\textcircled}{PU}{\ }{\textbigcircle}% +\DeclareTextCompositeCommand{\textacutemacron}{PU}{\ }{{ \83\001\83\004}}% U+0301 U+0304 +\DeclareTextCompositeCommand{\textgravemacron}{PU}{\ }{{ \83\000\83\004}}% U+0300 U+0304 +% \end{macrocode} +% Accents for capitals (see encoding TS1) +% \begin{macrocode} +\DeclareTextCommand{\capitalcedilla}{PU}[1]{\c{#1}}% +\DeclareTextCommand{\capitalogonek}{PU}[1]{\k{#1}}% +\DeclareTextCommand{\capitalgrave}{PU}[1]{\`{#1}}% +\DeclareTextCommand{\capitalacute}{PU}[1]{\'{#1}}% +\DeclareTextCommand{\capitalcircumflex}{PU}[1]{\^{#1}}% +\DeclareTextCommand{\capitaltilde}{PU}[1]{\~{#1}}% +\DeclareTextCommand{\capitaldieresis}{PU}[1]{\"{#1}}% +\DeclareTextCommand{\capitalhungarumlaut}{PU}[1]{\H{#1}}% +\DeclareTextCommand{\capitalring}{PU}[1]{\r{#1}}% +\DeclareTextCommand{\capitalcaron}{PU}[1]{\v{#1}}% +\DeclareTextCommand{\capitalbreve}{PU}[1]{\u{#1}}% +\DeclareTextCommand{\capitalmacron}{PU}[1]{\={#1}}% +\DeclareTextCommand{\capitaldotaccent}{PU}[1]{\.{#1}}% +\DeclareTextCommand{\capitaltie}{PU}[1]{\t{#1}}% +\DeclareTextCommand{\capitalnewtie}{PU}[1]{\newtie{#1}}% +% \end{macrocode} +% +% \subsubsection{Basic Latin: U+0000 to U+007F} +% +% Special white space escape characters. +% \begin{macrocode} +% U+0009 (CHARACTER TABULATION) +\DeclareTextCommand{\textHT}{PU}{\80\011}% U+0009 +% U+000A (LINE FEED) +\DeclareTextCommand{\textLF}{PU}{\80\012}% U+000A +% U+000D (CARRIAGE RETURN) +\DeclareTextCommand{\textCR}{PU}{\80\015}% U+000D +% \end{macrocode} +% |\80\040|: U+0020 SPACE; space, spacehackarabic\\ +% |\80\041|: U+0021 EXCLAMATION MARK; exclam +% \begin{macrocode} +% U+0022 QUOTATION MARK; quotedbl +\DeclareTextCommand{\textquotedbl}{PU}{"}% \80\042 U+0022 +% U+0023 NUMBER SIGN; numbersign +\DeclareTextCommand{\textnumbersign}{PU}{\80\043}% U+0023 +% U+0024 DOLLAR SIGN; dollar +\DeclareTextCommand{\textdollar}{PU}{\80\044}% U+0024 +%* \textdollar -> \mathdollar +%* \textdollar -> \EyesDollar (marvosym) +% U+0025 PERCENT SIGN; percent +\DeclareTextCommand{\textpercent}{PU}{\80\045}% U+0025 +% U+0026 AMPERSAND; ampersand +\DeclareTextCommand{\textampersand}{PU}{\80\046}% U+0026 +%* \textampersand -> \binampersand (stmaryrd) +%* \textampersand -> \with (cmll) +% U+0027 APOSTROPHE; quotesingle +\DeclareTextCommand{\textquotesingle}{PU}{\80\047}% U+0027 +% U+0028 LEFT PARENTHESIS; parenleft +\DeclareTextCommand{\textparenleft}{PU}{\80\050}% U+0028 +% U+0029 RIGHT PARENTHESIS; parenright +\DeclareTextCommand{\textparenright}{PU}{\80\051}% U+0029 +% U+002A ASTERISK; asterisk; (?) +\DeclareTextCommand{\textasteriskcentered}{PU}{\80\052}% U+002A +% U+002B PLUS SIGN; plus; \MVPlus (marvosym) +\DeclareTextCommand{\textMVPlus}{PU}{\80\053}%* U+002B +% U+002C COMMA; comma; \MVComma (marvosym) +\DeclareTextCommand{\textMVComma}{PU}{\80\054}%* U+002C +% U+002D HYPHEN-MINUS; hyphen; \MVMinus (marvosym) +\DeclareTextCommand{\textMVMinus}{PU}{\80\055}%* U+002D +% U+002E FULL STOP; period; \MVPeriod (marvosym) +\DeclareTextCommand{\textMVPeriod}{PU}{\80\056}%* U+002E +% U+002F SOLIDUS; slash; \MVDivision (marvosym) +\DeclareTextCommand{\textMVDivision}{PU}{\80\057}%* U+002F +% U+0030 DIGIT ZERO; zero; \MVZero (marvosym) +\DeclareTextCommand{\textMVZero}{PU}{\80\060}%* U+0030 +% U+0031 DIGIT ONE; one; \MVOne (marvosym) +\DeclareTextCommand{\textMVOne}{PU}{\80\061}%* U+0031 +% U+0032 DIGIT TWO; two; \MVTwo (marvosym) +\DeclareTextCommand{\textMVTwo}{PU}{\80\062}%* U+0032 +% U+0033 DIGIT THREE; three; \MVThree (marvosym) +\DeclareTextCommand{\textMVThree}{PU}{\80\063}%* U+0033 +% U+0034 DIGIT FOUR; four; \MVFour (marvosym) +\DeclareTextCommand{\textMVFour}{PU}{\80\064}%* U+0034 +% U+0035 DIGIT FIVE; five; \MVFive (marvosym) +\DeclareTextCommand{\textMVFive}{PU}{\80\065}%* U+0035 +% U+0036 DIGIT SIX; six; \MVSix (marvosym) +\DeclareTextCommand{\textMVSix}{PU}{\80\066}%* U+0036 +% U+0037 DIGIT SEVEM; seven; \MVSeven (marvosym) +\DeclareTextCommand{\textMVSeven}{PU}{\80\067}%* U+0037 +% U+0038 DIGIT EIGHT; eight; \MVEight (marvosym) +\DeclareTextCommand{\textMVEight}{PU}{\80\070}%* U+0038 +% U+0039 DIGIT NINE; nine; \MVNine (marvosym) +\DeclareTextCommand{\textMVNine}{PU}{\80\071}%* U+0039 +% \end{macrocode} +% |\80\072|: U+003A COLON; colon\\ +% |\80\073|: U+003B SEMICOLON; semicolon +% \begin{macrocode} +% U+003C LESS-THAN SIGN; less +\DeclareTextCommand{\textless}{PU}{<}% \80\074 U+003C +% \end{macrocode} +% |\80\075|: U+003D EQUALS SIGN; equal +% \begin{macrocode} +% U+003E GREATER-THAN SIGN; greater +\DeclareTextCommand{\textgreater}{PU}{>}% \80\076 U+003E +% \end{macrocode} +% |\80\077|: U+003F QUESTION MARK; question +% \begin{macrocode} +% U+0040 COMMERCIAL AT; at; \MVAt (marvosym) +\DeclareTextCommand{\textMVAt}{PU}{\80\100}%* U+0040 +% \end{macrocode} +% |\80\101|: U+0041 LATIN CAPITAL LETTER A; A\\ +% \dots\\ +% |\80\132|: U+005A LATIN CAPITAL LETTER Z; Z\\ +% |\80\133|: U+005B LEFT SQUARE BRACKET; bracketleft +% \begin{macrocode} +% U+005C REVERSE SOLIDUS; backslash +\DeclareTextCommand{\textbackslash}{PU}{\80\134}% U+005C +% \end{macrocode} +% |\80\135|: U+005D RIGHT SQUARE BRACKET; bracketright +% \begin{macrocode} +% U+005E CIRCUMFLEX ACCENT; asciicircum +\DeclareTextCommand{\textasciicircum}{PU}{\80\136}% U+005E +% U+005F LOW LINE; underscore +\DeclareTextCommand{\textunderscore}{PU}{\80\137}% U+005F +%* \textunderscore -> \mathunderscore (LaTeX) +% U+0060 GRAVE ACCENT; grave +\DeclareTextCommand{\textasciigrave}{PU}{\80\140}% U+0060 +% \end{macrocode} +% |\80\141|: U+0061 LATIN SMALL LETTER A; a\\ +% \dots\\ +% |\80\150|: U+0068 LATIN SMALL LETTER H; h +% \begin{macrocode} +% U+0069 LATIN SMALL LETTER I; i +\DeclareTextCompositeCommand{\.}{PU}{\i}{i}% \80\151 U+0069 +\DeclareTextCompositeCommand{\.}{PU}{i}{i}% \80\151 U+0069 +% \end{macrocode} +% |\80\152|: U+006A LATIN SMALL LETTER J; j\\ +% \dots\\ +% |\80\172|: U+007A LATIN SMALL LETTER Z; z +% \begin{macrocode} +% U+007B LEFT CURLY BRACKET; braceleft +\DeclareTextCommand{\textbraceleft}{PU}{\80\173}% U+007B +% U+007C VERTICAL LINE; *bar, verticalbar +\DeclareTextCommand{\textbar}{PU}{|}% \80\174 U+007C +%* \textbar -> \textvertline (tipa) +% U+007D RIGHT CURLY BRACKET; braceright +\DeclareTextCommand{\textbraceright}{PU}{\80\175}% U+007D +% U+007E TILDE; asciitilde +\DeclareTextCommand{\textasciitilde}{PU}{\80\176}% U+007E +% \end{macrocode} +% +% \subsubsection{Latin-1 Supplement: U+0080 to U+00FF} +% +% |\80\240|: U+00A0 NO-BREAK SPACE; nbspace, nonbreakingspace +% \begin{macrocode} +% U+00A1 INVERTED EXCLAMATION MARK; exclamdown +\DeclareTextCommand{\textexclamdown}{PU}{\80\241}% U+00A1 +% U+00A2 CENT SIGN; cent +\DeclareTextCommand{\textcent}{PU}{\80\242}% U+00A2 +% U+00A3 POUND SIGN; sterling +\DeclareTextCommand{\textsterling}{PU}{\80\243}% U+00A3 +%* \textsterling -> \mathsterling (LaTeX) +%* \textsterling -> \pounds (LaTeX) +% U+00A4 CURRENCY SIGN; currency +\DeclareTextCommand{\textcurrency}{PU}{\80\244}% U+00A4 +% U+00A5 YEN SIGN; yen +\DeclareTextCommand{\textyen}{PU}{\80\245}% U+00A5 +% U+00A6 BROKEN BAR; brokenbar +\DeclareTextCommand{\textbrokenbar}{PU}{\80\246}% U+00A6 +%* \textbrokenbar -> \brokenvert (wasysym) +% U+00A7 SECTION SIGN; section +\DeclareTextCommand{\textsection}{PU}{\80\247}% U+00A7 +%* \textsection -> \mathsection (LaTeX) +%* \textsection -> \S (LaTeX) +% U+00A8 DIAERESIS; dieresis +\DeclareTextCommand{\textasciidieresis}{PU}{\80\250}% U+00A8 +% U+00A9 COPYRIGHT SIGN; copyright +\DeclareTextCommand{\textcopyright}{PU}{\80\251}%* U+00A9 +% U+00AA FEMININE ORDINAL INDICATOR; ordfeminine +\DeclareTextCommand{\textordfeminine}{PU}{\80\252}% U+00AA +% U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK; guillemotleft +\DeclareTextCommand{\guillemotleft}{PU}{\80\253}% U+00AB +% U+00AC NOT SIGN; logicalnot +\DeclareTextCommand{\textlogicalnot}{PU}{\80\254}% U+00AC +\DeclareTextCommand{\textlnot}{PU}{\80\254}% U+00AC +% \end{macrocode} +% |\80\255|: U+00AD SOFT HYPHEN; sfthyphen, softhyphen +% \begin{macrocode} +% U+00AE REGISTERED SIGN; registered +\DeclareTextCommand{\textregistered}{PU}{\80\256}% U+00AE +% U+00AF MACRON; *macron, overscore +\DeclareTextCommand{\textasciimacron}{PU}{\80\257}% U+00AF +% U+00B0 DEGREE SIGN; degree +\DeclareTextCommand{\textdegree}{PU}{\80\260}% U+00B0 +% U+00B1 PLUS-MINUS SIGN; plusminus +\DeclareTextCommand{\textplusminus}{PU}{\80\261}% U+00B1 +% U+00B2 SUPERSCRIPT TWO; twosuperior +\DeclareTextCommand{\texttwosuperior}{PU}{\80\262}%* U+00B2 +% U+00B3 SUPERSCRIPT THREE; threesuperior +\DeclareTextCommand{\textthreesuperior}{PU}{\80\263}%* U+00B3 +% U+00B4 ACUTE ACCENT; acute +\DeclareTextCommand{\textacute}{PU}{\80\264}% U+00B4 +\DeclareTextCommand{\textasciiacute}{PU}{\80\264}% U+00B4 +% U+00B5 MICRO SIGN; mu, mu1 +\DeclareTextCommand{\textmu}{PU}{\80\265}% U+00B5 +% U+00B6 PILCROW SIGN; paragraph +\DeclareTextCommand{\textparagraph}{PU}{\80\266}% U+00B6 +%* \textparagraph -> \mathparagraph (LaTeX) +% U+00B7 MIDDLE DOT; middot, *periodcentered +\DeclareTextCommand{\textperiodcentered}{PU}{\80\267}% U+00B7 +%* \textperiodcentered -> \MultiplicationDot (marvosym) +%* \textperiodcentered -> \Squaredot (marvosym) +% U+00B8 CEDILLA; cedilla +\DeclareTextCommand{\textcedilla}{PU}{\80\270}% U+00B8 +% U+00B9 SUPERSCRIPT ONE; onesuperior +\DeclareTextCommand{\textonesuperior}{PU}{\80\271}%* U+00B9 +% U+00BA MASCULINE ORDINAL INDICATOR; ordmasculine +\DeclareTextCommand{\textordmasculine}{PU}{\80\272}% U+00BA +% U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK; guillemotright +\DeclareTextCommand{\guillemotright}{PU}{\80\273}% U+00BB +% U+00BC VULGAR FRACTION ONE QUARTER; onequarter +\DeclareTextCommand{\textonequarter}{PU}{\80\274}% U+00BC +% U+00BD VULGAR FRACTION ONE HALF; onehalf +\DeclareTextCommand{\textonehalf}{PU}{\80\275}% U+00BD +% U+00BE VULGAR FRACTION THREE QUARTERS; threequarters +\DeclareTextCommand{\textthreequarters}{PU}{\80\276}% U+00BE +% U+00BF INVERTED QUESTION MARK; questiondown +\DeclareTextCommand{\textquestiondown}{PU}{\80\277}% U+00BF +% U+00C0 LATIN CAPITAL LETTER A WITH GRAVE; Agrave +\DeclareTextCompositeCommand{\`}{PU}{A}{\80\300}% U+00C0 +% U+00C1 LATIN CAPITAL LETTER A WITH ACUTE; Aacute +\DeclareTextCompositeCommand{\'}{PU}{A}{\80\301}% U+00C1 +% U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX; Acircumflex +\DeclareTextCompositeCommand{\^}{PU}{A}{\80\302}% U+00C2 +% U+00C3 LATIN CAPITAL LETTER A WITH TILDE; Atilde +\DeclareTextCompositeCommand{\~}{PU}{A}{\80\303}% U+00C3 +% U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS; Adieresis +\DeclareTextCompositeCommand{\"}{PU}{A}{\80\304}% U+00C4 +% U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE; Aring +\DeclareTextCompositeCommand{\r}{PU}{A}{\80\305}% U+00C5 +% U+00C6 LATIN CAPITAL LETTER AE; AE +\DeclareTextCommand{\AE}{PU}{\80\306}% U+00C6 +% U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA; Ccedilla +\DeclareTextCompositeCommand{\c}{PU}{C}{\80\307}% U+00C7 +% U+00C8 LATIN CAPITAL LETTER E WITH GRAVE; Egrave +\DeclareTextCompositeCommand{\`}{PU}{E}{\80\310}% U+00C8 +% U+00C9 LATIN CAPITAL LETTER E WITH ACUTE; Eacute +\DeclareTextCompositeCommand{\'}{PU}{E}{\80\311}% U+00C9 +% U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX; Ecircumflex +\DeclareTextCompositeCommand{\^}{PU}{E}{\80\312}% U+00CA +% U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS; Edieresis +\DeclareTextCompositeCommand{\"}{PU}{E}{\80\313}% U+00CB +% U+00CC LATIN CAPITAL LETTER I WITH GRAVE; Igrave +\DeclareTextCompositeCommand{\`}{PU}{I}{\80\314}% U+00CC +% U+00CD LATIN CAPITAL LETTER I WITH ACUTE; Iacute +\DeclareTextCompositeCommand{\'}{PU}{I}{\80\315}% U+00CD +% U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX; Icircumflex +\DeclareTextCompositeCommand{\^}{PU}{I}{\80\316}% U+00CE +% U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS; Idieresis +\DeclareTextCompositeCommand{\"}{PU}{I}{\80\317}% U+00CF +% U+00D0 LATIN CAPITAL LETTER ETH; Eth +\DeclareTextCommand{\DH}{PU}{\80\320}% U+00D0 +% U+00D1 LATIN CAPITAL LETTER N WITH TILDE; Ntilde +\DeclareTextCompositeCommand{\~}{PU}{N}{\80\321}% U+00D1 +% U+00D2 LATIN CAPITAL LETTER O WITH GRAVE; Ograve +\DeclareTextCompositeCommand{\`}{PU}{O}{\80\322}% U+00D2 +% U+00D3 LATIN CAPITAL LETTER O WITH ACUTE; Oacute +\DeclareTextCompositeCommand{\'}{PU}{O}{\80\323}% U+00D3 +% U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX; Ocircumflex +\DeclareTextCompositeCommand{\^}{PU}{O}{\80\324}% U+00D4 +% U+00D5 LATIN CAPITAL LETTER O WITH TILDE; Otilde +\DeclareTextCompositeCommand{\~}{PU}{O}{\80\325}% U+00D5 +% U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS; Odieresis +\DeclareTextCompositeCommand{\"}{PU}{O}{\80\326}% U+00D6 +% U+00D7 MULTIPLICATION SIGN; multiply +\DeclareTextCommand{\textmultiply}{PU}{\80\327}% U+00D7 +%* \textmultiply -> \vartimes (stmaryrd) +%* \textmultiply -> \MVMultiplication (marvosym) +% U+00D8 LATIN CAPITAL LETTER O WITH STROKE; Oslash +\DeclareTextCommand{\O}{PU}{\80\330}% U+00D8 +% U+00D9 LATIN CAPITAL LETTER U WITH GRAVE; Ugrave +\DeclareTextCompositeCommand{\`}{PU}{U}{\80\331}% U+00D9 +% U+00DA LATIN CAPITAL LETTER U WITH ACUTE; Uacute +\DeclareTextCompositeCommand{\'}{PU}{U}{\80\332}% U+00DA +% U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX; Ucircumflex +\DeclareTextCompositeCommand{\^}{PU}{U}{\80\333}% U+00DB +% U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS; Udieresis +\DeclareTextCompositeCommand{\"}{PU}{U}{\80\334}% U+00DC +% U+00DD LATIN CAPITAL LETTER Y WITH ACUTE; Yacute +\DeclareTextCompositeCommand{\'}{PU}{Y}{\80\335}% U+00DD +% U+00DE LATIN CAPITAL LETTER THORN; Thorn; \TH, \Thorn (wasysym) +\DeclareTextCommand{\TH}{PU}{\80\336}% U+00DE +\DeclareTextCommand{\textThorn}{PU}{\80\336}%* U+00DE +% U+00DF LATIN SMALL LETTER SHARP S; germandbls +\DeclareTextCommand{\ss}{PU}{\80\337}% U+00DF +% U+00E0 LATIN SMALL LETTER A WITH GRAVE; agrave +\DeclareTextCompositeCommand{\`}{PU}{a}{\80\340}% U+00E0 +% U+00E1 LATIN SMALL LETTER A WITH ACUTE; aacute +\DeclareTextCompositeCommand{\'}{PU}{a}{\80\341}% U+00E1 +% U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX; acircumflex +\DeclareTextCompositeCommand{\^}{PU}{a}{\80\342}% U+00E2 +% U+00E3 LATIN SMALL LETTER A WITH TILDE; atilde +\DeclareTextCompositeCommand{\~}{PU}{a}{\80\343}% U+00E3 +% U+00E4 LATIN SMALL LETTER A WITH DIAERESIS; adieresis +\DeclareTextCompositeCommand{\"}{PU}{a}{\80\344}% U+00E4 +% U+00E5 LATIN SMALL LETTER A WITH RING ABOVE; aring +\DeclareTextCompositeCommand{\r}{PU}{a}{\80\345}% U+00E5 +% U+00E6 LATIN SMALL LETTER AE; ae +\DeclareTextCommand{\ae}{PU}{\80\346}% U+00E6 +% U+00E7 LATIN SMALL LETTER C WITH CEDILLA; ccedilla +\DeclareTextCompositeCommand{\c}{PU}{c}{\80\347}% U+00E7 +% U+00E8 LATIN SMALL LETTER E WITH GRAVE; egrave +\DeclareTextCompositeCommand{\`}{PU}{e}{\80\350}% U+00E8 +% U+00E9 LATIN SMALL LETTER E WITH ACUTE; eacute +\DeclareTextCompositeCommand{\'}{PU}{e}{\80\351}% U+00E9 +% U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX; ecircumflex +\DeclareTextCompositeCommand{\^}{PU}{e}{\80\352}% U+00EA +% U+00EB LATIN SMALL LETTER E WITH DIAERESIS; edieresis +\DeclareTextCompositeCommand{\"}{PU}{e}{\80\353}% U+00EB +% U+00EC LATIN SMALL LETTER I WITH GRAVE; igrave +\DeclareTextCompositeCommand{\`}{PU}{i}{\80\354}% U+00EC +\DeclareTextCompositeCommand{\`}{PU}{\i}{\80\354}% U+00EC +% U+00ED LATIN SMALL LETTER I WITH ACUTE; iacute +\DeclareTextCompositeCommand{\'}{PU}{i}{\80\355}% U+00ED +\DeclareTextCompositeCommand{\'}{PU}{\i}{\80\355}% U+00ED +% U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX; icircumflex +\DeclareTextCompositeCommand{\^}{PU}{i}{\80\356}% U+00EE +\DeclareTextCompositeCommand{\^}{PU}{\i}{\80\356}% U+00EE +% U+00EF LATIN SMALL LETTER I WITH DIAERESIS; idieresis +\DeclareTextCompositeCommand{\"}{PU}{i}{\80\357}% U+00EF +\DeclareTextCompositeCommand{\"}{PU}{\i}{\80\357}% U+00EF +% U+00F0 LATIN SMALL LETTER ETH; eth +\DeclareTextCommand{\dh}{PU}{\80\360}% U+00F0 +%* \dh -> \eth (wsuipa, phonetic) +% U+00F1 LATIN SMALL LETTER N WITH TILDE; ntilde +\DeclareTextCompositeCommand{\~}{PU}{n}{\80\361}% U+00F1 +% U+00F2 LATIN SMALL LETTER O WITH GRAVE; ograve +\DeclareTextCompositeCommand{\`}{PU}{o}{\80\362}% U+00F2 +% U+00F3 LATIN SMALL LETTER O WITH ACUTE; oacute +\DeclareTextCompositeCommand{\'}{PU}{o}{\80\363}% U+00F3 +% U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX; ocircumflex +\DeclareTextCompositeCommand{\^}{PU}{o}{\80\364}% U+00F4 +% U+00F5 LATIN SMALL LETTER O WITH TILDE; otilde +\DeclareTextCompositeCommand{\~}{PU}{o}{\80\365}% U+00F5 +% U+00F6 LATIN SMALL LETTER O WITH DIAERESIS; odieresis +\DeclareTextCompositeCommand{\"}{PU}{o}{\80\366}% U+00F6 +% U+00F7 DIVISION SIGN; divide +\DeclareTextCommand{\textdivide}{PU}{\80\367}% U+00F7 +% U+00F8 LATIN SMALL LETTER O WITH STROKE; oslash +\DeclareTextCommand{\o}{PU}{\80\370}% U+00F8 +% U+00F9 LATIN SMALL LETTER U WITH GRAVE; ugrave +\DeclareTextCompositeCommand{\`}{PU}{u}{\80\371}% U+00F9 +% U+00FA LATIN SMALL LETTER U WITH ACUTE; uacute +\DeclareTextCompositeCommand{\'}{PU}{u}{\80\372}% U+00FA +% U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX; ucircumflex +\DeclareTextCompositeCommand{\^}{PU}{u}{\80\373}% U+00FB +% U+00FC LATIN SMALL LETTER U WITH DIAERESIS; udieresis +\DeclareTextCompositeCommand{\"}{PU}{u}{\80\374}% U+00FC +% U+00FD LATIN SMALL LETTER Y WITH ACUTE; yacute +\DeclareTextCompositeCommand{\'}{PU}{y}{\80\375}% U+00FD +% U+00FE LATIN SMALL LETTER THORN; thorn; +% \th, \thorn (wasysym), \textthorn (tipa) +\DeclareTextCommand{\th}{PU}{\80\376}% U+00FE +\DeclareTextCommand{\textthorn}{PU}{\80\376}%* U+00FE +% U+00FF LATIN SMALL LETTER Y WITH DIAERESIS; ydieresis +\DeclareTextCompositeCommand{\"}{PU}{y}{\80\377}% U+00FF +% \end{macrocode} +% +% \subsubsection{Latin Extended-A: U+0080 to U+017F} +% +% \begin{macrocode} +% U+0100 LATIN CAPITAL LETTER A WITH MACRON; Amacron +\DeclareTextCompositeCommand{\=}{PU}{A}{\81\000}% U+0100 +% U+0101 LATIN SMALL LETTER A WITH MACRON; amacron +\DeclareTextCompositeCommand{\=}{PU}{a}{\81\001}% U+0101 +% U+0102 LATIN CAPITAL LETTER A WITH BREVE; Abreve +\DeclareTextCompositeCommand{\u}{PU}{A}{\81\002}% U+0102 +% U+0103 LATIN SMALL LETTER A WITH BREVE; abreve +\DeclareTextCompositeCommand{\u}{PU}{a}{\81\003}% U+0103 +% U+0104 LATIN CAPITAL LETTER A WITH OGONEK; Aogonek +\DeclareTextCompositeCommand{\k}{PU}{A}{\81\004}% U+0104 +% U+0105 LATIN SMALL LETTER A WITH OGONEK; aogonek +\DeclareTextCompositeCommand{\k}{PU}{a}{\81\005}% U+0105 +% U+0106 LATIN CAPITAL LETTER C WITH ACUTE; Cacute +\DeclareTextCompositeCommand{\'}{PU}{C}{\81\006}% U+0106 +% U+0107 LATIN SMALL LETTER C WITH ACUTE; cacute +\DeclareTextCompositeCommand{\'}{PU}{c}{\81\007}% U+0107 +% U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX; Ccircumflex +\DeclareTextCompositeCommand{\^}{PU}{C}{\81\010}% U+0108 +% U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX; ccircumflex +\DeclareTextCompositeCommand{\^}{PU}{c}{\81\011}% U+0109 +% U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE; Cdot, Cdotaccent +\DeclareTextCompositeCommand{\.}{PU}{C}{\81\012}% U+010A +% U+010B LATIN SMALL LETTER C WITH DOT ABOVE; cdot, cdotaccent +\DeclareTextCompositeCommand{\.}{PU}{c}{\81\013}% U+010B +% U+010C LATIN CAPITAL LETTER C WITH CARON; Ccaron +\DeclareTextCompositeCommand{\v}{PU}{C}{\81\014}% U+010C +% U+010D LATIN SMALL LETTER C WITH CARON; ccaron +\DeclareTextCompositeCommand{\v}{PU}{c}{\81\015}% U+010D +% U+010E LATIN CAPITAL LETTER D WITH CARON; Dcaron +\DeclareTextCompositeCommand{\v}{PU}{D}{\81\016}% U+010E +% U+010F LATIN SMALL LETTER D WITH CARON; dcaron +\DeclareTextCompositeCommand{\v}{PU}{d}{\81\017}% U+010F +% U+0110 LATIN CAPITAL LETTER D WITH STROKE; Dcroat, Dslash +\DeclareTextCommand{\DJ}{PU}{\81\020}% U+0110 +% U+0111 LATIN SMALL LETTER D WITH STROKE; dcroat, dmacron; +% \textcrd (tipa) +\DeclareTextCommand{\dj}{PU}{\81\021}% U+0111 +\DeclareTextCommand{\textcrd}{PU}{\81\021}% U+0111 +%* \textcrd -> \crossd (wsuipa) +% An alternate glyph with the stroke through the bowl: +%* \textcrd -> \textbard (tipa) +%* \textcrd -> \bard (wsuipa) +% U+0112 LATIN CAPITAL LETTER E WITH MACRON; Emacron +\DeclareTextCompositeCommand{\=}{PU}{E}{\81\022}% U+0112 +% U+0113 LATIN SMALL LETTER E WITH MACRON; emacron +\DeclareTextCompositeCommand{\=}{PU}{e}{\81\023}% U+0113 +% U+0114 LATIN CAPITAL LETTER E WITH BREVE; Ebreve +\DeclareTextCompositeCommand{\u}{PU}{E}{\81\024}% U+0114 +% U+0115 LATIN SMALL LETTER E WITH BREVE; ebreve +\DeclareTextCompositeCommand{\u}{PU}{e}{\81\025}% U+0115 +% U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE; Edot, Edotaccent +\DeclareTextCompositeCommand{\.}{PU}{E}{\81\026}% U+0116 +% U+0117 LATIN SMALL LETTER E WITH DOT ABOVE; edot, edotaccent +\DeclareTextCompositeCommand{\.}{PU}{e}{\81\027}% U+0117 +% U+0118 LATIN CAPITAL LETTER E WITH OGONEK; Eogonek +\DeclareTextCompositeCommand{\k}{PU}{E}{\81\030}% U+0118 +% U+0119 LATIN SMALL LETTER E WITH OGONEK; eogonek +\DeclareTextCompositeCommand{\k}{PU}{e}{\81\031}% U+0119 +% U+011A LATIN CAPITAL LETTER E WITH CARON; Ecaron +\DeclareTextCompositeCommand{\v}{PU}{E}{\81\032}% U+011A +% U+011B LATIN SMALL LETTER E WITH CARON; ecaron +\DeclareTextCompositeCommand{\v}{PU}{e}{\81\033}% U+011B +% U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX; Gcircumflex +\DeclareTextCompositeCommand{\^}{PU}{G}{\81\034}% U+011C +% U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX; gcircumflex +\DeclareTextCompositeCommand{\^}{PU}{g}{\81\035}% U+011D +% U+011E LATIN CAPITAL LETTER G WITH BREVE; Gbreve +\DeclareTextCompositeCommand{\u}{PU}{G}{\81\036}% U+011E +% U+011F LATIN SMALL LETTER G WITH BREVE; gbreve +\DeclareTextCompositeCommand{\u}{PU}{g}{\81\037}% U+011F +% U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE; Gdot, Gdotaccent +\DeclareTextCompositeCommand{\.}{PU}{G}{\81\040}% U+0120 +% U+0121 LATIN SMALL LETTER G WITH DOT ABOVE; gdot, gdotaccent +\DeclareTextCompositeCommand{\.}{PU}{g}{\81\041}% U+0121 +% U+0122 LATIN CAPITAL LETTER G WITH CEDILLA; Gcedilla, Gcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{G}{\81\042}% U+0122 +% U+0123 LATIN SMALL LETTER G WITH CEDILLA; gcedilla, gcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{g}{\81\043}% U+0123 +% U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX; Hcircumflex +\DeclareTextCompositeCommand{\^}{PU}{H}{\81\044}% U+0124 +% U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX; hcircumflex +\DeclareTextCompositeCommand{\^}{PU}{h}{\81\045}% U+0125 +% U+0126 LATIN CAPITAL LETTER H WITH STROKE; Hbar +\DeclareTextCommand{\textHslash}{PU}{\81\046}% U+0126 +% U+0127 LATIN SMALL LETTER H WITH STROKE; hbar; \hbar (AmS) +\DeclareTextCommand{\texthbar}{PU}{\81\047}%* U+0127 +%* \texthbar -> \textcrh (tipa) +%* \texthbar -> \crossh (wsuipa) +%* \texthbar -> \planck (phonetic) +% U+0128 LATIN CAPITAL LETTER I WITH TILDE; Itilde +\DeclareTextCompositeCommand{\~}{PU}{I}{\81\050}% U+0128 +% U+0129 LATIN SMALL LETTER I WITH TILDE; itilde +\DeclareTextCompositeCommand{\~}{PU}{i}{\81\051}% U+0129 +\DeclareTextCompositeCommand{\~}{PU}{\i}{\81\051}% U+0129 +% U+012A LATIN CAPITAL LETTER I WITH MACRON; Imacron +\DeclareTextCompositeCommand{\=}{PU}{I}{\81\052}% U+012A +% U+012B LATIN SMALL LETTER I WITH MACRON; imacron +\DeclareTextCompositeCommand{\=}{PU}{i}{\81\053}% U+012B +\DeclareTextCompositeCommand{\=}{PU}{\i}{\81\053}% U+012B +% U+012C LATIN CAPITAL LETTER I WITH BREVE; Ibreve +\DeclareTextCompositeCommand{\u}{PU}{I}{\81\054}% U+012C +% U+012D LATIN SMALL LETTER I WITH BREVE; ibreve +\DeclareTextCompositeCommand{\u}{PU}{i}{\81\055}% U+012D +\DeclareTextCompositeCommand{\u}{PU}{\i}{\81\055}% U+012D +% U+012E LATIN CAPITAL LETTER I WITH OGONEK; Iogonek +\DeclareTextCompositeCommand{\k}{PU}{I}{\81\056}% U+012E +% U+012F LATIN SMALL LETTER I WITH OGONEK; iogonek +\DeclareTextCompositeCommand{\k}{PU}{i}{\81\057}% U+012F +\DeclareTextCompositeCommand{\k}{PU}{\i}{\81\057}% U+012F +% U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE; Idot, Idotaccent +\DeclareTextCompositeCommand{\.}{PU}{I}{\81\060}% U+0130 +% U+0131 LATIN SMALL LETTER DOTLESS I; dotlessi +\DeclareTextCommand{\i}{PU}{\81\061}% U+0131 +% U+0132 LATIN CAPITAL LIGATURE IJ; IJ +\DeclareTextCommand{\IJ}{PU}{\81\062}% U+0132 +% U+0133 LATIN SMALL LIGATURE IJ; ij +\DeclareTextCommand{\ij}{PU}{\81\063}% U+0133 +% U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX; Jcircumflex +\DeclareTextCompositeCommand{\^}{PU}{J}{\81\064}% U+0134 +% U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX; jcircumflex +\DeclareTextCompositeCommand{\^}{PU}{j}{\81\065}% U+0135 +\DeclareTextCompositeCommand{\^}{PU}{\j}{\81\065}% U+0135 +% U+0136 LATIN CAPITAL LETTER K WITH CEDILLA; Kcedilla, Kcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{K}{\81\066}% U+0136 +% U+0137 LATIN SMALL LETTER K WITH CEDILLA; kcedilla, kcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{k}{\81\067}% U+0137 +% \end{macrocode} +% The canonical name of U+0138, small letter kra, would be +% \cs{textkgreenlandic}, following the glyph naming convention. +% However |latex/base/inputenc.dtx| has choosen \cs{textkra}. +% \begin{macrocode} +% U+0138 LATIN SMALL LETTER KRA; kgreenlandic +\DeclareTextCommand{\textkra}{PU}{\81\070}% U+0138 +% U+0139 LATIN CAPITAL LETTER L WITH ACUTE; Lacute +\DeclareTextCompositeCommand{\'}{PU}{L}{\81\071}% U+0139 +% U+013A LATIN SMALL LETTER L WITH ACUTE; lacute +\DeclareTextCompositeCommand{\'}{PU}{l}{\81\072}% U+013A +% U+013B LATIN CAPITAL LETTER L WITH CEDILLA; Lcedilla, Lcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{L}{\81\073}% U+013B +% U+013C LATIN SMALL LETTER L WITH CEDILLA; lcedilla, lcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{l}{\81\074}% U+013C +% U+013D LATIN CAPITAL LETTER L WITH CARON; Lcaron +\DeclareTextCompositeCommand{\v}{PU}{L}{\81\075}% U+013D +% U+013E LATIN SMALL LETTER L WITH CARON; lcaron +\DeclareTextCompositeCommand{\v}{PU}{l}{\81\076}% U+013E +% \end{macrocode} +% There seems to be no variants of letters `L' and `l' with +% a dot above (reasonable). Therefore the \cs{.} accent +% is reused instead of making a separate accent macro +% \cs{textmiddledot}. +% \begin{macrocode} +% U+013F LATIN CAPITAL LETTER L WITH MIDDLE DOT; Ldot, Ldotaccent +\DeclareTextCompositeCommand{\.}{PU}{L}{\81\077}% U+013F +% U+0140 LATIN SMALL LETTER L WITH MIDDLE DOT; ldot, ldotaccent +\DeclareTextCompositeCommand{\.}{PU}{l}{\81\100}% U+0140 +% U+0141 LATIN CAPITAL LETTER L WITH STROKE; Lslash +\DeclareTextCommand{\L}{PU}{\81\101}% U+0141 +% U+0142 LATIN SMALL LETTER L WITH STROKE; lslash +\DeclareTextCommand{\l}{PU}{\81\102}% U+0142 +% U+0143 LATIN CAPITAL LETTER N WITH ACUTE; Nacute +\DeclareTextCompositeCommand{\'}{PU}{N}{\81\103}% U+0143 +% U+0144 LATIN SMALL LETTER N WITH ACUTE; nacute +\DeclareTextCompositeCommand{\'}{PU}{n}{\81\104}% U+0144 +% U+0145 LATIN CAPITAL LETTER N WITH CEDILLA; Ncedilla, Ncommaaccent +\DeclareTextCompositeCommand{\c}{PU}{N}{\81\105}% U+0145 +% U+0146 LATIN SMALL LETTER N WITH CEDILLA; ncedilla, ncommaaccent +\DeclareTextCompositeCommand{\c}{PU}{n}{\81\106}% U+0146 +% U+0147 LATIN CAPITAL LETTER N WITH CARON; Ncaron +\DeclareTextCompositeCommand{\v}{PU}{N}{\81\107}% U+0147 +% U+0148 LATIN SMALL LETTER N WITH CARON; ncaron +\DeclareTextCompositeCommand{\v}{PU}{n}{\81\110}% U+0148 +% U+0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE; napostrophe, quoterightn +\DeclareTextCommand{\textnapostrophe}{PU}{\81\111}% U+0149 +% U+014A LATIN CAPITAL LETTER ENG; Eng +\DeclareTextCommand{\NG}{PU}{\81\112}% U+014A +% U+014B LATIN SMALL LETTER ENG; eng +\DeclareTextCommand{\ng}{PU}{\81\113}% U+014B +%* \ng -> \eng (wsuipa) +%* \ng -> \engma (phonetic) +% U+014C LATIN CAPITAL LETTER O WITH MACRON; Omacron +\DeclareTextCompositeCommand{\=}{PU}{O}{\81\114}% U+014C +% U+014D LATIN SMALL LETTER O WITH MACRON; omacron +\DeclareTextCompositeCommand{\=}{PU}{o}{\81\115}% U+014D +% U+014E LATIN CAPITAL LETTER O WITH BREVE; Obreve +\DeclareTextCompositeCommand{\u}{PU}{O}{\81\116}% U+014E +% U+014F LATIN SMALL LETTER O WITH BREVE; obreve +\DeclareTextCompositeCommand{\u}{PU}{o}{\81\117}% U+014F +% U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE; Odblacute, Ohungarumlaut +\DeclareTextCompositeCommand{\H}{PU}{O}{\81\120}% U+0150 +% U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE; odblacute, ohungarumlaut +\DeclareTextCompositeCommand{\H}{PU}{o}{\81\121}% U+0151 +% U+0152 LATIN CAPITAL LIGATURE OE; OE +\DeclareTextCommand{\OE}{PU}{\81\122}% U+0152 +% U+0153 LATIN SMALL LIGATURE OE; oe +\DeclareTextCommand{\oe}{PU}{\81\123}% U+0153 +% U+0154 LATIN CAPITAL LETTER R WITH ACUTE; Racute +\DeclareTextCompositeCommand{\'}{PU}{R}{\81\124}% U+0154 +% U+0155 LATIN SMALL LETTER R WITH ACUTE; racute +\DeclareTextCompositeCommand{\'}{PU}{r}{\81\125}% U+0155 +% U+0156 LATIN CAPITAL LETTER R WITH CEDILLA; Rcedilla, Rcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{R}{\81\126}% U+0156 +% U+0157 LATIN SMALL LETTER R WITH CEDILLA; rcedilla, rcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{r}{\81\127}% U+0157 +% U+0158 LATIN CAPITAL LETTER R WITH CARON; Rcaron +\DeclareTextCompositeCommand{\v}{PU}{R}{\81\130}% U+0158 +% U+0159 LATIN SMALL LETTER R WITH CARON; rcaron +\DeclareTextCompositeCommand{\v}{PU}{r}{\81\131}% U+0159 +% U+015A LATIN CAPITAL LETTER S WITH ACUTE; Sacute +\DeclareTextCompositeCommand{\'}{PU}{S}{\81\132}% U+015A +% U+015B LATIN SMALL LETTER S WITH ACUTE; sacute +\DeclareTextCompositeCommand{\'}{PU}{s}{\81\133}% U+015B +% U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX; Scircumflex +\DeclareTextCompositeCommand{\^}{PU}{S}{\81\134}% U+015C +% U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX; scircumflex +\DeclareTextCompositeCommand{\^}{PU}{s}{\81\135}% U+015D +% U+015E LATIN CAPITAL LETTER S WITH CEDILLA; Scedilla +\DeclareTextCompositeCommand{\c}{PU}{S}{\81\136}% U+015E +% U+015F LATIN SMALL LETTER S WITH CEDILLA; scedilla +\DeclareTextCompositeCommand{\c}{PU}{s}{\81\137}% U+015F +% U+0160 LATIN CAPITAL LETTER S WITH CARON; Scaron +\DeclareTextCompositeCommand{\v}{PU}{S}{\81\140}% U+0160 +% U+0161 LATIN SMALL LETTER S WITH CARON; scaron +\DeclareTextCompositeCommand{\v}{PU}{s}{\81\141}% U+0161 +% U+0162 LATIN CAPITAL LETTER T WITH CEDILLA; Tcedilla, Tcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{T}{\81\142}% U+0162 +% U+0163 LATIN SMALL LETTER T WITH CEDILLA; tcedilla, tcommaaccent +\DeclareTextCompositeCommand{\c}{PU}{t}{\81\143}% U+0163 +% U+0164 LATIN CAPITAL LETTER T WITH CARON; Tcaron +\DeclareTextCompositeCommand{\v}{PU}{T}{\81\144}% U+0164 +% U+0165 LATIN SMALL LETTER T WITH CARON; tcaron +\DeclareTextCompositeCommand{\v}{PU}{t}{\81\145}% U+0165 +% U+0166 LATIN CAPITAL LETTER T WITH STROKE; Tbar +\DeclareTextCommand{\textTslash}{PU}{\81\146}% U+0166 +% U+0167 LATIN SMALL LETTER T WITH STROKE; tbar +\DeclareTextCommand{\texttslash}{PU}{\81\147}% U+0167 +% U+0168 LATIN CAPITAL LETTER U WITH TILDE; Utilde +\DeclareTextCompositeCommand{\~}{PU}{U}{\81\150}% U+0168 +% U+0169 LATIN SMALL LETTER U WITH TILDE; utilde +\DeclareTextCompositeCommand{\~}{PU}{u}{\81\151}% U+0169 +% U+016A LATIN CAPITAL LETTER U WITH MACRON; Umacron +\DeclareTextCompositeCommand{\=}{PU}{U}{\81\152}% U+016A +% U+016B LATIN SMALL LETTER U WITH MACRON; umacron +\DeclareTextCompositeCommand{\=}{PU}{u}{\81\153}% U+016B +% U+016C LATIN CAPITAL LETTER U WITH BREVE; Ubreve +\DeclareTextCompositeCommand{\u}{PU}{U}{\81\154}% U+016C +% U+016D LATIN SMALL LETTER U WITH BREVE; ubreve +\DeclareTextCompositeCommand{\u}{PU}{u}{\81\155}% U+016D +% U+016E LATIN CAPITAL LETTER U WITH RING ABOVE; Uring +\DeclareTextCompositeCommand{\r}{PU}{U}{\81\156}% U+016E +% U+016F LATIN SMALL LETTER U WITH RING ABOVE; uring +\DeclareTextCompositeCommand{\r}{PU}{u}{\81\157}% U+016F +% U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE; Udblacute, Uhungarumlaut +\DeclareTextCompositeCommand{\H}{PU}{U}{\81\160}% U+0170 +% U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE; udblacute, uhungarumlaut +\DeclareTextCompositeCommand{\H}{PU}{u}{\81\161}% U+0171 +% U+0172 LATIN CAPITAL LETTER U WITH OGONEK; Uogonek +\DeclareTextCompositeCommand{\k}{PU}{U}{\81\162}% U+0172 +% U+0173 LATIN SMALL LETTER U WITH OGONEK; uogonek +\DeclareTextCompositeCommand{\k}{PU}{u}{\81\163}% U+0173 +% U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX; Wcircumflex +\DeclareTextCompositeCommand{\^}{PU}{W}{\81\164}% U+0174 +% U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX; wcircumflex +\DeclareTextCompositeCommand{\^}{PU}{w}{\81\165}% U+0175 +% U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX; Ycircumflex +\DeclareTextCompositeCommand{\^}{PU}{Y}{\81\166}% U+0176 +% U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX; ycircumflex +\DeclareTextCompositeCommand{\^}{PU}{y}{\81\167}% U+0177 +% U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS; Ydieresis +\DeclareTextCompositeCommand{\"}{PU}{Y}{\81\170}% U+0178 +% U+0179 LATIN CAPITAL LETTER Z WITH ACUTE; Zacute +\DeclareTextCompositeCommand{\'}{PU}{Z}{\81\171}% U+0179 +% U+017A LATIN SMALL LETTER Z WITH ACUTE; zacute +\DeclareTextCompositeCommand{\'}{PU}{z}{\81\172}% U+017A +% U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE; Zdot, Zdotaccent +\DeclareTextCompositeCommand{\.}{PU}{Z}{\81\173}% U+017B +% U+017C LATIN SMALL LETTER Z WITH DOT ABOVE; zdot, zdotaccent +\DeclareTextCompositeCommand{\.}{PU}{z}{\81\174}% U+017C +% U+017D LATIN CAPITAL LETTER Z WITH CARON; Zcaron +\DeclareTextCompositeCommand{\v}{PU}{Z}{\81\175}% U+017D +% U+017E LATIN SMALL LETTER Z WITH CARON; zcaron +\DeclareTextCompositeCommand{\v}{PU}{z}{\81\176}% U+017E +% U+017F LATIN SMALL LETTER LONG S; longs, slong +\DeclareTextCommand{\textlongs}{PU}{\81\177}% U+017F +% \end{macrocode} +% +% \subsubsection{Latin Extended-B: U+0180 to U+024F} +% +% \begin{macrocode} +% U+0180 LATIN SMALL LETTER B WITH STROKE; bstroke; \textcrb (tipa) +\DeclareTextCommand{\textcrb}{PU}{\81\200}% U+0180 +%* \textcrb -> \crossb (wsuipa) +% An alternate glyph with the stroke through the bowl: +%* \textcrb -> \textbarb (tipa) +%* \textcrb -> \barb (wsuipa) +% U+0181 LATIN CAPITAL LETTER B WITH HOOK; Bhook; \hausaB (phonetic) +\DeclareTextCommand{\texthausaB}{PU}{\81\201}%* U+0181 +% U+0188 LATIN SMALL LETTER C WITH HOOK; chook; \texthtc (tipa) +\DeclareTextCommand{\texthtc}{PU}{\81\210}% U+0188 +% U+018A LATIN CAPITAL LETTER D WITH HOOK; Dhook; \hausaD (phonetic) +\DeclareTextCommand{\texthausaD}{PU}{\81\212}%* U+018A +% U+018E LATIN CAPITAL LETTER REVERSED E; Ereversed +\DeclareTextCommand{\textEreversed}{PU}{\81\216}% U+018E +\DeclareTextCommand{\textrevE}{PU}{\81\216}% U+018E +% U+0192 LATIN SMALL LETTER F WITH HOOK; florin +\DeclareTextCommand{\textflorin}{PU}{\81\222}% U+0192 +%* \textflorin -> \Florin (marvosym) +% U+0195 LATIN SMALL LETTER HV; hv; \texthvlig (tipa) +\DeclareTextCommand{\texthvlig}{PU}{\81\225}% U+0195 +%* \texthvlig -> \hv (wsuipa) +% U+0198 LATIN CAPITAL LETTER K WITH HOOK; Khook; \hausaK (phonetic) +\DeclareTextCommand{\texthausaK}{PU}{\81\230}%* U+0198 +% U+0199 LATIN SMALL LETTER K WITH HOOK; khook; \texthtk (tipa) +\DeclareTextCommand{\texthtk}{PU}{\81\231}% U+0199 +%* \texthtk -> \hausak (phonetic) +% U+019A LATIN SMALL LETTER L WITH BAR; lbar; +% \textbarl (tipa), \barl (wsuipa) +\DeclareTextCommand{\textbarl}{PU}{\81\232}%* U+019A +% U+019B LATIN SMALL LETTER LAMBDA WITH STROKE/ +% LATIN SMALL LETTER BARRED LAMBDA; lambdastroke; +% \textcrlambda (tipa) +\DeclareTextCommand{\textcrlambda}{PU}{\81\233}% U+019B +%* \textcrlambda -> \crossnilambda (wsuipa) +%* \textcrlambda -> \barlambda (phonetic) +%* \textcrlambda -> \lambdabar (txfonts/pxfonts) +%* \textcrlambda -> \lambdaslash (txfonts/pxfonts) +% U+019E LATIN SMALL LETTER N WITH LONG RIGHT LEG; nlegrightlong; +% \textnrleg (tipx) +\DeclareTextCommand{\textPUnrleg}{PU}{\81\236}% U+019E +%* \textPUnrleg -> \textnrleg (tipx) +% U+01A5 LATIN SMALL LETTER P WITH HOOK; phook; \texthtp (tipa) +\DeclareTextCommand{\texthtp}{PU}{\81\245}% U+01A5 +% U+01AB LATIN SMALL LETTER T WITH PALATAL HOOK; tpalatalhook; +% \textlhookt (tipa) +\DeclareTextCommand{\textlhookt}{PU}{\81\253}% U+01AB +% U+01AD LATIN SMALL LETTER T WITH HOOK; thook; \texthtt (tipa) +\DeclareTextCommand{\texthtt}{PU}{\81\255}% U+01AD +% U+01B9 LATIN SMALL LETTER EZH REVERSED/ +% LATIN SMALL LETTER REVERSED YOGH; \textrevyogh (tipa) +\DeclareTextCommand{\textrevyogh}{PU}{\81\271}% U+01B9 +% U+01BB LATIN LETTER TWO WITH STROKE; twostroke; \textcrtwo (tipa) +\DeclareTextCommand{\textcrtwo}{PU}{\81\273}% U+01BB +% U+01BE LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE; +% glottalinvertedstroke; \textcrinvglotstop (tipa) +\DeclareTextCommand{\textcrinvglotstop}{PU}{\81\276}% U+01BE +% U+01BF LATIN LETTER WYNN; wynn; \textwynn (tipa) +\DeclareTextCommand{\textwynn}{PU}{\81\277}% U+01BF +% U+01C0 LATIN LETTER DENTAL CLICK/LATIN LETTER PIPE; clickdental; +% \textpipe (tipa) +\DeclareTextCommand{\textpipe}{PU}{\81\300}% U+01C0 +%* \textpipe -> \textpipevar (tipx) +% U+01C1 LATIN LETTER LATERAL CLICK/LATIN LETTER +% DOUBLE PIPE; clicklateral; \textdoublepipe (tipa) +\DeclareTextCommand{\textdoublepipe}{PU}{\81\301}% U+01C1 +%* \textdoublepipe -> \textdoublepipevar (tipx) +% U+01C2 LATIN LETTER ALVEOLAR CLICK/LATIN LETTER PIPE DOUBLE BAR; +% clickalveolar; \textdoublebarpipe (tipa) +\DeclareTextCommand{\textdoublebarpipe}{PU}{\81\302}% U+01C2 +%* \textdoublebarpipe -> \textdoublebarpipevar (tipx) +% U+01CD LATIN CAPITAL LETTER A WITH CARON; Acaron +\DeclareTextCompositeCommand{\v}{PU}{A}{\81\315}% U+01CD +% U+01CE LATIN SMALL LETTER A WITH CARON; acaron +\DeclareTextCompositeCommand{\v}{PU}{a}{\81\316}% U+01CE +% U+01CF LATIN CAPITAL LETTER I WITH CARON; Icaron +\DeclareTextCompositeCommand{\v}{PU}{I}{\81\317}% U+01CF +% U+01D0 LATIN SMALL LETTER I WITH CARON; icaron +\DeclareTextCompositeCommand{\v}{PU}{\i}{\81\320}% U+01D0 +\DeclareTextCompositeCommand{\v}{PU}{i}{\81\320}% U+01D0 +% U+01D1 LATIN CAPITAL LETTER O WITH CARON; Ocaron +\DeclareTextCompositeCommand{\v}{PU}{O}{\81\321}% U+01D1 +% U+01D2 LATIN SMALL LETTER O WITH CARON; ocaron +\DeclareTextCompositeCommand{\v}{PU}{o}{\81\322}% U+01D2 +% U+01D3 LATIN CAPITAL LETTER U WITH CARON; Ucaron +\DeclareTextCompositeCommand{\v}{PU}{U}{\81\323}% U+01D3 +% U+01D4 LATIN SMALL LETTER U WITH CARON; ucaron +\DeclareTextCompositeCommand{\v}{PU}{u}{\81\324}% U+01D4 +% U+01DD LATIN SMALL LETTER TURNED E; eturned; \inve (wasysym) +\DeclareTextCommand{\textinve}{PU}{\81\335}%* U+01DD +% U+01E4 LATIN CAPITAL LETTER G WITH STROKE; Gstroke +\DeclareTextCommand{\textGslash}{PU}{\81\344}% U+01E4 +% U+01E5 LATIN SMALL LETTER G WITH STROKE; gstroke +\DeclareTextCommand{\textgslash}{PU}{\81\345}% U+01E5 +%* \textgslash -> \textcrg (tipa) +% U+01E6 LATIN CAPITAL LETTER G WITH CARON; Gcaron +\DeclareTextCompositeCommand{\v}{PU}{G}{\81\346}% U+01E6 +% U+01E7 LATIN SMALL LETTER G WITH CARON; gcaron +\DeclareTextCompositeCommand{\v}{PU}{g}{\81\347}% U+01E7 +% U+01E8 LATIN CAPITAL LETTER K WITH CARON; Kcaron +\DeclareTextCompositeCommand{\v}{PU}{K}{\81\350}% U+01E8 +% U+01E9 LATIN SMALL LETTER K WITH CARON; kcaron +\DeclareTextCompositeCommand{\v}{PU}{k}{\81\351}% U+01E9 +% U+01EA LATIN CAPITAL LETTER O WITH OGONEK; Oogonek +\DeclareTextCompositeCommand{\k}{PU}{O}{\81\352}% U+01EA +% U+01EB LATIN SMALL LETTER O WITH OGONEK; oogonek +\DeclareTextCompositeCommand{\k}{PU}{o}{\81\353}% U+01EB +% U+01F0 LATIN SMALL LETTER J WITH CARON; jcaron +\DeclareTextCompositeCommand{\v}{PU}{\j}{\81\360}% U+01F0 +\DeclareTextCompositeCommand{\v}{PU}{j}{\81\360}% U+01F0 +% U+01F4 LATIN CAPITAL LETTER G WITH ACUTE; Gacute +\DeclareTextCompositeCommand{\'}{PU}{G}{\81\364}% U+01F4 +% U+01F5 LATIN SMALL LETTER G WITH ACUTE; gacute +\DeclareTextCompositeCommand{\'}{PU}{g}{\81\365}% U+01F5 +% U+01F8 LATIN CAPITAL LETTER N WITH GRAVE +\DeclareTextCompositeCommand{\`}{PU}{N}{\81\370}% U+01F8 +% U+01F9 LATIN SMALL LETTER N WITH GRAVE +\DeclareTextCompositeCommand{\`}{PU}{n}{\81\371}% U+01F9 +% U+01FC LATIN CAPITAL LETTER AE WITH ACUTE; AEacute +\DeclareTextCompositeCommand{\'}{PU}{\AE}{\81\374}% U+01FC +% U+01FD LATIN SMALL LETTER AE WITH ACUTE; aeacute +\DeclareTextCompositeCommand{\'}{PU}{\ae}{\81\375}% U+01FD +% U+01FE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE; +% *Oslashacute, Ostrokeacut +\DeclareTextCompositeCommand{\'}{PU}{\O}{\81\376}% U+01FE +% U+01FF LATIN SMALL LETTER O WITH STROKE AND ACUTE; +% *oslashacute, ostrokeacute +\DeclareTextCompositeCommand{\'}{PU}{\o}{\81\377}% U+01FF +% U+0200 LATIN CAPITAL LETTER A WITH DOUBLE GRAVE; Adblgrave +\DeclareTextCompositeCommand{\G}{PU}{A}{\82\000}% U+0200 +% U+0201 LATIN SMALL LETTER A WITH DOUBLE GRAVE; adblgrave +\DeclareTextCompositeCommand{\G}{PU}{a}{\82\001}% U+0201 +% U+0204 LATIN CAPITAL LETTER E WITH DOUBLE GRAVE; Edblgrave +\DeclareTextCompositeCommand{\G}{PU}{E}{\82\004}% U+0204 +% U+0205 LATIN SMALL LETTER E WITH DOUBLE GRAVE; edblgrave +\DeclareTextCompositeCommand{\G}{PU}{e}{\82\005}% U+0205 +% U+0206 LATIN CAPITAL LETTER E WITH INVERTED BREVE; Einvertedbreve +\DeclareTextCompositeCommand{\textinvbreve}{PU}{E}{\82\006}% U+0206 +% U+0207 LATIN SMALL LETTER E WITH INVERTED BREVE; einvertedbreve +\DeclareTextCompositeCommand{\textinvbreve}{PU}{e}{\82\007}% U+0207 +% U+0208 LATIN CAPITAL LETTER I WITH DOUBLE GRAVE; Idblgrave +\DeclareTextCompositeCommand{\G}{PU}{I}{\82\010}% U+0208 +% U+0209 LATIN SMALL LETTER I WITH DOUBLE GRAVE; idblgrave +\DeclareTextCompositeCommand{\G}{PU}{\i}{\82\011}% U+0209 +\DeclareTextCompositeCommand{\G}{PU}{i}{\82\011}% U+0209 +% U+020A LATIN CAPITAL LETTER I WITH INVERTED BREVE; Iinvertedbreve +\DeclareTextCompositeCommand{\textinvbreve}{PU}{I}{\82\012}% U+020A +% U+020B LATIN SMALL LETTER I WITH INVERTED BREVE; iinvertedbreve +\DeclareTextCompositeCommand{\textinvbreve}{PU}{i}{\82\013}% U+020B +\DeclareTextCompositeCommand{\textinvbreve}{PU}{\i}{\82\013}% U+020B +% U+020C LATIN CAPITAL LETTER O WITH DOUBLE GRAVE; Odblgrave +\DeclareTextCompositeCommand{\G}{PU}{O}{\82\014}% U+020C +% U+020D LATIN SMALL LETTER O WITH DOUBLE GRAVE; odblgrave +\DeclareTextCompositeCommand{\G}{PU}{o}{\82\015}% U+020D +% U+020E LATIN CAPITAL LETTER O WITH INVERTED BREVE; Oinvertedbreve +\DeclareTextCompositeCommand{\textinvbreve}{PU}{O}{\82\016}% U+020E +% U+020F LATIN SMALL LETTER O WITH INVERTED BREVE; oinvertedbreve +\DeclareTextCompositeCommand{\textinvbreve}{PU}{o}{\82\017}% U+020F +% U+0210 LATIN CAPITAL LETTER R WITH DOUBLE GRAVE; Rdblgrave +\DeclareTextCompositeCommand{\G}{PU}{R}{\82\020}% U+0210 +% U+0211 LATIN SMALL LETTER R WITH DOUBLE GRAVE; rdblgrave +\DeclareTextCompositeCommand{\G}{PU}{r}{\82\021}% U+0211 +% U+0214 LATIN CAPITAL LETTER U WITH DOUBLE GRAVE; Udblgrave +\DeclareTextCompositeCommand{\G}{PU}{U}{\82\024}% U+0214 +% U+0215 LATIN SMALL LETTER U WITH DOUBLE GRAVE; udblgrave +\DeclareTextCompositeCommand{\G}{PU}{u}{\82\025}% U+0215 +% U+0216 LATIN CAPITAL LETTER U WITH INVERTED BREVE; Uinvertedbreve +\DeclareTextCompositeCommand{\textinvbreve}{PU}{U}{\82\026}% U+0216 +% U+0217 LATIN SMALL LETTER U WITH INVERTED BREVE; uinvertedbreve +\DeclareTextCompositeCommand{\textinvbreve}{PU}{u}{\82\027}% U+0217 +% U+021E LATIN CAPITAL LETTER H WITH CARON +\DeclareTextCompositeCommand{\v}{PU}{H}{\82\036}% U+021E +% U+021F LATIN SMALL LETTER H WITH CARON +\DeclareTextCompositeCommand{\v}{PU}{h}{\82\037}% U+021F +% U+0221 LATIN SMALL LETTER D WITH CURL; \textctd (tipa) +\DeclareTextCommand{\textctd}{PU}{\82\041}% U+0221 +% U+0225 LATIN SMALL LETTER Z WITH HOOK; \textcommatailz (tipa) +\DeclareTextCommand{\textcommatailz}{PU}{\82\045}% U+0225 +% U+0226 LATIN CAPITAL LETTER A WITH DOT ABOVE +\DeclareTextCompositeCommand{\.}{PU}{A}{\82\046}% U+0226 +% U+0227 LATIN SMALL LETTER A WITH DOT ABOVE +\DeclareTextCompositeCommand{\.}{PU}{a}{\82\047}% U+0227 +% U+0228 LATIN CAPITAL LETTER E WITH CEDILLA +\DeclareTextCompositeCommand{\c}{PU}{E}{\82\050}% U+0228 +% U+0229 LATIN SMALL LETTER E WITH CEDILLA +\DeclareTextCompositeCommand{\c}{PU}{e}{\82\051}% U+0229 +% U+022E LATIN CAPITAL LETTER O WITH DOT ABOVE +\DeclareTextCompositeCommand{\.}{PU}{O}{\82\056}% U+022E +% U+022F LATIN SMALL LETTER O WITH DOT ABOVE +\DeclareTextCompositeCommand{\.}{PU}{o}{\82\057}% U+022F +% U+0232 LATIN CAPITAL LETTER Y WITH MACRON +\DeclareTextCompositeCommand{\=}{PU}{Y}{\82\062}% U+0232 +% U+0233 LATIN SMALL LETTER Y WITH MACRON +\DeclareTextCompositeCommand{\=}{PU}{y}{\82\063}% U+0233 +% U+0235 LATIN SMALL LETTER N WITH CURL; \textctn (tipa) +\DeclareTextCommand{\textctn}{PU}{\82\065}% U+0235 +% U+0236 LATIN SMALL LETTER T WITH CURL; \textctt (tipa) +\DeclareTextCommand{\textctt}{PU}{\82\066}% U+0236 +% U+0237 LATIN SMALL LETTER DOTLESS J +\DeclareTextCommand{\j}{PU}{\82\067}% U+0237 +% U+0238 LATIN SMALL LETTER DB DIGRAPH; \textdblig (tipx) +\DeclareTextCommand{\textPUdblig}{PU}{\82\070}% U+0238 +%* \textPUdblig -> \textdblig (tipx) +% U+0239 LATIN SMALL LETTER QP DIGRAPH; \textqplig (tipx) +\DeclareTextCommand{\textPUqplig}{PU}{\82\071}% U+0239 +%* \textPUqplig -> \textqplig (tipx) +% U+023C LATIN SMALL LETTER C WITH STROKE; \slashc (wsuipa) +\DeclareTextCommand{\textslashc}{PU}{\82\074}%* U+023C +%* \textslashc -> \textcentoldstyle (textcomp) +% With bar instead of stroke: +%* \textslashc -> \textbarc (tipa) +% \end{macrocode} +% +% \subsubsection{IPA Extensions: U+0250 to U+02AF} +% +% \begin{macrocode} +% U+0250 LATIN SMALL LETTER TURNED A; aturned; \textturna (tipa) +\DeclareTextCommand{\textturna}{PU}{\82\120}% U+0250 +%* \textturna -> \inva (wasysym) +% U+0251 LATIN SMALL LETTER ALPHA/LATIN SMALL LETTER +% SCRIPT A; ascript; \textscripta (tipa), \scripta (wsuipa) +\DeclareTextCommand{\textscripta}{PU}{\82\121}%* U+0251 +%* \textscripta -> \vara (phonetic) +% U+0252 LATIN SMALL LETTER TURNED ALPHA; ascriptturned; +% \textturnscripta (tipa) +\DeclareTextCommand{\textturnscripta}{PU}{\82\122}% U+0252 +%* \textturnscripta -> \invscripta (wsuipa) +%* \textturnscripta -> \rotvara (phonetic) +% U+0253 LATIN CAPITAL LETTER B WITH HOOK; bhook; \texthtb (tipa) +\DeclareTextCommand{\texthtb}{PU}{\82\123}% U+0253 +%* \texthtb -> \hookb (wsuipa) +%* \texthtb -> \hausab (phonetic) +% U+0254 LATIN SMALL LETTER OPEN O; oopen; +% \textopeno (tipa), \openo (wasysym) +\DeclareTextCommand{\textopeno}{PU}{\82\124}%* U+0254 +%* \textopeno -> \varopeno (phonetic) +% U+0255 LATIN SMALL LETTER C WITH CURL; ccurl; \textctc (tipa) +\DeclareTextCommand{\textctc}{PU}{\82\125}% U+0255 +%* \textctc -> \curlyc (wsuipa) +% U+0256 LATIN SMALL LETTER D WITH TAIL; dtail; \textrtaild (tipa) +\DeclareTextCommand{\textrtaild}{PU}{\82\126}%* U+0256 +%* \textrtaild -> \taild (wsuipa) +% U+0257 LATIN SMALL LETTER D WITH HOOK; dhook; \texthtd (tipa) +\DeclareTextCommand{\texthtd}{PU}{\82\127}% U+0257 +%* \texthtd -> \hookd (wsuipa) +%* \texthtd -> \hausad (phonetic) +% U+0258 LATIN SMALL LETTER REVERSED E; ereversed; +% \textreve (tipa), \reve (wsuipa) +\DeclareTextCommand{\textreve}{PU}{\82\130}%* U+0258 +% U+0259 LATIN SMALL LETTER SCHWA; schwa; +% \textschwa (tipa), \schwa (wsuipa, phonetic) +\DeclareTextCommand{\textschwa}{PU}{\82\131}%* U+0259 +% U+025A LATIN SMALL LETTER SCHWA WITH HOOK; schwahook; +% \textrhookschwa (tipa) +\DeclareTextCommand{\textrhookschwa}{PU}{\82\132}% U+025A +%* \textrhookschwa -> \er (wsuipa) +% U+025B LATIN SMALL LETTER OPEN E/LATIN SMALL LETTER EPSILON; eopen; +% \niepsilon (wsuipa) +\DeclareTextCommand{\textniepsilon}{PU}{\82\133}%* U+025B +%* \textniepsilon -> \epsi (phonetic) +% U+025C LATIN SMALL LETTER REVERSED OPEN E; eopenreversed; +% \textrevepsilon (tipa), \revepsilon (wsuipa) +\DeclareTextCommand{\textrevepsilon}{PU}{\82\134}%* U+025C +% U+025D LATIN SMALL LETTER REVERSED OPEN E WITH HOOK; eopenreversedhook; +% \textrhookrevepsilon (tipa) +\DeclareTextCommand{\textrhookrevepsilon}{PU}{\82\135}%* U+025D +%* \textrhookrevepsilon -> \hookrevepsilon (wsuipa) +% U+025E LATIN SMALL LETTER CLOSED REVERSED OPEN E; eopenreversedclosed; +% \textcloserevepsilon (tipa) +\DeclareTextCommand{\textcloserevepsilon}{PU}{\82\136}% U+025E +%* \textcloserevepsilon -> \closedrevepsilon (wsuipa) +% U+025F LATIN SMALL LETTER DOTLESS J WITH STROKE; jdotlessstroke; +% \textbardotlessj (tipa) +\DeclareTextCommand{\textbardotlessj}{PU}{\82\137}% U+025F +%* \textbardotlessj -> \barj (phonetic) +% U+0260 LATIN SMALL LETTER G WITH HOOK; ghook; \texthtg (tipa) +\DeclareTextCommand{\texthtg}{PU}{\82\140}% U+0260 +%* \texthtg -> \hookg (wsuipa) +% U+0261 LATIN SMALL LETTER SCRIPT G; gscript; +% \textscriptg (tipa), \scriptg (wsuipa) +\DeclareTextCommand{\textscriptg}{PU}{\82\141}%* U+0261 +%* \textscriptg -> \varg (phonetic) +% U+0262 LATIN LETTER SMALL CAPITAL G; \textscg (tipa), \scg (wsuipa) +\DeclareTextCommand{\textscg}{PU}{\82\142}%* U+0262 +% U+0263 LATIN SMALL LETTER GAMMA; gammalatinsmall; +% \ipagamma (wsuipa), \vod (phonetic) +\DeclareTextCommand{\textipagamma}{PU}{\82\143}%* U+0263 +%* \textipagamma -> \vod (pnonetic) +% U+0264 LATIN SMALL LETTER RAMS HORN; ramshorn; +% \babygamma (wsuipa) +\DeclareTextCommand{\textbabygamma}{PU}{\82\144}%* U+0264 +% U+0265 LATIN SMALL LETTER TURNED H; hturned; \textturnh (tipa) +\DeclareTextCommand{\textturnh}{PU}{\82\145}% U+0265 +%* \textturnh -> \invh (wsuipa) +%* \textturnh -> \udesc (phonetic) +% U+0266 LATIN SMALL LETTER H WITH HOOK; hhook; \texthth (tipa) +\DeclareTextCommand{\texthth}{PU}{\82\146}% U+0266 +%* \texthth -> \hookh (wsuipa) +%* \texthth -> \voicedh (phonetic) +% U+0267 LATIN SMALL LETTER HENG WITH HOOK; henghook; \texththeng (tipa) +\DeclareTextCommand{\texththeng}{PU}{\82\147}% U+0267 +%* \texththeng -> \hookheng (wsuipa) +% U+0268 LATIN SMALL LETTER I WITH STROKE; +% \textbari (tipa), \bari (wsuipa) +\DeclareTextCommand{\textbari}{PU}{\82\150}%* U+0268 +%* \textbari -> \ibar (phonetic) +% U+0269 LATIN SMALL LETTER IOTA; iotalatin; \niiota (wsuipa) +\DeclareTextCommand{\textniiota}{PU}{\82\151}%* U+0269 +%* \textniiota -> \vari (phonetic) +% U+026A LATIN LETTER SMALL CAPITAL I; \textsci (tipa), \sci (wsuipa) +\DeclareTextCommand{\textsci}{PU}{\82\152}%* U+026A +% U+026B LATIN SMALL LETTER L WITH MIDDLE TILDE; lmiddletilde; +% \textltilde (tipa) +\DeclareTextCommand{\textltilde}{PU}{\82\153}% U+026B +%* \textltilde -> \tildel (wsuipa) +% U+026C LATIN SMALL LETTER L WITH BELT; lbelt; \textbeltl (tipa) +\DeclareTextCommand{\textbeltl}{PU}{\82\154}% U+026C +%* \textbeltl -> \latfric (wsuipa) +% U+026D LATIN SMALL LETTER L WITH RETROFLEX HOOK; +% lhookretroflex; \textrtaill (tipa) +\DeclareTextCommand{\textrtaill}{PU}{\82\155}% U+026D +%* \textrtaill -> \taill (wsuipa) +% U+026E LATIN SMALL LETTER LEZH; lezh; \textlyoghlig (tipa) +\DeclareTextCommand{\textlyoghlig}{PU}{\82\156}% U+026E +%* \textlyoghlig -> \lz (wsuipa) +% U+026F LATIN SMALL LETTER TURNED M; mturned; \textturnm (tipa) +\DeclareTextCommand{\textturnm}{PU}{\82\157}% U+026F +%* \textturnm -> \invm (wsuipa) +%* \textturnm -> \rotm (phonetic) +% U+0270 LATIN SMALL LETTER TURNED M WITH LONG LEG; mlonglegturned; +% \textturnmrleg (tipa) +\DeclareTextCommand{\textturnmrleg}{PU}{\82\160}% U+0270 +%* \textturnmrleg -> \legm (wsuipa) +% U+0271 LATIN SMALL LETTER M WITH HOOK; mhook; \textltailm (tipa) +\DeclareTextCommand{\textltailm}{PU}{\82\161}% U+0271 +%* \textltailm -> \labdentalnas (wsuipa) +%* \textltailm -> \emgma (phonetic) +% U+0272 LATIN SMALL LETTER N WITH LEFT HOOK; nhookleft; \textltailn (tipa) +\DeclareTextCommand{\textltailn}{PU}{\82\162}% U+0272 +%* \textltailn -> \nj (wsuipa) +%* \textltailn -> \enya (phonetic) +% U+0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK; +% nhookretroflex; \textrtailn (tipa) +\DeclareTextCommand{\textrtailn}{PU}{\82\163}% U+0273 +%* \textrtailn -> \tailn (wsuipa) +% U+0274 LATIN LETTER SMALL CAPITAL N; \textscn (tipa), \scn (wsuipa) +\DeclareTextCommand{\textscn}{PU}{\82\164}%* U+0274 +% U+0275 LATIN CAPITAL LETTER O WITH MIDDLE TILDE/ +% LATIN CAPITAL LETTER BARRED O; obarred; +% \textbaro (tipa), \baro (wsuipa) +% But \baro from stmaryrd is different! +\DeclareTextCommand{\textbaro}{PU}{\82\165}% U+0275 +% U+0276 LATIN LETTER SMALL CAPITAL OE; \textscoelig (tipa) +\DeclareTextCommand{\textscoelig}{PU}{\82\166}% U+0276 +% U+0277 LATIN SMALL LETTER CLOSED OMEGA; omegalatinclosed; +% \textcloseomega (tipa) +\DeclareTextCommand{\textcloseomega}{PU}{\82\167}% U+0277 +%* \textcloseomega -> \closedniomega (wsuipa) +%* \textcloseomega -> \varomega (phonetic) +% U+0278 LATIN SMALL LETTER PHI; philatin; \niphi (wsuipa) +\DeclareTextCommand{\textniphi}{PU}{\82\170}%* U+0278 +% U+0279 LATIN SMALL LETTER TURNED R; rturned; \textturnr (tipa) +\DeclareTextCommand{\textturnr}{PU}{\82\171}% U+0279 +%* \textturnr -> \invr (wsuipa) +%* \textturnr -> \rotr (phonetic) +% U+027A LATIN SMALL LETTER TURNED R WITH LONG LEG; +% rlonglegturned; \textturnlonglegr (tipa) +\DeclareTextCommand{\textturnlonglegr}{PU}{\82\172}% U+027A +%* \textturnlonglegr -> \invlegr (wsuipa) +% U+027B LATIN SMALL LETTER TURNED R WITH HOOK; rhookturned; +% \textturnrrtail (tipa) +\DeclareTextCommand{\textturnrrtail}{PU}{\82\173}% U+027B +%* \textturnrrtail -> \tailinvr (wsuipa) +% U+027C LATIN SMALL LETTER R WITH LONG LEG; rlongleg; \textlonglegr (tipa) +\DeclareTextCommand{\textlonglegr}{PU}{\82\174}%* U+027C +%* \textlonglegr -> \legr (wsuipa) +% U+027D LATIN SMALL LETTER R WITH TAIL; rhook; \textrtailr (tipa) +\DeclareTextCommand{\textrtailr}{PU}{\82\175}% U+027D +%* \textrtailr -> \tailr (wsuipa) +% U+027E LATIN SMALL LETTER R WITH FISHHOOK; rfishhook; +% \textfishhookr (tipa) +\DeclareTextCommand{\textfishhookr}{PU}{\82\176}% U+027E +%* \textfishhookr -> \flapr (wsuipa) +%* \textfishhookr -> \flap (phonetic) +% U+027F LATIN SMALL LETTER REVERSED R WITH FISHHOOK; rfishhookreversed; +% \textlhtlongi (tipa) +\DeclareTextCommand{\textlhtlongi}{PU}{\82\177}% U+027F +% U+0280 LATIN LETTER SMALL CAPITAL R; \textscr (tipa), \scr (wsuipa) +\DeclareTextCommand{\textscr}{PU}{\82\200}%* U+0280 +% U+0281 LATIN LETTER SMALL CAPITAL INVERTED R; Rsmallinverted; +% \textinvscr (tipa), \invscr (wsuipa) +\DeclareTextCommand{\textinvscr}{PU}{\82\201}%* U+0281 +% U+0282 LATIN SMALL LETTER S WITH HOOK; shook; \textrtails (tipa) +\DeclareTextCommand{\textrtails}{PU}{\82\202}% U+0282 +%* \textrtails -> \tails (wsuipa) +% U+0283 LATIN SMALL LETTER ESH; esh; \textesh (tipa), \esh (wsuipa) +\DeclareTextCommand{\textesh}{PU}{\82\203}%* U+0283 +% U+0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK; +% dotlessjstrokehook; \texthtbardotlessj (tipa) +\DeclareTextCommand{\texthtbardotlessj}{PU}{\82\204}% U+0284 +% U+0285 LATIN SMALL LETTER SQUAT REVERSED ESH; eshsquatreversed; +% \textvibyi (tipa) +\DeclareTextCommand{\textvibyi}{PU}{\82\205}% U+0285 +% U+0286 LATIN SMALL LETTER ESH WITH CURL; eshcurl; \textctesh (tipa) +\DeclareTextCommand{\textctesh}{PU}{\82\206}% U+0286 +%* \textctesh -> \curlyesh (wsuipa) +% U+0287 LATIN SMALL LETTER TURNED T; tturned; \textturnt (tipa) +\DeclareTextCommand{\textturnt}{PU}{\82\207}% U+0287 +%* \textturnt -> \clickt (wsuipa) +% U+0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK; tretroflexhook; +% \textrtailt (tipa) +\DeclareTextCommand{\textrtailt}{PU}{\82\210}% U+0288 +%* \textrtailt -> \tailt (wsuipa) +% U+0289 LATIN SMALL LETTER U BAR; ubar; +% \textbaru (tipa), \baru (wsuipa) +\DeclareTextCommand{\textbaru}{PU}{\82\211}%* U+0289 +%* \textbaru -> \ubar (phonetic) +% U+028A LATIN SMALL LETTER UPSILON; \niupsilon (wsuipa) +\DeclareTextCommand{\textniupsilon}{PU}{\82\212}%* U+028A +%* \textniupsilon -> \rotOmega (phonetic) +% U+028B LATIN SMALL LETTER V WITH HOOK/LATIN SMALL LETTER SCRIPT V; +% vhook; \textscriptv (tipa), \scriptv (wsuipa) +\DeclareTextCommand{\textscriptv}{PU}{\82\213}%* U+028B +% U+028C LATIN SMALL LETTER TURNED V; vturned; \textturnv (tipa) +\DeclareTextCommand{\textturnv}{PU}{\82\214}%* U+028C +%* \textturnv -> \invv (wsuipa) +%* \textturnv -> \pwedge (phonetic) +% U+028D LATIN SMALL LETTER TURNED W; wturned; \textturnw (tipa) +\DeclareTextCommand{\textturnw}{PU}{\82\215}%* U+028D +%* \textturnw -> \invw (wsuipa) +%* \textturnw -> \rotw (phonetic) +% U+028E LATIN SMALL LETTER TURNED Y; yturned; \textturny (tipa) +\DeclareTextCommand{\textturny}{PU}{\82\216}%* U+028E +%* \textturny -> \invy (wsuipa) +%* \textturny -> \roty (phonetic) +% U+028F LATIN LETTER SMALL CAPITAL Y; \textscy (tipa), \scy (wsuipa) +\DeclareTextCommand{\textscy}{PU}{\82\217}%* U+028F +% U+0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK; zretroflexhook; +% \textrtailz (tipa) +\DeclareTextCommand{\textrtailz}{PU}{\82\220}% U+0290 +%* \textrtailz -> \tailz (wsuipa) +% U+0291 LATIN SMALL LETTER Z WITH CURL; zcurl; \textctz (tipa) +\DeclareTextCommand{\textctz}{PU}{\82\221}% U+0291 +%* \textctz -> \curlyz (wsuipa) +% U+0292 LATIN SMALL LETTER EZH/LATIN SMALL LETTER YOGH; ezh; +% \textyogh (tipa), \yogh (wsuipa) +\DeclareTextCommand{\textyogh}{PU}{\82\222}%* U+0292 +% U+0293 LATIN SMALL LETTER EZH WITH CURL/LATIN SMALL LETTER YOGH CURL; +% ezhcurl; \textctyogh (tipa) +\DeclareTextCommand{\textctyogh}{PU}{\82\223}% U+0293 +%* \textctyogh -> \curlyyogh (wsuipa) +% U+0294 LATIN LETTER GLOTTAL STOP; glottalstop; +% \textglotstop (tipa), \glotstop (wsuipa) +\DeclareTextCommand{\textglotstop}{PU}{\82\224}%* U+0294 +%* \textglotstop -> \ejective (wsuipa) +%* \textglotstop -> \glottal (phonetic) +% U+0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE/ +% LATIN LETTER REVERSED GLOTTAL STOP; glottalstopreversed; +% \textrevglotstop (tipa), \revglotstop (wsuipa) +\DeclareTextCommand{\textrevglotstop}{PU}{\82\225}%* U+0295 +%* \textrevglotstop -> \reveject (wsuipa) +% U+0296 LATIN LETTER INVERTED GLOTTAL STOP; glottalstopinverted; +% \textinvglotstop (tipa), \invglotstop (wsuipa) +\DeclareTextCommand{\textinvglotstop}{PU}{\82\226}%* U+0296 +% U+0297 LATIN LETTER STRETCHED C; cstretched; \textstretchc (tipa) +\DeclareTextCommand{\textstretchc}{PU}{\82\227}% U+0297 +%* \textstretchc -> \clickc (wsuipa) +%* \textstretchc -> \textstretchcvar (tipx) +% U+0298 LATIN LETTER BILABIAL CLICK; bilabialclick; +% \textbullseye (tipa) +\DeclareTextCommand{\textbullseye}{PU}{\82\230}% U+0298 +%* \textbullseye -> \clickb (wsuipa) +%* \textbullseye -> \textObullseye (tipx) +% U+0299 LATIN LETTER SMALL CAPITAL B; \textscb (tipa) +\DeclareTextCommand{\textscb}{PU}{\82\231}% U+0299 +% U+029A LATIN SMALL LETTER CLOSED OPEN E; eopenclosed; +% \textcloseepsilon (tipa) +\DeclareTextCommand{\textcloseepsilon}{PU}{\82\232}% U+029A +% U+029B LATIN LETTER SMALL CAPITAL G WITH HOOK; Gsmallhook; +% \texthtscg (tipa) +\DeclareTextCommand{\texthtscg}{PU}{\82\233}% U+029B +% U+029C LATIN LETTER SMALL CAPITAL H; \textsch (tipa) +\DeclareTextCommand{\textsch}{PU}{\82\234}% U+029C +% U+029D LATIN SMALL LETTER J WITH CROSSED-TAIL; jcrossedtail; \textcdj (tipa) +\DeclareTextCommand{\textctj}{PU}{\82\235}% U+029D +%* \textctj -> \textctjvar (tipx) +% U+029E LATIN SMALL LETTER TURNED K; kturned; \textturnk (tipa) +\DeclareTextCommand{\textturnk}{PU}{\82\236}% U+029E +%* \textturnk -> \textturnsck (tipx) +% U+029F LATIN LETTER SMALL CAPITAL L; \textscl (tipa) +\DeclareTextCommand{\textscl}{PU}{\82\237}% U+029F +% U+02A0 LATIN SMALL LETTER Q WITH HOOK; qhook; \texthtq (tipa) +\DeclareTextCommand{\texthtq}{PU}{\82\240}% U+02A0 +% U+02A1 LATIN LETTER GLOTTAL STOP WITH STROKE; glottalstopstroke; +% \textbarglotstop (tipa) +\DeclareTextCommand{\textbarglotstop}{PU}{\82\241}% U+02A1 +% U+02A2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE/ +% LATIN LETTER REVERSED GLOTTAL STOP BAR; glottalstopstrokereversed; +% \textbarrevglotstop (tipa) +\DeclareTextCommand{\textbarrevglotstop}{PU}{\82\242}% U+02A2 +% U+02A3 LATIN SMALL LETTER DZ DIGRAPH; dzaltone; \textdzlig (tipa) +\DeclareTextCommand{\textdzlig}{PU}{\82\243}% U+02A3 +%* \textdzlig -> \dz (wsupipa) +% U+02A4 LATIN SMALL LETTER DEZH DIGRAPH; dezh; \textdyoghlig (tipa) +\DeclareTextCommand{\textdyoghlig}{PU}{\82\244}% U+02A4 +% U+02A5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL; dzcurl; +% \textdctzlig (tipa) +\DeclareTextCommand{\textdctzlig}{PU}{\82\245}% U+02A5 +% U+02A6 LATIN SMALL LETTER TS DIGRAPH; ts; \texttslig (tipa) +\DeclareTextCommand{\texttslig}{PU}{\82\246}% U+02A6 +% U+02A7 LATIN SMALL LETTER TESH DIGRAPH; tesh; \textteshlig (tipa) +\DeclareTextCommand{\textteshlig}{PU}{\82\247}% U+02A7 +%* \textteshlig -> \tesh (wsuipa) +% U+02A8 LATIN SMALL LETTER TC DIGRAPH WITH CURL; tccurl; +% \texttctclig (tipa) +\DeclareTextCommand{\texttctclig}{PU}{\82\250}% U+02A8 +% U+02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK; +% \textlhtlongy (tipa) +\DeclareTextCommand{\textlhtlongy}{PU}{\82\256}% U+02AE +% U+02AF LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL; +% \textvibyy (tipa) +\DeclareTextCommand{\textvibyy}{PU}{\82\257}% U+02AF +% \end{macrocode} +% +% \subsubsection{Spacing Modifier Letters: U+02B0 to U+02FF} +% +% \begin{macrocode} +% U+02BD MODIFIER LETTER REVERSED COMMA; +% commareversedmod, afii64937; \textrevapostrophe (tipa) +\DeclareTextCommand{\textrevapostrophe}{PU}{\82\275}% U+02BD +% U+02C0 MODIFIER LETTER GLOTTAL STOP; glottalstopmod; +% \textraiseglotstop (tipa) +\DeclareTextCommand{\textraiseglotstop}{PU}{\82\300}% U+02C0 +% U+02C2 MODIFIER LETTER LEFT ARROWHEAD; arrowheadleftmod; +% \textlptr (tipa) +\DeclareTextCommand{\textlptr}{PU}{\82\302}% U+02C2 +% U+02C3 MODIFIER LETTER RIGHT ARROWHEAD; arrowheadrightmod; +% \textrptr (tipa) +\DeclareTextCommand{\textrptr}{PU}{\82\303}% U+02C3 +% U+02C7 CARON; caron +\DeclareTextCommand{\textasciicaron}{PU}{\82\307}% U+02C7 +% U+02C8 MODIFIER LETTER VERTICAL LINE; verticallinemod; +% \textprimstress (tipa) +\DeclareTextCommand{\textprimstress}{PU}{\82\310}% U+02C8 +% U+02CC MODIFIER LETTER LOW VERTICAL LINE; verticallinelowmod; +% \textsecstress (tipa) +\DeclareTextCommand{\textsecstress}{PU}{\82\314}% U+02CC +% U+02D0 MODIFIER LETTER TRIANGULAR COLON; colontriangularmod; +% \textlengthmark (tipa) +\DeclareTextCommand{\textlengthmark}{PU}{\82\320}% U+02D0 +% U+02D1 MODIFIER LETTER HALF TRIANGULAR COLON; colontriangularhalfmod; +% \texthalflength (tipa) +\DeclareTextCommand{\texthalflength}{PU}{\82\321}% U+02D1 +% U+02D8 BREVE; breve +\DeclareTextCommand{\textasciibreve}{PU}{\82\330}% U+02D8 +% U+02D9 DOT ABOVE; dotaccent +\DeclareTextCommand{\textdotaccent}{PU}{\82\331}% U+02D9 +% U+02DA RING ABOVE; ring +\DeclareTextCommand{\textring}{PU}{\82\332}% U+02DA +% U+02DB OGONEK; ogonek +\DeclareTextCommand{\textogonek}{PU}{\82\333}% U+02DB +% U+02DC SMALL TILDE; ilde, *tilde +\DeclareTextCommand{\texttilde}{PU}{\82\334}% U+02DC +% U+02DD DOUBLE ACUTE ACCENT; hungarumlaut +\DeclareTextCommand{\texthungarumlaut}{PU}{\82\335}% U+02DD +\DeclareTextCommand{\textacutedbl}{PU}{\82\335}% U+02DD +% U+02F3 MODIFIER LETTER LOW RING +\DeclareTextCommand{\textringlow}{PU}{\82\363}% U+02F3 +% U+02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT +\DeclareTextCommand{\textgravedbl}{PU}{\82\365}% U+02F5 +% U+02F7 MODIFIER LETTER LOW TILDE +\DeclareTextCommand{\texttildelow}{PU}{\82\367}% U+02F7 +% U+02F9 MODIFIER LETTER BEGIN HIGH TONE; \textopencorner (tipa) +\DeclareTextCommand{\textopencorner}{PU}{\82\371}% U+02F9 +% U+02FA MODIFIER LETTER END HIGH TONE; \textcorner (tipa) +\DeclareTextCommand{\textcorner}{PU}{\82\372}% U+02FA +% \end{macrocode} +% +% \subsubsection{Combining Diacritical Marks: U+0300 to U+036F} +% +% \begin{macrocode} +% U+030F COMBINING DOUBLE GRAVE ACCENT; dblgravecmb +\DeclareTextCommand{\textdoublegrave}{PU}{ \83\017}% U+030F +% U+0311 COMBINING INVERTED BREVE; breveinvertedcmb +\DeclareTextCommand{\textnewtie}{PU}{ \83\021}% U+0311 +% U+0323 COMBINING DOT BELOW; dotbelowcmb, *dotbelowcomb +\DeclareTextCommand{\textdotbelow}{PU}{ \83\043}% U+0323 +% U+0331 COMBINING MACRON BELOW; macronbelowcmb +\DeclareTextCommand{\textmacronbelow}{PU}{ \83\061}% U+0331 +% U+0361 COMBINING DOUBLE INVERTED BREVE; breveinverteddoublecmb +\DeclareTextCommand{\texttie}{PU}{ \83\141}% U+0361 +% \end{macrocode} +% +% \subsubsection{Greek and Coptic: U+0370 to U+03FF} +% +% \begin{macrocode} +% U+0374 GREEK NUMERAL SIGN; numeralsigngreek +\DeclareTextCommand{\textnumeralsigngreek}{PU}{\83\164}% U+0374 +% U+0375 GREEK LOWER NUMERAL SIGN; numeralsignlowergreek +\DeclareTextCommand{\textnumeralsignlowergreek}{PU}{\83\165}% U+0375 +% U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS; Alphatonos +\DeclareTextCompositeCommand{\'}{PU}{\textAlpha}{\83\206}% U+0386 +% U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS; Epsilontonos +\DeclareTextCompositeCommand{\'}{PU}{\textEpsilon}{\83\210}% U+0388 +% U+0389 GREEK CAPITAL LETTER ETA WITH TONOS; Etatonos +\DeclareTextCompositeCommand{\'}{PU}{\textEta}{\83\211}% U+0389 +% U+038A GREEK CAPITAL LETTER IOTA WITH TONOS; Iotatonos +\DeclareTextCompositeCommand{\'}{PU}{\textIota}{\83\212}% U+038A +% U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS; Omicrontonos +\DeclareTextCompositeCommand{\'}{PU}{\textOmicron}{\83\214}% U+038C +% U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS; Upsilontonos +\DeclareTextCompositeCommand{\'}{PU}{\textUpsilon}{\83\216}% U+038E +% U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS; Omegatonos +\DeclareTextCompositeCommand{\'}{PU}{\textOmega}{\83\217}% U+038F +% U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS; +% iotadieresistonos +\DeclareTextCompositeCommand{\'}{PU}{\textIotadieresis}{\83\220}% U+0390 +% U+0391 GREEK CAPITAL LETTER ALPHA; Alpha +\DeclareTextCommand{\textAlpha}{PU}{\83\221}% U+0391 +% U+0392 GREEK CAPITAL LETTER BETA; Beta +\DeclareTextCommand{\textBeta}{PU}{\83\222}% U+0392 +% U+0393 GREEK CAPITAL LETTER GAMMA; Gamma; \Gamma (LaTeX) +\DeclareTextCommand{\textGamma}{PU}{\83\223}%* U+0393 +% U+0394 GREEK CAPITAL LETTER DELTA; Deltagreek, *Delta; \Delta (LaTeX) +\DeclareTextCommand{\textDelta}{PU}{\83\224}%* U+0394 +% U+0395 GREEK CAPITAL LETTER EPSILON; Epsilon +\DeclareTextCommand{\textEpsilon}{PU}{\83\225}% U+0395 +% U+0396 GREEK CAPITAL LETTER ZETA; Zeta +\DeclareTextCommand{\textZeta}{PU}{\83\226}% U+0396 +% U+0397 GREEK CAPITAL LETTER ETA; Eta +\DeclareTextCommand{\textEta}{PU}{\83\227}% U+0397 +% U+0398 GREEK CAPITAL LETTER THETA; Theta; \Theta (LaTeX) +\DeclareTextCommand{\textTheta}{PU}{\83\230}%* U+0398 +% U+0399 GREEK CAPITAL LETTER IOTA; Iota +\DeclareTextCommand{\textIota}{PU}{\83\231}% U+0399 +% U+039A GREEK CAPITAL LETTER KAPPA; Kappa +\DeclareTextCommand{\textKappa}{PU}{\83\232}% U+039A +% U+039B GREEK CAPITAL LETTER LAMDA; Lambda; \Lambda (LaTeX) +\DeclareTextCommand{\textLambda}{PU}{\83\233}%* U+039B +% U+039C GREEK CAPITAL LETTER MU; Mu +\DeclareTextCommand{\textMu}{PU}{\83\234}% U+039C +% U+039D GREEK CAPITAL LETTER NU; Nu +\DeclareTextCommand{\textNu}{PU}{\83\235}% U+039D +% U+039E GREEK CAPITAL LETTER XI; Xi; \Xi (LaTeX) +\DeclareTextCommand{\textXi}{PU}{\83\236}%* U+039E +% U+039F GREEK CAPITAL LETTER OMICRON; Omicron +\DeclareTextCommand{\textOmicron}{PU}{\83\237}% U+039F +% U+03A0 GREEK CAPITAL LETTER PI; Pi +\DeclareTextCommand{\textPi}{PU}{\83\240}%* U+03A0 +% U+03A1 GREEK CAPITAL LETTER RHO; Rho +\DeclareTextCommand{\textRho}{PU}{\83\241}% U+03A1 +% U+03A3 GREEK CAPITAL LETTER SIGMA; Sigma; \Sigma (LaTeX) +\DeclareTextCommand{\textSigma}{PU}{\83\243}%* U+03A3 +% U+03A4 GREEK CAPITAL LETTER TAU; Tau +\DeclareTextCommand{\textTau}{PU}{\83\244}% U+03A4 +% U+03A5 GREEK CAPITAL LETTER UPSILON; Upsilon; \Upsilon (LaTeX) +\DeclareTextCommand{\textUpsilon}{PU}{\83\245}%* U+03A5 +% U+03A6 GREEK CAPITAL LETTER PHI; Phi; \Phi (LaTeX) +\DeclareTextCommand{\textPhi}{PU}{\83\246}%* U+03A6 +% U+03A7 GREEK CAPITAL LETTER CHI; Chi +\DeclareTextCommand{\textChi}{PU}{\83\247}% U+03A7 +% U+03A8 GREEK CAPITAL LETTER PSI; Psi; \Psi (LaTeX) +\DeclareTextCommand{\textPsi}{PU}{\83\250}%* U+03A8 +% U+03A9 GREEK CAPITAL LETTER OMEGA; Omegagreek, *Omega; +% \Omega (LaTeX) +\DeclareTextCommand{\textOmega}{PU}{\83\251}%* U+03A9 +% U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA; Iotadieresis +\DeclareTextCommand{\textIotadieresis}{PU}{\83\252}% U+03AA +\DeclareTextCompositeCommand{\"}{PU}{\textIota}{\83\252}% U+03AA +% U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA; Upsilondieresis +\DeclareTextCompositeCommand{\"}{PU}{\textUpsilon}{\83\253}% U+03AB +% U+03AC GREEK SMALL LETTER ALPHA WITH TONOS; alphatonos +\DeclareTextCompositeCommand{\'}{PU}{\textalpha}{\83\254}%* U+03AC +% U+03AD GREEK SMALL LETTER EPSILON WITH TONOS; epsilontonos +\DeclareTextCompositeCommand{\'}{PU}{\textepsilon}{\83\255}% U+03AD +% U+03AE GREEK SMALL LETTER ETA WITH TONOS; etatonos +\DeclareTextCompositeCommand{\'}{PU}{\texteta}{\83\256}% U+03AE +% U+03AF GREEK SMALL LETTER IOTA WITH TONOS; iotatonos +\DeclareTextCompositeCommand{\'}{PU}{\textiota}{\83\257}% U+03AF +% U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA +% AND TONOS; upsilondieresisto +\DeclareTextCompositeCommand{\"}{PU}{\textupsilonacute}{\83\260}% U+03B0 +% U+03B1 GREEK SMALL LETTER ALPHA; alpha; \alpha (LaTeX) +\DeclareTextCommand{\textalpha}{PU}{\83\261}%* U+03B1 +% U+03B2 GREEK SMALL LETTER BETA; beta; \beta (LaTeX) +\DeclareTextCommand{\textbeta}{PU}{\83\262}%* U+03B2 +% U+03B3 GREEK SMALL LETTER GAMMA; gamma; \gamma (LaTeX) +\DeclareTextCommand{\textgamma}{PU}{\83\263}%* U+03B3 +% U+03B4 GREEK SMALL LETTER DELTA; delta; \delta (LaTeX) +\DeclareTextCommand{\textdelta}{PU}{\83\264}%* U+03B4 +% U+03B5 GREEK SMALL LETTER EPSILON; epsilon; \epsilon (LaTeX) +\DeclareTextCommand{\textepsilon}{PU}{\83\265}%* U+03B5 +% U+03B6 GREEK SMALL LETTER ZETA; zeta; \zeta (LaTeX) +\DeclareTextCommand{\textzeta}{PU}{\83\266}%* U+03B6 +% U+03B7 GREEK SMALL LETTER ETA; eta; \eta (LaTeX) +\DeclareTextCommand{\texteta}{PU}{\83\267}%* U+03B7 +% U+03B8 GREEK SMALL LETTER THETA; theta; \theta (LaTeX) +\DeclareTextCommand{\texttheta}{PU}{\83\270}%* U+03B8 +% U+03B9 GREEK SMALL LETTER IOTA; iota; \iota (LaTeX) +\DeclareTextCommand{\textiota}{PU}{\83\271}%* U+03B9 +% U+03BA GREEK SMALL LETTER KAPPA; kappa; \kappa (LaTeX) +\DeclareTextCommand{\textkappa}{PU}{\83\272}%* U+03BA +% U+03BB GREEK SMALL LETTER LAMDA; lambda; \lambda (LaTeX) +\DeclareTextCommand{\textlambda}{PU}{\83\273}%* U+03BB +% U+03BC GREEK SMALL LETTER MU; mugreek, *mu; \mu (LaTeX) +\DeclareTextCommand{\textmugreek}{PU}{\83\274}%* U+03BC +% U+03BD GREEK SMALL LETTER NU; nu; \nu (LaTeX) +\DeclareTextCommand{\textnu}{PU}{\83\275}%* U+03BD +% U+03BE GREEK SMALL LETTER XI; xi; \xi (LaTeX) +\DeclareTextCommand{\textxi}{PU}{\83\276}%* U+03BE +% U+03BF GREEK SMALL LETTER OMICRON; omicron +\DeclareTextCommand{\textomicron}{PU}{\83\277}% U+03BF +% U+03C0 GREEK SMALL LETTER PI; pi; \pi (LaTeX) +\DeclareTextCommand{\textpi}{PU}{\83\300}%* U+03C0 +% U+03C1 GREEK SMALL LETTER RHO; rho; \rho (LaTeX) +\DeclareTextCommand{\textrho}{PU}{\83\301}%* U+03C1 +% U+03C2 GREEK SMALL LETTER FINAL SIGMA; *sigma1, sigmafinal +\DeclareTextCommand{\textvarsigma}{PU}{\83\302}%* U+03C2 +% U+03C3 GREEK SMALL LETTER SIGMA; sigma; \sigma (LaTeX) +\DeclareTextCommand{\textsigma}{PU}{\83\303}%* U+03C3 +% U+03C4 GREEK SMALL LETTER TAU; tau; \tau (LaTeX) +\DeclareTextCommand{\texttau}{PU}{\83\304}%* U+03C4 +% U+03C5 GREEK SMALL LETTER UPSILON; upsilon; \upsilon (LaTeX) +\DeclareTextCommand{\textupsilon}{PU}{\83\305}%* U+03C5 +% U+03C6 GREEK SMALL LETTER PHI; phi; \phi (LaTeX) +\DeclareTextCommand{\textphi}{PU}{\83\306}%* U+03C6 +% U+03C7 GREEK SMALL LETTER CHI; chi; \chi (LaTeX) +\DeclareTextCommand{\textchi}{PU}{\83\307}%* U+03C7 +% U+03C8 GREEK SMALL LETTER PSI; psi; \psi (LaTeX) +\DeclareTextCommand{\textpsi}{PU}{\83\310}%* U+03C8 +% U+03C9 GREEK SMALL LETTER OMEGA; omega; \omega (LaTeX) +\DeclareTextCommand{\textomega}{PU}{\83\311}%* U+03C9 +% U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA; iotadieresis +\DeclareTextCompositeCommand{\"}{PU}{\textiota}{\83\312}% U+03CA +% U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA; upsilondieresis +\DeclareTextCompositeCommand{\"}{PU}{\textupsilon}{\83\313}% U+03CB +% U+03CC GREEK SMALL LETTER OMICRON WITH TONOS; omicrontonos +\DeclareTextCompositeCommand{\'}{PU}{\textomicron}{\83\314}% U+03CC +% U+03CD GREEK SMALL LETTER UPSILON WITH TONOS; upsilontonos +\DeclareTextCommand{\textupsilonacute}{PU}{\83\315}% U+03CD +\DeclareTextCompositeCommand{\'}{PU}{\textupsilon}{\83\315}% U+03CD +% U+03CE GREEK SMALL LETTER OMEGA WITH TONOS; omegatonos +\DeclareTextCompositeCommand{\'}{PU}{\textomega}{\83\316}% U+03CE +% U+03DA GREEK LETTER STIGMA; Stigmagreek +\DeclareTextCommand{\textStigmagreek}{PU}{\83\332}% U+03DA +% U+03DB GREEK SMALL LETTER STIGMA +\DeclareTextCommand{\textstigmagreek}{PU}{\83\333}% U+03DB +% U+03DC GREEK LETTER DIGAMMA; Digammagreek +\DeclareTextCommand{\textDigammagreek}{PU}{\83\334}% U+03DC +% U+03DD GREEK SMALL LETTER DIGAMMA +\DeclareTextCommand{\textdigammagreek}{PU}{\83\335}% U+03DD +%* \textdigammagreek -> \digamma (AmS) +% U+03DE GREEK LETTER KOPPA; Koppagreek +\DeclareTextCommand{\textKoppagreek}{PU}{\83\336}% U+03DE +% U+03DF GREEK SMALL LETTER KOPPA +\DeclareTextCommand{\textkoppagreek}{PU}{\83\337}% U+03DF +% U+03E0 GREEK LETTER SAMPI; Sampigreek +\DeclareTextCommand{\textSampigreek}{PU}{\83\340}% U+03E0 +% U+03E1 GREEK SMALL LETTER SAMPI +\DeclareTextCommand{\textsampigreek}{PU}{\83\341}% U+03E1 +% U+03F6 GREEK REVERSED LUNATE EPSILON SYMBOL; +% \backepsilon (AmS) +\DeclareTextCommand{\textbackepsilon}{PU}{\83\366}% U+03F6 +% \end{macrocode} +% +% \subsubsection{Cyrillic: U+0400 to U+04FF} +% +% Thanks to Vladimir Volovich (\Email{vvv@vvv.vsu.ru}) for +% the help with the Cyrillic glyph names. +% \begin{macrocode} +% U+0400 CYRILLIC CAPITAL LETTER IE WITH GRAVE +\DeclareTextCompositeCommand{\`}{PU}{\CYRE}{\84\000}% U+0400 +% U+0401 CYRILLIC CAPITAL LETTER IO; Iocyrillic, *afii10023 +\DeclareTextCommand{\CYRYO}{PU}{\84\001}% U+0401 +\DeclareTextCompositeCommand{\"}{PU}{\CYRE}{\84\001}% U+0401 +% U+0402 CYRILLIC CAPITAL LETTER DJE; Djecyrillic, *afii10051 +\DeclareTextCommand{\CYRDJE}{PU}{\84\002}% U+0402 +% U+0403 CYRILLIC CAPITAL LETTER GJE; Gjecyrillic, *afii10052 +\DeclareTextCompositeCommand{\'}{PU}{\CYRG}{\84\003}% U+0403 +% U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE; Ecyrillic, *afii10053 +\DeclareTextCommand{\CYRIE}{PU}{\84\004}% U+0404 +% U+0405 CYRILLIC CAPITAL LETTER DZE; Dzecyrillic, *afii10054 +\DeclareTextCommand{\CYRDZE}{PU}{\84\005}% U+0405 +% U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I; +% Icyrillic, *afii10055 +\DeclareTextCommand{\CYRII}{PU}{\84\006}% U+0406 +% U+0407 CYRILLIC CAPITAL LETTER YI; Yicyrillic, *afii10056 +\DeclareTextCommand{\CYRYI}{PU}{\84\007}% U+0407 +\DeclareTextCompositeCommand{\"}{PU}{\CYRII}{\84\007}% U+0407 +% U+0408 CYRILLIC CAPITAL LETTER JE; Jecyrillic, *afii10057 +\DeclareTextCommand{\CYRJE}{PU}{\84\010}% U+0408 +% U+0409 CYRILLIC CAPITAL LETTER LJE; Ljecyrillic, *afii10058 +\DeclareTextCommand{\CYRLJE}{PU}{\84\011}% U+0409 +% U+040A CYRILLIC CAPITAL LETTER NJE; Njecyrillic, *afii10059 +\DeclareTextCommand{\CYRNJE}{PU}{\84\012}% U+040A +% U+040B CYRILLIC CAPITAL LETTER TSHE; Tshecyrillic, *afii10060 +\DeclareTextCommand{\CYRTSHE}{PU}{\84\013}% U+040B +% U+040C CYRILLIC CAPITAL LETTER KJE; Kjecyrillic, *afii10061 +\DeclareTextCompositeCommand{\'}{PU}{\CYRK}{\84\014}% U+040C +% U+040D CYRILLIC CAPITAL LETTER I WITH GRAVE +\DeclareTextCompositeCommand{\`}{PU}{\CYRI}{\84\015}% U+040D +% U+040E CYRILLIC CAPITAL LETTER SHORT U; Ushortcyrillic, *afii10062 +\DeclareTextCommand{\CYRUSHRT}{PU}{\84\016}% U+040E +\DeclareTextCompositeCommand{\U}{PU}{\CYRU}{\84\016}% U+040E +% U+040F CYRILLIC CAPITAL LETTER DZHE; Dzhecyrillic, *afii10145 +\DeclareTextCommand{\CYRDZHE}{PU}{\84\017}% U+040F +% U+0410 CYRILLIC CAPITAL LETTER A; Acyrillic, *afii10017 +\DeclareTextCommand{\CYRA}{PU}{\84\020}% U+0410 +% U+0411 CYRILLIC CAPITAL LETTER BE; Becyrillic, *afii10018 +\DeclareTextCommand{\CYRB}{PU}{\84\021}% U+0411 +% U+0412 CYRILLIC CAPITAL LETTER VE; Vecyrillic, *afii10019 +\DeclareTextCommand{\CYRV}{PU}{\84\022}% U+0412 +% U+0413 CYRILLIC CAPITAL LETTER GHE; Gecyrillic, *afii10020 +\DeclareTextCommand{\CYRG}{PU}{\84\023}% U+0413 +% U+0414 CYRILLIC CAPITAL LETTER DE; Decyrillic, *afii10021 +\DeclareTextCommand{\CYRD}{PU}{\84\024}% U+0414 +% U+0415 CYRILLIC CAPITAL LETTER IE; Iecyrillic, *afii10022 +\DeclareTextCommand{\CYRE}{PU}{\84\025}% U+0415 +% U+0416 CYRILLIC CAPITAL LETTER ZHE; Zhecyrillic, *afii10024 +\DeclareTextCommand{\CYRZH}{PU}{\84\026}% U+0416 +% U+0417 CYRILLIC CAPITAL LETTER ZE; Zecyrillic, *afii10025 +\DeclareTextCommand{\CYRZ}{PU}{\84\027}% U+0417 +% U+0418 CYRILLIC CAPITAL LETTER I; Iicyrillic, *afii10026 +\DeclareTextCommand{\CYRI}{PU}{\84\030}% U+0418 +% U+0419 CYRILLIC CAPITAL LETTER SHORT I; Iishortcyrillic, *afii10027 +\DeclareTextCommand{\CYRISHRT}{PU}{\84\031}% U+0419 +\DeclareTextCompositeCommand{\U}{PU}{\CYRI}{\84\031}% U+0419 +% U+041A CYRILLIC CAPITAL LETTER KA; Kacyrillic, *afii10028 +\DeclareTextCommand{\CYRK}{PU}{\84\032}% U+041A +% U+041B CYRILLIC CAPITAL LETTER EL; Elcyrillic, *afii10029 +\DeclareTextCommand{\CYRL}{PU}{\84\033}% U+041B +% U+041C CYRILLIC CAPITAL LETTER EM; Emcyrillic, *afii10030 +\DeclareTextCommand{\CYRM}{PU}{\84\034}% U+041C +% U+041D CYRILLIC CAPITAL LETTER EN; Encyrillic, *afii10031 +\DeclareTextCommand{\CYRN}{PU}{\84\035}% U+041D +% U+041E CYRILLIC CAPITAL LETTER O; Ocyrillic, *afii10032 +\DeclareTextCommand{\CYRO}{PU}{\84\036}% U+041E +% U+041F CYRILLIC CAPITAL LETTER PE; Pecyrillic, *afii10033 +\DeclareTextCommand{\CYRP}{PU}{\84\037}% U+041F +% U+0420 CYRILLIC CAPITAL LETTER ER; Ercyrillic, *afii10034 +\DeclareTextCommand{\CYRR}{PU}{\84\040}% U+0420 +% U+0421 CYRILLIC CAPITAL LETTER ES; Escyrillic, *afii10035 +\DeclareTextCommand{\CYRS}{PU}{\84\041}% U+0421 +% U+0422 CYRILLIC CAPITAL LETTER TE; Tecyrillic, *afii10036 +\DeclareTextCommand{\CYRT}{PU}{\84\042}% U+0422 +% U+0423 CYRILLIC CAPITAL LETTER U; Ucyrillic, *afii10037 +\DeclareTextCommand{\CYRU}{PU}{\84\043}% U+0423 +% U+0424 CYRILLIC CAPITAL LETTER EF; Efcyrillic, *afii10038 +\DeclareTextCommand{\CYRF}{PU}{\84\044}% U+0424 +% U+0425 CYRILLIC CAPITAL LETTER HA; Khacyrillic, *afii10039 +\DeclareTextCommand{\CYRH}{PU}{\84\045}% U+0425 +% U+0426 CYRILLIC CAPITAL LETTER TSE; Tsecyrillic, *afii10040 +\DeclareTextCommand{\CYRC}{PU}{\84\046}% U+0426 +% U+0427 CYRILLIC CAPITAL LETTER CHE; Checyrillic, *afii10041 +\DeclareTextCommand{\CYRCH}{PU}{\84\047}% U+0427 +% U+0428 CYRILLIC CAPITAL LETTER SHA; Shacyrillic, *afii10042 +\DeclareTextCommand{\CYRSH}{PU}{\84\050}% U+0428 +% U+0429 CYRILLIC CAPITAL LETTER SHCHA; Shchacyrillic, *afii10043 +\DeclareTextCommand{\CYRSHCH}{PU}{\84\051}% U+0429 +% U+042A CYRILLIC CAPITAL LETTER HARD SIGN; +% Hardsigncyrillic, *afii10044 +\DeclareTextCommand{\CYRHRDSN}{PU}{\84\052}% U+042A +% U+042B CYRILLIC CAPITAL LETTER YERU; Yericyrillic, *afii10045 +\DeclareTextCommand{\CYRERY}{PU}{\84\053}% U+042B +% U+042C CYRILLIC CAPITAL LETTER SOFT SIGN; +% Softsigncyrillic, *afii10046 +\DeclareTextCommand{\CYRSFTSN}{PU}{\84\054}% U+042C +% U+042D CYRILLIC CAPITAL LETTER E; Ereversedcyrillic, *afii10047 +\DeclareTextCommand{\CYREREV}{PU}{\84\055}% U+042D +% U+042E CYRILLIC CAPITAL LETTER YU; IUcyrillic, *afii10048 +\DeclareTextCommand{\CYRYU}{PU}{\84\056}% U+042E +% U+042F CYRILLIC CAPITAL LETTER YA; IAcyrillic, *afii10049 +\DeclareTextCommand{\CYRYA}{PU}{\84\057}% U+042F +% U+0430 CYRILLIC SMALL LETTER A; acyrillic, *afii10065 +\DeclareTextCommand{\cyra}{PU}{\84\060}% U+0430 +% U+0431 CYRILLIC SMALL LETTER BE; *afii10066, becyrillic +\DeclareTextCommand{\cyrb}{PU}{\84\061}% U+0431 +% U+0432 CYRILLIC SMALL LETTER VE; *afii10067, vecyrillic +\DeclareTextCommand{\cyrv}{PU}{\84\062}% U+0432 +% U+0433 CYRILLIC SMALL LETTER GHE; *afii10068, gecyrillic +\DeclareTextCommand{\cyrg}{PU}{\84\063}% U+0433 +% U+0434 CYRILLIC SMALL LETTER DE; *afii10069, decyrillic +\DeclareTextCommand{\cyrd}{PU}{\84\064}% U+0434 +% U+0435 CYRILLIC SMALL LETTER IE; *afii10070, iecyrillic +\DeclareTextCommand{\cyre}{PU}{\84\065}% U+0435 +% U+0436 CYRILLIC SMALL LETTER ZHE; *afii10072, zhecyrillic +\DeclareTextCommand{\cyrzh}{PU}{\84\066}% U+0436 +% U+0437 CYRILLIC SMALL LETTER ZE; *afii10073, zecyrillic +\DeclareTextCommand{\cyrz}{PU}{\84\067}% U+0437 +% U+0438 CYRILLIC SMALL LETTER I; *afii10074, iicyrillic +\DeclareTextCommand{\cyri}{PU}{\84\070}% U+0438 +% U+0439 CYRILLIC SMALL LETTER SHORT I; *afii10075, iishortcyrillic +\DeclareTextCommand{\cyrishrt}{PU}{\84\071}% U+0439 +\DeclareTextCompositeCommand{\U}{PU}{\cyri}{\84\071}% U+0439 +% U+043A CYRILLIC SMALL LETTER KA; *afii10076, kacyrillic +\DeclareTextCommand{\cyrk}{PU}{\84\072}% U+043A +% U+043B CYRILLIC SMALL LETTER EL; *afii10077, elcyrillic +\DeclareTextCommand{\cyrl}{PU}{\84\073}% U+043B +% U+043C CYRILLIC SMALL LETTER EM; *afii10078, emcyrillic +\DeclareTextCommand{\cyrm}{PU}{\84\074}% U+043C +% U+043D CYRILLIC SMALL LETTER EN; *afii10079, encyrillic +\DeclareTextCommand{\cyrn}{PU}{\84\075}% U+043D +% U+043E CYRILLIC SMALL LETTER O; *afii10080, ocyrillic +\DeclareTextCommand{\cyro}{PU}{\84\076}% U+043E +% U+043F CYRILLIC SMALL LETTER PE; *afii10081, pecyrillic +\DeclareTextCommand{\cyrp}{PU}{\84\077}% U+043F +% U+0440 CYRILLIC SMALL LETTER ER; *afii10082, ercyrillic +\DeclareTextCommand{\cyrr}{PU}{\84\100}% U+0440 +% U+0441 CYRILLIC SMALL LETTER ES; *afii10083, escyrillic +\DeclareTextCommand{\cyrs}{PU}{\84\101}% U+0441 +% U+0442 CYRILLIC SMALL LETTER TE; *afii10084, tecyrillic +\DeclareTextCommand{\cyrt}{PU}{\84\102}% U+0442 +% U+0443 CYRILLIC SMALL LETTER U; *afii10085, ucyrillic +\DeclareTextCommand{\cyru}{PU}{\84\103}% U+0443 +% U+0444 CYRILLIC SMALL LETTER EF; *afii10086, efcyrillic +\DeclareTextCommand{\cyrf}{PU}{\84\104}% U+0444 +% U+0445 CYRILLIC SMALL LETTER HA; *afii10087, khacyrillic +\DeclareTextCommand{\cyrh}{PU}{\84\105}% U+0445 +% U+0446 CYRILLIC SMALL LETTER TSE; *afii10088, tsecyrillic +\DeclareTextCommand{\cyrc}{PU}{\84\106}% U+0446 +% U+0447 CYRILLIC SMALL LETTER CHE; *afii10089, checyrillic +\DeclareTextCommand{\cyrch}{PU}{\84\107}% U+0447 +% U+0448 CYRILLIC SMALL LETTER SHA; *afii10090, shacyrillic +\DeclareTextCommand{\cyrsh}{PU}{\84\110}% U+0448 +% U+0449 CYRILLIC SMALL LETTER SHCHA; *afii10091, shchacyrillic +\DeclareTextCommand{\cyrshch}{PU}{\84\111}% U+0449 +% U+044A CYRILLIC SMALL LETTER HARD SIGN; *afii10092, hardsigncyrillic +\DeclareTextCommand{\cyrhrdsn}{PU}{\84\112}% U+044A +%* \cyrhrdsn -> \hardsign (tipa) +% U+044B CYRILLIC SMALL LETTER YERU; *afii10093, yericyrillic +\DeclareTextCommand{\cyrery}{PU}{\84\113}% U+044B +% U+044C CYRILLIC SMALL LETTER SOFT SIGN; *afii10094, softsigncyrillic +\DeclareTextCommand{\cyrsftsn}{PU}{\84\114}% U+044C +%* \cyrsftsn -> \softsign (tipa) +% U+044D CYRILLIC SMALL LETTER E; *afii10095, ereversedcyrillic +\DeclareTextCommand{\cyrerev}{PU}{\84\115}% U+044D +% U+044E CYRILLIC SMALL LETTER YU; *afii10096, iucyrillic +\DeclareTextCommand{\cyryu}{PU}{\84\116}% U+044E +% U+044F CYRILLIC SMALL LETTER YA; *afii10097, iacyrillic +\DeclareTextCommand{\cyrya}{PU}{\84\117}% U+044F +% U+0450 CYRILLIC SMALL LETTER IE WITH GRAVE +\DeclareTextCompositeCommand{\`}{PU}{\cyre}{\84\120}% U+0450 +% U+0451 CYRILLIC SMALL LETTER IO; *afii10071, iocyrillic +\DeclareTextCommand{\cyryo}{PU}{\84\121}% U+0451 +\DeclareTextCompositeCommand{\"}{PU}{\cyre}{\84\121}% U+0451 +% U+0452 CYRILLIC SMALL LETTER DJE; *afii10099, djecyrillic +\DeclareTextCommand{\cyrdje}{PU}{\84\122}% U+0452 +% U+0453 CYRILLIC SMALL LETTER GJE; *afii10100, gjecyrillic +\DeclareTextCompositeCommand{\'}{PU}{\cyrg}{\84\123}% U+0453 +% U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE; *afii10101, ecyrillic +\DeclareTextCommand{\cyrie}{PU}{\84\124}% U+0454 +% U+0455 CYRILLIC SMALL LETTER DZE; *afii10102, dzecyrillic +\DeclareTextCommand{\cyrdze}{PU}{\84\125}% U+0455 +% U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I; +% *afii10103, icyrillic +\DeclareTextCommand{\cyrii}{PU}{\84\126}% U+0456 +% U+0457 CYRILLIC SMALL LETTER YI; *afii10104, yicyrillic +\DeclareTextCommand{\cyryi}{PU}{\84\127}% U+0457 +\DeclareTextCompositeCommand{\"}{PU}{\cyrii}{\84\127}% U+0457 +% U+0458 CYRILLIC SMALL LETTER JE; *afii10105, jecyrillic +\DeclareTextCommand{\cyrje}{PU}{\84\130}% U+0458 +% U+0459 CYRILLIC SMALL LETTER LJE; *afii10106, ljecyrillic +\DeclareTextCommand{\cyrlje}{PU}{\84\131}% U+0459 +% U+045A CYRILLIC SMALL LETTER NJE; *afii10107, njecyrillic +\DeclareTextCommand{\cyrnje}{PU}{\84\132}% U+045A +% U+045B CYRILLIC SMALL LETTER TSHE; *afii10108, tshecyrillic +\DeclareTextCommand{\cyrtshe}{PU}{\84\133}% U+045B +% U+045C CYRILLIC SMALL LETTER KJE; *afii10109, kjecyrillic +\DeclareTextCompositeCommand{\'}{PU}{\cyrk}{\84\134}% U+045C +% U+045D CYRILLIC SMALL LETTER I WITH GRAVE +\DeclareTextCompositeCommand{\`}{PU}{\cyri}{\84\135}% U+045D +% U+045E CYRILLIC SMALL LETTER SHORT U; *afii10110, ushortcyrillic +\DeclareTextCommand{\cyrushrt}{PU}{\84\136}% U+045E +\DeclareTextCompositeCommand{\U}{PU}{\curu}{\84\136}% U+045E +% U+045F CYRILLIC SMALL LETTER DZHE; *afii10193, dzhecyrillic +\DeclareTextCommand{\cyrdzhe}{PU}{\84\137}% U+045F +% U+0460 CYRILLIC CAPITAL LETTER OMEGA; Omegacyrillic +\DeclareTextCommand{\CYROMEGA}{PU}{\84\140}% U+0460 +% U+0461 CYRILLIC SMALL LETTER OMEGA; omegacyrillic +\DeclareTextCommand{\cyromega}{PU}{\84\141}% U+0461 +% U+0462 CYRILLIC CAPITAL LETTER YAT; Yatcyrillic, *afii10146 +\DeclareTextCommand{\CYRYAT}{PU}{\84\142}% U+0462 +% U+0463 CYRILLIC SMALL LETTER YAT; *afii10194, yatcyrillic +\DeclareTextCommand{\cyryat}{PU}{\84\143}% U+0463 +% U+0464 CYRILLIC CAPITAL LETTER IOTIFIED E; Eiotifiedcyrillic +\DeclareTextCommand{\CYRIOTE}{PU}{\84\144}% U+0464 +% U+0465 CYRILLIC SMALL LETTER IOTIFIED E; eiotifiedcyrillic +\DeclareTextCommand{\cyriote}{PU}{\84\145}% U+0465 +% U+0466 CYRILLIC CAPITAL LETTER LITTLE YUS; Yuslittlecyrillic +\DeclareTextCommand{\CYRLYUS}{PU}{\84\146}% U+0466 +% U+0467 CYRILLIC SMALL LETTER LITTLE YUS; yuslittlecyrillic +\DeclareTextCommand{\cyrlyus}{PU}{\84\147}% U+0467 +% U+0468 CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS; Yuslittleiotifiedcyrillic +\DeclareTextCommand{\CYRIOTLYUS}{PU}{\84\150}% U+0468 +% U+0469 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS; yuslittleiotifiedcyrillic +\DeclareTextCommand{\cyriotlyus}{PU}{\84\151}% U+0469 +% U+046A CYRILLIC CAPITAL LETTER BIG YUS; Yusbigcyrillic +\DeclareTextCommand{\CYRBYUS}{PU}{\84\152}% U+046A +% U+046B CYRILLIC SMALL LETTER BIG YUS; yusbigcyrillic +\DeclareTextCommand{\cyrbyus}{PU}{\84\153}% U+046B +% U+046C CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS; Yusbigiotifiedcyrillic +\DeclareTextCommand{\CYRIOTBYUS}{PU}{\84\154}% U+046C +% U+046D CYRILLIC SMALL LETTER IOTIFIED BIG YUS; yusbigiotifiedcyrillic +\DeclareTextCommand{\cyriotbyus}{PU}{\84\155}% U+046D +% U+046E CYRILLIC CAPITAL LETTER KSI; Ksicyrillic +\DeclareTextCommand{\CYRKSI}{PU}{\84\156}% U+046E +% U+046F CYRILLIC SMALL LETTER KSI; ksicyrillic +\DeclareTextCommand{\cyrksi}{PU}{\84\157}% U+046F +% U+0470 CYRILLIC CAPITAL LETTER PSI; Psicyrillic +\DeclareTextCommand{\CYRPSI}{PU}{\84\160}% U+0470 +% U+0471 CYRILLIC SMALL LETTER PSI; psicyrillic +\DeclareTextCommand{\cyrpsi}{PU}{\84\161}% U+0471 +% U+0472 CYRILLIC CAPITAL LETTER FITA; Fitacyrillic, *afii10147 +\DeclareTextCommand{\CYRFITA}{PU}{\84\162}% U+0472 +% U+0473 CYRILLIC SMALL LETTER FITA; *afii10195, fitacyrillic +\DeclareTextCommand{\cyrfita}{PU}{\84\163}% U+0473 +% U+0474 CYRILLIC CAPITAL LETTER IZHITSA; Izhitsacyrillic, *afii10148 +\DeclareTextCommand{\CYRIZH}{PU}{\84\164}% U+0474 +% U+0475 CYRILLIC SMALL LETTER IZHITSA; *afii10196, izhitsacyrillic +\DeclareTextCommand{\cyrizh}{PU}{\84\165}% U+0475 +% U+0476 CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE +% GRAVE ACCENT; Izhitsadblgravecyrillic +\DeclareTextCompositeCommand{\C}{PU}{\CYRIZH}{\84\166}% U+0476 +% U+0477 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE +% GRAVE ACCENT; izhitsadblgravecyrillic +\DeclareTextCompositeCommand{\C}{PU}{\cyrizh}{\84\167}% U+0477 +% U+0478 CYRILLIC CAPITAL LETTER UK; Ukcyrillic +\DeclareTextCommand{\CYRUK}{PU}{\84\170}% U+0478 +% U+0479 CYRILLIC SMALL LETTER UK; ukcyrillic +\DeclareTextCommand{\cyruk}{PU}{\84\171}% U+0479 +% U+047A CYRILLIC CAPITAL LETTER ROUND OMEGA; Omegaroundcyrillic +\DeclareTextCommand{\CYROMEGARND}{PU}{\84\172}% U+047A +% U+047B CYRILLIC SMALL LETTER ROUND OMEGA; omegaroundcyrillic +\DeclareTextCommand{\cyromegarnd}{PU}{\84\173}% U+047B +% U+047C CYRILLIC CAPITAL LETTER OMEGA WITH TITLO; Omegatitlocyrillic +\DeclareTextCommand{\CYROMEGATITLO}{PU}{\84\174}% U+047C +% U+047D CYRILLIC SMALL LETTER OMEGA WITH TITLO; omegatitlocyrillic +\DeclareTextCommand{\cyromegatitlo}{PU}{\84\175}% U+047D +% U+047E CYRILLIC CAPITAL LETTER OT; Otcyrillic +\DeclareTextCommand{\CYROT}{PU}{\84\176}% U+047E +% U+047F CYRILLIC SMALL LETTER OT; otcyrillic +\DeclareTextCommand{\cyrot}{PU}{\84\177}% U+047F +% U+0480 CYRILLIC CAPITAL LETTER KOPPA; Koppacyrillic +\DeclareTextCommand{\CYRKOPPA}{PU}{\84\200}% U+0480 +% U+0481 CYRILLIC SMALL LETTER KOPPA; koppacyrillic +\DeclareTextCommand{\cyrkoppa}{PU}{\84\201}% U+0481 +% U+0482 CYRILLIC THOUSANDS SIGN; thousandcyrillic +\DeclareTextCommand{\cyrthousands}{PU}{\84\202}% U+0482 +% \end{macrocode} +% |\84\203|: U+0483 COMBINING CYRILLIC TITLO; titlocyrilliccmb\\ +% |\84\204|: U+0484 COMBINING CYRILLIC PALATALIZATION; palatalizationcyrilliccmb\\ +% |\84\205|: U+0485 COMBINING CYRILLIC DASIA PNEUMATA; dasiapneumatacyrilliccmb\\ +% |\84\206|: U+0486 COMBINING CYRILLIC PSILI PNEUMATA; psilipneumatacyrilliccmb\\ +% |\84\207|: U+0487 COMBINING CYRILLIC POKRYTIE\\ +% |\84\210|: U+0488 COMBINING CYRILLIC HUNDRED THOUSANDS SIGN\\ +% |\84\211|: U+0489 COMBINING CYRILLIC MILLIONS SIGN +% \begin{macrocode} +% U+048A CYRILLIC CAPITAL LETTER SHORT I WITH TAIL +\DeclareTextCommand{\CYRISHRTDSC}{PU}{\84\212}% U+048A +% U+048B CYRILLIC SMALL LETTER SHORT I WITH TAIL +\DeclareTextCommand{\cyrishrtdsc}{PU}{\84\213}% U+048B +% U+048C CYRILLIC CAPITAL LETTER SEMISOFT SIGN +\DeclareTextCommand{\CYRSEMISFTSN}{PU}{\84\214}% U+048C +% U+048D CYRILLIC SMALL LETTER SEMISOFT SIGN +\DeclareTextCommand{\cyrsemisftsn}{PU}{\84\215}% U+048D +% U+048E CYRILLIC CAPITAL LETTER ER WITH TICK +\DeclareTextCommand{\CYRRTICK}{PU}{\84\216}% U+048E +% U+048F CYRILLIC SMALL LETTER ER WITH TICK +\DeclareTextCommand{\cyrrtick}{PU}{\84\217}% U+048F +% U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN; Gheupturncyrillic, *afii10050 +\DeclareTextCommand{\CYRGUP}{PU}{\84\220}% U+0490 +% U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN; *afii10098, gheupturncyrillic +\DeclareTextCommand{\cyrgup}{PU}{\84\221}% U+0491 +% U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE; Ghestrokecyrillic +\DeclareTextCommand{\CYRGHCRS}{PU}{\84\222}% U+0492 +% U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE; ghestrokecyrillic +\DeclareTextCommand{\cyrghcrs}{PU}{\84\223}% U+0493 +% U+0494 CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK; +% Ghemiddlehookcyrillic +\DeclareTextCommand{\CYRGHK}{PU}{\84\224}% U+0494 +% U+0495 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK; +% ghemiddlehookcyrillic +\DeclareTextCommand{\cyrghk}{PU}{\84\225}% U+0495 +% U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER; +% Zhedescendercyrillic +\DeclareTextCommand{\CYRZHDSC}{PU}{\84\226}% U+0496 +% U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER; +% zhedescendercyrillic +\DeclareTextCommand{\cyrzhdsc}{PU}{\84\227}% U+0497 +% U+0498 CYRILLIC CAPITAL LETTER ZE WITH DESCENDER; Zedescendercyrillic +\DeclareTextCommand{\CYRZDSC}{PU}{\84\230}% U+0498 +\DeclareTextCompositeCommand{\c}{PU}{\CYRZ}{\84\230}% U+0498 +% U+0499 CYRILLIC SMALL LETTER ZE WITH DESCENDER; zedescendercyrillic +\DeclareTextCommand{\cyrzdsc}{PU}{\84\231}% U+0499 +\DeclareTextCompositeCommand{\c}{PU}{\cyrz}{\84\231}% U+0499 +% U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER; Kadescendercyrillic +\DeclareTextCommand{\CYRKDSC}{PU}{\84\232}% U+049A +% U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER; kadescendercyrillic +\DeclareTextCommand{\cyrkdsc}{PU}{\84\233}% U+049B +% U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE; +% Kaverticalstrokecyrillic +\DeclareTextCommand{\CYRKVCRS}{PU}{\84\234}% U+049C +% U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE; +% kaverticalstrokecyrillic +\DeclareTextCommand{\cyrkvcrs}{PU}{\84\235}% U+049D +% U+049E CYRILLIC CAPITAL LETTER KA WITH STROKE; Kastrokecyrillic +\DeclareTextCommand{\CYRKHCRS}{PU}{\84\236}% U+049E +% U+049F CYRILLIC SMALL LETTER KA WITH STROKE; kastrokecyrillic +\DeclareTextCommand{\cyrkhcrs}{PU}{\84\237}% U+049F +% U+04A0 CYRILLIC CAPITAL LETTER BASHKIR KA; Kabashkircyrillic +\DeclareTextCommand{\CYRKBEAK}{PU}{\84\240}% U+04A0 +% U+04A1 CYRILLIC SMALL LETTER BASHKIR KA; kabashkircyrillic +\DeclareTextCommand{\cyrkbeak}{PU}{\84\241}% U+04A1 +% U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER; Endescendercyrillic +\DeclareTextCommand{\CYRNDSC}{PU}{\84\242}% U+04A2 +% U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER; endescendercyrillic +\DeclareTextCommand{\cyrndsc}{PU}{\84\243}% U+04A3 +% U+04A4 CYRILLIC CAPITAL LIGATURE EN GHE; Enghecyrillic +\DeclareTextCommand{\CYRNG}{PU}{\84\244}% U+04A4 +% U+04A5 CYRILLIC SMALL LIGATURE EN GHE; enghecyrillic +\DeclareTextCommand{\cyrng}{PU}{\84\245}% U+04A5 +% U+04A6 CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK; Pemiddlehookcyrillic +\DeclareTextCommand{\CYRPHK}{PU}{\84\246}% U+04A6 +% U+04A7 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK; pemiddlehookcyrillic +\DeclareTextCommand{\cyrphk}{PU}{\84\247}% U+04A7 +% U+04A8 CYRILLIC CAPITAL LETTER ABKHASIAN HA; Haabkhasiancyrillic +\DeclareTextCommand{\CYRABHHA}{PU}{\84\250}% U+04A8 +% U+04A9 CYRILLIC SMALL LETTER ABKHASIAN HA; haabkhasiancyrillic +\DeclareTextCommand{\cyrabhha}{PU}{\84\251}% U+04A9 +% U+04AA CYRILLIC CAPITAL LETTER ES WITH DESCENDER; Esdescendercyrillic +\DeclareTextCommand{\CYRSDSC}{PU}{\84\252}% U+04AA +\DeclareTextCompositeCommand{\CYRSDSC}{PU}{\CYRS}{\84\252}% U+04AA +% U+04AB CYRILLIC SMALL LETTER ES WITH DESCENDER; esdescendercyrillic +\DeclareTextCommand{\cyrsdsc}{PU}{\84\253}% U+04AB +\DeclareTextCompositeCommand{\k}{PU}{\cyrs}{\84\253}% U+04AB +% U+04AC CYRILLIC CAPITAL LETTER TE WITH DESCENDER; Tedescendercyrillic +\DeclareTextCommand{\CYRTDSC}{PU}{\84\254}% U+04AC +% U+04AD CYRILLIC SMALL LETTER TE WITH DESCENDER; tedescendercyrillic +\DeclareTextCommand{\cyrtdsc}{PU}{\84\255}% U+04AD +% U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U; Ustraightcyrillic +\DeclareTextCommand{\CYRY}{PU}{\84\256}% U+04AE +% U+04AF CYRILLIC SMALL LETTER STRAIGHT U; ustraightcyrillic +\DeclareTextCommand{\cyry}{PU}{\84\257}% U+04AF +% U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE; Ustraightstrokecyrillic +\DeclareTextCommand{\CYRYHCRS}{PU}{\84\260}% U+04B0 +% U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE; ustraightstrokecyrillic +\DeclareTextCommand{\cyryhcrs}{PU}{\84\261}% U+04B1 +% U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER; Hadescendercyrillic +\DeclareTextCommand{\CYRHDSC}{PU}{\84\262}% U+04B2 +% U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER; hadescendercyrillic +\DeclareTextCommand{\cyrhdsc}{PU}{\84\263}% U+04B3 +% U+04B4 CYRILLIC CAPITAL LIGATURE TE TSE; Tetsecyrillic +\DeclareTextCommand{\CYRTETSE}{PU}{\84\264}% U+04B4 +% U+04B5 CYRILLIC SMALL LIGATURE TE TSE; tetsecyrillic +\DeclareTextCommand{\cyrtetse}{PU}{\84\265}% U+04B5 +% U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER; +% Chedescendercyrillic +\DeclareTextCommand{\CYRCHRDSC}{PU}{\84\266}% U+04B6 +% U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER; chedescendercyrillic +\DeclareTextCommand{\cyrchrdsc}{PU}{\84\267}% U+04B7 +% U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE; +% Cheverticalstrokecyrillic +\DeclareTextCommand{\CYRCHVCRS}{PU}{\84\270}% U+04B8 +% U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE; +% cheverticalstrokecyrillic +\DeclareTextCommand{\cyrchvcrs}{PU}{\84\271}% U+04B9 +% U+04BA CYRILLIC CAPITAL LETTER SHHA; Shhacyrillic +\DeclareTextCommand{\CYRSHHA}{PU}{\84\272}% U+04BA +% U+04BB CYRILLIC SMALL LETTER SHHA; shhacyrillic +\DeclareTextCommand{\cyrshha}{PU}{\84\273}% U+04BB +% U+04BC CYRILLIC CAPITAL LETTER ABKHASIAN CHE; Cheabkhasiancyrillic +\DeclareTextCommand{\CYRABHCH}{PU}{\84\274}% U+04BC +% U+04BD CYRILLIC SMALL LETTER ABKHASIAN CHE; cheabkhasiancyrillic +\DeclareTextCommand{\cyrabhch}{PU}{\84\275}% U+04BD +% U+04BE CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER; Chedescenderabkhasiancyrillic +\DeclareTextCommand{\CYRABHCHDSC}{PU}{\84\276}% U+04BE +\DeclareTextCompositeCommand{\k}{PU}{\CYRABHCH}{\84\276}% U+04BE +% U+04BF CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER; chedescenderabkhasiancyrillic +\DeclareTextCommand{\cyrabhchdsc}{PU}{\84\277}% U+04BF +\DeclareTextCompositeCommand{\k}{PU}{\cyrabhch}{\84\277}% U+04BF +% U+04C0 CYRILLIC LETTER PALOCHKA; palochkacyrillic +\DeclareTextCommand{\CYRpalochka}{PU}{\84\300}% U+04C0 +% U+04C1 CYRILLIC CAPITAL LETTER ZHE WITH BREVE; Zhebrevecyrillic +\DeclareTextCompositeCommand{\U}{PU}{\CYRZH}{\84\301}% U+04C1 +% U+04C2 CYRILLIC SMALL LETTER ZHE WITH BREVE; zhebrevecyrillic +\DeclareTextCompositeCommand{\U}{PU}{\cyrzh}{\84\302}% U+04C2 +% U+04C3 CYRILLIC CAPITAL LETTER KA WITH HOOK; Kahookcyrillic +\DeclareTextCommand{\CYRKHK}{PU}{\84\303}% U+04C3 +% U+04C4 CYRILLIC SMALL LETTER KA WITH HOOK; kahookcyrillic +\DeclareTextCommand{\cyrkhk}{PU}{\84\304}% U+04C4 +% U+04C5 CYRILLIC CAPITAL LETTER EL WITH TAIL +\DeclareTextCommand{\CYRLDSC}{PU}{\84\305}% U+04C5 +% U+04C6 CYRILLIC SMALL LETTER EL WITH TAIL +\DeclareTextCommand{\cyrldsc}{PU}{\84\306}% U+04C6 +% U+04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK; Enhookcyrillic +\DeclareTextCommand{\CYRNHK}{PU}{\84\307}% U+04C7 +% U+04C8 CYRILLIC SMALL LETTER EN WITH HOOK; enhookcyrillic +\DeclareTextCommand{\cyrnhk}{PU}{\84\310}% U+04C8 +% U+04CB CYRILLIC CAPITAL LETTER KHAKASSIAN CHE; Chekhakassiancyrillic +\DeclareTextCommand{\CYRCHLDSC}{PU}{\84\313}% U+04CB +% U+04CC CYRILLIC SMALL LETTER KHAKASSIAN CHE; chekhakassiancyrillic +\DeclareTextCommand{\cyrchldsc}{PU}{\84\314}% U+04CC +% U+04CD CYRILLIC CAPITAL LETTER EM WITH TAIL +\DeclareTextCommand{\CYRMDSC}{PU}{\84\315}% U+04CD +% U+04CE CYRILLIC SMALL LETTER EM WITH TAIL +\DeclareTextCommand{\cyrmdsc}{PU}{\84\316}% U+04CE +% \end{macrocode} +% |\84\317|: U+04CF CYRILLIC SMALL LETTER PALOCHKA +% \begin{macrocode} +% U+04D0 CYRILLIC CAPITAL LETTER A WITH BREVE; Abrevecyrillic +\DeclareTextCompositeCommand{\U}{PU}{\CYRA}{\84\320}% U+04D0 +% U+04D1 CYRILLIC SMALL LETTER A WITH BREVE; abrevecyrillic +\DeclareTextCompositeCommand{\U}{PU}{\cyra}{\84\321}% U+04D1 +% U+04D2 CYRILLIC CAPITAL LETTER A WITH DIAERESIS; Adieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRA}{\84\322}% U+04D2 +% U+04D3 CYRILLIC SMALL LETTER A WITH DIAERESIS; adieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyra}{\84\323}% U+04D3 +% U+04D4 CYRILLIC CAPITAL LIGATURE A IE; Aiecyrillic +\DeclareTextCommand{\CYRAE}{PU}{\84\324}% U+04D4 +% U+04D5 CYRILLIC SMALL LIGATURE A IE; aiecyrillic +\DeclareTextCommand{\cyrae}{PU}{\84\325}% U+04D5 +% U+04D6 CYRILLIC CAPITAL LETTER IE WITH BREVE; Iebrevecyrillic +\DeclareTextCompositeCommand{\U}{PU}{\CYRE}{\84\326}% U+04D6 +% U+04D7 CYRILLIC SMALL LETTER IE WITH BREVE; iebrevecyrillic +\DeclareTextCompositeCommand{\U}{PU}{\cyre}{\84\327}% U+04D7 +% U+04D8 CYRILLIC CAPITAL LETTER SCHWA; Schwacyrillic +\DeclareTextCommand{\CYRSCHWA}{PU}{\84\330}% U+04D8 +% U+04D9 CYRILLIC SMALL LETTER SCHWA; *afii10846, schwacyrillic +\DeclareTextCommand{\cyrschwa}{PU}{\84\331}% U+04D9 +% U+04DA CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS; +% Schwadieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRSCHWA}{\84\332}% U+04DA +% U+04DB CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS; +% schwadieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyrschwa}{\84\333}% U+04DB +% U+04DC CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS; Zhedieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRZH}{\84\334}% U+04DC +% U+04DD CYRILLIC SMALL LETTER ZHE WITH DIAERESIS; zhedieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyrzh}{\84\335}% U+04DD +% U+04DE CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS; Zedieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRZ}{\84\336}% U+04DE +% U+04DF CYRILLIC SMALL LETTER ZE WITH DIAERESIS; zedieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyrz}{\84\337}% U+04DF +% U+04E0 CYRILLIC CAPITAL LETTER ABKHASIAN DZE; Dzeabkhasiancyrillic +\DeclareTextCommand{\CYRABHDZE}{PU}{\84\340}% U+04E0 +% U+04E1 CYRILLIC SMALL LETTER ABKHASIAN DZE; dzeabkhasiancyrillic +\DeclareTextCommand{\cyrabhdze}{PU}{\84\341}% U+04E1 +% U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON; Imacroncyrillic +\DeclareTextCompositeCommand{\=}{PU}{\CYRI}{\84\342}% U+04E2 +% U+04E3 CYRILLIC SMALL LETTER I WITH MACRON; imacroncyrillic +\DeclareTextCompositeCommand{\=}{PU}{\cyri}{\84\343}% U+04E3 +% U+04E4 CYRILLIC CAPITAL LETTER I WITH DIAERESIS; Idieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRI}{\84\344}% U+04E4 +% U+04E5 CYRILLIC SMALL LETTER I WITH DIAERESIS; idieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyri}{\84\345}% U+04E5 +% U+04E6 CYRILLIC CAPITAL LETTER O WITH DIAERESIS; Odieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRO}{\84\346}% U+04E6 +% U+04E7 CYRILLIC SMALL LETTER O WITH DIAERESIS; odieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyro}{\84\347}% U+04E7 +% U+04E8 CYRILLIC CAPITAL LETTER BARRED O; Obarredcyrillic +\DeclareTextCommand{\CYROTLD}{PU}{\84\350}% U+04E8 +% U+04E9 CYRILLIC SMALL LETTER BARRED O; obarredcyrillic +\DeclareTextCommand{\cyrotld}{PU}{\84\351}% U+04E9 +% U+04EA CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS; +% Obarreddieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYROTLD}{\84\352}% U+04EA +% U+04EB CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS; +% obarreddieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyrotld}{\84\353}% U+04EB +% U+04EC CYRILLIC CAPITAL LETTER E WITH DIAERESIS +\DeclareTextCompositeCommand{\"}{PU}{\CYREREV}{\84\354}% U+04EC +% U+04ED CYRILLIC SMALL LETTER E WITH DIAERESIS +\DeclareTextCompositeCommand{\"}{PU}{\cyreref}{\84\355}% U+04ED +% U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON; Umacroncyrillic +\DeclareTextCompositeCommand{\=}{PU}{\CYRU}{\84\356}% U+04EE +% U+04EF CYRILLIC SMALL LETTER U WITH MACRON; umacroncyrillic +\DeclareTextCompositeCommand{\=}{PU}{\cyru}{\84\357}% U+04EF +% U+04F0 CYRILLIC CAPITAL LETTER U WITH DIAERESIS; Udieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRU}{\84\360}% U+04F0 +% U+04F1 CYRILLIC SMALL LETTER U WITH DIAERESIS; udieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyru}{\84\361}% U+04F1 +% U+04F2 CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE; Uhungarumlautcyrillic +\DeclareTextCompositeCommand{\H}{PU}{\CYRU}{\84\362}% U+04F2 +% U+04F3 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE; uhungarumlautcyrillic +\DeclareTextCompositeCommand{\H}{PU}{\cyru}{\84\363}% U+04F3 +% U+04F4 CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS; Chedieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRCH}{\84\364}% U+04F4 +% U+04F5 CYRILLIC SMALL LETTER CHE WITH DIAERESIS; chedieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyrch}{\84\365}% U+04F5 +% U+04F6 CYRILLIC CAPITAL LETTER GHE WITH DESCENDER +\DeclareTextCommand{\CYRGDSC}{PU}{\84\366}% U+04F6 +% U+04F7 CYRILLIC SMALL LETTER GHE WITH DESCENDER +\DeclareTextCommand{\cyrgdsc}{PU}{\84\367}% U+04F7 +% U+04F8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS; Yerudieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\CYRERY}{\84\370}% U+04F8 +% U+04F9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS; yerudieresiscyrillic +\DeclareTextCompositeCommand{\"}{PU}{\cyrery}{\84\371}% U+04F9 +% \end{macrocode} +% |\84\372|: U+04FA CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK\\ +% |\84\373|: U+04FB CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK +% \begin{macrocode} +% U+04FC CYRILLIC CAPITAL LETTER HA WITH HOOK +\DeclareTextCommand{\CYRHHK}{PU}{\84\374}% U+04FC +% U+04FD CYRILLIC SMALL LETTER HA WITH HOOK +\DeclareTextCommand{\cyrhhk}{PU}{\84\375}% U+04FD +% \end{macrocode} +% |\84\376|: U+04FE CYRILLIC CAPITAL LETTER HA WITH STROKE\\ +% |\84\377|: U+04FF CYRILLIC SMALL LETTER HA WITH STROKE +% +% \subsubsection{Hebrew: U+0590 to U+05FF} +% +% Macro names are taken from \texttt{he8enc.def}. +% \begin{macrocode} +% U+05C3 HEBREW PUNCTUATION SOF PASUQ +\DeclareTextCommand{\sofpasuq}{PU}{\85\303}% U+05C3 +% U+05D0 HEBREW LETTER ALEF +\DeclareTextCommand{\hebalef}{PU}{\85\320}% U+05D0 +% U+05D1 HEBREW LETTER BET +\DeclareTextCommand{\hebbet}{PU}{\85\321}% U+05D1 +% U+05D2 HEBREW LETTER GIMEL +\DeclareTextCommand{\hebgimel}{PU}{\85\322}% U+05D2 +% U+05D3 HEBREW LETTER DALET +\DeclareTextCommand{\hebdalet}{PU}{\85\323}% U+05D3 +% U+05D4 HEBREW LETTER HE +\DeclareTextCommand{\hebhe}{PU}{\85\324}% U+05D4 +% U+05D5 HEBREW LETTER VAV +\DeclareTextCommand{\hebvav}{PU}{\85\325}% U+05D5 +% U+05D6 HEBREW LETTER ZAYIN +\DeclareTextCommand{\hebzayin}{PU}{\85\326}% U+05D6 +% U+05D7 HEBREW LETTER HET +\DeclareTextCommand{\hebhet}{PU}{\85\327}% U+05D7 +% U+05D8 HEBREW LETTER TET +\DeclareTextCommand{\hebtet}{PU}{\85\330}% U+05D8 +% U+05D9 HEBREW LETTER YOD +\DeclareTextCommand{\hebyod}{PU}{\85\331}% U+05D9 +% U+05DA HEBREW LETTER FINAL KAF +\DeclareTextCommand{\hebfinalkaf}{PU}{\85\332}% U+05DA +% U+05DB HEBREW LETTER KAF +\DeclareTextCommand{\hebkaf}{PU}{\85\333}% U+05DB +% U+05DC HEBREW LETTER LAMED +\DeclareTextCommand{\heblamed}{PU}{\85\334}% U+05DC +% U+05DD HEBREW LETTER FINAL MEM +\DeclareTextCommand{\hebfinalmem}{PU}{\85\335}% U+05DD +% U+05DE HEBREW LETTER MEM +\DeclareTextCommand{\hebmem}{PU}{\85\336}% U+05DE +% U+05DF HEBREW LETTER FINAL NUN +\DeclareTextCommand{\hebfinalnun}{PU}{\85\337}% U+05DF +% U+05E0 HEBREW LETTER NUN +\DeclareTextCommand{\hebnun}{PU}{\85\340}% U+05E0 +% U+05E1 HEBREW LETTER SAMEKH +\DeclareTextCommand{\hebsamekh}{PU}{\85\341}% U+05E1 +% U+05E2 HEBREW LETTER AYIN +\DeclareTextCommand{\hebayin}{PU}{\85\342}% U+05E2 +% U+05E3 HEBREW LETTER FINAL PE +\DeclareTextCommand{\hebfinalpe}{PU}{\85\343}% U+05E3 +% U+05E4 HEBREW LETTER PE +\DeclareTextCommand{\hebpe}{PU}{\85\344}% U+05E4 +% U+05E5 HEBREW LETTER FINAL TSADI +\DeclareTextCommand{\hebfinaltsadi}{PU}{\85\345}% U+05E5 +% U+05E6 HEBREW LETTER TSADI +\DeclareTextCommand{\hebtsadi}{PU}{\85\346}% U+05E6 +% U+05E7 HEBREW LETTER QOF +\DeclareTextCommand{\hebqof}{PU}{\85\347}% U+05E7 +% U+05E8 HEBREW LETTER RESH +\DeclareTextCommand{\hebresh}{PU}{\85\350}% U+05E8 +% U+05E9 HEBREW LETTER SHIN +\DeclareTextCommand{\hebshin}{PU}{\85\351}% U+05E9 +%* \hebshin -> \hebsin (he8) +% U+05EA HEBREW LETTER TAV +\DeclareTextCommand{\hebtav}{PU}{\85\352}% U+05EA +% U+05F0 HEBREW LIGATURE YIDDISH DOUBLE VAV +\DeclareTextCommand{\doublevav}{PU}{\85\360}% U+05F0 +% U+05F1 HEBREW LIGATURE YIDDISH VAV YOD +\DeclareTextCommand{\vavyod}{PU}{\85\361}% U+05F1 +% U+05F2 HEBREW LIGATURE YIDDISH DOUBLE YOD +\DeclareTextCommand{\doubleyod}{PU}{\85\362}% U+05F2 +% \end{macrocode} +% +% \subsubsection{Thai: U+0E00 to U+0E7F} +% +% \begin{macrocode} +% U+0E3F THAI CURRENCY SYMBOL BAHT; bahtthai +\DeclareTextCommand{\textbaht}{PU}{\9016\077}% U+0E3F +% \end{macrocode} +% +% \subsubsection{Phonetic Extensions: U+1D00 to U+1D7F} +% +% \begin{macrocode} +% U+1D00 LATIN LETTER SMALL CAPITAL A; \textsca (tipa) +\DeclareTextCommand{\textsca}{PU}{\9035\000}% U+1D00 +% U+1D05 LATIN LETTER SMALL CAPITAL D; \scd (wsuipa) +\DeclareTextCommand{\textscd}{PU}{\9035\005}%* U+1D05 +% U+1D07 LATIN LETTER SMALL CAPITAL E; \textsce (tipa) +\DeclareTextCommand{\textsce}{PU}{\9035\007}% U+1D07 +% U+1D0A LATIN LETTER SMALL CAPITAL J; \textscj (tipa) +\DeclareTextCommand{\textscj}{PU}{\9035\012}% U+1D0A +% U+1D0B LATIN LETTER SMALL CAPITAL K; \textsck (tipx) +\DeclareTextCommand{\textPUsck}{PU}{\9035\013}% U+1D0B +%* \textPUsck -> \textsck (tipx) +% U+1D0D LATIN LETTER SMALL CAPITAL M; \textscm (tipx) +\DeclareTextCommand{\textPUscm}{PU}{\9035\015}% U+1D0D +%* \textPUscm -> \textscm (tipx) +% U+1D18 LATIN LETTER SMALL CAPITAL P; \textscp (tipx) +\DeclareTextCommand{\textPUscp}{PU}{\9035\030}% U+1D18 +%* \textPUscp -> \textscp (tipx) +% U+1D19 LATIN LETTER SMALL CAPITAL REVERSED R; \textrevscr (tipx) +\DeclareTextCommand{\textPUrevscr}{PU}{\9035\031}% U+1D19 +%* \textPUrevscr -> \textrevscr (tipx) +% U+1D1C LATIN LETTER SMALL CAPITAL U; \textscu (tipa), \scu (wsuipa) +\DeclareTextCommand{\textscu}{PU}{\9035\034}%* U+1D1C +% U+1D62 LATIN SUBSCRIPT SMALL LETTER I +\DeclareTextCommand{\textiinferior}{PU}{\9035\142}%* U+1D62 +% U+1D63 LATIN SUBSCRIPT SMALL LETTER R +\DeclareTextCommand{\textrinferior}{PU}{\9035\143}%* U+1D63 +% U+1D64 LATIN SUBSCRIPT SMALL LETTER U +\DeclareTextCommand{\textuinferior}{PU}{\9035\144}%* U+1D64 +% U+1D65 LATIN SUBSCRIPT SMALL LETTER V +\DeclareTextCommand{\textvinferior}{PU}{\9035\145}%* U+1D65 +% U+1D66 GREEK SUBSCRIPT SMALL LETTER BETA +\DeclareTextCommand{\textbetainferior}{PU}{\9035\146}%* U+1D66 +% U+1D67 GREEK SUBSCRIPT SMALL LETTER GAMMA +\DeclareTextCommand{\textgammainferior}{PU}{\9035\147}%* U+1D67 +% U+1D68 GREEK SUBSCRIPT SMALL LETTER RHO +\DeclareTextCommand{\textrhoinferior}{PU}{\9035\150}%* U+1D68 +% U+1D69 GREEK SUBSCRIPT SMALL LETTER PHI +\DeclareTextCommand{\textphiinferior}{PU}{\9035\151}%* U+1D69 +% U+1D6A GREEK SUBSCRIPT SMALL LETTER CHI +\DeclareTextCommand{\textchiinferior}{PU}{\9035\152}%* U+1D6A +% U+1D7B LATIN SMALL CAPITAL LETTER I WITH STROKE; +% \barsci (wsuipa) +\DeclareTextCommand{\textbarsci}{PU}{\9035\173}%* U+1D7B +% U+1D7D LATIN SMALL LETTER P WITH STROKE; \barp (wsuipa) +\DeclareTextCommand{\textbarp}{PU}{\9035\175}%* U+1D7D +% U+1D7E LATIN SMALL CAPITAL LETTER U WITH STROKE; +% \barscu (wsuipa) +\DeclareTextCommand{\textbarscu}{PU}{\9035\176}%* U+1D7E +% \end{macrocode} +% +% \subsubsection{Phonetic Extensions Supplement: U+1D80 to U+1DBF} +% +% \begin{macrocode} +% U+1D8F LATIN SMALL LETTER A WITH RETROFLEX HOOK; \textrhooka (tipx) +\DeclareTextCommand{\textPUrhooka}{PU}{\9035\217}% U+1D8F +%* \textPUrhooka -> \textrhooka (tipx) +% U+1D91 LATIN SMALL LETTER D WITH HOOK AND TAIL; \texthtrtaild (tipa) +\DeclareTextCommand{\texthtrtaild}{PU}{\9035\221}%* U+1D91 +% U+1D92 LATIN SMALL LETTER E WITH RETROFLEX HOOK; \textrhooke (tipx) +\DeclareTextCommand{\textPUrhooke}{PU}{\9035\222}% U+1D92 +%* \textPUrhooke -> \textrhooke (tipx) +% U+1D93 LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK; +% \textrhookepsilon (tipx) +\DeclareTextCommand{\textPUrhookepsilon}{PU}{\9035\223}% U+1D93 +%* \textPUrhookepsilon -> \textrhookepsilon (tipx) +% U+1D97 LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK; +% \textrhookopeno (tipx) +\DeclareTextCommand{\textPUrhookopeno}{PU}{\9035\227}% U+1D97 +%* \textPUrhookopeno -> \textrhookopeno (tipx) +% \end{macrocode} +% +% \subsubsection{Latin Extended Additional: U+1E00 to U+1EFF} +% +% \begin{macrocode} +% U+1E00 LATIN CAPITAL LETTER A WITH RING BELOW; Aringbelow +\DeclareTextCompositeCommand{\textsubring}{PU}{A}{\9036\000}% U+1E00 +% U+1E01 LATIN SMALL LETTER A WITH RING BELOW; aringbelow +\DeclareTextCompositeCommand{\textsubring}{PU}{a}{\9036\001}% U+1E01 +% U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE; Bdotaccent +\DeclareTextCompositeCommand{\.}{PU}{B}{\9036\002}% U+1E02 +% U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE; bdotaccent +\DeclareTextCompositeCommand{\.}{PU}{b}{\9036\003}% U+1E03 +% U+1E04 LATIN CAPITAL LETTER B WITH DOT BELOW; Bdotbelow +\DeclareTextCompositeCommand{\d}{PU}{B}{\9036\004}% U+1E04 +% U+1E05 LATIN SMALL LETTER B WITH DOT BELOW; bdotbelow +\DeclareTextCompositeCommand{\d}{PU}{b}{\9036\005}% U+1E05 +% U+1E06 LATIN CAPITAL LETTER B WITH LINE BELOW; Blinebelow +\DeclareTextCompositeCommand{\b}{PU}{B}{\9036\006}% U+1E06 +% U+1E07 LATIN SMALL LETTER B WITH LINE BELOW; blinebelow +\DeclareTextCompositeCommand{\b}{PU}{b}{\9036\007}% U+1E07 +% U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE; Ddotaccent +\DeclareTextCompositeCommand{\.}{PU}{D}{\9036\012}% U+1E0A +% U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE; ddotaccent +\DeclareTextCompositeCommand{\.}{PU}{d}{\9036\013}% U+1E0B +% U+1E0C LATIN CAPITAL LETTER D WITH DOT BELOW; Ddotbelow +\DeclareTextCompositeCommand{\d}{PU}{D}{\9036\014}% U+1E0C +% U+1E0D LATIN SMALL LETTER D WITH DOT BELOW; ddotbelow +\DeclareTextCompositeCommand{\d}{PU}{d}{\9036\015}% U+1E0D +% U+1E0E LATIN CAPITAL LETTER D WITH LINE BELOW; Dlinebelow +\DeclareTextCompositeCommand{\b}{PU}{D}{\9036\016}% U+1E0E +% U+1E0F LATIN SMALL LETTER D WITH LINE BELOW; dlinebelow +\DeclareTextCompositeCommand{\b}{PU}{d}{\9036\017}% U+1E0F +% U+1E10 LATIN CAPITAL LETTER D WITH CEDILLA; Dcedilla +\DeclareTextCompositeCommand{\c}{PU}{D}{\9036\020}% U+1E10 +% U+1E11 LATIN SMALL LETTER D WITH CEDILLA; dcedilla +\DeclareTextCompositeCommand{\c}{PU}{d}{\9036\021}% U+1E11 +% U+1E12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW; Dcircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{D}{\9036\022}% U+1E12 +% U+1E13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW; dcircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{d}{\9036\023}% U+1E13 +% U+1E14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE; +% Emacrongrave +\DeclareTextCompositeCommand{\textgravemacron}{PU}{E}{\9036\024}% U+1E14 +% U+1E15 LATIN SMALL LETTER E WITH MACRON AND GRAVE; +% emacrongrave +\DeclareTextCompositeCommand{\textgravemacron}{PU}{e}{\9036\025}% U+1E15 +% U+1E16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE; +% Emacronacute +\DeclareTextCompositeCommand{\textacutemacron}{PU}{E}{\9036\026}% U+1E16 +% U+1E17 LATIN SMALL LETTER E WITH MACRON AND ACUTE; +% emacronacute +\DeclareTextCompositeCommand{\textacutemacron}{PU}{e}{\9036\027}% U+1E17 +% U+1E18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW; Ecircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{E}{\9036\030}% U+1E18 +% U+1E19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW; ecircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{e}{\9036\031}% U+1E19 +% U+1E1A LATIN CAPITAL LETTER E WITH TILDE BELOW; Etildebelow +\DeclareTextCompositeCommand{\textsubtilde}{PU}{E}{\9036\032}% U+1E1A +% U+1E1B LATIN SMALL LETTER E WITH TILDE BELOW; etildebelow +\DeclareTextCompositeCommand{\textsubtilde}{PU}{e}{\9036\033}% U+1E1B +% U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE; Fdotaccent +\DeclareTextCompositeCommand{\.}{PU}{F}{\9036\036}% U+1E1E +% U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE; fdotaccent +\DeclareTextCompositeCommand{\.}{PU}{f}{\9036\037}% U+1E1F +% U+1E20 LATIN CAPITAL LETTER G WITH MACRON; Gmacron +\DeclareTextCompositeCommand{\=}{PU}{G}{\9036\040}% U+1E20 +% U+1E21 LATIN SMALL LETTER G WITH MACRON; gmacron +\DeclareTextCompositeCommand{\=}{PU}{g}{\9036\041}% U+1E21 +% U+1E22 LATIN CAPITAL LETTER H WITH DOT ABOVE; Hdotaccent +\DeclareTextCompositeCommand{\.}{PU}{H}{\9036\042}% U+1E22 +% U+1E23 LATIN SMALL LETTER H WITH DOT ABOVE; hdotaccent +\DeclareTextCompositeCommand{\.}{PU}{h}{\9036\043}% U+1E23 +% U+1E24 LATIN CAPITAL LETTER H WITH DOT BELOW; Hdotbelow +\DeclareTextCompositeCommand{\d}{PU}{H}{\9036\044}% U+1E24 +% U+1E25 LATIN SMALL LETTER H WITH DOT BELOW; hdotbelow +\DeclareTextCompositeCommand{\d}{PU}{h}{\9036\045}% U+1E25 +% U+1E26 LATIN CAPITAL LETTER H WITH DIAERESIS; Hdieresis +\DeclareTextCompositeCommand{\"}{PU}{H}{\9036\046}% U+1E26 +% U+1E27 LATIN SMALL LETTER H WITH DIAERESIS; hdieresis +\DeclareTextCompositeCommand{\"}{PU}{h}{\9036\047}% U+1E27 +% U+1E28 LATIN CAPITAL LETTER H WITH CEDILLA; Hcedilla +\DeclareTextCompositeCommand{\c}{PU}{H}{\9036\050}% U+1E28 +% U+1E29 LATIN SMALL LETTER H WITH CEDILLA; hcedilla +\DeclareTextCompositeCommand{\c}{PU}{h}{\9036\051}% U+1E29 +% U+1E2A LATIN CAPITAL LETTER H WITH BREVE BELOW; Hbrevebelow +\DeclareTextCompositeCommand{\textsubbreve}{PU}{H}{\9036\052}% U+1E2A +% U+1E2B LATIN SMALL LETTER H WITH BREVE BELOW; hbrevebelow +\DeclareTextCompositeCommand{\textsubbreve}{PU}{h}{\9036\053}% U+1E2B +% U+1E2C LATIN CAPITAL LETTER I WITH TILDE BELOW; Itildebelow +\DeclareTextCompositeCommand{\textsubtilde}{PU}{I}{\9036\054}% U+1E2C +% U+1E2D LATIN SMALL LETTER I WITH TILDE BELOW; itildebelow +\DeclareTextCompositeCommand{\textsubtilde}{PU}{i}{\9036\055}% U+1E2D +% U+1E30 LATIN CAPITAL LETTER K WITH ACUTE; Kacute +\DeclareTextCompositeCommand{\'}{PU}{K}{\9036\060}% U+1E30 +% U+1E31 LATIN SMALL LETTER K WITH ACUTE; kacute +\DeclareTextCompositeCommand{\'}{PU}{k}{\9036\061}% U+1E31 +% U+1E32 LATIN CAPITAL LETTER K WITH DOT BELOW; Kdotbelow +\DeclareTextCompositeCommand{\d}{PU}{K}{\9036\062}% U+1E32 +% U+1E33 LATIN SMALL LETTER K WITH DOT BELOW; kdotbelow +\DeclareTextCompositeCommand{\d}{PU}{k}{\9036\063}% U+1E33 +% U+1E34 LATIN CAPITAL LETTER K WITH LINE BELOW; Klinebelow +\DeclareTextCompositeCommand{\b}{PU}{K}{\9036\064}% U+1E34 +% U+1E35 LATIN SMALL LETTER K WITH LINE BELOW; klinebelow +\DeclareTextCompositeCommand{\b}{PU}{k}{\9036\065}% U+1E35 +% U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW; Ldotbelow +\DeclareTextCompositeCommand{\d}{PU}{L}{\9036\066}% U+1E36 +% U+1E37 LATIN SMALL LETTER L WITH DOT BELOW; ldotbelow +\DeclareTextCompositeCommand{\d}{PU}{l}{\9036\067}% U+1E37 +% U+1E3A LATIN CAPITAL LETTER L WITH LINE BELOW; Llinebelow +\DeclareTextCompositeCommand{\b}{PU}{L}{\9036\072}% U+1E3A +% U+1E3B LATIN SMALL LETTER L WITH LINE BELOW; llinebelow +\DeclareTextCompositeCommand{\b}{PU}{l}{\9036\073}% U+1E3B +% U+1E3C LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW; Lcircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{L}{\9036\074}% U+1E3C +% U+1E3D LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW; lcircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{l}{\9036\075}% U+1E3D +% U+1E3E LATIN CAPITAL LETTER M WITH ACUTE; Macute +\DeclareTextCompositeCommand{\'}{PU}{M}{\9036\076}% U+1E3E +% U+1E3F LATIN SMALL LETTER M WITH ACUTE; macute +\DeclareTextCompositeCommand{\'}{PU}{m}{\9036\077}% U+1E3F +% U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE; Mdotaccent +\DeclareTextCompositeCommand{\.}{PU}{M}{\9036\100}% U+1E40 +% U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE; mdotaccent +\DeclareTextCompositeCommand{\.}{PU}{m}{\9036\101}% U+1E41 +% U+1E42 LATIN CAPITAL LETTER M WITH DOT BELOW; Mdotbelow +\DeclareTextCompositeCommand{\d}{PU}{M}{\9036\102}% U+1E42 +% U+1E43 LATIN SMALL LETTER M WITH DOT BELOW; mdotbelow +\DeclareTextCompositeCommand{\d}{PU}{m}{\9036\103}% U+1E43 +% U+1E44 LATIN CAPITAL LETTER N WITH DOT ABOVE; Ndotaccent +\DeclareTextCompositeCommand{\.}{PU}{N}{\9036\104}% U+1E44 +% U+1E45 LATIN SMALL LETTER N WITH DOT ABOVE; ndotaccent +\DeclareTextCompositeCommand{\.}{PU}{n}{\9036\105}% U+1E45 +% U+1E46 LATIN CAPITAL LETTER N WITH DOT BELOW; Ndotbelow +\DeclareTextCompositeCommand{\d}{PU}{N}{\9036\106}% U+1E46 +% U+1E47 LATIN SMALL LETTER N WITH DOT BELOW; ndotbelow +\DeclareTextCompositeCommand{\d}{PU}{n}{\9036\107}% U+1E47 +% U+1E48 LATIN CAPITAL LETTER N WITH LINE BELOW; Nlinebelow +\DeclareTextCompositeCommand{\b}{PU}{N}{\9036\110}% U+1E48 +% U+1E49 LATIN SMALL LETTER N WITH LINE BELOW; nlinebelow +\DeclareTextCompositeCommand{\b}{PU}{n}{\9036\111}% U+1E49 +% U+1E4A LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW; Ncircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{N}{\9036\112}% U+1E4A +% U+1E4B LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW; ncircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{n}{\9036\113}% U+1E4B +% U+1E50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE; +% Omacrongrave +\DeclareTextCompositeCommand{\textgravemacron}{PU}{O}{\9036\120}% U+1E50 +% U+1E51 LATIN SMALL LETTER O WITH MACRON AND GRAVE; +% omacrongrave +\DeclareTextCompositeCommand{\textgravemacron}{PU}{o}{\9036\121}% U+1E51 +% U+1E52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE; +% Omacronacute +\DeclareTextCompositeCommand{\textacutemacron}{PU}{O}{\9036\122}% U+1E52 +% U+1E53 LATIN SMALL LETTER O WITH MACRON AND ACUTE; +% omacronacute +\DeclareTextCompositeCommand{\textacutemacron}{PU}{o}{\9036\123}% U+1E53 +% U+1E54 LATIN CAPITAL LETTER P WITH ACUTE; Pacute +\DeclareTextCompositeCommand{\'}{PU}{P}{\9036\124}% U+1E54 +% U+1E55 LATIN SMALL LETTER P WITH ACUTE; pacute +\DeclareTextCompositeCommand{\'}{PU}{p}{\9036\125}% U+1E55 +% U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE; Pdotaccent +\DeclareTextCompositeCommand{\.}{PU}{P}{\9036\126}% U+1E56 +% U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE; pdotaccent +\DeclareTextCompositeCommand{\.}{PU}{p}{\9036\127}% U+1E57 +% U+1E58 LATIN CAPITAL LETTER R WITH DOT ABOVE; Rdotaccent +\DeclareTextCompositeCommand{\.}{PU}{R}{\9036\130}% U+1E58 +% U+1E59 LATIN SMALL LETTER R WITH DOT ABOVE; rdotaccent +\DeclareTextCompositeCommand{\.}{PU}{r}{\9036\131}% U+1E59 +% U+1E5A LATIN CAPITAL LETTER R WITH DOT BELOW; Rdotbelow +\DeclareTextCompositeCommand{\d}{PU}{R}{\9036\132}% U+1E5A +% U+1E5B LATIN SMALL LETTER R WITH DOT BELOW; rdotbelow +\DeclareTextCompositeCommand{\d}{PU}{r}{\9036\133}% U+1E5B +% U+1E5E LATIN CAPITAL LETTER R WITH LINE BELOW; Rlinebelow +\DeclareTextCompositeCommand{\b}{PU}{R}{\9036\136}% U+1E5E +% U+1E5F LATIN SMALL LETTER R WITH LINE BELOW; rlinebelow +\DeclareTextCompositeCommand{\b}{PU}{r}{\9036\137}% U+1E5F +% U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE; Sdotaccent +\DeclareTextCompositeCommand{\.}{PU}{S}{\9036\140}% U+1E60 +% U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE; sdotaccent +\DeclareTextCompositeCommand{\.}{PU}{s}{\9036\141}% U+1E61 +% U+1E62 LATIN CAPITAL LETTER S WITH DOT BELOW; Sdotbelow +\DeclareTextCompositeCommand{\d}{PU}{S}{\9036\142}% U+1E62 +% U+1E63 LATIN SMALL LETTER S WITH DOT BELOW; sdotbelow +\DeclareTextCompositeCommand{\d}{PU}{s}{\9036\143}% U+1E63 +% U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE; Tdotaccent +\DeclareTextCompositeCommand{\.}{PU}{T}{\9036\152}% U+1E6A +% U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE; tdotaccent +\DeclareTextCompositeCommand{\.}{PU}{t}{\9036\153}% U+1E6B +% U+1E6C LATIN CAPITAL LETTER T WITH DOT BELOW; Tdotbelow +\DeclareTextCompositeCommand{\d}{PU}{T}{\9036\154}% U+1E6C +% U+1E6D LATIN SMALL LETTER T WITH DOT BELOW; tdotbelow +\DeclareTextCompositeCommand{\d}{PU}{t}{\9036\155}% U+1E6D +% U+1E6E LATIN CAPITAL LETTER T WITH LINE BELOW; Tlinebelow +\DeclareTextCompositeCommand{\b}{PU}{T}{\9036\156}% U+1E6E +% U+1E6F LATIN SMALL LETTER T WITH LINE BELOW; tlinebelow +\DeclareTextCompositeCommand{\b}{PU}{t}{\9036\157}% U+1E6F +% U+1E70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW; Tcircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{T}{\9036\160}% U+1E70 +% U+1E71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW; tcircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{t}{\9036\161}% U+1E71 +% U+1E72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW; Udieresisbelow +\DeclareTextCompositeCommand{\textsubumlaut}{PU}{U}{\9036\162}% U+1E72 +% U+1E73 LATIN SMALL LETTER U WITH DIAERESIS BELOW; udieresisbelow +\DeclareTextCompositeCommand{\textsubumlaut}{PU}{u}{\9036\163}% U+1E73 +% U+1E74 LATIN CAPITAL LETTER U WITH TILDE BELOW; Utildebelow +\DeclareTextCompositeCommand{\textsubtilde}{PU}{U}{\9036\164}% U+1E74 +% U+1E75 LATIN SMALL LETTER U WITH TILDE BELOW; utildebelow +\DeclareTextCompositeCommand{\textsubtilde}{PU}{u}{\9036\165}% U+1E75 +% U+1E76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW; Ucircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{U}{\9036\166}% U+1E76 +% U+1E77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW; ucircumflexbelow +\DeclareTextCompositeCommand{\textsubcircum}{PU}{u}{\9036\167}% U+1E77 +% U+1E7C LATIN CAPITAL LETTER V WITH TILDE; Vtilde +\DeclareTextCompositeCommand{\~}{PU}{V}{\9036\174}% U+1E7C +% U+1E7D LATIN SMALL LETTER V WITH TILDE; vtilde +\DeclareTextCompositeCommand{\~}{PU}{v}{\9036\175}% U+1E7D +% U+1E7E LATIN CAPITAL LETTER V WITH DOT BELOW; Vdotbelow +\DeclareTextCompositeCommand{\d}{PU}{V}{\9036\176}% U+1E7E +% U+1E7F LATIN SMALL LETTER V WITH DOT BELOW; vdotbelow +\DeclareTextCompositeCommand{\d}{PU}{v}{\9036\177}% U+1E7F +% U+1E80 LATIN CAPITAL LETTER W WITH GRAVE; Wgrave +\DeclareTextCompositeCommand{\`}{PU}{W}{\9036\200}% U+1E80 +% U+1E81 LATIN SMALL LETTER W WITH GRAVE; wgrave +\DeclareTextCompositeCommand{\`}{PU}{w}{\9036\201}% U+1E81 +% U+1E82 LATIN CAPITAL LETTER W WITH ACUTE; Wacute +\DeclareTextCompositeCommand{\'}{PU}{W}{\9036\202}% U+1E82 +% U+1E83 LATIN SMALL LETTER W WITH ACUTE; wacute +\DeclareTextCompositeCommand{\'}{PU}{w}{\9036\203}% U+1E83 +% U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS; Wdieresis +\DeclareTextCompositeCommand{\"}{PU}{W}{\9036\204}% U+1E84 +% U+1E85 LATIN SMALL LETTER W WITH DIAERESIS; wdieresis +\DeclareTextCompositeCommand{\"}{PU}{w}{\9036\205}% U+1E85 +% U+1E86 LATIN CAPITAL LETTER W WITH DOT ABOVE; Wdotaccent +\DeclareTextCompositeCommand{\.}{PU}{W}{\9036\206}% U+1E86 +% U+1E87 LATIN SMALL LETTER W WITH DOT ABOVE; wdotaccent +\DeclareTextCompositeCommand{\.}{PU}{w}{\9036\207}% U+1E87 +% U+1E88 LATIN CAPITAL LETTER W WITH DOT BELOW; wdotbelow +\DeclareTextCompositeCommand{\d}{PU}{W}{\9036\210}% U+1E88 +% U+1E89 LATIN SMALL LETTER W WITH DOT BELOW; wdotbelow +\DeclareTextCompositeCommand{\d}{PU}{w}{\9036\211}% U+1E89 +% U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE; Xdotaccent +\DeclareTextCompositeCommand{\.}{PU}{X}{\9036\212}% U+1E8A +% U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE; xdotaccent +\DeclareTextCompositeCommand{\.}{PU}{x}{\9036\213}% U+1E8B +% U+1E8C LATIN CAPITAL LETTER X WITH DIAERESIS; Xdieresis +\DeclareTextCompositeCommand{\"}{PU}{X}{\9036\214}% U+1E8C +% U+1E8D LATIN SMALL LETTER X WITH DIAERESIS; xdieresis +\DeclareTextCompositeCommand{\"}{PU}{x}{\9036\215}% U+1E8D +% U+1E8E LATIN CAPITAL LETTER Y WITH DOT ABOVE; Ydotaccent +\DeclareTextCompositeCommand{\.}{PU}{Y}{\9036\216}% U+1E8E +% U+1E8F LATIN SMALL LETTER Y WITH DOT ABOVE; ydotaccent +\DeclareTextCompositeCommand{\.}{PU}{y}{\9036\217}% U+1E8F +% U+1E90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX; Zcircumflex +\DeclareTextCompositeCommand{\^}{PU}{Z}{\9036\220}% U+1E90 +% U+1E91 LATIN SMALL LETTER Z WITH CIRCUMFLEX; zcircumflex +\DeclareTextCompositeCommand{\^}{PU}{z}{\9036\221}% U+1E91 +% U+1E92 LATIN CAPITAL LETTER Z WITH DOT BELOW; Zdotbelow +\DeclareTextCompositeCommand{\d}{PU}{Z}{\9036\222}% U+1E92 +% U+1E93 LATIN SMALL LETTER Z WITH DOT BELOW; zdotbelow +\DeclareTextCompositeCommand{\d}{PU}{z}{\9036\223}% U+1E93 +% U+1E94 LATIN CAPITAL LETTER Z WITH LINE BELOW; Zlinebelow +\DeclareTextCompositeCommand{\b}{PU}{Z}{\9036\224}% U+1E94 +% U+1E95 LATIN SMALL LETTER Z WITH LINE BELOW; zlinebelow +\DeclareTextCompositeCommand{\b}{PU}{z}{\9036\225}% U+1E95 +% U+1E96 LATIN SMALL LETTER H WITH LINE BELOW; hlinebelow +\DeclareTextCompositeCommand{\b}{PU}{h}{\9036\226}% U+1E96 +% U+1E97 LATIN SMALL LETTER T WITH DIAERESIS; tdieresis +\DeclareTextCompositeCommand{\"}{PU}{t}{\9036\227}% U+1E97 +% U+1E98 LATIN SMALL LETTER W WITH RING ABOVE; wring +\DeclareTextCompositeCommand{\r}{PU}{w}{\9036\230}% U+1E98 +% U+1E99 LATIN SMALL LETTER Y WITH RING ABOVE; yring +\DeclareTextCompositeCommand{\r}{PU}{y}{\9036\231}% U+1E99 +% U+1E9B LATIN SMALL LETTER LONG S WITH DOT ABOVE; slongdotaccent +\DeclareTextCompositeCommand{\.}{PU}{\textlongs}{\9036\233}% U+1E9B +% U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW; Adotbelow +\DeclareTextCompositeCommand{\d}{PU}{A}{\9036\240}% U+1EA0 +% U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW; adotbelow +\DeclareTextCompositeCommand{\d}{PU}{a}{\9036\241}% U+1EA1 +% U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW; Edotbelow +\DeclareTextCompositeCommand{\d}{PU}{E}{\9036\270}% U+1EB8 +% U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW; edotbelow +\DeclareTextCompositeCommand{\d}{PU}{e}{\9036\271}% U+1EB9 +% U+1EBC LATIN CAPITAL LETTER E WITH TILDE; Etilde +\DeclareTextCompositeCommand{\~}{PU}{E}{\9036\274}% U+1EBC +% U+1EBD LATIN SMALL LETTER E WITH TILDE; etilde +\DeclareTextCompositeCommand{\~}{PU}{e}{\9036\275}% U+1EBD +% U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW; Idotbelow +\DeclareTextCompositeCommand{\d}{PU}{I}{\9036\312}% U+1ECA +% U+1ECB LATIN SMALL LETTER I WITH DOT BELOW; idotbelow +\DeclareTextCompositeCommand{\d}{PU}{i}{\9036\313}% U+1ECB +% U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW; Odotbelow +\DeclareTextCompositeCommand{\d}{PU}{O}{\9036\314}% U+1ECC +% U+1ECD LATIN SMALL LETTER O WITH DOT BELOW; odotbelow +\DeclareTextCompositeCommand{\d}{PU}{o}{\9036\315}% U+1ECD +% U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW; Udotbelow +\DeclareTextCompositeCommand{\d}{PU}{U}{\9036\344}% U+1EE4 +% U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW; udotbelow +\DeclareTextCompositeCommand{\d}{PU}{u}{\9036\345}% U+1EE5 +% U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE; Ygrave +\DeclareTextCompositeCommand{\`}{PU}{Y}{\9036\362}% U+1EF2 +% U+1EF3 LATIN SMALL LETTER Y WITH GRAVE; ygrave +\DeclareTextCompositeCommand{\`}{PU}{y}{\9036\363}% U+1EF3 +% U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW; Ydotbelow +\DeclareTextCompositeCommand{\d}{PU}{Y}{\9036\364}% U+1EF4 +% U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW; ydotbelow +\DeclareTextCompositeCommand{\d}{PU}{y}{\9036\365}% U+1EF5 +% U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE; Ytilde +\DeclareTextCompositeCommand{\~}{PU}{Y}{\9036\370}% U+1EF8 +% U+1EF9 LATIN SMALL LETTER Y WITH TILDE; ytilde +\DeclareTextCompositeCommand{\~}{PU}{y}{\9036\371}% U+1EF9 +% \end{macrocode} +% +% \subsubsection{General Punctuation: U+2000 to U+206F} +% +% \begin{macrocode} +% U+200C ZERO WIDTH NON-JOINER; *afii61664, zerowidthnonjoiner +\DeclareTextCommand{\textcompwordmark}{PU}{\9040\014}% U+200C +% U+2013 EN DASH; endash +\DeclareTextCommand{\textendash}{PU}{\9040\023}% U+2013 +% U+2014 EM DASH; emdash +\DeclareTextCommand{\textemdash}{PU}{\9040\024}% U+2014 +% U+2016 DOUBLE VERTICAL LINE; dblverticalbar +\DeclareTextCommand{\textbardbl}{PU}{\9040\026}% U+2016 +%* \textbardbl -> \textdoublevertline (tipa) +% U+2018 LEFT SINGLE QUOTATION MARK; quoteleft +\DeclareTextCommand{\textquoteleft}{PU}{\9040\030}% U+2018 +% U+2019 RIGHT SINGLE QUOTATION MARK; quoteright +\DeclareTextCommand{\textquoteright}{PU}{\9040\031}% U+2019 +% U+201A SINGLE LOW-9 QUOTATION MARK; quotesinglbase +\DeclareTextCommand{\quotesinglbase}{PU}{\9040\032}% U+201A +% U+201C LEFT DOUBLE QUOTATION MARK; quotedblleft +\DeclareTextCommand{\textquotedblleft}{PU}{\9040\034}% U+201C +% U+201D RIGHT DOUBLE QUOTATION MARK; quotedblright +\DeclareTextCommand{\textquotedblright}{PU}{\9040\035}% U+201D +% U+201E DOUBLE LOW-9 QUOTATION MARK; quotedblbase +\DeclareTextCommand{\quotedblbase}{PU}{\9040\036}% U+201E +% U+2020 DAGGER; dagger +\DeclareTextCommand{\textdagger}{PU}{\9040\040}%* U+2020 +%* \textdagger -> \dag (LaTeX) +% U+2021 DOUBLE DAGGER; daggerdbl; \ddagger (LaTeX) +\DeclareTextCommand{\textdaggerdbl}{PU}{\9040\041}% U+2021 +%* \textdaggerdbl -> \ddagger (LaTeX) +%* \textdaggerdbl -> \ddag (LaTeX) +% U+2022 BULLET; bullet +\DeclareTextCommand{\textbullet}{PU}{\9040\042}%* U+2022 +% U+2025 TWO DOT LEADER; \hdotfor (MnSymbol) +\DeclareTextCommand{\texthdotfor}{PU}{\9040\045}%* U+2025 +% U+2026 HORIZONTAL ELLIPSIS; ellipsis +\DeclareTextCommand{\textellipsis}{PU}{\9040\046}% U+2026 +%* \textellipsis -> \mathellipsis +% U+2030 PER MILLE SIGN; perthousand +\DeclareTextCommand{\textperthousand}{PU}{\9040\060}% U+2030 +% U+2031 PER TEN THOUSAND SIGN +\DeclareTextCommand{\textpertenthousand}{PU}{\9040\061}% U+2031 +% U+2032 PRIME; minute; \prime (MnSymbol) +\DeclareTextCommand{\textprime}{PU}{\9040\062}%* U+2032 +% U+2033 DOUBLE PRIME; \second (mathabx) +\DeclareTextCommand{\textsecond}{PU}{\9040\063}%* U+2033 +% U+2034 TRIPLE PRIME; \third (mathabx) +\DeclareTextCommand{\textthird}{PU}{\9040\064}%* U+2034 +% U+2035 REVERSED PRIME; \backprime (AmS) +\DeclareTextCommand{\textbackprime}{PU}{\9040\065}%* U+2035 +% U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK; guilsinglleft +\DeclareTextCommand{\guilsinglleft}{PU}{\9040\071}% U+2039 +% U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK; guilsinglright +\DeclareTextCommand{\guilsinglright}{PU}{\9040\072}% U+203A +% U+203B REFERENCE MARK; referencemark +\DeclareTextCommand{\textreferencemark}{PU}{\9040\073}% U+203B +% U+203D INTERROBANG +\DeclareTextCommand{\textinterrobang}{PU}{\9040\075}% U+203D +% U+2044 FRACTION SLASH; fraction +\DeclareTextCommand{\textfractionsolidus}{PU}{\9040\104}% U+2044 +% U+2045 LEFT SQUARE BRACKET WITH QUILL +\DeclareTextCommand{\textlquill}{PU}{\9040\105}% U+2045 +% U+2046 RIGHT SQUARE BRACKET WITH QUILL +\DeclareTextCommand{\textrquill}{PU}{\9040\106}% U+2046 +% U+2052 COMMERCIAL MINUS SIGN +\DeclareTextCommand{\textdiscount}{PU}{\9040\122}% U+2052 +% U+2056 THREE DOT PUNCTUATION; \lefttherefore (MnSymbol) +\DeclareTextCommand{\textlefttherefore}{PU}{\9040\126}%* U+2056 +% U+2057 QUADRUPLE PRIME; \fourth (mathabx) +\DeclareTextCommand{\textfourth}{PU}{\9040\127}%* U+2057 +% U+2058 FOUR DOT PUNCTUATION; \diamonddots (MnSymbol) +\DeclareTextCommand{\textdiamonddots}{PU}{\9040\130}%* U+2058 +% \end{macrocode} +% +% \subsubsection{Superscripts and Subscripts: U+2070 to U+209F} +% +% \begin{macrocode} +% U+2070 SUPERSCRIPT ZERO; zerosuperior +\DeclareTextCommand{\textzerosuperior}{PU}{\9040\160}%* U+2070 +% U+2071 SUPERSCRIPT LATIN SMALL LETTER I +\DeclareTextCommand{\textisuperior}{PU}{\9040\161}%* U+2071 +% U+2074 SUPERSCRIPT FOUR; foursuperior +\DeclareTextCommand{\textfoursuperior}{PU}{\9040\164}%* U+2074 +% U+2075 SUPERSCRIPT FIVE; fivesuperior +\DeclareTextCommand{\textfivesuperior}{PU}{\9040\165}%* U+2075 +% U+2076 SUPERSCRIPT SIX; sixsuperior +\DeclareTextCommand{\textsixsuperior}{PU}{\9040\166}%* U+2076 +% U+2077 SUPERSCRIPT SEVEN; sevensuperior +\DeclareTextCommand{\textsevensuperior}{PU}{\9040\167}%* U+2077 +% U+2078 SUPERSCRIPT EIGHT; eightsuperior +\DeclareTextCommand{\texteightsuperior}{PU}{\9040\170}%* U+2078 +% U+2079 SUPERSCRIPT NINE; ninesuperior +\DeclareTextCommand{\textninesuperior}{PU}{\9040\171}%* U+2079 +% U+207A SUPERSCRIPT PLUS SIGN; plussuperior +\DeclareTextCommand{\textplussuperior}{PU}{\9040\172}%* U+207A +% U+207B SUPERSCRIPT MINUS +\DeclareTextCommand{\textminussuperior}{PU}{\9040\173}%* U+207B +% U+207C SUPERSCRIPT EQUALS SIGN; equalsuperior +\DeclareTextCommand{\textequalsuperior}{PU}{\9040\174}%* U+207C +% U+207D SUPERSCRIPT LEFT PARENTHESIS; parenleftsuperior +\DeclareTextCommand{\textparenleftsuperior}{PU}{\9040\175}%* U+207D +% U+207E SUPERSCRIPT RIGHT PARENTHESIS; parenrightsuperior +\DeclareTextCommand{\textparenrightsuperior}{PU}{\9040\176}%* U+207E +% U+207F SUPERSCRIPT LATIN SMALL LETTER N; nsuperior +\DeclareTextCommand{\textnsuperior}{PU}{\9040\177}%* U+207F +% U+2080 SUBSCRIPT ZERO; zeroinferior +\DeclareTextCommand{\textzeroinferior}{PU}{\9040\200}%* U+2080 +% U+2081 SUBSCRIPT ONE; oneinferior +\DeclareTextCommand{\textoneinferior}{PU}{\9040\201}%* U+2081 +% U+2082 SUBSCRIPT TWO; twoinferior +\DeclareTextCommand{\texttwoinferior}{PU}{\9040\202}%* U+2082 +% U+2083 SUBSCRIPT THREE; threeinferior +\DeclareTextCommand{\textthreeinferior}{PU}{\9040\203}%* U+2083 +% U+2084 SUBSCRIPT FOUR; fourinferior +\DeclareTextCommand{\textfourinferior}{PU}{\9040\204}%* U+2084 +% U+2085 SUBSCRIPT FIVE; fiveinferior +\DeclareTextCommand{\textfiveinferior}{PU}{\9040\205}%* U+2085 +% U+2086 SUBSCRIPT SIX; sixinferior +\DeclareTextCommand{\textsixinferior}{PU}{\9040\206}%* U+2086 +% U+2087 SUBSCRIPT SEVEN; seveninferior +\DeclareTextCommand{\textseveninferior}{PU}{\9040\207}%* U+2087 +% U+2088 SUBSCRIPT EIGHT; eightinferior +\DeclareTextCommand{\texteightinferior}{PU}{\9040\210}%* U+2088 +% U+2089 SUBSCRIPT NINE; nineinferior +\DeclareTextCommand{\textnineinferior}{PU}{\9040\211}%* U+2089 +% U+208A SUBSCRIPT PLUS SIGN +\DeclareTextCommand{\textplusinferior}{PU}{\9040\212}%* U+208A +% U+208B SUBSCRIPT MINUS +\DeclareTextCommand{\textminusinferior}{PU}{\9040\213}%* U+208B +% U+208C SUBSCRIPT EQUALS SIGN +\DeclareTextCommand{\textequalsinferior}{PU}{\9040\214}%* U+208C +% U+208D SUBSCRIPT LEFT PARENTHESIS; parenleftinferior +\DeclareTextCommand{\textparenleftinferior}{PU}{\9040\215}%* U+208D +% U+208E SUBSCRIPT RIGHT PARENTHESIS; parenrightinferior +\DeclareTextCommand{\textparenrightinferior}{PU}{\9040\216}%* U+208E +% U+2090 LATIN SUBSCRIPT SMALL LETTER A +\DeclareTextCommand{\textainferior}{PU}{\9040\220}%* U+2090 +% U+2091 LATIN SUBSCRIPT SMALL LETTER E +\DeclareTextCommand{\texteinferior}{PU}{\9040\221}%* U+2091 +% U+2092 LATIN SUBSCRIPT SMALL LETTER O +\DeclareTextCommand{\textoinferior}{PU}{\9040\222}%* U+2092 +% U+2093 LATIN SUBSCRIPT SMALL LETTER X +\DeclareTextCommand{\textxinferior}{PU}{\9040\223}%* U+2093 +% U+2094 LATIN SUBSCRIPT SMALL LETTER SCHWA +\DeclareTextCommand{\textschwainferior}{PU}{\9040\224}%* U+2094 +% U+2095 LATIN SUBSCRIPT SMALL LETTER H +\DeclareTextCommand{\texthinferior}{PU}{\9040\225}%* U+2095 +% U+2096 LATIN SUBSCRIPT SMALL LETTER K +\DeclareTextCommand{\textkinferior}{PU}{\9040\226}%* U+2096 +% U+2097 LATIN SUBSCRIPT SMALL LETTER L +\DeclareTextCommand{\textlinferior}{PU}{\9040\227}%* U+2097 +% U+2098 LATIN SUBSCRIPT SMALL LETTER M +\DeclareTextCommand{\textminferior}{PU}{\9040\230}%* U+2098 +% U+2099 LATIN SUBSCRIPT SMALL LETTER N +\DeclareTextCommand{\textninferior}{PU}{\9040\231}%* U+2099 +% U+209A LATIN SUBSCRIPT SMALL LETTER P +\DeclareTextCommand{\textpinferior}{PU}{\9040\232}%* U+209A +% U+209B LATIN SUBSCRIPT SMALL LETTER S +\DeclareTextCommand{\textsinferior}{PU}{\9040\233}%* U+209B +% U+209C LATIN SUBSCRIPT SMALL LETTER T +\DeclareTextCommand{\texttinferior}{PU}{\9040\234}%* U+209C +% \end{macrocode} +% +% \subsubsection{Currency Symbols: U+20A0 to U+20CF} +% +% \begin{macrocode} +% U+20A1 COLON SIGN; *colonmonetary, colonsign +\DeclareTextCommand{\textcolonmonetary}{PU}{\9040\241}% U+20A1 +% U+20A4 LIRA SIGN; afii08941, *lira +\DeclareTextCommand{\textlira}{PU}{\9040\244}% U+20A4 +% U+20A6 NAIRA SIGN +\DeclareTextCommand{\textnaira}{PU}{\9040\246}% U+20A6 +% U+20A7 PESETA SIGN; peseta +\DeclareTextCommand{\textpeseta}{PU}{\9040\247}% U+20A7 +% U+20A9 WON SIGN; won +\DeclareTextCommand{\textwon}{PU}{\9040\251}% U+20A9 +% U+20AB DONG SIGN; dong +\DeclareTextCommand{\textdong}{PU}{\9040\253}% U+20AB +% U+20AC EURO SIGN; *Euro, euro +\DeclareTextCommand{\texteuro}{PU}{\9040\254}% U+20AC +%* \texteuro -> \EurDig (marvosym) +%* \texteuro -> \EURdig (marvosym) +%* \texteuro -> \EurHv (marvosym) +%* \texteuro -> \EURhv (marvosym) +%* \texteuro -> \EurCr (marvosym) +%* \texteuro -> \EURcr (marvosym) +%* \texteuro -> \EurTm (marvosym) +%* \texteuro -> \EURtm (marvosym) +%* \texteuro -> \Eur (marvosym) +% U+20B0 GERMAN PENNY SIGN; \Deleatur (marvosym) +\DeclareTextCommand{\textDeleatur}{PU}{\9040\260}%* U+20B0 +%* \textDeleatur -> \Denarius (marvosym) +% U+20B1 PESO SIGN +\DeclareTextCommand{\textpeso}{PU}{\9040\261}% U+20B1 +% U+20B2 GUARANI SIGN +\DeclareTextCommand{\textguarani}{PU}{\9040\262}% U+20B2 +% \end{macrocode} +% +% \subsubsection{Letterlike Symbols: U+2100 to U+214F} +% +% \begin{macrocode} +% U+2103 DEGREE CELSIUS; centigrade +\DeclareTextCommand{\textcelsius}{PU}{\9041\003}% U+2103 +% U+210F PLANCK CONSTANT OVER TWO PI; \hslash (AmS) +\DeclareTextCommand{\texthslash}{PU}{\9041\017}%* U+210F +% U+2111 BLACK-LETTER CAPITAL I (=imaginary part); Ifraktur; \Im (LaTeX) +\DeclareTextCommand{\textIm}{PU}{\9041\021}%* U+2111 +% U+2113 SCRIPT SMALL L (=ell, liter); afii61289, lsquare; \ell (LaTeX) +\DeclareTextCommand{\textell}{PU}{\9041\023}%* U+2113 +% U+2116 NUMERO SIGN; *afii61352, numero +\DeclareTextCommand{\textnumero}{PU}{\9041\026}% U+2116 +% U+2117 SOUND RECORDING COPYRIGHT +\DeclareTextCommand{\textcircledP}{PU}{\9041\027}% U+2117 +% U+2118 SCRIPT CAPITAL P (=Weierstrass elliptic function); +% weierstrass; \wp (LaTeX) +\DeclareTextCommand{\textwp}{PU}{\9041\030}%* U+2118 +% U+211C BLACK-LETTER CAPITAL R (=real part); Rfraktur; \Re (LaTeX) +\DeclareTextCommand{\textRe}{PU}{\9041\034}%* U+211C +% U+211E PRESCRIPTION TAKE; prescription +\DeclareTextCommand{\textrecipe}{PU}{\9041\036}% U+211E +% U+2120 SERVICE MARK +\DeclareTextCommand{\textservicemark}{PU}{\9041\040}% U+2120 +% U+2122 TRADE MARK SIGN; trademark +\DeclareTextCommand{\texttrademark}{PU}{\9041\042}% U+2122 +% U+2126 OHM SIGN; Ohm, Omega +\DeclareTextCommand{\textohm}{PU}{\9041\046}% U+2126 +% U+2127 INVERTED OHM SIGN +\DeclareTextCommand{\textmho}{PU}{\9041\047}%* U+2127 +%* \textmho -> \agemO (wasysym) +% U+2129 TURNED GREEK SMALL LETTER IOTA; \riota (phonetic) +\DeclareTextCommand{\textriota}{PU}{\9041\051}%* U+2129 +% U+212B ANGSTROM SIGN; angstrom +\DeclareTextCommand{\textangstrom}{PU}{\9041\053}% U+212B +% U+212E ESTIMATED SYMBOL; estimated +\DeclareTextCommand{\textestimated}{PU}{\9041\056}% U+212E +%* \textestimated -> \EstimatedSign (marvosym) +%* \textestimated -> \Ecommerce (marvosym) +% U+2132 TURNED CAPITAL F; \Finv (AmS) +\DeclareTextCommand{\textFinv}{PU}{\9041\062}%* U+2132 +% U+2135 ALEF SYMBOL; aleph; \aleph (LaTeX) +\DeclareTextCommand{\textaleph}{PU}{\9041\065}%* U+2135 +% U+2136 BET SYMBOL; \beth (AmS, MnSymbol) +\DeclareTextCommand{\textbeth}{PU}{\9041\066}%* U+2136 +% U+2137 GIMEL SYMBOL; \gimel (AmS, MnSymbol) +\DeclareTextCommand{\textgimel}{PU}{\9041\067}%* U+2137 +% U+2138 DALET SYMBOL; \daleth (AmS, MnSymbol) +\DeclareTextCommand{\textdaleth}{PU}{\9041\070}%* U+2138 +% U+213B FACSIMILE SIGN; \fax (marvosym) +\DeclareTextCommand{\textfax}{PU}{\9041\073}%* U+213B +% U+2141 TURNED SANS-SERIF CAPITAL G (=game); \Game +\DeclareTextCommand{\textGame}{PU}{\9041\101}%* U+2141 +% U+214B TURNED AMPERSAND; \invamp (txfonts/pxfonts) +\DeclareTextCommand{\textinvamp}{PU}{\9041\113}% U+214B +%* \textinvamp -> \bindnasrepma (stmaryrd) +%* \textinvamp -> \parr (cmll) +% \end{macrocode} +% +% \subsubsection{Number Forms: U+2150 to U+218F} +% +% \begin{macrocode} +% U+2150 VULGAR FRACTION ONE SEVENTH +\DeclareTextCommand{\textoneseventh}{PU}{\9041\120}% U+2150 +% U+2151 VULGAR FRACTION ONE NINTH +\DeclareTextCommand{\textoneninth}{PU}{\9041\121}% U+2151 +% U+2152 VULGAR FRACTION ONE TENTH +\DeclareTextCommand{\textonetenth}{PU}{\9041\122}% U+2152 +% U+2153 VULGAR FRACTION ONE THIRD; onethird +\DeclareTextCommand{\textonethird}{PU}{\9041\123}% U+2153 +% U+2154 VULGAR FRACTION TWO THIRDS; twothirds +\DeclareTextCommand{\texttwothirds}{PU}{\9041\124}% U+2154 +% U+2155 VULGAR FRACTION ONE FIFTH +\DeclareTextCommand{\textonefifth}{PU}{\9041\125}% U+2155 +% U+2156 VULGAR FRACTION TWO FIFTHS +\DeclareTextCommand{\texttwofifths}{PU}{\9041\126}% U+2156 +% U+2157 VULGAR FRACTION THREE FIFTHS +\DeclareTextCommand{\textthreefifths}{PU}{\9041\127}% U+2157 +% U+2158 VULGAR FRACTION FOUR FIFTHS +\DeclareTextCommand{\textfourfifths}{PU}{\9041\130}% U+2158 +% U+2159 VULGAR FRACTION ONE SIXTH +\DeclareTextCommand{\textonesixth}{PU}{\9041\131}% U+2159 +% U+215A VULGAR FRACTION FIVE SIXTHS +\DeclareTextCommand{\textfivesixths}{PU}{\9041\132}% U+215A +% U+215B VULGAR FRACTION ONE EIGHTH; oneeighth +\DeclareTextCommand{\textoneeighth}{PU}{\9041\133}% U+215B +% U+215C VULGAR FRACTION THREE EIGHTHS; threeeighths +\DeclareTextCommand{\textthreeeighths}{PU}{\9041\134}% U+215C +% U+215D VULGAR FRACTION FIVE EIGHTHS; fiveeighths +\DeclareTextCommand{\textfiveeighths}{PU}{\9041\135}% U+215D +% U+215E VULGAR FRACTION SEVEN EIGHTHS; seveneighths +\DeclareTextCommand{\textseveneighths}{PU}{\9041\136}% U+215E +% U+2184 LATIN SMALL LETTER REVERSED C +\DeclareTextCommand{\textrevc}{PU}{\9041\204}% U+2184 +% U+2189 VULGAR FRACTION ZERO THIRDS +\DeclareTextCommand{\textzerothirds}{PU}{\9041\211}% U+2189 +% \end{macrocode} +% +% \subsubsection{Arrows: U+2190 to U+21FF} +% +% \begin{macrocode} +% U+2190 LEFTWARDS ARROW; arrowleft +\DeclareTextCommand{\textleftarrow}{PU}{\9041\220}%* U+2190 +% U+2191 UPWARDS ARROW; arrowup +\DeclareTextCommand{\textuparrow}{PU}{\9041\221}%* U+2191 +% U+2192 RIGHTWARDS ARROW; arrowright +\DeclareTextCommand{\textrightarrow}{PU}{\9041\222}%* U+2192 +%* \textrightarrow -> \MVRightArrow (marvosym) +%* \textrightarrow -> \MVRightarrow (marvosym) +% U+2193 DOWNWARDS ARROW; arrowdown +\DeclareTextCommand{\textdownarrow}{PU}{\9041\223}%* U+2193 +%* \textdownarrow -> \MVArrowDown (marvosym) +%* \textdownarrow -> \Force (marvosym) +% U+2194 LEFT RIGHT ARROW; arrowboth; \leftrightarrow (LaTeX) +\DeclareTextCommand{\textleftrightarrow}{PU}{\9041\224}%* U+2194 +% U+2195 UP DOWN ARROW; arrowupdn; \updownarrow (LaTeX) +\DeclareTextCommand{\textupdownarrow}{PU}{\9041\225}%* U+2195 +% U+2196 NORTH WEST ARROW; arrowupleft; \nwarrow (LaTeX) +\DeclareTextCommand{\textnwarrow}{PU}{\9041\226}%* U+2196 +% U+2197 NORTH EAST ARROW; arrowupright; \nearrow (LaTeX) +\DeclareTextCommand{\textnearrow}{PU}{\9041\227}%* U+2197 +%* \textnearrow -> \textglobrise (tipa) +% U+2198 SOUTH EAST ARROW; arrowdownright; \searrow (LaTeX) +\DeclareTextCommand{\textsearrow}{PU}{\9041\230}%* U+2198 +%* \textsearrow -> \textglobfall (tipa) +% U+2199 SOUTH WEST ARROW; arrowdownleft; \swarrow (LaTeX) +\DeclareTextCommand{\textswarrow}{PU}{\9041\231}%* U+2199 +% U+219A LEFTWARDS ARROW WITH STROKE; \nleftarrow (AmS) +\DeclareTextCommand{\textnleftarrow}{PU}{\9041\232}%* U+219A +% U+219B RIGHTWARDS ARROW WITH STROKE; \nrightarrow (AmS) +\DeclareTextCommand{\textnrightarrow}{PU}{\9041\233}%* U+219B +% U+219E LEFTWARDS TWO HEADED ARROW; \twoheadleftarrow (AmS) +\DeclareTextCommand{\texttwoheadleftarrow}{PU}{\9041\236}%* U+219E +% \ntwoheadleftarrow (txfonts/pxfonts) +\DeclareTextCommand{\textntwoheadleftarrow}{PU}{\9041\236\83\070}%* U+219E U+0338 +% U+219F UPWARDS TWO HEADED ARROW; \twoheaduparrow (MnSymbol) +\DeclareTextCommand{\texttwoheaduparrow}{PU}{\9041\237}%* U+219F +% U+21A0 RIGHTWARDS TWO HEADED ARROW; +% \twoheadrightarrow (AmS) +\DeclareTextCommand{\texttwoheadrightarrow}{PU}{\9041\240}%* U+21A0 +% \ntwoheadrightarrow (txfonts/pxfonts) +\DeclareTextCommand{\textntwoheadrightarrow}{PU}{\9041\240\83\070}%* U+21A0 U+0338 +% U+21A1 DOWNWARDS TWO HEADED ARROW; \twoheaddownarrow (MnSymbol) +\DeclareTextCommand{\texttwoheaddownarrow}{PU}{\9041\241}%* U+21A1 +% U+21A2 LEFTWARDS ARROW WITH TAIL; \leftarrowtail (AmS) +\DeclareTextCommand{\textleftarrowtail}{PU}{\9041\242}%* U+21A2 +% U+21A3 RIGHTWARDS ARROW WITH TAIL; \rightarrowtail (AmS) +\DeclareTextCommand{\textrightarrowtail}{PU}{\9041\243}%* U+21A3 +% U+21A6 RIGHTWARDS ARROW FROM BAR; \mapsto (LaTeX) +\DeclareTextCommand{\textmapsto}{PU}{\9041\246}%* U+21A6 +% U+21A9 LEFTWARDS ARROW WITH HOOK; \hookleftarrow (LaTeX) +\DeclareTextCommand{\texthookleftarrow}{PU}{\9041\251}%* U+21A9 +% U+21AA RIGHTWARDS ARROW WITH HOOK; \hookrightarrow (LaTeX) +\DeclareTextCommand{\texthookrightarrow}{PU}{\9041\252}%* U+21AA +% U+21AB LEFTWARDS ARROW WITH LOOP; \looparrowleft (AmS) +\DeclareTextCommand{\textlooparrowleft}{PU}{\9041\253}%* U+21AB +% U+21AC RIGHTWARDS ARROW WITH LOOP; \looparrowright (AmS) +\DeclareTextCommand{\textlooparrowright}{PU}{\9041\254}%* U+21AC +% U+21AE LEFT RIGHT ARROW WITH STROKE; \nleftrightarrow (AmS) +\DeclareTextCommand{\textnleftrightarrow}{PU}{\9041\256}%* U+21AE +% U+21AF DOWNWARDS ZIGZAG ARROW; \lightning (stmaryrd) +\DeclareTextCommand{\textlightning}{PU}{\9041\257}%* U+21AF +%* \textlightning -> \Lightning (marvosym) +% U+21B5 DOWNWARDS ARROW WITH CORNER LEFTWARDS; +% \dlsh (mathabx) +\DeclareTextCommand{\textdlsh}{PU}{\9041\265}%* U+21B5 +% U+21B6 ANTICLOCKWISE TOP SEMICIRCLE ARROW; +% \curvearrowleft (AmS) +\DeclareTextCommand{\textcurvearrowleft}{PU}{\9041\266}%* U+21B6 +% U+21B7 CLOCKWISE TOP SEMICIRCLE ARROW; \curvearrowright (AmS) +\DeclareTextCommand{\textcurvearrowright}{PU}{\9041\267}%* U+21B7 +% U+21BC LEFTWARDS HARPOON WITH BARB UPWARDS; harpoonleftbarbup; +% \leftharpoonup (LaTeX) +\DeclareTextCommand{\textleftharpoonup}{PU}{\9041\274}%* U+21BC +% U+21BD LEFTWARDS HARPOON WITH BARB DOWNWARDS; +% \leftharpoondown (LaTeX) +\DeclareTextCommand{\textleftharpoondown}{PU}{\9041\275}%* U+21BD +% U+21BE UPWARDS HARPOON WITH BARB RIGHTWARDS; +% \upharpoonright (AmS) +\DeclareTextCommand{\textupharpoonright}{PU}{\9041\276}%* U+21BE +% U+21BF UPWARDS HARPOON WITH BARB LEFTWARDS; +% \upharpoonleft (AmS) +\DeclareTextCommand{\textupharpoonleft}{PU}{\9041\277}%* U+21BF +% U+21C0 RIGHTWARDS HARPOON WITH BARB UPWARDS; harpoonrightbarbup +% \rightharpoonup (LaTeX) +\DeclareTextCommand{\textrightharpoonup}{PU}{\9041\300}%* U+21C0 +% U+21C1 RIGHTWARDS HARPOON WITH BARB DOWNWARDS; +% \rightharpoondown (LaTeX) +\DeclareTextCommand{\textrightharpoondown}{PU}{\9041\301}%* U+21C1 +% U+21C2 DOWNWARDS HARPOON WITH BARB RIGHTWARDS; +% \downharpoonright (AmS) +\DeclareTextCommand{\textdownharpoonright}{PU}{\9041\302}%* U+21C2 +% U+21C3 DOWNWARDS HARPOON WITH BARB LEFTWARDS; +% \downharpoonleft (AmS) +\DeclareTextCommand{\textdownharpoonleft}{PU}{\9041\303}%* U+21C3 +% U+21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW; +% arrowrightoverleft; \rightleftarrows (MnSymbol) +\DeclareTextCommand{\textrightleftarrows}{PU}{\9041\304}%* U+21C4 +% U+21C5 UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW; arrowupleftofdown; +% \updownarrows (MnSymbol) +\DeclareTextCommand{\textupdownarrows}{PU}{\9041\305}%* U+21C5 +% U+21C6 LEFTWARDS ARROW OVER RIGHTWARDS ARROW; arrowleftoverright; +% \leftrightarrows (AmS) +\DeclareTextCommand{\textleftrightarrows}{PU}{\9041\306}%* U+21C6 +% U+21C7 LEFTWARDS PAIRED ARROWS; \leftleftarrows (AmS) +\DeclareTextCommand{\textleftleftarrows}{PU}{\9041\307}%* U+21C7 +% U+21C8 UPWARDS PAIRED ARROWS; \upuparrows (AmS) +\DeclareTextCommand{\textupuparrows}{PU}{\9041\310}%* U+21C8 +% U+21C9 RIGHTWARDS PAIRED ARROWS; \rightrightarrows (AmS) +\DeclareTextCommand{\textrightrightarrows}{PU}{\9041\311}%* U+21C9 +% U+21CA DOWNWARDS PAIRED ARROWS; \downdownarrows (AmS) +\DeclareTextCommand{\textdowndownarrows}{PU}{\9041\312}%* U+21CA +% U+21CB LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON; +% \leftrightharpoons (AmS); +\DeclareTextCommand{\textleftrightharpoons}{PU}{\9041\313}%* U+21CB +% U+21CC RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON; +% \rightleftharpoons (LaTeX, AmS) +\DeclareTextCommand{\textrightleftharpoons}{PU}{\9041\314}%* U+21CC +% U+21CD LEFTWARDS DOUBLE ARROW WITH STROKE; arrowleftdblstroke; +% \nLeftarrow (AmS) +\DeclareTextCommand{\textnLeftarrow}{PU}{\9041\315}%* U+21CD +% U+21CE LEFT RIGHT DOUBLE ARROW WITH STROKE; \nLeftrightarrow (AmS) +\DeclareTextCommand{\textnLeftrightarrow}{PU}{\9041\316}%* U+21CE +% U+21CF RIGHTWARDS DOUBLE ARROW WITH STROKE; arrowrightdblstroke; +% \nRightarrow (AmS) +\DeclareTextCommand{\textnRightarrow}{PU}{\9041\317}%* U+21CF +% U+21D0 LEFTWARDS DOUBLE ARROW; arrowdblleft, arrowleftdbl; +% \Leftarrow (LaTeX) +\DeclareTextCommand{\textLeftarrow}{PU}{\9041\320}%* U+21D0 +% U+21D1 UPWARDS DOUBLE ARROW; arrowdblup; \Uparrow (LaTeX) +\DeclareTextCommand{\textUparrow}{PU}{\9041\321}%* U+21D1 +% U+21D2 RIGHTWARDS DOUBLE ARROW; arrowdblright, dblarrowright; +% \Rightarrow (LaTeX) +\DeclareTextCommand{\textRightarrow}{PU}{\9041\322}%* U+21D2 +%* \textRightarrow -> \Conclusion (marvosym) +% U+21D3 DOWNWARDS DOUBLE ARROW; arrowdbldown; \Downarrow (LaTeX) +\DeclareTextCommand{\textDownarrow}{PU}{\9041\323}%* U+21D3 +% U+21D4 LEFT RIGHT DOUBLE ARROW; arrowdblboth; +% \Leftrightarrow (LaTeX) +\DeclareTextCommand{\textLeftrightarrow}{PU}{\9041\324}%* U+21D4 +%* textLeftrightarrow -> \Equivalence (marvosym) +% U+21D5 UP DOWN DOUBLE ARROW; \Updownarrow (LaTeX) +\DeclareTextCommand{\textUpdownarrow}{PU}{\9041\325}%* U+21D5 +% U+21D6 NORTH WEST DOUBLE ARROW; \Nwarrow (MnSymbol) +\DeclareTextCommand{\textNwarrow}{PU}{\9041\326}%* U+21D6 +% U+21D7 NORTH EAST DOUBLE ARROW; \Nearrow (MnSymbol) +\DeclareTextCommand{\textNearrow}{PU}{\9041\327}%* U+21D7 +% U+21D8 SOUTH EAST DOUBLE ARROW; \Searrow (MnSymbol) +\DeclareTextCommand{\textSearrow}{PU}{\9041\330}%* U+21D8 +% U+21D9 SOUTH WEST DOUBLE ARROW; \Swarrow (MnSymbol) +\DeclareTextCommand{\textSwarrow}{PU}{\9041\331}%* U+21D9 +% U+21DA LEFTWARDS TRIPLE ARROW; \Lleftarrow (AmS) +\DeclareTextCommand{\textLleftarrow}{PU}{\9041\332}%* U+21DA +% U+21DB RIGHTWARDS TRIPLE ARROW; \Rrightarrow (MnSymbol) +\DeclareTextCommand{\textRrightarrow}{PU}{\9041\333}%* U+21DB +% U+21DC LEFTWARDS SQUIGGLE ARROW; \leftsquigarrow (mathabx) +\DeclareTextCommand{\textleftsquigarrow}{PU}{\9041\334}%* U+21DC +% U+21DD RIGHTWARDS SQUIGGLE ARROW; \rightsquigarrow (mathabx) +\DeclareTextCommand{\textrightsquigarrow}{PU}{\9041\335}%* U+21DD +% U+21E0 LEFTWARDS DASHED ARROW; arrowdashleft; +% \dashleftarrow (AmS) +\DeclareTextCommand{\textdashleftarrow}{PU}{\9041\340}%* U+21E0 +%* \textdashleftarrow -> \dashedleftarrow (MnSymbol) +% U+21E1 UPWARDS DASHED ARROW; arrowdashup; \dasheduparrow (MnSymbol) +\DeclareTextCommand{\textdasheduparrow}{PU}{\9041\341}%* U+21E1 +% U+21E2 RIGHTWARDS DASHED ARROW; arrowdashright; \dashrightarrow (AmS) +\DeclareTextCommand{\textdashrightarrow}{PU}{\9041\342}%* U+21E2 +%* \textdashrightarrow -> \dashedrightarrow (MnSymbol) +% U+21E3 DOWNWARDS DASHED ARROW; arrowdashdown; \dasheddownarrow (MnSymbol) +\DeclareTextCommand{\textdasheddownarrow}{PU}{\9041\343}%* U+21E3 +% U+21E8 RIGHTWARDS WHITE ARROW; \pointer (wasysym) +\DeclareTextCommand{\textpointer}{PU}{\9041\350}%* U+21E8 +% U+21F5 DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW; +% \downuparrows (MnSymbol) +\DeclareTextCommand{\textdownuparrows}{PU}{\9041\365}%* U+21F5 +% U+21FD LEFTWARDS OPEN-HEADED ARROW; \leftarrowtriangle (stmaryrd) +\DeclareTextCommand{\textleftarrowtriangle}{PU}{\9041\375}%* U+21FD +% U+21FE RIGHTWARDS OPEN-HEADED ARROW; \rightarrowtriangle (stmaryrd) +\DeclareTextCommand{\textrightarrowtriangle}{PU}{\9041\376}%* U+21FE +% U+21FF LEFT RIGHT OPEN-HEADED ARROW; \leftrightarrowtriangle (stmaryrd) +\DeclareTextCommand{\textleftrightarrowtriangle}{PU}{\9041\377}%* U+21FF +% \end{macrocode} +% +% \subsubsection{Mathematical Operators: U+2200 to U+22FF} +% +% \begin{macrocode} +% U+2200 FOR ALL; forall; \forall (LaTeX) +\DeclareTextCommand{\textforall}{PU}{\9042\000}%* U+2200 +% U+2201 COMPLEMENT; \complement (AmS) +\DeclareTextCommand{\textcomplement}{PU}{\9042\001}%* U+2201 +% U+2202 PARTIAL DIFFERENTIAL; partialdiff; \partial (LaTeX) +\DeclareTextCommand{\textpartial}{PU}{\9042\002}%* U+2202 +% U+2203 THERE EXISTS; existential; \exists (LaTeX) +\DeclareTextCommand{\textexists}{PU}{\9042\003}%* U+2203 +% U+2204 THERE DOES NOT EXIST; \nexists (AmS) +\DeclareTextCommand{\textnexists}{PU}{\9042\004}%* U+2204 +% U+2205 EMPTY SET; emptyset; \emptyset (LaTeX), \varnothing (AmS) +\DeclareTextCommand{\textemptyset}{PU}{\9042\005}%* U+2205 +%* \textemptyset -> \varnothing (AmS) +% U+2206 INCREMENT; increment, Deta; \triangle (LaTeX) +\DeclareTextCommand{\texttriangle}{PU}{\9042\006}%* U+2206 +% U+2207 NABLA; nabla, gradient; \nabla (LaTeX) +\DeclareTextCommand{\textnabla}{PU}{\9042\007}%* U+2207 +% U+2208 ELEMENT OF; element; \in (LaTeX) +\DeclareTextCommand{\textin}{PU}{\9042\010}%* U+2208 +% U+2209 NOT AN ELEMENT OF; notelement, notelementof; \notin (LaTeX) +\DeclareTextCommand{\textnotin}{PU}{\9042\011}%* U+2209 +% U+220A SMALL ELEMENT OF; \smallin (mathdesign) +\DeclareTextCommand{\textsmallin}{PU}{\9042\012}%* U+220A +% U+220B CONTAINS AS MEMBER; suchthat; \ni (LaTeX) +\DeclareTextCommand{\textni}{PU}{\9042\013}%* U+220B +%* \textni -> \owns (mathabx) +% U+220C DOES NOT CONTAIN AS MEMBER; \notowner (mathabx) +\DeclareTextCommand{\textnotowner}{PU}{\9042\014}%* U+220C +%* \textnotowner -> \notni (txfonts/pxfonts) +% U+220D SMALL CONTAINS AS MEMBER; \smallowns (mathdesign) +\DeclareTextCommand{\textsmallowns}{PU}{\9042\015}%* U+220D +% U+220F N-ARY PRODUCT; \prod (LaTeX) +\DeclareTextCommand{\textprod}{PU}{\9042\017}%* U+220F +% U+2210 N-ARY COPRODUCT; \amalg (LaTeX) +\DeclareTextCommand{\textamalg}{PU}{\9042\020}%* U+2210 +% U+2211 N-ARY SUMMATION; summation; \sum (LaTeX) +\DeclareTextCommand{\textsum}{PU}{\9042\021}%* U+2211 +% U+2212 MINUS SIGN; minus +\DeclareTextCommand{\textminus}{PU}{\9042\022}% U+2212 +% U+2213 MINUS-OR-PLUS SIGN; minusplus; \mp (LaTeX) +\DeclareTextCommand{\textmp}{PU}{\9042\023}%* U+2213 +% U+2214 DOT PLUS; \dotplus (AmS) +\DeclareTextCommand{\textdotplus}{PU}{\9042\024}%* U+2214 +% U+2215 DIVISION SLASH; divisionslash; \Divides (marvosym) +\DeclareTextCommand{\textDivides}{PU}{\9042\025}%* U+2215 +% \DividesNot (marvosym) +\DeclareTextCommand{\textDividesNot}{PU}{\9042\025\9040\322}%* U+2215 U+20D2 +% U+2216 SET MINUS; \setminus (LaTeX) +\DeclareTextCommand{\textsetminus}{PU}{\9042\026}%* U+2216 +% U+2217 ASTERISK OPERATOR; asteriskmath; \ast (LaTeX) +\DeclareTextCommand{\textast}{PU}{\9042\027}%* U+2217 +% U+2218 RING OPERATOR; \circ (LaTeX) +\DeclareTextCommand{\textcirc}{PU}{\9042\030}%* U+2218 +% U+2219 BULLET OPERATOR; bulletoperator; \bullet (LaTeX) +\DeclareTextCommand{\textbulletoperator}{PU}{\9042\031}% U+2219 +% U+221A SQUARE ROOT; radical +\DeclareTextCommand{\textsurd}{PU}{\9042\032}%* U+221A +% U+221D PROPORTIONAL TO; proportional; \propto (LaTeX) +\DeclareTextCommand{\textpropto}{PU}{\9042\035}%* U+221D +%* \textpropto -> \varprop (wasysym) +% U+221E INFINITY; infinity; \infty (LaTeX) +\DeclareTextCommand{\textinfty}{PU}{\9042\036}%* U+221E +% U+2220 ANGLE; angle; \angle (LaTeX) +\DeclareTextCommand{\textangle}{PU}{\9042\040}%* U+2220 +% U+2221 MEASURED ANGLE; \measuredangle (mathabx, MnSymbol) +\DeclareTextCommand{\textmeasuredangle}{PU}{\9042\041}%* U+2221 +% U+2222 SPHERICAL ANGLE; \sphericalangle (AmS) +\DeclareTextCommand{\textsphericalangle}{PU}{\9042\042}%* U+2222 +%* \textsphericalangle -> \varangle (wasysym) +%* \textsphericalangle -> \Anglesign (marvosym) +%* \textsphericalangle -> \AngleSign (marvosym) +% U+2223 DIVIDES; divides; \mid (LaTeX) +\DeclareTextCommand{\textmid}{PU}{\9042\043}%* U+2223 +% U+2224 DOES NOT DIVIDE; \nmid (AmS) +\DeclareTextCommand{\textnmid}{PU}{\9042\044}%* U+2224 +%* \textnmid -> \notdivides (mathabx) +% U+2225 PARALLEL TO; parallel; \parallel (LaTeX) +\DeclareTextCommand{\textparallel}{PU}{\9042\045}%* U+2225 +% U+2226 NOT PARALLEL TO; notparallel; \nparallel (AmS) +\DeclareTextCommand{\textnparallel}{PU}{\9042\046}%* U+2226 +%* \textnparallel -> nUpdownline (MnSymbol) +% U+2227 LOGICAL AND; logicaland; \wedge (LaTeX) +\DeclareTextCommand{\textwedge}{PU}{\9042\047}%* U+2227 +% \owedge (stmaryrd) +\DeclareTextCommand{\textowedge}{PU}{\9042\047\9040\335}%* U+2227 U+20DD +%* \textowedge -> \varowedge (stmaryrd) +% U+2228 LOGICAL OR; logicalor; \vee (LaTeX) +\DeclareTextCommand{\textvee}{PU}{\9042\050}%* U+2228 +% \ovee (stmaryrd) +\DeclareTextCommand{\textovee}{PU}{\9042\050\9040\335}%* U+2228 U+20DD +%* \textovee -> \varovee (stmaryrd) +% U+2229 INTERSECTION; intersection; \cap (LaTeX) +\DeclareTextCommand{\textcap}{PU}{\9042\051}%* U+2229 +% U+222A UNION; union; \cup (LaTeX) +\DeclareTextCommand{\textcup}{PU}{\9042\052}%* U+222A +% U+222B INTEGRAL; integral; \int (LaTeX) +\DeclareTextCommand{\textint}{PU}{\9042\053}%* U+222B +%* \textint -> \varint (wasysym) +% U+222C DOUBLE INTEGRAL; dblintegral; \iint (AmS) +\DeclareTextCommand{\textiint}{PU}{\9042\054}%* U+222C +% U+222D TRIPLE INTEGRAL; \iiint (AmS) +\DeclareTextCommand{\textiiint}{PU}{\9042\055}%* U+222D +% U+222E CONTOUR INTEGRAL; contourintegral; \oint (LaTeX) +\DeclareTextCommand{\textoint}{PU}{\9042\056}%* U+222E +%* \textoint -> \varoint (wasysym) +% U+222F SURFACE INTEGRAL; \oiint (wasysym) +\DeclareTextCommand{\textoiint}{PU}{\9042\057}%* U+222F +% U+2232 CLOCKWISE CONTOUR INTEGRAL; +% \ointclockwise (txfonts/pxfonts) +\DeclareTextCommand{\textointclockwise}{PU}{\9042\062}%* U+2232 +% U+2233 ANTICLOCKWISE CONTOUR INTEGRAL; \ointctrclockwise (txfonts/pxfonts) +\DeclareTextCommand{\textointctrclockwise}{PU}{\9042\063}%* U+2233 +% U+2234 THEREFORE; therefore; \therefore (AmS) +\DeclareTextCommand{\texttherefore}{PU}{\9042\064}%* U+2234 +%* \texttherefore -> uptherefore (MnSymbol) +% U+2235 BECAUSE; because; \because (AmS) +\DeclareTextCommand{\textbecause}{PU}{\9042\065}%* U+2235 +%* \textbecause -> \downtherefore (MnSymbol) +% U+2236 RATIO; \vdotdot (MnSymbol) +\DeclareTextCommand{\textvdotdot}{PU}{\9042\066}%* U+2236 +% U+2237 PROPORTION; \squaredots (MnSymbol) +\DeclareTextCommand{\textsquaredots}{PU}{\9042\067}%* U+2237 +% U+2238 DOT MINUS; \dotminus (MnSymbol) +\DeclareTextCommand{\textdotminus}{PU}{\9042\070}%* U+2238 +%* \textdotminus -> \textdotdiv (mathabx) +% U+2239 EXCESS; \eqcolon (txfonts/pxfonts) +\DeclareTextCommand{\texteqcolon}{PU}{\9042\071}%* U+2239 +% U+223C TILDE OPERATOR; similar; \sim (LaTeX) +\DeclareTextCommand{\textsim}{PU}{\9042\074}%* U+223C +%* \textsim -> \AC (wasysym) +% U+223D REVERSED TILDE; reversedtilde; \backsim (AmS) +\DeclareTextCommand{\textbacksim}{PU}{\9042\075}%* U+223D +% \nbacksim (txfonts/pxfonts) +\DeclareTextCommand{\textnbacksim}{PU}{\9042\075\83\070}%* U+223D U+0338 +% U+2240 WREATH PRODUCT; \wr (LaTeX) +\DeclareTextCommand{\textwr}{PU}{\9042\100}%* U+2240 +%* \textwr -> \wreath (MnSymbol) +% U+2241 NOT TILDE; \nsim (AmS) +\DeclareTextCommand{\textnsim}{PU}{\9042\101}%* U+2241 +% U+2242 MINUS TILDE; \eqsim (MnSymbol) +\DeclareTextCommand{\texteqsim}{PU}{\9042\102}%* U+2242 +% \neqsim (MnSymbol) +\DeclareTextCommand{\textneqsim}{PU}{\9042\102\83\070}%* U+2242 U+0338 +% U+2243 ASYMPTOTICALLY EQUAL TO; asymptoticallyequal; \simeq (LaTeX) +\DeclareTextCommand{\textsimeq}{PU}{\9042\103}%* U+2243 +% U+2244 NOT ASYMPTOTICALLY EQUAL TO; \nsimeq (txfonts/pxfonts) +\DeclareTextCommand{\textnsimeq}{PU}{\9042\104}%* U+2244 +% U+2245 APPROXIMATELY EQUAL TO; approximatelyequal; \cong (LaTeX) +\DeclareTextCommand{\textcong}{PU}{\9042\105}%* U+2245 +% U+2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO; +% \ncong (AmS) +\DeclareTextCommand{\textncong}{PU}{\9042\107}%* U+2247 +% U+2248 ALMOST EQUAL TO; approxequal; \approx (LaTeX) +\DeclareTextCommand{\textapprox}{PU}{\9042\110}%* U+2248 +% U+2249 NOT ALMOST EQUAL TO; \napprox (txfonts/pxfonts0 +\DeclareTextCommand{\textnapprox}{PU}{\9042\111}%* U+2249 +%* \textnapprox -> \nthickapprox (txfonts/pxfonts) +% U+224A ALMOST EQUAL OR EQUAL TO; \approxeq (AmS) +\DeclareTextCommand{\textapproxeq}{PU}{\9042\112}%* U+224A +% \napproxeq (txfonts/pxfonts) +\DeclareTextCommand{\textnapproxeq}{PU}{\9042\112\83\070}%* U+224A U+0338 +% U+224B TRIPLE TILDE; \triplesim (MnSymbol) +\DeclareTextCommand{\texttriplesim}{PU}{\9042\113}%* U+224B +%* \texttriplesim -> \VHF (wasysym) +% \ntriplesim (MnSymbol) +\DeclareTextCommand{\textntriplesim}{PU}{\9042\113\83\070}%* U+224B U+0338 +% U+224C ALL EQUAL TO; allequal; \backcong (MnSymbol) +\DeclareTextCommand{\textbackcong}{PU}{\9042\114}%* U+224C +% \nbackcong (MnSymbol) +\DeclareTextCommand{\textnbackcong}{PU}{\9042\114\83\070}%* U+224C U+0338 +% U+224D EQUIVALENT TO; \asymp (LaTeX) +\DeclareTextCommand{\textasymp}{PU}{\9042\115}%* U+224D +% \nasymp (txfonts/pxfonts) +\DeclareTextCommand{\textnasymp}{PU}{\9042\115\83\070}%* U+224D U+0338 +%* \textnasymp -> \notasymp (mathabx) +% U+224E GEOMETRICALLY EQUIVALENT TO; \Bumpeq (AmS) +\DeclareTextCommand{\textBumpeq}{PU}{\9042\116}%* U+224E +% \nBumpeq (txfonts/pxfonts) +\DeclareTextCommand{\textnBumpeq}{PU}{\9042\116\83\070}%* U+224E U+0338 +% U+224F DIFFERENCE BETWEEN; \bumpeq (AmS) +\DeclareTextCommand{\textbumpeq}{PU}{\9042\117}%* U+224F +% \nbumpeq (txfonts/pxfonts) +\DeclareTextCommand{\textnbumpeq}{PU}{\9042\117\83\070}%* U+224F U+0338 +% U+2250 APPROACHES THE LIMIT; approaches; \doteq (LaTeX) +\DeclareTextCommand{\textdoteq}{PU}{\9042\120}%* U+2250 +% \ndoteq (MnSymbol) +\DeclareTextCommand{\textndoteq}{PU}{\9042\120\83\070}%* U+2250 U+0338 +% U+2251 GEOMETRICALLY EQUAL TO; geometricallyequal; +% \doteqdot (AmS) +\DeclareTextCommand{\textdoteqdot}{PU}{\9042\121}%* U+2251 +%* \textdoteqdot -> \Doteq (MnSymbol) +% \nDoteq (MnSymbol) +\DeclareTextCommand{\textnDoteq}{PU}{\9042\121\83\070}%* U+2251 U+0338 +% U+2252 APPROXIMATELY EQUAL TO OR THE IMAGE OF; approxequalorimage; +% \fallingdotseq (AmS) +\DeclareTextCommand{\textfallingdoteq}{PU}{\9042\122}%* U+2252 +% \nfallingdotseq (MnSymbol) +\DeclareTextCommand{\textnfallingdoteq}{PU}{\9042\122\83\070}%* U+2252 U+0338 +% U+2253 IMAGE OF OR APPROXIMATELY EQUAL TO; imageorapproximatelyequal; +% \risingdotseq (AmS) +\DeclareTextCommand{\textrisingdoteq}{PU}{\9042\123}%* U+2253 +% \nrisingdoteq (MnSymbol) +\DeclareTextCommand{\textnrisingdoteq}{PU}{\9042\123\83\070}%* U+2253 U+0338 +% U+2254 COLON EQUALS; \colonequals (colonequals) +\DeclareTextCommand{\textcolonequals}{PU}{\9042\124}%* U+2254 +% U+2255 EQUALS COLON; \equalscolon (colonequals) +\DeclareTextCommand{\textequalscolon}{PU}{\9042\125}%* U+2255 +% U+2256 RING IN EQUAL TO; \eqcirc (AmS) +\DeclareTextCommand{\texteqcirc}{PU}{\9042\126}%* U+2256 +% \neqcirc (MnSymbol) +\DeclareTextCommand{\textneqcirc}{PU}{\9042\126\83\070}%* U+2256 U+0338 +% U+2257 RING EQUAL TO; \circeq (AmS) +\DeclareTextCommand{\textcirceq}{PU}{\9042\127}%* U+2257 +% \ncirceq (MnSymbol) +\DeclareTextCommand{\textncirceq}{PU}{\9042\127\83\070}%* U+2257 U+0338 +% U+2259 ESTIMATES; \hateq (MnSymbol) +\DeclareTextCommand{\texthateq}{PU}{\9042\131}%* U+2259 +%* \texthateq -> \corresponds (mathabx) +%* \texthateq -> \Corresponds (marvosym) +% \nhateq (MnSymbol) +\DeclareTextCommand{\textnhateq}{PU}{\9042\131\83\070}%* U+2259 U+0338 +% U+225C DELTA EQUAL TO; \triangleeq (AmS) +\DeclareTextCommand{\texttriangleeq}{PU}{\9042\134}%* U+225C +% U+2260 NOT EQUAL TO; notequal; \ne (LaTeX), \neq (LaTeX) +\DeclareTextCommand{\textneq}{PU}{\9042\140}%* U+2260 +\DeclareTextCommand{\textne}{PU}{\9042\140}%* U+2260 +%* \textneq -> \nequal (MnSymbol) +% U+2261 IDENTICAL TO; equivalence; \equiv (LaTeX) +\DeclareTextCommand{\textequiv}{PU}{\9042\141}%* U+2261 +%* \textequiv -> \Congruent (marvosym) +% U+2262 NOT IDENTICAL TO; notidentical; \nequiv (txfonts/pxfonts) +\DeclareTextCommand{\textnequiv}{PU}{\9042\142}%* U+2262 +%* \textnequiv -> \NotCongruent (marvosym) +%* \textnequiv -> \notequiv (mathabx) +% U+2264 LESS-THAN OR EQUAL TO; lessequal; \le (LaTeX), \leq (LaTeX) +\DeclareTextCommand{\textleq}{PU}{\9042\144}%* U+2264 +\DeclareTextCommand{\textle}{PU}{\9042\144}%* U+2264 +%* \textleq -> \LessOrEqual (marvosym) +% U+2265 GREATER-THAN OR EQUAL TO; greaterequal; +% \ge (LaTeX), \geq (LaTeX) +\DeclareTextCommand{\textgeq}{PU}{\9042\145}%* U+2265 +\DeclareTextCommand{\textge}{PU}{\9042\145}%* U+2265 +%* \textgeq -> \LargerOrEqual (marvosym) +% U+2266 LESS-THAN OVER EQUAL TO; lessoverequal; \leqq (AmS) +\DeclareTextCommand{\textleqq}{PU}{\9042\146}%* U+2266 +% \nleqq (txfonts/pxfonts) +\DeclareTextCommand{\textnleqq}{PU}{\9042\146\83\070}%* U+2266 U+0338 +% U+2267 GREATER-THAN OVER EQUAL TO; greateroverequal; \geqq (AmS) +\DeclareTextCommand{\textgeqq}{PU}{\9042\147}%* U+2267 +% \ngeqq (txfonts/pxfonts) +\DeclareTextCommand{\textngeqq}{PU}{\9042\147\83\070}%* U+2267 U+0338 +% U+2268 LESS-THAN BUT NOT EQUAL TO; \lneqq (AmS) +\DeclareTextCommand{\textlneqq}{PU}{\9042\150}%* U+2268 +% U+2269 GREATER-THAN BUT NOT EQUAL TO; \gneqq (AmS) +\DeclareTextCommand{\textgneqq}{PU}{\9042\151}%* U+2269 +% U+226A MUCH LESS-THAN; muchless; \ll (LaTeX) +\DeclareTextCommand{\textll}{PU}{\9042\152}%* U+226A +% \nll (txfonts/pxfonts) +\DeclareTextCommand{\textnll}{PU}{\9042\152\83\070}%* U+226A U+0338 +% U+226B MUCH GREATER-THAN; muchgreater; \gg (LaTeX) +\DeclareTextCommand{\textgg}{PU}{\9042\153}%* U+226B +% \ngg (txfonts/pxfonts) +\DeclareTextCommand{\textngg}{PU}{\9042\153\83\070}%* U+226B U+0338 +% U+226C BETWEEN; \between (AmS) +\DeclareTextCommand{\textbetween}{PU}{\9042\154}%* U+226C +% U+226E NOT LESS-THAN; notless; \nless (AmS) +\DeclareTextCommand{\textnless}{PU}{\9042\156}%* U+226E +% U+226F NOT GREATER-THAN; notgreater; \ngtr (AmS) +\DeclareTextCommand{\textngtr}{PU}{\9042\157}%* U+226F +% U+2270 NEITHER LESS-THAN NOR EQUAL TO; notlessnorequal; +% \nleq (AmS) +\DeclareTextCommand{\textnleq}{PU}{\9042\160}%* U+2270 +% U+2271 NEITHER GREATER-THAN NOR EQUAL TO; notgreaternorequal; \ngeq (AmS) +\DeclareTextCommand{\textngeq}{PU}{\9042\161}%* U+2271 +% U+2272 LESS-THAN OR EQUIVALENT TO; lessorequivalent; \lesssim (AmS) +\DeclareTextCommand{\textlesssim}{PU}{\9042\162}%* U+2272 +%* \textlesssim -> \apprle (wasysym) +% U+2273 GREATER-THAN OR EQUIVALENT TO; greaterorequivalent; \gtrsim (AmS) +\DeclareTextCommand{\textgtrsim}{PU}{\9042\163}%* U+2273 +%* \textgtrsim -> \apprge (wasysym) +% U+2274 NEITHER LESS-THAN NOR EQUIVALENT TO; \nlesssim (txfonts/pxfonts) +\DeclareTextCommand{\textnlesssim}{PU}{\9042\164}%* U+2274 +% U+2275 NEITHER GREATER-THAN NOR EQUIVALENT TO; \ngtrsim (txfonts/pxfonts) +\DeclareTextCommand{\textngtrsim}{PU}{\9042\165}%* U+2275 +% U+2276 LESS-THAN OR GREATER-THAN; lessorgreater; \lessgtr (AmS) +\DeclareTextCommand{\textlessgtr}{PU}{\9042\166}%* U+2276 +% U+2277 GREATER-THAN OR LESS-THAN; greaterorless; \gtrless (AmS) +\DeclareTextCommand{\textgtrless}{PU}{\9042\167}%* U+2277 +% U+2278 NEITHER LESS-THAN NOR GREATER-THAN; \ngtrless (txfonts/pxfonts) +\DeclareTextCommand{\textngtrless}{PU}{\9042\170}%* U+2278 +% U+2279 NEITHER GREATER-THAN NOR LESS-THAN; \nlessgtr (txfonts/pxfonts) +\DeclareTextCommand{\textnlessgtr}{PU}{\9042\171}%* U+2279 +% U+227A PRECEDES; precedes; \prec (LaTeX) +\DeclareTextCommand{\textprec}{PU}{\9042\172}%* U+227A +% U+227B SUCCEEDS; succeeds; \succ (LaTeX) +\DeclareTextCommand{\textsucc}{PU}{\9042\173}%* U+227B +% U+227C PRECEDES OR EQUAL TO; \preccurlyeq (AmS) +\DeclareTextCommand{\textpreccurlyeq}{PU}{\9042\174}%* U+227C +% U+227D SUCCEEDS OR EQUAL TO; \succcurlyeq (AmS) +\DeclareTextCommand{\textsucccurlyeq}{PU}{\9042\175}%* U+227D +% U+227E PRECEDES OR EQUIVALENT TO; \precsim (AmS) +\DeclareTextCommand{\textprecsim}{PU}{\9042\176}%* U+227E +% \nprecsim (txfonts/pxfonts) +\DeclareTextCommand{\textnprecsim}{PU}{\9042\176\83\070}%* U+227E U+0338 +% U+227F SUCCEEDS OR EQUIVALENT TO; \succsim (AmS) +\DeclareTextCommand{\textsuccsim}{PU}{\9042\177}%* U+227F +% \nsuccsim (txfonts/pxfonts) +\DeclareTextCommand{\textnsuccsim}{PU}{\9042\177\83\070}%* U+227F U+0338 +% U+2280 DOES NOT PRECEDE; notprecedes; \nprec (AmS) +\DeclareTextCommand{\textnprec}{PU}{\9042\200}%* U+2280 +% U+2281 DOES NOT SUCCEED; notsucceeds; \nsucc (AmS) +\DeclareTextCommand{\textnsucc}{PU}{\9042\201}%* U+2281 +% U+2282 SUBSET OF; propersubset; \subset (LaTeX) +\DeclareTextCommand{\textsubset}{PU}{\9042\202}%* U+2282 +% U+2283 SUPERSET OF; propersuperset; \supset (LaTeX) +\DeclareTextCommand{\textsupset}{PU}{\9042\203}%* U+2283 +% U+2284 NOT A SUBSET OF; notsubset; \nsubset (mathabx) +\DeclareTextCommand{\textnsubset}{PU}{\9042\204}%* U+2284 +% U+2285 NOT A SUPERSET OF; notsuperset; \nsupset (mathabx) +\DeclareTextCommand{\textnsupset}{PU}{\9042\205}%* U+2285 +% U+2286 SUBSET OF OR EQUAL TO; reflexsubset; \subseteq (LaTeX) +\DeclareTextCommand{\textsubseteq}{PU}{\9042\206}%* U+2286 +% U+2287 SUPERSET OF OR EQUAL TO; reflexsuperset; \supseteq (LaTeX) +\DeclareTextCommand{\textsupseteq}{PU}{\9042\207}%* U+2287 +% U+2288 NEITHER A SUBSET OF NOR EQUAL TO; \nsubseteq (AmS) +\DeclareTextCommand{\textnsubseteq}{PU}{\9042\210}%* U+2288 +% U+2289 NEITHER A SUPERSET OF NOR EQUAL TO; \nsupseteq (AmS) +\DeclareTextCommand{\textnsupseteq}{PU}{\9042\211}%* U+2289 +% U+228A SUBSET OF WITH NOT EQUAL TO; subsetnotequal; \subsetneq (AmS) +\DeclareTextCommand{\textsubsetneq}{PU}{\9042\212}%* U+228A +% U+228B SUPERSET OF WITH NOT EQUAL TO; supersetnotequal; \supsetneq (AmS) +\DeclareTextCommand{\textsupsetneq}{PU}{\9042\213}%* U+228B +% U+228D MULTISET MULTIPLICATION; \cupdot (MnSymbol) +\DeclareTextCommand{\textcupdot}{PU}{\9042\215}%* U+228D +% U+228E MULTISET UNION; \cupplus (MnSymbol) +\DeclareTextCommand{\textcupplus}{PU}{\9042\216}%* U+228E +% U+228F SQUARE IMAGE OF; \sqsubset (latexsym, ...) +\DeclareTextCommand{\textsqsubset}{PU}{\9042\217}%* U+228F +% \nsqsubset (txfonts/pxfonts) +\DeclareTextCommand{\textnsqsubset}{PU}{\9042\217\83\070}%* U+228F U+0338 +% U+2290 SQUARE ORIGINAL OF; \sqsupset (latexsym, ...) +\DeclareTextCommand{\textsqsupset}{PU}{\9042\220}%* U+2290 +% \nsqsupset (txfonts/pxfonts) +\DeclareTextCommand{\textnsqsupset}{PU}{\9042\220\83\070}%* U+2290 U+0338 +% U+2291 SQUARE IMAGE OF OR EQUAL TO; \sqsubseteq (LaTeX) +\DeclareTextCommand{\textsqsubseteq}{PU}{\9042\221}%* U+2291 +% \nsqsubseteq (txfonts/pxfonts) +\DeclareTextCommand{\textnsqsubseteq}{PU}{\9042\221\83\070}%* U+2291 U+0338 +% U+2292 SQUARE ORIGINAL OF OR EQUAL TO; \sqsupseteq (LaTeX) +\DeclareTextCommand{\textsqsupseteq}{PU}{\9042\222}%* U+2292 +% \nsqsupseteq (txfonts/pxfonts) +\DeclareTextCommand{\textnsqsupseteq}{PU}{\9042\222\83\070}%* U+2292 U+0338 +% U+2293 SQUARE CAP; \sqcap (LaTeX) +\DeclareTextCommand{\textsqcap}{PU}{\9042\223}%* U+2293 +% U+2294 SQUARE CUP; \sqcup (LaTeX) +\DeclareTextCommand{\textsqcup}{PU}{\9042\224}%* U+2294 +% U+2295 CIRCLED PLUS; circleplus; \oplus (LaTeX) +\DeclareTextCommand{\textoplus}{PU}{\9042\225}%* U+2295 +%* \textoplus -> \varoplus (stmaryrd) +% U+2296 CIRCLED MINUS; minuscircle; \ominus (LaTeX) +\DeclareTextCommand{\textominus}{PU}{\9042\226}%* U+2296 +%* \textominus -> \varominus (stmaryrd) +% U+2297 CIRCLED TIMES; circlemultiply; \otimes (LaTeX) +\DeclareTextCommand{\textotimes}{PU}{\9042\227}%* U+2297 +%* \textotimes -> \varotimes (stmaryrd) +% U+2298 CIRCLED DIVISION SLASH; \oslash (LaTeX) +\DeclareTextCommand{\textoslash}{PU}{\9042\230}%* U+2298 +%* \textoslash -> \varoslash (stmaryrd) +% U+2299 CIRCLED DOT OPERATOR; circle(d?)ot; \odot (LaTeX) +\DeclareTextCommand{\textodot}{PU}{\9042\231}%* U+2299 +%* \textodot -> \varodot (stmaryrd) +% U+229A CIRCLED RING OPERATOR; \circledcirc (AmS) +\DeclareTextCommand{\textcircledcirc}{PU}{\9042\232}%* U+229A +%* \textcircledcirc -> \ocirc (mathabx) +%* \textcircledcirc -> \varocircle (stmaryrd) +% U+229B CIRCLED ASTERISK OPERATOR; \circledast (AmS) +\DeclareTextCommand{\textcircledast}{PU}{\9042\233}%* U+229B +%* \textcircledast -> \varoast (stmaryrd) +%* \textcircledast -> \oasterisk (mathabx) +% U+229D CIRCLED DASH; \circleddash (AmS) +\DeclareTextCommand{\textcircleddash}{PU}{\9042\235}%* U+229D +% U+229E SQUARED PLUS; \boxplus (AmS) +\DeclareTextCommand{\textboxplus}{PU}{\9042\236}%* U+229E +% U+229F SQUARED MINUS; \boxminus (AmS) +\DeclareTextCommand{\textboxminus}{PU}{\9042\237}%* U+229F +% U+22A0 SQUARED TIMES; \boxtimes (AmS) +\DeclareTextCommand{\textboxtimes}{PU}{\9042\240}%* U+22A0 +% U+22A1 SQUARED DOT OPERATOR; \boxdot (AmS) +\DeclareTextCommand{\textboxdot}{PU}{\9042\241}%* U+22A1 +% U+22A2 RIGHT TACK; \vdash (LaTeX) +\DeclareTextCommand{\textvdash}{PU}{\9042\242}%* U+22A2 +%* \textvdash -> \rightvdash (MnSymbol) +% U+22A3 LEFT TACK; tackleft; \dashv (LaTeX) +\DeclareTextCommand{\textdashv}{PU}{\9042\243}%* U+22A3 +%* \textdashv -> \leftvdash (MnSymbol) +% \ndashv (mathabx) +\DeclareTextCommand{\textndashv}{PU}{\9042\243\83\070}%* U+22A3 U+0338 +%* \textndashv -> \nleftvdash (MnSymbol) +% U+22A4 DOWN TACK (=top); tackdown; \top (LaTeX) +\DeclareTextCommand{\texttop}{PU}{\9042\244}%* U+22A4 +%* \texttop -> \downvdash (MnSymbol) +% \ndownvdash (MnSymbol) +\DeclareTextCommand{\textndownvdash}{PU}{\9042\244\83\070}%* U+22A4 U+0338 +% U+22A5 UP TACK (=base, bottom); \bot (LaTeX) +\DeclareTextCommand{\textbot}{PU}{\9042\245}%* U+22A5 +%* \textbot -> \upvdash (MnSymbol) +% \nupvdash (MnSymbol) +\DeclareTextCommand{\textnupvdash}{PU}{\9042\245\83\070}%* U+22A5 U+0338 +%* \textnupvdash -> \nperp (MnSymbol) +% U+22A8 TRUE; \vDash (AmS) +\DeclareTextCommand{\textvDash}{PU}{\9042\250}%* U+22A8 +%* \textvDash -> \models (LaTeX) +%* \textvDash -> \rightmodels (MnSymbol) +% U+22A9 FORCES; \Vdash (AmS) +\DeclareTextCommand{\textVdash}{PU}{\9042\251}%* U+22A9 +%* \textVdash -> \rightVdash (MnSymbol) +% U+22AA TRIPLE VERTICAL BAR RIGHT TURNSTILE; \Vvdash (AmS) +\DeclareTextCommand{\textVvdash}{PU}{\9042\252}%* U+22AA +% \nVvash (mathabx) +\DeclareTextCommand{\textnVvash}{PU}{\9042\252\83\070}%* U+22AA U+0338 +% U+22AB DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE; +% \VDash (mathabx) +\DeclareTextCommand{\textVDash}{PU}{\9042\253}%* U+22AB +%* \textVDash -> \rightModels (MnSymbol) +% U+22AC DOES NOT PROVE; \nvdash (AmS) +\DeclareTextCommand{\textnvdash}{PU}{\9042\254}%* U+22AC +%* \textnvdash -> \nrightvdash (MnSymbol) +% U+22AD NOT TRUE; \nvDash (AmS) +\DeclareTextCommand{\textnvDash}{PU}{\9042\255}%* U+22AD +%* \textnvDash -> \nrightmodels (MnSymbol) +%* \textnvDash -> \nmodels (MnSymbol) +% U+22AE DOES NOT FORCE; \nVdash (txfonts/pxfonts) +\DeclareTextCommand{\textnVdash}{PU}{\9042\256}%* U+22AE +%* \textnVdash -> \nrightVdash (MnSymbol) +% U+22AF NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE; \nVDash (AmS) +\DeclareTextCommand{\textnVDash}{PU}{\9042\257}%* U+22AF +%* \textnVDash -> \nrightModels (MnSymbol) +% U+22B2 NORMAL SUBGROUP OF; \lhd (latexsym, ...) +\DeclareTextCommand{\textlhd}{PU}{\9042\262}%* U+22B2 +%* \textlhd -> \lessclosed (MnSymbol) +% U+22B3 CONTAINS AS NORMAL SUBGROUP; \rhd (latexsym, ...) +\DeclareTextCommand{\textrhd}{PU}{\9042\263}%* U+22B3 +%* \textrhd -> \gtrclosed (MnSymbol) +% U+22B4 NORMAL SUBGROUP OF OR EQUAL TO; \unlhd (latexsym, ...) +\DeclareTextCommand{\textunlhd}{PU}{\9042\264}%* U+22B4 +%* \textunlhd -> \leqclosed (MnSymbol) +%* \textunlhd -> \trianglelefteq (MnSymbol) +% U+22B5 CONTAINS AS NORMAL SUBGROUP OR EQUAL TO; \unrhd (latexsym, ...) +\DeclareTextCommand{\textunrhd}{PU}{\9042\265}%* U+22B5 +%* \textunrhd -> \geqclosed (MnSymbol) +%* \textunrhd -> \trianglerighteq (MnSymbol) +% U+22B6 ORIGINAL OF; \multimapdotbothA (txfonts/pxfonts) +\DeclareTextCommand{\textmultimapdotbothA}{PU}{\9042\266}%* U+22B6 +% U+22B7 IMAGE OF; \multimapdotbothB (txfonts/pxfonts) +\DeclareTextCommand{\textmultimapdotbothB}{PU}{\9042\267}%* U+22B7 +% U+22B8 MULTIMAP; \multimap (AmS, txfonts/pxfonts) +\DeclareTextCommand{\textmultimap}{PU}{\9042\270}%* U+22B8 +% U+22BB XOR; \veebar (AmS) +\DeclareTextCommand{\textveebar}{PU}{\9042\273}%* U+22BB +% U+22BC NAND; \barwedge (mathabx) +\DeclareTextCommand{\textbarwedge}{PU}{\9042\274}%* U+22BC +% U+22C6 STAR OPERATOR; \star (LaTeX) +\DeclareTextCommand{\textstar}{PU}{\9042\306}%* U+22C6 +% U+22C7 DIVISION TIMES; \divideontimes (AmS) +\DeclareTextCommand{\textdivideontimes}{PU}{\9042\307}%* U+22C7 +% U+22C8 BOWTIE; \bowtie (LaTeX) +\DeclareTextCommand{\textbowtie}{PU}{\9042\310}%* U+22C8 +%* \textbowtie -> \Bowtie (wasysym) +% U+22C9 LEFT NORMAL FACTOR SEMIDIRECT PRODUCT; \ltimes (AmS) +\DeclareTextCommand{\textltimes}{PU}{\9042\311}%* U+22C9 +% U+22CA RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT; +% \rtimes (AmS) +\DeclareTextCommand{\textrtimes}{PU}{\9042\312}%* U+22CA +% U+22CB LEFT SEMIDIRECT PRODUCT; \leftthreetimes (AmS) +\DeclareTextCommand{\textleftthreetimes}{PU}{\9042\313}%* U+22CB +% U+22CC RIGHT SEMIDIRECT PRODUCT; \rightthreetimes (AmS) +\DeclareTextCommand{\textrightthreetimes}{PU}{\9042\314}%* U+22CC +% U+22CD REVERSED TILDE EQUALS; \backsimeq (AmS) +\DeclareTextCommand{\textbacksimeq}{PU}{\9042\315}%* U+22CD +% \nbacksimeq (txfonts/pxfonts) +\DeclareTextCommand{\textnbacksimeq}{PU}{\9042\315\83\070}%* U+22CD U+0338 +% U+22CE CURLY LOGICAL OR; curlyor; \curlyvee (AmS) +\DeclareTextCommand{\textcurlyvee}{PU}{\9042\316}%* U+22CE +%* \textcurlyvee -> \varcurlyvee (stmaryrd) +% U+22CF CURLY LOGICAL AND; curlyand; \curlywedge (AmS) +\DeclareTextCommand{\textcurlywedge}{PU}{\9042\317}%* U+22CF +%* \textcurlywedge -> \varcurlywedge (stmaryrd) +% U+22D0 DOUBLE SUBSET; \Subset (AmS) +\DeclareTextCommand{\textSubset}{PU}{\9042\320}%* U+22D0 +% \nSubset (txfonts/pxfonts) +\DeclareTextCommand{\textnSubset}{PU}{\9042\320\83\070}%* U+22D0 U+0338 +% U+22D1 DOUBLE SUPERSET; \Supset (AmS) +\DeclareTextCommand{\textSupset}{PU}{\9042\321}%* U+22D1 +% \nSupset (txfonts/pxfonts) +\DeclareTextCommand{\textnSupset}{PU}{\9042\321\83\070}%* U+22D1 U+0338 +% U+22D2 DOUBLE INTERSECTION; \Cap (AmS) +\DeclareTextCommand{\textCap}{PU}{\9042\322}%* U+22D2 +%* \textCap -> \doublecap (mathabx) +% U+22D3 DOUBLE UNION; \Cup (AmS) +\DeclareTextCommand{\textCup}{PU}{\9042\323}%* U+22D3 +%* \textCup -> \doublecup (mathabx) +% U+22D4 PITCHFORK; \pitchfork (mathabx) +\DeclareTextCommand{\textpitchfork}{PU}{\9042\324}%* U+22D4 +% U+22D6 LESS-THAN WITH DOT; \lessdot (AmS) +\DeclareTextCommand{\textlessdot}{PU}{\9042\326}%* U+22D6 +% U+22D7 GREATER-THAN WITH DOT; \gtrdot (AmS) +\DeclareTextCommand{\textgtrdot}{PU}{\9042\327}%* U+22D7 +% U+22D8 VERY MUCH LESS-THAN; \lll (AmS) +\DeclareTextCommand{\textlll}{PU}{\9042\330}%* U+22D8 +% U+22D9 VERY MUCH GREATER-THAN; \ggg (AmS) +\DeclareTextCommand{\textggg}{PU}{\9042\331}%* U+22D9 +% U+22DA LESS-THAN EQUAL TO OR GREATER-THAN; lessequalorgreater; +% \lesseqgtr (AmS) +\DeclareTextCommand{\textlesseqgtr}{PU}{\9042\332}%* U+22DA +% U+22DB GREATER-THAN EQUAL TO OR LESS-THAN; greaterequalorless; +% \gtreqless (AmS) +\DeclareTextCommand{\textgtreqless}{PU}{\9042\333}%* U+22DB +% U+22DE EQUAL TO OR PRECEDES; \curlyeqprec (MnSymbol) +\DeclareTextCommand{\textcurlyeqprec}{PU}{\9042\336}%* U+22DE +% \ncurlyeqprec (mathabx) +\DeclareTextCommand{\textncurlyeqprec}{PU}{\9042\336\83\070}%* U+22DE U+0338 +% U+22DF EQUAL TO OR SUCCEEDS; \curlyeqsucc (MnSymbol) +\DeclareTextCommand{\textcurlyeqsucc}{PU}{\9042\337}%* U+22DF +% \ncurlyeqsucc (mathabx) +\DeclareTextCommand{\textncurlyeqsucc}{PU}{\9042\337\83\070}%* U+22DF U+0338 +% U+22E0 DOES NOT PRECEDE OR EQUAL; \npreccurlyeq (txfonts/pxfonts) +\DeclareTextCommand{\textnpreccurlyeq}{PU}{\9042\340}%* U+22E0 +% U+22E1 DOES NOT SUCCEED OR EQUAL; \nsucccurlyeq (txfonts/pxfonts) +\DeclareTextCommand{\textnsucccurlyeq}{PU}{\9042\341}%* U+22E1 +% U+22E2 NOT SQUARE IMAGE OF OR EQUAL TO; \nsqsubseteq (txfonts/pxfonts) +\DeclareTextCommand{\textnqsubseteq}{PU}{\9042\342}%* U+22E2 +% U+22E3 NOT SQUARE ORIGINAL OF OR EQUAL TO; \nsqsupseteq (txfonts/pxfonts) +\DeclareTextCommand{\textnqsupseteq}{PU}{\9042\343}%* U+22E3 +% U+22E4 SQUARE IMAGE OF OR NOT EQUAL TO; \sqsubsetneq (mathabx) +\DeclareTextCommand{\textsqsubsetneq}{PU}{\9042\344}%* U+22E4 +%* \textsqsubsetneq -> \varsqsubsetneq (mathabx) +% U+22E5 SQUARE ORIGINAL OF OR NOT EQUAL TO; \sqsupsetneq (mathabx) +\DeclareTextCommand{\textsqsupsetneq}{PU}{\9042\345}%* U+22E5 +%* \textsqsupsetneq -> \varsqsupsetneq (mathabx) +% U+22E6 LESS-THAN BUT NOT EQUIVALENT TO; \lnsim (AmS) +\DeclareTextCommand{\textlnsim}{PU}{\9042\346}%* U+22E6 +% U+22E7 GREATER-THAN BUT NOT EQUIVALENT TO; \gnsim (AmS) +\DeclareTextCommand{\textgnsim}{PU}{\9042\347}%* U+22E7 +% U+22E8 PRECEDES BUT NOT EQUIVALENT TO; \precnsim (AmS) +\DeclareTextCommand{\textprecnsim}{PU}{\9042\350}%* U+22E8 +% U+22E9 SUCCEEDS BUT NOT EQUIVALENT TO; \succnsim (AmS) +\DeclareTextCommand{\textsuccnsim}{PU}{\9042\351}%* U+22E9 +% U+22EA NOT NORMAL SUBGROUP OF; \ntriangleleft (AmS) +\DeclareTextCommand{\textntriangleleft}{PU}{\9042\352}%* U+22EA +%* \textntriangleleft -> \nlessclosed (MnSymbol) +% U+22EB DOES NOT CONTAIN AS NORMAL SUBGROUP; \ntriangleright (AmS) +\DeclareTextCommand{\textntriangleright}{PU}{\9042\353}%* U+22EB +%* \textntriangleright -> \ngtrclosed (MnSymbol) +% U+22EC NOT NORMAL SUBGROUP OF OR EQUAL TO; +% \ntrianglelefteq (AmS) +\DeclareTextCommand{\textntrianglelefteq}{PU}{\9042\354}%* U+22EC +% U+22ED DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL; +% \ntrianglerighteq (AmS) +\DeclareTextCommand{\textntrianglerighteq}{PU}{\9042\355}%* U+22ED +%* \textntrianglerighteq -> textngeqclosed +% U+22EE VERTICAL ELLIPSIS; ellipsisvertical; \vdots (LaTeX) +\DeclareTextCommand{\textvdots}{PU}{\9042\356}%* U+22EE +% U+22EF MIDLINE HORIZONTAL ELLIPSIS; \cdots (LaTeX) +\DeclareTextCommand{\textcdots}{PU}{\9042\357}%* U+22EF +% U+22F0 UP RIGHT DIAGONAL ELLIPSIS; \udots (MnSymbol) +\DeclareTextCommand{\textudots}{PU}{\9042\360}%* U+22F0 +% U+22F1 DOWN RIGHT DIAGONAL ELLIPSIS; \ddots (LaTeX) +\DeclareTextCommand{\textddots}{PU}{\9042\361}%* U+22F1 +% U+22F6 ELEMENT OF WITH OVERBAR; \barin (mathabx) +\DeclareTextCommand{\textbarin}{PU}{\9042\366}%* U+22F6 +% \end{macrocode} +% +% \subsubsection{Miscellaneous Technical: U+2300 to U+23FF} +% +% \begin{macrocode} +% U+2300 DIAMETER SIGN; \diameter (mathabx,wasysym) +\DeclareTextCommand{\textdiameter}{PU}{\9043\000}%* U+2300 +% U+2310 REVERSED NOT SIGN; \backneg (MnSymbol) +\DeclareTextCommand{\textbackneg}{PU}{\9043\020}%* U+2310 +% U+2311 SQUARE LOZENGE; \wasylozenge (wasysym) +\DeclareTextCommand{\textwasylozenge}{PU}{\9043\021}%* U+2311 +% U+2319 TURNED NOT SIGN; \invbackneg (MnSymbol) +\DeclareTextCommand{\textinvbackneg}{PU}{\9043\031}%* U+2319 +% U+231A WATCH; \clock (wasysym) +\DeclareTextCommand{\textclock}{PU}{\9043\032}%* U+231A +%* \textclock -> \Clocklogo (marvosym) +%* \textclock -> \ClockLogo (marvosym) +% U+231C TOP LEFT CORNER; \ulcorner (AmS) +\DeclareTextCommand{\textulcorner}{PU}{\9043\034}%* U+231C +% U+231D TOP RIGHT CORNER; \urcorner (AmS) +\DeclareTextCommand{\texturcorner}{PU}{\9043\035}%* U+231D +% U+231E BOTTOM LEFT CORNER; \llcorner (AmS) +\DeclareTextCommand{\textllcorner}{PU}{\9043\036}%* U+231E +% U+231F BOTTOM RIGHT CORNER; \lrcorner (AmS) +\DeclareTextCommand{\textlrcorner}{PU}{\9043\037}%* U+231F +% U+2322 FROWN; \frown (LaTeX) +\DeclareTextCommand{\textfrown}{PU}{\9043\042}%* U+2322 +% U+2323 SMILE; \smile (LaTeX) +\DeclareTextCommand{\textsmile}{PU}{\9043\043}%* U+2323 +% U+2328 KEYBOARD; \Keyboard (marvosym) +\DeclareTextCommand{\textKeyboard}{PU}{\9043\050}%* U+2328 +% U+2329 LEFT-POINTING ANGLE BRACKET; angleleft; \langle (LaTeX) +\DeclareTextCommand{\textlangle}{PU}{\9043\051}%* U+2329 +% U+232A RIGHT-POINTING ANGLE BRACKET; angleright; \rangle (LaTeX) +\DeclareTextCommand{\textrangle}{PU}{\9043\052}%* U+232A +% U+2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE; \APLinv (wasysym) +\DeclareTextCommand{\textAPLinv}{PU}{\9043\071}%* U+2339 +% U+233C APL FUNCTIONAL SYMBOL QUAD CIRCLE; \Tumbler (marvosym) +\DeclareTextCommand{\textTumbler}{PU}{\9043\074}%* U+233C +% U+233D APL FUNCTIONAL SYMBOL CIRCLE STILE; \baro (stmaryrd) +\DeclareTextCommand{\textstmaryrdbaro}{PU}{\9043\075}% U+233D +%* \textstmaryrdbaro -> \baro (stmaryrd) +% U+233F APL FUNCTIONAL SYMBOL SLASH BAR; \notslash (wasysym) +\DeclareTextCommand{\textnotslash}{PU}{\9043\077}%* U+233F +% U+2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR; +% \notbackslash (wasysym) +\DeclareTextCommand{\textnotbackslash}{PU}{\9043\100}%* U+2340 +% U+2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH; \boxbackslash (mathabx) +\DeclareTextCommand{\textboxbackslash}{PU}{\9043\102}%* U+2342 +% U+2347 APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW; +% \APLleftarrowbox (wasysym) +\DeclareTextCommand{\textAPLleftarrowbox}{PU}{\9043\107}%* U+2347 +% U+2348 APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW; +% \APLrightarrowbox (wasysym) +\DeclareTextCommand{\textAPLrightarrowbox}{PU}{\9043\110}%* U+2348 +% U+2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW; \APLuparrowbox (wasysym) +\DeclareTextCommand{\textAPLuparrowbox}{PU}{\9043\120}%* U+2350 +% U+2357 APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW; +% \APLdownarrowbox (wasysym) +\DeclareTextCommand{\textAPLdownarrowbox}{PU}{\9043\127}%* U+2357 +% U+235E APL FUNCTIONAL SYMBOL QUOTE QUAD; +% \APLinput (wasysym) +\DeclareTextCommand{\textAPLinput}{PU}{\9043\136}%* U+235E +% U+2370 APL FUNCTIONAL SYMBOL QUAD QUESTION; \Request (china2e) +\DeclareTextCommand{\textRequest}{PU}{\9043\160}%* U+2370 +% U+2393 DIRECT CURRENT SYMBOL FORM TWO; \Beam (marvosym) +\DeclareTextCommand{\textBeam}{PU}{\9043\223}%* U+2393 +% U+2394 SOFTWARE-FUNCTION SYMBOL; \hexagon (wasysym) +\DeclareTextCommand{\texthexagon}{PU}{\9043\224}%* U+2394 +% U+2395 APL FUNCTIONAL SYMBOL QUAD; \APLbox (wasysym) +\DeclareTextCommand{\textAPLbox}{PU}{\9043\225}%* U+2395 +% U+23ED BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR; +% \ForwardToIndex (marvosym) +\DeclareTextCommand{\textForwardToIndex}{PU}{\9043\355}%* U+23ED +% U+23EE BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR; +% \RewindToIndex (marvosym) +\DeclareTextCommand{\textRewindToIndex}{PU}{\9043\356}%* U+23EE +% \end{macrocode} +% +% \subsubsection{Control Pictures: U+2400 to U+243F} +% +% \begin{macrocode} +% U+2422 BLANK SYMBOL +\DeclareTextCommand{\textblank}{PU}{\9044\042}% U+2422 +% U+2423 OPEN BOX; blank +\DeclareTextCommand{\textvisiblespace}{PU}{\9044\043}% U+2423 +% \end{macrocode} +% +% \subsubsection{Optical Character Recognition: U+2440 to U+245F} +% +% \begin{macrocode} +% U+244A OCR DOUBLE BACKSLASH; \bbslash (stmaryrd) +\DeclareTextCommand{\textbbslash}{PU}{\9044\112}%* U+244A +%* \textbbslash -> \varparallelinv (txfonts/pxfonts) +% \end{macrocode} +% +% \subsubsection{Enclosed Alphanumerics: U+2460 to U+24FF} +% +% \begin{macrocode} +% U+2460 CIRCLED DIGIT ONE; onecircle +\DeclareTextCompositeCommand{\textcircled}{PU}{1}{\9044\140}% U+2460 +% U+2461 CIRCLED DIGIT TWO; twocircle +\DeclareTextCompositeCommand{\textcircled}{PU}{2}{\9044\141}% U+2461 +% U+2462 CIRCLED DIGIT THREE; threecircle +\DeclareTextCompositeCommand{\textcircled}{PU}{3}{\9044\142}% U+2462 +% U+2463 CIRCLED DIGIT FOUR; fourcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{4}{\9044\143}% U+2463 +% U+2464 CIRCLED DIGIT FIVE; fivecircle +\DeclareTextCompositeCommand{\textcircled}{PU}{5}{\9044\144}% U+2464 +% U+2465 CIRCLED DIGIT SIX; sixcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{6}{\9044\145}% U+2465 +% U+2466 CIRCLED DIGIT SEVEN; sevencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{7}{\9044\146}% U+2466 +% U+2467 CIRCLED DIGIT EIGHT; eightcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{8}{\9044\147}% U+2467 +% U+2468 CIRCLED DIGIT NINE; ninecircle +\DeclareTextCompositeCommand{\textcircled}{PU}{9}{\9044\150}% U+2468 +% U+2469 CIRCLED NUMBER TEN; tencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{10}{\9044\151}% U+2469 +% U+246A CIRCLED NUMBER ELEVEN; elevencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{11}{\9044\152}% U+246A +% U+246B CIRCLED NUMBER TWELVE; twelvecircle +\DeclareTextCompositeCommand{\textcircled}{PU}{12}{\9044\153}% U+246B +% U+246C CIRCLED NUMBER THIRTEEN; thirteencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{13}{\9044\154}% U+246C +% U+246D CIRCLED NUMBER FOURTEEN; fourteencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{14}{\9044\155}% U+246D +% U+246E CIRCLED NUMBER FIFTEEN; fifteencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{15}{\9044\156}% U+246E +% U+246F CIRCLED NUMBER SIXTEEN; sixteencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{16}{\9044\157}% U+246F +% U+2470 CIRCLED NUMBER SEVENTEEN; seventeencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{17}{\9044\160}% U+2470 +% U+2471 CIRCLED NUMBER EIGHTEEN; eighteencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{18}{\9044\161}% U+2471 +% U+2472 CIRCLED NUMBER NINETEEN; nineteencircle +\DeclareTextCompositeCommand{\textcircled}{PU}{19}{\9044\162}% U+2472 +% U+2473 CIRCLED NUMBER TWENTY; twentycircle +\DeclareTextCompositeCommand{\textcircled}{PU}{20}{\9044\163}% U+2473 +% U+24B6 CIRCLED LATIN CAPITAL LETTER A; Acircle +\DeclareTextCompositeCommand{\textcircled}{PU}{A}{\9044\266}% U+24B6 +% \CircledA (marvosym) +\DeclareTextCommand{\textCircledA}{PU}{\9044\266}%* U+24B6 +%* \textCircledA -> \CleaningA +% U+24B7 CIRCLED LATIN CAPITAL LETTER B; Bcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{B}{\9044\267}% U+24B7 +% U+24B8 CIRCLED LATIN CAPITAL LETTER C; Ccircle +\DeclareTextCompositeCommand{\textcircled}{PU}{C}{\9044\270}% U+24B8 +% U+24B9 CIRCLED LATIN CAPITAL LETTER D; Dcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{D}{\9044\271}% U+24B9 +% U+24BA CIRCLED LATIN CAPITAL LETTER E; Ecircle +\DeclareTextCompositeCommand{\textcircled}{PU}{E}{\9044\272}% U+24BA +% U+24BB CIRCLED LATIN CAPITAL LETTER F; Fcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{F}{\9044\273}% U+24BB +% \CleaningF (marvosym) +\DeclareTextCommand{\textCleaningF}{PU}{\9044\273}%* U+24BB +% \CleaningFF (marvosym) +\DeclareTextCommand{\textCleaningFF}{PU}{\9044\273\83\062}%* U+24BB U+0332 +% U+24BC CIRCLED LATIN CAPITAL LETTER G; Gcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{G}{\9044\274}% U+24BC +% U+24BD CIRCLED LATIN CAPITAL LETTER H; Hcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{H}{\9044\275}% U+24BD +% U+24BE CIRCLED LATIN CAPITAL LETTER I; Icircle +\DeclareTextCompositeCommand{\textcircled}{PU}{I}{\9044\276}% U+24BE +% U+24BF CIRCLED LATIN CAPITAL LETTER J; Jcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{J}{\9044\277}% U+24BF +% U+24C0 CIRCLED LATIN CAPITAL LETTER K; Kcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{K}{\9044\300}% U+24C0 +% U+24C1 CIRCLED LATIN CAPITAL LETTER L; Lcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{L}{\9044\301}% U+24C1 +% U+24C2 CIRCLED LATIN CAPITAL LETTER M; Mcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{M}{\9044\302}% U+24C2 +% U+24C3 CIRCLED LATIN CAPITAL LETTER N; Ncircle +\DeclareTextCompositeCommand{\textcircled}{PU}{N}{\9044\303}% U+24C3 +% U+24C4 CIRCLED LATIN CAPITAL LETTER O; Ocircle +\DeclareTextCompositeCommand{\textcircled}{PU}{O}{\9044\304}% U+24C4 +% U+24C5 CIRCLED LATIN CAPITAL LETTER P; Pcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{P}{\9044\305}% U+24C5 +% \CleaningP (marvosym) +\DeclareTextCommand{\textCleaningP}{PU}{\9044\305}%* U+24C5 +% \CleaningPP (marvosym) +\DeclareTextCommand{\textCleaningPP}{PU}{\9044\305\83\062}%* U+24C5 U+0332 +% U+24C6 CIRCLED LATIN CAPITAL LETTER Q; Qcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{Q}{\9044\306}% U+24C6 +% U+24C7 CIRCLED LATIN CAPITAL LETTER R; Rcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{R}{\9044\307}% U+24C7 +% U+24C8 CIRCLED LATIN CAPITAL LETTER S; Scircle +\DeclareTextCompositeCommand{\textcircled}{PU}{S}{\9044\310}% U+24C8 +% U+24C9 CIRCLED LATIN CAPITAL LETTER T; Tcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{T}{\9044\311}% U+24C9 +% U+24CA CIRCLED LATIN CAPITAL LETTER U; Ucircle +\DeclareTextCompositeCommand{\textcircled}{PU}{U}{\9044\312}% U+24CA +% U+24CB CIRCLED LATIN CAPITAL LETTER V; Vcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{V}{\9044\313}% U+24CB +% U+24CC CIRCLED LATIN CAPITAL LETTER W; Wcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{W}{\9044\314}% U+24CC +% U+24CD CIRCLED LATIN CAPITAL LETTER X; Xcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{X}{\9044\315}% U+24CD +% U+24CE CIRCLED LATIN CAPITAL LETTER Y; Ycircle +\DeclareTextCompositeCommand{\textcircled}{PU}{Y}{\9044\316}% U+24CE +% U+24CF CIRCLED LATIN CAPITAL LETTER Z; Zcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{Z}{\9044\317}% U+24CF +% U+24D0 CIRCLED LATIN SMALL LETTER A; acircle +\DeclareTextCompositeCommand{\textcircled}{PU}{a}{\9044\320}% U+24D0 +% U+24D1 CIRCLED LATIN SMALL LETTER B; bcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{b}{\9044\321}% U+24D1 +% U+24D2 CIRCLED LATIN SMALL LETTER C; ccircle +\DeclareTextCompositeCommand{\textcircled}{PU}{c}{\9044\322}% U+24D2 +% U+24D3 CIRCLED LATIN SMALL LETTER D; dcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{d}{\9044\323}% U+24D3 +% U+24D4 CIRCLED LATIN SMALL LETTER E; ecircle +\DeclareTextCompositeCommand{\textcircled}{PU}{e}{\9044\324}% U+24D4 +% U+24D5 CIRCLED LATIN SMALL LETTER F; fcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{f}{\9044\325}% U+24D5 +% U+24D6 CIRCLED LATIN SMALL LETTER G; gcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{g}{\9044\326}% U+24D6 +% U+24D7 CIRCLED LATIN SMALL LETTER H; hcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{h}{\9044\327}% U+24D7 +% U+24D8 CIRCLED LATIN SMALL LETTER I; icircle +\DeclareTextCompositeCommand{\textcircled}{PU}{i}{\9044\330}% U+24D8 +% U+24D9 CIRCLED LATIN SMALL LETTER J; jcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{j}{\9044\331}% U+24D9 +% U+24DA CIRCLED LATIN SMALL LETTER K; kcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{k}{\9044\332}% U+24DA +% U+24DB CIRCLED LATIN SMALL LETTER L; lcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{l}{\9044\333}% U+24DB +% U+24DC CIRCLED LATIN SMALL LETTER M; mcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{m}{\9044\334}% U+24DC +% U+24DD CIRCLED LATIN SMALL LETTER N; ncircle +\DeclareTextCompositeCommand{\textcircled}{PU}{n}{\9044\335}% U+24DD +% U+24DE CIRCLED LATIN SMALL LETTER O; ocircle +\DeclareTextCompositeCommand{\textcircled}{PU}{o}{\9044\336}% U+24DE +% U+24DF CIRCLED LATIN SMALL LETTER P; pcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{p}{\9044\337}% U+24DF +% U+24E0 CIRCLED LATIN SMALL LETTER Q; qcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{q}{\9044\340}% U+24E0 +% U+24E1 CIRCLED LATIN SMALL LETTER R; rcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{r}{\9044\341}% U+24E1 +% U+24E2 CIRCLED LATIN SMALL LETTER S; scircle +\DeclareTextCompositeCommand{\textcircled}{PU}{s}{\9044\342}% U+24E2 +% U+24E3 CIRCLED LATIN SMALL LETTER T; tcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{t}{\9044\343}% U+24E3 +% U+24E4 CIRCLED LATIN SMALL LETTER U; ucircle +\DeclareTextCompositeCommand{\textcircled}{PU}{u}{\9044\344}% U+24E4 +% U+24E5 CIRCLED LATIN SMALL LETTER V; vcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{v}{\9044\345}% U+24E5 +% U+24E6 CIRCLED LATIN SMALL LETTER W; wcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{w}{\9044\346}% U+24E6 +% U+24E7 CIRCLED LATIN SMALL LETTER X; xcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{x}{\9044\347}% U+24E7 +% U+24E8 CIRCLED LATIN SMALL LETTER Y; ycircle +\DeclareTextCompositeCommand{\textcircled}{PU}{y}{\9044\350}% U+24E8 +% U+24E9 CIRCLED LATIN SMALL LETTER Z; zcircle +\DeclareTextCompositeCommand{\textcircled}{PU}{z}{\9044\351}% U+24E9 +% U+24EA CIRCLED DIGIT ZERO +\DeclareTextCompositeCommand{\textcircled}{PU}{0}{\9044\352}% U+24EA +% \end{macrocode} +% +% \subsubsection{Box Drawing: U+2500 to 257F} +% +% \begin{macrocode} +% U+2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL; \CuttingLine (marvosym) +\DeclareTextCommand{\textCuttingLine}{PU}{\9045\004}%* U+2504 +%* \textCuttingLine -> \Kutline (marvosym) +%* \textCuttingLine -> \CutLine (marvosym) +%* \textCuttingLine -> \Cutline (marvosym) +% \end{macrocode} +% +% \subsubsection{Geometric Shapes: U+25A0 to U+25FF} +% +% \begin{macrocode} +% U+25B2 BLACK UP-POINTING TRIANGLE; \UParrow (wasysym) +\DeclareTextCommand{\textUParrow}{PU}{\9045\262}%* U+25B2 +%* \textUParrow -> \MoveUp (marvosym) +% U+25B3 WHITE UP-POINTING TRIANGLE; whiteuppointingtriangle; +% \bigtriangleup (LaTeX) +\DeclareTextCommand{\textbigtriangleup}{PU}{\9045\263}%* U+25B3 +%* \textbigtriangleup -> \APLup (wasysym) +%* \textbigtriangleup -> \Bleech (marvosym) +% U+25B6 BLACK RIGHT-POINTING TRIANGLE; \Forward (marvosym) +\DeclareTextCommand{\textForward}{PU}{\9045\266}%* U+25B6 +% U+25B7 WHITE RIGHT-POINTING TRIANGLE (= z notation range restriction); +% whiterightpointingtriangle; \triangleright (LaTeX) +\DeclareTextCommand{\texttriangleright}{PU}{\9045\267}%* U+25B7 +% U+25BA BLACK RIGHT-POINTING POINTER; \RHD (wasysym) +\DeclareTextCommand{\textRHD}{PU}{\9045\272}%* U+25BA +% U+25BC BLACK DOWN-POINTING TRIANGLE; \DOWNarrow (wasysym) +\DeclareTextCommand{\textDOWNarrow}{PU}{\9045\274}%* U+25BC +%* \textDOWNarrow -> \MoveDown (marvosym) +% U+25BD WHITE DOWN-POINTING TRIANGLE; whitedownpointingtriangle; +% \bigtriangledown (LaTeX) +\DeclareTextCommand{\textbigtriangledown}{PU}{\9045\275}%* U+25BD +%* \textbigtriangledown -> \APLdown (wasysym) +% U+25C0 BLACK LEFT-POINTING TRIANGLE; \Rewind (marvosym) +\DeclareTextCommand{\textRewind}{PU}{\9045\300}%* U+25C0 +% U+25C1 WHITE RIGHT-POINTING TRIANGLE (= z notation domain restriction); +% whiteleftpointingtriangle; \triangleleft (LaTeX) +\DeclareTextCommand{\texttriangleleft}{PU}{\9045\301}%* U+25C1 +% U+25C4 BLACK LEFT-POINTING POINTER; \LHD (wasysym) +\DeclareTextCommand{\textLHD}{PU}{\9045\304}%* U+25C4 +% U+25C7 WHITE DIAMOND; whitediamond; \diamond (LaTeX) +\DeclareTextCommand{\textdiamond}{PU}{\9045\307}%* U+25C7 +%* \textdiamond -> \Diamond (wasysym) +% U+25CA LOZENGE; lozenge; \lozenge (AmS) +\DeclareTextCommand{\textlozenge}{PU}{\9045\312}%* U+25CA +% U+25D6 LEFT HALF BLACK CIRCLE; \LEFTCIRCLE (wasysym) +\DeclareTextCommand{\textLEFTCIRCLE}{PU}{\9045\326}%* U+25D6 +% U+25D7 RIGHT HALF BLACK CIRCLE; \RIGHTCIRCLE (wasysym) +\DeclareTextCommand{\textRIGHTCIRCLE}{PU}{\9045\327}%* U+25D7 +% U+25E6 WHITE BULLET; *openbullet, whitebullet +\DeclareTextCommand{\textopenbullet}{PU}{\9045\346}%* U+25E6 +% U+25EB WHITE SQUARE WITH VERTICAL BISECTING LINE; +% \boxbar (stmaryrd) +\DeclareTextCommand{\textboxbar}{PU}{\9045\353}%* U+25EB +% U+25EF LARGE CIRCLE; largecircle +\DeclareTextCommand{\textbigcircle}{PU}{\9045\357}%* U+25EF +%* \textbigcircle -> \varbigcirc (stmaryrd) +% +% \end{macrocode} +% +% \subsubsection{Miscellaneous Symbols: U+2600 to U+26FF} +% +% \begin{macrocode} +% U+2601 CLOUD; \Cloud (ifsym) +\DeclareTextCommand{\textCloud}{PU}{\9046\001}%* U+2601 +% U+2605 BLACK STAR; \FiveStar (bbding) +\DeclareTextCommand{\textFiveStar}{PU}{\9046\005}%* U+2605 +% U+2606 WHITE STAR; \FiveStarOpen (bbding) +\DeclareTextCommand{\textFiveStarOpen}{PU}{\9046\006}%* U+2606 +% U+260E BLACK TELEPHONE; telephoneblack; \Phone (bbding) +\DeclareTextCommand{\textPhone}{PU}{\9046\016}%* U+260E +%* \textPhone -> \Telefon (marvosym) +% U+2610 BALLOT BOX; \boxempty (stmaryrd) +\DeclareTextCommand{\textboxempty}{PU}{\9046\020}%* U+2610 +%* \textboxempty -> \Box (wasysym) +% U+2611 BALLOT BOX WITH CHECK; \Checkedbox (marvosym) +\DeclareTextCommand{\textCheckedbox}{PU}{\9046\021}%* U+2611 +%* \textCheckedbox -> \CheckedBox (marvosym) +% U+2612 BALLOT BOX WITH X; \Crossedbox (marvosym) +\DeclareTextCommand{\textCrossedbox}{PU}{\9046\022}%* U+2612 +%* \textCrossedbox -> \XBox (wasysym) +%* \textCrossedbox -> \CrossedBox (marvosym) +% U+2615 HOT BEVERAGE; \Coffeecup (marvosym) +\DeclareTextCommand{\textCoffeecup}{PU}{\9046\025}%* U+2615 +% U+261A BLACK LEFT POINTING INDEX; \HandCuffLeft (bbding) +\DeclareTextCommand{\textHandCuffLeft}{PU}{\9046\032}%* U+261A +% U+261B BLACK RIGHT POINTING INDEX; \HandCuffRight (bbding) +\DeclareTextCommand{\textHandCuffRight}{PU}{\9046\033}%* U+261B +% U+261C WHITE LEFT POINTING INDEX; \HandLeft (bbding) +\DeclareTextCommand{\textHandLeft}{PU}{\9046\034}%* U+261C +%* \textHandLeft -> \rightpointleft (fourier) +% U+261E WHITE RIGHT POINTING INDEX; \HandRight (bbding) +\DeclareTextCommand{\textHandRight}{PU}{\9046\036}%* U+261E +%* \textHandRight -> \leftpointright (fourier) +%* \textHandRight -> \PointingHand (marvosym) +%* \textHandRight -> \Pointinghand (marvosym) +% U+2622 RADIOACTIVE SIGN; \Radioactivity (marvosym) +\DeclareTextCommand{\textRadioactivity}{PU}{\9046\042}%* U+2622 +%* \textRadioactivity -> \Radiation (ifsym) +% U+2623 BIOHAZARD SIGN; \Biohazard (marvosym) +\DeclareTextCommand{\textBiohazard}{PU}{\9046\043}%* U+2623 +% U+2625 ANKH; \Ankh (marvosym) +\DeclareTextCommand{\textAnkh}{PU}{\9046\045}%* U+2625 +% U+262F YIN YANG; \YinYang (marvosym) +\DeclareTextCommand{\textYinYang}{PU}{\9046\057}%* U+262F +%* \textYinYang -> \Yinyang (marvosym) +%* \textYinYang -> \YingYang (marvosym) +%* \textYinYang -> \Yingyang (marvosym) +% U+2639 WHITE FROWNING FACE; \frownie (wasysym) +\DeclareTextCommand{\textfrownie}{PU}{\9046\071}%* U+2639 +%* \textfrownie -> \Frowny (marvosym) +% U+263A WHITE SMILING FACE; \smiley (wasysym) +\DeclareTextCommand{\textsmiley}{PU}{\9046\072}%* U+263A +%* \textsmiley -> \Smiley (marvosym) +% U+263B BLACK SMILING FACE; \blacksmiley (wasysym) +\DeclareTextCommand{\textblacksmiley}{PU}{\9046\073}%* U+263B +% U+263C WHITE SUN WITH RAYS; \sun (wasysym) +\DeclareTextCommand{\textsun}{PU}{\9046\074}%* U+263C +%* \textsun -> \Sun (marvosym) +% U+263D FIRST QUARTER MOON; \leftmoon (wasysym, mathabx) +\DeclareTextCommand{\textleftmoon}{PU}{\9046\075}%* U+263D +% U+263E LAST QUARTER MOON; \rightmoon (wasysym, mathabx) +\DeclareTextCommand{\textrightmoon}{PU}{\9046\076}%* U+263E +% U+263F MERCURY; \mercury (wasysym) +\DeclareTextCommand{\textmercury}{PU}{\9046\077}%* U+263F +%* \textmercury -> \Mercury (marvosym) +% U+2640 FEMALE SIGN; female; \female (wasysym) +\DeclareTextCommand{\textPUfemale}{PU}{\9046\100}% U+2640 +%* \textPUfemale -> \textfemale (tipx) +%* \textPUfemale -> \female (wasysym) +%* \textPUfemale -> \venus (wasysym) +%* \textPUfemale -> \Venus (marvosym) +%* \textPUfemale -> \Female (marvosym) +% U+2641 EARTH; \earth (wasysym) +\DeclareTextCommand{\textearth}{PU}{\9046\101}%* U+2641 +%* \textearth -> \Earth (marvosym) +% U+2642 MALE SIGN; male, mars; \male (wasysym) +\DeclareTextCommand{\textmale}{PU}{\9046\102}%* U+2642 +%* \textmale -> \mars (wasysym) +%* \textmale -> \Mars (marvosym) +%* \textmale -> \Male (marvosym) +% U+2643 JUPITER; \jupiter (wasysym) +\DeclareTextCommand{\textjupiter}{PU}{\9046\103}%* U+2643 +%* \textjupiter -> \Jupiter (marvosym) +% U+2644 SATURN; \saturn (wasysym) +\DeclareTextCommand{\textsaturn}{PU}{\9046\104}%* U+2644 +%* \textsaturn -> \Saturn (marvosym) +% U+2645 URANUS; \uranus (wasysym) +\DeclareTextCommand{\texturanus}{PU}{\9046\105}%* U+2645 +%* \texturanus -> \Uranus (marvosym) +% U+2646 NEPTUNE; \neptune (wasysym) +\DeclareTextCommand{\textneptune}{PU}{\9046\106}%* U+2646 +%* \textneptune -> \Neptune (marvosym) +% U+2647 PLUTO; \pluto (wasysym) +\DeclareTextCommand{\textpluto}{PU}{\9046\107}%* U+2647 +%* \textpluto -> \Pluto (marvosym) +% U+2648 ARIES; \aries (wasysym) +\DeclareTextCommand{\textaries}{PU}{\9046\110}%* U+2648 +%* \textaries -> \Aries (marvosym) +% U+2649 TAURUS; \taurus (wasysym) +\DeclareTextCommand{\texttaurus}{PU}{\9046\111}%* U+2649 +%* \texttaurus -> \Taurus (marvosym) +% U+264A GEMINI; \gemini (wasysym) +\DeclareTextCommand{\textgemini}{PU}{\9046\112}%* U+264A +%* \textgemini -> \Gemini (marvosym) +% U+264B CANCER; \cancer (wasysym) +\DeclareTextCommand{\textcancer}{PU}{\9046\113}%* U+264B +%* \textcancer -> \Cancer (marvosym) +% U+264C LEO; \leo (wasysym) +\DeclareTextCommand{\textleo}{PU}{\9046\114}%* U+264C +%* \textleo -> \Leo (marvosym) +% U+264D VIRGO; \virgo (wasysym) +\DeclareTextCommand{\textvirgo}{PU}{\9046\115}%* U+264D +%* \textvirgo -> \Virgo (marvosym) +% U+264E LIBRA; \libra (wasysym) +\DeclareTextCommand{\textlibra}{PU}{\9046\116}%* U+264E +%* \textlibra -> \Libra (marvosym) +% U+264F SCORPIO; \scorpio (wasysym) +\DeclareTextCommand{\textscorpio}{PU}{\9046\117}%* U+264F +%* \textscorpio -> \Scorpio (marvosym) +% U+2650 SAGITTARIUS; \sagittarius (wasysym) +\DeclareTextCommand{\textsagittarius}{PU}{\9046\120}%* U+2650 +%* \textsagittarius -> \Sagittarius (marvosym) +% U+2651 CAPRICORN; \capricornus (wasysym) +\DeclareTextCommand{\textcapricornus}{PU}{\9046\121}%* U+2651 +%* \textcapricornus -> \Capricorn (marvosym) +% U+2652 AQUARIUS; \aquarius (wasysym) +\DeclareTextCommand{\textaquarius}{PU}{\9046\122}%* U+2652 +%* \textaquarius -> \Aquarius (marvosym) +% U+2653 PISCES; \pisces (wasysym) +\DeclareTextCommand{\textpisces}{PU}{\9046\123}%* U+2653 +%* \textpisces -> \Pisces (marvosym) +% U+2660 BLACK SPADE SUIT; spade, spadesuitblack; \spadesuit (LaTeX) +\DeclareTextCommand{\textspadesuitblack}{PU}{\9046\140}% U+2660 +%* \textspadesuitblack -> \spadesuit (MnSymbol) +% U+2661 WHITE HEART SUIT; heartsuitwhite; \heartsuit (LaTeX) +\DeclareTextCommand{\textheartsuitwhite}{PU}{\9046\141}% U+2661 +%* \textheartsuitwhite -> \Heart (marvosym) +%* \textheartsuitwhite -> \heartsuit (MnSymbol) +% U+2662 WHITE DIAMOND SUIT; diamondsuitwhite; \diamondsuit (LaTeX) +\DeclareTextCommand{\textdiamondsuitwhite}{PU}{\9046\142}% U+2662 +%* \textdiamondsuitwhite -> \diamondsuit (MnSymbol) +% U+2663 BLACK CLUB SUIT; club, clubsuitblack; \clubsuit (LaTeX) +\DeclareTextCommand{\textclubsuitblack}{PU}{\9046\143}% U+2663 +%* \textclubsuitblack -> \clubsuit (MnSymbol) +% U+2664 WHITE SPADE SUIT; spadesuitwhite +\DeclareTextCommand{\textspadesuitwhite}{PU}{\9046\144}% U+2664 +% U+2665 BLACK HEART SUIT; heartsuitblack, heart +\DeclareTextCommand{\textheartsuitblack}{PU}{\9046\145}% U+2665 +% U+2666 BLACK DIAMOND SUIT; diamond +\DeclareTextCommand{\textdiamondsuitblack}{PU}{\9046\146}% U+2666 +% U+2667 WHITE CLUB SUIT; clubsuitwhite +\DeclareTextCommand{\textclubsuitwhite}{PU}{\9046\147}% U+2667 +% U+2669 QUARTER NOTE; quarternote; \quarternote (wasysym, arev) +\DeclareTextCommand{\textquarternote}{PU}{\9046\151}%* U+2669 +% U+266A EIGHTH NOTE; musicalnote; \textmusicalnote (textcomp) +\DeclareTextCommand{\textmusicalnote}{PU}{\9046\152}% U+266A +%* \textmusicalnote -> \eighthnote (wasysym, arev) +% U+266B BEAMED EIGHTH NOTES; eighthnotebeamed; \twonotes (wasysym) +\DeclareTextCommand{\texttwonotes}{PU}{\9046\153}%* U+266B +% U+266C BEAMED SIXTEENTH NOTES; beamedsixteenthnotes; \sixteenthnote (arev) +\DeclareTextCommand{\textsixteenthnote}{PU}{\9046\154}%* U+266C +% U+266D MUSIC FLAT SIGN; musicflatsign; \flat (LaTeX) +\DeclareTextCommand{\textflat}{PU}{\9046\155}%* U+266D +% U+266E MUSIC NATURAL SIGN; \natural (LaTeX) +\DeclareTextCommand{\textnatural}{PU}{\9046\156}%* U+266E +% U+266F MUSIC SHARP SIGN; musicsharpsign; \sharp (LaTeX) +\DeclareTextCommand{\textsharp}{PU}{\9046\157}%* U+266F +% U+2672 UNIVERSAL RECYCLING SYMBOL; \recycle (recycle) +\DeclareTextCommand{\textrecycle}{PU}{\9046\162}%* U+2672 +%* \textrecycle -> \Recycling (marvosym) +% U+267F WHEELCHAIR SYMBOL; \Wheelchair (marvosym) +\DeclareTextCommand{\textWheelchair}{PU}{\9046\177}%* U+267F +% U+2691 BLACK FLAG; \Flag (ifsym) +\DeclareTextCommand{\textFlag}{PU}{\9046\221}%* U+2691 +%* \textFlag -> \VarFlag (ifsym) +% U+2692 HAMMER AND PICK; \MineSign (marvosym) +\DeclareTextCommand{\textMineSign}{PU}{\9046\222}%* U+2692 +% U+2694 CROSSED SWORDS; \dsmilitary (dictsym) +\DeclareTextCommand{\textdsmilitary}{PU}{\9046\224}%* U+2694 +%* \textdsmilitary -> \textxswup (fourier) +% U+2695 STAFF OF AESCULAPIUS; \dsmedical (dictsym) +\DeclareTextCommand{\textdsmedical}{PU}{\9046\225}%* U+2695 +% U+2696 SCALES; \dsjuridical (dictsym) +\DeclareTextCommand{\textdsjuridical}{PU}{\9046\226}%* U+2696 +% U+2697 ALEMBIC; \dschemical (dictsym) +\DeclareTextCommand{\textdschemical}{PU}{\9046\227}%* U+2697 +% U+2698 FLOWER; \dsbiological (dictsym) +\DeclareTextCommand{\textdsbiological}{PU}{\9046\230}%* U+2698 +% U+269A STAFF OF HERMES; \dscommercial (dictsym) +\DeclareTextCommand{\textdscommercial}{PU}{\9046\232}%* U+269A +% U+269D OUTLINED WHITE STAR; \manstar (manfnt) +\DeclareTextCommand{\textmanstar}{PU}{\9046\235}%* U+269D +% U+26A0 WARNING SIGN; \danger (fourier) +\DeclareTextCommand{\textdanger}{PU}{\9046\240}%* U+26A0 +% U+26A2 DOUBLED FEMALE SIGN; \FemaleFemale (marvosym) +\DeclareTextCommand{\textFemaleFemale}{PU}{\9046\242}%* U+26A2 +% U+26A3 DOUBLED MALE SIGN; \MaleMale (marvosym) +\DeclareTextCommand{\textMaleMale}{PU}{\9046\243}%* U+26A3 +% U+26A4 INTERLOCKED FEMALE AND MALE SIGN; \FemaleMale (marvosym) +\DeclareTextCommand{\textFemaleMale}{PU}{\9046\244}%* U+26A4 +% U+26A5 MALE AND FEMALE SIGN; \Hermaphrodite (marvosym) +\DeclareTextCommand{\textHermaphrodite}{PU}{\9046\245}%* U+26A5 +% U+26AA MEDIUM WHITE CIRCLE; \Neural (marvosym) +\DeclareTextCommand{\textNeutral}{PU}{\9046\252}%* U+26AA +% U+26AD MARRIAGE SYMBOL +\DeclareTextCommand{\textmarried}{PU}{\9046\255}% U+26AD +% U+26AE DIVORCE SYMBOL +\DeclareTextCommand{\textdivorced}{PU}{\9046\256}% U+26AE +% U+26B2 NEUTER; \textuncrfemale (tipx) +\DeclareTextCommand{\textPUuncrfemale}{PU}{\9046\262}% U+26B2 +%* \textPUuncrfemale -> \textuncrfemale (tipx) +% U+26B9 SEXTILE; \hexstar (wasysym) +\DeclareTextCommand{\texthexstar}{PU}{\9046\271}%* U+26B9 +% U+26BD SOCCER BALL; \Football (marvosym) +\DeclareTextCommand{\textSoccerBall}{PU}{\9046\275}% U+26BD +%* \textSoccerBall -> \Football (marvosym) +% U+26C5 SUN BEHIND CLOUD; \SunCloud (ifsym) +\DeclareTextCommand{\textSunCload}{PU}{\9046\305}%* U+26C5 +% U+26C6 RAIN; \Rain (ifsym) +\DeclareTextCommand{\textRain}{PU}{\9046\306}%* U+26C6 +% U+26D4 NO ENTRY; \noway (fourier) +\DeclareTextCommand{\textnoway}{PU}{\9046\324}%* U+26D4 +% U+26F0 MOUNTAIN; \Mountain (ifsym) +\DeclareTextCommand{\textMountain}{PU}{\9046\360}%* U+26F0 +% U+26FA TENT; \Tent (ifsym) +\DeclareTextCommand{\textTent}{PU}{\9046\372}%* U+26FA +% \end{macrocode} +% +% \subsubsection{Dingbats: U+2700 to U+27BF} +% +% \begin{macrocode} +% U+2701 UPPER BLADE SCISSORS; \ScissorRightBrokenBottom (bbding) +\DeclareTextCommand{\textScissorRightBrokenBottom}{PU}{\9047\001}% U+2701 +%* \textScissorRightBrokenBottom -> \CutLeft (marvosym) +%* \textScissorRightBrokenBottom -> \Cutright (marvosym) +% U+2702 BLACK SCISSORS; \ScissorRight (bbding) +\DeclareTextCommand{\textScissorRight}{PU}{\9047\002}%* U+2702 +%* \textScissorRight -> \RightScissors (marvosym) +%* \textScissorRight -> \Leftscissors (marvosym) +% U+2703 LOWER BLADE SCISSORS; \ScissorRightBrokenTop (bbding) +\DeclareTextCommand{\textScissorRightBrokenTop}{PU}{\9047\003}%* U+2703 +% U+2704 WHITE SCISSORS; \ScissorHollowRight (bbding) +\DeclareTextCommand{\textScissorHollowRight}{PU}{\9047\004}%* U+2704 +% U+2706 TELEPHONE LOCATION SIGN; \PhoneHandset (bbding) +\DeclareTextCommand{\textPhoneHandset}{PU}{\9047\006}%* U+2706 +% U+2707 TAPE DRIVE; \Tape (bbding) +\DeclareTextCommand{\textTape}{PU}{\9047\007}%* U+2707 +% U+2708 AIRPLANE; \Plane (bbding) +\DeclareTextCommand{\textPlane}{PU}{\9047\010}%* U+2708 +% U+2709 ENVELOPE; \Envelope (bbding), +\DeclareTextCommand{\textEnvelope}{PU}{\9047\011}%* U+2709 +%* \textEnvelope -> \Letter (marvosym) +% U+270C VICTORY HAND; \Peace (bbding) +\DeclareTextCommand{\textPeace}{PU}{\9047\014}%* U+270C +% U+270D WRITING HAND; \WritingHand (marvosym) +\DeclareTextCommand{\textWritingHand}{PU}{\9047\015}%* U+270D +%* \textWritingHand -> \Writinghand (marvosym) +% U+270E LOWER RIGHT PENCIL; \PencilRightDown (bbding) +\DeclareTextCommand{\textPencilRightDown}{PU}{\9047\016}%* U+270E +% U+270F PENCIL; \PencilRight (bbding) +\DeclareTextCommand{\textPencilRight}{PU}{\9047\017}%* U+270F +% U+2710 UPPER RIGHT PENCIL; \PencilRightUp (bbding) +\DeclareTextCommand{\textPencilRightUp}{PU}{\9047\020}%* U+2710 +% U+2711 WHITE NIB; \NibRight (bbding) +\DeclareTextCommand{\textNibRight}{PU}{\9047\021}%* U+2711 +% U+2712 BLACK NIB; \NibSolidRight (bbding) +\DeclareTextCommand{\textNibSolidRight}{PU}{\9047\022}%* U+2712 +% U+2713 CHECK MARK; checkmark; \Checkmark (bbding) +\DeclareTextCommand{\textCheckmark}{PU}{\9047\023}%* U+2713 +%* \textCheckmark -> \checkmark (MnSymbol) +% U+2714 HEAVY CHECK MARK; \CheckmarkBold (bbding) +\DeclareTextCommand{\textCheckmarkBold}{PU}{\9047\024}%* U+2714 +% U+2715 MULTIPLICATION X; \XSolid (bbding) +\DeclareTextCommand{\textXSolid}{PU}{\9047\025}%* U+2715 +% U+2716 HEAVY MULTIPLICATION X; \XSolidBold (bbding) +\DeclareTextCommand{\textXSolidBold}{PU}{\9047\026}%* U+2716 +% U+2717 BALLOT X; \XSolidBrush (bbding) +\DeclareTextCommand{\textXSolidBrush}{PU}{\9047\027}%* U+2717 +% U+2719 OUTLINED GREEK CROSS; \PlusOutline (bbding) +\DeclareTextCommand{\textPlusOutline}{PU}{\9047\031}%* U+2719 +% U+271A HEAVY GREEK CROSS; \Plus (bbding) +\DeclareTextCommand{\textPlus}{PU}{\9047\032}%* U+271A +% U+271B OPEN CENTRE CROSS; \PlusThinCenterOpen (bbding) +\DeclareTextCommand{\textPlusThinCenterOpen}{PU}{\9047\033}%* U+271B +% U+271C HEAVY OPEN CENTRE CROSS; \PlusCenterOpen (bbding) +\DeclareTextCommand{\textPlusCenterOpen}{PU}{\9047\034}%* U+271C +% U+271D LATIN CROSS; \Cross (bbding) +\DeclareTextCommand{\textCross}{PU}{\9047\035}%* U+271D +% U+271E SHADOWED WHITE LATIN CROSS; \CrossOpenShadow (bbding) +\DeclareTextCommand{\textCrossOpenShadow}{PU}{\9047\036}%* U+271E +% U+271F OUTLINED LATIN CROSS; \CrossOutline (bbding) +\DeclareTextCommand{\textCrossOutline}{PU}{\9047\037}%* U+271F +% U+2720 MALTESE CROSS; \CrossMaltese (bbding) +\DeclareTextCommand{\textCrossMaltese}{PU}{\9047\040}%* U+2720 +% U+2721 STAR OF DAVID; \DavidStar (bbding) +\DeclareTextCommand{\textDavidStar}{PU}{\9047\041}%* U+2721 +%* \textDavidStar -> \davidstar (wasysym) +% U+2722 FOUR TEARDROP-SPOKED ASTERISK; \FourAsterisk (bbding) +\DeclareTextCommand{\textFourAsterisk}{PU}{\9047\042}%* U+2722 +% U+2723 FOUR BALLOON-SPOKED ASTERISK; \JackStar (bbding) +\DeclareTextCommand{\textJackStar}{PU}{\9047\043}%* U+2723 +% U+2724 HEAVY FOUR BALLOON-SPOKED ASTERISK; \JackStarBold (bbding) +\DeclareTextCommand{\textJackStarBold}{PU}{\9047\044}%* U+2724 +% U+2725 FOUR CLUB-SPOKED ASTERISK; \CrossClowerTips (bbding) +\DeclareTextCommand{\textClowerTips}{PU}{\9047\045}%* U+2725 +% U+2726 BLACK FOUR POINTED STAR; \FourStar (bbding) +\DeclareTextCommand{\textFourStar}{PU}{\9047\046}%* U+2726 +% U+2727 WHITE FOUR POINTED STAR; \FourStarOpen (bbding) +\DeclareTextCommand{\textFourStarOpen}{PU}{\9047\047}%* U+2727 +% U+272A CIRCLED WHITE STAR; \FiveStarOpenCircled (bbding) +\DeclareTextCommand{\textFiveStarOpenCircled}{PU}{\9047\052}%* U+272A +% U+272B OPEN CENTRE BLACK STAR; \FiveStarCenterOpen (bbding) +\DeclareTextCommand{\textFiveStarCenterOpen}{PU}{\9047\053}%* U+272B +% U+272C BLACK CENTRE WHITE STAR; \FiveStarOpenDotted (bbding) +\DeclareTextCommand{\textFiveStarOpenDotted}{PU}{\9047\054}%* U+272C +% U+272D OUTLINED BLACK STAR; \FiveStarOutline (bbding) +\DeclareTextCommand{\textFiveStarOutline}{PU}{\9047\055}%* U+272D +% U+272E HEAVY OUTLINED BLACK STAR; \FiveStarOutlineHeavy (bbding) +\DeclareTextCommand{\textFiveStarOutlineHeavy}{PU}{\9047\056}%* U+272E +% U+272F PINWHEEL STAR; \FiveStarConvex (bbding) +\DeclareTextCommand{\textFiveStarConvex}{PU}{\9047\057}%* U+272F +% U+2730 SHADOWED WHITE STAR; \FiveStarShadow (bbding) +\DeclareTextCommand{\textFiveStarShadow}{PU}{\9047\060}%* U+2730 +% U+2731 HEAVY ASTERISK; \AsteriskBold (bbding) +\DeclareTextCommand{\textAsteriskBold}{PU}{\9047\061}%* U+2731 +% U+2732 OPEN CENTRE ASTERISK; \AsteriskCenterOpen (bbding) +\DeclareTextCommand{\textAsteriskCenterOpen}{PU}{\9047\062}%* U+2732 +% U+2734 EIGHT POINTED BLACK STAR; \EightStarTaper (bbding) +\DeclareTextCommand{\textEightStarTaper}{PU}{\9047\064}%* U+2734 +% U+2735 EIGHT POINTED PINWHEEL STAR; \EightStarConvex (bbding) +\DeclareTextCommand{\textEightStarConvex}{PU}{\9047\065}%* U+2735 +% U+2736 SIX POINTED BLACK STAR; \SixStar (bbding) +\DeclareTextCommand{\textSixStar}{PU}{\9047\066}%* U+2736 +% U+2737 EIGHT POINTED RECTILINEAR BLACK STAR; \EightStar (bbding) +\DeclareTextCommand{\textEightStar}{PU}{\9047\067}%* U+2737 +% U+2738 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR; \EightStarBold (bbding) +\DeclareTextCommand{\textEightStarBold}{PU}{\9047\070}%* U+2738 +% U+2739 TWELVE POINTED BLACK STAR; \TwelveStar (bbding) +\DeclareTextCommand{\textTwelveStar}{PU}{\9047\071}%* U+2739 +% U+273A SIXTEEN POINTED ASTERISK; \SixteenStarLight (bbding) +\DeclareTextCommand{\textSixteenStarLight}{PU}{\9047\072}%* U+273A +% U+273B TEARDROP-SPOKED ASTERISK; \SixFlowerPetalRemoved (bbding) +\DeclareTextCommand{\textSixFlowerPetalRemoved}{PU}{\9047\073}%* U+273B +% U+273C OPEN CENTRE TEARDROP-SPOKED ASTERISK; +% \SixFlowerOpenCenter (bbding) +\DeclareTextCommand{\textSixFlowerOpenCenter}{PU}{\9047\074}%* U+273C +% U+273D HEAVY TEARDROP-SPOKED ASTERISK; \Asterisk (bbding) +\DeclareTextCommand{\textAsterisk}{PU}{\9047\075}%* U+273D +% U+273E SIX PETALLED BLACK AND WHITE FLORETTE; \SixFlowerAlternate (bbding) +\DeclareTextCommand{\textSixFlowerAlternate}{PU}{\9047\076}%* U+273E +% U+273F BLACK FLORETTE; \FiveFlowerPetal (bbding) +\DeclareTextCommand{\textFiveFlowerPetal}{PU}{\9047\077}%* U+273F +% U+2740 WHITE FLORETTE; \FiveFlowerOpen (bbding) +\DeclareTextCommand{\textFiveFlowerOpen}{PU}{\9047\100}%* U+2740 +% U+2741 EIGHT PETALLED OUTLINED BLACK FLORETTE; \EightFlowerPetal (bbding) +\DeclareTextCommand{\textEightFlowerPetal}{PU}{\9047\101}%* U+2741 +% U+2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR; \SunshineOpenCircled (bbding) +\DeclareTextCommand{\textSunshineOpenCircled}{PU}{\9047\102}%* U+2742 +% U+2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK; \SixFlowerAltPetal (bbding) +\DeclareTextCommand{\textSixFlowerAltPetal}{PU}{\9047\103}%* U+2743 +% U+2744 SNOWFLAKE; \SnowflakeChevron (bbding) +\DeclareTextCommand{\textSnowflakeChevron}{PU}{\9047\104}%* U+2744 +% U+2745 TIGHT TRIFOLIATE SNOWFLAKE; \Snowflake (bbding) +\DeclareTextCommand{\textSnowflake}{PU}{\9047\105}%* U+2745 +% U+2746 HEAVY CHEVRON SNOWFLAKE; \SnowflakeChevronBold (bbding) +\DeclareTextCommand{\textSnowflakeChevronBold}{PU}{\9047\106}%* U+2746 +% U+2747 SPARKLE; \Sparkle (bbding) +\DeclareTextCommand{\textSparkle}{PU}{\9047\107}%* U+2747 +% U+2748 HEAVY SPARKLE; \SparkleBold (bbding) +\DeclareTextCommand{\textSparkleBold}{PU}{\9047\110}%* U+2748 +% U+2749 BALLOON-SPOKED ASTERISK; \AsteriskRoundedEnds (bbding) +\DeclareTextCommand{\textAsteriskRoundedEnds}{PU}{\9047\111}%* U+2749 +% U+274A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK; +% \EightFlowerPetalRemoved (bbding) +\DeclareTextCommand{\textEightFlowerPetalRemoved}{PU}{\9047\112}%* U+274A +% U+274B HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK; +% \EightAsterisk (bbding) +\DeclareTextCommand{\textEightAsterisk}{PU}{\9047\113}%* U+274B +% U+274D SHADOWED WHITE CIRCLE; \CircleShadow (bbding) +\DeclareTextCommand{\textCircleShadow}{PU}{\9047\115}%* U+274D +% U+274F LOWER RIGHT DROP-SHADOWED WHITE SQUARE; +% \SquareShadowBottomRight (bbding) +\DeclareTextCommand{\textSquareShadowBottomRight}{PU}{\9047\117}%* U+274F +% U+2750 UPPER RIGHT DROP-SHADOWED WHITE SQUARE; +% \SquareShadowTopRight (bbding) +\DeclareTextCommand{\textSquareTopRight}{PU}{\9047\120}%* U+2750 +% U+2751 LOWER RIGHT SHADOWED WHITE SQUARE; +% \SquareCastShadowBottomRight (bbding) +\DeclareTextCommand{\textSquareCastShadowBottomRight}{PU}{\9047\121}%* U+2751 +% U+2752 UPPER RIGHT SHADOWED WHITE SQUARE; +% \SquareCastShadowTopRight (bbding) +\DeclareTextCommand{\textSquareCastShadowTopRight}{PU}{\9047\122}%* U+2752 +% U+2756 BLACK DIAMOND MINUS WHITE X; \OrnamentDiamandSolid (bbding) +\DeclareTextCommand{\textDiamandSolid}{PU}{\9047\126}%* U+2756 +% U+2758 LIGHT VERTICAL BAR; \RectangleThin (bbding) +\DeclareTextCommand{\textRectangleThin}{PU}{\9047\130}%* U+2758 +% U+2759 MEDIUM VERTICAL BAR; \Rectangle (bbding) +\DeclareTextCommand{\textRectangle}{PU}{\9047\131}%* U+2759 +% U+275A HEAVY VERTICAL BAR; \RectangleBold (bbding) +\DeclareTextCommand{\textRectangleBold}{PU}{\9047\132}%* U+275A +% \end{macrocode} +% +% \subsubsection{Miscellaneous Mathematical Symbols-A: U+27C0 to U+27EF} +% +% \begin{macrocode} +% U+27C2 PERPENDICULAR; perpendicular; \perp (LaTeX) +\DeclareTextCommand{\textperp}{PU}{\9047\302}%* U+27C2 +% \notperp (mathabx) +\DeclareTextCommand{\textnotperp}{PU}{\9047\302\83\070}%* U+27C2 U+0338 +% U+27C7 OR WITH DOT INSIDE; \veedot (MnSymbol) +\DeclareTextCommand{\textveedot}{PU}{\9047\307}%* U+27C7 +% U+27D1 AND WITH DOT; \wedgedot (MnSymbol) +\DeclareTextCommand{\textwedgedot}{PU}{\9047\321}%* U+27D1 +% U+27DC LEFT MULTIMAP; \leftspoon (MnSymbol) +\DeclareTextCommand{\textleftspoon}{PU}{\9047\334}%* U+27DC +% U+27E6 MATHEMATICAL LEFT WHITE SQUARE BRACKET +\DeclareTextCommand{\textlbrackdbl}{PU}{\9047\346}%* U+27E6 +%* \textlbrackdbl -> \llbracket (stmaryrd) +% U+27E7 MATHEMATICAL RIGHT WHITE SQUARE BRACKET +\DeclareTextCommand{\textrbrackdbl}{PU}{\9047\347}%* U+27E7 +%* \textrbrackdbl -> \rrbracket (stmaryrd) +% \end{macrocode} +% +% \subsubsection{Supplemental Arrows-A: U+27F0 to U+27FF} +% +% \begin{macrocode} +% U+27F2 ANTICLOCKWISE GAPPED CIRCLE ARROW; +% \circlearrowleft (AmS) +\DeclareTextCommand{\textcirclearrowleft}{PU}{\9047\362}%* U+27F2 +% U+27F3 CLOCKWISE GAPPED CIRCLE ARROW; \circlearrowright (AmS) +\DeclareTextCommand{\textcirclearrowright}{PU}{\9047\363}%* U+27F3 +% U+27F5 LONG LEFTWARDS ARROW; \longleftarrow (AmS) +\DeclareTextCommand{\textlongleftarrow}{PU}{\9047\365}%* U+27F5 +% U+27F6 LONG RIGHTWARDS ARROW; \longrightarrow (AmS) +\DeclareTextCommand{\textlongrightarrow}{PU}{\9047\366}%* U+27F6 +% U+27F7 LONG LEFT RIGHT ARROW; \longleftrightarrow (AmS) +\DeclareTextCommand{\textlongleftrightarrow}{PU}{\9047\367}%* U+27F7 +% U+27F8 LONG LEFTWARDS DOUBLE ARROW; \Longleftarrow (AmS) +\DeclareTextCommand{\textLongleftarrow}{PU}{\9047\370}%* U+27F8 +% U+27F9 LONG RIGHTWARDS DOUBLE ARROW; \Longrightarrow (AmS) +\DeclareTextCommand{\textLongrightarrow}{PU}{\9047\371}%* U+27F9 +% U+27FA LONG LEFT RIGHT DOUBLE ARROW; \Longleftrightarrow (AmS) +\DeclareTextCommand{\textLongleftrightarrow}{PU}{\9047\372}%* U+27FA +% U+27FC LONG RIGHTWARDS ARROW FROM BAR; \longmapsto (AmS) +\DeclareTextCommand{\textlongmapsto}{PU}{\9047\374}%* U+27FC +% U+27FD LONG LEFTWARDS DOUBLE ARROW FROM BAR; \Longmapsfrom (stmaryrd) +\DeclareTextCommand{\textLongmapsfrom}{PU}{\9047\375}%* U+27FD +% U+27FE LONG RIGHTWARDS DOUBLE ARROW FROM BAR; \Longmapsto (stmaryrd) +\DeclareTextCommand{\textLongmapsto}{PU}{\9047\376}%* U+27FE +% \end{macrocode} +% +% \subsubsection{Supplemental Arrows-B: U+2900 to U+297F} +% +% \begin{macrocode} +% U+2921 NORTH WEST AND SOUTH EAST ARROW; \nwsearrow (MnSymbol) +\DeclareTextCommand{\textnwsearrow}{PU}{\9051\041}%* U+2921 +% U+2922 NORTH EAST AND SOUTH WEST ARROW; \neswarrow (MnSymbol) +\DeclareTextCommand{\textneswarrow}{PU}{\9051\042}%* U+2922 +% U+2923 NORTH WEST ARROW WITH HOOK; \lhooknwarrow (MnSymbol) +\DeclareTextCommand{\textlhooknwarrow}{PU}{\9051\043}%* U+2923 +% U+2924 NORTH EAST ARROW WITH HOOK; \rhooknearrow (MnSymbol) +\DeclareTextCommand{\textrhooknearrow}{PU}{\9051\044}%* U+2924 +% U+2925 SOUTH EAST ARROW WITH HOOK; \lhooksearrow (MnSymbol) +\DeclareTextCommand{\textlhooksearrow}{PU}{\9051\045}%* U+2925 +% U+2926 SOUTH WEST ARROW WITH HOOK; \rhookswarrow (MnSymbol) +\DeclareTextCommand{\textrhookswarrow}{PU}{\9051\046}%* U+2926 +% U+2933 WAVE ARROW POINTING DIRECTLY RIGHT; \leadsto (wasysym) +\DeclareTextCommand{\textleadsto}{PU}{\9051\063}%* U+2933 +% U+2934 ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS; +% \rcurvearrowne (MnSymbol) +\DeclareTextCommand{\textrcurvearrowne}{PU}{\9051\064}%* U+2934 +% U+2935 ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS; +% \lcurvearrowse (MnSymbol) +\DeclareTextCommand{\textlcurvearrowse}{PU}{\9051\065}%* U+2935 +% U+2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS; +% \lcurvearrowsw (MnSymbol) +\DeclareTextCommand{\textlcurvearrowsw}{PU}{\9051\066}%* U+2936 +% U+2937 ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS; +% \rcurvearrowse (MnSymbol) +\DeclareTextCommand{\textrcurvearrowse}{PU}{\9051\067}%* U+2937 +% U+2938 RIGHT-SIDE ARC CLOCKWISE ARROW; \lcurvearrowdown (MnSymbol) +\DeclareTextCommand{\textlcurvearrowdown}{PU}{\9051\070}%* U+2938 +%* \textlcurvearrowdown -> \RightTorque (marvosym) +%* \textlcurvearrowdown -> \Righttorque (marvosym) +% U+2939 LEFT-SIDE ARC ANTICLOCKWISE ARROW; +% \rcurvearrowdown (MnSymbol) +\DeclareTextCommand{\textrcurvearrowdown}{PU}{\9051\071}%* U+2939 +%* \textrcurvearrowdown -> \LeftTorque (marvosym) +%* \textrcurvearrowdown -> \Lefttorque (marvosym) +% U+293A TOP ARC ANTICLOCKWISE ARROW; \rcurvearrowleft (MnSymbol) +\DeclareTextCommand{\textrcurvearrowleft}{PU}{\9051\072}%* U+293A +% U+293B BOTTOM ARC ANTICLOCKWISE ARROW; +% \rcurvearrowright (MnSymbol) +\DeclareTextCommand{\textrcurvearrowright}{PU}{\9051\073}%* U+293B +% U+294A LEFT BARB UP RIGHT BARB DOWN HARPOON; \leftrightharpoon (mathabx) +\DeclareTextCommand{\textleftrightharpoon}{PU}{\9051\112}%* U+294A +% U+294B LEFT BARB DOWN RIGHT BARB UP HARPOON; \rightleftharpoon (mathabx) +\DeclareTextCommand{\textrightleftharpoon}{PU}{\9051\113}%* U+294B +% U+294C UP BARB RIGHT DOWN BARB LEFT HARPOON; +% \updownharpoonrightleft (MnSymbol) +\DeclareTextCommand{\textupdownharpoonrightleft}{PU}{\9051\114}%* U+294C +% U+294D UP BARB LEFT DOWN BARB RIGHT HARPOON; +% \updownharpoonleftright (MnSymbol) +\DeclareTextCommand{\textupdownharpoonleftright}{PU}{\9051\115}%* U+294D +% U+2962 LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS +% HARPOON WITH BARB DOWN; \leftleftharpoons (mathabx) +\DeclareTextCommand{\textleftleftharpoons}{PU}{\9051\142}%* U+2962 +% U+2963 UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS +% HARPOON WITH BARB RIGHT; \upupharpoons (mathabx) +\DeclareTextCommand{\textupupharpoons}{PU}{\9051\143}%* U+2963 +% U+2964 RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON +% WITH BARB DOWN; \rightrightharpoons (mathabx) +\DeclareTextCommand{\textrightrightharpoons}{PU}{\9051\144}%* U+2964 +% U+2965 DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON +% WITH BARB RIGHT; \downdownharpoons (mathabx) +\DeclareTextCommand{\textdowndownharpoons}{PU}{\9051\145}%* U+2965 +% U+296A LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH; +% \leftbarharpoon (mathabx) +\DeclareTextCommand{\textleftbarharpoon}{PU}{\9051\152}%* U+296A +% U+296B LEFTWARDS HARPOON WITH BARB DOWN BELOW +% LONG DASH; \barleftharpoon (mathabx) +\DeclareTextCommand{\textbarleftharpoon}{PU}{\9051\153}%* U+296B +% U+296C RIGHTWARDS HARPOON WITH BARB UP ABOVE +% LONG DASH; \rightbarharpoon (mathabx) +\DeclareTextCommand{\textrightbarharpoon}{PU}{\9051\154}%* U+296C +% U+296D RIGHTWARDS HARPOON WITH BARB DOWN BELOW +% LONG DASH; \barrightharpoon (mathabx) +\DeclareTextCommand{\textbarrightharpoon}{PU}{\9051\155}%* U+296D +% U+296E UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON +% WITH BARB RIGHT; \updownharpoons (mathabx) +\DeclareTextCommand{\textupdownharpoons}{PU}{\9051\156}%* U+296E +% U+296F DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON +% WITH BARB RIGHT; \downupharpoons (mathabx) +\DeclareTextCommand{\textdownupharpoons}{PU}{\9051\157}%* U+296F +% U+297F DOWN FISH TAIL +\DeclareTextCommand{\textmoo}{PU}{\9051\177\83\066}%* U+297F U+0336 +% \end{macrocode} +% +% \subsubsection{Miscellaneous Mathematical Symbols-B: U+2980 to U+29FF} +% +% \begin{macrocode} +% U+2987 Z NOTATION LEFT IMAGE BRACKET; \llparenthesis (stmaryrd) +\DeclareTextCommand{\textllparenthesis}{PU}{\9051\207}%* U+2987 +% U+2988 Z NOTATION RIGHT IMAGE BRACKET; \rrparenthesis (stmaryrd) +\DeclareTextCommand{\textrrparenthesis}{PU}{\9051\210}%* U+2988 +% U+29B0 REVERSED EMPTY SET; \invdiameter (wasysym) +\DeclareTextCommand{\textinvdiameter}{PU}{\9051\260}%* U+29B0 +% U+29B6 CIRCLED VERTICAL BAR; \obar (stmaryrd) +\DeclareTextCommand{\textobar}{PU}{\9051\266}%* U+29B6 +%* \textobar -> \textvarobar (stmaryrd) +% U+29B8 CIRCLED REVERSE SOLIDUS; \obslash (stmaryrd) +\DeclareTextCommand{\textobslash}{PU}{\9051\270}%* U+29B8 +%* \textobslash -> \circledbslash (txfonts/pxfonts) +%* \textobslash -> \obackslash (mathabx) +%* \textobslash -> \varobslash (stmaryrd) +% U+29BA CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF +% DIVIDED BY VERTICAL BAR; \obot (mathabx) +\DeclareTextCommand{\textobot}{PU}{\9051\272}%* U+29BA +%* \textobot -> \odplus (ulsy) +% U+29BB CIRCLE WITH SUPERIMPOSED X; \NoChemicalCleaning (marvosym) +\DeclareTextCommand{\textNoChemicalCleaning}{PU}{\9051\273}%* U+29BB +% U+29C0 CIRCLED LESS-THAN; \olessthan (stmaryrd) +\DeclareTextCommand{\textolessthan}{PU}{\9051\300}%* U+29C0 +%* \textolessthan -> \varolessthan (stmaryrd) +% U+29C1 CIRCLED GREATER-THAN; \ogreaterthan (stmaryrd) +\DeclareTextCommand{\textogreaterthan}{PU}{\9051\301}%* U+29C1 +%* \textogreaterthan -> \varogreaterthan (stmaryrd) +% U+29C4 SQUARED RISING DIAGONAL SLASH; \boxslash (mathabx, stmaryrd) +\DeclareTextCommand{\textboxslash}{PU}{\9051\304}%* U+29C4 +% U+29C5 SQUARED FALLING DIAGONAL SLASH; \boxbslash (stmaryrd) +\DeclareTextCommand{\textboxbslash}{PU}{\9051\305}%* U+29C5 +% U+29C6 SQUARED ASTERISK; \boxast (stmaryrd) +\DeclareTextCommand{\textboxast}{PU}{\9051\306}%* U+29C6 +% U+29C7 SQUARED SMALL CIRCLE; \boxcircle (stmaryrd) +\DeclareTextCommand{\textboxcircle}{PU}{\9051\307}%* U+29C7 +% U+29C8 SQUARED SQUARE; \boxbox (stmaryrd) +\DeclareTextCommand{\textboxbox}{PU}{\9051\310}%* U+29C8 +% U+29D3 BLACK BOWTIE; \Valve (marvosym) +\DeclareTextCommand{\textValve}{PU}{\9051\323}%* U+29D3 +% U+29DF DOUBLE-ENDED MULTIMAP; \multimapboth (txfonts/pxfonts) +\DeclareTextCommand{\textmultimapboth}{PU}{\9051\337}%* U+29DF +% U+29E2 SHUFFLE PRODUCT; \shuffle (shuffle) +\DeclareTextCommand{\textshuffle}{PU}{\9051\342}%* U+29E2 +% \end{macrocode} +% +% \subsubsection{Supplemental Mathematical Operators: U+2A00 to U+2AFF} +% +% \begin{macrocode} +% U+2A04 N-ARY UNION OPERATOR WITH PLUS; \uplus (LaTeX) +\DeclareTextCommand{\textuplus}{PU}{\9052\004}%* U+2A04 +% U+2A07 TWO LOGICAL AND OPERATOR; \bigdoublewedge (MnSymbol) +\DeclareTextCommand{\textbigdoublewedge}{PU}{\9052\007}%* U+2A07 +% U+2A08 TWO LOGICAL OR OPERATOR; \bigdoublevee (MnSymbol) +\DeclareTextCommand{\textbigdoublevee}{PU}{\9052\010}%* U+2A08 +% U+2A1D JOIN; \Join (latexsym, amsfonts, amssymb, mathabx, txfonts, +% pxfonts, wasysym) +\DeclareTextCommand{\textJoin}{PU}{\9052\035}%* U+2A1D +% U+2A1F Z NOTATION SCHEMA COMPOSITION; \fatsemi (stmaryrd) +\DeclareTextCommand{\textfatsemi}{PU}{\9052\037}%* U+2A1F +% U+2A22 PLUS SIGN WITH SMALL CIRCLE ABOVE; \circplus (mathabx) +\DeclareTextCommand{\textcircplus}{PU}{\9052\042}%* U+2A22 +% U+2A2A MINUS SIGN WITH DOT BELOW; \minusdot (MnSymbol) +\DeclareTextCommand{\textminusdot}{PU}{\9052\052}%* U+2A2A +%* \textminusdot -> \divdot (mathabx) +% U+2A30 MULTIPLICATION SIGN WITH DOT ABOVE; \dottimes (mathabx) +\DeclareTextCommand{\textdottimes}{PU}{\9052\060}%* U+2A30 +% U+2A32 SEMIDIRECT PRODUCT WITH BOTTOM CLOSED; +% \dtimes (mathdesign) +\DeclareTextCommand{\textdtimes}{PU}{\9052\062}%* U+2A32 +% U+2A38 CIRCLED DIVISION SIGN; \odiv (mathabx) +\DeclareTextCommand{\textodiv}{PU}{\9052\070}%* U+2A38 +% U+2A3C INTERIOR PRODUCT; \invneg (MnSymbol) +\DeclareTextCommand{\textinvneg}{PU}{\9052\074}%* U+2A3C +% U+2A4E DOUBLE SQUARE INTERSECTION; \sqdoublecap (mathabx) +\DeclareTextCommand{\textsqdoublecap}{PU}{\9052\116}%* U+2A4E +%* \textsqdoublecap -> \doublesqcap (MnSymbol) +% U+2A40 INTERSECTION WITH DOT; \capdot (MnSymbol) +\DeclareTextCommand{\textcapdot}{PU}{\9052\100}%* U+2A40 +% U+2A4F DOUBLE SQUARE UNION; \sqdoublecup (mathabx) +\DeclareTextCommand{\textsqdoublecup}{PU}{\9052\117}%* U+2A4F +%* \textsqdoublecup -> \doublesqcup (MnSymbol) +% U+2A55 TWO INTERSECTING LOGICAL AND; \doublewedge (MnSymbol) +\DeclareTextCommand{\textdoublewedge}{PU}{\9052\125}%* U+2A55 +% U+2A56 TWO INTERSECTING LOGICAL OR; \doublevee (MnSymbol +\DeclareTextCommand{\textdoublevee}{PU}{\9052\126}%* U+2A56 +%* \textdoublevee -> \merge (stmaryrd) +% U+2A5E LOGICAL AND WITH DOUBLE OVERBAR; +% \doublebarwedge (AmS) +\DeclareTextCommand{\textdoublebarwedge}{PU}{\9052\136}%* U+2A5E +% U+2A63 LOGICAL OR WITH DOUBLE UNDERBAR; +% \veedoublebar (mahtabx) +\DeclareTextCommand{\textveedoublebar}{PU}{\9052\143}%* U+2A63 +% U+2A66 EQUALS SIGN WITH DOT BELOW; \eqdot (MnSymbol) +\DeclareTextCommand{\texteqdot}{PU}{\9052\146}%* U+2A66 +% \neqdot (MnSymbol) +\DeclareTextCommand{\textneqdot}{PU}{\9052\146\83\070}%* U+2A66 U+0338 +% U+2A74 DOUBLE COLON EQUAL; \coloncolonequals (colonequals) +\DeclareTextCommand{\textcoloncolonequals}{PU}{\9052\164}%* U+2A74 +% U+2A7D LESS-THAN OR SLANTED EQUAL TO; \leqslant (AmS) +\DeclareTextCommand{\textleqslant}{PU}{\9052\175}%* U+2A7D +% \nleqslant (txfonts/pxfonts) +\DeclareTextCommand{\textnleqslant}{PU}{\9052\175\83\070}%* U+2A7D U+0338 +% U+2A7E GREATER-THAN OR SLANTED EQUAL TO; \geqslant (AmS) +\DeclareTextCommand{\textgeqslant}{PU}{\9052\176}%* U+2A7E +% \ngeqslang (txfonts/pxfonts) +\DeclareTextCommand{\textngeqslant}{PU}{\9052\176\83\070}%* U+2A7E U+0338 +% U+2A85 LESS-THAN OR APPROXIMATE; \lessapprox (AmS) +\DeclareTextCommand{\textlessapprox}{PU}{\9052\205}%* U+2A85 +% \nlessapprox (txfonts/pxfonts) +\DeclareTextCommand{\textnlessapprox}{PU}{\9052\205\83\070}%* U+2A85 U+0338 +% U+2A86 GREATER-THAN OR APPROXIMATE; \gtrapprox (AmS) +\DeclareTextCommand{\textgtrapprox}{PU}{\9052\206}%* U+2A86 +% \ngtrapprox (txfonts/pxfonts) +\DeclareTextCommand{\textngtrapprox}{PU}{\9052\206\83\070}%* U+2A86 U+0338 +% U+2A87 LESS-THAN AND SINGLE-LINE NOT EQUAL TO; \lneq (AmS) +\DeclareTextCommand{\textlneq}{PU}{\9052\207}%* U+2A87 +% U+2A88 GREATER-THAN AND SINGLE-LINE NOT EQUAL TO; +% \gneq (AmS) +\DeclareTextCommand{\textgneq}{PU}{\9052\210}%* U+2A88 +% U+2A89 LESS-THAN AND NOT APPROXIMATE; \lnapprox (AmS) +\DeclareTextCommand{\textlnapprox}{PU}{\9052\211}%* U+2A89 +% U+2A8A GREATER-THAN AND NOT APPROXIMATE; \gnapprox (AmS) +\DeclareTextCommand{\textgnapprox}{PU}{\9052\212}%* U+2A8A +% U+2A8B LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN; +% \lesseqqgtr (AmS) +\DeclareTextCommand{\textlesseqqgtr}{PU}{\9052\213}%* U+2A8B +% U+2A8C GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN; +% \gtreqqless (AmS) +\DeclareTextCommand{\textgtreqqless}{PU}{\9052\214}%* U+2A8C +% U+2A95 SLANTED EQUAL TO OR LESS-THAN; \eqslantless (AmS) +\DeclareTextCommand{\texteqslantless}{PU}{\9052\225}%* U+2A95 +% U+2A96 SLANTED EQUAL TO OR GREATER-THAN; \eqslantgtr (AmS) +\DeclareTextCommand{\texteqslantgtr}{PU}{\9052\226}%* U+2A96 +% U+2AA6 LESS-THAN CLOSED BY CURVE; \leftslice (stmaryrd) +\DeclareTextCommand{\textleftslice}{PU}{\9052\246}%* U+2AA6 +% U+2AA7 GREATER-THAN CLOSED BY CURVE; \rightslice (stmaryrd) +\DeclareTextCommand{\textrightslice}{PU}{\9052\247}%* U+2AA7 +% U+2AAF PRECEDES ABOVE SINGLE-LINE EQUALS SIGN; \preceq (MnSymbol) +\DeclareTextCommand{\textpreceq}{PU}{\9052\257}%* U+2AAF +% \npreceq (txfonts/pxfonts) +\DeclareTextCommand{\textnpreceq}{PU}{\9052\257\83\070}%* U+2AAF U+0338 +% U+2AB0 SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN; \succeq (MnSymbol) +\DeclareTextCommand{\textsucceq}{PU}{\9052\260}%* U+2AB0 +% \nsucceq (txfonts/pxfonts) +\DeclareTextCommand{\textnsucceq}{PU}{\9052\260\83\070}%* U+2AB0 U+0338 +% U+2AB1 PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO; \precneq (mathabx) +\DeclareTextCommand{\textprecneq}{PU}{\9052\261}%* U+2AB1 +% U+2AB2 SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO; \succneq (mathabx) +\DeclareTextCommand{\textsuccneq}{PU}{\9052\262}%* U+2AB2 +% U+2AB3 PRECEDES ABOVE EQUALS SIGN; \preceqq (txfonts/pxfonts) +\DeclareTextCommand{\textpreceqq}{PU}{\9052\263}%* U+2AB3 +% \npreceqq (txfonts/pxfonts) +\DeclareTextCommand{\textnpreceqq}{PU}{\9052\263\83\070}%* U+2AB3 U+0338 +% U+2AB4 SUCCEEDS ABOVE EQUALS SIGN; \succeqq (txfonts/pxfonts) +\DeclareTextCommand{\textsucceqq}{PU}{\9052\264}%* U+2AB4 +% \nsucceqq (txfonts/pxfonts) +\DeclareTextCommand{\textnsucceqq}{PU}{\9052\264\83\070}%* U+2AB4 U+0338 +% U+2AB5 PRECEDES ABOVE NOT EQUAL TO; \precneqq (txfonts/pxfonts) +\DeclareTextCommand{\textprecneqq}{PU}{\9052\265}%* U+2AB5 +% U+2AB6 SUCCEEDS ABOVE NOT EQUAL TO; \succneqq (txfonts/pxfonts) +\DeclareTextCommand{\textsuccneqq}{PU}{\9052\266}%* U+2AB6 +% U+2AB7 PRECEDES ABOVE ALMOST EQUAL TO; \precapprox (AmS) +\DeclareTextCommand{\textprecapprox}{PU}{\9052\267}%* U+2AB7 +% \nprecapprox (txfonts/pxfonts) +\DeclareTextCommand{\textnprecapprox}{PU}{\9052\267\83\070}%* U+2AB7 U+0338 +% U+2AB8 SUCCEEDS ABOVE ALMOST EQUAL TO; \succapprox (AmS) +\DeclareTextCommand{\textsuccapprox}{PU}{\9052\270}%* U+2AB8 +% \nsuccapprox (txfonts/pxfonts) +\DeclareTextCommand{\textnsuccapprox}{PU}{\9052\270\83\070}%* U+2AB8 U+0338 +% U+2AB9 PRECEDES ABOVE NOT ALMOST EQUAL TO; \precnapprox (AmS) +\DeclareTextCommand{\textprecnapprox}{PU}{\9052\271}%* U+2AB9 +% U+2ABA SUCCEEDS ABOVE NOT ALMOST EQUAL TO; \succnapprox (AmS) +\DeclareTextCommand{\textsuccnapprox}{PU}{\9052\272}%* U+2ABA +% U+2AC5 SUBSET OF ABOVE EQUALS SIGN; \subseteqq (AmS) +\DeclareTextCommand{\textsubseteqq}{PU}{\9052\305}%* U+2AC5 +% \nsubseteqq (txfonts/pxfonts, mathabx) +\DeclareTextCommand{\textnsubseteqq}{PU}{\9052\305\83\070}%* U+2AC5 U+0338 +% U+2AC6 SUPERSET OF ABOVE EQUALS SIGN; \supseteqq (AmS) +\DeclareTextCommand{\textsupseteqq}{PU}{\9052\306}%* U+2AC6 +% \nsupseteqq (mathabx) +\DeclareTextCommand{\textnsupseteqq}{PU}{\9052\306\83\070}%* U+2AC6 U+0338 +% U+2AE3 DOUBLE VERTICAL BAR LEFT TURNSTILE +\DeclareTextCommand{\textdashV}{PU}{\9052\343}%* U+2AE3 +%* \textdashV -> \leftVdash (MnSymbol) +% \ndashV (mathabx) +\DeclareTextCommand{\textndashV}{PU}{\9052\343\83\070}%* U+2AE3 U+0338 +%* \textndashV -> \nleftVdash (MnSymbol) +% U+2AE4 VERTICAL BAR DOUBLE LEFT TURNSTILE; \Dashv (mathabx) +\DeclareTextCommand{\textDashv}{PU}{\9052\344}%* U+2AE4 +%* \textDashv -> \leftmodels (MnSymbol) +% \nDashv (mathabx) +\DeclareTextCommand{\textnDashv}{PU}{\9052\344\83\070}%* U+2AE4 U+0338 +%* \textnDashv -> \nleftmodels (MnSymbol) +% U+2AE5 DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE; +% \DashV (mathabx) +\DeclareTextCommand{\textDashV}{PU}{\9052\345}%* U+2AE5 +%* \textDashV -> \leftModels (MnSymbol) +% \nDashV (mathabx) +\DeclareTextCommand{\textnDashV}{PU}{\9052\345\83\070}%* U+2AE5 U+0338 +%* \textnDashV -> \nleftModels (MnSymbol) +% U+2AEA DOUBLE DOWN TACK; \downmodels (MnSymbol) +\DeclareTextCommand{\textdownmodels}{PU}{\9052\352}%* U+2AEA +% \ndownmodels (MnSymbol) +\DeclareTextCommand{\textndownmodels}{PU}{\9052\352\83\070}%* U+2AEA U+0338 +% U+2AEB DOUBLE UP TACK; \upmodels (MnSymbol) +\DeclareTextCommand{\textupmodels}{PU}{\9052\353}%* U+2AEB +% \nupmodels (MnSymbol) +\DeclareTextCommand{\textnupmodels}{PU}{\9052\353\83\070}%* U+2AEB U+0338 +% U+2AEF VERTICAL LINE WITH CIRCLE ABOVE; \upspoon (MnSymbol) +\DeclareTextCommand{\textupspoon}{PU}{\9052\357}%* U+2AEF +% U+2AF4 TRIPLE VERTICAL BAR BINARY RELATION; +% \interleave (stmaryrd) +\DeclareTextCommand{\textinterleave}{PU}{\9052\364}%* U+2AF4 +% U+2AFD DOUBLE SOLIDUS OPERATOR; \sslash (stmaryrd) +\DeclareTextCommand{\textsslash}{PU}{\9052\375}%* U+2AFD +%* \textsslash -> \varparallel (txfonts\pxfonts) +% \end{macrocode} +% +% \subsubsection{Miscellaneous Symbols and Arrows: U+2B00 to U+2BFF} +% +% \begin{macrocode} +% U+2B20 WHITE PENTAGON; \pentagon (wasysym) +\DeclareTextCommand{\textpentagon}{PU}{\9053\040}%* U+2B20 +% U+2B21 WHITE HEXAGON; \varhexagon (wasysym) +\DeclareTextCommand{\textvarhexagon}{PU}{\9053\041}%* U+2B21 +% \end{macrocode} +% +% \subsubsection{Latin Extended-C: U+2C60 to U+2C7F} +% +% \begin{macrocode} +% U+2C7C LATIN SUBSCRIPT SMALL LETTER J +\DeclareTextCommand{\textjinferior}{PU}{\9054\174}%* U+2C7C +% \end{macrocode} +% +% \subsubsection{Supplemental Punctuation: U+2E00 to U+2E7F} +% +% \begin{macrocode} +% U+2E13 DOTTED OBELOS; \slashdiv (MnSymbol) +\DeclareTextCommand{\textslashdiv}{PU}{\9056\023}%* U+2E13 +% U+2E18 INVERTED INTERROBANG; \textinterrobangdown (textcomp) +\DeclareTextCommand{\textinterrobangdown}{PU}{\9056\030}% U+2E18 +% U+2E2D FIVE DOT MARK; \fivedots (MnSymbol) +\DeclareTextCommand{\textfivedots}{PU}{\9056\055}%* U+2E2D +% \end{macrocode} +% +% \subsubsection{Modifier Tone Letters: U+A700 to U+A71F} +% +% \begin{macrocode} +% U+A71B MODIFIER LETTER RAISED UP ARROW; \textupstep (tipa) +\DeclareTextCommand{\textupstep}{PU}{\9247\033}% U+A71B +% U+A71C MODIFIER LETTER RAISED DOWN ARROW; +% \textdownstep (tipa) +\DeclareTextCommand{\textdownstep}{PU}{\9247\034}% U+A71C +% \end{macrocode} +% +% \subsubsection{Latin Extended-D: U+A720 to U+A7FF} +% +% \begin{macrocode} +% U+A727 LATIN SMALL LETTER HENG; \textheng (tipx) +\DeclareTextCommand{\textPUheng}{PU}{\9247\047}% U+A727 +%* \textPUheng -> \textheng (tipx) +% U+A72C LATIN CAPITAL LETTER CUATRILLO; \textlhookfour (tipx) +\DeclareTextCommand{\textPUlhookfour}{PU}{\9247\054}% U+A72C +%* \textPUlhookfour -> \textlhookfour (tipx) +% U+A730 LATIN LETTER SMALL CAPITAL F; \textscf (tipx) +\DeclareTextCommand{\textPUscf}{PU}{\9247\060}% U+A730 +%* \textPUscf -> \textscf (tipx) +% U+A735 LATIN SMALL LETTER AO; \textaolig (tipx) +\DeclareTextCommand{\textPUaolig}{PU}{\9247\065}% U+A735 +%* \textPUaolig -> \textaolig (tipx) +% U+A74F LATIN SMALL LETTER OO; \oo (wsuipa) +\DeclareTextCommand{\textoo}{PU}{\9247\117}%* U+A74F +% U+A788 MODIFIER LETTER LOW CIRCUMFLEX ACCENT +\DeclareTextCommand{\textcircumlow}{PU}{\9247\210}% U+A788 +% \end{macrocode} +% +% \subsubsection{Alphabetic Presentation Forms: U+FB00 to U+FB4F} +% +% \begin{macrocode} +% U+FB01 LATIN SMALL LIGATURE FI; fi +\DeclareTextCommand{\textfi}{PU}{\9373\001}% U+FB01 +% U+FB02 LATIN SMALL LIGATURE FL; fl +\DeclareTextCommand{\textfl}{PU}{\9373\002}% U+FB02 +% \end{macrocode} +% +% \subsubsection{Musical Symbols: U+1D100 to U+1D1FF} +% +% \begin{macrocode} +% U+1D13B MUSICAL SYMBOL WHOLE REST; \GaPa (harmony) +\DeclareTextCommand{\textGaPa}{PU}{\9330\064\9335\073}%* U+1D13B +% U+1D13C MUSICAL SYMBOL HALF REST; \HaPa (harmony) +\DeclareTextCommand{\textHaPa}{PU}{\9330\064\9335\074}%* U+1D13C +% U+1D13D MUSICAL SYMBOL QUARTER REST; \ViPa (harmony) +\DeclareTextCommand{\textViPa}{PU}{\9330\064\9335\075}%* U+1D13D +% U+1D13E MUSICAL SYMBOL EIGHTH REST; \AcPa (harmony) +\DeclareTextCommand{\textAcPa}{PU}{\9330\064\9335\076}%* U+1D13E +% U+1D13F MUSICAL SYMBOL SIXTEENTH REST; \SePa (harmony) +\DeclareTextCommand{\textSePa}{PU}{\9330\064\9335\077}%* U+1D13F +% U+1D140 MUSICAL SYMBOL THIRTY-SECOND REST; \ZwPa (harmony) +\DeclareTextCommand{\textZwPa}{PU}{\9330\064\9335\100}%* U+1D140 +% U+1D15D MUSICAL SYMBOL WHOLE NOTE; \fullnote (wasysym) +\DeclareTextCommand{\textfullnote}{PU}{\9330\064\9335\135}%* U+1D15D +%* \textfullnote -> \Ganz (harmony) +% U+1D15E MUSICAL SYMBOL HALF NOTE; \halfnote (wasysym) +\DeclareTextCommand{\texthalfnote}{PU}{\9330\064\9335\136}%* U+1D15E +%* \texthalfnote -> \Halb (harmony) +% U+1D15F MUSICAL SYMBOL QUARTER NOTE; \Vier (harmony) +\DeclareTextCommand{\textVier}{PU}{\9330\064\9335\137}%* U+1D15F +% U+1D160 MUSICAL SYMBOL EIGHTH NOTE; \Acht (harmony) +\DeclareTextCommand{\textAcht}{PU}{\9330\064\9335\140}%* U+1D160 +% U+1D161 MUSICAL SYMBOL SIXTEENTH NOTE; \Sech (harmony) +\DeclareTextCommand{\textSech}{PU}{\9330\064\9335\141}%* U+1D161 +% U+1D162 MUSICAL SYMBOL THIRTY-SECOND NOTE; \Zwdr (harmony) +\DeclareTextCommand{\textZwdr}{PU}{\9330\064\9335\142}%* U+1D162 +% \end{macrocode} +% +% \subsubsection{Miscellaneous Symbols and Pictographs: U+1F300 to U+1F5FF} +% +% \begin{macrocode} +% U+1F30D EARTH GLOBE EUROPE-AFRICA; \Mundus (marvosym) +\DeclareTextCommand{\textMundus}{PU}{\9330\074\9337\015}%* U+1F30D +% U+1F319 CRESCENT MOON; \Moon (marvosym) +\DeclareTextCommand{\textMoon}{PU}{\9330\074\9337\031}%* U+1F319 +% U+1F468 MAN; \ManFace (marvosym) +\DeclareTextCommand{\textManFace}{PU}{\9330\075\9334\150}%* U+1F468 +% U+1F469 WOMAN; \WomanFace (marvosym) +\DeclareTextCommand{\textWomanFace}{PU}{\9330\075\9334\151}%* U+1F469 +%* \textWomanFace -> \Womanface (marvosym) +% U+1F4E0 FAX MACHINE; \Fax (marvosym) +\DeclareTextCommand{\textFax}{PU}{\9330\075\9334\340}%* U+1F4E0 +%* \textFax -> \Faxmachine (marvosym) +% U+1F525 FIRE; \Fire (ifsym) +\DeclareTextCommand{\textFire}{PU}{\9330\075\9335\045}%* U+1F525 +% \end{macrocode} +% +% \subsubsection{Transport and Map Symbols: U+1F680 to U+1F6FF} +% +% \begin{macrocode} +% U+1F6B2 BICYCLE; \Bicycle (marvosym) +\DeclareTextCommand{\textBicycle}{PU}{\9330\075\9336\262}%* U+1F6B2 +% U+1F6B9 MENS SYMBOL; \Gentsroom (marvosym) +\DeclareTextCommand{\textGentsroom}{PU}{\9330\075\9336\271}%* U+1F6B9 +% U+1F6BA WOMENS SYMBOL; \Ladiesroom (marvosym) +\DeclareTextCommand{\textLadiesroom}{PU}{\9330\075\9336\272}%* U+1F6BA +% \end{macrocode} +% +% \subsubsection{Miscellaneous} +% +% \begin{macrocode} +\DeclareTextCommand{\SS}{PU}{SS}% +% \textcopyleft (textcomp) +\DeclareTextCommand{\textcopyleft}{PU}{\9041\204\9040\335}% U+2184 U+20DD +% \ccnc (cclicenses) +\DeclareTextCommand{\textccnc}{PU}{\80\044\9040\340}%* U+0024 U+20E0 +% \ccnd (cclicenses) +\DeclareTextCommand{\textccnd}{PU}{=\9040\335}%* U+003D U+20DD +% \ccsa (cclicenses) +\DeclareTextCommand{\textccsa}{PU}{\9047\362\9040\335}%* U+27F2 U+20DD +% \Info (marvosym, china2e) +\DeclareTextCommand{\textInfo}{PU}{\9330\065\9334\042\9040\336}%* U+1D422 U+20DE +% \CESign (marvosym) +\DeclareTextCommand{\textCESign}{PU}{\80\103\80\105}%* U+0043 U+0045 +%* \textCESign -> \CEsign (marvosym) +% \end{macrocode} +% +% \subsubsection{Aliases} +% +% Aliases (german.sty) +% \begin{macrocode} +\DeclareTextCommand{\textglqq}{PU}{\quotedblbase}% +\DeclareTextCommand{\textgrqq}{PU}{\textquotedblleft}% +\DeclareTextCommand{\textglq}{PU}{\quotesinglbase}% +\DeclareTextCommand{\textgrq}{PU}{\textquoteleft}% +\DeclareTextCommand{\textflqq}{PU}{\guillemotleft}% +\DeclareTextCommand{\textfrqq}{PU}{\guillemotright}% +\DeclareTextCommand{\textflq}{PU}{\guilsinglleft}% +\DeclareTextCommand{\textfrq}{PU}{\guilsinglright}% +% \end{macrocode} +% Aliases (math names) +% \begin{macrocode} +\DeclareTextCommand{\textneg}{PU}{\textlogicalnot}%* +\DeclareTextCommand{\texttimes}{PU}{\textmultiply}%* +\DeclareTextCommand{\textdiv}{PU}{\textdivide}%* +\DeclareTextCommand{\textpm}{PU}{\textplusminus}%* +\DeclareTextCommand{\textcdot}{PU}{\textperiodcentered}%* +% \end{macrocode} +% +% \begin{macrocode} +%</puenc> +% \end{macrocode} +% +% \subsection{PU encoding, additions for Vn\TeX} +% +% This file is provided by Han The Thanh. +% +% \begin{macrocode} +%<*puvnenc> +% \end{macrocode} +% \begin{macrocode} +\DeclareTextCommand{\abreve}{PU}{\81\003}% U+0103 +\DeclareTextCommand{\acircumflex}{PU}{\80\342}% U+00E2 +\DeclareTextCommand{\ecircumflex}{PU}{\80\352}% U+00EA +\DeclareTextCommand{\ocircumflex}{PU}{\80\364}% U+00F4 +\DeclareTextCommand{\ohorn}{PU}{\81\241}% U+01A1 +\DeclareTextCommand{\uhorn}{PU}{\81\260}% U+01B0 +\DeclareTextCommand{\ABREVE}{PU}{\81\002}% U+0102 +\DeclareTextCommand{\ACIRCUMFLEX}{PU}{\80\302}% U+00C2 +\DeclareTextCommand{\ECIRCUMFLEX}{PU}{\80\312}% U+00CA +\DeclareTextCommand{\OCIRCUMFLEX}{PU}{\80\324}% U+00D4 +\DeclareTextCommand{\OHORN}{PU}{\81\240}% U+01A0 +\DeclareTextCommand{\UHORN}{PU}{\81\257}% U+01AF +% \end{macrocode} +% \begin{macrocode} +\DeclareTextCompositeCommand{\'}{PU}{a}{\80\341}% U+00E1 +\DeclareTextCompositeCommand{\d}{PU}{a}{\9036\241}% U+1EA1 +\DeclareTextCompositeCommand{\`}{PU}{a}{\80\340}% U+00E0 +\DeclareTextCompositeCommand{\h}{PU}{a}{\9036\243}% U+1EA3 +\DeclareTextCompositeCommand{\~}{PU}{a}{\80\343}% U+00E3 +\DeclareTextCompositeCommand{\'}{PU}{\abreve}{\9036\257}% U+1EAF +\DeclareTextCompositeCommand{\d}{PU}{\abreve}{\9036\267}% U+1EB7 +\DeclareTextCompositeCommand{\`}{PU}{\abreve}{\9036\261}% U+1EB1 +\DeclareTextCompositeCommand{\h}{PU}{\abreve}{\9036\263}% U+1EB3 +\DeclareTextCompositeCommand{\~}{PU}{\abreve}{\9036\265}% U+1EB5 +\DeclareTextCompositeCommand{\'}{PU}{\acircumflex}{\9036\245}% U+1EA5 +\DeclareTextCompositeCommand{\d}{PU}{\acircumflex}{\9036\255}% U+1EAD +\DeclareTextCompositeCommand{\`}{PU}{\acircumflex}{\9036\247}% U+1EA7 +\DeclareTextCompositeCommand{\h}{PU}{\acircumflex}{\9036\251}% U+1EA9 +\DeclareTextCompositeCommand{\~}{PU}{\acircumflex}{\9036\253}% U+1EAB +\DeclareTextCompositeCommand{\'}{PU}{e}{\80\351}% U+00E9 +\DeclareTextCompositeCommand{\d}{PU}{e}{\9036\271}% U+1EB9 +\DeclareTextCompositeCommand{\`}{PU}{e}{\80\350}% U+00E8 +\DeclareTextCompositeCommand{\h}{PU}{e}{\9036\273}% U+1EBB +\DeclareTextCompositeCommand{\~}{PU}{e}{\9036\275}% U+1EBD +\DeclareTextCompositeCommand{\'}{PU}{\ecircumflex}{\9036\277}% U+1EBF +\DeclareTextCompositeCommand{\d}{PU}{\ecircumflex}{\9036\307}% U+1EC7 +\DeclareTextCompositeCommand{\`}{PU}{\ecircumflex}{\9036\301}% U+1EC1 +\DeclareTextCompositeCommand{\h}{PU}{\ecircumflex}{\9036\303}% U+1EC3 +\DeclareTextCompositeCommand{\~}{PU}{\ecircumflex}{\9036\305}% U+1EC5 +\DeclareTextCompositeCommand{\'}{PU}{i}{\80\355}% U+00ED +\DeclareTextCompositeCommand{\d}{PU}{i}{\9036\313}% U+1ECB +\DeclareTextCompositeCommand{\`}{PU}{i}{\80\354}% U+00EC +\DeclareTextCompositeCommand{\h}{PU}{i}{\9036\311}% U+1EC9 +\DeclareTextCompositeCommand{\~}{PU}{i}{\81\051}% U+0129 +\DeclareTextCompositeCommand{\'}{PU}{o}{\80\363}% U+00F3 +\DeclareTextCompositeCommand{\d}{PU}{o}{\9036\315}% U+1ECD +\DeclareTextCompositeCommand{\`}{PU}{o}{\80\362}% U+00F2 +\DeclareTextCompositeCommand{\h}{PU}{o}{\9036\317}% U+1ECF +\DeclareTextCompositeCommand{\~}{PU}{o}{\80\365}% U+00F5 +\DeclareTextCompositeCommand{\'}{PU}{\ocircumflex}{\9036\321}% U+1ED1 +\DeclareTextCompositeCommand{\d}{PU}{\ocircumflex}{\9036\331}% U+1ED9 +\DeclareTextCompositeCommand{\`}{PU}{\ocircumflex}{\9036\323}% U+1ED3 +\DeclareTextCompositeCommand{\h}{PU}{\ocircumflex}{\9036\325}% U+1ED5 +\DeclareTextCompositeCommand{\~}{PU}{\ocircumflex}{\9036\327}% U+1ED7 +\DeclareTextCompositeCommand{\'}{PU}{\ohorn}{\9036\333}% U+1EDB +\DeclareTextCompositeCommand{\d}{PU}{\ohorn}{\9036\343}% U+1EE3 +\DeclareTextCompositeCommand{\`}{PU}{\ohorn}{\9036\335}% U+1EDD +\DeclareTextCompositeCommand{\h}{PU}{\ohorn}{\9036\337}% U+1EDF +\DeclareTextCompositeCommand{\~}{PU}{\ohorn}{\9036\341}% U+1EE1 +\DeclareTextCompositeCommand{\'}{PU}{u}{\80\372}% U+00FA +\DeclareTextCompositeCommand{\d}{PU}{u}{\9036\345}% U+1EE5 +\DeclareTextCompositeCommand{\`}{PU}{u}{\80\371}% U+00F9 +\DeclareTextCompositeCommand{\h}{PU}{u}{\9036\347}% U+1EE7 +\DeclareTextCompositeCommand{\~}{PU}{u}{\81\151}% U+0169 +\DeclareTextCompositeCommand{\'}{PU}{\uhorn}{\9036\351}% U+1EE9 +\DeclareTextCompositeCommand{\d}{PU}{\uhorn}{\9036\361}% U+1EF1 +\DeclareTextCompositeCommand{\`}{PU}{\uhorn}{\9036\353}% U+1EEB +\DeclareTextCompositeCommand{\h}{PU}{\uhorn}{\9036\355}% U+1EED +\DeclareTextCompositeCommand{\~}{PU}{\uhorn}{\9036\357}% U+1EEF +\DeclareTextCompositeCommand{\'}{PU}{y}{\80\375}% U+00FD +\DeclareTextCompositeCommand{\d}{PU}{y}{\9036\365}% U+1EF5 +\DeclareTextCompositeCommand{\`}{PU}{y}{\9036\363}% U+1EF3 +\DeclareTextCompositeCommand{\h}{PU}{y}{\9036\367}% U+1EF7 +\DeclareTextCompositeCommand{\~}{PU}{y}{\9036\371}% U+1EF9 +\DeclareTextCompositeCommand{\'}{PU}{A}{\80\301}% U+00C1 +\DeclareTextCompositeCommand{\d}{PU}{A}{\9036\240}% U+1EA0 +\DeclareTextCompositeCommand{\`}{PU}{A}{\80\300}% U+00C0 +\DeclareTextCompositeCommand{\h}{PU}{A}{\9036\242}% U+1EA2 +\DeclareTextCompositeCommand{\~}{PU}{A}{\80\303}% U+00C3 +\DeclareTextCompositeCommand{\'}{PU}{\ABREVE}{\9036\256}% U+1EAE +\DeclareTextCompositeCommand{\d}{PU}{\ABREVE}{\9036\266}% U+1EB6 +\DeclareTextCompositeCommand{\`}{PU}{\ABREVE}{\9036\260}% U+1EB0 +\DeclareTextCompositeCommand{\h}{PU}{\ABREVE}{\9036\262}% U+1EB2 +\DeclareTextCompositeCommand{\~}{PU}{\ABREVE}{\9036\264}% U+1EB4 +\DeclareTextCompositeCommand{\'}{PU}{\ACIRCUMFLEX}{\9036\244}% U+1EA4 +\DeclareTextCompositeCommand{\d}{PU}{\ACIRCUMFLEX}{\9036\254}% U+1EAC +\DeclareTextCompositeCommand{\`}{PU}{\ACIRCUMFLEX}{\9036\246}% U+1EA6 +\DeclareTextCompositeCommand{\h}{PU}{\ACIRCUMFLEX}{\9036\250}% U+1EA8 +\DeclareTextCompositeCommand{\~}{PU}{\ACIRCUMFLEX}{\9036\252}% U+1EAA +\DeclareTextCompositeCommand{\'}{PU}{E}{\80\311}% U+00C9 +\DeclareTextCompositeCommand{\d}{PU}{E}{\9036\270}% U+1EB8 +\DeclareTextCompositeCommand{\`}{PU}{E}{\80\310}% U+00C8 +\DeclareTextCompositeCommand{\h}{PU}{E}{\9036\272}% U+1EBA +\DeclareTextCompositeCommand{\~}{PU}{E}{\9036\274}% U+1EBC +\DeclareTextCompositeCommand{\'}{PU}{\ECIRCUMFLEX}{\9036\276}% U+1EBE +\DeclareTextCompositeCommand{\d}{PU}{\ECIRCUMFLEX}{\9036\306}% U+1EC6 +\DeclareTextCompositeCommand{\`}{PU}{\ECIRCUMFLEX}{\9036\300}% U+1EC0 +\DeclareTextCompositeCommand{\h}{PU}{\ECIRCUMFLEX}{\9036\302}% U+1EC2 +\DeclareTextCompositeCommand{\~}{PU}{\ECIRCUMFLEX}{\9036\304}% U+1EC4 +\DeclareTextCompositeCommand{\'}{PU}{I}{\80\315}% U+00CD +\DeclareTextCompositeCommand{\d}{PU}{I}{\9036\312}% U+1ECA +\DeclareTextCompositeCommand{\`}{PU}{I}{\80\314}% U+00CC +\DeclareTextCompositeCommand{\h}{PU}{I}{\9036\310}% U+1EC8 +\DeclareTextCompositeCommand{\~}{PU}{I}{\81\050}% U+0128 +\DeclareTextCompositeCommand{\'}{PU}{O}{\80\323}% U+00D3 +\DeclareTextCompositeCommand{\d}{PU}{O}{\9036\314}% U+1ECC +\DeclareTextCompositeCommand{\`}{PU}{O}{\80\322}% U+00D2 +\DeclareTextCompositeCommand{\h}{PU}{O}{\9036\316}% U+1ECE +\DeclareTextCompositeCommand{\~}{PU}{O}{\80\325}% U+00D5 +\DeclareTextCompositeCommand{\'}{PU}{\OCIRCUMFLEX}{\9036\320}% U+1ED0 +\DeclareTextCompositeCommand{\d}{PU}{\OCIRCUMFLEX}{\9036\330}% U+1ED8 +\DeclareTextCompositeCommand{\`}{PU}{\OCIRCUMFLEX}{\9036\322}% U+1ED2 +\DeclareTextCompositeCommand{\h}{PU}{\OCIRCUMFLEX}{\9036\324}% U+1ED4 +\DeclareTextCompositeCommand{\~}{PU}{\OCIRCUMFLEX}{\9036\326}% U+1ED6 +\DeclareTextCompositeCommand{\'}{PU}{\OHORN}{\9036\332}% U+1EDA +\DeclareTextCompositeCommand{\d}{PU}{\OHORN}{\9036\342}% U+1EE2 +\DeclareTextCompositeCommand{\`}{PU}{\OHORN}{\9036\334}% U+1EDC +\DeclareTextCompositeCommand{\h}{PU}{\OHORN}{\9036\336}% U+1EDE +\DeclareTextCompositeCommand{\~}{PU}{\OHORN}{\9036\340}% U+1EE0 +\DeclareTextCompositeCommand{\'}{PU}{U}{\80\332}% U+00DA +\DeclareTextCompositeCommand{\d}{PU}{U}{\9036\344}% U+1EE4 +\DeclareTextCompositeCommand{\`}{PU}{U}{\80\331}% U+00D9 +\DeclareTextCompositeCommand{\h}{PU}{U}{\9036\346}% U+1EE6 +\DeclareTextCompositeCommand{\~}{PU}{U}{\81\150}% U+0168 +\DeclareTextCompositeCommand{\'}{PU}{\UHORN}{\9036\350}% U+1EE8 +\DeclareTextCompositeCommand{\d}{PU}{\UHORN}{\9036\360}% U+1EF0 +\DeclareTextCompositeCommand{\`}{PU}{\UHORN}{\9036\352}% U+1EEA +\DeclareTextCompositeCommand{\h}{PU}{\UHORN}{\9036\354}% U+1EEC +\DeclareTextCompositeCommand{\~}{PU}{\UHORN}{\9036\356}% U+1EEE +\DeclareTextCompositeCommand{\'}{PU}{Y}{\80\335}% U+00DD +\DeclareTextCompositeCommand{\d}{PU}{Y}{\9036\364}% U+1EF4 +\DeclareTextCompositeCommand{\`}{PU}{Y}{\9036\362}% U+1EF2 +\DeclareTextCompositeCommand{\h}{PU}{Y}{\9036\366}% U+1EF6 +\DeclareTextCompositeCommand{\~}{PU}{Y}{\9036\370}% U+1EF8 +% \end{macrocode} +% \begin{macrocode} +%</puvnenc> +% \end{macrocode} +% +% \subsection{PU encoding, additions for Arabi} +% +% This file is provided and maintained by Youssef Jabri. +% +% \begin{macrocode} +%<*puarenc> +% \end{macrocode} +% \begin{macrocode} +% U+0621;afii57409;ARABIC LETTER HAMZA +\DeclareTextCommand{\hamza}{PU}{\86\041}% U+0621 +% U+0622;afii57410;ARABIC LETTER ALEF WITH MADDA ABOVE +\DeclareTextCommand{\alefmadda}{PU}{\86\042}% U+0622 +% U+0623;afii57411;ARABIC LETTER ALEF WITH HAMZA ABOVE +\DeclareTextCommand{\alefhamza}{PU}{\86\043}% U+0623 +% U+0624;afii57412;ARABIC LETTER WAW WITH HAMZA ABOVE +\DeclareTextCommand{\wawhamza}{PU}{\86\044}% U+0624 +% U+0625;afii57413;ARABIC LETTER ALEF WITH HAMZA BELOW +\DeclareTextCommand{\aleflowerhamza}{PU}{\86\045}% U+0625 +% U+0626;afii57414;ARABIC LETTER YEH WITH HAMZA ABOVE +\DeclareTextCommand{\yahamza}{PU}{\86\046}% U+0626 +% U+0627;afii57415;ARABIC LETTER ALEF +\DeclareTextCommand{\alef}{PU}{\86\047}% U+0627 +% U+0628;afii57416;ARABIC LETTER BEH +\DeclareTextCommand{\baa}{PU}{\86\050}% U+0628 +% U+0629;afii57417;ARABIC LETTER TEH MARBUTA +\DeclareTextCommand{\T}{PU}{\86\051}% U+0629 +% U+062A;afii57418;ARABIC LETTER TEH +\DeclareTextCommand{\taa}{PU}{\86\052}% U+062A +% U+062B;afii57419;ARABIC LETTER THEH +\DeclareTextCommand{\thaa}{PU}{\86\053}% U+062B +% U+062C;afii57420;ARABIC LETTER JEEM +\DeclareTextCommand{\jeem}{PU}{\86\054}% U+062C +% U+062D;afii57421;ARABIC LETTER HAH +\DeclareTextCommand{\Haa}{PU}{\86\055}% U+062D +% U+062E;afii57422;ARABIC LETTER KHAH +\DeclareTextCommand{\kha}{PU}{\86\056}% U+062E +% U+062F;afii57423;ARABIC LETTER DAL +\DeclareTextCommand{\dal}{PU}{\86\057}% U+062F +% U+0630;afii57424;ARABIC LETTER THAL +\DeclareTextCommand{\dhal}{PU}{\86\060}% U+0630 +% U+0631;afii57425;ARABIC LETTER REH +\DeclareTextCommand{\ra}{PU}{\86\061}% U+0631 +% U+0632;afii57426;ARABIC LETTER ZAIN +\DeclareTextCommand{\zay}{PU}{\86\062}% U+0632 +% U+0633;afii57427;ARABIC LETTER SEEN +\DeclareTextCommand{\seen}{PU}{\86\063}% U+0633 +% U+0634;afii57428;ARABIC LETTER SHEEN +\DeclareTextCommand{\sheen}{PU}{\86\064}% U+0634 +% U+0635;afii57429;ARABIC LETTER SAD +\DeclareTextCommand{\sad}{PU}{\86\065}% U+0635 +% U+0636;afii57430;ARABIC LETTER DAD +\DeclareTextCommand{\dad}{PU}{\86\066}% U+0636 +% U+0637;afii57431;ARABIC LETTER TAH +\DeclareTextCommand{\Ta}{PU}{\86\067}% U+0637 +% U+0638;afii57432;ARABIC LETTER ZAH +\DeclareTextCommand{\za}{PU}{\86\070}% U+0638 +% U+0639;afii57433;ARABIC LETTER AIN +\DeclareTextCommand{\ayn}{PU}{\86\071}% U+0639 +% U+063A;afii57434;ARABIC LETTER GHAIN +\DeclareTextCommand{\ghayn}{PU}{\86\072}% U+063A +% U+0640;afii57440;ARABIC TATWEEL +\DeclareTextCommand{\tatweel}{PU}{\86\100}% U+0640 +% U+0641;afii57441;ARABIC LETTER FEH +\DeclareTextCommand{\fa}{PU}{\86\101}% U+0641 +% U+0642;afii57442;ARABIC LETTER QAF +\DeclareTextCommand{\qaf}{PU}{\86\102}% U+0642 +% U+0643;afii57443;ARABIC LETTER KAF +\DeclareTextCommand{\kaf}{PU}{\86\103}% U+0643 +% U+0644;afii57444;ARABIC LETTER LAM +\DeclareTextCommand{\lam}{PU}{\86\104}% U+0644 +% U+0645;afii57445;ARABIC LETTER MEEM +\DeclareTextCommand{\meem}{PU}{\86\105}% U+0645 +% U+0646;afii57446;ARABIC LETTER NOON +\DeclareTextCommand{\nun}{PU}{\86\106}% U+0646 +% U+0647;afii57470;ARABIC LETTER HEH +\DeclareTextCommand{\ha}{PU}{\86\107}% U+0647 +% U+0648;afii57448;ARABIC LETTER WAW +\DeclareTextCommand{\waw}{PU}{\86\110}% U+0648 +% U+0649;afii57449;ARABIC LETTER ALEF MAKSURA +\DeclareTextCommand{\alefmaqsura}{PU}{\86\111}% U+0649 +% U+064A;afii57450;ARABIC LETTER YEH +\DeclareTextCommand{\ya}{PU}{\86\112}% U+064A +% \end{macrocode} +% \begin{macrocode} +% U+064B;afii57451;ARABIC FATHATAN +\DeclareTextCommand{\nasb}{PU}{\86\113}% U+064B +% U+064C;afii57452;ARABIC DAMMATAN +\DeclareTextCommand{\raff}{PU}{\86\114}% U+064C +% U+064D;afii57453;ARABIC KASRATAN +\DeclareTextCommand{\jarr}{PU}{\86\115}% U+064D +% U+064E;afii57454;ARABIC FATHA +\DeclareTextCommand{\fatha}{PU}{\86\116}% U+064E +% U+064F;afii57455;ARABIC DAMMA +\DeclareTextCommand{\damma}{PU}{\86\117}% U+064F +% U+0650;afii57456;ARABIC KASRA +\DeclareTextCommand{\kasra}{PU}{\86\120}% U+0650 +% U+0651;afii57457;ARABIC SHADDA +\DeclareTextCommand{\shadda}{PU}{\86\121}% U+0651 +% U+0652;afii57458;ARABIC SUKUN +\DeclareTextCommand{\sukun}{PU}{\86\122}% U+0652 +% \end{macrocode} +% Farsi +% \begin{macrocode} +% U+067E ARABIC LETTER PEH; afii57506 +\DeclareTextCommand{\peh}{PU}{\86\176}% U+067E +% U+0686 ARABIC LETTER TCHEH; afii57507 +\DeclareTextCommand{\tcheh}{PU}{\86\206}% U+0686 +% U+0698 ARABIC LETTER JEH; afii57508 +\DeclareTextCommand{\jeh}{PU}{\86\230}% U+0698 +% U+06A9 ARABIC LETTER KEHEH +\DeclareTextCommand{\farsikaf}{PU}{\86\251}% U+06A9 +% U+06AF ARABIC LETTER GAF; afii57509 +\DeclareTextCommand{\gaf}{PU}{\86\257}% U+06AF +% U+06CC ARABIC LETTER FARSI YEH +\DeclareTextCommand{\farsiya}{PU}{\86\314}% U+06CC +% \end{macrocode} +% \begin{macrocode} +% U+200C ZERO WIDTH NON-JOINER; afii61664 +\DeclareTextCommand{\ZWNJ}{PU}{\9040\014}% U+200C +% U+200D ZERO WIDTH JOINER; afii301 +\DeclareTextCommand{\textEncodingNoboundary}{PU}{\9040\015}% U+200D +% \end{macrocode} +% \begin{macrocode} +%</puarenc> +% \end{macrocode} +% +% \begin{macrocode} +%<*psdextra> +\Hy@VersionCheck{psdextra.def} +\newcommand*{\psdmapshortnames}{% + \let\MVPlus\textMVPlus + \let\MVComma\textMVComma + \let\MVMinus\textMVMinus + \let\MVPeriod\textMVPeriod + \let\MVDivision\textMVDivision + \let\MVZero\textMVZero + \let\MVOne\textMVOne + \let\MVTwo\textMVTwo + \let\MVThree\textMVThree + \let\MVFour\textMVFour + \let\MVFive\textMVFive + \let\MVSix\textMVSix + \let\MVSeven\textMVSeven + \let\MVEight\textMVEight + \let\MVNine\textMVNine + \let\MVAt\textMVAt + \let\copyright\textcopyright + \let\twosuperior\texttwosuperior + \let\threesuperior\textthreesuperior + \let\onesuperior\textonesuperior + \let\Thorn\textThorn + \let\thorn\textthorn + \let\hbar\texthbar + \let\hausaB\texthausaB + \let\hausaD\texthausaD + \let\hausaK\texthausaK + \let\barl\textbarl + \let\inve\textinve + \let\slashc\textslashc + \let\scripta\textscripta + \let\openo\textopeno + \let\rtaild\textrtaild + \let\reve\textreve + \let\schwa\textschwa + \let\niepsilon\textniepsilon + \let\revepsilon\textrevepsilon + \let\rhookrevepsilon\textrhookrevepsilon + \let\scriptg\textscriptg + \let\scg\textscg + \let\ipagamma\textipagamma + \let\babygamma\textbabygamma + \let\bari\textbari + \let\niiota\textniiota + \let\sci\textsci + \let\scn\textscn + \let\niphi\textniphi + \let\longlegr\textlonglegr + \let\scr\textscr + \let\invscr\textinvscr + \let\esh\textesh + \let\baru\textbaru + \let\niupsilon\textniupsilon + \let\scriptv\textscriptv + \let\turnv\textturnv + \let\turnw\textturnw + \let\turny\textturny + \let\scy\textscy + \let\yogh\textyogh + \let\glotstop\textglotstop + \let\revglotstop\textrevglotstop + \let\invglotstop\textinvglotstop + \let\Gamma\textGamma + \let\Delta\textDelta + \let\Theta\textTheta + \let\Lambda\textLambda + \let\Xi\textXi + \let\Pi\textPi + \let\Sigma\textSigma + \let\Upsilon\textUpsilon + \let\Phi\textPhi + \let\Psi\textPsi + \let\Omega\textOmega + \let\alpha\textalpha + \let\beta\textbeta + \let\gamma\textgamma + \let\delta\textdelta + \let\epsilon\textepsilon + \let\zeta\textzeta + \let\eta\texteta + \let\theta\texttheta + \let\iota\textiota + \let\kappa\textkappa + \let\lambda\textlambda + \let\mu\textmu + \let\mugreek\textmugreek + \let\nu\textnu + \let\xi\textxi + \let\pi\textpi + \let\rho\textrho + \let\varsigma\textvarsigma + \let\sigma\textsigma + \let\tau\texttau + \let\upsilon\textupsilon + \let\phi\textphi + \let\chi\textchi + \let\psi\textpsi + \let\omega\textomega + \let\scd\textscd + \let\scu\textscu + \let\iinferior\textiinferior + \let\rinferior\textrinferior + \let\uinferior\textuinferior + \let\vinferior\textvinferior + \let\betainferior\textbetainferior + \let\gammainferior\textgammainferior + \let\rhoinferior\textrhoinferior + \let\phiinferior\textphiinferior + \let\chiinferior\textchiinferior + \let\barsci\textbarsci + \let\barp\textbarp + \let\barscu\textbarscu + \let\htrtaild\texthtrtaild + \let\dagger\textdagger + \let\bullet\textbullet + \let\hdotfor\texthdotfor + \let\prime\textprime + \let\second\textsecond + \let\third\textthird + \let\backprime\textbackprime + \let\lefttherefore\textlefttherefore + \let\fourth\textfourth + \let\diamonddots\textdiamonddots + \let\zerosuperior\textzerosuperior + \let\isuperior\textisuperior + \let\foursuperior\textfoursuperior + \let\fivesuperior\textfivesuperior + \let\sixsuperior\textsixsuperior + \let\sevensuperior\textsevensuperior + \let\eightsuperior\texteightsuperior + \let\ninesuperior\textninesuperior + \let\plussuperior\textplussuperior + \let\minussuperior\textminussuperior + \let\equalsuperior\textequalsuperior + \let\parenleftsuperior\textparenleftsuperior + \let\parenrightsuperior\textparenrightsuperior + \let\nsuperior\textnsuperior + \let\zeroinferior\textzeroinferior + \let\oneinferior\textoneinferior + \let\twoinferior\texttwoinferior + \let\threeinferior\textthreeinferior + \let\fourinferior\textfourinferior + \let\fiveinferior\textfiveinferior + \let\sixinferior\textsixinferior + \let\seveninferior\textseveninferior + \let\eightinferior\texteightinferior + \let\nineinferior\textnineinferior + \let\plusinferior\textplusinferior + \let\minusinferior\textminusinferior + \let\equalsinferior\textequalsinferior + \let\parenleftinferior\textparenleftinferior + \let\parenrightinferior\textparenrightinferior + \let\ainferior\textainferior + \let\einferior\texteinferior + \let\oinferior\textoinferior + \let\xinferior\textxinferior + \let\schwainferior\textschwainferior + \let\hinferior\texthinferior + \let\kinferior\textkinferior + \let\linferior\textlinferior + \let\minferior\textminferior + \let\ninferior\textninferior + \let\pinferior\textpinferior + \let\sinferior\textsinferior + \let\tinferior\texttinferior + \let\Deleatur\textDeleatur + \let\hslash\texthslash + \let\Im\textIm + \let\ell\textell + \let\wp\textwp + \let\Re\textRe + \let\mho\textmho + \let\riota\textriota + \let\Finv\textFinv + \let\aleph\textaleph + \let\beth\textbeth + \let\gimel\textgimel + \let\daleth\textdaleth + \let\fax\textfax + \let\Game\textGame + \let\leftarrow\textleftarrow + \let\uparrow\textuparrow + \let\rightarrow\textrightarrow + \let\downarrow\textdownarrow + \let\leftrightarrow\textleftrightarrow + \let\updownarrow\textupdownarrow + \let\nwarrow\textnwarrow + \let\nearrow\textnearrow + \let\searrow\textsearrow + \let\swarrow\textswarrow + \let\nleftarrow\textnleftarrow + \let\nrightarrow\textnrightarrow + \let\twoheadleftarrow\texttwoheadleftarrow + \let\ntwoheadleftarrow\textntwoheadleftarrow + \let\twoheaduparrow\texttwoheaduparrow + \let\twoheadrightarrow\texttwoheadrightarrow + \let\ntwoheadrightarrow\textntwoheadrightarrow + \let\twoheaddownarrow\texttwoheaddownarrow + \let\leftarrowtail\textleftarrowtail + \let\rightarrowtail\textrightarrowtail + \let\mapsto\textmapsto + \let\hookleftarrow\texthookleftarrow + \let\hookrightarrow\texthookrightarrow + \let\looparrowleft\textlooparrowleft + \let\looparrowright\textlooparrowright + \let\nleftrightarrow\textnleftrightarrow + \let\lightning\textlightning + \let\dlsh\textdlsh + \let\curvearrowleft\textcurvearrowleft + \let\curvearrowright\textcurvearrowright + \let\leftharpoonup\textleftharpoonup + \let\leftharpoondown\textleftharpoondown + \let\upharpoonright\textupharpoonright + \let\upharpoonleft\textupharpoonleft + \let\rightharpoonup\textrightharpoonup + \let\rightharpoondown\textrightharpoondown + \let\downharpoonright\textdownharpoonright + \let\downharpoonleft\textdownharpoonleft + \let\rightleftarrows\textrightleftarrows + \let\updownarrows\textupdownarrows + \let\leftrightarrows\textleftrightarrows + \let\leftleftarrows\textleftleftarrows + \let\upuparrows\textupuparrows + \let\rightrightarrows\textrightrightarrows + \let\downdownarrows\textdowndownarrows + \let\leftrightharpoons\textleftrightharpoons + \let\rightleftharpoons\textrightleftharpoons + \let\nLeftarrow\textnLeftarrow + \let\nLeftrightarrow\textnLeftrightarrow + \let\nRightarrow\textnRightarrow + \let\Leftarrow\textLeftarrow + \let\Uparrow\textUparrow + \let\Rightarrow\textRightarrow + \let\Downarrow\textDownarrow + \let\Leftrightarrow\textLeftrightarrow + \let\Updownarrow\textUpdownarrow + \let\Nwarrow\textNwarrow + \let\Nearrow\textNearrow + \let\Searrow\textSearrow + \let\Swarrow\textSwarrow + \let\Lleftarrow\textLleftarrow + \let\Rrightarrow\textRrightarrow + \let\leftsquigarrow\textleftsquigarrow + \let\rightsquigarrow\textrightsquigarrow + \let\dashleftarrow\textdashleftarrow + \let\dasheduparrow\textdasheduparrow + \let\dashrightarrow\textdashrightarrow + \let\dasheddownarrow\textdasheddownarrow + \let\pointer\textpointer + \let\downuparrows\textdownuparrows + \let\leftarrowtriangle\textleftarrowtriangle + \let\rightarrowtriangle\textrightarrowtriangle + \let\leftrightarrowtriangle\textleftrightarrowtriangle + \let\forall\textforall + \let\complement\textcomplement + \let\partial\textpartial + \let\exists\textexists + \let\nexists\textnexists + \let\emptyset\textemptyset + \let\triangle\texttriangle + \let\nabla\textnabla + \let\in\textin + \let\notin\textnotin + \let\smallin\textsmallin + \let\ni\textni + \let\notowner\textnotowner + \let\smallowns\textsmallowns + \let\prod\textprod + \let\amalg\textamalg + \let\sum\textsum + \let\mp\textmp + \let\dotplus\textdotplus + \let\Divides\textDivides + \let\DividesNot\textDividesNot + \let\setminus\textsetminus + \let\ast\textast + \let\circ\textcirc + \let\surd\textsurd + \let\propto\textpropto + \let\infty\textinfty + \let\angle\textangle + \let\measuredangle\textmeasuredangle + \let\sphericalangle\textsphericalangle + \let\mid\textmid + \let\nmid\textnmid + \let\parallel\textparallel + \let\nparallel\textnparallel + \let\wedge\textwedge + \let\owedge\textowedge + \let\vee\textvee + \let\ovee\textovee + \let\cap\textcap + \let\cup\textcup + \let\int\textint + \let\iint\textiint + \let\iiint\textiiint + \let\oint\textoint + \let\oiint\textoiint + \let\ointclockwise\textointclockwise + \let\ointctrclockwise\textointctrclockwise + \let\therefore\texttherefore + \let\because\textbecause + \let\vdotdot\textvdotdot + \let\squaredots\textsquaredots + \let\dotminus\textdotminus + \let\eqcolon\texteqcolon + \let\sim\textsim + \let\backsim\textbacksim + \let\nbacksim\textnbacksim + \let\wr\textwr + \let\nsim\textnsim + \let\eqsim\texteqsim + \let\neqsim\textneqsim + \let\simeq\textsimeq + \let\nsimeq\textnsimeq + \let\cong\textcong + \let\ncong\textncong + \let\approx\textapprox + \let\napprox\textnapprox + \let\approxeq\textapproxeq + \let\napproxeq\textnapproxeq + \let\triplesim\texttriplesim + \let\ntriplesim\textntriplesim + \let\backcong\textbackcong + \let\nbackcong\textnbackcong + \let\asymp\textasymp + \let\nasymp\textnasymp + \let\Bumpeq\textBumpeq + \let\nBumpeq\textnBumpeq + \let\bumpeq\textbumpeq + \let\nbumpeq\textnbumpeq + \let\doteq\textdoteq + \let\ndoteq\textndoteq + \let\doteqdot\textdoteqdot + \let\nDoteq\textnDoteq + \let\fallingdoteq\textfallingdoteq + \let\nfallingdoteq\textnfallingdoteq + \let\risingdoteq\textrisingdoteq + \let\nrisingdoteq\textnrisingdoteq + \let\colonequals\textcolonequals + \let\equalscolon\textequalscolon + \let\eqcirc\texteqcirc + \let\neqcirc\textneqcirc + \let\circeq\textcirceq + \let\ncirceq\textncirceq + \let\hateq\texthateq + \let\nhateq\textnhateq + \let\triangleeq\texttriangleeq + \let\neq\textneq + \let\ne\textne + \let\equiv\textequiv + \let\nequiv\textnequiv + \let\leq\textleq + \let\le\textle + \let\geq\textgeq + \let\ge\textge + \let\leqq\textleqq + \let\nleqq\textnleqq + \let\geqq\textgeqq + \let\ngeqq\textngeqq + \let\lneqq\textlneqq + \let\gneqq\textgneqq + \let\ll\textll + \let\nll\textnll + \let\gg\textgg + \let\ngg\textngg + \let\between\textbetween + \let\nless\textnless + \let\ngtr\textngtr + \let\nleq\textnleq + \let\ngeq\textngeq + \let\lesssim\textlesssim + \let\gtrsim\textgtrsim + \let\nlesssim\textnlesssim + \let\ngtrsim\textngtrsim + \let\lessgtr\textlessgtr + \let\gtrless\textgtrless + \let\ngtrless\textngtrless + \let\nlessgtr\textnlessgtr + \let\prec\textprec + \let\succ\textsucc + \let\preccurlyeq\textpreccurlyeq + \let\succcurlyeq\textsucccurlyeq + \let\precsim\textprecsim + \let\nprecsim\textnprecsim + \let\succsim\textsuccsim + \let\nsuccsim\textnsuccsim + \let\nprec\textnprec + \let\nsucc\textnsucc + \let\subset\textsubset + \let\supset\textsupset + \let\nsubset\textnsubset + \let\nsupset\textnsupset + \let\subseteq\textsubseteq + \let\supseteq\textsupseteq + \let\nsubseteq\textnsubseteq + \let\nsupseteq\textnsupseteq + \let\subsetneq\textsubsetneq + \let\supsetneq\textsupsetneq + \let\cupdot\textcupdot + \let\cupplus\textcupplus + \let\sqsubset\textsqsubset + \let\nsqsubset\textnsqsubset + \let\sqsupset\textsqsupset + \let\nsqsupset\textnsqsupset + \let\sqsubseteq\textsqsubseteq + \let\nsqsubseteq\textnsqsubseteq + \let\sqsupseteq\textsqsupseteq + \let\nsqsupseteq\textnsqsupseteq + \let\sqcap\textsqcap + \let\sqcup\textsqcup + \let\oplus\textoplus + \let\ominus\textominus + \let\otimes\textotimes + \let\oslash\textoslash + \let\odot\textodot + \let\circledcirc\textcircledcirc + \let\circledast\textcircledast + \let\circleddash\textcircleddash + \let\boxplus\textboxplus + \let\boxminus\textboxminus + \let\boxtimes\textboxtimes + \let\boxdot\textboxdot + \let\vdash\textvdash + \let\dashv\textdashv + \let\ndashv\textndashv + \let\top\texttop + \let\ndownvdash\textndownvdash + \let\bot\textbot + \let\nupvdash\textnupvdash + \let\vDash\textvDash + \let\Vdash\textVdash + \let\Vvdash\textVvdash + \let\nVvash\textnVvash + \let\VDash\textVDash + \let\nvdash\textnvdash + \let\nvDash\textnvDash + \let\nVdash\textnVdash + \let\nVDash\textnVDash + \let\lhd\textlhd + \let\rhd\textrhd + \let\unlhd\textunlhd + \let\unrhd\textunrhd + \let\multimapdotbothA\textmultimapdotbothA + \let\multimapdotbothB\textmultimapdotbothB + \let\multimap\textmultimap + \let\veebar\textveebar + \let\barwedge\textbarwedge + \let\star\textstar + \let\divideontimes\textdivideontimes + \let\bowtie\textbowtie + \let\ltimes\textltimes + \let\rtimes\textrtimes + \let\leftthreetimes\textleftthreetimes + \let\rightthreetimes\textrightthreetimes + \let\backsimeq\textbacksimeq + \let\nbacksimeq\textnbacksimeq + \let\curlyvee\textcurlyvee + \let\curlywedge\textcurlywedge + \let\Subset\textSubset + \let\nSubset\textnSubset + \let\Supset\textSupset + \let\nSupset\textnSupset + \let\Cap\textCap + \let\Cup\textCup + \let\pitchfork\textpitchfork + \let\lessdot\textlessdot + \let\gtrdot\textgtrdot + \let\lll\textlll + \let\ggg\textggg + \let\lesseqgtr\textlesseqgtr + \let\gtreqless\textgtreqless + \let\curlyeqprec\textcurlyeqprec + \let\ncurlyeqprec\textncurlyeqprec + \let\curlyeqsucc\textcurlyeqsucc + \let\ncurlyeqsucc\textncurlyeqsucc + \let\npreccurlyeq\textnpreccurlyeq + \let\nsucccurlyeq\textnsucccurlyeq + \let\nqsubseteq\textnqsubseteq + \let\nqsupseteq\textnqsupseteq + \let\sqsubsetneq\textsqsubsetneq + \let\sqsupsetneq\textsqsupsetneq + \let\lnsim\textlnsim + \let\gnsim\textgnsim + \let\precnsim\textprecnsim + \let\succnsim\textsuccnsim + \let\ntriangleleft\textntriangleleft + \let\ntriangleright\textntriangleright + \let\ntrianglelefteq\textntrianglelefteq + \let\ntrianglerighteq\textntrianglerighteq + \let\vdots\textvdots + \let\cdots\textcdots + \let\udots\textudots + \let\ddots\textddots + \let\barin\textbarin + \let\diameter\textdiameter + \let\backneg\textbackneg + \let\wasylozenge\textwasylozenge + \let\invbackneg\textinvbackneg + \let\clock\textclock + \let\ulcorner\textulcorner + \let\urcorner\texturcorner + \let\llcorner\textllcorner + \let\lrcorner\textlrcorner + \let\frown\textfrown + \let\smile\textsmile + \let\Keyboard\textKeyboard + \let\langle\textlangle + \let\rangle\textrangle + \let\APLinv\textAPLinv + \let\Tumbler\textTumbler + \let\notslash\textnotslash + \let\notbackslash\textnotbackslash + \let\boxbackslash\textboxbackslash + \let\APLleftarrowbox\textAPLleftarrowbox + \let\APLrightarrowbox\textAPLrightarrowbox + \let\APLuparrowbox\textAPLuparrowbox + \let\APLdownarrowbox\textAPLdownarrowbox + \let\APLinput\textAPLinput + \let\Request\textRequest + \let\Beam\textBeam + \let\hexagon\texthexagon + \let\APLbox\textAPLbox + \let\ForwardToIndex\textForwardToIndex + \let\RewindToIndex\textRewindToIndex + \let\bbslash\textbbslash + \let\CircledA\textCircledA + \let\CleaningF\textCleaningF + \let\CleaningFF\textCleaningFF + \let\CleaningP\textCleaningP + \let\CleaningPP\textCleaningPP + \let\CuttingLine\textCuttingLine + \let\UParrow\textUParrow + \let\bigtriangleup\textbigtriangleup + \let\Forward\textForward + \let\triangleright\texttriangleright + \let\RHD\textRHD + \let\DOWNarrow\textDOWNarrow + \let\bigtriangledown\textbigtriangledown + \let\Rewind\textRewind + \let\triangleleft\texttriangleleft + \let\LHD\textLHD + \let\diamond\textdiamond + \let\lozenge\textlozenge + \let\LEFTCIRCLE\textLEFTCIRCLE + \let\RIGHTCIRCLE\textRIGHTCIRCLE + \let\openbullet\textopenbullet + \let\boxbar\textboxbar + \let\bigcircle\textbigcircle + \let\Cloud\textCloud + \let\FiveStar\textFiveStar + \let\FiveStarOpen\textFiveStarOpen + \let\Phone\textPhone + \let\boxempty\textboxempty + \let\Checkedbox\textCheckedbox + \let\Crossedbox\textCrossedbox + \let\Coffeecup\textCoffeecup + \let\HandCuffLeft\textHandCuffLeft + \let\HandCuffRight\textHandCuffRight + \let\HandLeft\textHandLeft + \let\HandRight\textHandRight + \let\Radioactivity\textRadioactivity + \let\Biohazard\textBiohazard + \let\Ankh\textAnkh + \let\YinYang\textYinYang + \let\frownie\textfrownie + \let\smiley\textsmiley + \let\blacksmiley\textblacksmiley + \let\sun\textsun + \let\leftmoon\textleftmoon + \let\rightmoon\textrightmoon + \let\mercury\textmercury + \let\earth\textearth + \let\male\textmale + \let\jupiter\textjupiter + \let\saturn\textsaturn + \let\uranus\texturanus + \let\neptune\textneptune + \let\pluto\textpluto + \let\aries\textaries + \let\taurus\texttaurus + \let\gemini\textgemini + \let\cancer\textcancer + \let\leo\textleo + \let\virgo\textvirgo + \let\libra\textlibra + \let\scorpio\textscorpio + \let\sagittarius\textsagittarius + \let\capricornus\textcapricornus + \let\aquarius\textaquarius + \let\pisces\textpisces + \let\quarternote\textquarternote + \let\twonotes\texttwonotes + \let\sixteenthnote\textsixteenthnote + \let\flat\textflat + \let\natural\textnatural + \let\sharp\textsharp + \let\recycle\textrecycle + \let\Wheelchair\textWheelchair + \let\Flag\textFlag + \let\MineSign\textMineSign + \let\dsmilitary\textdsmilitary + \let\dsmedical\textdsmedical + \let\dsjuridical\textdsjuridical + \let\dschemical\textdschemical + \let\dsbiological\textdsbiological + \let\dscommercial\textdscommercial + \let\manstar\textmanstar + \let\danger\textdanger + \let\FemaleFemale\textFemaleFemale + \let\MaleMale\textMaleMale + \let\FemaleMale\textFemaleMale + \let\Hermaphrodite\textHermaphrodite + \let\Neutral\textNeutral + \let\hexstar\texthexstar + \let\SunCload\textSunCload + \let\Rain\textRain + \let\noway\textnoway + \let\Mountain\textMountain + \let\Tent\textTent + \let\ScissorRight\textScissorRight + \let\ScissorRightBrokenTop\textScissorRightBrokenTop + \let\ScissorHollowRight\textScissorHollowRight + \let\PhoneHandset\textPhoneHandset + \let\Tape\textTape + \let\Plane\textPlane + \let\Envelope\textEnvelope + \let\Peace\textPeace + \let\WritingHand\textWritingHand + \let\PencilRightDown\textPencilRightDown + \let\PencilRight\textPencilRight + \let\PencilRightUp\textPencilRightUp + \let\NibRight\textNibRight + \let\NibSolidRight\textNibSolidRight + \let\Checkmark\textCheckmark + \let\CheckmarkBold\textCheckmarkBold + \let\XSolid\textXSolid + \let\XSolidBold\textXSolidBold + \let\XSolidBrush\textXSolidBrush + \let\PlusOutline\textPlusOutline + \let\Plus\textPlus + \let\PlusThinCenterOpen\textPlusThinCenterOpen + \let\PlusCenterOpen\textPlusCenterOpen + \let\Cross\textCross + \let\CrossOpenShadow\textCrossOpenShadow + \let\CrossOutline\textCrossOutline + \let\CrossMaltese\textCrossMaltese + \let\DavidStar\textDavidStar + \let\FourAsterisk\textFourAsterisk + \let\JackStar\textJackStar + \let\JackStarBold\textJackStarBold + \let\ClowerTips\textClowerTips + \let\FourStar\textFourStar + \let\FourStarOpen\textFourStarOpen + \let\FiveStarOpenCircled\textFiveStarOpenCircled + \let\FiveStarCenterOpen\textFiveStarCenterOpen + \let\FiveStarOpenDotted\textFiveStarOpenDotted + \let\FiveStarOutline\textFiveStarOutline + \let\FiveStarOutlineHeavy\textFiveStarOutlineHeavy + \let\FiveStarConvex\textFiveStarConvex + \let\FiveStarShadow\textFiveStarShadow + \let\AsteriskBold\textAsteriskBold + \let\AsteriskCenterOpen\textAsteriskCenterOpen + \let\EightStarTaper\textEightStarTaper + \let\EightStarConvex\textEightStarConvex + \let\SixStar\textSixStar + \let\EightStar\textEightStar + \let\EightStarBold\textEightStarBold + \let\TwelveStar\textTwelveStar + \let\SixteenStarLight\textSixteenStarLight + \let\SixFlowerPetalRemoved\textSixFlowerPetalRemoved + \let\SixFlowerOpenCenter\textSixFlowerOpenCenter + \let\Asterisk\textAsterisk + \let\SixFlowerAlternate\textSixFlowerAlternate + \let\FiveFlowerPetal\textFiveFlowerPetal + \let\FiveFlowerOpen\textFiveFlowerOpen + \let\EightFlowerPetal\textEightFlowerPetal + \let\SunshineOpenCircled\textSunshineOpenCircled + \let\SixFlowerAltPetal\textSixFlowerAltPetal + \let\SnowflakeChevron\textSnowflakeChevron + \let\Snowflake\textSnowflake + \let\SnowflakeChevronBold\textSnowflakeChevronBold + \let\Sparkle\textSparkle + \let\SparkleBold\textSparkleBold + \let\AsteriskRoundedEnds\textAsteriskRoundedEnds + \let\EightFlowerPetalRemoved\textEightFlowerPetalRemoved + \let\EightAsterisk\textEightAsterisk + \let\CircleShadow\textCircleShadow + \let\SquareShadowBottomRight\textSquareShadowBottomRight + \let\SquareTopRight\textSquareTopRight + \let\SquareCastShadowBottomRight\textSquareCastShadowBottomRight + \let\SquareCastShadowTopRight\textSquareCastShadowTopRight + \let\DiamandSolid\textDiamandSolid + \let\RectangleThin\textRectangleThin + \let\Rectangle\textRectangle + \let\RectangleBold\textRectangleBold + \let\perp\textperp + \let\notperp\textnotperp + \let\veedot\textveedot + \let\wedgedot\textwedgedot + \let\leftspoon\textleftspoon + \let\lbrackdbl\textlbrackdbl + \let\rbrackdbl\textrbrackdbl + \let\circlearrowleft\textcirclearrowleft + \let\circlearrowright\textcirclearrowright + \let\longleftarrow\textlongleftarrow + \let\longrightarrow\textlongrightarrow + \let\longleftrightarrow\textlongleftrightarrow + \let\Longleftarrow\textLongleftarrow + \let\Longrightarrow\textLongrightarrow + \let\Longleftrightarrow\textLongleftrightarrow + \let\longmapsto\textlongmapsto + \let\Longmapsfrom\textLongmapsfrom + \let\Longmapsto\textLongmapsto + \let\nwsearrow\textnwsearrow + \let\neswarrow\textneswarrow + \let\lhooknwarrow\textlhooknwarrow + \let\rhooknearrow\textrhooknearrow + \let\lhooksearrow\textlhooksearrow + \let\rhookswarrow\textrhookswarrow + \let\leadsto\textleadsto + \let\rcurvearrowne\textrcurvearrowne + \let\lcurvearrowse\textlcurvearrowse + \let\lcurvearrowsw\textlcurvearrowsw + \let\rcurvearrowse\textrcurvearrowse + \let\lcurvearrowdown\textlcurvearrowdown + \let\rcurvearrowdown\textrcurvearrowdown + \let\rcurvearrowleft\textrcurvearrowleft + \let\rcurvearrowright\textrcurvearrowright + \let\leftrightharpoon\textleftrightharpoon + \let\rightleftharpoon\textrightleftharpoon + \let\updownharpoonrightleft\textupdownharpoonrightleft + \let\updownharpoonleftright\textupdownharpoonleftright + \let\leftleftharpoons\textleftleftharpoons + \let\upupharpoons\textupupharpoons + \let\rightrightharpoons\textrightrightharpoons + \let\downdownharpoons\textdowndownharpoons + \let\leftbarharpoon\textleftbarharpoon + \let\barleftharpoon\textbarleftharpoon + \let\rightbarharpoon\textrightbarharpoon + \let\barrightharpoon\textbarrightharpoon + \let\updownharpoons\textupdownharpoons + \let\downupharpoons\textdownupharpoons + \let\moo\textmoo + \let\llparenthesis\textllparenthesis + \let\rrparenthesis\textrrparenthesis + \let\invdiameter\textinvdiameter + \let\obar\textobar + \let\obslash\textobslash + \let\obot\textobot + \let\NoChemicalCleaning\textNoChemicalCleaning + \let\olessthan\textolessthan + \let\ogreaterthan\textogreaterthan + \let\boxslash\textboxslash + \let\boxbslash\textboxbslash + \let\boxast\textboxast + \let\boxcircle\textboxcircle + \let\boxbox\textboxbox + \let\Valve\textValve + \let\multimapboth\textmultimapboth + \let\shuffle\textshuffle + \let\uplus\textuplus + \let\bigdoublewedge\textbigdoublewedge + \let\bigdoublevee\textbigdoublevee + \let\Join\textJoin + \let\fatsemi\textfatsemi + \let\circplus\textcircplus + \let\minusdot\textminusdot + \let\dottimes\textdottimes + \let\dtimes\textdtimes + \let\odiv\textodiv + \let\invneg\textinvneg + \let\sqdoublecap\textsqdoublecap + \let\capdot\textcapdot + \let\sqdoublecup\textsqdoublecup + \let\doublewedge\textdoublewedge + \let\doublevee\textdoublevee + \let\doublebarwedge\textdoublebarwedge + \let\veedoublebar\textveedoublebar + \let\eqdot\texteqdot + \let\neqdot\textneqdot + \let\coloncolonequals\textcoloncolonequals + \let\leqslant\textleqslant + \let\nleqslant\textnleqslant + \let\geqslant\textgeqslant + \let\ngeqslant\textngeqslant + \let\lessapprox\textlessapprox + \let\nlessapprox\textnlessapprox + \let\gtrapprox\textgtrapprox + \let\ngtrapprox\textngtrapprox + \let\lneq\textlneq + \let\gneq\textgneq + \let\lnapprox\textlnapprox + \let\gnapprox\textgnapprox + \let\lesseqqgtr\textlesseqqgtr + \let\gtreqqless\textgtreqqless + \let\eqslantless\texteqslantless + \let\eqslantgtr\texteqslantgtr + \let\leftslice\textleftslice + \let\rightslice\textrightslice + \let\preceq\textpreceq + \let\npreceq\textnpreceq + \let\succeq\textsucceq + \let\nsucceq\textnsucceq + \let\precneq\textprecneq + \let\succneq\textsuccneq + \let\preceqq\textpreceqq + \let\npreceqq\textnpreceqq + \let\succeqq\textsucceqq + \let\nsucceqq\textnsucceqq + \let\precneqq\textprecneqq + \let\succneqq\textsuccneqq + \let\precapprox\textprecapprox + \let\nprecapprox\textnprecapprox + \let\succapprox\textsuccapprox + \let\nsuccapprox\textnsuccapprox + \let\precnapprox\textprecnapprox + \let\succnapprox\textsuccnapprox + \let\subseteqq\textsubseteqq + \let\nsubseteqq\textnsubseteqq + \let\supseteqq\textsupseteqq + \let\nsupseteqq\textnsupseteqq + \let\dashV\textdashV + \let\ndashV\textndashV + \let\Dashv\textDashv + \let\nDashv\textnDashv + \let\DashV\textDashV + \let\nDashV\textnDashV + \let\downmodels\textdownmodels + \let\ndownmodels\textndownmodels + \let\upmodels\textupmodels + \let\nupmodels\textnupmodels + \let\upspoon\textupspoon + \let\interleave\textinterleave + \let\sslash\textsslash + \let\pentagon\textpentagon + \let\varhexagon\textvarhexagon + \let\jinferior\textjinferior + \let\slashdiv\textslashdiv + \let\fivedots\textfivedots + \let\oo\textoo + \let\GaPa\textGaPa + \let\HaPa\textHaPa + \let\ViPa\textViPa + \let\AcPa\textAcPa + \let\SePa\textSePa + \let\ZwPa\textZwPa + \let\fullnote\textfullnote + \let\halfnote\texthalfnote + \let\Vier\textVier + \let\Acht\textAcht + \let\Sech\textSech + \let\Zwdr\textZwdr + \let\Mundus\textMundus + \let\Moon\textMoon + \let\ManFace\textManFace + \let\WomanFace\textWomanFace + \let\Fax\textFax + \let\Fire\textFire + \let\Bicycle\textBicycle + \let\Gentsroom\textGentsroom + \let\Ladiesroom\textLadiesroom + \let\ccnc\textccnc + \let\ccsa\textccsa + \let\Info\textInfo + \let\CESign\textCESign + \let\neg\textneg + \let\times\texttimes + \let\div\textdiv + \let\pm\textpm + \let\cdot\textcdot +}% \psdmapshortnames +\newcommand*{\psdaliasnames}{% + \let\epsdice\HyPsd@DieFace + \let\fcdice\HyPsd@DieFace + \let\MoonPha\HyPsd@MoonPha + \let\mathdollar\textdollar + \let\EyesDollar\textdollar + \let\binampersand\textampersand + \let\with\textampersand + \let\mathunderscore\textunderscore + \let\textvertline\textbar + \let\mathsterling\textsterling + \let\pounds\textsterling + \let\brokenvert\textbrokenbar + \let\mathsection\textsection + \let\S\textsection + \let\mathparagraph\textparagraph + \let\MultiplicationDot\textperiodcentered + \let\Squaredot\textperiodcentered + \let\vartimes\textmultiply + \let\MVMultiplication\textmultiply + \let\eth\dh + \let\crossd\textcrd + \let\textbard\textcrd + \let\bard\textcrd + \let\textcrh\texthbar + \let\crossh\texthbar + \let\planck\texthbar + \let\eng\ng + \let\engma\ng + \let\crossb\textcrb + \let\textbarb\textcrb + \let\barb\textcrb + \let\Florin\textflorin + \let\hv\texthvlig + \let\hausak\texthtk + \let\crossnilambda\textcrlambda + \let\barlambda\textcrlambda + \let\lambdabar\textcrlambda + \let\lambdaslash\textcrlambda + \let\textnrleg\textPUnrleg + \let\textpipevar\textpipe + \let\textdoublepipevar\textdoublepipe + \let\textdoublebarpipevar\textdoublebarpipe + \let\textcrg\textgslash + \let\textdblig\textPUdblig + \let\textqplig\textPUqplig + \let\textcentoldstyle\textslashc + \let\textbarc\textslashc + \let\inva\textturna + \let\vara\textscripta + \let\invscripta\textturnscripta + \let\rotvara\textturnscripta + \let\hookb\texthtb + \let\hausab\texthtb + \let\varopeno\textopeno + \let\curlyc\textctc + \let\taild\textrtaild + \let\hookd\texthtd + \let\hausad\texthtd + \let\er\textrhookschwa + \let\epsi\textniepsilon + \let\hookrevepsilon\textrhookrevepsilon + \let\closedrevepsilon\textcloserevepsilon + \let\barj\textbardotlessj + \let\hookg\texthtg + \let\varg\textscriptg + \let\vod\textipagamma + \let\invh\textturnh + \let\udesc\textturnh + \let\hookh\texthth + \let\voicedh\texthth + \let\hookheng\texththeng + \let\ibar\textbari + \let\vari\textniiota + \let\tildel\textltilde + \let\latfric\textbeltl + \let\taill\textrtaill + \let\lz\textlyoghlig + \let\invm\textturnm + \let\rotm\textturnm + \let\legm\textturnmrleg + \let\labdentalnas\textltailm + \let\emgma\textltailm + \let\nj\textltailn + \let\enya\textltailn + \let\tailn\textrtailn + \let\closedniomega\textcloseomega + \let\varomega\textcloseomega + \let\invr\textturnr + \let\rotr\textturnr + \let\invlegr\textturnlonglegr + \let\tailinvr\textturnrrtail + \let\legr\textlonglegr + \let\tailr\textrtailr + \let\flapr\textfishhookr + \let\flap\textfishhookr + \let\tails\textrtails + \let\curlyesh\textctesh + \let\clickt\textturnt + \let\tailt\textrtailt + \let\ubar\textbaru + \let\rotOmega\textniupsilon + \let\invv\textturnv + \let\pwedge\textturnv + \let\invw\textturnw + \let\rotw\textturnw + \let\invy\textturny + \let\roty\textturny + \let\tailz\textrtailz + \let\curlyz\textctz + \let\curlyyogh\textctyogh + \let\ejective\textglotstop + \let\glottal\textglotstop + \let\reveject\textrevglotstop + \let\clickc\textstretchc + \let\textstretchcvar\textstretchc + \let\clickb\textbullseye + \let\textObullseye\textbullseye + \let\textctjvar\textctj + \let\textturnsck\textturnk + \let\dz\textdzlig + \let\tesh\textteshlig + \let\digamma\textdigammagreek + \let\hardsign\cyrhrdsn + \let\softsign\cyrsftsn + \let\hebsin\hebshin + \let\textsck\textPUsck + \let\textscm\textPUscm + \let\textscp\textPUscp + \let\textrevscr\textPUrevscr + \let\textrhooka\textPUrhooka + \let\textrhooke\textPUrhooke + \let\textrhookepsilon\textPUrhookepsilon + \let\textrhookopeno\textPUrhookopeno + \let\textdoublevertline\textbardbl + \let\dag\textdagger + \let\ddagger\textdaggerdbl + \let\ddag\textdaggerdbl + \let\mathellipsis\textellipsis + \let\EurDig\texteuro + \let\EURdig\texteuro + \let\EurHv\texteuro + \let\EURhv\texteuro + \let\EurCr\texteuro + \let\EURcr\texteuro + \let\EurTm\texteuro + \let\EURtm\texteuro + \let\Eur\texteuro + \let\Denarius\textDeleatur + \let\agemO\textmho + \let\EstimatedSign\textestimated + \let\Ecommerce\textestimated + \let\bindnasrepma\textinvamp + \let\parr\textinvamp + \let\MVRightArrow\textrightarrow + \let\MVRightarrow\textrightarrow + \let\MVArrowDown\textdownarrow + \let\Force\textdownarrow + \let\textglobrise\textnearrow + \let\textglobfall\textsearrow + \let\Lightning\textlightning + \let\Conclusion\textRightarrow + \let\dashedleftarrow\textdashleftarrow + \let\dashedrightarrow\textdashrightarrow + \let\varnothing\textemptyset + \let\owns\textni + \let\notni\textnotowner + \let\varprop\textpropto + \let\varangle\textsphericalangle + \let\Anglesign\textsphericalangle + \let\AngleSign\textsphericalangle + \let\notdivides\textnmid + \let\varowedge\textowedge + \let\varovee\textovee + \let\varint\textint + \let\varoint\textoint + \let\downtherefore\textbecause + \let\textdotdiv\textdotminus + \let\AC\textsim + \let\wreath\textwr + \let\nthickapprox\textnapprox + \let\VHF\texttriplesim + \let\notasymp\textnasymp + \let\Doteq\textdoteqdot + \let\corresponds\texthateq + \let\Corresponds\texthateq + \let\nequal\textneq + \let\Congruent\textequiv + \let\NotCongruent\textnequiv + \let\notequiv\textnequiv + \let\LessOrEqual\textleq + \let\LargerOrEqual\textgeq + \let\apprle\textlesssim + \let\apprge\textgtrsim + \let\varoplus\textoplus + \let\varominus\textominus + \let\varotimes\textotimes + \let\varoslash\textoslash + \let\varodot\textodot + \let\ocirc\textcircledcirc + \let\varocircle\textcircledcirc + \let\varoast\textcircledast + \let\oasterisk\textcircledast + \let\rightvdash\textvdash + \let\leftvdash\textdashv + \let\nleftvdash\textndashv + \let\downvdash\texttop + \let\upvdash\textbot + \let\nperp\textnupvdash + \let\models\textvDash + \let\rightmodels\textvDash + \let\rightVdash\textVdash + \let\rightModels\textVDash + \let\nrightvdash\textnvdash + \let\nrightmodels\textnvDash + \let\nmodels\textnvDash + \let\nrightVdash\textnVdash + \let\nrightModels\textnVDash + \let\lessclosed\textlhd + \let\gtrclosed\textrhd + \let\leqclosed\textunlhd + \let\trianglelefteq\textunlhd + \let\geqclosed\textunrhd + \let\trianglerighteq\textunrhd + \let\Bowtie\textbowtie + \let\varcurlyvee\textcurlyvee + \let\varcurlywedge\textcurlywedge + \let\doublecap\textCap + \let\doublecup\textCup + \let\varsqsubsetneq\textsqsubsetneq + \let\varsqsupsetneq\textsqsupsetneq + \let\nlessclosed\textntriangleleft + \let\ngtrclosed\textntriangleright + \let\Clocklogo\textclock + \let\ClockLogo\textclock + \let\baro\textstmaryrdbaro + \let\varparallelinv\textbbslash + \let\CleaningA\textCircledA + \let\Kutline\textCuttingLine + \let\CutLine\textCuttingLine + \let\Cutline\textCuttingLine + \let\MoveUp\textUParrow + \let\APLup\textbigtriangleup + \let\Bleech\textbigtriangleup + \let\MoveDown\textDOWNarrow + \let\APLdown\textbigtriangledown + \let\Diamond\textdiamond + \let\varbigcirc\textbigcircle + \let\Telefon\textPhone + \let\Box\textboxempty + \let\CheckedBox\textCheckedbox + \let\XBox\textCrossedbox + \let\CrossedBox\textCrossedbox + \let\rightpointleft\textHandLeft + \let\leftpointright\textHandRight + \let\PointingHand\textHandRight + \let\Pointinghand\textHandRight + \let\Radiation\textRadioactivity + \let\Yinyang\textYinYang + \let\YingYang\textYinYang + \let\Yingyang\textYinYang + \let\Frowny\textfrownie + \let\Smiley\textsmiley + \let\Sun\textsun + \let\Mercury\textmercury + \let\textfemale\textPUfemale + \let\female\textPUfemale + \let\venus\textPUfemale + \let\Venus\textPUfemale + \let\Female\textPUfemale + \let\Earth\textearth + \let\mars\textmale + \let\Mars\textmale + \let\Male\textmale + \let\Jupiter\textjupiter + \let\Saturn\textsaturn + \let\Uranus\texturanus + \let\Neptune\textneptune + \let\Pluto\textpluto + \let\Aries\textaries + \let\Taurus\texttaurus + \let\Gemini\textgemini + \let\Cancer\textcancer + \let\Leo\textleo + \let\Virgo\textvirgo + \let\Libra\textlibra + \let\Scorpio\textscorpio + \let\Sagittarius\textsagittarius + \let\Capricorn\textcapricornus + \let\Aquarius\textaquarius + \let\Pisces\textpisces + \let\spadesuit\textspadesuitblack + \let\Heart\textheartsuitwhite + \let\heartsuit\textheartsuitwhite + \let\diamondsuit\textdiamondsuitwhite + \let\clubsuit\textclubsuitblack + \let\eighthnote\textmusicalnote + \let\Recycling\textrecycle + \let\VarFlag\textFlag + \let\textxswup\textdsmilitary + \let\textuncrfemale\textPUuncrfemale + \let\Football\textSoccerBall + \let\CutLeft\textScissorRightBrokenBottom + \let\Cutright\textScissorRightBrokenBottom + \let\RightScissors\textScissorRight + \let\Leftscissors\textScissorRight + \let\Letter\textEnvelope + \let\Writinghand\textWritingHand + \let\checkmark\textCheckmark + \let\davidstar\textDavidStar + \let\llbracket\textlbrackdbl + \let\rrbracket\textrbrackdbl + \let\RightTorque\textlcurvearrowdown + \let\Righttorque\textlcurvearrowdown + \let\LeftTorque\textrcurvearrowdown + \let\Lefttorque\textrcurvearrowdown + \let\textvarobar\textobar + \let\circledbslash\textobslash + \let\obackslash\textobslash + \let\varobslash\textobslash + \let\odplus\textobot + \let\varolessthan\textolessthan + \let\varogreaterthan\textogreaterthan + \let\divdot\textminusdot + \let\doublesqcap\textsqdoublecap + \let\doublesqcup\textsqdoublecup + \let\merge\textdoublevee + \let\leftVdash\textdashV + \let\nleftVdash\textndashV + \let\leftmodels\textDashv + \let\nleftmodels\textnDashv + \let\leftModels\textDashV + \let\nleftModels\textnDashV + \let\varparallel\textsslash + \let\textheng\textPUheng + \let\textlhookfour\textPUlhookfour + \let\textscf\textPUscf + \let\textaolig\textPUaolig + \let\Ganz\textfullnote + \let\Halb\texthalfnote + \let\Womanface\textWomanFace + \let\Faxmachine\textFax + \let\CEsign\textCESign +}% \psdaliasnames +%</psdextra> +% \end{macrocode} +% +% \section{End of file hycheck.tex} +% +% \begin{macrocode} +%<*check> +\typeout{} +\begin{document} +\end{document} +%</check> +% \end{macrocode} +% +% \Finale +% +\endinput |