summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/jadetex/base/jadetex.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:48:59 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:48:59 +0000
commit21bac2299b00de3d14e1905fd817f453d8e36b73 (patch)
tree48bdd48237b2536aa43381156e03d38d086cbc88 /Master/texmf-dist/source/jadetex/base/jadetex.dtx
parentafb940ad38f091a393fd40b71d33756d2a46ebc6 (diff)
trunk/Master/texmf-dist/source/jadetex
git-svn-id: svn://tug.org/texlive/trunk@109 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/jadetex/base/jadetex.dtx')
-rw-r--r--Master/texmf-dist/source/jadetex/base/jadetex.dtx2564
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
+