diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/fotex |
Initial commit
Diffstat (limited to 'macros/fotex')
-rw-r--r-- | macros/fotex/fotex.ini | 3 | ||||
-rw-r--r-- | macros/fotex/fotex.ltx | 986 | ||||
-rw-r--r-- | macros/fotex/mathml.ltx | 121 | ||||
-rw-r--r-- | macros/fotex/pdffotex.ini | 3 |
4 files changed, 1113 insertions, 0 deletions
diff --git a/macros/fotex/fotex.ini b/macros/fotex/fotex.ini new file mode 100644 index 0000000000..d220004bef --- /dev/null +++ b/macros/fotex/fotex.ini @@ -0,0 +1,3 @@ +\input fotex.ltx +\@startxml +<dump> diff --git a/macros/fotex/fotex.ltx b/macros/fotex/fotex.ltx new file mode 100644 index 0000000000..e07cc8ec43 --- /dev/null +++ b/macros/fotex/fotex.ltx @@ -0,0 +1,986 @@ +%%RCS: $Id: fotex.ltx,v 1.9 1999/12/21 11:40:37 rahtz Exp rahtz $ +%% File: fotex.ltx Copyright 1999 Sebastian Rahtz +%% +%% This package may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.0 or, at your option, any later version. +%% +%% I am very grateful to David Carlisle for all the good ideas, code +%% fragments and advice. +%% +\documentclass{article} +\RequirePackage{keyval} +\RequirePackage{graphicx} +\RequirePackage{array} +\RequirePackage{longtable} +\RequirePackage[normalem]{ulem} +\RequirePackage{color} +\RequirePackage{typexml} +\def\XMLdefEMPTY<#1>#2{% + \XMLdefempty<#1/>{#2}% + \XMLdef</#1>{}% + \XMLdef<#1>{#2}% +} +\RequirePackage{times} +\RequirePackage{utfeight} +\RequirePackage{mlnames} +\def\DefineCharacter#1#2#3{\expandafter\def\csname!#2\endcsname{#3}} +\RequirePackage{unicode} +\input ucharacters.sty +\DefineCharacter{8412}{2028}{\\} +\RequirePackage{url} +\newcommand\XURL{\begingroup \urlstyle{same}\Url} +\RequirePackage[% + pdfborder={0 0 0}, + implicit=false, +% linkbordercolor={0 0 0}, +% urlbordercolor={0 0 0}, +% pagebordercolor={0 0 0}, +% filebordercolor={0 0 0}, +% citebordercolor={0 0 0}, + typexml]{hyperref}[1999/08/11] +\makeatletter +\def\pdfBorderAttrs{/Border [0 0 0]}% +\definecolor{orange}{cmyk}{0,0.61,0.87,0} +%%%% +\def\@outputpage{% +\begingroup % the \endgroup is put in by \aftergroup + \let \protect \noexpand + \@resetactivechars + \@parboxrestore + \shipout \vbox{% + \set@typeset@protect + \aftergroup \endgroup + \aftergroup \set@typeset@protect + % correct? or just restore by ending + % the group? +\if@twoside + \@tempdima\textwidth + \advance\@tempdima by -\XML@headindent + \if@specialpage + \global\@specialpagefalse + \def\@thehead{\csname first-xsl-before\endcsname}% + \def\@thefoot{\csname first-xsl-after\endcsname}% + \let\@themargin\oddsidemargin + \else + \ifodd\count\z@ + \def\@thehead{\csname right-xsl-before\endcsname}% + \def\@thefoot{\csname right-xsl-after\endcsname}% + \let\@themargin\oddsidemargin + \else + \def\@thehead{\csname left-xsl-before\endcsname}% + \def\@thefoot{\csname left-xsl-after\endcsname}% + \let\@themargin\evensidemargin + \fi + \fi +\else + \def\@thehead{\csname right-xsl-before\endcsname}% + \def\@thefoot{\csname right-xsl-after\endcsname}% + \let\@themargin\oddsidemargin +\fi + \reset@font + \normalsize + \normalsfcodes + \let\label\@gobble + \let\index\@gobble + \let\glossary\@gobble + \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ + \@begindvi + \vskip \topmargin + \moveright\@themargin \vbox {% + \setbox\@tempboxa \vbox to\headheight{% + \vfil + \color@hbox + \normalcolor + \hb@xt@\textwidth{\hfill\llap{\hb@xt@\@tempdima{\@thehead}}}% + \color@endbox + }% %% 22 Feb 87 + \dp\@tempboxa \z@ + \box\@tempboxa + \vskip \headsep + \box\@outputbox + \baselineskip \footskip + \color@hbox + \normalcolor + \hb@xt@\textwidth{\hfill\llap{\hb@xt@\@tempdima{\@thefoot}}}% + \color@endbox + }% + }% + \global \@colht \textheight + \stepcounter{page}% + \let\firstmark\botmark +} + +%%%% +\newif\ifXMLForceInline +\newif\ifXMLFopHeaders +\newif\ifXMLBox +\newif\ifXMLDefiningPage +\newif\ifXMLKeep +\newif\ifXMLNoWrap +\newif\ifXMLObeySpace +\newif\ifXMLSub +\newif\ifXMLSuper +\newif\ifXMLfirstpage +\newif\ifXMLinLayout +\newif\ifXMLinList +\newif\ifXMLinListLabel +\newif\ifXMLinOutput +\newif\ifXMLinTable +\newif\ifXMLneedspecialpage +\XMLFopHeadersfalse +\XMLBoxfalse +\XMLDefiningPagefalse +\XMLNoWrapfalse +\XMLObeySpacefalse +\XMLSubfalse +\XMLSuperfalse +\XMLfirstpagetrue +\XMLinLayoutfalse +\XMLinListLabelfalse +\XMLinListfalse +\XMLinOutputfalse +\XMLinTablefalse +\XMLForceInlinefalse +\def\att@NaN{NaN} +\def\att@none{none} +\def\att@normal{normal} +\def\att@solid{solid} +\def\att@smallcaps{small-caps} +\def\att@super{super} +\def\att@sub{sub} +\def\att@nowrap{no-wrap} +\def\att@preserve{preserve} +\def\att@page{page} +\def\att@oddpage{odd-page} +\def\att@true{true} + +% defaults +\def\QuaddingStart{\startQ@justified} +\def\QuaddingEnd{\endQ@justified} +\def\Quadding{\Q@justified} +\def\XMLid{} +\def\Defaultx@fontfamily{Times-Roman} +\def\XML@fontsize{10pt} +\def\XML@fontweight{normal} +\def\XML@fontvariant{normal} +\def\XML@lineheight{-1\p@} +\def\XML@fontstretch{normal} +\def\XML@fontfamily{ptm} +\def\XML@spacebefore{\z@} +\def\XML@spacebeforeminimum{\z@} +\def\XML@spacebeforemaximum{\z@} +\def\XML@spacebeforeoptimum{\z@} +\def\XML@spaceafter{\z@} +\def\XML@spaceafterminimum{\z@} +\def\XML@spaceaftermaximum{\z@} +\def\XML@spaceafteroptimum{\z@} +\def\XML@textindent{\z@} +\def\XML@headindent{\z@} +\def\XML@deco{\@firstofone} +\def\StartIndent{\z@} +\def\EndIndent{\z@} +\def\XML@color{} +\def\XML@scale{1} +\def\XML@labelsep{6pt} +\def\XML@listindent{24pt} +\def\XML@NColumnsSpanned{1} +\def\XML@RuleLeaders{\leaders\hrule height \XML@RuleThickness\hfill} +\def\XML@RuleThickness{1\p@} +\def\XMLInitialPageNumber{-99999} +\parindent\z@ +\parskip\z@ +\def\FirstHead{\csname right-xsl-before\endcsname} +\def\FirstFoot{\csname right-xsl-after\endcsname} +\expandafter\def\csname left-xsl-before\endcsname{} +\expandafter\def\csname left-xsl-after\endcsname{} +\expandafter\def\csname right-xsl-before\endcsname{} +\expandafter\def\csname right-xsl-after\endcsname{} +\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\TextAlign{justified} +\def\MasterLeftMargin{\z@} +\def\MasterRightMargin{\z@} +\def\ShowFO#1{\typeout{|\the\inputlineno: Start #1}}% +\def\ShowEndFO#1{\typeout{|\the\inputlineno: End #1}}% +\def\ShowAttribute#1#2{% + \typeout{| #1: #2}% +} +\XMLdef<relax>{\relax} +% +% Load MathML +\input{mathml.ltx} +% Fotex-escape objects +\XMLdefempty<fotex:bookmark/>{} +\XMLdef<fotex:bookmark>{\XMLattributes\XMLgrabber{fotex:bookmark}\FotexBookMark} +\def\FotexBookMark#1{% + \pdfbookmark[\FoTeX@BookMarkLevel]{#1}{\FoTeX@BookMarkLabel}% +} +\define@key{XML}{xmlns:fotex}{} +\define@key{XML}{fotex-bookmark-level}{\def\FoTeX@BookMarkLevel{#1}} +\define@key{XML}{fotex-bookmark-label}{\def\FoTeX@BookMarkLabel{#1}} +% +\define@key{XML}{xmlns:fop}{} +\define@key{XML}{fop:master}{\XMLFopHeaderstrue\def\XML@FopMaster{#1}} +% +% XSL FO Formatting objects +\XMLdefEMPTY<fo:display-rule>{\bgroup\XMLattributes\hrule height \XML@RuleThickness\egroup} +\XMLdefEMPTY<fo:inline-rule>{\bgroup\XMLattributes\XML@RuleLeaders\egroup} +% +\XMLdef<fo:simple-link>{\XMLattributes\XMLgrabber{fo:simple-link}{\XML@simplelink}} +{\catcode`\#=12\gdef\XMLhash{#}} +\let\XML@extdest\@empty +\let\XML@intdest\@empty +\def\XML@simplelink#1{% + \ifx\XML@extdest\@empty + \hyperlink{\XML@intdest}{#1}% + \let\XML@intdest\@empty + \else + \expandafter\@simplelink\XML@extdest\@nil#1:\@nil% + \let\XML@extdest\@empty + \fi +} + +\def\@simplelink#1\@nil#2:#3\@nil{% + \ifx\\#3\\% + \href{#1}{#2}% + \else + \href{#1}{\XURL{#2:#3}}% + \fi +} +\XMLdef</fo:simple-link>{} +\XMLdef<fo:block>{% + \ifXMLinListLabel + \def\@x{\ListLabelBlock}% + \else + \def\@x{\XMLBlock}% + \fi + \@x +} + +\XMLdefempty<fo:block/>{% + \XMLBlock + \par\ifXMLKeep\penalty\@M\fi + \vspaceafter + \egroup +} +\def\XMLBlock{% +\bgroup +\ifXMLinList + \def\QuaddingStart{\startQ@justified}% + \def\QuaddingEnd{\endQ@justified}% + \def\Quadding{\Q@justified}% + \def\TextAlign{justified}% +\fi +\ifXMLinOutput + \XMLattributes + \def\@x{\QuaddingStart\SetFont}% +\else +\ifXMLinTable + \let\@x\@empty +\else + \let\@x\relax + \XMLattributes + \XMLlabel{\XMLid}% + \ifXMLinList + \par + \else + \par + \parindent\XML@textindent% + \vspacebefore + \ifXMLNoWrap\obeylines\fi +% \ifXMLObeySpace\obeyspaces\fi + \fi + \SetFont + \Quadding + \fi +\fi +\@x +} +\XMLdef</fo:block>{% + \ifXMLinOutput + \QuaddingEnd + \fi + \ifXMLinList + \par + \else + \par\ifXMLKeep\penalty\@M\fi + \vspaceafter + \fi + \egroup +} +% +\XMLdef<fo:inline-included-container>{\XMLForceInlinetrue} +\XMLdef</fo:inline-included-container>{\XMLForceInlinefalse} +\XMLdef<fo:display-sequence>{\bgroup\XMLattributes} +\XMLdef</fo:display-sequence>{\egroup} +\XMLdefempty<fo:inline-sequence/>{} +\XMLdef<fo:inline-sequence>{\bgroup\XMLattributes\XMLgrabber{fo:inline-sequence}\XML@inlinesequence} +\def\XML@inlinesequence#1{% + \ifXMLBox\XML@boxedsequence{#1}\else\XML@@inlinesequence{#1}\fi + \egroup +} +\def\XML@@inlinesequence#1{% + \SetFont + \ifXMLSuper\textsuperscript{\XML@deco{#1}}% + \else + \ifXMLSub\textsubscript{\XML@deco{#1}}% + \else + \XML@deco{#1}% + \fi + \fi +} +\def\XML@boxedsequence#1{% + \SetFont + \fbox{% + \ifXMLSuper\textsuperscript{#1}% + \else + \ifXMLSub\textsubscript{#1}% + \else + #1% + \fi + \fi +}% +} +\XMLdef</fo:inline-sequence>{} +\XMLdef</fo:character>{} +\XMLdef<fo:character>{{\def\^^M{\\}\XMLattributes}} +\XMLdefempty<fo:character/>{\XMLattributes} +\XMLdef<fo:character>{\XMLattributes} +\XMLdef</fo:character>{} +\XMLdef<fo:layout-master-set>{\ShowFO{fo:layout-master-set}\XMLattributes} +\XMLdef</fo:layout-master-set>{\ShowEndFO{fo:layout-master-set}} +\XMLdef<fo:page-sequence>{% + \bgroup + \XMLattributes +} +\XMLdef</fo:page-sequence>{% + \clearpage + \egroup +} +\XMLdef<fo:flow>{% +\bgroup\XMLattributes} +\XMLdef</fo:flow>{\egroup} + +\XMLdef<fo:root>{% + \begin{document}% + \typeout{Passive TeX project: fotex format, Sebastian Rahtz: + 1999/08/11}% + \pagestyle{empty} + \XMLattributes +} +\XMLdef</fo:root>{% + \end{document}% +} +\XMLdefEMPTY<fo:sequence-specifier-repeating>{} +\XMLdef<fo:sequence-specification>{% + \XMLneedspecialpagefalse + \XMLattributes +} +\XMLdef</fo:sequence-specification>{% + \ifXMLfirstpage + \else + \if@twoside + \cleardoublepage + \else + \clearpage + \fi + \fi + \ifnum\XMLInitialPageNumber>-99999 + \setcounter{page}{\XMLInitialPageNumber}% + \fi + \ifXMLneedspecialpage\@specialpagetrue\XMLneedspecialpagefalse\fi + \XMLSetPage +} +\XMLdef<fo:simple-page-master>{% + \XMLDefiningPagetrue + \XMLattributes + \XMLDefiningPagefalse +} +\XMLdef</fo:simple-page-master>{} +\def\@staticafter{xsl-after} +\def\@staticbefore{xsl-before} +\def\@staticstart{xsl-start} +\newsavebox{\foo} +\XMLdefempty<fo:static-content/>{% +\bgroup + \XMLattributes + \XML@staticcontent{}% +} +\XMLdef<fo:static-content>{% + \bgroup + \XMLattributes + \XMLgrabber{fo:static-content}{\XML@staticcontent}} +% +\def\SetStatic{\expandafter\@SetStatic\XML@textindent\\} +\def\@SetStatic#1\\{\expandafter\@@SetStatic\XML@fontsize\\{#1}} +\def\@@SetStatic#1\\#2{\expandafter\@@@SetStatic\XML@fontweight\\{#1}{#2}} +\def\@@@SetStatic#1\\#2#3{\expandafter\@@@@SetStatic\XML@fontvariant\\{#1}{#2}{#3}} +\def\@@@@SetStatic#1\\#2#3#4{\expandafter\@@@@@SetStatic\XML@lineheight\\{#1}{#2}{#3}{#4}} +\def\@@@@@SetStatic#1\\#2#3#4#5{\expandafter\@@@@@@SetStatic\XML@fontstretch\\{#1}{#2}{#3}{#4}{#5}} +\def\@@@@@@SetStatic#1\\#2#3#4#5#6{\expandafter\@@@@@@@SetStatic\XML@fontfamily\\{#1}{#2}{#3}{#4}{#5}{#6}} + +\def\@@@@@@@SetStatic#1\\#2#3#4#5#6#7#8#9{% + \expandafter\gdef\csname#9\endcsname{% + {% + \def\XML@fontfamily{#1}% + \def\XML@fontstretch{#2}% + \def\XML@lineheight{#3}% + \def\XML@fontvariant{#4}% + \def\XML@fontweight{#5}% + \def\XML@fontsize{#6}% + \def\XML@textindent{#7}% + \XMLinListLabelfalse\XMLinOutputtrue#8}}% +} + +\def\XML@staticcontent#1{%xsl-after, xsl-before, xsl-start + \ifXMLFopHeaders + \SetStatic{#1}{\XML@FopMaster-\XML@flowname}% + \else + \ifx\XML@flowname\@staticafter + \SetStatic{#1}{left-xsl-after}% + \SetStatic{#1}{right-xsl-after}% + \else + \ifx\XML@flowname\@staticbefore + \SetStatic{#1}{left-xsl-before}% + \SetStatic{#1}{right-xsl-before}% + \else + \ifx\XML@flowname\@staticstart + \fi + \fi + \fi + \fi + \egroup +} +\XMLdef</fo:static-content>{\ShowEndFO{fo:static-content}} +\XMLdefEMPTY<fo:page-number>{\thepage} +\XMLdefEMPTY<fo:region-after>{} +\XMLdefEMPTY<fo:region-before>{} +\XMLdefempty<fo:region-body/>{\XMLinLayouttrue\XMLattributes\XMLinLayoutfalse} +\XMLdef<fo:region-body>{\XMLinLayouttrue\XMLattributes} +\XMLdef</fo:region-body>{\XMLinLayoutfalse} +\XMLdefEMPTY<fo:sequence-specifier-alternating>{\XMLattributes\@twosidetrue} +\XMLdefEMPTY<fo:sequence-specifier-single>{\@twosidefalse} +\XMLdef<fo:list-block>{% + \bgroup + \ifXMLinList\leavevmode\fi + \XMLinListtrue + \XMLattributes + \SetFont + \begin{list}{}{% + \Liststart + \labelsep\XML@labelsep + \topsep\XML@spacebefore + \itemsep\z@ + \leftmargin=\XML@listindent + \rightmargin=\RightMargin}% + \def\XML@spacebefore{\z@}% +} +\XMLdef</fo:list-block>{% + \end{list}% + \XMLinListfalse + \egroup +} +\XMLdef<fo:list-item-body>{\XMLinListLabelfalse} +\XMLdef</fo:list-item-body>{} +\XMLdef<fo:list-item-label>{% + {\XMLattributes\SetFont\get@external@font\xdef\XML@listlabelfont{\external@font}}% + \XMLgrabber{fo:list-item-label}{\Item}} +\let\olditem\item +\def\item{\if@inlabel\leavevmode\fi\olditem} +\def\Item#1{\XMLinListLabeltrue#1} +\def\XMLlabel#1{% label name +\ifx\XMLid\@empty +\else + \@bsphack + \protected@write\@mainaux{}% + {\string\newlabel{#1}{{}{\thepage}{}{#1}{}}}% + \@esphack + \hyper@@anchor{#1}{\relax}% + \global\let\XMLid\@empty +\fi +} +\def\ListLabelBlock{% + \XMLattributes + \XMLgrabber{fo:block}{\ITEM}% +} +\def\ITEM#1{% + \def\XML@tempa{#1}% + \itemsep\XML@spacebefore + \leftmargin=\XML@listindent + \rightmargin=\RightMargin + \labelwidth=\XML@listindent + \advance\labelwidth by -\XML@labelsep + \expandafter\csname List\TextAlign\endcsname +%\typeout{List: labelwidth: \the\labelwidth, labealsep: \the\labelsep, +% leftmargin: \the\leftmargin, and \meaning\makelabel, \TextAlign}% + \item[{\font\foo=\XML@listlabelfont\foo\XML@tempa}] +} + +\XMLdef</fo:list-item-label>{} +\XMLdef<fo:list-item>{\bgroup\XMLattributes}% +\XMLdef</fo:list-item>{\egroup} % +\XMLdefEMPTY<fo:page-number-citation>{{% + \XMLattributes + \hyperlink{\XMLrefid}{\pageref{\XMLrefid}}% +}} +\XMLdefEMPTY<fo:inline-graphic>{\InlineGraphic} +\XMLdefEMPTY<fo:display-graphic>{\DisplayGraphic} +\def\DisplayGraphic{\bgroup\XMLattributes +\ifXMLBox + \fbox{\includegraphics[scale=\XML@scale]{\Hrefname}}% +\else + \includegraphics[scale=\XML@scale]{\Hrefname}% +\fi +\par\egroup +} +\def\InlineGraphic{\bgroup\XMLattributes + \includegraphics{\Hrefname}\egroup} +\XMLdef<fo:table-caption>{\XMLattributes} +\XMLdef</fo:table-caption>{\par} +\XMLdef<fo:float>{\XMLattributes\begin{figure}\XMLlabel{\XMLid}} +\XMLdef</fo:float>{\end{figure}} +\XMLdef<fo:footnote-citation>{\XMLattributes\XMLgrabber{fo:footnote-citation}{\Foot}} +\def\Foot#1{\XMLfootnotemark{#1}\gdef\FootNumber{#1}} +\XMLdef</fo:footnote-citation>{} +\XMLdef<fo:footnote>{% + \bgroup + \XMLattributes +% \SetFootFont + \XMLgrabber{fo:footnote}{\XMLfootnotetext{\FootNumber}}% +} +\def\XMLfootnotemark{\protect\@XSLfootnotemark} +\def\@XSLfootnotemark#1{% tag + \def\@thefnmark{#1}% + \expandafter\let\csname p@footnote\endcsname\relax + \@footnotemark% +} +\def\XMLfootnotetext{\protect\@XSLfootnotetext} +\def\@XSLfootnotetext#1#2{% plain tag and text, no interpretation + \def\@thefnmark{#1}% + \expandafter\let\csname p@footnote\endcsname\relax + \@footnotetext{\XMLlabel{\XMLid}#2}% + \egroup +} +\XMLdefEMPTY<fo:table-column>{} +\XMLdef<fo:table-caption>{\XMLattributes} +\XMLdef</fo:table-caption>{\par} +\XMLdef<fo:table>{} +\XMLdef</fo:table>{} +\XMLdef</fo:footnote>{} +\XMLdef<fo:table-and-caption>{% +\RowCount0 +\ifXMLForceInline + \vspace{12pt}% +\else + \begin{table}\XMLattributes\XMLlabel{\XMLid} +\fi +} +\XMLdef</fo:table-and-caption>{% +\ifXMLForceInline + \vspace{12pt}% +\else + \end{table} +\fi +} +\newcount\RowCount +\XMLdefempty<fo:table-body/>{\\%\hline +\let\w@t\relax +\ifXMLinTable + \def\w@t{\end{longtable}} +\fi +\w@t +\XMLinTablefalse +} +\XMLdef<fo:table-body>{% +\ifXMLinTable +\else + \XMLinTabletrue\XMLattributes + \begin{longtable}{*{99}{l}}%\hline\rule{\z@}{12\p@}% +\fi +} +\XMLdef</fo:table-body>{% +\\%\hline +\let\w@t\relax +\ifXMLinTable + \def\w@t{\end{longtable}} +\fi +\w@t +\XMLinTablefalse +} +\XMLdef<fo:table-header>{\XMLinTabletrue\XMLattributes + \begin{longtable}{*{99}{l}}\hline\rule{\z@}{12\p@}} +\XMLdef</fo:table-header>{\\\hline\rule{\z@}{12\p@}\RowCount0} +\XMLdefempty<fo:table-cell/>{\XMLattributes\XMLTableCell{}} +\XMLdef<fo:table-cell>{\XMLattributes\XMLgrabber{fo:table-cell}\XMLTableCell} +\def\XMLTableCell#1{% + \ifnum\XML@NColumnsSpanned>1 + \typeout{COLS [\XML@NColumnsSpanned] with #1}% + \gdef\w@t{\multicolumn{\XML@NColumnsSpanned}{l}{#1}}% + \else + \gdef\w@t{#1}% + \fi + &\w@t + \global\let\w@t\relax +} +\XMLdef</fo:table-cell>{} +\XMLdef<fo:table-row>{\ifnum\RowCount>0\def\w@t{\\}\else\let\w@t\relax\fi\w@t} +\XMLdef</fo:table-row>{\global\advance\RowCount by 1} +\XMLdefempty<input/>{\XMLattributes\input{\@filename}} +%% Characteristics +% top-level +\define@key{XML}{xmlns:fo}{\ShowAttribute{xmlns:fo}{#1}} +\define@key{XML}{page-master-first}{% + \XMLneedspecialpagetrue +} +\define@key{XML}{page-master-odd}{} +\define@key{XML}{page-master-even}{} +\define@key{XML}{page-master-name}{\def\XMLPageMasterName{#1}} +\define@key{XML}{initial-page-number}{\def\XMLInitialPageNumber{#1}} +\define@key{XML}{flow-name}{% xsl-after, xsl-before, xsl-start + \def\XML@flowname{#1}% +} + +\def\rule@style@dotted{dotted} +\def\rule@style@dashed{dashed} +\define@key{XML}{rule-style}{% solid, dashed, dotted + \def\@xx{#1}% + \ifx\@xx\rule@style@dashed + \def\XML@RuleLeaders{\cleaders\hbox{$\m@th \mkern1.5mu-\mkern1.5mu$}\hfil}% + \else + \ifx\@xx\rule@style@dotted + \def\XML@RuleLeaders{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfil}% + \fi + \fi +} +\define@key{XML}{rule-thickness}{\def\XML@RuleThickness{#1}} +\define@key{XML}{margin}{} +\define@key{XML}{column-gap}{} +\define@key{XML}{border}{} +\define@key{XML}{padding}{} +\define@key{XML}{inhibit-line-breaks}{} + +% Tabular +\define@key{XML}{n-columns-spanned}{% +\def\@tempa{#1}\ifx\@tempa\att@NaN\else\let\XML@NColumnsSpanned\@tempa\fi} +\define@key{XML}{n-rows-spanned}{\ShowAttribute{n-rows-spanned}{#1}} +% character +\define@key{XML}{character}{#1} +% +% inline +\define@key{XML}{border-style}{% + \def\@tempa{#1}% + \ifx\@tempa\att@solid + \XMLBoxtrue + \fi +} +\define@key{XML}{vertical-align}{% + \def\@tempa{#1}% + \ifx\@tempa\att@super + \XMLSupertrue + \else + \ifx\@tempa\att@sub + \XMLSubtrue + \fi + \fi +} +\define@key{XML}{href}{\def\Hrefname{#1}} +\define@key{XML}{scale}{\def\XML@scale{#1}} +\define@key{XML}{color}{\def\XML@color{#1}} +\define@key{XML}{external-destination}{\def\XML@extdest{#1}} +\define@key{XML}{internal-destination}{\def\XML@intdest{#1}} +\define@key{XML}{filename}{\def\@filename{#1}} +\define@key{XML}{ref-id}{\def\XMLrefid{#1}} +\define@key{XML}{id}{\def\XMLid{#1}} +% +% Lists +\define@key{XML}{provisional-distance-between-starts}{\def\XML@listindent{#1}} +\define@key{XML}{provisional-label-separation}{\def\XML@labelsep{#1}} +% block +\define@key{XML}{wrap-option}{% + \def\@tempa{#1}\ifx\@tempa\att@nowrap + \XMLNoWraptrue + \else + \XMLNoWrapfalse + \fi +} +\define@key{XML}{whitespace-treatment}{% + \def\@tempa{#1}\ifx\@tempa\att@preserve + \XMLObeySpacetrue + \else + \XMLObeySpacefalse + \fi +} +\define@key{XML}{white-space-treatment}{% + \def\@tempa{#1}\ifx\@tempa\att@preserve + \XMLObeySpacetrue + \else + \XMLObeySpacefalse + \fi +} +\define@key{XML}{text-indent}{% + \def\XML@textindent{#1}% +} +\define@key{XML}{margin-bottom}{% + \ifXMLinLayout + \def\FooterMargin{#1}% + \else + \def\BottomMargin{#1}% + \fi +} +\define@key{XML}{margin-top}{% + \ifXMLinLayout + \def\HeaderMargin{#1}% + \else + \def\TopMargin{#1}% + \fi +} +\define@key{XML}{margin-left}{% + \ifXMLDefiningPage + \def\MasterLeftMargin{#1}% + \else + \def\LeftMargin{#1}% + \fi +} +\define@key{XML}{margin-right}{% + \ifXMLDefiningPage + \def\MasterRightMargin{#1}% + \else + \def\RightMargin{#1}% + \fi +} +\define@key{XML}{start-indent}{\def\StartIndent{#1}} +\define@key{XML}{end-indent}{\def\EndIndent{#1}} +\define@key{XML}{space-before.optimum}{\def\XML@spacebefore{#1}} +\define@key{XML}{space-before.maximum}{\def\XML@spacebeforemaximum{#1}} +\define@key{XML}{space-before.minimum}{\def\XML@spacebeforeminimum{#1}} +\define@key{XML}{space-after.optimum}{\def\XML@spaceafter{#1}} +\define@key{XML}{space-after.maximum}{\def\XML@spaceaftermaximum{#1}} +\define@key{XML}{space-after.minimum}{\def\XML@spaceafterminimum{#1}} +\define@key{XML}{space-after}{\def\XML@spaceafter{#1}} +\define@key{XML}{space-before}{\def\XML@spacebefore{#1}} + +% keeps and breaks + +\define@key{XML}{keep-with-next}{% + \def\@tempa{#1}% + \ifx\@tempa\att@true + \XMLKeeptrue + \else + \XMLKeepfalse + \fi +} +\define@key{XML}{break-after}{} +\define@key{XML}{break-before}{% + \def\@tempa{#1}% + \ifx\@tempa\att@page + \penalty -\@M + \fi + \ifx\@tempa\att@oddpage + \cleardoublepage + \fi +} +\define@key{XML}{text-align-last}{% + \def\QuaddingStart{\csname startQ@#1\endcsname}% + \def\QuaddingEnd{\csname endQ@#1\endcsname}% + \def\Quadding{\csname Q@#1\endcsname}% +} +\define@key{XML}{text-align}{% + \def\TextAlign{#1}% + \def\QuaddingStart{\csname startQ@#1\endcsname}% + \def\QuaddingEnd{\csname endQ@#1\endcsname}% + \def\Quadding{\csname Q@#1\endcsname}% +} + +% font-related + +\define@key{XML}{font-family}{\def\XML@fontfamily{#1}} +\AtBeginDocument{\InputIfFileExists{fotex.cfg}{}{}} + +%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%% +%%% MUST USE | FOR COMMENT AFTER THIS POINT!!!!!!!!!!!!!! +%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%% +\catcode`\|=\catcode`\% +\catcode`\%=12 +\def\percenttest#1%#2#3\@{| + \ifx#2\relax + \def\percentval{#1}| + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\newdimen\@default +\@default=10pt +\define@key{XML}{font-size}{| + \@default\f@size pt + \percenttest#1\relax%.\@ + {\dimen@0.01\@default + \multiply\dimen@\percentval\relax}| + {\dimen@#1}| + \edef\XML@fontsize{\the\dimen@}} +\define@key{XML}{font-stretch}{\def\XML@fontstretch{#1}} +\define@key{XML}{line-height}{| + \def\@tempa{#1}| + \ifx\@tempa\att@normal + \def\XML@lineheight{-1\p@}| + \else + \def\XML@lineheight{#1}| + \fi +} +\define@key{XML}{font-style}{\edef\f@shape{\csname Posture@#1\endcsname}} +\define@key{XML}{font-weight}{\edef\XML@fontweight{#1}} +\define@key{XML}{font-variant}{\edef\XML@fontvariant{#1}} +\define@key{XML}{text-decoration}{| + \def\XML@deco{\csname DECO@#1\endcsname}| +} +\def\DECO@blink{\uwave} +\expandafter\def\csname DECO@line-through\endcsname{\sout} +| set up font-related things +\def\SetFont{| + \edef\LaTeXshape{\csname Width@\XML@fontstretch\endcsname + \csname Weight@\XML@fontweight\endcsname}| + \ifx\LaTeXshape\@empty\def\LaTeXshape{m}\fi + \edef\f@series{\LaTeXshape}| + \ifx\XML@fontvariant\att@smallcaps + \def\f@shape{sc}| + \fi + \let\f@family\relax + \@for\XML@foo:=\XML@fontfamily\do{| + \ifx\f@family\relax + \expandafter\let\expandafter\f@family + \csname Family@\XML@foo\endcsname + \fi}| + \ifx\f@family\relax + \def\f@family{\csname Family@\Defaultx@fontfamily\endcsname}| + \fi + \SetFontSize + \selectfont + \ifx\XML@color\@empty + \else + \color{\XML@color}| + \fi +} +\def\SetFootFont{| + \ifdim\XML@lineheight<\z@ + \@tempdima\XML@fontsize + \multiply\@tempdima by 12 + \divide\@tempdima by 10 + \set@fontsize\XML@footnotesize{\XML@fontsize}{\@tempdima}| + \else + \@setfontsize\XML@footnotesize{\XML@fontsize}{\XML@lineheight}| + \fi +} +\def\SetFontSize{| + \ifdim\XML@lineheight<\z@ + \@tempdima\XML@fontsize + \multiply\@tempdima by 12 + \divide\@tempdima by 10 + \else + \@tempdima\XML@lineheight + \fi + \set@fontsize\baselinestretch{\XML@fontsize}{\@tempdima}| +| \typeout{FONT SIZE SET to \XML@fontsize/\the\@tempdima}| +} +\DeclareRobustCommand*\textsubscript[1]{| + \@textsubscript{\selectfont#1}} +\def\@textsubscript#1{| + {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}} +\def\vspaceafter{| +\ifXMLinOutput\else +\ifXMLinTable +\else + \@tempdima\XML@spaceafter + \advance\@tempdima by -\XML@spaceafterminimum + \@tempdimb\XML@spaceafter + \advance\@tempdimb by \XML@spaceaftermaximum + \vskip\XML@spaceafter plus \@tempdimb minus \@tempdima +\fi +\fi +} +\def\XMLLINEBREAK{| +\ifXMLinTable +\else + \\ +\fi +} +\def\vspacebefore{| +\ifXMLinOutput\else +\ifXMLinTable +\else + \@tempdima\XML@spacebefore + \advance\@tempdima by -\XML@spacebeforeminimum + \@tempdimb\XML@spacebefore + \advance\@tempdimb by \XML@spacebeforemaximum + \vskip\XML@spacebefore plus \@tempdimb minus \@tempdima +\fi +\fi + \def\XML@spacebefore{\z@}| +} +\def\reserved@e{} +\def\XMLSetPage{| + \footskip\FooterMargin + \oddsidemargin\MasterLeftMargin + \evensidemargin\MasterLeftMargin + \topmargin\TopMargin + \headsep\HeaderMargin + \paperwidth\PageWidth + \paperheight\PageHeight + \textheight\paperheight + \textwidth\paperwidth + \advance\textheight by -\TopMargin + \advance\textheight by -\HeaderMargin + \advance\textheight by -\BottomMargin + \advance\textheight by -\FooterMargin + \advance\textwidth by -\MasterLeftMargin + \advance\textwidth by -\MasterRightMargin + \ifx\pdfoutput\@undefined + \else + \typeout{Setting pdf size to \the\pdfpagewidth, \the\pdfpageheight}| + \global\pdfpagewidth\paperwidth + \global\pdfpageheight\paperheight + \fi + \@colht\textheight + \@colroom\textheight + \vsize\textheight + \linewidth\textwidth + \columnwidth\textwidth + \hsize\columnwidth \linewidth\hsize + \def\headheight{12pt}| + \typeout{Page size is \the\textwidth/\the\textheight, + on paper \the\paperwidth/\the\paperheight, + with margins \MasterRightMargin/\MasterLeftMargin, + and \TopMargin/\BottomMargin; +and footermargin is \the\footskip, and headsep is +\the\headsep}| + \global\XMLfirstpagefalse +} +\hoffset-1in +\voffset-1.75in +\clubpenalty=8000 | 'orphan line' at bottom of page. +\emergencystretch 3em +\hbadness=4000 +\hyphenpenalty=400 +\pretolerance=500 +\relpenalty=500 +\tolerance=1000 +\vbadness=3000 +\widowpenalty=10000 | 'Widow line' at top of page. +\define@key{XML}{'Times New Roman'}[true]{} +\define@key{XML}{serif}[true]{} +| dont ask +\def\supppdf{supp-pdf} +\let\XMLInputIfFileExists\InputIfFileExists +\def\InputIfFileExists#1#2#3{| + {\def\@tempa{#1}\ifx\@tempa\supppdf\else + \XMLInputIfFileExists{#1}{#2}{#3}\fi}} +|\catcode`^^M=10 +\catcode`\%=\catcode`\| +\catcode`\|=12 +\providecommand\textasciitilde{~} +\endinput diff --git a/macros/fotex/mathml.ltx b/macros/fotex/mathml.ltx new file mode 100644 index 0000000000..8545623019 --- /dev/null +++ b/macros/fotex/mathml.ltx @@ -0,0 +1,121 @@ +% RCS: $Id: mathml.ltx,v 1.2 1999/08/12 11:59:08 rahtz Exp $ +%% File: fotex.ltx Copyright 1999 Sebastian Rahtz +%% +%% This package may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.0 or, at your option, any later version. +%% +% MathML formatting objects +% +\let\mathfrak\undefined +\let\mathfrak\undefined +\let\vDash\undefined +\let\eth\undefined +\RequirePackage{amssymb} +\RequirePackage{amstext} +\def\w@t{} +\let\@@over\over +\newcount\@Pending +\newcount\@MoCount +\newcount\XML@subeqncnt +\XML@subeqncnt0 +\@MoCount0 +\@Pending1 +\def\XML@PendingI{} +\def\XML@PendingII{} +\XMLdef<fotex:inlinemath>{$} +\XMLdef</fotex:inlinemath>{$} +\XMLdef<fotex:displaymath>{\begin{displaymath}} +\XMLdef</fotex:displaymath>{\end{displaymath}} +\XMLdef<fotex:eqnarray>{% + \XMLattributes\XMLlabel{\XMLid}% + \bgroup\global\XML@subeqncnt0\begin{eqnarray*}} +\XMLdef</fotex:eqnarray>{\end{eqnarray*}\egroup} +\XMLdef<fotex:equation>{% + \XMLattributes\XMLlabel{\XMLid}% + \begin{equation}} +\XMLdef</fotex:equation>{\end{equation}} +\XMLdef<fotex:subeqn>{% + \XMLattributes\XMLlabel{\XMLid}% + \global\advance\XML@subeqncnt by 1 + \ifnum\XML@subeqncnt=2\else\def\w@t{\\}% + \fi + \w@t +} +\XMLdef</fotex:subeqn>{} +\XMLdef<math>{} +\XMLdef</math>{} +\XMLdef<mtable>{\begin{array}{*{99}{c}}} +\XMLdef</mtable>{\end{array}} +\XMLdef<mfrac>{\bgroup\@Pending1\def\XML@PendingII{\@@over}} +\XMLdef</mfrac>{\egroup} +\XMLdef<mi>{\BGroup} +\XMLdef</mi>{\egroup} +\XMLdef<mn>{\BGroup} +\XMLdef</mn>{\egroup} +\XMLdef<mo>{\BGroup} +\XMLdef</mo>{\egroup} +\XMLdefempty<mrow/>{} +\XMLdef<mrow>{\BGroup} +\XMLdef</mrow>{\egroup} +\XMLdef<msub>{\bgroup\@Pending1\def\XML@PendingII{_}} +\XMLdef</msub>{\egroup} +\XMLdef<msubsup>{\bgroup\@Pending0\def\XML@PendingI{_}\def\XML@PendingII{^}} +\XMLdef</msubsup>{\egroup} +\XMLdef<msup>{\bgroup\@Pending1\def\XML@PendingII{^}} +\XMLdef</msup>{\egroup} +\XMLdef<mtd>{} +\XMLdef</mtd>{&} +\XMLdefempty<mtext/>{} +\XMLdef<mtext>{\hbox\bgroup} +\XMLdef</mtext>{\egroup} +\XMLdef<mtr>{} +\XMLdef</mtr>{\\} +\XMLdef<mover>{} +\XMLdef</mover>{} +\XMLdefempty<mspace/>{\XMLattributes\hspace{\XML@width}} +\XMLdef<msqrt>{\sqrt\bgroup} +\XMLdef</msqrt>{\egroup} +\XMLdef<munderover>{} +\XMLdef</munderover>{} +\XMLdef<mfenced>{\bgroup\XMLattributes\left\XML@fenceopen} +\XMLdef</mfenced>{\right\XML@fenceclose\egroup} +\catcode`\{=12\catcode`\}=12\catcode`x=1\catcode`y=2 +\def\XML@lbracex{y +\def\XML@rbracex}y +\catcode`\{=1\catcode`\}=2\catcode`x=11\catcode`y=11 +\define@key{XML}{open}{% + \def\@tempa{#1}\ifx\@tempa\XML@lbrace\def\XML@fenceopen{\{}\else + \def\XML@fenceopen{#1}\fi +} +\define@key{XML}{close}{% + \def\@tempa{#1}\ifx\@tempa\XML@rbrace\def\XML@fenceclose{\}}\else + \def\XML@fenceclose{#1}\fi +} +\define@key{XML}{width}{\def\XML@width{#1}} +\def\XML@fenceopen{.} +\def\XML@fenceclose{.} +\def\BGroup{% + \def\w@t{}% + \ifcase\@Pending% 0 + \@Pending1 + \or%1 + \let\w@t\XML@PendingI\def\XML@PendingI{}% + \@Pending2 + \or%2 + \let\w@t\XML@PendingII\def\XML@PendingII{}% + \@Pending1 + \fi + \w@t + \bgroup + \def\XML@PendingII{}% +} +\let\XML@textgreater\textgreater +\def\textgreater{% + \ifmmode>\else\XML@textgreater\fi +} +\let\XML@textless\textless +\def\textless{% + \ifmmode<\else\XML@textless\fi +} +\endinput diff --git a/macros/fotex/pdffotex.ini b/macros/fotex/pdffotex.ini new file mode 100644 index 0000000000..d220004bef --- /dev/null +++ b/macros/fotex/pdffotex.ini @@ -0,0 +1,3 @@ +\input fotex.ltx +\@startxml +<dump> |