diff options
Diffstat (limited to 'Master/texmf-dist/source/jadetex/base/jadetex.dtx')
-rw-r--r-- | Master/texmf-dist/source/jadetex/base/jadetex.dtx | 2564 |
1 files changed, 2564 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/jadetex/base/jadetex.dtx b/Master/texmf-dist/source/jadetex/base/jadetex.dtx new file mode 100644 index 00000000000..01455d6f405 --- /dev/null +++ b/Master/texmf-dist/source/jadetex/base/jadetex.dtx @@ -0,0 +1,2564 @@ +% \iffalse +% RCS: $Id: jadetex.dtx,v 1.12 2002/01/25 12:11:56 icastle Exp $ +% File: jadetex.dtx. Copyright (C) 1996, 1997, 1998, 2000, 2001 +% Sebastian Rahtz <sebastian.rahtz@oucs.ox.ac.uk> +% +% Permission is hereby granted, free of charge, to any person obtaining +% a copy of this software and associated documentation files (the +% ``Software''), to deal in the Software without restriction, including +% without limitation the rights to use, copy, modify, merge, publish, +% distribute, sublicense, and/or sell copies of the Software, and to +% permit persons to whom the Software is furnished to do so, subject to +% the following conditions: +% +% The above copyright notice and this permission notice shall be included +% in all copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS +% OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +% IN NO EVENT SHALL SEBASTIAN RAHTZ BE LIABLE FOR ANY CLAIM, DAMAGES OR +% OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +% ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +% OTHER DEALINGS IN THE SOFTWARE. +% +%<dsssldef>\ProvidesFile{dsssl.def} +%<*dtx> + \ProvidesFile{jadetex.ltx} +%</dtx> +%<package>\NeedsTeXFormat{LaTeX2e}[1995/06/01] +%<package>\ProvidesFile{jadetex.ltx} +%\GetFileInfo{JadeTeX.dtx} +%<driver> \ProvidesFile{jadetex.drv} +% \fi +% \ProvidesFile{jadetex.dtx} +% +% \iffalse +%<*driver> +\documentclass{ltxdoc} +\usepackage{times,array,longtable,colortbl} +\usepackage[T1]{fontenc} +\makeatletter + \let\\\@centercr + +\def\arraybackslash{\let\\=\@arraycr} +\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}} +\makeatother +\EnableCrossrefs +\CodelineIndex +\begin{document} + \title{Jade DSSSL \TeX{} backend macros} + \author{Sebastian Rahtz\\Email: \texttt{sebastian.rahtz@oucs.ox.ac.uk}} + \date{printed \today} + \maketitle + \tableofcontents + \DocInput{jadetex.dtx} +\end{document} +%</driver> +% \fi +% \CheckSum{4407} +% \StopEventually{} +% +% \section{Introduction} +% \subsection{Acknowledgements} +% Developed from the skeleton by David Megginson +% (\texttt{dmeggins@microstar.com}), who wrote the original Jade +% \texttt{TeXFOTBuilder} module. This version incorporates support for +% important changes made by Paul Prescod and Kathleen Marszalek for tables; +% those changes and the corresponding work in JadeTeX were commissioned by +% Novare International, to whom considerable thanks are due. +% +% Considerable benefit has been had from corrections, additions and +% discusions from David Carlisle, Matthias Clasen, +% Ulrich Drepper and Christian Leutloff. +% +% \subsection{Usage} +% The file |jadetex.ltx| can either be loaded before the Jade output +% or (better) made into a format file for fast loading; it +% sits on top of \LaTeX, so do: +% \begin{verbatim} +% tex -ini \&hugelatex jadetex.ltx '\dump' +% \end{verbatim} +% Be warned that because many elements can get labelled in JadeTeX, it is +% easy to run out of memory. You will very likely need to increase poolsize. +% +% If you really want to gain speed and save memory, +% prepare an even more cut down \LaTeX with unneeded chunks cut out. +% (such as the picture environment etc). Be careful and be legal, please. +% +% We build on \LaTeX, but do not need a lot of the paraphernalia +% of the document classes, so we just load the \texttt{minimal} class, +% designed for this purpose. We also need access to +% input and output font encoding, color, graphics inclusion, and +% headers and footers; so we load some standard packages. The +% \texttt{inputenc} option is temporary, and needs more thought. +% Eventually we want Unicode input working, with Omega. +% \begin{macrocode} +%<*package> +\def\JadeTeXMajorVersion{3} +\def\JadeTeXMinorVersion{12} +\def\JadeTeXDate{2002/01/25} +\documentclass{minimal} +\RequirePackage{array}[1995/01/01] +\RequirePackage{longtable}[1995/01/01] +\RequirePackage{color}[1997/09/09] +\RequirePackage{colortbl} +\RequirePackage{marvosym} +\RequirePackage{graphicx}[1997/06/09] +\IfFileExists{multicol.sty} + {\RequirePackage{multicol}[1997/12/16]} + {\newenvironment{multicols}[1]% + {\typeout{Warning, at line \the\inputlineno, multicol package not available}}{}% +} +\RequirePackage[normalem]{ulem} +\RequirePackage{fancyhdr} +\makeatletter +\count@\time +\divide\count@ 60 +\count2=-\count@ +\multiply\count2 60 +\advance\count2 \time +\edef\today{% + \the\year/\two@digits{\the\month}/\two@digits{\the\day}:% + \two@digits{\the\count@}:\two@digits{\the\count2}} +\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!} +\makeatother +\def\TeXFOTversion{0.0} +\makeatletter +\ifx\pushocplist\@undefined + \RequirePackage[implicit=true,colorlinks,linkcolor=black,bookmarks=true]{hyperref}[2000/03/01] + \def\PDFBorders{0 0 0} + \RequirePackage[dsssl]{inputenc}[1997/12/20] + \RequirePackage{mlnames} + \RequirePackage{unicode} + \def\DefineCharacter#1#2#3{\expandafter\def\csname!#1\endcsname{#3}} + \def\DefineEntity#1#2{\expandafter\def\csname Ent#1\endcsname{#2}} + \def\Entity#1{\csname Ent#1\endcsname} + \input ucharacters.sty + \input uentities.sty +% \end{macrocode} +% Define the characters under 127, normally not provided by ucharacters.sty +% \begin{macrocode} +\DefineCharacter{32}{20}{\space } +\DefineCharacter{33}{21}{!} +\DefineCharacter{34}{22}{"} +\DefineCharacter{35}{23}{\#} +\DefineCharacter{36}{24}{\ifmmode \$\else \textdollar \fi}% +\DefineCharacter{37}{25}{\%} +\DefineCharacter{38}{26}{\&} +\DefineCharacter{39}{27}{\textquotesingle } +\DefineCharacter{40}{28}{(} +\DefineCharacter{41}{29}{)} +\DefineCharacter{42}{2A}{\ensuremath{\ast }} +\DefineCharacter{43}{2B}{\ensuremath{+}} +\DefineCharacter{44}{2C}{,} +\DefineCharacter{45}{2D}{\ensuremath{-}} +\DefineCharacter{46}{2E}{.} +\DefineCharacter{47}{2F}{/} +\DefineCharacter{48}{30}{0} +\DefineCharacter{49}{31}{1} +\DefineCharacter{50}{32}{2} +\DefineCharacter{51}{33}{3} +\DefineCharacter{52}{34}{4} +\DefineCharacter{53}{35}{5} +\DefineCharacter{54}{36}{6} +\DefineCharacter{55}{37}{7} +\DefineCharacter{56}{38}{8} +\DefineCharacter{57}{39}{9} +\DefineCharacter{58}{3A}{:} +\DefineCharacter{59}{3B}{\ensuremath{;}} +\DefineCharacter{60}{3C}{\ensuremath{<}} +\DefineCharacter{61}{3D}{=} +\DefineCharacter{62}{3E}{\ensuremath{>}} +\DefineCharacter{63}{3F}{?} +\DefineCharacter{64}{40}{@} +\DefineCharacter{65}{41}{A} +\DefineCharacter{66}{42}{B} +\DefineCharacter{67}{43}{C} +\DefineCharacter{68}{44}{D} +\DefineCharacter{69}{45}{E} +\DefineCharacter{70}{46}{F} +\DefineCharacter{71}{47}{G} +\DefineCharacter{72}{48}{H} +\DefineCharacter{73}{49}{I} +\DefineCharacter{74}{4A}{J} +\DefineCharacter{75}{4B}{K} +\DefineCharacter{76}{4C}{L} +\DefineCharacter{77}{4D}{M} +\DefineCharacter{78}{4E}{N} +\DefineCharacter{79}{4F}{O} +\DefineCharacter{80}{50}{P} +\DefineCharacter{81}{51}{Q} +\DefineCharacter{82}{52}{R} +\DefineCharacter{83}{53}{S} +\DefineCharacter{84}{54}{T} +\DefineCharacter{85}{55}{U} +\DefineCharacter{86}{56}{V} +\DefineCharacter{87}{57}{W} +\DefineCharacter{88}{58}{X} +\DefineCharacter{89}{59}{Y} +\DefineCharacter{90}{5A}{Z} +\DefineCharacter{91}{5B}{[} +\DefineCharacter{92}{5C}{\ifmmode \backslash \else \textbackslash \fi}% +\DefineCharacter{93}{5D}{]} +\DefineCharacter{94}{5E}{\^{}} +\DefineCharacter{95}{5F}{\ensuremath{\_}} +\DefineCharacter{96}{60}{\textasciigrave } +\DefineCharacter{97}{61}{a} +\DefineCharacter{98}{62}{b} +\DefineCharacter{99}{63}{c} +\DefineCharacter{100}{64}{d} +\DefineCharacter{101}{65}{e} +\DefineCharacter{102}{66}{f} +\DefineCharacter{103}{67}{g} +\DefineCharacter{104}{68}{h} +\DefineCharacter{105}{69}{i} +\DefineCharacter{106}{6A}{j} +\DefineCharacter{107}{6B}{k} +\DefineCharacter{108}{6C}{l} +\DefineCharacter{109}{6D}{m} +\DefineCharacter{110}{6E}{n} +\DefineCharacter{111}{6F}{o} +\DefineCharacter{112}{70}{p} +\DefineCharacter{113}{71}{q} +\DefineCharacter{114}{72}{r} +\DefineCharacter{115}{73}{s} +\DefineCharacter{116}{74}{t} +\DefineCharacter{117}{75}{u} +\DefineCharacter{118}{76}{v} +\DefineCharacter{119}{77}{w} +\DefineCharacter{120}{78}{x} +\DefineCharacter{121}{79}{y} +\DefineCharacter{122}{7A}{z} +\DefineCharacter{123}{7B}{\ensuremath{\lbrace }} +\DefineCharacter{124}{7C}{\ensuremath{\vert }} +\DefineCharacter{125}{7D}{\ensuremath{\rbrace }} +\DefineCharacter{126}{7E}{\textasciitilde } +\else +% \end{macrocode} +% If we are Omega, do some things differently. +% From Apostolos Syropoulos <apostolo@ocean1.ee.duth.gr> +% \begin{macrocode} + \RequirePackage{omega}[1999/06/01] + \background{greek} + \RequirePackage{nohyperref} + \RequirePackge{mlnames} +\fi +% \end{macrocode} +% This was suggested by Matthias Clasen, checking that the macros +% come from the right version of the Jade TeX backend. The package +% will have a n.m version number, where the n changes when Jade changes, +% and the m changes when the JadeTeX package changes. +% \begin{macrocode} +\def\checkFOTversion#1{% +\ifx\\#1\\\def\TeXFOTmajor{2} +\else + \def\TeXFOTmajor{#1}% +\fi + \let\next\relax + \ifnum\TeXFOTmajor>\JadeTeXMajorVersion + \message{Your file was generated by Jade TeX backend version \TeXFOTmajor} + \message{- these macros are for version \JadeTeXMajorVersion and lower. } + \message{I'll stop here...} + \let\next\@@end + \fi + \next} +% \end{macrocode} +% \section{Inherited characteristics} +% Here we list the default values; non-inherited characteristics +% will always be specified. +% \begin{macrocode} +\def\AlignLeader{} +\def\AsisWrapIndent{} +\def\BackgroundColor{} +\let\BackgroundColorRed\@empty +\def\BackgroundLayer{} +\def\BackgroundTile{} +\def\BorderAlignment{} +\def\BorderOmitAtBreak{} +\def\BorderPresent{0} +\def\BorderPriority{} +\def\BoxBorderAlignment{} +\def\BoxCornerRadius{} +\def\BoxOpenEnd{} +\def\BoxType{} +\def\CellBackground{} +\def\CellCrossed{} +\def\CellRowAlignment{start} +\def\CellBeforeRowMargin{\z@} +\def\CellAfterRowMargin{\z@} +\def\CellBeforeColumnMargin{\z@} +\def\CellAfterColumnMargin{\z@} +\def\Color{} +\def\Country{} +\def\DisplayAlignment{} +\def\EndIndent{\z@} +\def\EndMargin{} +\def\ExpandTabs{} +\def\FieldAlign{start} +\def\FieldWidth{0pt} +\def\FillingDirection{} +\def\FirstLineStartIndent{0pt} +\def\FloatOutLineNumbers{} +\def\FloatOutMarginalia{} +\def\FloatOutSidelines{} +\def\fFamName{Times-Roman} % Use Adobe Times Roman by default +\def\fPosture{normal} +\def\fProportionateWidth{medium} +\def\fSize{10pt} +\def\fStructure{} +\def\fWeight{medium} +\def\GlyphAlignmentMode{} +\def\GlyphReorderMethod{} +\def\GlyphSubstMethod{} +\def\HangingPunct{} +\def\HeadingLevel{0} +\def\Hyphenate{} +\def\HyphenationKeep{} +\def\HyphenationLadderCount{} +\def\HyphenationMethod{} +\def\HyphenationPushCharCount{} +\def\HyphenationRemainCharCount{} +\def\IgnoreRecordEnd{} +\def\ImplicitBidiMethod{} +\def\InhibitLineBreaks{} +\def\InputWhitespaceTreatment{} +\def\JustifyGlyphSpaceMaxAdd{} +\def\JustifyGlyphSpaceMaxRemove{} +\def\KernMode{} +\def\Kern{} +\def\Language{} +\def\LastLineEndIndent{} +\def\LastLineJustifyLimit{} +\def\LastLineQuadding{} +\def\Layer{0} +\def\Ligature{} +\def\LineBreakingMethod{} +\def\LineCap{} +\def\LineCompositionMethod{} +\def\LineJoin{} +\def\LineNumberSep{} +\def\LineNumberSide{} +\def\LineRepeat{} +\def\LineSpacing{12pt} +\def\Lines{} +\def\MarginaliaKeepWithPrevious{} +\def\MarginaliaSep{} +\def\MarginaliaSide{} +\def\MathDisplayMode{display} +\def\MinLeaderRepeat{} +\def\MinLeading{2\p@} +\def\NColumnsSpanned{1} +\def\NumberedLines{} +\def\OrphanCount{} +\def\PositionPreference{} +\def\PrincipalModeSimultaneous{} +\def\Quadding{start} +\def\ScoreSpaces{} +\def\SidelineSep{} +\def\SidelineSide{} +\def\SpanWeak{} +\def\Span{0} +\def\StartIndent{\z@} +\def\StartMargin{} +\def\TableAutoWidthMethod{} +\def\TableCornerRadius{} +\def\TablePartOmitMiddleFooter{0} +\def\TablePartOmitMiddleHeader{0} +\def\TruncateLeader{} +\def\WidowCount{} +\def\WritingMode{} +\def\AlignLeader{1}% true +\def\BreakAfter{0}% false +\def\BreakAfterPriority{0}% +\def\BreakBefore{0}% false +\def\BreakBeforePriority{0}% +\def\CoalesceId{0}% false +\def\EntitySystemId{}% [required] +\def\EscapementDirection{}% [=writing-mode] +\def\EscapementSpaceAfterNom{\z@}% +\def\EscapementSpaceAfterMin{\z@}% +\def\EscapementSpaceAfterMax{\z@}% +\def\IdrefAddress{}% +\def\IsDisplay{0}% false +\def\Keep{0}% false +\def\KeepWithNext{0}% false +\def\KeepWithPrevious{0}% false +\def\MayViolateKeepAfter{0}% false +\def\MayViolateKeepBefore{0}% false +\def\MaxWidth{!} +\def\MaxHeight{!} +\def\NotationSystemId{}% [required] +\def\Orientation{}% [required] +\def\PageNColumns{1} +\def\PageNumberRestart{0} +\def\PageNumberFormat{1} + \expandafter\def\csname PageNumbering@1\endcsname#1{% + \expandafter\@arabic#1} + \expandafter\def\csname PageNumbering@i\endcsname#1{% + \expandafter\@roman#1} + \expandafter\def\csname PageNumbering@I\endcsname#1{% + \expandafter\@Roman#1} + \expandafter\def\csname PageNumbering@a\endcsname#1{% + \expandafter\@alph#1} + \expandafter\def\csname PageNumbering@A\endcsname#1{% + \expandafter\@Alph#1} + \expandafter\def\csname PageNumbering@0\endcsname#1{% this shouldn't happen + \expandafter\@arabic#1} + \expandafter\def\csname PageNumbering@\endcsname#1{% + \expandafter\@arabic#1} +\def\PageBalanceColumns{0} +\def\PageTwoSide{0} +\def\TwoSideStartOnRight{0} +\def\PageColumnSep{\z@} +\def\GridColumnSep{\z@} +\def\PositionPointShift{\z@} +\def\PositionPointShiftFactor{} +\def\PositionPointX{\z@}% ?? +\def\PositionPointY{\z@}% ?? +\def\PositionPreference{0}% false +\def\ScaleType{max-uniform}% +\def\ScaleX{}% [n/a] =scale +\def\ScaleY{}% [n/a] =scale +\def\ScoreLength{}% ?? +\def\ScoreType{}% [required] =type +\def\saConditional{0}% false =space-after +\def\saForce{0}% false =space-after +\def\saMax{0pt}% =space-after +\def\saMaxFactor{0}% =space-after +\def\saMin{0pt}% =space-after +\def\saMinFactor{0}% =space-after +\def\saNom{0pt}% =space-after +\def\saNomFactor{0}% =space-after +\def\saPriority{0}% =space-after + \let\@sAfterMin\saMin + \let\@sAfterMax\saMax + \let\@sAfterNom\saNom + \let\@sAfterPriority\saPriority +\def\sbConditional{0}% false +\def\sbForce{0}% false +\def\sbMax{0pt}% +\def\sbMaxFactor{0}% +\def\sbMin{0pt}% +\def\sbMinFactor{0}% +\def\sbNom{0pt}% +\def\sbNomFactor{0}% +\def\sbPriority{0}% +\newdimen\CurrentSpaceNom +\newdimen\CurrentSpaceMin +\newdimen\CurrentSpaceMax +\newdimen\LastSpaceNom +\newdimen\LastSpaceMin +\newdimen\LastSpaceMax +\CurrentSpaceNom\z@ +\CurrentSpaceMax\z@ +\CurrentSpaceMin\z@ +\LastSpaceNom\z@ +\LastSpaceMax\z@ +\LastSpaceMin\z@ +\def\LastSpaceConditional{0}% false +\def\LastSpaceForce{0}% false +\def\LastSpaceMaxFactor{0}% +\def\LastSpaceMinFactor{0}% +\def\LastSpaceNomFactor{0}% +\def\LastSpacePriority{0}% +\def\TruncateLeader{0}% false +\def\Width{}% [required] * +\def\Length{}% [context] +\def\TableWidth{\hsize}% +\def\ColumnIndex{}% [contextual] =column-number? +\def\HeaderMargin{\z@} +\def\FooterMargin{\z@} +\def\LeftMargin{\z@} +\def\RightMargin{\z@} +\def\TopMargin{\z@} +\def\BottomMargin{\z@} +\def\PageWidth{211mm} +\def\PageHeight{297mm} +\def\placement{htbp} +\edef\OldFontSize{\fSize} +\edef\OldLineSpacing{\LineSpacing} +\edef\OldFontPosture{\fPosture} +\edef\OldFontProportionateWidth{\fProportionateWidth} +\edef\OldFontWeight{\fWeight} +\edef\OldfFamName{\fFamName} +\let\pageFontSize\fSize +\let\pageLineSpacing\LineSpacing +\let\pageFontPosture\fPosture +\let\pageFontProportionateWidth\fProportionateWidth +\let\pageFontWeight\fWeight +\let\pagefFamName\fFamName +\let\ColorRed\@empty +\def\listitem@content@mode{listitem-content-mode} +\newtoks\JadeTeXtoks +\def\@displaylevel{0} +\def\NoLig#1{#1\ifmmode\else\/\fi} +\def\DEBUG#1{\typeout{DBG: #1 at \the\inputlineno}} +% \end{macrocode} +% \section{Nodes and labels} +% A node in mode `listitem-content-mode' is allowed to be +% labeled, but normally only elements in empty mode +% get labels. +% \begin{macrocode} +\let\Label\@empty +\let\Element\@empty +\def\Node#1{% +\ifnum\Mathcount>1\relax +\else + \ifx\\#1\\\else + \let\ProcessingMode\@empty + #1% + \ifx\ProcessingMode\@empty\else + \ifx\ProcessingMode\listitem@content@mode\else + \let\Label\@empty\let\Element\@empty + \fi + \fi +% \typeout{Node <\Label> or <\Element> -- pending at \the\inputlineno}% + \fi + \fi +} +\def\endNode#1{% + \let\Label\@empty\let\Element\@empty%\noindent +} +\def\PageLabel#1{% + \@bsphack + \expandafter\ifx\csname p@#1\endcsname\relax + \else + \protected@write\@auxout{}% + {\string\pagelabel{#1}{\thepage}}% + \fi + \@esphack} +\def\OriginalPageLabel#1{% + \@bsphack\protected@write\@auxout{}% + {\string\pagelabel{#1}{\thepage}}\@esphack} +\def\pagelabel#1#2{\global\@namedef{p@#1}{#2}} +\def\Pageref#1{\expandafter\@Setref\csname p@#1\endcsname{#1}} +\def\@qqq{qqq} +\def\@Setref#1#2{% + \ifx#1\relax + \immediate\write\@mainaux{\string\pagelabel{#2}{qqq}}% + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{Reference `#2' on page \thepage \space + undefined}% + \else + \ifx#1\@qqq + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{Reference `#2' on page \thepage \space undefined}% + \else + \ifNestedLink{#1}% + \else + \hyper@@link[Page]{}{page.#1}{#1}% +% \typeout{Made a Link at \the\inputlineno, to page.#1}% + \fi + \fi + \fi +} +% +\def\insertCurrentNodePageNumber#1{% + \bgroup + \SetupICs{#1}% + \InlineNIC + \ifx\Label\@empty + \Pageref{\Element}% + \else + \Pageref{\Label}% + \fi + \endInlineNIC + \endSetupICs + \egroup +} +% \end{macrocode} +%\section{Atomic flow objects} +% \begin{macrocode} +\def\insertAlignmentPoint#1{} +% \end{macrocode} +% \subsection{Maths} +% \subsubsection{General math sequences} +% \begin{macrocode} +\def\@display{display} +% \end{macrocode} +% We are likely to meet nested math sequences, so maintain a counter +% to determine if we are at the outer level, and should turn +% math (display or inline) off or on. +% \begin{macrocode} +\newcount\Mathcount +\def\MathSeq#1{% + \bgroup + \SetupICs{#1}% + \FlowObjectSetup{0}% + \global\advance\Mathcount by 1% + \let\Action\relax + \ifnum\Mathcount=1 + \ifx\MathDisplayMode\@display + \let\Action\Dmath + \else + \let\Action\Imath + \fi + \fi + \Action +} +\def\endMathSeq{% + \global\advance\Mathcount by -1% + \let\Action\relax + \ifnum\Mathcount=0 + \ifx\MathDisplayMode\@display\let\Action\endDmath\else\let\Action\Imath\fi + \fi + \Action + \endSetupICs + \egroup +} +\def\Dmath{\begingroup\abovedisplayskip\Jadeskip\global\Jadeskip\z@\[} +\def\endDmath{\]\endgroup} +\def\Imath{$} +\def\Cleanmath{\def\Node##1{}\def\endNode##1{}% + \def\MathSeq##1{}\def\endMathSeq##1{} +} +% \end{macrocode} +% \subsubsection{Fences} +% \begin{macrocode} +\def\FenceSerial#1#2#3#4{#1\FlowObjectSetup{0}% + {\Cleanmath +% +% #1: fence characteristics +% #2: fence contents +% #3 open character +% #4 close character +% + \ifx\\#3\\\left.\else + \let\plainCharacter\Character + \let\Character\LeftDelimiterCharacter #3% + \let\Character\plainCharacter\fi + {#2}% + \ifx\\#4\\\right.\else + \let\plainCharacter\Character + \let\Character\RightDelimiterCharacter #4% + \let\Character\plainCharacter\fi + }% +} +% \end{macrocode} +% Simon Pepping added this, to really make sure the open and close +% characters of the fence are proper left and right. +% \begin{macrocode} +\let\plainCharacter\Character +\def\LeftDelimiterCharacter#1{\DelimiterCharacter\left{#1}}% +\def\RightDelimiterCharacter#1{\DelimiterCharacter\right{#1}}% +\def\DelimiterCharacter#1#2{% + \SetupICs{}% + \expandafter\ifx\csname !#2\endcsname\relax + <#2>\typeout{Warning: Unknown character #2, at \the\inputlineno}% + \else\expandafter#1\csname !#2\endcsname\fi % #1 is \left or \right + \ifdim\EscapementSpaceAfterNom=\z@ + \else + \@tempdima\EscapementSpaceAfterNom + \advance\@tempdima by -\EscapementSpaceAfterMin + \@tempdimb\EscapementSpaceAfterNom + \advance\@tempdimb by -\EscapementSpaceAfterMax + \hskip\EscapementSpaceAfterNom plus \@tempdimb minus \@tempdima% + \fi + \endSetupICs{}% +} +% \end{macrocode} +% \subsubsection{Fractions} +% These simply translate into |{Numerator \over Denominator}| +% \begin{macrocode} +\def\FractionSerial#1{#1\FlowObjectSetup{0}\bgroup} +\def\endFractionSerial{\egroup} +\def\FractionDenominator{} +\def\endFractionDenominator{} +\def\FractionNumerator{} +\def\endFractionNumerator{\over } +\def\insertFractionBar{} +% \end{macrocode} +% \subsubsection{Marks} +% Waiting to be implemented. +% \begin{macrocode} +\def\MarkOver#1#2\endMarkOver{} +\def\MarkUnder#1#2\endMarkUnder{} +\def\MarkSerial#1{} +\def\endMarkSerial{} +% \end{macrocode} +% \subsubsection{Operators/limits} +% \begin{macrocode} +\def\MathOperatorSerial#1{#1\FlowObjectSetup{0}\begingroup\Cleanmath} +\def\endMathOperatorSerial{\endgroup} +\def\MathOperatorOperator#1#2\endMathOperatorOperator#3{#1% + \mathop{#2}} +\def\MathOperatorLowerLimit#1{#1_\bgroup} +\def\endMathOperatorLowerLimit#1{\egroup} +\def\MathOperatorUpperLimit#1{#1^\bgroup} +\def\endMathOperatorUpperLimit#1{\egroup} +% \end{macrocode} +% \subsubsection{Radicals} +% \begin{macrocode} +\def\RadicalSerial#1\insertRadicalRadicalDefaulted#2#3\RadicalDegree#4#5\endRadicalDegree#6\endRadicalSerial{#1\FlowObjectSetup{0}% +\ifx\\#5\\\ensuremath{\sqrt{#3}}\else\ensuremath{\root #5 \of {#3}}\fi} +% \end{macrocode} +% \subsubsection{Grids} +% \begin{macrocode} +\newcount\GridCells +\newcount\GridRows +\newif\ifExplicitGrid +\def\Grid#1{#1% + \begingroup + \FlowObjectSetup{0}% + \Cleanmath + \global\GridCells\@ne\global\GridRows0 + \ifnum\NColumns=0 \ExplicitGridtrue\def\NColumns{25}% + \else\ExplicitGridfalse\fi + \begin{array}{*{\NColumns}{c}}% +} +\def\endGrid{\end{array}\endgroup} +\def\GridCell#1{#1\FlowObjectSetup{0}} +\def\endGridCell#1{% + \ifnum\NColumns=\GridCells + \global\GridCells\@ne + \def\@tempa{\cr}% + \else + \global\advance\GridCells\@ne + \def\@tempa{&}% + \fi + \@tempa} +\def\NewColumn{&} +\def\NewRow{\\} +% \end{macrocode} +% \subsubsection{Superscript, subscript} +% \begin{macrocode} +\def\Subscript#1#2{_{#2}} +\def\Superscript#1#2{^{#2}} +% \end{macrocode} +% \subsubsection{Unmath} +% \begin{macrocode} +\def\Unmath#1#2{% + {\SetupICs{#1}\mbox{#2}\endSetupICs}% +} +% \end{macrocode} +% \subsubsection{ScriptSerial} +% \begin{macrocode} +\def\ScriptSerial#1#2#3#4#5#6#7#8{% + \ifx$#3#4$% + \else + \vphantom{#2}_{#4}^{#3}% + \fi + \ifx$#7#8$% + {#2}% + \else + {\mathop{#2}\limits_{#8}^{#7}}\vphantom{#2}% + \fi + _{#6}^{#5}} +% \end{macrocode} +% \subsection{External Graphic flow object class (clause 12.6.15)} +% How we include graphics depends on the NotationSystemId. +% Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de> worked this +% out, and he also made the alignment and indentation work correctly. +%If any other notation needs special +% handling it can be implemented by adding a macro +% |insertExternalGraphicNotationXXX| +% where XXX is the notation name. +% \begin{macrocode} +\def\insertExternalGraphic#1{% + \begingroup + \SetupICs{#1}% + \expandafter\ifx\csname insertExternalGraphicNotation\NotationSystemId\endcsname\relax% + \insertExternalGraphicNotation% + \else + \csname insertExternalGraphicNotation\NotationSystemId\endcsname + \fi + \endgroup +} +\newbox\jadeGraphic +\newdimen\jadeGraphicHeight +\newdimen\jadeGraphicWidth +\def\insertExternalGraphicNotation{% + \ifnum\@TableNest>0\def\IsDisplay{0}\fi + \ExternalGraphicNIC + \ifcase\IsDisplay +% 0, its inline + \setbox\jadeGraphic=\hbox{\expandafter\IncludeGraphic\EntitySystemId\\}% + \noindent%Enter hmode + \ifdim\PositionPointX>\z@ + \kern -\PositionPointX + \fi + \ifnum\Layer>0% +% Graphic drawn at layer > 0 overwrites surrounding text + \jadeGraphicWidth=\wd\jadeGraphic + \raisebox{-\PositionPointY}[\z@][\z@]{\box\jadeGraphic} + \kern\PositionPointX\kern-\jadeGraphicWidth + \else + \jadeGraphicHeight=\ht\jadeGraphic + \advance\jadeGraphicHeight by \dp\jadeGraphic + \advance\jadeGraphicHeight by -\PositionPointY + \raisebox{-\PositionPointY}[\jadeGraphicHeight][\PositionPointY]{% + \box\jadeGraphic + }% + \fi +% 1 its display + \or% + \DisplayNIC + \@@par% + \@tempdima\columnwidth + \nointerlineskip + \ifdim\EndIndent>\z@ + \advance\@tempdima by-\EndIndent + \fi + \ifdim\StartIndent>\z@ + \advance\@tempdima by-\StartIndent + \moveright\StartIndent + \fi + \hbox to\@tempdima{% + \ifx\DisplayAlignment\A@center\hfill\fi% + \ifx\DisplayAlignment\A@end\hfill\fi% + \expandafter\IncludeGraphic\EntitySystemId\\% + \ifx\DisplayAlignment\A@center\hfill\fi% + \ifx\DisplayAlignment\A@start\hfill\fi% + }% + \@@par% + \else% + \expandafter\IncludeGraphic\EntitySystemId\\% + \fi + \endExternalGraphicNIC + \ifcase\IsDisplay + \or + \endDisplayNIC + \fi +} +\def\insertExternalGraphicNotationTEX{% + \input\EntitySystemId +} +\def\IncludeGraphic{\@ifnextchar<{\@IncludeGraphic}{\@IncludeGraphic<>}} +\def\scale@max{max} +\def\scale@false{false} +\def\scale@maxuniform{max-uniform} +% \end{macrocode} +% There are three situations: ScaleX and ScaleY are supplied +% (possibly identical), in which case ScaleType is `false', or +% ScaleType is `max' or `max-uniform' (the default); in the latter +% cases, use MaxWidth and MaxHeight, with and without preserved +% aspect ratio. The width and height default to \LaTeX{} graphics package +% `!', ie their natural size. I \emph{think} this is the right +% interpretation of the standard. +% \begin{macrocode} +\def\Exclams{!!} +\def\@IncludeGraphic<#1>#2\\{% + \ifx\ScaleType\scale@false + \ifx\ScaleX\ScaleY + \scalebox{\ScaleX}{\includegraphics{#2}}% + \else + \scalebox{\ScaleX}[\ScaleY]{\includegraphics{#2}}% + \fi + \else + \ifx\ScaleType\scale@maxuniform + \edef\MaxBoth{\MaxHeight\MaxWidth}% + \ifx\MaxBoth\Exclams + \includegraphics{#2}% + \else + \includegraphics[width=\MaxWidth,keepaspectratio=true, + height=\MaxHeight]{#2}% + \fi + \else + \ifx\ScaleType\scale@max + \includegraphics[width=\MaxWidth,height=\MaxHeight, + keepaspectratio=false]{#2}% + \else + \typeout{ERROR: invalid scale type of \ScaleType}% + \fi + \fi + \fi +} +\def\insertPageNumber#1{#1% + \csname PageNumbering@\PageNumberFormat\endcsname\c@page} +\def\insertParagraphBreak#1{\@@par} +% +\def\horizontal{horizontal} +\def\vertical{vertical} +\def\escapement{escapement} +\def\LineThickness{1pt} +\def\A@center{center} +\def\A@end{end} +\def\A@start{start} +\def\insertRule#1{% + \bgroup + \SetupICs{#1}% + \def\IsDisplay{0} + \ifx\Orientation\horizontal\def\IsDisplay{1}\fi + \ifx\Orientation\vertical\def\IsDisplay{1}\fi + \RuleNIC + \ifcase\IsDisplay +% 0, its inline + \ifx\Orientation\escapement + \ifx\Length\@empty +% Length isn't specified, so it depends of the context. +% No rule is a good context ;-) + \else + \noindent\raisebox{\PositionPointShift}[\z@][\z@]{\vrule width \Length height \LineThickness depth \z@} + \ifnum\Layer>0 + \kern-\Length% + \fi + \fi + \else +% Line-progression orientation doesn't affect placement of subsequent +% flow object. [Note 104] + \ifx\Length\@empty +% Length isn't specified, so it depends of the context. +% No rule is a good context ;-) + \else + \raisebox{\PositionPointShift}[\z@][\z@]{\vrule width \LineThickness height \z@ depth \Length} + \fi + \kern-\LineThickness% + \fi +% 1 its display + \or% + \DisplayNIC + \@@par% + \@tempdima\linewidth + \nointerlineskip + \ifdim\EndIndent>\z@ + \advance\@tempdima by-\EndIndent + \fi + \ifdim\StartIndent>\z@ + \advance\@tempdima by-\StartIndent + \moveright\StartIndent + \fi + \hbox to\@tempdima{% + \ifx\DisplayAlignment\A@center\hfill\fi + \ifx\DisplayAlignment\A@end\hfill\fi + \ifx\Orientation\horizontal + \ifx\Length\@empty\else \hbox to \Length\fi + {\leaders\hrule height \LineThickness \hfill}% + \else + \hbox to \LineThickness {\leaders\hrule + \ifx\Length\@empty\else height \Length \fi \relax + \hfill}% + \fi + \ifx\DisplayAlignment\A@center\hfill\fi + \ifx\DisplayAlignment\A@start\hfill\fi + }% + \nointerlineskip + \@@par% + \else% +% Unknown IsDiplay + \typeout{ERROR: invalid IsDisplay value of \IsDisplay}% + \fi + \endRuleNIC + \ifcase\IsDisplay + \or + \endDisplayNIC + \fi + \endSetupICs + \egroup +} +% \end{macrocode} +% \subsection{Tables} +% \begin{macrocode} +\setlength\arraycolsep\z@ +\setlength\tabcolsep\z@ +%\extrarowheight3\p@ +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\def\arraybackslash{\let\\=\@arraycr} +\renewcommand{\arraystretch}{0} +% Those are for backward compatibility +\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} +\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} +\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} +% Those columns defs follows the direction of the corresponding +% keys on a QWERTY keyboard. +\newcolumntype{T}[3]{@{\hspace{#1}}>{\raggedright\arraybackslash}p{#2}@{\hspace{#3}}} +\newcolumntype{Y}[3]{@{\hspace{#1}}>{\centering\arraybackslash}p{#2}@{\hspace{#3}}} +\newcolumntype{U}[3]{@{\hspace{#1}}>{\raggedleft\arraybackslash}p{#2}@{\hspace{#3}}} +\newcolumntype{G}[3]{@{\hspace{#1}}>{\raggedright\arraybackslash}m{#2}@{\hspace{#3}}} +\newcolumntype{H}[3]{@{\hspace{#1}}>{\centering\arraybackslash}m{#2}@{\hspace{#3}}} +\newcolumntype{J}[3]{@{\hspace{#1}}>{\raggedleft\arraybackslash}m{#2}@{\hspace{#3}}} +\newcolumntype{B}[3]{@{\hspace{#1}}>{\raggedright\arraybackslash}b{#2}@{\hspace{#3}}} +\newcolumntype{N}[3]{@{\hspace{#1}}>{\centering\arraybackslash}b{#2}@{\hspace{#3}}} +\newcolumntype{M}[3]{@{\hspace{#1}}>{\raggedleft\arraybackslash}b{#2}@{\hspace{#3}}} +% The numeric column types follows the numeric keypad direction +% and support colour +\newcolumntype{7}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\raggedright\arraybackslash}p{#2}@{\hspace{#3}}} +\newcolumntype{8}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\centering\arraybackslash}p{#2}@{\hspace{#3}}} +\newcolumntype{9}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\raggedleft\arraybackslash}p{#2}@{\hspace{#3}}} +\newcolumntype{4}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\raggedright\arraybackslash}m{#2}@{\hspace{#3}}} +\newcolumntype{5}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\centering\arraybackslash}m{#2}@{\hspace{#3}}} +\newcolumntype{6}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\raggedleft\arraybackslash}m{#2}@{\hspace{#3}}} +\newcolumntype{1}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\raggedright\arraybackslash}b{#2}@{\hspace{#3}}} +\newcolumntype{2}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\centering\arraybackslash}b{#2}@{\hspace{#3}}} +\newcolumntype{3}[4]{@{\hspace{#1}}>{\columncolor[rgb]{#4}\raggedleft\arraybackslash}b{#2}@{\hspace{#3}}} +\newcount\@tmpcounta +\def\JadeRowSpanBox#1{\csname jadeRowSpanBox#1\endcsname} +\def\JadeRowSpanSpace#1{\csname jadeRowSpanSpace#1\endcsname} +\def\JadeRowSpan{% + \expandafter\ifx\csname jadeRowSpanBox\ColumnIndex\endcsname\relax + \expandafter\newbox\csname jadeRowSpanBox\ColumnIndex\endcsname + \expandafter\newdimen\csname jadeRowSpanSpace\ColumnIndex\endcsname + \fi + \setbox\JadeRowSpanBox{\ColumnIndex}\vtop\bgroup\noindent% +} +\def\endJadeRowSpan{% + \egroup% + \global\JadeRowSpanSpace{\ColumnIndex}\ht\JadeRowSpanBox{\ColumnIndex}% + \global\advance\JadeRowSpanSpace{\ColumnIndex} by \dp\JadeRowSpanBox{\ColumnIndex}% + \@tempdima\ht\JadeRowSpanBox{\ColumnIndex}% + \@tempdimb\dp\JadeRowSpanBox{\ColumnIndex}% + \@tmpcounta\NRowsSpanned% + \advance\@tmpcounta by -1% + \@tempdima\CellBeforeRowMargin% + \@tempdimb\CellAfterRowMargin% + \multiply\@tempdima by \@tmpcounta% + \multiply\@tempdimb by \@tmpcounta% + \global\advance\JadeRowSpanSpace{\ColumnIndex} by -\@tempdima% + \global\advance\JadeRowSpanSpace{\ColumnIndex} by -\@tempdimb% + \global\divide\JadeRowSpanSpace{\ColumnIndex} by \NRowsSpanned% + \vtop to \JadeRowSpanSpace{\ColumnIndex}{\unvbox\JadeRowSpanBox{\ColumnIndex}} +} +\def\JadeRowSpanFiller{% +\expandafter\ifx\csname jadeRowSpanBox\ColumnIndex\endcsname\relax + \errmessage{Invalid row span identifier} +\fi +\vtop to \JadeRowSpanSpace{\ColumnIndex}{}% +} +\def\insertTableAfterColumnBorder#1{} +\def\insertTableAfterRowBorder#1{} +\def\insertTableBeforeColumnBorder#1{} +\def\insertTableBeforeRowBorder#1{} +% +\def\insertTableCellAfterColumnBorder#1{\edef\AfterCol{\BorderPresent}} +\def\insertTableCellAfterRowBorder#1{\edef\AfterRow{\BorderPresent}} +\def\insertTableCellBeforeColumnBorder#1{\edef\BeforeCol{\BorderPresent}} +\def\insertTableCellBeforeRowBorder#1{\edef\BeforeRow{\BorderPresent}} +\def\insertTableColumn#1{#1} +% \end{macrocode} +% \section{Non-atomic flow objects} +% \subsection{Box flow object class} +% \begin{macrocode} +\def\BOX#1{% + \SetupICs{#1}% + \fboxrule\LineThickness + \@tempdima\columnwidth + \ifdim\EndIndent>\z@ + \advance\@tempdima by-\EndIndent + \fi + \ifdim\StartIndent>\z@ + \advance\@tempdima by-\StartIndent + \hspace*{\StartIndent}% + \fi + \advance\@tempdima by-\StartIndent + \setbox0\vbox\bgroup\def\StartIndent{\z@}\hsize\@tempdima\ignorespaces} +\def\endBOX{% + \ifhmode\unskip\fi + \egroup% + % FIXME: we aren't handling box-type: 'both + \ifx\BackgroundColorRed\@empty + \ifdim\ht0>\ht\strutbox + \noindent\fbox{\box0}% + \else + \setbox0\vbox{\unvbox0\global\setbox1\lastbox}% + \noindent\fbox{\kern-\parindent\unhbox1\unskip\unskip}% + \fi + \else + \c@lor@RGB@rgb{\BackgroundColorRed}\@tempa + \c@lor@RGB@rgb{\BackgroundColorGreen}\@tempb + \c@lor@RGB@rgb{\BackgroundColorBlue}\@tempc + \ifdim\ht0>\ht\strutbox + \noindent\colorbox[rgb]{\@tempa, \@tempb, \@tempc}{\box0}% + \else + \setbox0\vbox{\unvbox0\global\setbox1\lastbox}% + \noindent\colorbox[rgb]{\@tempa, \@tempb, \@tempc}{\kern-\parindent\unhbox1\unskip\unskip}% + \fi +\fi% +} +% \end{macrocode} +% \subsection{Multicolumn management macros} +% Contributed by Simon Pepping. +% \begin{macrocode} +\def\closeOrOpenMulticols#1{% + % juggling with nesting levels + {#1\global\edef\SavedSpan{\Span}}% + \ifnum\@displaylevel=0\relax\ifnum\PageNColumns>1\relax + % close + \ifnum\SavedSpan>1\relax + \ifnum\col@number>1\relax % in multicols + \ifnum\PageBalanceColumns>0 + \end{multicols} + \else + % \endmulticols* + \vfill\end{multicols} + \fi + \fi + % or delayed open + \else % not \ifnum\SavedSpan>1\relax + \ifnum\col@number=1 % not in multicols + \columnsep\PageColumnSep + \ifnum\PageBalanceColumns>0 + \begin{multicols}{\PageNColumns} + \else + % \begin{multicols*}{\PageNColumns} + \let\balance@columns@out + \multi@column@out + \begin{multicols}{\PageNColumns} + \fi + \fi + \fi + \fi\fi +} + +\def\openMulticols{% + \ifnum\@displaylevel=0\relax + \def\@displaylevel{1}% + % local to this nesting level, for use by endDisplayGroup + \edef\@SavedSpan{\SavedSpan} + \ifnum\PageNColumns>1\relax + \ifnum\@SavedSpan>1\relax + \ifnum\@SavedSpan=\PageNColumns\else + \columnsep\PageColumnSep + \ifnum\PageBalanceColumns>0 + \begin{multicols}{\PageNColumns} + \else + % \begin{multicols*}{\PageNColumns} + \let\balance@columns@out + \multi@column@out + \begin{multicols}{\PageNColumns} + \fi + \fi + \fi + \fi + \else + \def\@displaylevel{2}% + \fi +} + +\def\closeMulticols{% + \ifnum\@displaylevel=1\ifnum\PageNColumns>1\relax + \ifnum\@SavedSpan>1\relax + \ifnum\@SavedSpan=\PageNColumns\else + \ifnum\PageBalanceColumns>0 + \end{multicols} + \else + % \endmulticols* + \vfill\end{multicols} + \fi + \fi + \fi + \fi\fi +} +% \end{macrocode} +% \subsection{Display group flow object class (clause 12.6.2)} +% \begin{macrocode} +\def\Keep@Page{page} +\def\Keep@Column{column} +\newif\ifKeepPage +\KeepPagefalse +\def\DisplayGroup#1{\ifnum\@TableNest>0\SetupICs{#1}\else\@DisplayGroup{#1}\fi} +\def\@DisplayGroup#1{% + \closeOrOpenMulticols{#1} + \begingroup + \SetupICs{#1}% + \FlowObjectSetup{1}% + \ifx\Keep\Keep@Page\KeepPagetrue + \else + \ifx\Keep\Keep@Column\KeepPagetrue + \else + \KeepPagefalse + \fi + \fi + \ifKeepPage + \vbox\bgroup + \fi + \DisplayGroupNIC + \ifnum\Mathcount>0\relax + \else\everypar{\UseJadevskip{everypar}}\@@par + \fi + \FlowObjectSetup{1}% + \openMulticols +} +\def\endDisplayGroup#1{\ifnum\@TableNest>0\else\@endDisplayGroup{#1}\fi} +\def\@endDisplayGroup#1{% + \closeMulticols + \ifnum\Mathcount>0\relax\else + \@@par + \fi + \endDisplayGroupNIC + \ifKeepPage + \egroup + \fi + \endgroup + \gdef\SavedSpan{0}% +% \end{macrocode} +% This eats the parindent, and then restores an empty everypar; +% it is called by an implicit start of hmode. Contributed by Simon Pepping. +% \begin{macrocode} + \everypar{{\leavevmode\setbox\z@\lastbox \UseJadevskip{everypar}}% + \everypar{\UseJadevskip {everypar}}% + } +} +% \end{macrocode} +% \subsection{Leader flow object class} +% \begin{macrocode} +\newsavebox{\leaderbox} +\def\Leader#1{#1\begin{LRbox}{\leaderbox}} +\def\endLeader{\end{LRbox}\noindent\leaders\box\leaderbox\hfill} +% \end{macrocode} +% \subsection{Line Field flow object class} +% Field align can be \emph{start}, \emph{end}, or \emph{center}. +% \begin{macrocode} +\newsavebox\dssslbox +\def\LRbox#1{% + \edef\reserved@a{% + \endgroup + \setbox#1\hbox{% + \begingroup\aftergroup}% + \def\noexpand\@currenvir{\@currenvir}}% + \reserved@a + \@endpefalse + \color@setgroup\ignorespaces +} +\def\LRboxW#1#2{% + \edef\reserved@a{% + \endgroup + \setbox#1\hbox to #2{% + \begingroup\aftergroup}% + \def\noexpand\@currenvir{\@currenvir}}% + \reserved@a + \@endpefalse + \color@setgroup\ignorespaces +} +\def\endLRbox{\color@endgroup} +\let\endLRboxW\endLRbox +\def\LineField#1{\bgroup + \SetupICs{#1}% + \LineFieldNIC + \FlowObjectSetup{0}% + \begin{LRbox}{\dssslbox}% +} +\def\endLineField{% + \end{LRbox}% + \ifdim\wd\dssslbox>\FieldWidth\def\FieldWidth{\wd\dssslbox}\fi + \makebox[\FieldWidth][\csname Fld@\FieldAlign\endcsname]{% + \ifdim\PositionPointShift=\z@ + \usebox{\dssslbox}% + \else + \raisebox{\PositionPointShift}{\usebox{\dssslbox}}% + \fi + \EndSetFont}% + \endLineFieldNIC + \endSetupICs + \egroup +} +% +% \end{macrocode} +% \subsection{Link flow object class (clause 12.6.28.3)} +% \begin{macrocode} +\newif\ifLabelElements +\LabelElementstrue +\newif\ifNestedLink +\NestedLinkfalse +\def\LinkType{link} +\def\Link#1{% + \begingroup + \SetupICs{#1}% + \ifx\Label\@empty\let\Label\Element\fi +% \typeout{Made a Link at \the\inputlineno, to \Label}% + \hyper@linkstart{\LinkType}{\Label}% + \NestedLinktrue +} +\def\endLink{% + \hyper@linkend + \NestedLinkfalse + \endSetupICs + \endgroup +} +% \end{macrocode} +% \subsection{Marginalia flow object class (clause 12.6.28.4)} +% \begin{macrocode} +\def\Marginalia#1{#1\FlowObjectSetup{0}} +\def\endMarginalia{} +% \end{macrocode} +% \subsection{Paragraph flow object class (clause 12.6.6)} +%\begin{longtable}{|P{.2\textwidth}|l|P{.25\textwidth}|l|l|} +%\hline +%\itshape +%Characteristic& +%\itshape Inh.&\itshape Values&\itshape Default&\itshape Dsssl-o\\ +%\hline +%\endhead +%\hline +%\endfoot +%lines&I&wrap, asis, asis-wrap*, asis-truncate*, none&wrap&Partial\\ +%\rowcolor{yellow} +%asis-truncate-char&I&\#f, \emph{char object}& &Ignore\\ +%asis-wrap-char&I&\#f, \emph{char object}& &Ignore\\ +%\rowcolor{yellow} +%asis-wrap-indent&I&\emph{length-spec}& &Ignore\\ +%first-line-align&I&\#f, \emph{char object}& &Ignore\\ +%\rowcolor{yellow} +%alignment-point-offset&I&\#f, \emph{number between 0 and 100}& &Ignore\\ +%ignore-record-end?&I&\#f, \#t&\#f&Standard\\ +%\rowcolor{yellow} +%expand-tabs?&I&\#f, \emph{integer greater than zero}&8&Standard\\ +%line-spacing&I&\emph{length-spec}&12pt&Standard\\ +%\rowcolor{yellow} +%line-spacing-priority&I&force, \emph{integer}&0&Default\\ +%min-pre-line-spacing&I&\#f, \emph{length-spec}&\#f&Default\\ +%\rowcolor{yellow} +%min-post-line-spacing&I&\#f, \emph{length-spec}&\#f&Default\\ +%min-leading&I&\#f, \emph{length-spec}&\#f&Standard\\ +%\rowcolor{yellow} +%first-line-start-indent&I&\emph{length-spec}&0m&Standard\\ +%last-line-end-indent&I&\emph{length-spec}&0m&Default\\ +%\rowcolor{yellow} +%hyphenation-char&I&\emph{character}& &Ignore\\ +%hyphenation-method&I&\#f, \emph{public identifier}&\#f&Default\\ +%\rowcolor{yellow} +%hyphenation-ladder-count&I&\#f, \emph{integer greater than zero}&\#f&Default\\ +%hyphenation-remain-char-count&I&\emph{positive integer}&2&Ignore\\ +%\rowcolor{yellow} +%hyphenation-push-char-count&I&\emph{positive integer}&2&Ignore\\ +%hyphenation-keep&I&\#f, spread, page, column&\#f&Default\\ +%\rowcolor{yellow} +%hyphenation-exceptions&I&\emph{list of strings}&empty list&Default\\ +%line-breaking-method&I&\#f, \emph{public identifier}&\#f&Default\\ +%\rowcolor{yellow} +%line-composition-method&I&\#f, \emph{public identifier}&\#f&Default\\ +%implicit-bidi-method&I&\#f, \emph{public identifier}& &Default\\ +%\rowcolor{yellow} +%glyph-alignment-mode&I&base, center, top, bottom, font&font&Default\\ +%font-family-name&I&\#f, \emph{string}&iso-serif&Standard\\ +%\rowcolor{yellow} +%font-weight&I&\#f, not-applicable*, ultra-light*, extra-light*, light, semi-light*, medium, semi-bold*, bold, extra-bold*, ultra-bold*&medium&Partial\\ +%font-posture&I&\#f, not-applicable*, upright, oblique, back-slanted-oblique*, italic, back-slanted-italic*&upright&Partial\\ +%\rowcolor{yellow} +%font-structure&I&\#f, not-applicable, solid, outline&solid&Default\\ +%font-proportionate-width&I&\#f, not-applicable*, ultra-condensed*, extra-condensed*, condensed, semi-condensed*, medium, semi-expanded*, expanded, extra-expanded*, ultra-expanded*&medium&Partial\\ +%\rowcolor{yellow} +%font-name&I&\#f, \emph{public identifier}& &Standard\\ +%font-size&I&\emph{length}&10pt&Standard\\ +%\rowcolor{yellow} +%numbered-lines?&I&\#f, \#t&\#t&Ignore\\ +%line-number&I&\#f, \emph{unlabeled sosofo}& &Ignore\\ +%\rowcolor{yellow} +%line-number-side&I&start, end, spread-inside, spread-outside, page-inside, page-outside& &Ignore\\ +%line-number-sep&I&\emph{length-spec}& &Ignore\\ +%\rowcolor{yellow} +%quadding&I&start, end, spread-inside*, spread-outside*, page-inside*, page-outside*, center, justify*&start&Partial\\ +%last-line-quadding&I&relative, start, end, spread-inside, spread-outside, page-inside, page-outside, center, justify&relative&Default\\ +%\rowcolor{yellow} +%last-line-justify-limit&I&\emph{length-spec}&0&Ignore\\ +%justify-glyph-space-max-add&I&\emph{length-spec}&0m&Ignore\\ +%\rowcolor{yellow} +%justify-glyph-space-max-remove&I&\emph{length-spec}&0m&Ignore\\ +%hanging-punct?&I&\#f, \#t&\#f&Default\\ +%\rowcolor{yellow} +%widow-count&I&\emph{positive integer}&2&Default\\ +%orphan-count&I&\emph{positive integer}&2&Default\\ +%\rowcolor{yellow} +%language&I&\#f, \emph{ISO 639 language code}&\#f&Standard\\ +%country&I&\#f, \emph{ISO 3166 country code}&\#f&Standard\\ +%\rowcolor{yellow} +%position-preference&N&\#f, top, bottom&\#f&Ignore\\ +%writing-mode&I&left-to-right, right-to-left, top-to-bottom&left-to-right&Default\\ +%\rowcolor{yellow} +%start-indent&I&\emph{length-spec}&0m&Standard\\ +%end-indent&I&\emph{length-spec}&0m&Standard\\ +%\rowcolor{yellow} +%span&I&\emph{integer greater than zero}&1&Default\\ +%span-weak?&I&\#f, \#t&\#f&Default\\ +%\rowcolor{yellow} +%space-before&N&\emph{display space}&no space before &Standard\\ +%space-after&N&\emph{display space}&no space after &Standard\\ +%\rowcolor{yellow} +%keep-with-previous?&N&\#f, \#t&\#f&Standard\\ +%keep-with-next?&N&\#f, \#t&\#f&Standard\\ +%\rowcolor{yellow} +%break-before&N&\#f, page, page-region*, column*, column-set*&\#f&Partial\\ +%break-after&N&\#f, page, page-region*, column*, column-set*&\#f&Partial\\ +%\rowcolor{yellow} +%keep&N&\#f, page, column-set*, column*, \#t*&\#f&Partial\\ +%may-violate-keep-before?&N&\#f, \#t&\#f&Default\\ +%\rowcolor{yellow} +%may-violate-keep-after?&N&\#f, \#t&\#f&Default\\ +%\end{longtable} +% \begin{macrocode} +\newcount\@TablePars +\newcount\@ParNest +\newcount\@TableNest +\def\Par#1{% +% \end{macrocode} +% We need to end the current paragraph, with its current line spacing, +% hyphenation, what have you, before anything is done. +% This could have horrible repercussions, but something like +% it is necessary. +% \begin{macrocode} + \everypar{\UseJadevskip{everypar}}\@@par + \closeOrOpenMulticols{#1} + \begingroup + \SetupICs{#1}% + \ParagraphNIC + \FlowObjectSetup{1}% + \openMulticols + \paraSetup% +} +\def\TablePar#1{% + \begingroup + \let\@action\relax + \global\advance\@ParNest by 1 + \ifnum\@ParNest=1 + \ifnum\@TablePars>0% + \def\@action{\@@par}%\@arraycr}% + \fi + \else + \ifnum\@ParNest>1 + \ifnum\@TablePars>0\def\@action{\par}\fi + \fi + \fi + \@action + \SetupICs{#1}% + \csname startQ@\Quadding\endcsname + \FlowObjectSetup{1}% + \paraSetup% +} +\def\FootnotePar#1{% + \begingroup + \let\@action\relax + \global\advance\@ParNest by 1 + \ifnum\@ParNest=1 + \ifnum\@FootnotePars>0% + \def\@action{\@@par}% + \fi + \else + \ifnum\@ParNest>1 + \ifnum\@FootnotePars>0\def\@action{\par}\fi + \fi + \fi + \@action + \SetupICs{#1}% + \csname startQ@\Quadding\endcsname + \FlowObjectSetup{1}% + \paraSetup% +} +\def\HeadPar#1{\Par{#1}} +\setcounter{tocdepth}{99} +\def\@mysect#1#2#3{% + \edef\@thishlabel{\csname theH#1\endcsname}% + \pdfbookmark[#2]{#3}{\@thishlabel}% +} +% \end{macrocode} +% From J.-M. Kubek, for PDF bookmarks +% \begin{macrocode} +\newcounter {headingOne} +\newcounter {headingTwo}[headingOne] +\newcounter {headingThree}[headingTwo] +\newcounter {headingFour}[headingThree] +\newcounter {headingFive}[headingFour] +\def\theHheadingOne{\arabic{headingOne}} +\def\theHheadingTwo{\theHheadingOne.\arabic{headingTwo}} +\def\theHheadingThree{\theHheadingTwo.\arabic{headingThree}} +\def\theHheadingFour{\theHheadingThree.\arabic{headingFour}} +\def\theHheadingFive{\theHheadingFour.\arabic{headingFive}} +\def\endHeadPar#1{% + \ifnum\@TableNest>0 + \ifnum\@ParNest>1 + \ifnum\@TablePars>0\box\@@par\fi + \fi + \csname endQ@\Quadding\endcsname\null + \global\advance\@TablePars by 1 + \global\advance\@ParNest by -1 + \else + \ifnum\HeadingLevel>0% + \ifnum\HeadingLevel=1% + \addtocounter{headingOne}{1}% + \@mysect{headingOne}{0}{\HeadingText}% + \else\ifnum\HeadingLevel=2% + \addtocounter{headingTwo}{1}% + \@mysect{headingTwo}{1}{\HeadingText}% + \else\ifnum\HeadingLevel=3% + \addtocounter{headingThree}{1}% + \@mysect{headingThree}{2}{\HeadingText}% + \else\ifnum\HeadingLevel=4% + \addtocounter{headingFour}{1}% + \@mysect{headingFour}{3}{\HeadingText}% + \else\ifnum\HeadingLevel=5% + \addtocounter{headingFive}{1}% + \@mysect{headingFive}{4}{\HeadingText}% + \fi + \fi + \fi + \fi + \fi + \fi +% SP + \closeMulticols + \@@par + \endParagraphNIC + \fi + \endSetupICs + \endgroup +% \end{macrocode} +% This eats the parindent, and then restores an empty everypar; +% it is called by an implicit start of hmode. Contributed by Simon Pepping. +% \begin{macrocode} + \everypar{{\leavevmode\setbox\z@\lastbox \UseJadevskip{everypar}}% + \everypar{\UseJadevskip {everypar}}% + } +} +\def\endPar#1{% + \ifnum\@TableNest>0 + \let\@action\relax + \ifnum\@ParNest>1 + \ifnum\@TablePars>0\def\@action{\@@par}\fi + \fi + \@action + \csname endQ@\Quadding\endcsname\null + \global\advance\@TablePars by 1 + \global\advance\@ParNest by -1 + \else +% SP + \closeMulticols + \@@par + \endParagraphNIC + \fi + \endSetupICs + \endgroup +% \end{macrocode} +% This eats the parindent, and then restores an empty everypar; +% it is called by an implicit start of hmode. Contributed by Simon Pepping. +% \begin{macrocode} + \everypar{{\leavevmode\setbox\z@\lastbox \UseJadevskip{everypar}}% + \everypar{\UseJadevskip {everypar}}% + } +} +\def\endFootnotePar#1{% + \let\@action\relax + \ifnum\@ParNest>1 + \ifnum\@FootnotePars>0\def\@action{\@@par}\fi + \fi + \@action + \csname endQ@\Quadding\endcsname\null + \global\advance\@FootnotePars by 1 + \global\advance\@ParNest by -1 + \endSetupICs + \endgroup + \everypar{{\leavevmode\setbox\z@\lastbox \UseJadevskip{everypar}}% + \everypar{\UseJadevskip {everypar}}% + } +} +% \end{macrocode} +% \subsection{Score flow object class (clause 12.6.17)} +% No support for: score-spaces, color or +% line-thickness yet. +% +% \begin{macrocode} +\def\Scoreafter{\uline} +\def\Scorethrough{\sout} +\def\Scorebefore{} +\def\Score#1#2\endScore{#1 + \csname Score\ScoreType\endcsname{#2}% +} +% \end{macrocode} +% \subsection{Scroll flow object class (clause 12.6.28.1)} +% \begin{macrocode} +\def\Scroll{\SpS} +\def\endScroll{\endSpS} +% \end{macrocode} +% \subsection{Sequence flow object class (clause 12.6.1)} +% We have to allow for the document starting with a +% sequence, not a simple page sequence, so we check if the +% `begin document' work has been done. +% \begin{macrocode} +\newdimen\CurPosShift\CurPosShift\z@ +\newif\if@Raised +\def\Seq#1{% + \ifInSpS\begingroup\fi + \SetupICs{#1}% + \ifx \@nodocument\relax + \else + \typeout{Jade begin document sequence at \the\inputlineno}% + \JadeSetPage + \JadeBeginDocument + \ifnum\PageNColumns>1 + \columnsep\PageColumnSep + \ifnum\PageBalanceColumns>0 + \begin{multicols}{\PageNColumns} + \else + % begin\{multicols*}{\PageNColumns} + \let\balance@columns@out + \multi@column@out + \begin{multicols}{\PageNColumns} + \fi + \fi + \fi + \FlowObjectSetup{0}% + \@Raisedfalse + \ifdim\PositionPointShift=\CurPosShift + \else + \@tempdima\PositionPointShift + \ifdim\PositionPointShift>\CurPosShift + \advance\@tempdima by -\CurPosShift + \else + \advance\@tempdima by \CurPosShift + \fi + \CurPosShift\PositionPointShift + \@Raisedtrue + \fi + \ifnum\@TableNest>0\else\if@Raised\leavevmode\raise\@tempdima\hbox\bgroup\fi\fi +} +\def\endSeq{% + \ifnum\@TableNest>0\else\if@Raised\egroup\fi\fi + \EndSetFont + \endSetupICs + \@Raisedfalse + \ifInSpS\endgroup\fi +} +% \end{macrocode} +% \subsection{Side Line flow object class} +% \begin{macrocode} +\def\SideLine#1{#1} +\def\endSideLine{} +% \end{macrocode} +% \subsection{Simple Page Sequence flow object class (clause 12.6.3)} +% Look out for the canonical 1in margins in TeX systems! +% \begin{macrocode} +\def\JadeSetPage{% + \ifnum\PageNumberRestart=1 + \global\c@page \@ne + \fi + \ifnum\PageTwoSide=0 + \global\@twosidefalse + \else + \global\@twosidetrue + \fi + \oddsidemargin\LeftMargin + \ifnum\PageTwoSide=0 + \evensidemargin\LeftMargin + \else + \evensidemargin\RightMargin + \fi + \topmargin\HeaderMargin + \headheight\LineSpacing + \headsep\TopMargin + \advance\headsep by -\HeaderMargin + \advance\headsep by -\LineSpacing + \footskip\BottomMargin + \advance\footskip by -\FooterMargin + \paperwidth\PageWidth + \paperheight\PageHeight + \textheight\paperheight + \textwidth\paperwidth + \advance\textheight by -\TopMargin + \advance\textheight by -\BottomMargin + \advance\textwidth by -\LeftMargin + \advance\textwidth by -\RightMargin + \ifx\pdfimage\@undefined + \else + \global\pdfpagewidth\paperwidth + \global\pdfpageheight\paperheight + \fi + \@colht\textheight + \@colroom\textheight + \vsize\textheight + \headwidth\textwidth + \linewidth\textwidth + \columnwidth\textwidth + \hsize\columnwidth \linewidth\hsize + \headheight12pt + \let\pageFontSize\fSize + \let\pageLineSpacing\LineSpacing + \let\pageFontPosture\fPosture + \let\pageFontProportionateWidth\fProportionateWidth + \let\pageFontWeight\fWeight + \let\pagefFamName\fFamName + \arraycolsep\GridColumnSep +} +% initialize it +\JadeSetPage +\def\JadeBeginDocument{% +% \end{macrocode} +% We borrow most of the code of |\begin{document}|; we do not +% want it all, as it interposes an unwanted group. +% \begin{macrocode} + \@clubpenalty\clubpenalty + \begingroup\@floatplacement\@dblfloatplacement + \makeatletter\let\@writefile\@gobbletwo + \global \let \@multiplelabels \relax + \@input{\jobname.aux}% + \endgroup + \immediate\openout\@mainaux\jobname.aux + \immediate\write\@mainaux{\relax}% + \process@table + \let\glb@currsize\@empty %% Force math initialisation. + \normalsize + \everypar{\UseJadevskip{everypar}}% + \@noskipsecfalse + \let \@refundefined \relax + \let\AtBeginDocument\@firstofone + \ifdim\topskip<1sp\global\topskip 1sp\relax\fi + \global\@maxdepth\maxdepth + \@begindocumenthook + \global\let\@begindocumenthook\@undefined + \global\let\@filelist\relax + \global\let\@addtofilelist\@gobble + \gdef\do##1{\global\let ##1\@notprerr}% + \@preamblecmds + \global\let \@nodocument \relax + \global\let\do\noexpand + \ignorespaces +} +\newif\ifInSpS +\def\SpS#1{% + \InSpStrue + \DoFOBSettrue + \SetupICs{#1}% + \gdef\thepage{\csname PageNumbering@\PageNumberFormat\endcsname\c@page}% +% \end{macrocode} +% The basic page setup needs to be delayed to this point, otherwise +% the first page will be `frozen' in the format file. So check +% here whether we are at the start of the document, and if so trigger +% \LaTeX's |\begin{document}|. This is a pain, delaying the start of +% the document. It means that documents which don't have a simple-page- +% sequence at the start will fail. +% \begin{macrocode} + \JadeSetPage + \ifx \@nodocument\relax + \else + \JadeBeginDocument + \fi +% \end{macrocode} +% Grouping is turned on now we are inside a simple page sequence. +% but is itself inside a group of the page sequence. +% The problem is that if we start a Sequence, then start a +% PageSequence, the |\begin{document}| occurs inside a group, +% and so gets in a mess. If we turn off grouping +% outside simple page sequences, any changes become global! +% Does it make sense to have material not in a page +% sequence, in TeX? Sadly, yes. The +% document will still \emph{start} in non-group mode. +% \begin{macrocode} + \closeOrOpenMulticols{#1}% + \DisplayNIC + \openMulticols + \FlowObjectSetup{0}% +} +\def\endSpS{% + \DoFOBSetfalse + \ifnum\PageNColumns>1\relax + \ifnum\col@number>1\relax % in multicols + \ifnum\PageBalanceColumns>0 + \end{multicols} + \else + % \endmulticols* + \vfill\end{multicols} + \fi + \fi + \fi + \if@twoside + \ifnum\TwoSideStartOnRight=1 + \cleardoublepage + \else + \clearpage + \fi + \else + \clearpage + \fi + \fancyhf{}% + \endDisplayNIC + \let\FancyHook\@empty + \let\FancyFirstHook\@empty + \global\let\@sAfterMin\saMin + \global\let\@sAfterMax\saMax + \global\let\@sAfterNom\saNom + \global\let\@sAfterPriority\saPriority + \InSpSfalse +} +% \end{macrocode} +% \subsection{Headers and footers} +% \begin{macrocode} +\def\SpSCenterFooter#1{\Setfoot[C]{#1}{CenterFooter}} +\def\SpSCenterHeader#1{\Sethead[C]{#1}{CenterHeader}} +\def\SpSLeftFooter#1{\Setfoot[L]{#1}{LeftFooter}} +\def\SpSLeftHeader#1{\Sethead[L]{#1}{LeftHeader}} +\def\SpSRightFooter#1{\Setfoot[R]{#1}{RightFooter}} +\def\SpSRightHeader#1{\Sethead[R]{#1}{RightHeader}} +% +\def\SpSOtherBackCenterFooter#1{\Setfoot[CE]{#1}{OtherBackCenterFooter}} +\def\SpSOtherBackLeftFooter#1{\Setfoot[LE]{#1}{OtherBackLeftFooter}} +\def\SpSOtherBackRightFooter#1{\Setfoot[RE]{#1}{OtherBackRightFooter}} +\def\SpSOtherBackRightHeader#1{\Sethead[RE]{#1}{OtherBackRightHeader}} +\def\SpSOtherBackCenterHeader#1{\Sethead[CE]{#1}{OtherBackCenterHeader}} +\def\SpSOtherBackLeftHeader#1{\Sethead[LE]{#1}{OtherBackLeftHeader}} +% +\def\SpSOtherFrontCenterFooter#1{\Setfoot[CO]{#1}{OtherFrontCenterFooter}} +\def\SpSOtherFrontLeftFooter#1{\Setfoot[LO]{#1}{OtherFrontLeftFooter}} +\def\SpSOtherFrontRightFooter#1{\Setfoot[RO]{#1}{OtherFrontRightFooter}} +\def\SpSOtherFrontRightHeader#1{\Sethead[RO]{#1}{OtherFrontRightHeader}} +\def\SpSOtherFrontCenterHeader#1{\Sethead[CO]{#1}{OtherFrontCenterHeader}} +\def\SpSOtherFrontLeftHeader#1{\Sethead[LO]{#1}{OtherFrontLeftHeader}} +% +\def\SpSFirstBackCenterFooter#1{\SetFirstfoot[CE]{#1}{FirstBackCenterFooter}} +\def\SpSFirstBackLeftFooter#1{\SetFirstfoot[LE]{#1}{FirstBackLeftFooter}} +\def\SpSFirstBackRightFooter#1{\SetFirstfoot[RE]{#1}{FirstBackRightFooter}} +\def\SpSFirstBackCenterHeader#1{\SetFirsthead[CE]{#1}{FirstBackCenterHeader}} +\def\SpSFirstBackLeftHeader#1{\SetFirsthead[LE]{#1}{FirstBackLeftHeader}} +\def\SpSFirstBackRightHeader#1{\SetFirsthead[RE]{#1}{FirstBackRightHeader}} + +\def\SpSFirstFrontCenterFooter#1{\SetFirstfoot[CO]{#1}{FirstFrontCenterFooter}} +\def\SpSFirstFrontLeftFooter#1{\SetFirstfoot[LO]{#1}{FirstFrontLeftFooter}} +\def\SpSFirstFrontRightFooter#1{\SetFirstfoot[RO]{#1}{FirstFrontRightFooter}} +\def\SpSFirstFrontCenterHeader#1{\SetFirsthead[CO]{#1}{FirstFrontCenterHeader}} +\def\SpSFirstFrontLeftHeader#1{\SetFirsthead[LO]{#1}{FirstFrontLeftHeader}} +\def\SpSFirstFrontRightHeader#1{% + \SetFirsthead[RO]{#1}{FirstFrontRightHeader}% +% \end{macrocode} +% This one comes last, so now set up page styles. YUCK! +% \begin{macrocode} + \pagestyle{jadeother}% + \thispagestyle{jadefirst}% +} +\fancypagestyle{jadeother}{\fancyhf{}\FancyHook}% +\fancypagestyle{jadefirst}{\fancyhf{}\FancyFirstHook}% +% +\def\Sethead[#1]#2#3{% + \ifx\\#2\\\relax\else + \g@addto@macro\FancyHook{\fancyhead[#1]{\setnormal#2}}% + \fi +} +\def\Setfoot[#1]#2#3{% + \ifx\\#2\\\relax\else + \g@addto@macro\FancyHook{\fancyfoot[#1]{\setnormal#2}}% + \fi +} +\def\SetFirsthead[#1]#2#3{% + \ifx\\#2\\\relax\else + \g@addto@macro\FancyFirstHook{\fancyhead[#1]{\setnormal#2}}% + \fi +} +\def\SetFirstfoot[#1]#2#3{% + \ifx\\#2\\\relax\else + \g@addto@macro\FancyFirstHook{\fancyfoot[#1]{\setnormal#2}}% +\fi +} +\def\FancyHook{} +\def\FancyFirstHook{} +\pagestyle{jadeother} +% \end{macrocode} +% \subsection{Table flow object class} +% \begin{macrocode} +\def\Table#1{\TableNIC\UseJadevskip{table}\SetupICs{#1}} +\def\endTable{\endSetupICs\endTableNIC} +\def\@full{full} +\LTpre=\z@ +\LTpost=\z@ +\newenvironment{TeXTable}[3]{% width, ncolumns, template + \global\advance\@TableNest by 1 + \ifx\TableWidth\@full\def\TableWidth{\hsize}\fi + \FlowObjectSetup{0}% + \let\Node\@gobble + \let\endNode\@gobble + \let\Par\TablePar + \setlength\LTleft\StartIndent + \setlength\LTright\fill + \ifnum\PageNColumns>1 + \tabular{#3}% + \else + \ifnum\@TableNest>1 + \tabular{#3}% + \else + \longtable{#3}% + \fi + \fi +}{% + \ifnum\PageNColumns>1 + \endtabular + \else + \ifnum\@TableNest>1 + \endtabular + \else + \endlongtable + \fi + \fi + \ifvoid\@mpfootins\else + \vskip\skip\@mpfootins + \normalcolor + \unvbox\@mpfootins + \fi + \global\advance\@TableNest by -1 +} +% \end{macrocode} +% \subsection{Table Cell flow object class} +% \begin{macrocode} +\def\Hline{\hline} +\def\Cline{\cline} +\let\TeXTableCell=\multicolumn +\def\TableCell#1{% + \TableCellNIC% + \SetupICs{#1}% + \FlowObjectSetup{0}% + \rule[2ex]{0pt}{\CellBeforeRowMargin}% + \global\@TablePars0% + \ifnum\NRowsSpanned>1% Row spanning + \JadeRowSpan% + \else + \ifnum\TeXRowSpanFiller>0% + \JadeRowSpanFiller + \fi + \fi% +} +\def\endTableCell#1{% + \ifnum\NRowsSpanned>1% + \endJadeRowSpan% + \fi + \rule[-\CellAfterRowMargin]{0pt}{0pt}% + \endSetupICs + \endTableCellNIC +} +% \end{macrocode} +% \subsection{Table Part flow object class} +% \begin{macrocode} +\def\TablePart#1{#1\FlowObjectSetup{0}} +\def\TablePartHeader#1{} +\def\TablePartFooter#1{} +\def\endTablePartFooter#1{} +\def\endTablePartHeader#1{% + \ifnum\TablePartOmitMiddleHeader=1 + \endfirsthead + \else + \endhead + \fi} +\def\endTablePart{} +% \end{macrocode} +% \subsection{Table Row flow object class} +% \begin{macrocode} +\def\TableRow#1{#1} +\def\endTableRow#1{\\} +% \end{macrocode} +% +% \subsection{Character mapping} +% \begin{macrocode} +\def\Character#1{% + \SetupICs{}% + \ifnum#1<255\char#1\else + \expandafter\ifx\csname !#1\endcsname\relax + <#1>\typeout{Warning: Unknown character #1, at \the\inputlineno}% + \else\csname !#1\endcsname\fi + \fi + \ifdim\EscapementSpaceAfterNom=\z@ + \else + \@tempdima\EscapementSpaceAfterNom + \advance\@tempdima by -\EscapementSpaceAfterMin + \@tempdimb\EscapementSpaceAfterNom + \advance\@tempdimb by -\EscapementSpaceAfterMax + \hskip\EscapementSpaceAfterNom plus \@tempdimb minus \@tempdima% + \fi + \endSetupICs{}% +} +% \end{macrocode} +%\subsection{DisplayNIC} +% \begin{macrocode} +\newcount\DisplayStack +\newcount\LastDisplayStack +\newif\ifBreakMe +\newif\ifJadeskipready +\Jadeskipreadyfalse +\newskip\Jadeskip +\newskip\Jadelastskip +\newskip\jadetempskip +\BreakMefalse +\DisplayStack0 +\LastDisplayStack-1 +\let\@sBeforeMin\sbMin +\let\@sBeforeMax\sbMax +\let\@sBeforeNom\sbNom +\let\@sBeforePriority\sbPriority +\def\@force{force} +\def\Jadevskip#1#2{\global\Jadeskipreadytrue\global\Jadeskip#1\relax} +\def\UseJadevskip#1{% + \global\Jadeskipreadyfalse + \ifdim\Jadeskip=\z@\else + \ifvmode + \vskip\Jadeskip\global\Jadeskip\z@ + \else + \setbox\z@\lastbox\par + \vskip\Jadeskip\global\Jadeskip\z@ + {\everypar{}\noindent\box\z@}% + \fi + \fi +} +\def\QueryPageBreak{% +\ifBreakMe + \ifvmode + \penalty \@M + \else + \@bsphack + \vadjust{\penalty \@M}% + \@esphack + \fi +\else + \ifnum\KeepWithNext=1 + \penalty-600 + \else + \penalty \z@ + \fi +\fi +} +\def\DisplayNIC{% + \advance\DisplayStack by 1 + \QueryPageBreak +% \end{macrocode} +% What we are trying to identify is a display which starts +% inside another display. +% \begin{macrocode} +% \ifnum\DisplayStack>\LastDisplayStack +% \def\sbPriority{force}% +% \def\LastSpaceBeforePriority{0}% +% \fi + \let\@sAfterMin\saMin + \let\@sAfterMax\saMax + \let\@sAfterNom\saNom + \let\@sAfterPriority\saPriority +% + \begingroup + \ifx\BreakBefore\relax\else + \csname Break@\BreakBefore\endcsname + \fi + \CurrentSpaceMin=\sbMin + \CurrentSpaceNom=\sbNom + \CurrentSpaceMax=\sbMax +% + \edef\CurrentSpacePriority{\sbPriority}% +% \end{macrocode} +% See if either display space priority is set to `force'; +% if so, use that set of values; +% if both priorities are `force', add values together +% \begin{macrocode} +\ifx\sbPriority\@force + \ifx\LastSpacePriority\@force + \advance\CurrentSpaceMin by \LastSpaceMin + \advance\CurrentSpaceNom by \LastSpaceNom + \advance\CurrentSpaceMax by \LastSpaceMax + \fi +\else + \ifx\LastSpacePriority\@force + \CurrentSpaceMin=\LastSpaceMin + \CurrentSpaceNom=\LastSpaceNom + \CurrentSpaceMax=\LastSpaceMax +% \end{macrocode} +% See if the priority of either set is higher, if so use that +% \begin{macrocode} + \else + \ifnum\CurrentSpacePriority>\LastSpacePriority + \relax + \else + \ifnum\LastSpacePriority>\CurrentSpacePriority + \CurrentSpaceMin=\LastSpaceMin + \CurrentSpaceNom=\LastSpaceNom + \CurrentSpaceMax=\LastSpaceMax + \else +% \end{macrocode} +% So the priorities are equal; take the one with the larger Nom +% \begin{macrocode} + \ifdim\CurrentSpaceNom>\LastSpaceNom + \relax + \else + \ifdim\LastSpaceNom>\CurrentSpaceNom + \CurrentSpaceMin=\LastSpaceMin + \CurrentSpaceNom=\LastSpaceNom + \CurrentSpaceMax=\LastSpaceMax + \else +% \end{macrocode} +% Dang, the Noms are equal. Take the larger minimum, and smaller +% maximum +% \begin{macrocode} + \ifdim\LastSpaceMax<\CurrentSpaceMax + \CurrentSpaceMax\LastSpaceMax + \fi + \ifdim\LastSpaceMin>\CurrentSpaceMin + \CurrentSpaceMin\LastSpaceMin + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \@tempdima\CurrentSpaceNom + \advance\@tempdima by -\CurrentSpaceMin + \@tempdimb\CurrentSpaceNom + \advance\@tempdimb by -\CurrentSpaceMax + \QueryPageBreak + \jadetempskip=\CurrentSpaceNom plus \@tempdimb minus \@tempdima + \Jadevskip{\the\jadetempskip}{startDisplayNIC}% + \let\Keep\relax + \let\BreakBefore\relax + \let\BreakAfter\relax + \let\KeepWithPrevious\relax + \let\MayViolateKeepBefore\relax + \let\MayViolateKeepAfter\relax + \def\sbMin{\z@}% + \def\sbMax{\z@}% + \def\sbNom{\z@}% + \def\sbPriority{0}% + \def\saMin{\z@}% + \def\saMax{\z@}% + \def\saNom{\z@}% + \def\saPriority{0}% + \ifdim\Jadeskip=\z@\else\the\everypar\fi +} +\def\endDisplayNIC{% + \ifnum\KeepWithNext=1 + \penalty\@M\global\BreakMetrue\else\global\BreakMefalse + \fi + \ifdim\Jadeskip=\z@\else\the\everypar\fi + \endgroup + \global\LastSpaceNom=\@sAfterNom + \global\LastSpaceMax=\@sAfterMax + \global\LastSpaceMin=\@sAfterMin + \global\edef\LastSpacePriority{\@sAfterPriority}% + \@tempdima\@sAfterNom + \advance\@tempdima by -\@sAfterMin + \@tempdimb\@sAfterNom + \advance\@tempdimb by -\@sAfterMax + \jadetempskip=\@sAfterNom plus \@tempdimb minus \@tempdima + \Jadevskip{\the\jadetempskip}{endDIsplayNIC}% + \global\LastDisplayStack=\DisplayStack + \advance\DisplayStack by -1 +} +\def\paraSetup{% + \rightskip\EndIndent + \leftskip\StartIndent + \csname JQ@\Quadding\endcsname + \csname L@\Language\endcsname + \ifx\FirstLineStartIndent\@empty\relax + \else\parindent\FirstLineStartIndent + \fi + \ifx\InputWhitespaceTreatment\@empty\relax + \else\csname White@\InputWhitespaceTreatment\endcsname + \fi + \ifx\Lines\@empty\relax + \else\csname Lines@\Lines\endcsname + \fi +} +% \end{macrocode} +%\section{Setup of non-inherited characteristics} +%\subsection{Inline} +% \begin{macrocode} +\def\InlineNIC{% + \begingroup +} +\def\endInlineNIC{% + \let\BreakBeforePriority\relax + \let\BreakAfterPriority\relax + \endgroup +} +% \end{macrocode} +%\subsection{Display} +% \begin{macrocode} +\def\DisplayGroupNIC{% + \DisplayNIC +} +\def\endDisplayGroupNIC{% + \endDisplayNIC +} +% \end{macrocode} +%\subsection{Graphics, boxes, leaders} +% \begin{macrocode} +\def\ExternalGraphicNIC{% + \InlineNIC +} +\def\endExternalGraphicNIC{% + \endInlineNIC +} +\def\BoxNIC{% + \DisplayNIC + \InlineNIC +} +\def\endBoxNIC{% + \endInlineNIC + \endDisplayNIC +} +\def\RuleNIC{% + \DisplayNIC + \InlineNIC +} +\def\endRuleNIC{% + \endInlineNIC + \endDisplayNIC +} +\def\LeaderNIC{% + \InlineNIC +} +\def\LeaderNIC{% + \InlineNIC +} +% \end{macrocode} +%\subsection{Tables} +% \begin{macrocode} +\let\TableNIC\DisplayNIC +\let\endTableNIC\endDisplayNIC +\def\TableColumnNIC{} +\def\endTableColumnNIC{} +\def\TableCellNIC{% + \begingroup% + \def\NColumnsSpanned{1}% + \def\NRowsSpanned{1}% + \def\ColumnIndex{0}% + \def\TeXRowSpanFiller{0}% +} +\def\endTableCellNIC{\endgroup} +\def\GridNIC{} +\def\endGridNIC{} +\def\GridCellNIC{} +\def\endGridCellNIC{} +\let\ParagraphNIC\DisplayNIC +\let\LineFieldNIC\InlineNIC +\let\endParagraphNIC\endDisplayNIC +\let\endLineFieldNIC\endInlineNIC +% \end{macrocode} +%\section{Setup of inherited characteristics} +% A problem arises here is `whitespacetreatment' is set to +% `preserve', as this makes spaces active. If then a font name +% like `Times Roman' is processed, the space in the middle +% is processed! We replace spaces in font family names with `-' +% in TeXFOTBuilder.cxx +% \begin{macrocode} +\newif\ifNeedsSelect +\chardef\nonactive=10 +\def\SetupICs#1{#1% +\let\current@f@series\f@series +\let\current@f@shape\f@shape +\let\current@f@family\f@family +\let\current@f@size\f@size +\edef\LaTeXshape{\csname Width@\fProportionateWidth\endcsname + \csname Weight@\fWeight\endcsname}% +\ifx\LaTeXshape\@empty\def\LaTeXshape{m}\fi +\edef\f@series{\LaTeXshape}% +\edef\f@shape{\csname Posture@\fPosture\endcsname}% +\IfFileExists{t1\fFamName.fd} + {\def\f@family{\fFamName}} + {\edef\f@family{% + \expandafter\ifx\csname Family@\fFamName\endcsname\relax + \csname Family@\DefaultfFamName\endcsname + \else + \csname Family@\fFamName\endcsname + \fi}}% +\set@fontsize\baselinestretch{\fSize}{\LineSpacing}% +%\NeedsSelecttrue +%\ifx\f@size\current@f@size\relax\NeedsSelectfalse\fi +%\ifx\f@family\current@f@family\relax\NeedsSelectfalse\fi +%\ifx\f@shape\current@f@shape\relax\NeedsSelectfalse\fi +%\ifx\f@series\current@f@series\relax\NeedsSelectfalse\fi +%\ifNeedsSelect + \selectfont +%\fi +\ifx\ColorRed\@empty\relax\else + \RGBColor{\ColorRed}{\ColorGreen}{\ColorBlue}% +\fi +} +\def\endSetupICs{} +% \end{macrocode} +% |\FlowObjectSetup| should be called at the beginning of every object +% that can be meaningfully labelled. It is this that creates an anchor, +% not the |\Node|, to avoid duplicates and wastage. +% +% Because labelling writes to an external file, or does a |\special|, +% it adds a whatsit to the main vertical list. This wrecks the +% |\vskip-\lastskip| which every paragraph or display does. Bad news! +% Labelling when we are in a Link element is not a good thing. +% It messes up the references. +% \begin{macrocode} +\def\@madelink{ } +\newif\ifDoFOBSet +\DoFOBSettrue +\def\FlowObjectSetup#1{% +\ifDoFOBSet + \ifLabelElements + \ifx\Label\@empty\let\Label\Element\fi + \fi + \ifx\Label\@empty\else + \expandafter\ifx\csname x@\Label\endcsname\@madelink + \else + \bgroup + \ifNestedLink + \else + \hyper@anchorstart{\Label}\hyper@anchorend + \PageLabel{\Label}% + \expandafter\gdef\csname x@\Label\endcsname{ }% + \fi + \egroup + \let\Label\@empty + \let\Element\@empty + \fi + \fi +\fi +} +% \end{macrocode} +% \section{Non-standard flow objects} +% \begin{macrocode} +\def\fps@figure{htbp} % prefer figures to be placed here +\def\ftype@figure{1} +\def\PageFloat#1{\SetupICs{#1}% + \ifnum\Span>0 + \def\Span{0}% + \typeout{JadeTeX WARNING: specifying column spans for floats not supported}% + \fi + \FlowObjectSetup{0}% + \@dblfloat{figure}[\placement]% +} +\def\endPageFloat{\end@dblfloat} +\def\Footnotesize{\@setfontsize\small\@ixpt{11}} +\newcount\@FootnotePars +\skip\@mpfootins = \skip\footins +\long\def\PageFootnote#1#2{#1% +\ifnum\@TableNest>0 + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\Footnotesize + \hsize\TableWidth + \leftskip\StartIndent + \@parboxrestore + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#2\@finalstrut\strutbox}% + \color@endgroup}% +\else + \insert\footins{% + \let\Par\FootnotePar + \let\endPar\endFootnotePar + \global\@FootnotePars0% + \reset@font\Footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#2\@finalstrut\strutbox} + \color@endgroup}% +\fi +} +\def\@makefntext#1{% + \parindent 1em% + \noindent + #1} +% \end{macrocode} +% \section{Color} +% Only RGB color working at present. Sorry. +% \begin{macrocode} +\def\RGBColor#1#2#3{% + \c@lor@RGB@rgb{#1}\@tempa + \c@lor@RGB@rgb{#2}\@tempb + \c@lor@RGB@rgb{#3}\@tempc +% \typeout{Set Color \@tempa, \@tempb, \@tempc}% + \color[rgb]{\@tempa, \@tempb, \@tempc}% + } +\def\c@lor@RGB@rgb#1#2{% + \dimen@#1\p@ + \divide\dimen@\@cclv + \edef#2{\strip@pt\dimen@}} +\def\EndSetFont{% + \ifx\csname\fPosture Over\endcsname\relax + \relax\else\csname\fPosture Over\endcsname\fi +} +% \end{macrocode} +% \section{Startup} +% \begin{macrocode} +%\let\DEBUG\@gobble +\def\endFOT{%\let\normalcolor\relax + \def\Hy@colorlink##1{}% + \def\Hy@endcolorlink{}% + \ifnum\col@number>1 + \ifnum\PageBalanceColumns>0 + \end{multicols} + \else + % \endmulticols* + \vfill\end{multicols} + \fi + \fi + \enddocument} +\def\FOT#1{% + \checkFOTversion{#1}% + \hoffset-1in\voffset-1in + \def\setnormal{% + \let\fSize\pageFontSize + \let\LineSpacing\pageLineSpacing + \let\fPosture\pageFontPosture + \let\fProportionateWidth\pageFontProportionateWidth + \let\fWeight\pageFontWeight + \let\fFamName\pagefFamName + } + \def\headrulewidth{0\p@}% + \def\footrulewidth{0\p@}% + \abovedisplayskip=\z@ + \abovedisplayshortskip=\z@ + \belowdisplayskip=\z@ + \belowdisplayshortskip=\z@ + \raggedbottom + \clubpenalty=4000 + \widowpenalty=2000 + \setlength\emergencystretch{2in} + \frenchspacing + \fancyhf{}% + \def\familydefault{ptm}% + \fontfamily{\familydefault}\selectfont + \pagenumbering{arabic}% + \nonstopmode + \Mathcount0 +% \end{macrocode} +% We do not put out a |\begin{document}|, as that would fix +% the page size in advance; we delay that for the first +% page sequence. +% \begin{macrocode} + \let\default@color\current@color +% \end{macrocode} +% Individual users or projects can override anything in this +% setup with a configuration file, loaded here, called +% \texttt{jadetex.cfg}. +% \begin{macrocode} + \InputIfFileExists{jadetex.cfg}{}{}% + \ifLabelElements + \typeout{Elements will be labelled}% + \else + \typeout{Elements will NOT be labelled}% + \fi +% wicked. dont redo \@begindocumenthook! cause color in pdftex to foul up. +% \@begindocumenthook + \makeatletter +} +\everyjob{% + \typeout{JadeTeX \JadeTeXDate: \JadeTeXMajorVersion.\JadeTeXMinorVersion}% +} +\catcode`\^^M=10% +\catcode0=9% +%</package> +%<*dsssldef> +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}} +\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}} +\ProvideTextCommandDefault{\textthreequarters}{\ensuremath{\frac34}} +\ProvideTextCommandDefault{\textcent} + {\TextSymbolUnavailable\textcent} +\ProvideTextCommandDefault{\textyen} + {\TextSymbolUnavailable\textyen} +\ProvideTextCommandDefault{\textcurrency} + {\TextSymbolUnavailable\textcurrency} +\ProvideTextCommandDefault{\textbrokenbar} + {\TextSymbolUnavailable\textbrokenbar} +\providecommand{\mathdegree}{{\ensuremath{^\circ}} +} +\providecommand{\mathonesuperior}{{^1}} +\providecommand{\mathtwosuperior}{{^2}} +\providecommand{\maththreesuperior}{{^3}} +\providecommand{\mathordmasculine}{\mathrm{^{\underline{o}}}} +\providecommand{\mathordfeminine}{\mathrm{^{\underline{a}}}} +\DeclareInputText{"0A0}{\nobreakspace} +\DeclareInputMath{"0B0}{\mathdegree} +\DeclareInputText{"0A1}{\textexclamdown} +\DeclareInputMath{"0B1}{\ensuremath{\pm}} +\DeclareInputText{"0A2}{\textcent} +\DeclareInputMath{"0B2}{\mathtwosuperior} +\DeclareInputText{"0B2}{\ensuremath{\mathtwosuperior}} +\DeclareInputText{"0A3}{\pounds} +\DeclareInputMath{"0B3}{\maththreesuperior} +\DeclareInputText{"0B3}{\ensuremath{\maththreesuperior}} +\DeclareInputText{"0A4}{\textcurrency} +\DeclareInputText{"0B4}{\@tabacckludge'{}} +\DeclareInputText{"0A5}{\textyen} +\DeclareInputMath{"0B5}{\mu} +\DeclareInputText{"0B5}{\textmu} +\DeclareInputText{"0A6}{\textbrokenbar} +\DeclareInputText{"0B6}{\P} +\DeclareInputText{"0A7}{\S} +\DeclareInputText{"0B7}{\ifmmode\cdot\else\textperiodcentered\fi} +\DeclareInputText{"0A8}{\"{}} +\DeclareInputText{"0B8}{\c{}} +\DeclareInputText{"0A9}{\copyright} +\DeclareInputMath{"0B9}{\mathonesuperior} +\DeclareInputMath{"0AA}{\mathordfeminine} +\DeclareInputMath{"0BA}{\mathordmasculine} +\DeclareInputText{"0B9}{\ensuremath{\mathonesuperior}} +\DeclareInputText{"0AA}{\ensuremath{\mathordfeminine}} +\DeclareInputText{"0BA}{\ensuremath{\mathordmasculine}} +\DeclareInputText{"0AB}{\guillemotleft} +\DeclareInputText{"0BB}{\guillemotright} +\DeclareInputMath{"0AC}{\lnot} +\DeclareInputText{"0AC}{\ensuremath{\lnot}} +\DeclareInputText{"0BC}{\textonequarter} +\DeclareInputText{"0AD}{\-} +\DeclareInputText{"0BD}{\textonehalf} +\DeclareInputText{"0AE}{\textregistered} +\DeclareInputText{"0BE}{\textthreequarters} +\DeclareInputText{"0AF}{\ifmmode\else\@tabacckludge={}\fi} +\DeclareInputText{"0BF}{\textquestiondown} +\DeclareInputText{"0C0}{\@tabacckludge`A} +\DeclareInputText{"0D0}{\DH} +\DeclareInputText{"0C1}{\@tabacckludge'A} +\DeclareInputText{"0D1}{\~N} +\DeclareInputText{"0C2}{\^A} +\DeclareInputText{"0D2}{\@tabacckludge`O} +\DeclareInputText{"0C3}{\~A} +\DeclareInputText{"0D3}{\@tabacckludge'O} +\DeclareInputText{"0C4}{\"A} +\DeclareInputText{"0D4}{\^O} +\DeclareInputText{"0C5}{\AA} +\DeclareInputText{"0D5}{\~O} +\DeclareInputText{"0C6}{\AE} +\DeclareInputText{"0D6}{\"O} +\DeclareInputText{"0C7}{\c C} +\DeclareInputMath{"0D7}{\ensuremath{\times}} +\DeclareInputText{"0C8}{\@tabacckludge`E} +\DeclareInputText{"0D8}{\O} +\DeclareInputText{"0C9}{\@tabacckludge'E} +\DeclareInputText{"0D9}{\@tabacckludge`U} +\DeclareInputText{"0CA}{\^E} +\DeclareInputText{"0DA}{\@tabacckludge'U} +\DeclareInputText{"0CB}{\"E} +\DeclareInputText{"0DB}{\^U} +\DeclareInputText{"0CC}{\@tabacckludge`I} +\DeclareInputText{"0DC}{\"U} +\DeclareInputText{"0CD}{\@tabacckludge'I} +\DeclareInputText{"0DD}{\@tabacckludge'Y} +\DeclareInputText{"0CE}{\^I} +\DeclareInputText{"0DE}{\TH} +\DeclareInputText{"0CF}{\"I} +\DeclareInputText{"0DF}{\ss} +\DeclareInputText{"0E0}{\@tabacckludge`a} +\DeclareInputText{"0F0}{\dh} +\DeclareInputText{"0E1}{\@tabacckludge'a} +\DeclareInputText{"0F1}{\~n} +\DeclareInputText{"0E2}{\^a} +\DeclareInputText{"0F2}{\@tabacckludge`o} +\DeclareInputText{"0E3}{\~a} +\DeclareInputText{"0F3}{\@tabacckludge'o} +\DeclareInputText{"0E4}{\"a} +\DeclareInputText{"0F4}{\^o} +\DeclareInputText{"0E5}{\aa} +\DeclareInputText{"0F5}{\~o} +\DeclareInputText{"0E6}{\ae} +\DeclareInputText{"0F6}{\"o} +\DeclareInputText{"0E7}{\c c} +\DeclareInputMath{"0F7}{\ensuremath{\div}} +\DeclareInputText{"0E8}{\@tabacckludge`e} +\DeclareInputText{"0F8}{\o} +\DeclareInputText{"0E9}{\@tabacckludge'e} +\DeclareInputText{"0F9}{\@tabacckludge`u} +\DeclareInputText{"0EA}{\^e} +\DeclareInputText{"0FA}{\@tabacckludge'u} +\DeclareInputText{"0EB}{\"e} +\DeclareInputText{"0FB}{\^u} +\DeclareInputText{"0EC}{\@tabacckludge`\i} +\DeclareInputText{"0FC}{\"u} +\DeclareInputText{"0ED}{\@tabacckludge'\i} +\DeclareInputText{"0FD}{\@tabacckludge'y} +\DeclareInputText{"0EE}{\^\i} +\DeclareInputText{"0FE}{\th} +\DeclareInputText{"0EF}{\"\i} +\DeclareInputText{"0FF}{\"y} +%</dsssldef> +% \end{macrocode} +% \Finale +% +\endinput + |