Blob Blame History Raw
% $Id: //TEI/web/Software/passivetex/fotex.xmt#45 $, $Date: 2003/08/19 $
%
% PassiveTeX version 1.25
%
% Copyright 2003 Sebastian Rahtz/Oxford University  
%      <sebastian.rahtz@oucs.ox.ac.uk>
%
% Permission is hereby granted, free of charge, to any person obtaining
% a copy of this software and any 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.
%
% Includes fixes from Tomas Bures <ghort@pauline.vellum.cz>
%                     Yura Zotov <yznews@hotbox.ru>
%                     Anton V. Boyarshinov <boyarsh@ru.echo.fr>
%                     Dirk Roorda <dirk.roorda@planet.nl>


% MODIFICATIONS IN XMLTEX (Dirk)
% allow an explicit inheritance of attributes

\gdef\XML@attrib@x#1#2{
    \gdef\XML@tempb##1#1##2##3##4\relax\relax{
	\global\let\inheritexplicit\relax
	{\set@display@protect
	\expandafter\ifx\csname#2\endcsname\inherit
		\global\let\inheritexplicit\noexpand
	\fi}%
	\ifx\inheritexplicit\relax
		\def##2{#2}%
	\fi
    ##1##4\relax\relax}}

% test whether an attribute was explicitly set on an element

\gdef\explicitattribute#1{
	{	\expandafter\def\csname#1-test\endcsname{\global\def\isexplicit{1}}
		\global\let\isexplicit\relax
		\def\XML@doattribute##1##2##3{\csname##2-test\endcsname}
		\the\XML@attribute@toks
	}
}

\DeclareNamespace{fotex}{http://www.tug.org/fotex}
\DeclareNamespace{fo}{http://www.w3.org/1999/XSL/Format}
\def\string@autoauto{autoauto}
\XMLstring\FirstOnPage<>first-starting-within-page</>
\XMLstring\LastOnPage<>last-starting-within-page</>
\XMLstring\LINK<>LINK</>
\XMLstring\file@urlprefix<>url(</>
\XMLstring\file@prefix<>file://</>
\XMLstring\file@shortprefix<>file:</>
\XMLstring\prop@width<>proportional-column-width(1)</>
\XMLstringX\@staticafter<>xsl-after</>
\XMLstringX\@staticbefore<>xsl-before</>
\XMLstringX\@staticstart<>xsl-start</>
\XMLstringX\att@NaN<>NaN</>
\XMLstringX\att@after<>after</>
\XMLstringX\att@all<>all</>
\XMLstringX\att@always<>always</>
\XMLstringX\att@any<>any</>
\XMLstringX\att@auto<>auto</>
\XMLstringX\att@autoeven<>auto-even</>
\XMLstringX\att@autoodd<>auto-odd</>
\XMLstringX\att@baseline<>baseline</>
\XMLstringX\att@before<>before</>
\XMLstringX\att@black<>black</>
\XMLstringX\att@blank<>blank</>
\XMLstringX\att@bottom<>bottom</>
\XMLstringX\att@centered<>center</>
\XMLstringX\att@endoneven<>end-on-even</>
\XMLstringX\att@endonodd<>end-on-odd</>
\XMLstringX\att@even<>even</>
\XMLstringX\att@evenpage<>even-page</>
\XMLstringX\att@false<>false</>
\XMLstringX\att@first<>first</>
\XMLstringX\att@first@starting@within@page<>first-starting-within-page</>
\XMLstringX\att@french<>french</>
\XMLstringX\att@last@starting@within@page<>last-starting-within-page</>
\XMLstringX\att@lr@tb<>lr-tb</>
\XMLstringX\att@maximum<>maximum</>
\XMLstringX\att@maximumuniform<>maximum-uniform</>
\XMLstringX\att@medium<>medium</>
\XMLstringX\att@no<>no</>
\XMLstringX\att@no@limit<>no-limit</>
\XMLstringX\att@none<>none</>
\XMLstringX\att@normal<>normal</>
\XMLstringX\att@nowrap<>no-wrap</>
\XMLstringX\att@odd<>odd</>
\XMLstringX\att@oddpage<>odd-page</>
\XMLstringX\att@page<>page</>
\XMLstringX\att@page@sequence<>page-sequence</>
\XMLstringX\att@pre<>pre</>
\XMLstringX\att@preserve<>preserve</>
\XMLstringX\att@relative<>relative</>
\XMLstringX\att@repeat<>repeat</>
\XMLstringX\att@replace<>replace</>
\XMLstringX\att@scaletofit<>scale-to-fit</>
\XMLstringX\att@scroll<>scroll</>
\XMLstringX\att@show<>show</>
\XMLstringX\att@smallcaps<>small-caps</>
\XMLstringX\att@solid<>solid</>
\XMLstringX\att@static<>static</>
\XMLstringX\att@sub<>sub</>
\XMLstringX\att@super<>super</>
\XMLstringX\att@thick<>thick</>
\XMLstringX\att@thin<>thin</>
\XMLstringX\att@tiny<>true</>
\XMLstringX\att@top<>top</>
\XMLstringX\att@transparent<>transparent</>
\XMLstringX\att@true<>true</>
\XMLstringX\att@uniform<>uniform</>
\XMLstringX\att@use@font@metrics<>use-font-metrics</>
\XMLstringX\att@visible<>visible</>
\XMLstringX\att@xsl@any<>xsl-any</>
\XMLstringX\att@xsl@footnote@separator<>xsl-footnote-separator</>
\XMLstringX\att@yes<>yes</>
\XMLstring\att@bodystart<>body-start()</>
\XMLstring\att@labelend<>label-end()</>
\XMLstringX\leader@pattern@space<>space</>
\XMLstringX\leader@pattern@rule<>rule</>
\XMLstringX\leader@pattern@dots<>dots</>
\XMLstringX\rule@style@dashed<>dashed</>
\XMLstringX\rule@style@dotted<>dotted</>
\XMLnamespaceattributeX{fo}{media-usage}{\FOmediausage}{}
%           The "media-usage" property is used to control 
%           how the selected display medium is used to 
%           present the page(s) specified by the stylesheet.
\XMLnamespaceattributeX{fo}{text-altitude}{\FOtextaltitude}{}
%          Specifies the "height" to be used for the ascent
%          above the dominant baseline
\XMLnamespaceattributeX{fo}{text-depth}{\FOtextdepth}{}
%          Specifies the "depth" to be used for the descent
%          below the domiant baseline.
%auto | absolute | fixed | inherit
%\XMLnamespaceattributeX{fo}{absolute-position}{\FOabsoluteposition}{auto}
%link | visited | active | hover | focus
%\XMLnamespaceattributeX{fo}{active-state}{\FOactivestate}{}
%auto | <percentage> | <length> | inherit
\XMLnamespaceattributeX{fo}{alignment-adjust}{\FOalignmentadjust}{auto}
%yes | no
%\XMLnamespaceattributeX{fo}{auto-restore}{\FOautorestore}{\inherit}
%<angle> | [[ left-side | far-left | left
%| center-left | center | center-right | right | far-right | right-side
%] || behind ] | leftwards | rightwards | inherit
%\XMLnamespaceattributeX{fo}{azimuth}{\FOazimuth}{\inherit}
%[<background-color> ||
%<background-image>
%|| <background-repeat> || <background-attachment> || <background-position>
%| ]]inherit
\XMLnamespaceattributeX{fo}{background}{\FObackground}{}
%scroll | fixed | inherit
%\XMLnamespaceattributeX{fo}{background-attachment}{\FObackgroundattachment}{scroll}
%<color> | transparent | inherit
\XMLnamespaceattribute{fo}{background-color}{\FObackgroundcolor}{transparent}
%<uri> | none | inherit
%\XMLnamespaceattributeX{fo}{background-image}{\FObackgroundimage}{none}
%[ [<percentage> | <length> ]{1,2} |
% [ [top | center | bottom] || [left | center | right] ] ] | inherit
%\XMLnamespaceattributeX{fo}{background-position}{\FObackgroundposition}{0\% 0\%}
%<percentage> | <length> |
%left | center | right | inherit
%\XMLnamespaceattributeX{fo}{background-position-horizontal}{\FObackgroundpositionhorizontal}{0\%}
%<percentage> | <length> |
%top | center | bottom | inherit
%\XMLnamespaceattributeX{fo}{background-position-vertical}{\FObackgroundpositionvertical}{0\%}
%repeat | repeat-x | repeat-y | no-repeat | inherit
%\XMLnamespaceattributeX{fo}{background-repeat}{\FObackgroundrepeat}{repeat}
%baseline | before-edge
%| text-before-edge | middle | after-edge
%| text-after-edge | ideographic | alphabetic | hanging | mathematical
%| inherit
%\XMLnamespaceattributeX{fo}{baseline-identifier}{\FObaselineidentifier}{}
%baseline | sub | super | <percentage> | <length> | inherit
\XMLnamespaceattributeX{fo}{baseline-shift}{\FObaselineshift}{baseline}
%blank | not-blank | any | inherit
\XMLnamespaceattributeX{fo}{blank-or-not-blank}{\FOblankornotblank}{any}
%auto | <length> | <percentage> | <length-range> | inherit
%\XMLnamespaceattributeX{fo}{block-progression-dimension}{\FOblockprogressiondimension}{auto}
%[ <border-width> || <border-style> || <color> ] | inherit
\XMLnamespaceattributeX{fo}{border}{\FOborder}{}
%<color> | inherit
\XMLnamespaceattribute{fo}{border-after-color}{\FOborderaftercolor}{\FOcolor}
%<border-style> | inherit
\XMLnamespaceattributeX{fo}{border-after-style}{\FOborderafterstyle}{none}
%<border-width> | <length-conditional> | inherit
\XMLnamespaceattribute{fo}{border-after-width}{\FOborderafterwidth}{medium}
%<color> | inherit
\XMLnamespaceattribute{fo}{border-before-color}{\FOborderbeforecolor}{\FOcolor}
%<border-style> | inherit
\XMLnamespaceattributeX{fo}{border-before-style}{\FOborderbeforestyle}{none}
%<border-width> | <length-conditional> | inherit
\XMLnamespaceattribute{fo}{border-before-width}{\FOborderbeforewidth}{medium}
\XMLnamespaceattributeX{fo}{border-collapse}{\FObordercollapse}{\inherit}
%<color>{1,4} | transparent | inherit
\XMLnamespaceattribute{fo}{border-color}{\FObordercolor}{black}
%<color> | inherit
\XMLnamespaceattribute{fo}{border-end-color}{\FOborderendcolor}{\FOcolor}
%<border-style> | inherit
\XMLnamespaceattributeX{fo}{border-end-style}{\FOborderendstyle}{none}
%<border-width> | inherit
\XMLnamespaceattributeX{fo}{border-end-width}{\FOborderendwidth}{medium}
\XMLnamespaceattributeX{fo}{border-separation}{\FOborderseparation}{\inherit}
%<length> <length>? | inherit
\XMLnamespaceattributeX{fo}{border-spacing}{\FOborderspacing}{\inherit}
%<color> | inherit
\XMLnamespaceattribute{fo}{border-start-color}{\FOborderstartcolor}{\FOcolor}
%<border-style> | inherit
\XMLnamespaceattributeX{fo}{border-start-style}{\FOborderstartstyle}{none}
%<border-width> | inherit
\XMLnamespaceattributeX{fo}{border-start-width}{\FOborderstartwidth}{medium}
%<border-style>{1,4} | inherit
\XMLnamespaceattributeX{fo}{border-style}{\FOborderstyle}{}
%<length> | <percentage> | auto | inherit
\XMLnamespaceattributeX{fo}{border-width}{\FOborderwidth}{}
\XMLnamespaceattributeX{fo}{border-bottom}{\FOborderbottom}{\LINK}
\XMLnamespaceattribute{fo}{border-bottom-color}{\FOborderbottomcolor}{\LINK}
\XMLnamespaceattributeX{fo}{border-bottom-style}{\FOborderbottomstyle}{\LINK}
\XMLnamespaceattributeX{fo}{border-bottom-width}{\FOborderbottomwidth}{\LINK}
\XMLnamespaceattributeX{fo}{border-left}{\FOborderleft}{\LINK}
\XMLnamespaceattribute{fo}{border-left-color}{\FOborderleftcolor}{\LINK}
\XMLnamespaceattributeX{fo}{border-left-style}{\FOborderleftstyle}{\LINK}
\XMLnamespaceattributeX{fo}{border-left-width}{\FOborderleftwidth}{\LINK}
\XMLnamespaceattributeX{fo}{border-right}{\FOborderright}{\LINK}
\XMLnamespaceattribute{fo}{border-right-color}{\FOborderrightcolor}{\LINK}
\XMLnamespaceattributeX{fo}{border-right-style}{\FOborderrightstyle}{\LINK}
\XMLnamespaceattributeX{fo}{border-right-width}{\FOborderrightwidth}{\LINK}
\XMLnamespaceattributeX{fo}{border-top}{\FObordertop}{\LINK}
\XMLnamespaceattribute{fo}{border-top-color}{\FObordertopcolor}{\LINK}
\XMLnamespaceattributeX{fo}{border-top-style}{\FObordertopstyle}{\LINK}
\XMLnamespaceattributeX{fo}{border-top-width}{\FObordertopwidth}{\LINK}


%<length> | <percentage> | auto | inherit
\XMLnamespaceattributeX{fo}{bottom}{\FObottom}{auto}
%auto | column | page | even-page | odd-page | inherit
\XMLnamespaceattributeX{fo}{break-after}{\FObreakafter}{auto}
%auto | column | page | even-page | odd-page | inherit
\XMLnamespaceattributeX{fo}{break-before}{\FObreakbefore}{auto}
%before | after | start | end | top | bottom | left | right | inherit
\XMLnamespaceattributeX{fo}{caption-side}{\FOcaptionside}{\inherit}
%<name>
\XMLnamespaceattributeX{fo}{case-name}{\FOcasename}{}
%<string>
\XMLnamespaceattributeX{fo}{case-title}{\FOcasetitle}{}
%<character>
\XMLnamespaceattribute{fo}{character}{\FOcharacter}{}
%start | end | left | right | both | none | inherit
\XMLnamespaceattributeX{fo}{clear}{\FOclear}{none}
%<shape> | auto | inherit
\XMLnamespaceattributeX{fo}{clip}{\FOclip}{auto}
%<color> | inherit
\XMLnamespaceattribute{fo}{color}{\FOcolor}{\inherit}
%<name> | inherit
\XMLnamespaceattributeX{fo}{color-profile-name}{\FOcolorprofilename}{}
%<number> | inherit
\XMLnamespaceattributeX{fo}{column-count}{\FOcolumncount}{1}
%<length> | <percentage> | inherit
\XMLnamespaceattributeX{fo}{column-gap}{\FOcolumngap}{12.0pt}
%<number>
\XMLnamespaceattributeX{fo}{column-number}{\FOcolumnnumber}{}
%<length>
\XMLnamespaceattribute{fo}{column-width}{\FOcolumnwidth}{}
%<string> | auto
%\XMLnamespaceattributeX{fo}{content-type}{\FOcontenttype}{auto}

%none | <country> | inherit
\XMLnamespaceattributeX{fo}{country}{\FOcountry}{\inherit}
%<cue-before> || <cue-after> | inherit
%\XMLnamespaceattributeX{fo}{cue}{\FOcue}{}
%<uri> | none | inherit 
%\XMLnamespaceattributeX{fo}{cue-after}{\FOcueafter}{none}
%<uri> | none | inherit 
%\XMLnamespaceattributeX{fo}{cue-before}{\FOcuebefore}{none}
%<length>
%\XMLnamespaceattributeX{fo}{destination-placement-offset}{\FOdestinationplacementoffset}{\z@}
%ltr | rtl | inherit
\XMLnamespaceattributeX{fo}{direction}{\FOdirection}{\inherit}
%auto | before | center | after | inherit
\XMLnamespaceattributeX{fo}{display-align}{\FOdisplayalign}{\inherit}
%auto | autosense-script | no-change | reset-size
%| ideographic | alphabetic | hanging | mathematical | inherit
%\XMLnamespaceattributeX{fo}{dominant-baseline}{\FOdominantbaseline}{auto}
%<angle> | below | level | above | higher | lower | inherit
%\XMLnamespaceattributeX{fo}{elevation}{\FOelevation}{\inherit}
%show | hide | inherit
\XMLnamespaceattributeX{fo}{empty-cells}{\FOemptycells}{\inherit}
%<length> | inherit
\XMLnamespaceattribute{fo}{end-indent}{\FOendindent}{\inherit}
%yes | no
%\XMLnamespaceattributeX{fo}{ends-row}{\FOendsrow}{no}
%<length> | <percentage> | inherit
\XMLnamespaceattributeX{fo}{extent}{\FOextent}{0.0pt}
%<uri-reference>
\XMLnamespaceattributeX{fo}{external-destination}{\FOexternaldestination}{}
%before | start | end | left | right | none | inherit
\XMLnamespaceattributeX{fo}{float}{\FOfloat}{none}
%<name>
\XMLnamespaceattributeX{fo}{flow-name}{\FOflowname}{}
%[ [ <font-style> || <font-variant>
%|| <font-weight> ]? <font-size> [ / <line-height>]? <font-family>
%] | caption | icon | menu | message-box | small-caption | status-bar
%| inherit
\XMLnamespaceattributeX{fo}{font}{\FOfont}{\inherit}
%[[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit
\XMLnamespaceattributeX{fo}{font-family}{\FOfontfamily}{\inherit}
%\XMLnamespaceattributeX{fo}{font-selection-strategy}{\FOselectionstrategy}{auto}
%<absolute-size> | <relative-size> | <length> | <percentage> | inherit
\XMLnamespaceattribute{fo}{font-size}{\FOfontsize}{\inherit}
%<number> | none | inherit
\XMLnamespaceattributeX{fo}{font-size-adjust}{\FOfontsizeadjust}{\inherit}
%normal | wider | narrower | ultra-condensed
% | extra-condensed | condensed | semi-condensed | semi-expanded |
% expanded | extra-expanded | ultra-expanded |inherit
\XMLnamespaceattributeX{fo}{font-stretch}{\FOfontstretch}{\inherit}
%normal | italic | oblique |  backslant | inherit
\XMLnamespaceattributeX{fo}{font-style}{\FOfontstyle}{\inherit}
%normal | small-caps | inherit
\XMLnamespaceattributeX{fo}{font-variant}{\FOfontvariant}{\inherit}
%normal | bold | bolder | lighter | 100 | 200
% | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
\XMLnamespaceattributeX{fo}{font-weight}{\FOfontweight}{\inherit}
%auto | even | odd | end-on-even | end-on-odd | no-force | inherit
\XMLnamespaceattributeX{fo}{force-page-count}{\FOforcepagecount}{auto}
%<string>
\XMLnamespaceattributeX{fo}{format}{\FOformat}{\inherit}
%<angle> | inherit
%\XMLnamespaceattributeX{fo}{glyph-orientation-horizontal}{\FOglyphorientationhorizontal}{\inherit}
%auto | <angle> | inherit
%\XMLnamespaceattributeX{fo}{glyph-orientation-vertical}{\FOglyphorientationvertical}{\inherit}
%<character>
\XMLnamespaceattributeX{fo}{grouping-separator}{\FOgroupingseparator}{}
%<number>
%\XMLnamespaceattributeX{fo}{grouping-size}{\FOgroupingsize}{}
%<length> | <percentage> | auto | inherit
\XMLnamespaceattributeX{fo}{height}{\FOheight}{auto}
%false | true | inherit
\XMLnamespaceattributeX{fo}{hyphenate}{\FOhyphenate}{\inherit}
%<character> | inherit
\XMLnamespaceattributeX{fo}{hyphenation-character}{\FOhyphenationcharacter}{\inherit}
%auto | column | page | inherit
%\XMLnamespaceattributeX{fo}{hyphenation-keep}{\FOhyphenationkeep}{\inherit}
%no-limit | <number> | inherit
%\XMLnamespaceattributeX{fo}{hyphenation-ladder-count}{\FOhyphenationladdercount}{\inherit}
%<number> | inherit
\XMLnamespaceattributeX{fo}{hyphenation-push-character-count}{\FOhyphenationpushcharactercount}{\inherit}
%<number> | inherit
%\XMLnamespaceattributeX{fo}{hyphenation-remain-character-count}{\FOhyphenationremaincharactercount}{\inherit}
% <id>
\XMLnamespaceattributeX{fo}{id}{\FOid}{}
%yes | no
%\XMLnamespaceattributeX{fo}{indicate-destination}{\FOindicatedestination}{no}
%auto | auto-odd | auto-even | <number> | inherit
\XMLnamespaceattributeX{fo}{initial-page-number}{\FOinitialpagenumber}{auto}
%auto | <length> | <percentage> | <length-range> | inherit
%\XMLnamespaceattributeX{fo}{inline-progression-dimension}{\FOinlineprogressiondimension}{auto}
%null string |  <idref>
\XMLnamespaceattributeX{fo}{internal-destination}{\FOinternaldestination}{}
%<keep> | inherit
\XMLnamespaceattributeX{fo}{keep-together}{\FOkeeptogether}{\inherit}
\XMLnamespaceattributeX{fo}{keep-together.within-line}{\FOkeeptogetherLine}{\inherit}
% since we dont support column keeps, use Page here (not)
\XMLnamespaceattributeX{fo}{keep-together.within-column}{\FOkeeptogetherColumn}{\inherit}
\XMLnamespaceattributeX{fo}{keep-together.within-page}{\FOkeeptogetherPage}{\inherit}
%<keep> | inherit
\XMLnamespaceattributeX{fo}{keep-with-next}{\FOkeepwithnext}{auto}
\XMLnamespaceattributeX{fo}{keep-with-next.within-line}{\FOkeepwithnextLine}{auto}
\XMLnamespaceattributeX{fo}{keep-with-next.within-column}{\FOkeepwithnextColumn}{auto}
\XMLnamespaceattributeX{fo}{keep-with-next.within-page}{\FOkeepwithnextPage}{auto}
%<keep> | inherit
\XMLnamespaceattributeX{fo}{keep-with-previous}{\FOkeepwithprevious}{auto}
\XMLnamespaceattributeX{fo}{keep-with-previous.within-line}{\FOkeepwithpreviousLine}{auto}
\XMLnamespaceattributeX{fo}{keep-with-previous.within-column}{\FOkeepwithpreviousColumn}{auto}
\XMLnamespaceattributeX{fo}{keep-with-previous.within-page}{\FOkeepwithpreviousPage}{auto}
%none | <language> | inherit
\XMLnamespaceattributeX{fo}{language}{\FOlanguage}{\inherit}
%<length> | <percentage> | inherit
\XMLnamespaceattributeX{fo}{last-line-end-indent}{\FOlastlineendindent}{\inherit}
%none | reference-area | page | inherit
 \XMLnamespaceattribute{fo}{leader-length.maximum}{\FOleaderlengthmaximum}{\textwidth}
% leader-length.minimum=0pt, .optimum=12.0pt, .maximum=100percent
 \XMLnamespaceattributeX{fo}{leader-alignment}{\FOleaderalignment}{\inherit}
 \XMLnamespaceattributeX{fo}{leader-length}{\FOleaderlength}{\inherit}
%space | rule | dots | use-content | inherit
 \XMLnamespaceattributeX{fo}{leader-pattern}{\FOleaderpattern}{\inherit}
%use-font-metrics | <length> | inherit
 \XMLnamespaceattributeX{fo}{leader-pattern-width}{\FOleaderpatternwidth}{\inherit}
%<length> | <percentage> | auto | inherit
 \XMLnamespaceattribute{fo}{leader-length.optimum}{\FOleaderlengthoptimum}{0pt}
 \XMLnamespaceattributeX{fo}{leader-length.minimum}{\FOleaderlengthminimum}{\z@}\XMLnamespaceattributeX{fo}{left}{\FOleft}{auto}
%normal | <length> | <space> | inherit
\XMLnamespaceattributeX{fo}{letter-spacing}{\FOletterspacing}{\inherit}
%auto | alphabetic | traditional
\XMLnamespaceattributeX{fo}{letter-value}{\FOlettervalue}{auto}
%ignore | preserve | treat-as-space | inherit
\XMLnamespaceattributeX{fo}{linefeed-treatment}{\FOlinefeedtreatment}{\inherit}
%normal | <length> | <number> | <percentage> | <space> | inherit
\XMLnamespaceattributeX{fo}{line-height}{\FOlineheight}{\inherit}
%consider-shifts | disregard-shifts | inherit
\XMLnamespaceattributeX{fo}{line-height-shift-adjustment}{\FOlineheightshiftadjustment}{\inherit}
%line-height | font-height | max-height | inherit
\XMLnamespaceattributeX{fo}{line-stacking-strategy}{\FOlinestackingstrategy}{\inherit}
%<margin-width>{1,4} | inherit 
\XMLnamespaceattributeX{fo}{margin}{\FOmargin}{}
\XMLnamespaceattributeX{fo}{margin-left}  {\FOmarginleft}  {0pt}
\XMLnamespaceattributeX{fo}{margin-right}  {\FOmarginright}  {0pt}
\XMLnamespaceattributeX{fo}{margin-top}  {\FOmargintop}  {0pt}
\XMLnamespaceattributeX{fo}{margin-bottom}  {\FOmarginbottom}  {0pt}
%<name>
\XMLnamespaceattributeX{fo}{marker-class-name}{\FOmarkerclassname}{}
%<name>
\XMLnamespaceattributeX{fo}{master-reference}{\FOmasterreference}{}
\XMLnamespaceattributeX{fo}{master-name}{\FOmastername}{}
%<length> | <percentage> | none | inherit 
\XMLnamespaceattributeX{fo}{max-height}{\FOmaxheight}{\z@}
%<number> | no-limit | inherit
\XMLnamespaceattributeX{fo}{maximum-repeats}{\FOmaximumrepeats}{no-limit}
%<length> | <percentage> | none | inherit
\XMLnamespaceattributeX{fo}{max-width}{\FOmaxwidth}{none}
%<length> | <percentage> | inherit 
\XMLnamespaceattributeX{fo}{min-height}{\FOminheight}{\z@}
%<length> | <percentage> | inherit
\XMLnamespaceattributeX{fo}{min-width}{\FOminwidth}{}
%<number>
\XMLnamespaceattributeX{fo}{number-columns-repeated}{\FOnumbercolumnsrepeated}{1}
%<number>
\XMLnamespaceattributeX{fo}{number-columns-spanned}{\FOnumbercolumnsspanned}{1}
%<number>
\XMLnamespaceattributeX{fo}{number-rows-spanned}{\FOnumberrowsspanned}{1}
%odd | even | any | inherit
\XMLnamespaceattributeX{fo}{odd-or-even}{\FOoddoreven}{any}
%<integer> | inherit
\XMLnamespaceattributeX{fo}{orphans}{\FOorphans}{\inherit}
%visible | hidden | scroll | auto | inherit
\XMLnamespaceattributeX{fo}{overflow}{\FOoverflow}{auto}
%<padding-width>{1,4} | inherit
\XMLnamespaceattributeX{fo}{padding}{\FOpadding}{\z@}
%<padding-width> | <length-conditional> | inherit
\XMLnamespaceattributeX{fo}{padding-after}{\FOpaddingafter}{\z@}
%<padding-width> | <length-conditional> | inherit
\XMLnamespaceattributeX{fo}{padding-before}{\FOpaddingbefore}{\z@}
%<padding-width> | inherit
\XMLnamespaceattributeX{fo}{padding-bottom}{\FOpaddingbottom}{\z@}
%<padding-width> | inherit
\XMLnamespaceattributeX{fo}{padding-end}{\FOpaddingend}{\z@}
%<padding-width> | inherit
\XMLnamespaceattributeX{fo}{padding-left}{\FOpaddingleft}{\z@}
%<padding-width> | inherit
\XMLnamespaceattributeX{fo}{padding-right}{\FOpaddingright}{\z@}
%<padding-width> | inherit
\XMLnamespaceattributeX{fo}{padding-start}{\FOpaddingstart}{\z@}
%<padding-width> | inherit
\XMLnamespaceattributeX{fo}{padding-top}{\FOpaddingtop}{\z@}
%auto | always | avoid | left | right | inherit
\XMLnamespaceattributeX{fo}{page-break-after}{\FOpagebreakafter}{auto}
%auto | always | avoid | left | right | inherit
\XMLnamespaceattributeX{fo}{page-break-before}{\FOpagebreakbefore}{auto}
%auto | indefinite | <length> | inherit
\XMLnamespaceattribute{fo}{page-height}{\FOpageheight}{auto}
%first | last | rest | any | inherit
\XMLnamespaceattributeX{fo}{page-position}{\FOpageposition}{any}
%auto | indefinite | <length> | inherit
\XMLnamespaceattribute{fo}{page-width}{\FOpagewidth}{auto}
%[<time> | <percentage>]{1,2} | inherit
%\XMLnamespaceattributeX{fo}{pause}{\FOpause}{}
%<time> | <percentage> | inherit
%\XMLnamespaceattributeX{fo}{pause-after}{\FOpauseafter}{}
%<time> | <percentage> | inherit
%\XMLnamespaceattributeX{fo}{pause-before}{\FOpausebefore}{}
%<frequency> | x-low | low | medium | high | x-high | inherit
%\XMLnamespaceattributeX{fo}{pitch}{\FOpitch}{\inherit}
%<number> | inherit
%\XMLnamespaceattributeX{fo}{pitch-range}{\FOpitchrange}{\inherit}
%<uri> mix? repeat? | auto | none | inherit 
%\XMLnamespaceattributeX{fo}{play-during}{\FOplayduring}{auto}
%static | relative | absolute | fixed | inherit
\XMLnamespaceattributeX{fo}{position}{\FOposition}{static}
%true | false | inherit
\XMLnamespaceattributeX{fo}{precedence}{\FOprecedence}{false}
%<length> | inherit
\XMLnamespaceattributeX{fo}{provisional-distance-between-starts}{\FOprovisionaldistancebetweenstarts}{\inherit}
%<length> | inherit
\XMLnamespaceattributeX{fo}{provisional-label-separation}{\FOprovisionallabelseparation}{\inherit}
% 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit
\XMLnamespaceattributeX{fo}{reference-orientation}{\FOreferenceorientation}{0}
%<idref> | inherit
%\XMLnamespaceattributeX{fo}{ref-id}{\FOrefid}{}
%xsl-region-body | xsl-region-start | xsl-region-end
%| xsl-region-before | xsl-region-after | xsl-before-float-separator
%| xsl-footnote-separator | <name>
\XMLnamespaceattributeX{fo}{region-name}{\FOregionname}{}
%before | baseline | inherit
\XMLnamespaceattributeX{fo}{relative-align}{\FOrelativealign}{\inherit}
%auto | static | relative | inherit
\XMLnamespaceattributeX{fo}{relative-position}{\FOrelativeposition}{static}
%auto | perceptual | relative-colorimetric | saturation | 
% absolute-colorimetric | inherit
%\XMLnamespaceattributeX{fo}{rendering-intent}{\FOrenderingintent}{auto}
%page | page-sequence | document
%\XMLnamespaceattributeX{fo}{retrieve-boundary}{\FOretrieveboundary}{page-sequence}
%<name>
\XMLnamespaceattributeX{fo}{retrieve-class-name}{\FOretrieveclassname}{}
%first-starting-within-page | first-including-carryover |
% last-starting-within-page | last-ending-within-page
\XMLnamespaceattributeX{fo}{retrieve-position}{\FOretrieveposition}{first-starting-within-page}
%<number> | inherit
%\XMLnamespaceattributeX{fo}{richness}{\FOrichness}{\inherit}
%<length> | <percentage> | auto | inherit
\XMLnamespaceattributeX{fo}{right}{\FOright}{auto}
%<string> | none | inherit
\XMLnamespaceattributeX{fo}{role}{\FOrole}{none}
%none | dotted | dashed | solid | double | groove
% | ridge | inherit
\XMLnamespaceattributeX{fo}{rule-style}{\FOrulestyle}{\inherit}
%<length>
\XMLnamespaceattributeX{fo}{rule-thickness}{\FOrulethickness}{\inherit}
%uniform | non-uniform | inherit
\XMLnamespaceattributeX{fo}{scaling}{\FOscaling}{uniform}
%auto | integer-pixels | resample-any-method | inherit
\XMLnamespaceattributeX{fo}{scaling-method}{\FOscalingmethod}{auto}
%true | false | inherit
\XMLnamespaceattributeX{fo}{score-spaces}{\FOscorespaces}{\inherit}
%none | auto | <script> | inherit
\XMLnamespaceattributeX{fo}{script}{\FOscript}{\inherit}
%replace | new
\XMLnamespaceattributeX{fo}{show-destination}{\FOshowdestination}{replace}
%<length>{1,2} | auto | landscape | portrait | inherit
\XMLnamespaceattributeX{fo}{size}{\FOsize}{auto}
%<uri>+ | none | inherit
%\XMLnamespaceattributeX{fo}{source-document}{\FOsourcedocument}{none}
%<space> | inherit
%\XMLnamespaceattributeX{fo}{space-after}{\FOspaceafter}{\z@}
%<space> | inherit
%\XMLnamespaceattributeX{fo}{space-before}{\FOspacebefore}{\z@}
%<space> | inherit
\XMLnamespaceattributeX{fo}{space-end}{\FOspaceend}{\z@}
%<space> | inherit
\XMLnamespaceattributeX{fo}{space-start}{\FOspacestart}{\z@}
%ignore | preserve | inherit
\XMLnamespaceattributeX{fo}{space-treatment}{\FOspacetreatment}{\inherit}
%none | all | inherit
\XMLnamespaceattributeX{fo}{span}{\FOspan}{none}
%normal | none | spell-out | inherit
%\XMLnamespaceattributeX{fo}{speak}{\FOspeak}{\inherit}
%once | always | inherit
%\XMLnamespaceattributeX{fo}{speak-header}{\FOspeakheader}{\inherit}
%digits | continuous | inherit
%\XMLnamespaceattributeX{fo}{speak-numeral}{\FOspeaknumeral}{\inherit}
%code | none | inherit
%\XMLnamespaceattributeX{fo}{speak-punctuation}{\FOspeakpunctuation}{\inherit}
%<number> | x-slow | slow | medium | fast
% | x-fast | faster | slower | inherit
%\XMLnamespaceattributeX{fo}{speech-rate}{\FOspeechrate}{\inherit}
% <uri> | inherit
\XMLnamespaceattributeX{fo}{src}{\FOsrc}{}
%<length> | inherit
\XMLnamespaceattribute{fo}{start-indent}{\FOstartindent}{\inherit}
%show | hide
\XMLnamespaceattributeX{fo}{starting-state}{\FOstartingstate}{show}
%yes | no
%\XMLnamespaceattributeX{fo}{starts-row}{\FOstartsrow}{no}
%<number> | inherit
%\XMLnamespaceattributeX{fo}{stress}{\FOstress}{\inherit}
%auto | suppress | retain | inherit
\XMLnamespaceattributeX{fo}{suppress-at-line-break}{\FOsuppressatlinebreak}{auto}
%xsl-preceding | xsl-following | xsl-any | <name>[ <name>]*
\XMLnamespaceattributeX{fo}{switch-to}{\FOswitchto}{xsl-any}
%auto | fixed | inherit
\XMLnamespaceattributeX{fo}{table-layout}{\FOtablelayout}{auto}
%yes | no
\XMLnamespaceattributeX{fo}{table-omit-footer-at-break}{\FOtableomitfooteratbreak}{no}
%yes | no
\XMLnamespaceattributeX{fo}{table-omit-header-at-break}{\FOtableomitheaderatbreak}{no}
%start | center | end | justify | inside | outside 
% | left | right | <string> | inherit
\XMLnamespaceattributeX{fo}{text-align}{\FOtextalign}{\inherit}
%relative | start | center | end | justify | inside
% | outside | left | right | <string> | inherit
\XMLnamespaceattributeX{fo}{text-align-last}{\FOtextalignlast}{\inherit}
%none | [ [ underline | no-underline] || [ overline | no-overline ]
%|| [ line-through | no-line-through ] || [ blink | no-blink ] ]| inherit
\XMLnamespaceattributeX{fo}{text-decoration}{\FOtextdecoration}{none}
%<length> | <percentage> | inherit
\XMLnamespaceattributeX{fo}{text-indent}{\FOtextindent}{\inherit}
%none | [<color> || <length> <length> <length>?
%,]* [<color> || <length> <length> <length>?] | inherit
\XMLnamespaceattributeX{fo}{text-shadow}{\FOtextshadow}{none}
%capitalize | uppercase | lowercase | none | 
\XMLnamespaceattributeX{fo}{text-transform}{\FOtexttransform}{\inherit}
%<length> | <percentage> | auto | inherit
\XMLnamespaceattributeX{fo}{top}{\FOtop}{auto}
%auto | yes | no | inherit
\XMLnamespaceattributeX{fo}{treat-as-word-space}{\FOtreataswordspace}{auto}
%normal | embed | bidi-override | inherit
\XMLnamespaceattributeX{fo}{unicode-bidi}{\FOunicodebidi}{normal}
%baseline | middle | sub | super | text-top |
%text-bottom | <percentage> | <length> | top | bottom | inherit
\XMLnamespaceattribute{fo}{vertical-align}{\FOverticalalign}{auto}
%visible | hidden | collapse | inherit
%\XMLnamespaceattributeX{fo}{visibility}{\FOvisibility}{visible}
%[[<specific-voice> | <generic-voice>
%],]* [<specific-voice> | <generic-voice> ] | inherit
%\XMLnamespaceattributeX{fo}{voice-family}{\FOvoicefamily}{\inherit}
%<number> | <percentage> | silent | x-soft
%| soft | medium | loud | x-loud | inherit
%\XMLnamespaceattributeX{fo}{volume}{\FOvolume}{\inherit}
%normal | pre | nowrap | inherit
\XMLnamespaceattributeX{fo}{white-space}{\FOwhitespace}{\inherit}
%false | true | inherit
\XMLnamespaceattributeX{fo}{white-space-collapse}{\FOwhitespacecollapse}{\inherit}
%<integer> | inherit
\XMLnamespaceattributeX{fo}{widows}{\FOwidows}{\inherit}
%<length> | <percentage> | auto | inherit
\XMLnamespaceattributeX{fo}{width}{\FOwidth}{auto}
%normal | <length> | <space> | inherit
\XMLnamespaceattributeX{fo}{word-spacing}{\FOwordspacing}{\inherit}
%no-wrap | wrap | inherit
\XMLnamespaceattributeX{fo}{wrap-option}{\FOwrapoption}{\inherit}
%lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit
\XMLnamespaceattributeX{fo}{writing-mode}{\FOwritingmode}{lr-tb}
%<country-language> | inherit
%\XMLnamespaceattributeX{fo}{xml:lang}{\FOxmllang}{\inherit}
%auto | <integer> | inherit
\XMLnamespaceattributeX{fo}{z-index}{\FOzindex}{auto}
%-------------------------------
\XMLnamespaceattributeX{fotex}{column-align}{\FOcolumnalign}{}

% Added attribute which controls table-placement. 
% It has the same syntax as LaTeX (e.g. !tbh)
% Since XMLTeX doesn't process well attributes from another namespace, 
% I must use the workaround
%          with namespaces.
\XMLnamespaceattributeX{fo}{fotex:placement}{\FOkplacement}{}
\XMLname{fo:inline-container}{\FOInlineContainer}
\XMLname{fo:footnote-body}{\FOFootnoteBody}
\XMLname{fo:list-item-label}{\FOListItemLabel}
\XMLname{fo:list-item-body}{\FOListItemBody}
\XMLname{fo:table-cell}{\FOTableCell}
\XMLname{fo:table-row}{\FOTableRow}
\def\SpaceAttributes{
 \XMLattributeX{space-after.optimum}{\FOspaceafteroptimum}{\z@}
 \XMLattributeX{space-after.maximum}{\FOspaceaftermaximum}{\z@}
 \XMLattributeX{space-after.minimum}{\FOspaceafterminimum}{\z@}
 \XMLattributeX{space-before.optimum}{\FOspacebeforeoptimum}{\z@}
 \XMLattributeX{space-before.maximum}{\FOspacebeforemaximum}{\z@}
 \XMLattributeX{space-before.minimum}{\FOspacebeforeminimum}{\z@}
 \XMLattributeX{space-after}{\FOspaceafter}{}
 \XMLattributeX{space-before}{\FOspacebefore}{}
}
\gdef\Defaultx@fontfamily{Times-Roman}
\gdef\FOheadindent{\z@}
 \gdef\FOautorestore{no}
 \gdef\FOazimuth{center}
 \gdef\FObordercollapse{collapse}
 \gdef\FOborderseparation{\z@}
 \gdef\FOborderspacing{\z@}
 \gdef\FOcaptionside{before}
 \gdef\FOcolor{black}
 \gdef\FOcountry{none}
 \gdef\FOdirection{ltr}
 \gdef\FOdisplayalign{auto}
 \gdef\FOelevation{level}
 \gdef\FOemptycells{show}
 \gdef\FOendindent{\z@}
 \gdef\FOfont{}
 \gdef\FOfontfamily{Times-Roman}
 \gdef\FOfontsizeadjust{none}
 \gdef\FOfontsize{medium}
 \gdef\FOfontstretch{normal}
 \gdef\FOfontstyle{normal}
 \gdef\FOfontvariant{normal}
 \gdef\FOfontweight{normal}
 \gdef\FOformat{1}
 \gdef\FOglyphorientationhorizontal{0}
 \gdef\FOglyphorientationvertical{auto}
 \gdef\FOhyphenate{false}
 \gdef\FOhyphenationcharacter{-}
 \gdef\FOhyphenationkeep{none}
 \gdef\FOhyphenationladdercount{no-limit}
 \gdef\FOhyphenationpushcharactercount{2}
 \gdef\FOhyphenationremaincharactercount{2}
 \gdef\FOlanguage{none}
 \gdef\FOlastlineendindent{\z@}
 \gdef\FOleaderalignment{none}
 \gdef\FOleaderlength{\z@}
 \gdef\FOleaderpattern{space}
 \gdef\FOleaderpatternwidth{}
 \gdef\FOletterspacing{normal}
 \gdef\FOlinefeedtreatment{treat-as-space}
 \gdef\FOlineheight{normal}
 \gdef\FOlineheightshiftadjustment{consider-shifts}
 \gdef\FOlinestackingstrategy{line-height}
 \gdef\FOorphans{2}
 \gdef\FOpagebreakinside{auto}
 \gdef\FOpitch{medium}
 \gdef\FOpitchrange{50}
 \gdef\FOprovisionaldistancebetweenstarts{24.0pt}
 \gdef\FOprovisionallabelseparation{6.0pt}
 \gdef\FOrelativealign{before}
 \gdef\FOrichness{50}
 \gdef\FOrulestyle{solid}
 \gdef\FOrulethickness{1.0pt}
 \gdef\FOscorespaces{true}
 \gdef\FOscript{auto}
 \gdef\FOspacetreatment{preserve}
% \gdef\FOspeak{normal}
% \gdef\FOspeakheader{once}
% \gdef\FOspeaknumeral{continuous}
% \gdef\FOspeakpunctuation{none}
% \gdef\FOspeechrate{medium}
 \gdef\FOstartindent{\z@}
% \gdef\FOstress{50}
 \gdef\FOtextalign{start}
 \gdef\FOtextalignlast{relative}
 \gdef\FOtextindent{\z@}
 \gdef\FOtexttransform{none}
% \gdef\FOvoicefamily{}
 \gdef\FOvolume{medium}
 \gdef\FOwhitespace{normal}
 \gdef\FOwhitespacecollapse{true}
 \gdef\FOwidows{2}
 \gdef\FOwordspacing{normal}
 \gdef\FOwrapoption{wrap}
%<margin-width> | inherit
 \gdef\FOmarginbottom{\z@}
%<margin-width> | inherit
\gdef\FOmarginleft{\z@}
%<margin-width> | inherit
\gdef\FOmarginright{\z@}
%<margin-width> | inherit
\gdef\FOmargintop{}

\gdef\FOkplacement{}

\XMLelement{fo:root}
  {\XMLnamespaceattributeX{fo}{fotex:spacing-style}{\FoTeXSpacingStyle}{normal}}
  {\documentclass{article}
   \usepackage{fotex}
   \begin{document}
   \pagestyle{empty}
   \FOSetHyphenation
   \FoTeXSetSpacingStyle
   %\ignorewhitespace
   }
  {\end{document}}


\XMLelement{fotex:inlinemath}
   {}
   {\(}
   {\)}
 

\XMLelement{fotex:equation}
   {}
   {\begin{equation}}
   {\end{equation}}
 

\XMLelement{fotex:displaymath}
   {}
   {\begin{displaymath}}
   {\end{displaymath}}     

\XMLelement{fotex:eqnarray}
 {}
 {\xmlgrab}
 {\begin{gather*}#1\end{gather*}}

\XMLelement{fotex:subeqn}
  {}
  {\xmlgrab}
  {\ifx\FOid\@empty
     \gdef\w@t{#1\nonumber\\}
   \else
% needs the global version
     \gdef\w@t{#1\label{\temp}\\}
   \fi
   \aftergroup\w@t}

\XMLelement{fotex:bookmark}
 {
  \XMLattributeX{fotex-bookmark-level}{\FOTEXbookmarklevel}{0}
  \XMLattributeX{fotex-bookmark-label}{\FOTEXbookmarklabel}{}
 }
 {\xmlgrab}
 {\protectCS\FOTEXbookmarklabel
   \let\ignorespaces\@empty
   \pdfbookmark[\FOTEXbookmarklevel]{#1}{\FOTEXbookmarklabel}}

\XMLelement{fo:block}
  {\SpaceAttributes}
  {%
  \ifx\FOspan\att@all
	\ifnum\NColumns>1\relax
  		\interendmulticols
	\fi
  \fi
  \ifnum\FOwidows>1\relax\widowpenalty10000\relax\else\widowpenalty0\relax\fi
  \ifnum\FOorphans>1\relax\clubpenalty10000\relax\else\clubpenalty0\relax\fi
  \FOBlockGrabfalse
  \FOexpandattributes
  \FOSetHyphenation
  \ifFOinOutput
     \ifx\FObackgroundcolor\att@transparent
        \ifx\FOborderstyle\att@solid
           \FOBlockGrabtrue
        \fi
     \else
        \FOBlockGrabtrue
     \fi
     \def\w@t{\FOOutputBlock}%
     \def\@whattodonext{\FOEndOutputBlock}%
     \DEBUG{Start of Output Block, \expandafter\meaning\w@t, \expandafter\meaning\@whattodonext}%
  \else
     \ifx\XML@parent\FOListItemLabel
        \def\w@t{\FOListBlock}%
        \def\@whattodonext{\FOEndBlock}%
     \else
% we care if a block is inside a table cell
        \ifnum\FOinTable>1\relax
			\FOinTable1\relax
           \def\w@t{\FOBoxedBlock{\CurrentCellWidth}}%
           \def\@whattodonext{\FOEndBoxedBlock}
        \else
        % we care if a block is a second or subsequent child of a list body
           \ifx\XML@parent\FOListItemBody
              \global\advance\FOListBlocks by 1\relax%
              \ifnum\FOListBlocks<2\relax\else\FOListInnerPartrue\fi
           \else
        % but also if its nested within a list body block
              \ifFOListBody
                 \FOListInnerPartrue
              \fi
           \fi
           \ifx\FObackgroundcolor\att@transparent
              \ifx\FOborderstyle\att@solid
                 \FOBlockGrabtrue
              \fi
           \else
              \FOBlockGrabtrue
           \fi
           \def\@whattodonext{\FOEndBlock}
           \def\w@t{\FONormalBlock}%
        \fi
     \fi
  \fi
  \w@t
  \ifx\FOkeeptogether\att@always\samepage\fi
  \ifx\FOkeeptogetherColumn\att@always\samepage\fi
  \ifx\FOkeeptogetherPage\att@always\samepage\fi
  %\usewhitespace\ignorespaces
  }
  {\ifx\FOkeeptogether\att@always\samepage\fi
  \ifx\FOkeeptogetherColumn\att@always\samepage\fi
  \ifx\FOkeeptogetherPage\att@always\samepage\fi
  \@whattodonext
  \ifx\FOspan\att@all
	\ifnum\NColumns>1\relax
  		\interbeginmulticols{\NColumns}%
  	\fi
  \fi
}

\XMLelement{fo:character}
  {}
  {
  \ifx\FOverticalalign\att@auto
    \let\FOverticalalign\FObaselineshift
  \fi
  \FO@character{\FOcharacter}}
  {}

\XMLelement{fo:external-graphic}
   {
%auto | <length> | <percentage> | inherit
\XMLattributeX{content-height}{\FOcontentheight}{auto}
%auto | <length> | <percentage> | inherit
\XMLattributeX{content-width}{\FOcontentwidth}{auto}
}
   {
{\utfeight@protect@chars\expandafter\FOfiletest\FOsrc\@empty\@empty\@empty\@empty\@empty\@empty\@empty\@}%
\ifx\FOwidth\att@auto
  \ifx\FOheight\att@auto%
	\relax%
  \else%
	\def\FOcontentheight{\FOheight}%
	\def\FOcontentwidth{auto}%
  \fi
\else
  \def\FOcontentwidth{\FOwidth}%
  \ifx\FOheight\att@auto%
	\def\FOcontentheight{auto}%
  \else%
	\def\FOcontentheight{\FOheight}%
  \fi
\fi
\ifx\FOcontentwidth\att@scaletofit
 \setkeys{Gin}{width=\hsize}%
\else
  \ifx\FOcontentwidth\att@auto\else\FOSetGWidth\fi
\fi
\ifx\FOcontentheight\att@scaletofit
 \setkeys{Gin}{height=\vsize}%
\else
 \ifx\FOcontentheight\att@auto\else\FOSetGHeight\fi
\fi
\def\aligntype{center}
\ifthenelse{\equal{\FOtextalign}{right}}{\def\aligntype{flushright}}{}
\ifthenelse{\equal{\FOtextalign}{left}}{\def\aligntype{flushleft}}{}
\def\Picscaled{\begin{\aligntype}\includegraphics{\FOsrcname}\end{\aligntype}}
\ifx\FOscaling\att@uniform\else\setkeys{Gin}{keepaspectratio=false}\fi
%\csname startQ@\FOtextalign\endcsname
\ifx\FOborderstyle\att@solid\fbox{\Picscaled}\else\Picscaled\fi
%\csname endQ@\FOtextalign\endcsname
 }
{}


\XMLelement{fo:block-container}
  {}
  {}
  {}

\XMLelement{fo:float}
  {\XMLattributeX{float}{\FOfloat}{float}}
  {\ifx\FOfloat\att@none
     \begin{figure}[!htp]
   \else
     \begin{figure}
   \fi
   \FOlabel}
  {\end{figure}}

\XMLelement{fo:flow}
  {}
  {\global\SimplePMRefs1\relax
  \FOSetHyphenation
  \ifnum\PrevNColumns>1\relax
  \else
  	\clearpage
  \fi
  \DEBUG{New page, \the\c@page, \PageNumber}%
  \ifx\PageNumber\att@auto
  \else
  	\ifx\PageNumber\att@autoeven
  		\ifodd\c@page
			\BlankPage
		\fi
 		\else
  			\ifx\PageNumber\att@autoodd
  				\ifodd\c@page
 				\else
					\BlankPage
				\fi
      		\else
    			\setcounter{page}{\PageNumber}%
    		\fi
   		\fi
  	\fi
  \ifx\@empty\pendingID\else
   \@bsphack
   \protected@write\@mainaux{}%
    {\string\newlabel{\pendingID}{{}{\expandafter\FOgeneratePage\FOformat\@null}{}{}{}}}%
   \@esphack
  \hyper@@anchor{\pendingID}{\relax}%
  \global\let\pendingID\@empty
  \fi
  
    \DEBUG{^^JStart page sequence, using layout \CurrentPageMaster, at page \the\c@page}%
  
   \setaccordingtomaster
   \xdef\PrevNColumns{\NColumns}%
   \ForcePageSetuptrue
   \ifnum\NColumns>1\relax
   		\nobeginmulticols{\NColumns}%
   \fi
%  \ifnum\NColumns>1\MulticolPendingtrue
%  \begin{multicols}{\NColumns}\fi
   }
  {
   \ForcePageSetupfalse
   \ifnum\NColumns>1\relax
   		\noendmulticols
   \else
   		\clearpage
   \fi
   \ifx\ForcePage\att@auto
   \else
% remember that we'll do a \clearpage next time anyway.
% so leave here on wrong sort of page
     \ifx\ForcePage\att@endoneven
       \ifodd\c@page\else\BlankPage\fi
     \else
        \ifx\ForcePage\att@endonodd
          \ifodd\c@page\BlankPage\fi
        \fi
     \fi
   \fi
   }

\XMLelement{fo:footnote-body}
  {}
  {}
  {}


\XMLelement{fo:footnote}
  {}
  {\xmlgrab}
  {\FOSaveFontSize\xmltextwochildren\FOplainfootmark\FOfoottext#1}

\XMLelement{fo:page-number-citation}
   {\XMLattributeX{ref-id}{\FOrefid}{}}
   {}
   {\fopagecitation}

\XMLelement{fotex:sort}
   {\XMLattributeX{range-char}{\FOrangechar}{\textendash}}
   {\let\fopagecitation\fosortpagecitation
    \global\sorttoks{}}
   {\global\sortcount-2\let\@elt\focompress@elt
    \let\fosep\@empty
    \let\foheld\relax
    \the\sorttoks
    \ifx\foheld\relax\else\FOrangechar\fi\foheld
   }

\XMLelement{fo:wrapper}
  {}
  {\FOSetFont{wrapper}\FOlabel}
  {}

\XMLelement{fo:leader}
  {}
  {
\leavevmode
\ifx\FOleaderpattern\leader@pattern@rule
  	\ifx\FOrulestyle\rule@style@dashed
    	\def\w@t{\cleaders\hbox{$\m@th \mkern1.5mu-\mkern1.5mu$}\hfil}%
   	\else
    	\ifx\FOrulestyle\rule@style@dotted
      		\def\w@t{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfil}%
    	\else
      		\ifdim\FOrulethickness>\z@
        		\def\w@t{\leaders\hrule height \FOrulethickness\hfill}%
      		\else
        		\def\w@t{\hfill}%
      		\fi
    	\fi
   	\fi
\else
  	\ifx\FOleaderpattern\leader@pattern@dots
      	\def\w@t{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill}%
  	\else % space
      	\def\w@t{\hfill}%
  	\fi
\fi
\ifx\@empty\FOleaderlength
	\PercentToDimen{\FOleaderlengthoptimum}%
	\edef\leaderopt{\the\@tempdima}%
	\PercentToDimen{\FOleaderlengthminimum}%
	\edef\leadermin{\the\@tempdima}%
	\PercentToDimen{\FOleaderlengthmaximum}%
	\edef\leadermax{\the\@tempdima}%
	\@tempdima\leaderopt\relax
	\advance\@tempdima-\leadermin\relax
	\@tempdimb\leadermax\relax
	\advance\@tempdimb-\leaderopt\relax
	\LeaderLength\leaderopt plus \@tempdimb minus \@tempdima\relax
\else
	\PercentToDimen{\FOleaderlength}%
	\LeaderLength\@tempdima\relax
\fi
\ifdim\LeaderLength=\z@
	\w@t
\else
	\hbox to \LeaderLength{\w@t}%
\fi
   }
  {}
  
\catcode`\/\active

\XMLelement{fo:basic-link}
  {
\XMLattributeX{target-presentation-context}{\FOtargetpresentationcontext}{}
\XMLattributeX{target-processing-context}{\FOtargetprocessingcontext}{}
\XMLattributeX{target-stylesheet}{\FOtargetstylesheet}{}
 }
  {\xmlgrab}
  {
\ifx\FOverticalalign\att@auto
    \let\FOverticalalign\FObaselineshift
\fi
\begingroup
\utfeight@protect@chars\xdef\temp{\FOinternaldestination}%
\endgroup
\let\FOinternaldestination\temp
\begingroup
\utfeight@protect@chars\xdef\temp{\FOexternaldestination}%
\endgroup
\let\FOexternaldestination\temp
   \ifx\FOindicatedestination\att@yes
     \setkeys{Hyp}{pdfborder={0 0 1}}
   \fi
   \ifx\FOexternaldestination\@empty
    \hyperlink{\FOinternaldestination}{\FO@inlinesequence{#1}}%
    \let\FOinternaldestination\@empty
   \else
     \href{\FOexternaldestination}{#1}
% this breaks any real content in the link text
%      \expandafter\@basiclink\relax#1//\@nil#1\@nil\FOexternaldestination\@nil%
    \let\FOexternaldestination\@empty
    \fi
  }
\catcode`\/=12

\XMLelement{fo:inline-container}
  {}
  {}
  {}

\XMLelement{fo:list-block}
  {\SpaceAttributes}
  {\ifx\FOstartindent\att@bodystart
     \let\FOstartindent\z@
   \fi
   \ifx\FOendindent\att@labelend
     \let\FOendindent\z@
   \fi
   %\FOSetFont{normal}%
   \advance\FOinList by 1\relax
   %\ifnum\FOinList>1\relax\leavevmode\fi
   \edef\This@LineWidth{\the\linewidth}%
   \begin{list}{}{%
   \itemindent=\FOstartindent
   \PercentToDimen{\FOprovisionaldistancebetweenstarts}%
   \leftmargin=\@tempdima\relax
   \advance\leftmargin by \FOmarginleft
   \rightmargin=\FOmarginright
   \labelwidth=\@tempdima\relax
   \advance\labelwidth by -\FOprovisionallabelseparation
   \expandafter\csname List\FOtextalign\endcsname
   \labelsep\FOprovisionallabelseparation
   \itemsep\z@
   \parsep\z@
   \partopsep\z@
   \topsep\z@
   \parskip\z@
   \ifx\@empty\FOspacebefore
      \@tempdima\FOspacebeforeoptimum
      \advance\@tempdima by -\FOspacebeforeminimum
      \@tempdimb\FOspacebeforeoptimum
      \advance\@tempdimb by \FOspacebeforemaximum
      \topsep\FOspacebeforeoptimum plus \@tempdimb minus \@tempdima
    \else
      \topsep\FOspacebefore
    \fi
   }%
   \edef\This@LineWidth{\the\linewidth}%
  }
  {\end{list}%
   \global\linewidth\This@LineWidth\relax
   \advance\FOinList by -1\relax
%   \par
  }

\XMLelement{fo:list-item-body}
  {}
  {\ifx\FOstartindent\att@bodystart
     \let\FOstartindent\z@
   \fi
   \edef\This@FOListBlocks{\the\FOListBlocks}%
   \FOListBodytrue\global\FOListBlocks0}
  {\global\FOListBlocks\This@FOListBlocks\relax}

\XMLelement{fo:list-item-label}
  {}
  {\xmlgrab}
  {\ifx\FOstartindent\att@bodystart
     \let\FOstartindent\z@
   \fi
   \ifx\FOendindent\att@labelend
     \let\FOendindent\z@
   \fi
   \savebox{\ItemBox}{#1}\item[#1]\FOlabel}

\XMLelement{fo:list-item}
  {\SpaceAttributes}
  {\FOSetHyphenation
   \ifx\@empty\FOspacebefore
      \@tempdima\FOspacebeforeoptimum
      \advance\@tempdima by -\FOspacebeforeminimum
      \@tempdimb\FOspacebeforeoptimum
      \advance\@tempdimb by \FOspacebeforemaximum
      \vskip\FOspacebeforeoptimum plus \@tempdimb minus \@tempdima
    \else
      \ifdim\FOspacebefore=0pt\relax\else\vskip\FOspacebefore\fi
    \fi
   \FOlabel}
  {}

\XMLelement{fo:page-number}
  {}
  {}
  {\expandafter\FOgeneratePage\FOformat\@null}


\XMLelement{fo:page-sequence}
  {}
  {\let\CurrentPageMaster\FOmasterreference
   \let\pendingID\FOid
   \let\PageNumber\FOinitialpagenumber
   \let\ForcePage\FOforcepagecount
   \FOSetHyphenation
   \LoadLanguage{\FOlanguage}
   }
  {}

\XMLelement{fo:region-after}
  {}
  {\ifx\FOregionname\@empty
    \def\FOregionname{xsl-region-after}
  \fi
  \DEBUG{  Link [\FOMaster:after] to \FOregionname}
  \begingroup
     \utfeight@protect@chars
     \expandafter\xdef\csname\FOMaster:after\endcsname{\FOregionname}
     \expandafter\xdef\csname\FOMaster:after-extent\endcsname{\FOextent}
  \endgroup
  }
  {}


\XMLelement{fo:region-before}
  {}
  {\ifx\FOregionname\@empty
    \def\FOregionname{xsl-region-before}
  \fi
  \DEBUG{  Link [\FOMaster:before]  to \FOregionname}
    \begingroup
     \utfeight@protect@chars
     \expandafter\xdef\csname\FOMaster:before\endcsname{\FOregionname}
     \expandafter\xdef\csname\FOMaster:before-extent\endcsname{\FOextent}
  \endgroup
  }
  {}

\XMLelement{fo:region-body}
  {}
  {
  \ifx\FOmargin\@empty\relax\else
      \let\FOmarginright\FOmargin
      \let\FOmarginleft\FOmargin
      \let\FOmargintop\FOmargin
      \let\FOmarginbottom\FOmargin
  \fi
  \xdef\InnerBottomMargin{\FOmarginbottom}
  \xdef\InnerTopMargin{\FOmargintop}
  \xdef\InnerLeftMargin{\FOmarginleft}
  \xdef\InnerRightMargin{\FOmarginright}
  \ifx\FOregionname\@empty
    \def\FOregionname{xsl-region-body}
  \fi
  \DEBUG{ Set up [\FOMaster:\FOregionname] body content: \FOcolumngap|\FOcolumncount|\FOmarginbottom|\FOmargintop|}
    \begingroup
     \utfeight@protect@chars
  \expandafter\xdef\csname\FOMaster:\FOregionname\endcsname{\FOcolumngap|\FOcolumncount|\FOmarginbottom|\FOmargintop|}
    \endgroup
  }
 {}

\XMLelement{fo:static-content}
 {}
 {\xmlgrab}
 {\protectCS\FOflowname
  \FOSetStatic{#1}{\FOflowname}}

\XMLelement{fo:table-and-caption}
  {}
  { 
   \global\ColSpecs={}\NCols0
   \TableWidth\linewidth
   \advance\TableWidth by -\tabcolsep
   \advance\TableWidth by -\FOmarginleft
   \advance\TableWidth by -\FOmarginright
   \gdef\TableHeader{}
   \NoTableSetup
    \ifx\XML@parent\FOInlineContainer
      \ifnum\FOreferenceorientation=0
       \FOlabel
      \else
       \begin{sidewaystable}\FOlabel
      \fi
    \else
     \ifnum\FOreferenceorientation=0
% We process FOkplacement atribute to override the placement of the table.
       \ifx\FOkplacement\@empty
        \begin{table}[!htbp]\FOlabel
		 \else
		  \edef\ktable{\noexpand\begin{table}[\FOkplacement]}
        \ktable\FOlabel
		 \fi
      \else
       \begin{sidewaystable}\FOlabel
      \fi
    \fi
  }
  {\ifx\XML@parent\FOInlineContainer
      \ifnum\FOreferenceorientation=0
      \else
       \end{sidewaystable}
      \fi
   \else
     \ifnum\FOreferenceorientation=0
       \end{table}
      \else
       \end{sidewaystable}
      \fi
   \fi
   \NoTableFinish
  }

\XMLelement{fo:table-body}
  {  }
  {
   \FOFirstCelltrue
   \FOinTable1
   \saveinterlineskip
   \expandafter\NoTableStart{\TableHeader}%
 }
{
 \ifnum\NCols<1
  \typeout{Table end of no cols defined}
 \fi
 \NoTableEnd
}


\XMLelement{fo:table-caption}
  {}
  {}
  {\par}

\XMLelement{fo:table-cell}
  {
   \XMLattributeX{ends-row}{\FOendsrow}{false}
   \XMLattributeX{starts-row}{\FOstartsrow}{false}
  }
  {\xmlgrab}
  {\FOlabel
  \FOexpandattributes
  \FOinTable2
  \NoTableCell{#1}}


\XMLelement{fo:table-column}
 {
   \XMLattributeX{text-align}{\FOtextalign}{\inherit}
 }
 { 
  \@tempcnta0
  \loop\ifnum\FOnumbercolumnsrepeated>\@tempcnta
   \advance\@tempcnta by 1
   {\NoTableColumn}%
  \repeat
  }
 {}

\XMLelement{fo:table-header}
  {}
  {\xmlgrab}
  {\gdef\TableHeader{#1}}

\XMLelement{fo:table-row}
  {}
  {\xmlgrab}
  {\NoTableRow{#1}}

\XMLelement{fo:table}
  {}
  {
   \FOexpandattributes
   \global\ColSpecs={}\NCols0
   \TableWidth\linewidth
   \advance\TableWidth by -\FOmarginleft
   \advance\TableWidth by -\FOmarginright
   \gdef\TableHeader{}
   \NoTableSetup
   \vbox\bgroup\FOBorderTop
% 	\vskip2\lineskip

  }
  {\FOBorderBottom\egroup
   \NoTableFinish
  }

\XMLelement{fo:inline}
  {}
  {\xmlgrab}
  {
  %\usewhitespace\ignorespaces
  \ifx\FOverticalalign\att@auto
    \let\FOverticalalign\FObaselineshift
  \fi
  \FOlabel
  \ifx\FOborderstyle\att@solid
	\interpretwidth
   \FOboxedsequence{#1}%
  \else
      \FO@inlinesequence{#1}%
  \fi}

\XMLelement{fo:bidi-override}
 {}
 {\xmlgrab}
 {\typeout{fo:bidi-override NOT IMPLEMENTED}}

\XMLelement{fo:color-profile}
 {}
 {\xmlgrab}
 {\typeout{fo:color-profile NOT IMPLEMENTED}}

\XMLelement{fo:declarations}
 {}
 {\xmlgrab}
 {\typeout{fo:declarations NOT IMPLEMENTED}}

\XMLelement{fo:initial-property-set}
 {}
 {\xmlgrab}
 {\typeout{fo:initial-property-set NOT IMPLEMENTED}}

\XMLelement{fo:instream-foreign-object}
 {}
 {\xmlgrab}
 {\typeout{fo:instream-foreign-object NOT IMPLEMENTED}}

\XMLelement{fo:marker}
 {}
 {\xmlgrab}
 {\toks@{}%
  \expandafter\FOaddmarker\FOmarks\relax{}%
  \toks@\expandafter{\the\expandafter\toks@\expandafter{\FOmarkerclassname}{#1}}%
  \xdef\FOmarks{\the\toks@}%
  \mark{\FOmarks}}

\XMLelement{fo:retrieve-marker}
 {}
 {\xmlgrab}
 {\begingroup
       \utfeight@protect@chars
\ifx\FOretrieveposition\att@first@starting@within@page
   \xdef\FOthismark{\firstmark}%
\else
   \ifx\FOretrieveposition\att@last@starting@within@page
       \xdef\FOthismark{\botmark}%
   \else
       \xdef\FOthismark{\firstmark}%
   \fi
\fi
       \xdef\FOthisretrieveclassname{\FOretrieveclassname}
   \endgroup
   \expandafter\FOgetmarker\FOthismark\relax\relax}

\XMLelement{fo:multi-case}
 {}
 {\xmlgrab}
 {\typeout{fo:multi-case NOT IMPLEMENTED}}

\XMLelement{fo:multi-properties}
 {}
 {\xmlgrab}
 {\typeout{fo:multi-properties NOT IMPLEMENTED}}

\XMLelement{fo:multi-property-set}
 {}
 {\xmlgrab}
 {\typeout{fo:multi-property-set NOT IMPLEMENTED}}

\XMLelement{fo:multi-switch}
 {}
 {\xmlgrab}
 {\typeout{fo:multi-switch NOT IMPLEMENTED}}

\XMLelement{fo:multi-toggle}
 {}
 {\xmlgrab}
 {\typeout{fo:multi-toggle NOT IMPLEMENTED}}

\XMLelement{fo:region-end}
 {}
 {\xmlgrab}
 {\typeout{fo:region-end NOT IMPLEMENTED}}

\XMLelement{fo:region-start}
 {}
 {\xmlgrab}
 {\typeout{fo:region-start NOT IMPLEMENTED}}

\XMLelement{fo:table-footer}
 {}
 {\xmlgrab}
 {\typeout{fo:table-footer NOT IMPLEMENTED}}


\XMLelement{fo:layout-master-set}
  {}
  {\DEBUG{Start defining page masters}}
  {\DEBUG{Finish defining page masters}}

\XMLelement{fo:page-sequence-master}
  {}
  {\global\SimplePMRefs0\relax
   \DEBUG{Page sequence master: \FOmastername}
   \let\Granpa\FOmastername
  }
  {\global\SimplePMRefs0\relax}

\XMLelement{fo:single-page-master-reference}
   {}
   {\global\advance\SimplePMRefs1\relax
	\DEBUG{ (single page \the\SimplePMRefs\space in \Granpa: use master \FOmasterreference)}
    \begingroup
    \utfeight@protect@chars
      \expandafter\xdef\csname Lead:\the\SimplePMRefs:\Granpa\endcsname{\FOmasterreference}
%     \expandafter\xdef\csname First:\Granpa\endcsname{\FOmasterreference}
%     \expandafter\xdef\csname Blank:\Granpa\endcsname{\FOmasterreference}
%     \expandafter\xdef\csname Odd:\Granpa\endcsname{\FOmasterreference}
%     \expandafter\xdef\csname Even:\Granpa\endcsname{\FOmasterreference}
    \endgroup
    }
   {}

\XMLelement{fo:repeatable-page-master-reference}
   {}
   {\DEBUG{ (multiple pages in \Granpa: use master \FOmasterreference)}
    \begingroup
     \utfeight@protect@chars
%    \expandafter\xdef\csname First:\Granpa\endcsname{\FOmasterreference}
%    \expandafter\xdef\csname Blank:\Granpa\endcsname{\FOmasterreference}
     \expandafter\xdef\csname Odd:\Granpa\endcsname{\FOmasterreference}
%    \expandafter\xdef\csname Even:\Granpa\endcsname{\FOmasterreference}
    \endgroup
   }
   {}


\XMLelement{fo:repeatable-page-master-alternatives}
   {}
   {
    \DEBUG{ (complex page layout with alternatives)}
   }
   {}


\XMLelement{fo:conditional-page-master-reference}
   {}
   {
  \ifx\FOoddoreven\att@even
     \DEBUG{ Even page for \Granpa: \FOmasterreference}
     \begingroup
       \utfeight@protect@chars
       \expandafter\xdef\csname Even:\Granpa\endcsname{\FOmasterreference}
      \endgroup
  \else
    \ifx\FOoddoreven\att@odd
         \DEBUG{ Odd page for \Granpa: \FOmasterreference}
         \begingroup
           \utfeight@protect@chars
           \expandafter\xdef\csname Odd:\Granpa\endcsname{\FOmasterreference}
         \endgroup
    \else
      \ifx\FOpageposition\att@first
         \DEBUG{ First page for \Granpa: \FOmasterreference}
         \begingroup
          \utfeight@protect@chars
          \expandafter\xdef\csname First:\Granpa\endcsname{\FOmasterreference}
         \endgroup
      \else
        \ifx\FOblankornotblank\att@blank
          \DEBUG{ Blank page for \Granpa: \FOmasterreference}
           \begingroup
             \utfeight@protect@chars
             \expandafter\xdef\csname Blank:\Granpa\endcsname{\FOmasterreference}
           \endgroup
        \else
           \DEBUG{ Default page for \Granpa: \FOmasterreference}
           \begingroup
            \utfeight@protect@chars
            \expandafter\xdef\csname Odd:\Granpa\endcsname{\FOmasterreference}
           \endgroup
        \fi
      \fi
    \fi
  \fi
  }
 {}



\XMLelement{fo:simple-page-master}
  {}
  {\let\FOMaster\FOmastername
    \ifx\FOmargin\@empty\relax\else
      \let\FOmarginright\FOmargin
      \let\FOmarginleft\FOmargin
      \let\FOmargintop\FOmargin
      \let\FOmarginbottom\FOmargin
     \fi
    \ifx\FOpagewidth\att@auto\edef\FOpagewidth{\paperwidth}\fi
    \ifx\FOpageheight\att@auto\edef\FOpageheight{\paperheight}\fi
    \expandafter\xdef\csname\FOMaster:after\endcsname{DummyRegion}
    \expandafter\xdef\csname\FOMaster:before\endcsname{DummyRegion}
    \expandafter\xdef\csname\FOMaster:before-extent\endcsname{\FOextent}
    \expandafter\xdef\csname\FOMaster:after-extent\endcsname{\FOextent}
    }
  { 
% \ifdim\InnerTopMargin>\FOmargintop\def\FOmargintop{\InnerTopMargin}\fi
% \ifdim\InnerBottomMargin>\FOmarginbottom\def\FOmarginbottom{\InnerBottomMargin}\fi
% \ifdim\InnerRightMargin>\FOmarginright\def\FOmarginright{\InnerRightMargin}\fi
% \ifdim\InnerLeftMargin>\FOmarginleft\def\FOmarginleft{\InnerLeftMargin}\fi
 \DEBUG{Define page master \FOmargin, \FOMaster, \FOmarginright/\FOmarginleft}
    \begingroup
     \utfeight@protect@chars
    \expandafter\xdef\csname Atomic:\FOMaster\endcsname{
     \MasterTopMargin\FOmargintop\advance\MasterTopMargin\InnerTopMargin\relax
     \MasterBottomMargin\FOmarginbottom\advance\MasterBottomMargin\InnerBottomMargin\relax
     \MasterRightMargin\FOmarginright\advance\MasterRightMargin\InnerRightMargin\relax
     \MasterLeftMargin\FOmarginleft\advance\MasterLeftMargin\InnerLeftMargin\relax
     \paperwidth\FOpagewidth
     \paperheight\FOpageheight
    }
   \endgroup
   }
\endinput

%%% white space hacking to try at some point
\ignorewhitespace
in the code for fo:root
and
\usewhitespace\ignorespaces
(to turn on white space, except for any white space at the start of the
element) at the end of any elements that take character data.

definitions something like'
\def\ignorewhitespace{
 \UnicodeCharacter{13}{ \ignorespaces}
 \UnicodeCharacter{32}{ \ignorespaces}
 \UnicodeCharacter{9}{ \ignorespaces}
}
\def\usewhitespace{
 \UnicodeCharacter{13}{}
 \UnicodeCharacter{32}{}
 \UnicodeCharacter{9}{}
}