From 4feea2468d21899ed23a55816e5027793d73f0b0 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 3 May 2021 01:32:21 +0000 Subject: tex4ht source files git-svn-id: svn://tug.org/texlive/trunk@59059 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/generic/tex4ht/ChangeLog | 4216 + Master/texmf-dist/source/generic/tex4ht/Makefile | 834 + Master/texmf-dist/source/generic/tex4ht/README | 23 + .../texmf-dist/source/generic/tex4ht/checklog.lua | 50 + .../source/generic/tex4ht/common-code.tex | 32 + .../source/generic/tex4ht/common-info.tex | 68 + Master/texmf-dist/source/generic/tex4ht/common.tex | 43 + .../source/generic/tex4ht/extra-bin/vcss | 2 + .../source/generic/tex4ht/extra-bin/xmllint | 2 + .../source/generic/tex4ht/mktex4ht-cnf.tex | 361 + .../source/generic/tex4ht/t1fontmake.lua | 48 + .../source/generic/tex4ht/t1fontsample.tex | 21 + .../source/generic/tex4ht/tex4ht-4ht.tex | 39084 +++++++ .../source/generic/tex4ht/tex4ht-auto-script.tex | 252 + .../source/generic/tex4ht/tex4ht-bibtex2.tex | 75 + .../texmf-dist/source/generic/tex4ht/tex4ht-c.tex | 17542 +++ .../source/generic/tex4ht/tex4ht-cond4ht.tex | 779 + .../source/generic/tex4ht/tex4ht-cpright.tex | 25 + .../texmf-dist/source/generic/tex4ht/tex4ht-dir.m4 | 12 + .../generic/tex4ht/tex4ht-docbook-xtpipes.tex | 537 + .../source/generic/tex4ht/tex4ht-docbook.tex | 3994 + .../source/generic/tex4ht/tex4ht-env.tex | 1729 + .../source/generic/tex4ht/tex4ht-fonts-4hf.tex | 101665 ++++++++++++++++++ .../generic/tex4ht/tex4ht-fonts-cjk-utf8.tex | 66851 ++++++++++++ .../source/generic/tex4ht/tex4ht-fonts-cjk.tex | 39457 +++++++ .../generic/tex4ht/tex4ht-fonts-ebgaramond.tex | 8187 ++ .../source/generic/tex4ht/tex4ht-fonts-fourier.tex | 4650 + .../generic/tex4ht/tex4ht-fonts-libertine.tex | 20132 ++++ .../source/generic/tex4ht/tex4ht-fonts-modern.tex | 26209 +++++ .../source/generic/tex4ht/tex4ht-fonts-newtx.tex | 13503 +++ .../source/generic/tex4ht/tex4ht-fonts-noncjk.tex | 62031 +++++++++++ .../generic/tex4ht/tex4ht-fonts-spectral.tex | 5748 + .../source/generic/tex4ht/tex4ht-htcmd.tex | 803 + .../generic/tex4ht/tex4ht-html-speech-xtpipes.tex | 2440 + .../source/generic/tex4ht/tex4ht-html-speech.tex | 25036 +++++ .../source/generic/tex4ht/tex4ht-html0.tex | 3863 + .../source/generic/tex4ht/tex4ht-html32.tex | 7429 ++ .../source/generic/tex4ht/tex4ht-html4.tex | 22312 ++++ .../source/generic/tex4ht/tex4ht-html5.tex | 376 + .../source/generic/tex4ht/tex4ht-info-html4.tex | 299 + .../source/generic/tex4ht/tex4ht-info-javahelp.tex | 123 + .../source/generic/tex4ht/tex4ht-info-mml.tex | 144 + .../source/generic/tex4ht/tex4ht-info-ooffice.tex | 93 + .../source/generic/tex4ht/tex4ht-info-svg.tex | 159 + .../source/generic/tex4ht/tex4ht-info.tex | 4190 + .../source/generic/tex4ht/tex4ht-jats.tex | 111 + .../generic/tex4ht/tex4ht-javahelp-xtpipes.tex | 641 + .../source/generic/tex4ht/tex4ht-javahelp.tex | 1737 + .../source/generic/tex4ht/tex4ht-jsmath.tex | 899 + .../source/generic/tex4ht/tex4ht-jsml-xtpipes.tex | 3902 + .../source/generic/tex4ht/tex4ht-jsml.tex | 4509 + .../source/generic/tex4ht/tex4ht-mathjax.tex | 190 + .../source/generic/tex4ht/tex4ht-mathltx.tex | 4149 + .../source/generic/tex4ht/tex4ht-mathml.tex | 5422 + .../source/generic/tex4ht/tex4ht-mathplayer.tex | 306 + .../source/generic/tex4ht/tex4ht-mkht.tex | 1929 + .../source/generic/tex4ht/tex4ht-moz.tex | 1071 + .../source/generic/tex4ht/tex4ht-oo-xtpipes.tex | 1981 + .../source/generic/tex4ht/tex4ht-ooffice.tex | 12270 +++ .../source/generic/tex4ht/tex4ht-ooimpress.tex | 436 + .../source/generic/tex4ht/tex4ht-options.tex | 493 + .../source/generic/tex4ht/tex4ht-sty.tex | 11285 ++ .../source/generic/tex4ht/tex4ht-svg.tex | 309 + .../source/generic/tex4ht/tex4ht-t4ht.tex | 4521 + .../source/generic/tex4ht/tex4ht-tei.tex | 1716 + .../source/generic/tex4ht/tex4ht-unicode.tex | 1258 + .../source/generic/tex4ht/tex4ht-word.tex | 549 + .../source/generic/tex4ht/tex4ht-xhtml-xtpipes.tex | 659 + .../generic/tex4ht/tex4ht-xhtmml-xtpipes.tex | 751 + Master/texmf-dist/source/generic/tex4ht/wripro.tex | 518 + .../texmf-dist/source/generic/tex4ht/xtpipes.tex | 4518 + 71 files changed, 551559 insertions(+) create mode 100644 Master/texmf-dist/source/generic/tex4ht/ChangeLog create mode 100644 Master/texmf-dist/source/generic/tex4ht/Makefile create mode 100644 Master/texmf-dist/source/generic/tex4ht/README create mode 100644 Master/texmf-dist/source/generic/tex4ht/checklog.lua create mode 100644 Master/texmf-dist/source/generic/tex4ht/common-code.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/common-info.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/common.tex create mode 100755 Master/texmf-dist/source/generic/tex4ht/extra-bin/vcss create mode 100755 Master/texmf-dist/source/generic/tex4ht/extra-bin/xmllint create mode 100644 Master/texmf-dist/source/generic/tex4ht/mktex4ht-cnf.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/t1fontmake.lua create mode 100644 Master/texmf-dist/source/generic/tex4ht/t1fontsample.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-auto-script.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-bibtex2.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-c.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-cond4ht.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-cpright.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-dir.m4 create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-docbook-xtpipes.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-docbook.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-env.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-4hf.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-cjk-utf8.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-cjk.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-ebgaramond.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-fourier.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-libertine.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-modern.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-newtx.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-noncjk.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-spectral.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-htcmd.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-html-speech-xtpipes.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-html-speech.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-html0.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-html32.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-html4.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-html5.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-info-html4.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-info-javahelp.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-info-mml.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-info-ooffice.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-info-svg.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-info.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-jats.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-javahelp-xtpipes.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-javahelp.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-jsmath.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-jsml-xtpipes.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-jsml.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-mathjax.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-mathltx.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-mathml.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-mathplayer.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-mkht.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-moz.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-oo-xtpipes.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-ooffice.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-ooimpress.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-options.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-sty.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-svg.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-t4ht.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-tei.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-unicode.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-word.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-xhtml-xtpipes.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/tex4ht-xhtmml-xtpipes.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/wripro.tex create mode 100644 Master/texmf-dist/source/generic/tex4ht/xtpipes.tex (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/generic/tex4ht/ChangeLog b/Master/texmf-dist/source/generic/tex4ht/ChangeLog new file mode 100644 index 00000000000..5f18fca4c10 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/ChangeLog @@ -0,0 +1,4216 @@ +2021-05-02 Karl Berry + + * Makefile (diff-src, install-src, list-src): new targets + to handle source files, found via svn status -v. + * README: update. + * archive/: move Makefile.exp and extra-bin/fls* here, + so we don't install them as current source files. + Still hope to use them one day. + + * tex4ht-4ht.tex (polyglossia.4ht, tuenc-xetex-input.4ht): 2021. + (aa.4ht): \write version. + +2021-04-30 Michal Hoftich + + * tex4ht-mathml.tex (mathml.4ht): added special group in order + to support subscripts in upright Greek characters. + https://tex.stackexchange.com/a/595005/2891 + * tex4ht-mathml.tex (mathml.4ht): added special group to + \math commands, in order to support their use in subscripts + and superscripts without extra groups in TeX documents. + * tex4ht-4ht.tex (beamer.4ht), + tex4ht-html4.tex (html4.4ht): modernized Beamer support. + +2021-04-29 Michal Hoftich + + * tex4ht-mathml.tex (mathml.4ht): keep some Greek characters upright. + https://tex.stackexchange.com/a/595005/2891 + +2021-04-27 Karl Berry + + * Makefile (inst-check-files): new target. + +2021-04-27 Michal Hoftich + + * tex4ht-4ht.tex (hyperref.4ht): fixed issues with nameref when + hyperref was loaded from class files. + https://puszcza.gnu.org.ua/bugs/index.php?508 + +2021-04-25 Michal Hoftich + + * tex4ht-4ht.tex (babel.4ht, latex.4ht, lfeenc.4ht, plain.4ht, + polyglossia.4ht, tuenc-xetex-input.4ht): use \ht:special instead of + \special. + * tex4ht-4ht.tex (latex.4ht, plain.4ht): \:nbsp should output + nonbreaking space inside picture. + * tex4ht-html4.tex (html4.4ht): test for \Picture inside \a:HChar. + * tex4ht-unicode.tex (unicode.4ht): use correct definition of \:nbsp. + * tex4ht-html4.tex (html4.4ht): use \:nbsp in listings configurations. + * tex4ht-4ht.tex (listings.4ht): fixed configurations in order to + support \Picture*. (Thanks to Linas Stonys). + +2021-04-22 Michal Hoftich + + * tex4ht-4ht.tex (listings.4ht): insert closing b:lstlinline + configuration really after group. (Thanks to Linas Stonys). + * tex4ht-html4.tex (html4.4ht): add newlines after
tags in + listings environment. + +2021-04-17 Karl Berry + + * Makefile (diff-copyright, inst-check-version): new targets + for consistency checking. + + * tex4ht-4ht.tex (endnotes, svg.4ht), + * tex4ht-cond4ht.tex (mktex4ht.4ht), + * tex4ht-html5.tex (html5.4ht), + * tex4ht-info.tex (info4ht.4ht), + * tex4ht-mathml.tex (html-mml.4ht, mathml.4ht), + * tex4ht-unicode.tex (unicode.4ht): copyright 2021. + +2021-04-16 Karl Berry + + * tex4ht-docbook.tex (docbook.4ht), + * tex4ht-ooffice.tex (ooffice.4ht), + * tex4ht-mathjax.tex (mathjax-latex-4ht.4ht), + * tex4ht-html4.tex (html4-math.4ht, html4.4ht), + * tex4ht-4ht.tex (tikz-hooks.4ht): copyright 2021. + +2021-04-16 Michal Hoftich + + * tex4ht-4ht.tex (tikz-hooks.4ht): load dvisvgm4ht driver by default. + * tex4ht-4ht.tex (chessboard.4ht): added support for the + chessboard package. + +2021-04-15 Michal Hoftich + + * tex4ht-4ht.tex (caption.4ht): fix for TOC handling. + https://tex.stackexchange.com/a/593069/2891 + +2021-04-11 Michal Hoftich + + * tex4ht-html4.tex (html4-math.4ht): fixed paragraph handling for + eqnarray. + https://tug.org/pipermail/tex4ht/2021q2/002949.html + +2021-04-07 Michal Hoftich + + * tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): fixed configurations for + gather and gather*. + https://tex.stackexchange.com/a/591806/2891 + +2021-03-30 Michal Hoftich + + * tex4ht-4ht.tex (endnotes.4ht): don't use math mode to print + superscripts. https://tex.stackexchange.com/q/590565/2891 + +2021-03-27 Michal Hoftich + + * tex4ht-ooffice.tex (ooffice.4ht): removed space ignoring + specials from \footnotemark and \foontotetext, they caused removal + of all spaces from the document when only \footnotetext is used. + https://tug.org/pipermail/tex4ht/2021q1/002927.html + +2021-03-25 Michal Hoftich + + * tex4ht-4ht.tex (parallel.4ht), + * tex4ht-html4.tex (html4.4ht): added support for the parallel package. + +2021-03-06 Michal Hoftich + + * tex4ht-sty.tex (tex4ht.sty): preparing for a new LaTeX release, where + \everypar will be patched by LaTeX kernel. + https://puszcza.gnu.org.ua/bugs/?477 + * tex4ht-4ht.tex (caption.4ht): prevent expansion of macros + written to TOC by the \caption command. + https://tug.org/pipermail/tex4ht/2021q1/002912.html + * tex4ht-html4.tex (html4.4ht): use graphics- option value in PDF + end EPS conversion. + https://tex.stackexchange.com/a/586096/2891 + +2021-03-04 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht): close paragraph before tabularx + environment. https://tex.stackexchange.com/a/585797/2891 + +2021-03-02 Michal Hoftich + + * tex4ht-4ht.tex (titlesec.4ht): prevent duplicate entries in TOC. + https://tex.stackexchange.com/a/585479/2891 + * tex4ht-4ht.tex (biblatex.4ht): don't redefine \nolinkurl. + https://tex.stackexchange.com/a/585521/2891 + +2021-02-25 Michal Hoftich + + * tex4ht-4ht.tex (biblatex.4ht): check for existence of \TE@hook + before redefine. https://tex.stackexchange.com/a/584949/2891 + +2021-02-18 Michal Hoftich + + * tex4ht-fonts-noncjk.tex ( + tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/cyrillic/cmcyr/cmcbx.htf + ): fixed wrong character. + https://tug.org/pipermail/tex4ht/2021q1/002904.html + * tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): fix \( and \) in + sectioning commands. https://tex.stackexchange.com/a/583946/2891 + +2021-02-14 Michal Hoftich + + * tex4ht-4ht.tex (subcaption.4ht, caption.4ht), + * tex4ht-html4.tex (html4.4ht), + * tex4ht-html5.tex (html5.4ht): added support for the subcaption + package, fixed support subfloat captions. + https://tex.stackexchange.com/q/582846/2891 + +2021-02-10 Michal Hoftich + + * tex4ht-4ht.tex (svg.4ht): added support for image dimension + specification. https://tex.stackexchange.com/a/582861/2891 + +2021-02-08 Michal Hoftich + + * tex4ht-docbook.tex (docbook.4ht): start new paragraph after + \maketitle. https://github.com/michal-h21/make4ht/issues/44 + * tex4ht-docbook.tex (docbook.4ht): fixed footnote handling. + https://github.com/michal-h21/make4ht/issues/45 + * tex4ht-docbook.tex (docbook.4ht): added \textsubscript and + \textsuperscript support. + +2021-02-07 Michal Hoftich + + * tex4ht-4ht.tex (exerquiz.4ht, exerquiz-hooks.4ht, usepackage.4ht), + * tex4ht-html4.tex (html4.4ht): fixed exerquiz package support. + +2021-02-06 Michal Hoftich + + * tex4ht-4ht.tex (latex.4ht), + * tex4ht-unicode.tex (unicode.4ht), + * tex4ht-mathml.tex (mathml.4ht): use \protect in \:nbsp and + similar commands that use \leavevmode internally. + +2021-02-03 Michal Hoftich + + * tex4ht-4ht.tex (nameref.4ht): fix for \autoref and the Caption + package. https://tex.stackexchange.com/a/581856/2891 + +2021-01-30 Michal Hoftich + + * tex4ht-html4.tex (html4-math.4ht): removed most of the + configuration for MathJax, it was not needed and could cause + problems in some cases. https://github.com/michal-h21/make4ht/issues/42 + +2021-01-29 Michal Hoftich + + * tex4ht-4ht.tex (biblatex.4ht): the previous fix caused other + issues. We must define \TE@hook depending on the presence of Hyperref. + +2021-01-28 Michal Hoftich + + * tex4ht-4ht.tex (biblatex.4ht): removed definition of \TE@hook. + It caused some BibLaTeX code not to be executed and compilation + failed in some cases. + +2021-01-27 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht), + * tex4ht-html5.tex (html5.4ht): start new paragraph after abstracts. + +2021-01-26 Michal Hoftich + + * tex4ht-4ht.tex (gloss-french.4ht): fix for \nobreakspace error with + characters made active in French Polyglossia. + https://tex.stackexchange.com/a/580505/2891 + +2021-01-24 Michal Hoftich + + * tex4ht-4ht.tex (latex.4ht): added support for environment hooks. + https://puszcza.gnu.org.ua/bugs/?477 + * tex4ht-4ht.tex (article.4ht, report.4ht): added support for abstract + titles. + * tex4ht-html4.tex (html4.4ht), + * tex4ht-html5.tex (html5.4ht): fixed support for abstracts. + * tex4ht-4ht.tex (memoir.4ht, abstract.4ht), + * tex4ht-html4.tex (html4.4ht), + * tex4ht-html5.tex (html5.4ht): added support for abstracts in Memoir. + https://tex.stackexchange.com/a/579953/2891 + * tex-html5.tex (html5.4ht): added more sections and chapters to + make the source more readable. + +2021-01-21 Michal Hoftich + + * tex4ht-4ht.tex (usepackage.4ht, newcomputermodern-hooks.4ht): + fix for the newcomputermodern package. + +2021-01-12 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht): add anchor for \label commands in + \endnote. https://tex.stackexchange.com/a/578349/2891 + +2021-01-09 Michal Hoftich + + * tex4ht-html4.tex (html4-math.4ht): fixed display math + configuration for Amsmath. It supports the split environment now. + https://tug.org/pipermail/tex4ht/2021q1/002856.html + * tex4ht-html4.tex (html4.4ht): removed cellspacing and cellpading + attributes from most tables. They are deprecated. + https://tex.stackexchange.com/a/578224/2891 + +2021-01-07 Michal Hoftich + + * tex4ht-ooffice.tex (ooffice.4ht): don't use \@namedef, in order + to support plain. + * tex4ht-html4.tex (html4.4ht): configure Plain accents for long umlaut + \H. + * tex4ht-ooffice.tex (ooffice.4ht): configure accents for Plain TeX. + * tex4ht-ooffice.tex (ooffice.4ht): define page dimensions for + Plain TeX. + * tex4ht-ooffice.tex (ooffice.4ht): added configuration for + leftline and rightline. Even for Plain TeX. + +2021-01-03 Michal Hoftich + + * tex4ht-fonts-spectral.tex: added support for the Spectral font. + https://puszcza.gnu.org.ua/bugs/?497 + +2021-01-02 Michal Hoftich + + * tex4ht-sty.tex (tex4ht.sty): fixed \AtBeginDocument issues. + +2021-01-01 Michal Hoftich + + * tex4ht-sty.tex (tex4ht.sty): emulate \AtBeginDocument in .4ht files. + * tex4ht-4ht.tex (hyperref-hooks.4ht, hyperref.4ht, nameref.4ht): + fix for issues with \AtBeginDocument. + https://puszcza.gnu.org.ua/bugs/index.php?496 + +2020-12-25 Michal Hoftich + + * tex4ht-sty.tex (tex4ht.sty): use the new LaTeX hook system to execute + \Configure{AtBeginDocument} + * tex4ht-4ht.tex (mathtools.4ht): the code added yesterday is now + unnecessary. + https://puszcza.gnu.org.ua/bugs/?495 + https://tex.stackexchange.com/a/576267/2891 + +2020-12-24 Michal Hoftich + + * tex4ht-4ht.tex (mathtools.4ht): load graphicx package. + https://puszcza.gnu.org.ua/bugs/?495 + +2020-12-13 Karl Berry + + * tex4ht-html4.tex : remove spurious
+ from \Configure{signature}, causing blank lines after each + \makesignature element. + (.makesignature): reduce left margin to 4em. + (.signaturemark): hang diamond to left with magic number. + * tex4ht-4ht.tex (ltugboat.4ht): \InputIfFileExists{tugboat.dates} + for production TUGboat runs. + (tugboat.4ht, ltugboat-a.4ht, ltugproc{,-a}.4ht): minimize header. + +2020-12-03 Michal Hoftich + + * tex4ht-4ht.tex (tcolorbox.4ht), + tex4ht-html4.tex (html4.4ht): added support for the tcolorbox package. + https://tex.stackexchange.com/a/573314/2891 + +2020-11-29 Michal Hoftich + + * tex4ht-ooffice.tex (ooffice.4ht): simplified configuration of + \paragraph-like commands. Provided configuration for \paragraph, + \paragraph*, \subparagraph and \subparagraph*. + https://puszcza.gnu.org.ua/bugs/?491 + +2020-11-27 Michal Hoftich + + * tex4ht-ooffice.tex (ooffice.4ht): don't remove footcite support for + biblatex-dw. + https://puszcza.gnu.org.ua/bugs/index.php?492 + * tex4ht-ooffice.tex (ooffice.4ht): fixed paragraph handling for + csquotes quotation environments. + https://puszcza.gnu.org.ua/bugs/index.php?490 + * tex4ht-html4.tex (html4.4ht): use
element for quotation + environments. + +2020-11-26 Michal Hoftich + + * tex4ht-4ht.tex (csquotes.4ht), + tex4ht-html4.tex (html4.4ht), + tex4ht-ooffice.tex (ooffice.4ht): support for csquotes quotation + environments. + https://puszcza.gnu.org.ua/bugs/?490 + * tex4ht-ooffice.tex (ooffice.4ht): support for \subsubsection and + \paragraphs in the scrbook class. + https://puszcza.gnu.org.ua/bugs/?491 + +2020-11-23 Karl Berry + + * tex4ht-mkht.tex (texinfo): use etex rather than tex. + (\Echooff, \echoOff, ): new @echo off string. + (): use it. + (\make): setup. + (, ): define \Echooff as empty or "@echo off". + * Makefile (user_bin): new variable to allow per-user addition to PATH. + +2020-11-21 Michal Hoftich + + * tex4ht-4ht.tex (caption.4ht): fixed spurious separator between + caption number and text. + https://tex.stackexchange.com/q/571684/2891 + +2020-11-20 Michal Hoftich + + * tex4ht-4ht.tex (titlesec.4ht): fixed paragraph handling in sectioning + commands. + +2020-11-12 Michal Hoftich + + * tex4ht-fonts-noncjk.tex( + ./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/bera/fvmr8t.htf + ): added support for frmr8t font. + +2020-11-09 Michal Hoftich + + * tex4ht-html4 (html4-math.4ht): fixed paragraph opening after + \PicDisplay. Also don't use the obsolete
element. + https://tex.stackexchange.com/a/570077/2891 + +2020-11-08 Karl Berry + + * Makefile (diff_files): also filter-out ht.{unix,bat}. + +2020-11-08 Michal Hoftich + + * tex4ht-html4 (html4.4ht): fixed paragraph opening after Theorem + environment. + * tex4ht-html4 (html4.4ht): emulate \subsection handling in Amsart + class. + https://tex.stackexchange.com/q/569955/2891 + +2020-10-30 Karl Berry + + * tex4ht-mkht.tex (unix line): use set -e and exec + + * tex4ht-mkht.tex: more copyright 2020, https for tug.org. + * Makefile (diff-scripts, install-scripts): new targets. + (install_data, inst_dir_scripts): new variables. + (tex4ht_mkht_derived): add ht.unix and ht.bat (lots more). + +2020-10-25 Michal Hoftich + + * tex4ht-mkht.tex (all .unix and .bat files that use plain TeX): + use etex in shell scripts for plain TeX. + * tex4ht-4ht.tex (plain.4ht): declare configurations for spacing + commands in plain TeX. + +2020-10-18 Michal Hoftich + + * tex4ht-4ht.tex (minted-sty-hooks.4ht): fixed the breaklines option + handling. + +2020-10-17 Michal Hoftich + + * tex4ht-4ht.tex (usepackage.4ht,graphics-hooks.4ht): adapted Graphics, + * tex4ht-4ht.tex (usepackage.4ht,xcolor-hooks.4ht): adapted Xcolor, + * tex4ht-4ht.tex (usepackage.4ht,caption-hooks.4ht): adapted Caption, + * tex4ht-4ht.tex (usepackage.4ht,pdfbase-hooks.4ht): adapted Pdfbase, + * tex4ht-4ht.tex (usepackage.4ht,tikz-hooks.4ht): adapted Tikz, + * tex4ht-4ht.tex (usepackage.4ht,fontspec-hooks.4ht, + polyglossia-hooks.4ht): adapted Fontspec and Polyglossia, + * tex4ht-4ht.tex (usepackage.4ht,ctex-hooks.4ht): adapted Ctex, + * tex4ht-4ht.tex (usepackage.4ht,xecjk-hooks.4ht): adapted xeCJK, + * tex4ht-4ht.tex (usepackage.4ht,savetrees-hooks.4ht): adapted + savetrees, + * tex4ht-4ht.tex (usepackage.4ht,expl3-hooks.4ht): adapted expl3, + * tex4ht-4ht.tex (usepackage.4ht,showframe-hooks.4ht): adapted + showframe, + * tex4ht-4ht.tex (usepackage.4ht,esopic-hooks.4ht): adapted eso-pic, + * tex4ht-4ht.tex (usepackage.4ht,xrhyper-hooks.4ht): adapted xr-hyper, + * tex4ht-4ht.tex (usepackage.4ht,xr-hooks.4ht): adapted xr, + * tex4ht-4ht.tex (usepackage.4ht,fancyhdr-hooks.4ht): adapted fancyhdr, + * tex4ht-4ht.tex (usepackage.4ht,cleveref-hooks.4ht): adapted cleveref, + * tex4ht-4ht.tex (usepackage.4ht,imakeidx-hooks.4ht): adapted imakeidx, + for the new hook mechanism. + * tex4ht-4ht.tex: added tutorial on how to write early package patching + the new package hook mechanism. + +2020-10-16 Michal Hoftich + + * tex4ht-cond4ht.tex (cond4ht.4ht, docbook.4ht, html0.4ht, + html32.4ht, html4.4ht, mktex4ht.4ht, ooffice.4ht, ooimpress.4ht, + tei.4ht): strip leading quotes from files that we try to find + .4ht files for. https://puszcza.gnu.org.ua/bugs/?486#postcomment + * tex4ht-4ht.tex (catchfile-sty-hooks.4ht): removed unnecessary file. + * tex4ht-sty.tex (tex4ht.sty): changed the early package hook + mechanism to speed up things. + https://puszcza.gnu.org.ua/bugs/?486#postcomment + * tex4ht-4ht.tex (usepackage.4ht): adapded Minted for the new + package hook mechanism. + +2020-10-08 Michal Hoftich + + * tex4ht-sty.tex (tex4ht.sty): new mechanism for early package + redefinitions. + * tex4ht-4ht.tex (usepackage.4ht, + minted-sty-hooks.4ht, + catchfile-sty-hooks.4ht): added early package redefinitions for Minted + and Catchfile packages. + https://puszcza.gnu.org.ua/bugs/?486 + +2020-10-05 Michal Hoftich + + * tex4ht-4ht.tex (biblatex.4ht): fix for ithenelse patching error. + * tex4ht-4ht.tex (usepackage.4ht): fix for Polyglossia fatal error. + +2020-10-03 Michal Hoftich + + * tex4ht-4ht.tex (fancyvrb.4ht): fixed spurious blank lines that were + sometimes produced. + * tex4ht-4ht.tex (latex.4ht): fixed \,, \;, \: and other similar + commands. Their definition had been added to LaTeX kernel and + their behaviour changed, resulting in possible fatal error. + https://tug.org/pipermail/tex4ht/2020q4/002735.html + +2020-09-28 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht): use
 element for fancy verbatim.
+	https://tex.stackexchange.com/q/564532/2891
+	* tex4ht-4ht.tex (minted.4ht),
+	* tex4ht-html4.tex (html4.4ht): added support for colored Minted
+	listings. https://tex.stackexchange.com/a/564579/2891
+
+2020-09-22  Michal Hoftich  
+
+	* tex4ht-4ht (latex.4ht, subscript.4ht): patch \@textsuperscript and
+	\@textsubscript unconditionally.
+	https://puszcza.gnu.org.ua/bugs/index.php?477
+
+2020-09-21  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): use \providecommand instead of
+	\newcommand in order to prevent errors when eso-pic package is required
+	multiple times.
+
+2020-09-18  Michal Hoftich  
+
+	* tex4ht-unicode.tex (unicode.4ht): don't use combining characters for
+	MathML accents.
+	https://puszcza.gnu.org.ua/bugs/?483
+
+2020-09-13  Michal Hoftich  
+
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): removed space
+	handling regular expressions, they seem to be unnecessary with
+	current MathJax.
+
+2020-09-08  Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht): removed some weird code from
+	configuration for \text.. commands. It produced invalid MathML.
+
+2020-09-02  Michal Hoftich  
+
+	* tex4ht-4ht.tex(usepackage.4ht, usepackage-fontspec.4ht):
+	fix for the development version of LaTeX.
+	https://puszcza.gnu.org.ua/bugs/?477
+	* tex4ht-html4.tex (html4.4ht): fixed line breaks in verbatim.
+	https://tex.stackexchange.com/a/561167/2891
+
+2020-09-01  Michal Hoftich  
+
+	* tex4ht-fonts-ebgaramond.tex,
+	* tex4ht-fonts-fourier.tex,
+	* tex4ht-fonts-libertine.tex,
+	* tex4ht-fonts-newtx.tex: updated compilation instructions.
+	
+2020-08-31  Karl Berry  
+
+	* tex4ht-fonts-noncjk.tex (bchb8t): remove spurious Unicode in
+	htfcss line.
+
+	* tex4ht-fonts-ebgaramond.tex,
+	* tex4ht-fonts-fourier.tex,
+	* tex4ht-fonts-libertine.tex,
+	* tex4ht-fonts-newtx.tex: license, copyright year.
+
+2020-08-31  Michal Hoftich  
+
+	* tex4ht-fonts-fourier.tex,
+	* Makefile: generate files for Fourier fonts.
+	https://github.com/michal-h21/make4ht/issues/35
+
+2020-08-27  Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht): use some code from mathml- option by
+	default.
+	https://github.com/michal-h21/make4ht/issues/34
+	https://puszcza.gnu.org.ua/bugs/?278
+
+2020-08-19  Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht): fixed fence rendering in MathML.
+	https://puszcza.gnu.org.ua/bugs/?481
+
+2020-07-30  Michal Hoftich  
+
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): remove spurious colon.
+	https://tex.stackexchange.com/a/555755/2891
+	https://puszcza.gnu.org.ua/bugs/?479
+
+2020-07-28  Michal Hoftich  
+
+	* tex4ht-sty.tex (tex4ht.sty),
+	* tex4ht-4ht.tex (latex.4ht),
+	* Makefile: use new LaTeX hook system for patching \begin{document}
+	when possible.
+	https://puszcza.gnu.org.ua/bugs/?477#postcomment
+	
+2020-07-27  Michal Hoftich  
+
+	* tex4ht-sty.tex (tex4ht.sty): don't patch \shipout command.
+	https://listserv.uni-heidelberg.de/cgi-bin/wa?A2=LATEX-L;d8558dd0.2007&S=
+
+2020-07-26  Michal Hoftich  
+
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht),
+	* tex4ht-html4.tex (html4-math.4ht): added MathJaxConfig configuration.
+	https://github.com/michal-h21/make4ht/issues/33
+
+2020-07-26  Karl Berry  
+
+	* Makefile (diff-htfonts): rename from diff-ht-fonts, and also
+	generate /tmp/htnew for new files. Other small name changes.
+
+2020-07-25  Michal Hoftich  
+
+	* tex4ht-fonts-newtx.tex,
+	* Makefile: generate files for Newtx fonts
+	https://puszcza.gnu.org.ua/bugs/index.php?236#postcomment
+
+2020-07-18  Karl Berry  
+
+	* Makefile (update):  missing ) on "$(dest_src/", causing 
+	"unterminated variable reference".
+	(destdir): change to update.dir from .., to make it clearer
+	this is a test target not in regular use.
+
+2020-07-17 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): \rowcolor should have precedence over
+	\columncolor in colortbl support.
+	https://puszcza.gnu.org.ua/bugs/?163
+	* tex4ht-html4.tex (html4.4ht): fixed Koma Script \paragraph.
+	https://puszcza.gnu.org.ua/bugs/?176
+	* tex4ht-html4.tex (html4.4ht): allow linebreak in long URLs.
+	https://puszcza.gnu.org.ua/bugs/index.php?301
+
+2020-07-16 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): fixed eso-pic support.
+	https://puszcza.gnu.org.ua/bugs/?231
+	* tex4ht-4ht.tex (article.4ht,book.4ht,report.4ht,
+	scrbook.4ht,scrreprt.4ht): fixed tocdepth handling.
+	https://puszcza.gnu.org.ua/bugs/?228
+
+2020-07-13 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht, ctex.4ht): added support for the
+	ctex package.
+	https://github.com/michal-h21/make4ht/issues/29
+
+2020-07-10 Michal Hoftich  
+
+	* tex4ht-tei.tex (tei.4ht): declare encoding in 
+	* tex4ht-fonts-modern.tex (
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/rm-lm.htf
+	): added declaration for rm-lmcsc.
+	* tex4ht-fonts-noncjk.tex (
+	DejaVuSansCondensed-Bold-tlf-t1.htf
+	DejaVuSansCondensed-BoldOblique-tlf-t1.htf
+	DejaVuSansCondensed-Oblique-tlf-t1.htf
+	DejaVuSansCondensed-tlf-t1.htf
+	): these fonts are not small caps (thanks to Linas Stonys).
+
+
+2020-07-09 Michal Hoftich  
+
+	* tex4ht-tei.tex (tei.4ht): defined \ifHCond conditional.
+	* tex4ht-tei.tex (tei.4ht): defined basic HTF font support.
+
+2020-07-07 Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex (
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/bitstrea/charter/bchr8r 
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/bitstrea/charter/bchb8t
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/bitstrea/charter/bchri8t
+	): fixed htfcss declarations (thanks to Linas Stonys)
+
+2020-07-02 Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht): don't use deprecated 
+	element for \left and \right.
+
+2020-07-01 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): fixed spacing after \LaTeX and \TeX.
+	https://puszcza.gnu.org.ua/bugs/?162
+
+2020-06-30 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): don't override HTML charset when it is
+	already set.
+	https://puszcza.gnu.org.ua/bugs/index.php?432
+	* tex4ht-html4.tex (html4.4ht): use monospaced font for fancyvrb
+	and alltt environments.
+	https://puszcza.gnu.org.ua/bugs/?211
+
+2020-06-29  Ulrich M\"uller  
+
+	* tex4ht-htcmd.c (err_i, err_arg): use ("%s", warn_err_mssg[n])
+	 for the sake of -Werror=format-security.
+	 http://puszcza.gnu.org.ua/bugs/?472
+
+2020-06-23 Michal Hoftich  
+
+	* tex4ht-docbook.tex (docbook.4ht): don't print filename in BibLaTeX
+	bibliography.
+	https://github.com/michal-h21/make4ht/issues/28
+
+2020-06-21 Michal Hoftich  
+
+	* tex4ht-docbook.tex (docbook.4ht): support for BibLaTeX bibliography.
+	https://github.com/michal-h21/make4ht/issues/28
+
+2020-06-19 Michal Hoftich  
+
+	* tex4ht-4ht.tex (memoir.4ht): disable warning and error messages about
+	obsolete font commands.
+	https://github.com/michal-h21/make4ht/issues/27
+
+2020-06-18 Michal Hoftich  
+
+	* tex4ht-docbook.tex (docbook.4ht): fixed output from \maketitle
+	command in accordance with the current Docbook documentation.
+	https://github.com/michal-h21/make4ht/issues/27
+
+2020-06-16 Michal Hoftich  
+
+	* tex4ht-4ht.tex (longtable.4ht): fixed LOT for longtable + fixed
+	missing colon in caption.
+	https://puszcza.gnu.org.ua/bugs/?313
+
+2020-06-15  Vincent Bela\"iche  
+
+	* Makefile (do_java): Add comment about do_java=0|1 needing
+	tex4ht-dir.tex refresh.
+	(xtpipe_jar): Replace java_or_not by xtpipes_jar, as the only
+	purpose is to control making of xtpipes.jar, and transpose the
+	dependency between in-tex and in-make, i.e., xtpipes.jar is needed
+	only when java is compiled in tex.
+	Replace all the "ifeq ($(java_in_make),true)" by "ifneq
+	($(do_java),2)".
+	(xtpipes_derived): Add $(xtpipes_jar).
+	($(tex4ht_jsml_xtpipes_derived)): Replace $(call
+	java_or_not,$(wd)/bin/xtpipes.jar) by $(xtpipes_jar) in the
+	dependency list, so there is a dependency only when compiling java
+	in tex.
+	(jar): Suppress producing xtpipes.jar, this is needed only for
+	compiling in tex.
+
+2020-06-13  Vincent Bela\"iche  
+
+	* xtpipes.tex,
+	* tex4ht-xhtmml-xtpipes.tex,
+	* tex4ht-xhtml-xtpipes.tex,
+	* tex4ht-oo-xtpipes.tex,
+	* tex4ht-jsml-xtpipes.tex,
+	* tex4ht-javahelp-xtpipes.tex,
+	* tex4ht-html-speech-xtpipes.tex,
+	* tex4ht-docbook-xtpipes.tex: Make all java system calls
+	conditional on "\ifdojava" switch.
+	* tex4ht-dir.m4: Add a "\ifdojava" switch.
+	* Makefile: Refactor the "do_java" option so that, and propagate
+	the option to "tex4ht-dir.tex" via "tex4ht-dir.m4".
+
+2020-06-11  Karl Berry  
+
+	* Makefile (all): run checklog.lua here, instead of in
+	individual rules.
+	* texlog.lua: fiddle with formatting.
+
+2020-06-10 Michal Hoftich  
+
+	* checklog.lua: pass checked log file name to the log parser function.
+
+2020-06-07  Karl Berry  
+
+	* Makefile (tex4ht_fonts_modern_derived): evidently lm-htf.tex
+	is created from tex4ht-fonts-modern.tex, not noncjk. It looks to
+	be a test file with no particul use, but ok, whatever. svn:ignore it.
+	(diff-ht-fonts): failed to uncomment the full diff rerun.
+	(diff_files): $(filter-out) various files in $(derived) that are
+	not installed under $(inst_dir_4ht).
+	(tex4ht_fonts_cjk_derived, tex4ht_fonts_cjk_utf8_derived): define
+	as the first .htf file created, instead of the .html, since the
+	.html is not installed.
+
+2020-06-07 Michal Hoftich  
+
+	* checklog.lua: script for detection of errors in the log files.
+	* tex4ht-4ht.tex (amsart.4ht, amsproc.4ht): fixed horizontal mode
+	error when \dedication is used.
+	https://puszcza.gnu.org.ua/bugs/?469
+
+2020-06-06  Vincent Bela\"iche  
+
+	* xtpipes.tex (End document system call): Remove
+	-Xlint:deprecation from javac call.
+	(): Add xtpipes.XtpipesPrintWriter import.
+	(, <, ): Replace deprecated Integer/Boolean allocation with
+	new by call to static member function valueOf.
+
+2020-06-06  Karl Berry  
+
+	* Makefile: use htlatex instead of xhlatex throughout.
+	https://tug.org/pipermail/tex4ht/2020q2/002579.html
+
+	(diff-ht-fonts): more tweaks on the road to making the output more
+	easily usable.
+
+	(SearchFonts.java): disable dependency.
+	* tex4ht-fonts-noncjk.tex: document Michal's idea about about it.
+	https://tug.org/pipermail/tex4ht/2020q2/002578.html
+
+2020-06-05  Karl Berry  
+
+	* tex4ht-javahelp-xtpipes.tex: \input{tex4ht-dir}.
+
+2020-06-05  Vincent Bela\"iche  
+
+	* tex4ht-javahelp-xtpipes.tex,
+	* tex4ht-html-speech-xtpipes.tex: Remove reference to \XTPIPES lib
+
+2020-06-05  Karl Berry  
+
+	* Makefile (do_java): conditional to enable Java derivations
+	and compilations.
+	* Makefile.exp: move "experimental section" to here from Makefile.
+
+2020-06-05  Vincent Bela\"iche  
+
+	* tex4ht-docbook-xtpipes.tex,
+	* tex4ht-javahelp-xtpipes.tex,
+	* tex4ht-jsml-xtpipes.tex,
+	* tex4ht-oo-xtpipes.tex,
+	* tex4ht-xhtml-xtpipes.tex,
+	* tex4ht-xhtmml-xtpipes.tex: Replace absolute paths by macros
+	from tex4ht-dir.tex.
+
+	* tex4ht-html-speech-xtpipes.tex: Likewise replace absolute paths,
+	and ensure directory \TEXMFTEXivBIN exists.
+
+	* xtpipes.tex: Likewise replace absolute paths, and
+	change system calls so that javac input files are streamed from find.
+
+2020-06-04 Michal Hoftich  
+
+	* tex4ht-fonts-modern.tex: removed lot of duplicated .htf entries.
+	* tex4ht-fonts-modern.tex (txbtt8v, txbttsc8v, txbttsl8v, txtt8v,
+	txttsc8v, txttsl8v): new HTF files.
+	* tex4ht-fonts-noncjk.tex: renamed pxbsyc.htf to txbsyc.htf.
+
+2020-06-04  Karl Berry  
+
+	* tex4ht-fonts-modern.tex (lm-qxtt-LM-05): remove duplicate \AddFont.
+	(lm-qxtt-LM-05): move to after definition.
+	* tex4ht-fonts-noncjk.tex (txtt): \AddFont this instead of txb twice.
+	(zppleb7m): remove duplicate definition.
+	(pcrb): remove \AddFont in phvb section (correct the name, too).
+	(txbsyc): delete second spurious (alias) entry.
+	(ma1r8c, ma1r8t, ma1b8t): remove definitions since they were never
+	installed because their directory,
+        tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/monotype,
+        was not created (and the fonts are not free anyway).
+
+	* Makefile (SearchFonts.java, etc.): disable dependencies so as
+	not to uselessly remake everything when files are not in the right
+		place.
+
+2020-06-04  Vincent Bela\"iche  
+
+	* xtpipes.tex (\AddFileC): Remove appending slash to directory
+	argument, as it ends prematurely the \MakeDir loop by having an
+	unwanted // pattern in the path.
+
+2020-06-03 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4-math.4ht): handle nested math in amsmath
+	version of \[\].
+	https://tug.org/pipermail/tex4ht/2020q2/002561.html
+
+2020-06-02 Michal Hoftich  
+
+	* tex4ht-4ht.tex (latex.4ht): fixed bug in tabbing environment.
+	https://tug.org/pipermail/tex4ht/2020q2/002565.html
+
+2020-05-31  Vincent_Bela\"iche  
+
+	* tex4ht-dir.m4: new file, used to generate with m4:
+	* tex4ht-dir.tex: generate, with java-related directories too.
+	* Makefile (tex4ht-dir.tex): do the generation.
+	(dirs): new variable, list of dirs to substitute.
+	(common_no_cond_sty): add tex4ht-dir.tex.
+	(tex4ht_docbook_xtpipes_derived, many others): use new directory vars
+	for .java file locations, etc.
+	(xtpipes.jar, tex4ht.jar, jar): new targets.
+
+2020-05-31 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4-math.4ht): added default definition for
+	\:RestoreMathjaxCatcodes.
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): fix \sum in TOC.
+	https://puszcza.gnu.org.ua/bugs/index.php?468
+
+2020-05-27 Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex,
+	* tex4ht-fonts-modern.tex,
+	* tex4ht-fonts-4hf.tex (
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/lm-qx/lm-qx.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/iwona/greek-iwona.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/libertine/fxlr-xl-03.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/libertine/fxlr-xl-ts1.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/lm-qxtt.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/lm-ts1.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/pxfonts/rpcxr.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/tibetan/ctib.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/tipa/xipx.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/txfonts/rtcxr.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/txfonts/rtcxss.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/txfonts/tcxb.htf
+	): fixed wrong XML entites. 
+	* tex4ht-4ht.tex (awesomebox.4ht),
+	* tex4ht-html4.tex (html4.4ht): basic support for the awesomebox
+	package.
+	https://tex.stackexchange.com/a/546570/2891
+
+2020-05-25 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): load Unicode definitions when script
+	option for language selection is used in Polyglossia.
+	https://github.com/reutenauer/polyglossia/issues/419
+
+2020-05-22 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht, caption.4ht): fixes for the
+	Caption package.
+	https://tex.stackexchange.com/q/545582/2891
+	* tex4ht-html4.tex (html4.4ht): use 
 element for the verbatim
+	environment.
+	* tex4ht-4ht.tex (amsart.4ht, amsbook.4ht, amsproc.4ht): fixed spurious
+	footnotes for \thanks command.
+
+2020-05-20 Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): added support for MW classess
+	in the ooffice output.
+
+2020-05-18 Michal Hoftich  
+
+	* tex4ht-4ht.tex (imakeidx.4ht): added support for the intoc option.
+	https://tex.stackexchange.com/a/543759/2891
+
+2020-05-05 Michal Hoftich  
+
+	* README: fixed location of xmllint and vcss commands.
+	https://puszcza.gnu.org.ua/bugs/?459
+
+2020-04-23 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): fix for interaction between
+	Cleveref and Hyperref.
+	https://tex.stackexchange.com/a/540277/2891
+
+2020-04-19 Michal Hoftich  
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): fixed support for `\ {`
+	https://tex.stackexchange.com/a/539677/2891
+	https://puszcza.gnu.org.ua/bugs/index.php?457
+
+2020-04-19 Michal Hoftich  
+
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): added support for \ln in
+	section titles.
+	https://puszcza.gnu.org.ua/bugs/?456
+
+2020-04-15 Michal Hoftich  
+
+	* tex4ht-sty.tex (tex4ht.sty): make \append:def and simillar commands
+	available in usepackage.4ht
+	* tex4ht-4ht.tex (usepackage.4ht): fixed TikZ externalization patching.
+	https://puszcza.gnu.org.ua/bugs/?451
+
+2020-04-13 Michal Hoftich  
+
+	* tex4ht-html4.tex(html4.4ht): removed CSS code that set left
+	margin for images in margins to 10%
+	* tex4ht-html5.tex (html5.4ht): fixed centering of images in floats and
+	figures.
+	https://tex.stackexchange.com/a/538431/2891
+
+2020-04-04 Michal Hoftich  
+
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): added
+	\fixtmathjaxsec command, prevented \left and \right from expansion.
+	https://puszcza.gnu.org.ua/bugs/?453
+
+2020-03-16  Karl Berry  
+
+	* tex4ht-docbook.tex,
+	* tex4ht-fonts-cjk-utf8.tex,
+	* tex4ht-fonts-cjk.tex,
+	* tex4ht-fonts-noncjk.tex,
+	* tex4ht-html4.tex (html4.4ht),
+	* tex4ht-html5.tex,
+	* tex4ht-javahelp.tex (javahelp.4ht),
+	* tex4ht-mkht.tex (mkht.4ht): use https://tug.org instead of http.
+	Only listed .4ht files updated in TeX Live, others will
+	have to come in time.
+
+2020-03-14 Michal Hoftich  
+
+	* tex4ht-4ht.tex (multicol.4ht): fixed paragraph handling.
+
+2020-03-12 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): block package showframe.
+	https://tug.org/pipermail/tex4ht/2020q1/002464.html
+	
+2020-03-09 Michal Hoftich  
+
+	* tex4ht-jats.tex (jats.4ht),
+	tex4ht-options.tex (tex4ht.4ht): still work in progress on JATS.
+
+2020-03-04 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4-math.4ht),
+	tex4ht-mathml.tex (html-mml.4ht): use MathJax 3
+	https://tug.org/pipermail/tex4ht/2020q1/002455.html
+
+2020-03-03 Michal Hoftich  
+
+	* tex4ht-jats.tex (jats.4ht),
+	tex4ht-options.tex (tex4ht.4ht): started to work on basic JATS support.
+
+2020-03-02 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): fixed patching of the
+	\usetikzpackage command.
+	https://puszcza.gnu.org.ua/bugs/?451#postcomment
+
+2020-02-28 Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht),
+	tex4ht-html4.tex (html4.4ht): do not use breakable space for the "\ "
+	command. It broke verbatim.
+	https://puszcza.gnu.org.ua/bugs/?449
+
+2020-02-26 Michal Hoftich  
+
+	* tex4ht-4ht.tex (latex.4ht, plain.4ht),
+	tex4ht-mathml.tex (mathml.4ht),
+	tex4ht-html4.tex (html4.4ht): use breakable space for the "\ " command.
+	https://puszcza.gnu.org.ua/bugs/?449
+
+2020-02-24 Michal Hoftich  
+
+	* tex4ht-oo-xtpipes.tex (oo-text.4xt): don't process 
+	elements using Xtpipes; it is handled better by make4ht.
+
+2020-02-17 Michal Hoftich  
+
+	* tex4ht-sty.tex (tex4ht.sty),
+	tex4ht-4ht.tex (usepackage-fontspec.4ht, usepackage.4ht): fixed
+	support for command patching in the document preamble. New
+	command provided: \:AtEndOfPackage.
+	https://puszcza.gnu.org.ua/bugs/?448
+
+2020-02-14 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): removed ignored letters from
+	\Configure{HAccent}.
+	https://puszcza.gnu.org.ua/bugs/?446
+
+2020-02-13 Michal Hoftich  
+
+	* tex4ht-4ht.tex (listings.4ht): added support for the
+	\lstlistoflistings command.
+	https://tex.stackexchange.com/a/528310/2891
+
+2020-02-09 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage-fontspec.4ht): don't block the
+	Fontenc package from loading, it caused another fatal issue with
+	Fonspec.
+
+2020-01-24 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): do not use 1.5 as default line height.
+	* tex4ht-4ht.tex (usepackage-fontspec.4ht): fixed more fatal
+	issues with Fontspec.
+
+2020-01-23 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage-fontspec.4ht): fix fatal error
+	with updated fontspec package.
+
+2020-01-22 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): use plain text for \TeX and
+	\LaTeX commands by default. Versions that try to emulate their
+	visual appearance in PDF can be requested using the "fancylogo"
+	option.
+
+	* tex4ht-html4.tex (html4.4ht): use 1.5 as default line height.
+
+	* tex4ht-fonts-cjk.tex (
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai62.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai77.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai66.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai68.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai08.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai29.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai64.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai87.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai88.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai48.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai43.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai34.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai04.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai10.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai32.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai37.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai55.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai11.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai47.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai27.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai61.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai09.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai83.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai82.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai31.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai19.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai54.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai76.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai94.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai06.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai12.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai84.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai28.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai80.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai40.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai58.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai60.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai75.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai49.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai24.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai79.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai50.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai86.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai53.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai44.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai07.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai41.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai20.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai71.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai13.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai03.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai67.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai65.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai05.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai93.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai21.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai74.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai17.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai15.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai38.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai70.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai42.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai14.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai85.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai18.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai25.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai91.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai72.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai23.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai33.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai46.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai22.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai36.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai02.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai51.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai52.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai16.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai35.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai01.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai30.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai92.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai57.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai63.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai39.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai81.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai45.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai73.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai89.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai69.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai56.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai90.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai78.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai26.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkkai/gbkkai59.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao69.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao55.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao54.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao42.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao68.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao17.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao25.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao61.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao06.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao62.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao91.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao92.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao26.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao36.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao49.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao56.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao20.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao87.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao39.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao80.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao63.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao23.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao77.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao84.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao78.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao19.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao18.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao51.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao76.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao71.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao16.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao59.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao94.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao40.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao47.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao09.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao70.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao24.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao37.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao08.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao35.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao75.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao02.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao83.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao74.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao50.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao89.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao64.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao28.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao79.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao88.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao01.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao66.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao38.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao90.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao52.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao57.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao34.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao41.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao27.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao32.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao73.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao04.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao43.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao12.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao53.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao13.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao46.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao65.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao58.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao60.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao45.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao22.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao86.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao03.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao48.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao07.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao82.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao11.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao67.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao85.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao33.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao44.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao30.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao72.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao10.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao05.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao15.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao93.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao21.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao14.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao81.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao31.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkyao/gbkyao29.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh20.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh55.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh29.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh54.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh82.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh26.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh24.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh03.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh53.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh68.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh10.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh02.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh75.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh92.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh73.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh38.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh63.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh49.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh84.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh56.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh04.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh60.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh34.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh15.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh65.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh59.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh07.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh32.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh52.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh85.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh70.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh40.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh39.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh19.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh61.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh22.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh06.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh74.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh13.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh86.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh48.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh12.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh71.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh16.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh90.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh37.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh87.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh05.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh78.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh81.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh25.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh41.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh69.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh94.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh33.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh30.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh51.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh77.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh47.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh58.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh93.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh18.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh09.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh76.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh80.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh57.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh01.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh89.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh66.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh21.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh42.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh27.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh44.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh88.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh46.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh67.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh62.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh23.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh79.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh72.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh14.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh11.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh28.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh50.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh35.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh31.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh91.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh43.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh36.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh83.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh08.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh64.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh17.htf
+	./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/gbk/gbkxh/gbkxh45.htf
+	): fixed more monospaced htf fonts.
+
+	* tex4ht-fonts-noncjk.tex (
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/DroidSansMono-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/PTMono-BoldSlanted-tlf-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/DejaVuSansMono-tlf-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/DejaVuSansMono-Oblique-tlf-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/DejaVuSansMono-Bold-tlf-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/PTMono-Slanted-tlf-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/DroidSansMono-SmallCaps-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/DejaVuSansMono-BoldOblique-tlf-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/PTMono-Regular-tlf-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/DroidSansMono-Slanted-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/PTMono-Bold-tlf-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/DroidSansMono-Slanted-SmallCaps-t1.htf
+./tex4ht.dir/texmf/tex4ht/ht-fonts/alias/bera/fvmr8r.htf
+	): even more fixes for monospaced htf fonts.
+
+2019-12-30 Michal Hoftich  
+
+	* tex4ht-4ht.tex (extarticle.4ht, extbook.4ht, extletter.4ht):
+	disable huge font size in the document. It led to huge text
+	resulting from HTF fonts.
+	https://tex.stackexchange.com/q/522173/2891
+
+	* tex4ht-mathml.tex (mathml.4ht): redefined \int command to
+	produce the  element.
+	https://tex.stackexchange.com/q/522173/2891
+
+2019-12-29 Michal Hoftich  
+
+	* tex4ht-4ht.tex (amsmath.4ht),
+	tex4ht-mathml.tex (mathml.4ht): added support for the
+	\boldsymbol command.
+	https://tex.stackexchange.com/q/522173/2891
+
+	* tex4ht-mathml.tex (mathml.4ht): removed mathsize="big"
+	attribute, it is deprecated.
+
+2019-12-28 Michal Hoftich  
+
+	* tex4ht-unicode.tex (unicode.4ht),
+	tex4ht-mathml.tex (mathml.4ht): fixed math accents.
+	https://puszcza.gnu.org.ua/bugs/?444
+
+2019-12-23 Michal Hoftich  
+
+	* tex4ht-4ht.tex (footmisc.4ht): fixed support for the symbolic
+	footnote marks.
+	https://tex.stackexchange.com/a/521497/2891
+
+2019-12-20 Michal Hoftich  
+
+	* tex4ht-4ht.tex (biblatex.4ht): updated for the latest BibLaTeX
+	version.
+	http://puszcza.gnu.org.ua/bugs/?447
+
+2019-12-19 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): prevent the Caption package
+	from patching other packages. This can clash with TeX4ht
+	configurations.
+	https://tex.stackexchange.com/a/520996/2891
+
+	* tex4ht-4ht.tex (
+	aa.4ht,
+	acm_proc_article-sp.4ht,
+	amsart.4ht,
+	amsbook.4ht,
+	amsproc.4ht,
+	article.4ht,
+	book.4ht,
+	elsart.4ht,
+	listings.4ht,
+	longtable.4ht,
+	mwart.4ht,
+	mwbk.4ht,
+	mwrep.4ht,
+	report.4ht,
+	revtex4.4ht,
+	scrbook.4ht,
+	scrreprt.4ht
+	): Don't print caption label separator when the labels is empty.
+
+2019-12-17 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): fixed CSS code for \cmidrule
+	from Booktabs package.
+
+2019-12-16 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): added margins to 
and
+	elements.
+	* tex4ht-mathml.tex (mathml.4ht): add space after \tag* command.
+	* tex4ht-4ht.tex (amsmath.4ht): fixed support for the \tag* command.
+
+2019-12-15 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4-math.4ht),
+	tex4ht-mathml.tex (mathml.4ht): configure Amsmath \[ ... \] to
+	\begin{equation*} ... \end{equation*}
+	https://tex.stackexchange.com/q/520375/2891
+	* tex4ht-html4.tex (html4.4ht): use only spaces as separator between
+	paragraphs. Use the "p-indent" option to use text indents.
+
+2019-12-13 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): added p-indent and p-space
+	options. First one disables blank spaces between paragraphs, the
+	second keeps blank spaces and disables indents.
+
+	* tex4ht-html4.tex (html4.4ht): fixed font size problem with monospaced
+	fonts.
+	http://code.iamkate.com/html-and-css/fixing-browsers-broken-monospace-font-handling/
+	* tex4ht-fonts-modern.tex,
+	tex4ht-fonts-noncjk.tex (
+	ma1r8t.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/pl/pltcsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/tipa/tipa.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/adobe/palatino/pplrc9t.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/cm/cmtcsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/el-lm.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/l7x-lm.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/pre2005/qx-lmtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/pre2005/cork-.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/el-lmcs.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/cs-lm.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/l7x-lmcsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/txfonts/txsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/txfonts/tcxb.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/iso8859/1/sw/curr.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/iso8859/5/cyrillic/kmitt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cyrillic/kmvtti.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cyrillic/cmcyr/cmcitt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cyrillic/cmcyr/cmcsltt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cyrillic/cmcyr/cmctt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cyrillic/kmtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cyrillic/kmvtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cyrillic/kmsltt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cs/cstt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/cmbrightvn/vncm.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/vnr/vn.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/urwvn/ucrbo8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/urwvn/ucrrc8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/urwvn/ucrb8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/urwvn/ucrbc8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/urwvn/ucrro8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/urwvn/ucrr8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/mscorevn/mcrb8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/mscorevn/mcrbc8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/mscorevn/mcrri8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/mscorevn/mcrr8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/mscorevn/mcrbi8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/mscorevn/mcrrc8v.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/chartervn/txtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/pl/pltt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/pl/plsltt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/pl/plitt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/pl/plvtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/jknappen/tc/tctt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/jknappen/tc/tcrb.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lctt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/latt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lbcc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/ldcc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/ldtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lbtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/ldss.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lcss.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lbss.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lait.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lass.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/latc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lccc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/tipa/tipx.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/qfonts/qcrbi.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/qfonts/qcrri.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/qfonts/qcrb.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/ae/aetcsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/ae/ae.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/rpcrr.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/rpcrb.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrr.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrb.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/rpcrbo.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrb8u.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrbo.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrr8u.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/rpcrro.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrrc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrbo8u.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrbc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/courier/pcrro.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/pslatex/pcrr8rn.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/pslatex/pcrr8tn.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cm/cmtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cm/cmitt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cm/cmsltt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/cm/cmvtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/cs-lmcs.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/rm-lmt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/ts1-.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/pre2005/qx-lmtcs.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/pre2005/texnansi-lmtcs.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/pre2005/texnansi-lm.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/pre2005/cork-lmtcs.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/t5-lm.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/lm-qx/qx-lm.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/lm-rep-cstt/cssltt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/lm-rep-cstt/csvtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/lm-rep-cstt/cstcsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/lm-rep-cstt/csitt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/rm-lmvt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/lm-rep-t5psn/vntcsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/t5-lmtcs.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/lm-ec/ec-lm.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/times/ptmr7t.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/ec/dc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/ec/ec.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/tcxtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/txttsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/txbttsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/t1xttsc.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/tcxttsl.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/txbtt.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/tyx.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/t1x.htf
+	tex4ht.dir/texmf/tex4ht/ht-fonts/alias/txfonts/t1xbttsc.htf
+	): fixed monospace handling in htf files.
+
+	* tex4ht-4ht.tex (usepackage.4ht): patched Polyglossia's
+	direction handling.
+
+2019-12-12 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): the test for Polyglossia package was
+	missing.
+
+2019-11-23 Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht): changed way how functions are
+	encoded in MathmML.
+	https://puszcza.gnu.org.ua/bugs/?444
+	* tex4ht-mathml.tex (mathml.4ht): use  element for math text
+	commands again.
+	http://puszcza.gnu.org.ua/bugs/?226
+
+2019-11-22 Michal Hoftich  
+
+	* tex4ht-4ht.tex (colortbl.4ht): fixed support for colors in \rowcolor
+	command.
+
+2019-11-21 Michal Hoftich  
+
+	* tex4ht-html5.tex (html5.4ht): fixed language detection when no main
+	language is specified.
+	* tex4ht-4ht.tex (colortbl.4ht): added support for the
+	\cellcolor command.
+	https://tex.stackexchange.com/a/517434/2891
+
+2019-11-13 Michal Hoftich  
+
+	* tex4ht-4ht.tex (fancyvrb.4ht): fixed spacing issues.
+
+2019-11-07  Karl Berry  
+
+	* tex4ht-cond4ht.tex (cond4ht.4ht, mktex4ht.4ht): copyright years.
+
+2019-11-07 Michal Hoftich  
+
+	* tex4ht-4ht.tex (mdframed.4ht): fixed support for frame titles.
+	Disabled native frame drawing.
+	* tex4ht-4ht.tex (minted.4ht),
+	tex4ht-html4.tex (html4.4ht): fixed support for inline syntax
+	highlighting with the Minted package.
+	* tex4ht-4ht.tex (pythontex.4ht),
+	tex4ht-html4.tex (html4.4ht): fixed support for inline syntax
+	highlighting with the Pythontex package.
+
+2019-11-06 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): fixed test for existence of the
+	\mdfl@linewidth command in the configuration for mdframed.
+
+2019-10-31 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): fix for the xr-hyper package.
+	https://tex.stackexchange.com/a/514398/2891
+
+2019-10-24 Michal Hoftich  
+
+	* tex4ht-4ht.tex (appendix.4ht), 
+	tex4ht-html4.tex (html4.4ht): fixed the appendix package.
+
+2019-10-16 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): fix for basic text formatting
+	commands at the beginning of the paragraph when fontspec is used.
+	http://puszcza.gnu.org.ua/bugs/?441
+	* tex4ht-html4.tex (html4.4ht): changed style for horizontal lines in
+	tables.
+
+2019-10-13 Michal Hoftich  
+
+	* tex4ht-4ht.tex (graphics.4ht): fix for serious error that
+	showed after a recent LaTeX core update -- all pictures were
+	included as EPS images.
+
+2019-10-08 Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): fix for Fancyhdr fancy style.
+
+2019-09-29 Michal Hoftich  
+
+	* tex4ht-cond4ht.tex (cond4ht.4ht, docbook.4ht, html0.4ht, html32.4ht,
+          html4.4ht, mktex4ht.4ht, ooffice.4ht, ooimpress.4ht, tei.4ht):
+	Use \InputIfFileExists to include the package .4ht files. This
+	should support the \input@path.
+	https://tex.stackexchange.com/q/510155/2891
+
+2019-09-23  Karl Berry  
+
+	* tex4ht-html4.tex: copyright 2019.
+
+2019-09-22 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4-math.4ht): fix for tables inside math in the
+	MathJax node.
+	https://tug.org/pipermail/tex4ht/2019q3/002349.html
+
+2019-09-18 Michal Hoftich  
+
+	* tex4ht-4ht.tex (longtable.4ht): fix for the \\* commands
+	inside longtable.
+	https://puszcza.gnu.org.ua/bugs/?437
+
+2019-09-13 Michal Hoftich  
+
+	* tex4ht-4ht.tex (hyperref.4ht, exerquiz.4ht): moved contents of
+	the second argument of \hypertarget outside the generated
+	link, in order to prevent creation of invalid HTML tags.
+
+2019-09-12 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht),
+	tex4ht-ooffice.tex (ooffice.4ht),
+	tex4ht-4ht.tex (graphics.4ht): fixed support for image dimensions,
+	tex4ht will try to explicitly set them when possible.
+	* tex4ht-html4.tex (html4.4ht),
+	tex4ht-ooffice.tex (ooffice.4ht): use the -dusecropbox option for
+	GhostScript in the PDF conversion.
+
+2019-09-10 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht),
+	tex4ht-ooffice.tex (ooffice.4ht): disabled check for the missing
+	bounding box, this prevented use of dimensions specified in
+	\includegraphics[width=...].
+	https://tex.stackexchange.com/q/501648/2891
+
+2019-09-05 Michal Hoftich  
+
+	* tex4ht-4ht.tex (memoir.4ht): fix for footnotes when the Hyperref
+	package is loaded.
+	https://tex.stackexchange.com/q/507129/2891
+
+2019-09-03 Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht), 
+	* tex4ht-html4.tex (html4.4ht): use double quotes for command
+	parameters instead of single quotes. This caused run time error on
+	Windows.
+
+2019-09-01 Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): added support for the EPS images.
+
+2019-08-31 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht),
+	tex4ht-4ht.tex (color.4ht): fix for colors defined with spaces. Like
+	\definecolor{sample}{rgb}{0.2, 0.2, 0.2}
+
+2019-08-30 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): added non breaking space to remove
+	spurious space inserted on every odd line in the algorithmicx
+	environment. https://github.com/michal-h21/make4ht/issues/20
+
+2019-08-26 Michal Hoftich  
+
+	* tex4ht-4ht.tex (latex.4ht),
+	tex4ht-mathml.tex (mathml.4ht): added support for different math space
+	commands.
+
+2019-08-20 Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht),
+	tex4ht-ooffice.tex (ooffice.4ht): enable supported graphics types
+	out of the box.
+	* tex4ht-fonts-modern.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/alias/vntex/arevvn/fav.htf):
+	added CSS declarations for more font styles and weights.
+
+2019-08-16 Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex: fixed support for avant, newcent,
+	bookman and chancery text fonts.
+	https://puszcza.gnu.org.ua/bugs/?433
+
+2019-07-26 Michal Hoftich  
+
+	* tex4ht-4ht.tex (natbib.4ht): added support for \Configure{cite}.
+	https://tex.stackexchange.com/q/501572/2891
+
+2019-07-10  Michal Hoftich  
+
+	* tex4ht-4ht.tex (babel.4ht,polyglossia.4ht): added support for the
+	\arabicdigits macro.
+	https://tex.stackexchange.com/q/495709/2891
+
+2019-07-06  Michal Hoftich  
+
+	* tex4ht-4ht.tex (titling.4ht): added basic support for the
+	titling package. 
+	https://tex.stackexchange.com/a/498887/2891
+
+2019-07-05  Michal Hoftich  
+
+	* tex4ht-docbook.tex (docbook.4ht): added support for scrartcl,
+	scrreprt and memoir classes.
+
+2019-07-03  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): removed invalid attribute
+	table:value-type.
+
+2019-06-24  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): fixed the breaklines option
+	for Minted package.
+
+2019-06-19  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht, polyglossia.4ht),
+	tex4ht-html4.tex (html4.4ht),
+	tex4ht-ooffice.tex (ooffice.4ht): fixed direction support for
+	polyglossia.
+
+2019-06-18  Michal Hoftich  
+
+	* tex4ht-4ht.tex (fontspec-4ht.lua): fix for unicode specials
+	inserted at the beginning of a node list.
+
+2019-06-11  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): don't pass the PDF name to
+	epstopdf, it can fail on Windows.
+
+2019-06-10  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): made the command used for the
+	EPS graphics support configurable.
+
+2019-06-07  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht, imakeidx.4ht): added support for the
+	Imakeidx package.
+
+2019-06-06  Michal Hoftich  
+
+	* tex4ht-4ht.tex (memoir.4ht),
+	tex4ht-html4.tex (html4.4ht): added support for the \book command.
+	* tex4ht-unicode.tex (unicode.4ht): check for "new-accents" option in
+	accents configuration.
+
+2019-05-27  Michal Hoftich  
+
+	* tex4ht-4ht.tex (fontspec-4ht.lua): current LuaTeX needs + sign before
+	direction.
+
+2019-05-22  Michal Hoftich  
+
+	* tex4ht-4ht.tex (bussproofs.4ht),
+	tex4ht-html4.tex (html4.4ht): added support for the bussproofs package.
+	* tex4ht-4ht.tex (proof.4ht),
+	tex4ht-html4.tex (html4.4ht): added support for the proof package.
+
+2019-05-20  Michal Hoftich  
+
+	* tex4ht-4ht.tex (adjustbox.4ht),
+	tex4ht-html4.tex (html4.4ht): added support for the adjustbox package.
+
+2019-05-14  Michal Hoftich  
+
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): redefine the 
+	problematic commands for TOC only in \Configure{writetoc}.
+	https://tug.org/pipermail/tex4ht/2019q2/002262.html
+
+2019-04-24  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex: regenerated Zapf fonts using Htfgen.
+	The old version produced incorrect characters
+
+2019-04-18  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex: restore XCharter fonts.
+	* tex4ht-fonts-libertine.tex: fixed family names for Libertine
+	fonts. This changes the directory where the HTF fonts are generated.
+	* tex4ht-4ht.tex (floatpag.4ht): redefine the
+	\thisfloatpagestyle command to be ignored with tex4ht.
+	https://github.com/michal-h21/tex4ebook/issues/58
+
+2019-04-17  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex: removed EB Garamond and Linux
+	Libertine fonts.
+	* tex4ht-fonts-ebgaramond.tex: added new literate source for EB
+	Garamond HTF files.
+	* tex4ht-fonts-libertine.tex: added literate sources for Libertine HTF
+	files.
+
+2019-04-12  Michal Hoftich  
+
+	* tex4ht-4ht.tex (nameref.4ht): fix for amsart and amsproc \part.
+
+2019-04-10  Michal Hoftich  
+
+	* tex4ht-html5.tex (html5.4ht): added support for HTML5 figures
+	for AMS classes.
+	
+2019-04-09  Michal Hoftich  
+
+	* tex4ht-4ht.tex (color.4ht, xcolor.4ht): fixed issues with color names
+	equal to color schemes.
+	https://tug.org/pipermail/tex4ht/2019q2/002242.html
+
+2019-04-05  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht),
+	tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): added support for $$
+	display math.
+	
+2019-03-25  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): use superscript for a
+	footnote anchor. https://tex.stackexchange.com/q/474000/2891
+
+2019-03-25  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): added support for \reversemarginpar.
+
+2019-03-21  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): changed footnote font size to 80%.
+
+2019-03-19  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): added group around
+	\@textsuperscript reset, in order to support superscripts in footnotes.
+	* Makefile: renamed jurabibib.4ht to jurabib.4ht.
+
+2019-03-18  Michal Hoftich  
+
+	* tex4ht-sty.tex (tex4ht.sty): removed second argument for
+	\BlockElementEnd, it isn't used.
+
+2019-03-16  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): the wrapfix configuration generated
+	nested paragraphs, leading to a non-valid ODF file. 
+
+2019-03-15  Michal Hoftich  
+
+	* tex4ht-html5.tex (html5.4ht): use semantic elements for floats,
+	figures and captions.
+
+	* tex4ht-4ht.tex (memoir.4ht): input definitions for booktabs.
+	https://tex.stackexchange.com/q/479652/2891
+
+2019-03-14  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): fixed image filename parsers.
+	* tex4ht-ooffice.tex (ooffice.4ht): added image mimetypes to the
+	manifest.xml file.
+	* tex4ht-ooffice.tex (ooffice.4ht): correct name of the attribute is
+	text:class-names.
+
+2019-03-13  Michal Hoftich  
+
+	* tex4ht-4ht.tex (biblatex.4ht): fix for non-ascii cite keys
+	with XeLaTeX.
+	* tex4ht-html4.tex (html4.4ht),
+	* tex4ht-javahelp.tex (javahelp.4ht): use white-space:normal in Css.
+	* tex4ht-ooffice.tex (ooffice.4ht): support for PDF image inclusion.
+
+2019-03-12  Michal Hoftich  
+
+	* tex4ht-4ht.tex (biblatex.4ht): fix for Polyglossia package.
+	* tex4ht-ooffice.tex (ooffice.4ht): fixed issues with pictures in
+	subdirectories.
+	* tex4ht-ooffice.tex (ooffice.4ht): set image dimensions on draw:frame
+	element, we got validation error otherwise.
+
+2019-02-19  Michal Hoftich  
+
+	* tex4ht-4ht.tex (cleveref.4ht): added support for reference
+	hyperlinks.
+	https://tex.stackexchange.com/a/475664/2891
+	
+	* tex4ht-4ht.tex (csquotes.4ht): fix for footnotes inside blockquote
+	environment.
+	https://tex.stackexchange.com/a/474605/2891
+	
+2019-01-30  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): horizontally center longtables.
+	https://tex.stackexchange.com/a/472643/2891
+
+2019-01-24  Michal Hoftich  
+
+	* tex4ht-4ht.tex (amsmath.4ht): fixed definition of \xrightarrow and
+	\xleftarrow again.
+	https://tex.stackexchange.com/q/461445/2891
+	* tex4ht-4ht.tex (amsmath.4ht): prevented duplicate definitions of some
+	macros.
+
+2019-01-23  Michal Hoftich  
+
+	* tex4ht-4ht.tex (pstricks.4ht): fixed generated file name in
+	the copyright notice.
+
+2019-01-22  Michal Hoftich  
+
+	* tex4ht-4ht.tex (memoir.4ht): removed loading of table related
+	packages. Recent Memoir doesn't use them anymore.
+
+2019-01-18  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): added configurations for verse.4ht.
+
+2019-01-17  Michal Hoftich  
+
+	* tex4ht-4ht.tex (tuenc-xetex-input.4ht): fixed Unicode range character
+	declaration.
+	* tex4ht-html4.tex (html4.4ht),
+	tex4ht-ooffice.tex (ooffice.4ht): Start a new paragraph after the verse
+	environment.
+	https://tex.stackexchange.com/q/470546/2891
+	* tex4ht-html4.tex (html4.4ht): set zero bottom margin for
+	paragraphs inside the verse environment in order to prevent
+	unwanted blank lines. 
+
+2019-01-16  Michal Hoftich  
+
+	* tex4ht-4ht.tex (memoir.4ht): fixed chapter TOC creation
+	https://tex.stackexchange.com/q/470352/2891
+	* tex4ht-ooffice.tex (ooffice.4ht): renamed quote-trl to
+	quote-rtl, to fix the direction support.
+	https://tex.stackexchange.com/a/470434/2891
+
+2019-01-12  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): fixed Biblatex language handling.
+	https://tex.stackexchange.com/q/469718/2891
+
+2019-01-06  Michal Hoftich  
+
+	* tex4ht-4ht.tex (memoir.4ht): Support for optional argument of
+	\chapter. Thanks to Deimantas Gal\v{c}ius.
+	https://puszcza.gnu.org.ua/bugs/?406
+
+2019-01-05  Michal Hoftich  
+
+	* tex4ht-tei.tex (tei.4ht): added definitions of CSS support commands.
+	* tex4ht-4ht.tex (titlesec.4ht): fixed issues with TOC.
+	* tex4ht-4ht.tex (memoir.4ht): support for \tableofcontents* command.
+
+2018-12-27  Michal Hoftich  
+
+	* tex4ht-svg.tex (svg-option.4ht, html4-svg.4ht): renamed svg.4ht to
+	svg-option.4ht due to name conflict with svg.sty.
+	* tex4ht-options.tex (tex4ht.4ht): use svg-option.4ht instead of
+	svg.4ht.
+	* tex4ht-4ht.tex (svg.4ht): added basic support for the svg.sty
+	package.
+	* Makefile (tex4ht_svg_derived): change names accordingly.
+	* mktex4ht-cnf.tex: \AddFile{9}{svg}.
+	
+	* tex4ht-4ht.tex (tabu.4ht): added basic support for the tabu package.
+	* tex4ht-4ht.tex (scrjura.4ht),
+	tex4ht-html4.tex (html4.4ht): added basic support for the
+	scrjura package.
+
+2018-12-20  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): load dvips driver for
+	graphicx and xcolor packages with XeLaTeX. It fixes PDF support.
+
+2018-12-19  Michal Hoftich  
+
+	* tex4ht-options.tex (tex4ht.4ht): added support for mathml option for
+	docbook and tei formats.
+
+2018-12-18  Karl Berry  
+
+	* tex4ht-4ht.tex (pstricks.4ht): copyright.
+
+2018-12-18  Michal Hoftich  
+
+	* tex4ht-4ht.tex (pstricks.4ht): fixed compilation error.
+	https://tex.stackexchange.com/a/466340/2891
+
+2018-12-10  Michal Hoftich  
+
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): configure
+	environments and 
+	other redefinitions inside \AtBeginDocument.
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): added configurations for
+	eqnarray.
+
+2018-12-04  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4-math.4ht): added "mathjax" option.
+	* tex4ht-mathjax.tex (mathjax-latex-4ht.4ht): new literate
+	source holding definitions for keeping of LaTeX commands in math
+	commands and environments.
+	* tex4ht-mathml.tex (html-mml.4ht): use "mathjax" option also
+	for MathML output.
+	* tex4ht-html4.tex (html4.4ht): use \def instead of \newcommand for
+	\AddFontFace, it causes compilation error.
+	* tex4ht-4ht.tex (latex.4ht): added \NewConfigure{MathjaxSource}.
+
+2018-11-29  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): Added \Configure{AddJs} and
+	\Configure{AddCss} for external script and style sheet inclusion.
+	* tex4ht-html4.tex (html4.4ht): Added support for web fonts.
+	* tex4ht-html4.tex (html4.4ht): Made the GhostScript configuration for
+	actuall gs executable selection for the PDF to png conversion.
+
+2018-11-24  Karl Berry  
+
+	* tex4ht-4ht.tex (amsmath.4ht): .
+
+2018-11-24  Michal Hoftich  
+
+	*  tex4ht-4ht.tex (amsmath.4ht): fixed redefinition of
+	\xrightarrow and \xleftarrow.
+	https://tex.stackexchange.com/q/461445/2891
+
+2018-11-17  Michal Hoftich  
+
+	* tex4ht-4ht.tex (magyar.4ht): fixed support for \aref and \Aref
+	commands.
+
+2018-11-15  Michal Hoftich  
+
+	* tex4ht-4ht.tex (magyar.4ht): added support for \az command in Magyar
+	Babel.
+
+2018-11-09  Michal Hoftich  
+
+	* tex4ht-fonts-4hf.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/mozilla/charset/unicode.4hf):
+	removed many unnecessary mappings from Unicode math to ASCII.
+
+2018-11-08  Michal Hoftich  
+
+	* tex4ht-4ht.tex (czech.4ht): use \quotedblbase instead of
+	custom code for opening quote.
+
+2018-11-06  Karl Berry  
+
+	* tex4ht-4ht.tex (plain.4ht, fontmath.4ht): "copywrite"
+	to include timestamps.
+
+2018-11-06  Michal Hoftich  
+
+	* tex4ht-4ht.tex (plain.4ht, fontmath.4ht): added definition of \ldots 
+
+2018-11-05  Karl Berry  
+
+	* tex4ht-4ht.tex (lettrine.4ht): copyright 2018.
+
+2018-11-05  Michal Hoftich  
+
+	* tex4ht-4ht.tex (lettrine.4ht): use the same keyval namespace as
+	lettrine.sty.
+	https://github.com/michal-h21/tex4ebook/issues/48
+
+2018-10-26  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): added support for TocLink option.
+
+2018-10-25  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): removed space before footnote mark.
+	https://puszcza.gnu.org.ua/bugs/?172
+
+2018-10-20  Michal Hoftich  
+
+	* tex4ht-4ht.tex (book.4ht, report.4ht, article.4ht, amsart.4ht,
+	amsbook.4ht, amsproc.4ht, scrartcl.4ht, scrreprt.4ht, mwbk.4ht,
+	mwart.4ht, mwrep.4ht): disabled patching of the old commands, it
+	seemd like really old weird hack that is not useful anymore.
+	https://tex.stackexchange.com/q/455994/2891
+
+2018-10-15  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): test for presence of image
+	converted from pdf file.
+	added support for conversion of eps files to the current picture
+	format.
+
+2018-10-01  Michal Hoftich  
+
+	* tex4ht-4ht.tex (graphicx.4ht): defined configurations for \rotatebox
+	* tex4ht-html4.tex (html4.4ht): configured \rotatebox
+	https://tex.stackexchange.com/a/453376/2891
+
+2018-09-16  Michal Hoftich  
+
+	* tex4ht-4ht.tex (titlesec.4ht): fix for the runin and display formats.
+	https://tex.stackexchange.com/q/451077/2891
+
+2018-09-08  Michal Hoftich  
+
+	* tex4ht-4ht.tex (biblatex-chicago.4ht): fix for correct punctuation.
+
+2018-09-02  Karl Berry  
+
+	* tex4ht-unicode.tex: copyright.
+
+2018-09-02  Michal Hoftich  
+
+	* tex4ht-unicode.tex (unicode.4ht): fixed definition of
+	\x:unicode to use the same pattern for declaration of Unicode
+	characters as the rest of tex4ht sources.
+
+	* tex4ht-html4.4ht (html4.4ht): added \ttfamily to the listings-init
+	configuration. It fixes some issues when listings are used inside the
+	\Picture*.
+
+2018-08-30  Michal Hoftich  
+
+	* tex4ht-4ht.tex (tuenc-luatex.4ht): added vpack_filter
+	callback, in order to process all characters.
+	* tex4ht-4ht.tex (latex.4ht): load tuenc.def to get definitions
+	for text symbols.
+
+2018-07-31  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): removed   entity from
+	configuration for HBorder, it caused Xtpipes error.
+
+2018-07-04  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): removed all DOCTYPE
+	definitions, they cause validation failure in
+	https://odfvalidator.org/.
+	* tex4ht-ooffice.tex (ooffice-mml.4ht): fixed mime type.
+	Replaced literal math: prefix with \a:mathml in some configurations.
+	Configured \Configure{mathml} to not use a prefix at all.
+	Added correct Doctype for MathML.
+
+2018-07-03  Karl Berry  
+
+	* tex4ht-t4ht.tex (texmf :=): replace %%~ with $TEXMFDIST,
+	not $SELFAUTOPARENT, for consistency with MiKTeX, to help
+	distros, etc.
+	* tex4ht-env.tex (generic note fonts): replace .
+	(unix opening comment): replace ; TEXMFDIST.
+	Omit texmf-dist/ after %%~/ throughout.
+	https://puszcza.gnu.org.ua/bugs/index.php?394
+	https://tug.org/pipermail/tex4ht/2018q2/001975.html
+
+2018-06-30  Karl Berry  
+
+	* tex4ht-c.tex (close tex4ht file): don't try to dereference
+	null pointers if file is not open. (Why it's not open, I don't know.)
+	Report from Nasser Abbasi, 25 May 2018 20:11:20 ff.
+
+2018-06-29  Karl Berry  
+
+	* tex4ht-c.tex (command line options): mention A in option summary
+	as well as text. (And push current *.c to TL.)
+
+2018-06-12  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): fixed support for images included
+	without extension.
+
+2018-06-12  Karl Berry  
+
+	* wripro.tex,
+	* tex4ht-sty.tex: more \writesixteen.
+	(\xeuniuseblock): quote use in doc.
+	* tex4ht-html0.tex,
+	* tex4ht-html32.tex,
+	* tex4ht-info.tex,
+	* tex4ht-options.tex,
+	* tex4ht-tei.tex: copyright 2018.
+
+2018-06-12  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): removed \clearpage patch, it
+	breaks math.
+
+2018-06-11  Michal Hoftich  
+
+	* tex4ht-sty.tex (tex4ht.sty): use higher number for \write,
+	to try even harder to avoid possible conflicts.
+
+2018-06-11  Michal Hoftich  
+
+	* common.tex,
+	* tex4ht-4ht.tex (amsart.4ht, amsbook.4ht, amsproc.4ht, article.4ht,
+	book.4ht, eplain.4ht, glossary.4ht, latex.4ht, mwart.4ht, mwbk.4ht,
+	mwrep.4ht, report.4ht, scrbook.4ht, scrreprt.4ht, showfonts.4ht,
+	th4.4ht),
+	* tex4ht-html0.tex (html0.4ht),
+	* tex4ht-html32.tex (html32.4ht),
+	* tex4ht-html4.tex (html4.4ht, onmouseover.4ht),
+	* tex4ht-info.tex (info4ht.4ht),
+	* tex4ht-options.tex (tex4ht.4ht),
+	* tex4ht-sty.tex (tex4ht.sty),
+	* tex4ht-tei.tex (tei-mml.4ht, tei.4ht): changed \immediate\write16 to
+	\writesixteen macro, and define it.
+
+2018-06-08  Michal Hoftich  
+
+	* tex4ht-4ht.tex (cleveref.4ht): basic support for Cleveref package.
+
+2018-06-06  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): require new page for
+	\clearpage command.
+
+2018-05-19  Michal Hoftich  
+
+	* tex4ht-4ht.tex (tuenc-xetex-input.4ht): new release of l3kernel
+	defined more active chars, it is necessary to undefine them for XeTeX.
+
+2018-05-18  Karl Berry  
+
+	* Makefile (diff_files): diff all $(derived) as a test;
+	use = when := is not necessary; doc tweaks.
+
+2018-05-09  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): removed testing snippet, it
+	contained text in Latin 1 encoding and current LaTeX defaults to
+	utf8, causing a compilation errror.
+
+	* Makefile: removed $(ht_fonts_devdir)/alias/bera/fvmr8r.htf,
+	this file doesn't exist and it caused constant recompilations of
+	font files.
+
+	* tex4ht-4ht.tex (usepackage.4ht): patch XeTeX active characters
+	only in XeTeX compilation.
+
+2018-05-08  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): patch for expl3 package
+	* tex4ht-4ht.tex (usepackage-fontspec.4ht, tuenc-xetex.4ht,
+	tuenc-xetex-input.4ht): fixed XeTeX support.
+
+2018-05-04  Michal Hoftich  
+
+	* tex4ht-html5.tex (html5.4ht): added declarations for
+	additional languages supported by Polyglossia.
+	* tex4ht-sty.tex (tex4ht.sty): load XeTeX encoding support code
+	if XeTeX is active in order to support Unicode characters in the
+	preamble.
+
+2018-05-03  Michal Hoftich  
+
+	* tex4ht-4ht.tex (memoir.4ht): include code which was invoked only for
+	mempatch.sty in memoir.4ht, since mempatch is not used anymore.
+
+2018-05-02  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): disabled package eso-pic, it
+	cannot do anything useful under tex4ht.
+
+2018-04-16  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex 
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/alias/arev/favb8r.htf):
+	fixed reference to the master .htf file.
+
+2018-04-10  Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht): removed \leavevmode from fbox
+	configuration, it produced wrong results in the vertical mode.
+
+	* tex4ht-4ht.tex (braket.4ht): patched the braket package, it
+	produced wrong MathML code.
+
+2018-04-06  Michal Hoftich  
+
+	* tex4ht-4ht.tex (biblatex.4ht): use \pend:defI for patching of
+	\blx@bibliography in the current Biblatex version.N
+	Report from Anonymous,
+	http://tug.org/pipermail/tex4ht/2018q2/001929.html
+
+2018-03-29  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/alias/t1fonts/XCharter*.htf):
+	Support for XCharter fonts.
+
+2018-03-28  Michal Hoftich  
+
+	* tex4ht-sty.tex (tex4ht.sty): use \long for definition of
+	\IfFileExists, because it may contain blank lines in its branches.
+	https://tex.stackexchange.com/q/423725/2891
+
+2018-03-27  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/bera/fvmr8r.htf):
+	Monospaced Bera font.
+	https://puszcza.gnu.org.ua/bugs/?390
+
+2018-02-23  Karl Berry  
+
+	* tex4ht-mathml.tex: copyright 2018.
+
+2018-02-22  Michal Hoftich  
+
+	* tex4ht-mathml.tex (html-mml.4ht): disabled ht-fonts for basic
+	font formatting commands also in MathML.
+	* tex4ht-mathml.tex (mathml.4ht, html-mml.4ht): print 
+	elements when text formatting commands are used.
+	https://tex.stackexchange.com/a/416613/2891
+
+2018-02-20  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): disabled ht-fonts for basic font
+	formatting commands.
+
+2018-02-19  Karl Berry  
+
+	* tex4ht-fonts-noncjk.tex,
+	* Makefile (tex4ht_fonts_noncjk_derived): use /alias/bera/,
+	since it is not an Adobe font.
+
+2018-02-15  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/alias/adobe/bera/fve*.htf): Basic
+	support for Bera fonts.
+	https://tex.stackexchange.com/q/415418/2891
+
+2018-02-07  Michal Hoftich  
+
+	* tex4ht-sty.tex (tex4ht.sty): new commands for semantic elements.
+	https://puszcza.gnu.org.ua/bugs/index.php?387
+	
+2018-01-31  Karl Berry  
+
+	* tex4ht-html5.tex: copyright.
+
+2018-01-31  Michal Hoftich  
+
+	* tex4ht-html5.tex (html5.4ht): added meta tags for source file,
+	date and instructions for mobile devices.
+
+2018-01-15  Karl Berry  
+
+	* Makefile (tex4ht_fonts_modern_derived): add lm-ts1.htf.
+	* tex4ht-fonts-modern.tex (lm-ts1-LM-05): copyright.
+
+2018-01-15  Michal Hoftich  
+
+	* tex4ht-fonts-modern.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/lm-ts1.htf): use
+	ASCII apostrophe (x0027) for the \textquotesingle symbol.
+	http://tug.org/pipermail/tex4ht/2018q1/001873.html
+
+2018-01-12  Karl Berry  
+
+	* tex4ht-html4.tex,
+	* tex4ht-ooffice.tex: it's 2018.
+
+2017-01-11  Michal Hoftich  
+
+	* tex4ht-4ht.tex (latex.4ht),
+	* tex4ht-ooffice.tex (ooffice.4ht),
+	* tex4ht-html4.tex (html4.4ht): fixed support for \textsubscript and
+	\textsuperscript.
+	http://tug.org/pipermail/tex4ht/2018q1/001870.html
+
+2017-01-04  Michal Hoftich  
+
+	* tex4ht-4ht.tex (biblatex.4ht): removed macros for older
+	Biblatex versions support.
+	https://tex.stackexchange.com/q/408742/2891
+	http://puszcza.gnu.org.ua/bugs/?376
+
+2017-12-13  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): use hexadecimal entity for the
+	asterism.
+
+2017-12-09  Michal Hoftich  
+
+	* Makefile: compile the tex4ht-html4.tex file twice in order to
+	get all configurations included.
+
+2017-12-08  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht),
+	* tex4ht-4ht.tex (sectionbreak.4ht): support for sectionbreak package.
+	* Makefile: request compilation of tex4ht-cond4ht.tex before 
+	tex4ht-4ht.tex. 
+	
+2017-12-06  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht), 
+	* tex4ht-4ht.tex (animate.4ht, usepackage.4ht): added support for the
+	animate package.
+
+2017-11-23  Michal Hoftich  
+
+	* tex4ht-4ht.tex (nameref.4ht): add label for equation if amsmath
+	is not used. Report from Philippe Spiesser on tex-live list,
+	http://tug.org/pipermail/tex-live/2017-November/040809.html.
+
+2017-11-16  Michal Hoftich  
+
+	* tex4ht-4ht.tex (biblatex.4ht): fixed version checking
+
+2017-11-12  Karl Berry  
+
+	* Makefile (update-env): no -platform suffix.
+	* Makefile (update-env): separate out target.
+	(update): call it.
+
+	* tex4ht-docbook.tex: copyright.
+
+2017-11-11  Michal Hoftich  
+
+	* tex4ht-docbook.tex (docbook.4ht): added support for the quote
+	environment.
+
+2017-11-10  Michal Hoftich  
+
+	* tex4ht-env.tex (tex4ht.env): use the --exact option for dvisvgm, it
+	prevents wrong image clipping in some cases.
+
+2017-10-25  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): define dummy vallue for
+	\Gin@page when it is undefined.
+
+2017-10-22  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): added configurations for
+	frenchb spaces.
+	* tex4ht-ooffice.tex (ooffice-mml.4ht): Changed definition of
+	\:nbsp macro to produce actual non-breaking space.
+	http://tug.org/pipermail/tex4ht/2017q4/001852.html
+
+2017-10-21  Karl Berry  
+
+	* tex4ht-fonts-noncjk.tex
+     (ctib -> tex4ht.dir/texmf/tex4ht/ht-fonts/iso8859/1/tibetan/ctib.htf,
+  ctib-uni -> tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/tibetan/ctib.htf):
+        correct |jobname to `jobname for this context.
+
+	* tex4ht-fonts-noncjk.tex
+     (lacc-uni -> tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lh/lh-t2a/lacc.htf),
+	* tex4ht-4ht.tex (graphicx.4ht): copyright.
+
+2017-10-18  Michal Hoftich  
+
+	* tex4ht-4ht.tex (graphicx.4ht): add xbb support for pdf and svg.
+	* tex4ht-html4.tex (html4.4ht): use pdf2svg for pdf to svg
+	conversion, the pdf images will be converted to png by default,
+	use "svg" option to request the svg output.
+
+2017-10-16  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): added support for TikZ
+	externalization.
+	http://puszcza.gnu.org.ua/bugs/?371
+	* tex4ht-html4.tex (html4.4ht): added support for pdf image inclusion.
+
+2017-10-01  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex 
+        (tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/labi.htf,
+         tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/latc.htf,
+         tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/lait.htf):
+	new Cyrillic fonts.
+	* tex4ht-fonts-noncjk.tex 
+        (tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lh/lh-t2a/lacc.htf):
+        fixed wrong character.
+        https://puszcza.gnu.org.ua/bugs/index.php?370
+	
+2017-09-19  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex 
+        (tex4ht.dir/texmf/tex4ht/ht-fonts/alias/ec/ecxc.htf,
+         tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lh/lh-t2a/laxc.htf):
+	fixed some small-caps fonts.
+
+2017-09-09  Karl Berry  
+
+	* tex4ht-mathml.tex (html-mml.4ht): copyright.
+	https://tex.stackexchange.com/q/400629/2891
+
+2017-09-02  Michal Hoftich  
+
+	* tex4ht-4ht.tex (authblk.4ht): added basic support for authblk
+	package.
+
+2017-08-23  Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht): print columnlines attribute only
+	when it is not empty.
+
+2017-08-14  Vincent Belaiche  
+
+	* tex4ht-sty.tex: \openin ./tex4ht.sty, to be sure we get the
+	development version.
+	https://puszcza.gnu.org.ua/bugs/?366
+
+2017-08-01  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): use `mk4ht xhtex` command with
+	onmouseover option.
+	https://tex.stackexchange.com/q/384371/2891
+
+2017-05-19  Michal Hoftich  
+
+	* tex4ht-mathml.tex (html-mml.4ht): configuration for array caused
+	invalid MathML.
+	https://tex.stackexchange.com/q/370450/2891
+	https://puszcza.gnu.org.ua/bugs/?368
+
+2017-05-15  Michal Hoftich  
+
+	* tex4ht-info-svg.tex (infosvg.4ht): fixed compilation error.
+
+2017-05-14  Karl Berry  
+
+	* tex4ht-ooffice.tex,
+	* tex4ht-info.tex,
+	* tex4ht-info-html4.tex,
+	* tex4ht-info-mml.tex,
+	* tex4ht-info-svg.tex: copyright 2017.
+
+2017-05-10  Michal Hoftich  
+
+	* tex4ht-ooffice.tex (ooffice.4ht): Added basic support for mdwlist
+	environments enumerate* and itemize*
+
+2017-05-10  Michal Hoftich  
+
+	* mktex4ht-cnf.tex: uncommented mktex4ht configuration.
+	* tex4ht-info.tex (info4ht.4ht),
+	* tex4ht-info-html4.tex (infoht4.4ht),
+	* tex4ht-info-mml.tex (infomml.4ht,
+	* tex4ht-info-svg.tex (infosvg.4ht): Added definition of \CleanComment 
+	macro to each of these files, because it needs current filename in 
+	it's definition. Generated info files, except infosvg.4ht, should work
+	now.
+	* Makefile: removed mktex4ht.4ht from common dependencies.
+
+2017-05-09  Karl Berry  
+
+	* tex4ht-info-svg.tex (infosvg.4ht),
+	tex4ht-svg.tex (svg.4ht),
+	tex4ht-fonts-noncjk.tex 
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/misc/SkakNew.htf): copyright.
+
+2017-05-05  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/misc/SkakNew.htf):
+	Support for chess figures.
+	* tex4ht-4ht.tex (skak.4ht),
+	* tex4ht-html (html4.4ht): added support for skak package 
+	chessboards.
+	* tex4ht-svg.tex (svg.4ht, html4-svg.4ht),
+	* tex4ht-options.tex (tex4ht.4ht): introduced new option,
+	`svg-inline`, which holds the original meaning of `svg` option.
+	`svg` option now doesn't include the image in the document text.
+	* tex4ht-info-svg.tex (infosvg.4ht): added information about 
+	various svg options.
+
+2017-05-04  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): round dimensions and remove 
+	``pt'' units from image dimensions.
+	* tex4ht-html4.tex (html4.4ht): Require horizontal stacking 
+	of subfigures.
+
+2017-05-03  Michal Hoftich  
+
+	* tex4ht-4ht.tex (usepackage.4ht): added basic support for
+	xeCJK package, fixed one issue with biblatex.
+	Details:  https://tex.stackexchange.com/a/367968/2891 
+
+2017-04-28  Karl Berry  
+
+	* Makefile (common): include mktex4ht.4ht and tex4ht.sty.
+	(common_no_cond_sty): new variable without either of those.
+	(tex4ht_cond4ht_derived,tex4ht_sty_derived): use
+	  $(common_no_cond_sty) instead of $(common). 
+	(tex4ht_4ht_derived): depend on cond4ht.4ht.
+	
+	* mktex4ht-cnf.tex: copyright 2017.
+
+2017-04-28  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): fixed error which happened when 
+	xcolor haven't been loaded in the document. Fixed line widths.
+	Start paragraph after mdframed environment.
+	https://puszcza.gnu.org.ua/bugs/?217
+
+2017-04-27  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): use CSS instead of rules="groups"
+	attribute for vertical lines in tables.
+	* tex4ht-4ht.tex (xcolor.4ht): new command \get:xcolorcss, for 
+	conversion from xcolor color spec to CSS colors.
+	* tex4ht-4ht.tex (mdframed.4ht),
+	* tex4ht-html4.tex (html4.4ht): added basic support for mdframed
+	package. https://puszcza.gnu.org.ua/bugs/?217
+
+2017-04-22  Karl Berry  
+
+	* tex4ht-4ht.tex (caption.4ht): copyright.
+	(framed.4ht): no copyright 2016.
+
+2017-04-20  Michal Hoftich  
+
+	* tex4ht-4ht.tex (listings.4ht): added custom configuration for 
+	\lst@makecaption, in order to get correct cross-references.
+
+2017-04-18  Michal Hoftich  
+
+	* Makefile: added info4ht.4ht to the list of derived files.
+	* tex4ht-4ht.tex (framed.4ht),
+	* tex4ht-html4.tex (html4.4ht),
+	* mktex4ht-cnf.tex: added basic support for Framed package,
+	https://puszcza.gnu.org.ua/bugs/?217.
+
+	* tex4ht-4ht.tex (caption.4ht): Added missing C to the macro name.
+
+2017-04-12  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/tibetan/ctib.htf):
+	one entity missed closing semicolon.
+
+2017-04-11  Karl Berry  
+
+	* Makefile (tex4ht_fonts_noncjk_derived): add tibetan/ctib.htf.
+	* tex4ht-mathml.tex (mathml.4ht),
+	* tex4ht-options.tex (tex4ht.4ht): copyright 2017.
+
+2017-04-10  Michal Hoftich  
+
+	* tex4ht-options.tex (tex4ht.4ht): Don't load MathML by default
+	for HTML5.
+
+2017-04-07  Michal Hoftich  
+
+	* tex4ht-fonts-noncjk.tex
+	(tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/tibetan/ctib.htf):
+	fixed XML entities in ctib-uni block.
+	* tex4ht-html4.tex (html4.4ht): added Unicode codes for some combined
+	accents.
+	* tex4ht-4ht.tex (usepackage-fontspec.4ht): don't use
+	"new-accents" option, pass "no-math" option to Fontspec instead.
+
+2017-04-06  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): Round dimensions and remove units
+	in width and height attributes in  elements.
+
+2017-04-05  Michal Hoftich  
+
+	* tex4ht-mathml.tex (mathml.4ht): added \EndPauseMathClass to
+	\Configure{mathbf}.
+	http://tex.stackexchange.com/q/362178/2891
+
+2017-04-04  Michal Hoftich  
+
+	* tex4ht-html4.tex (html4.4ht): changed some deprecated 
+ elements to
. + +2017-04-01 Karl Berry + + * tex4ht-html5.tex: copyright 2017. + +2017-03-30 Michal Hoftich + + * tex4ht-html5.tex (html5.4ht): Added support for xml:lang and lang + attributes in element. + Added support for xmlns in tag. + Removed cellspacing and cellpading attributes from tabular + configuration. + +2017-03-30 Michal Hoftich + + * tex4ht-html4.tex (html4-math.4ht): Configure AMS math align-type + environments to start a new paragraph. + +2017-03-28 Karl Berry + + * tex4ht-html4.tex (html4-math.4ht): copyright 2017. + +2017-03-28 Michal Hoftich + + * tex4ht-html4.tex (html4-math.4ht): The CSS code for align equations + declared width 100% and margin-left:5%. This means that the + equation numbers were moved by 5% out of the window. The width + should be 95%, so the sum with margin-left is 100%. + +2017-03-22 Karl Berry + + * tex4ht-fonts-cjk.tex, + * tex4ht-fonts-cjk-utf8.tex, + * tex4ht-docbook-xtpipes.tex, + * tex4ht-4ht.tex: "The" Current Maintainer, not "This". + + * tex4ht-html4.tex (html4): copyright 2017. + + * tex4ht-4ht.tex (greek.4ht, russianb.4ht): copyright cleanup. + + (\<<<): add h, was + "\<<<", in order to avoid this error: + ! \OutputCode\usepackage-fontspec without \Code\usepackage-fontspec. + +2017-03-20 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht): check for new-accents option in + configuration for \bbl@umlauta accent. + * tex4ht-html4.tex (html4.4ht): prevent including of + html4-russian-accents.4ht with XeLaTeX and LuaLaTeX. + * tex4ht-4ht.tex (russianb.4ht): prevent usage of OpenType fonts with + LuaLaTX and XeLaTeX, load definitions for Cyrillic characters + with XeLaTeX. + * tex4ht-4ht.tex (greek.4ht): prevent usage of OpenType fonts, load + definitions of Greek characters with XeLaTeX. + * tex4ht-4ht.tex (fontspec-4ht.lua): Added ec-lm as supported font. + +2017-03-20 Karl Berry + + * Makefile (tex4ht_fonts_4hf): use basename instead of make features. + (install-unicode-4hf): new target to install all unicode.4hf files. + (diff-ht-fonts): new target to compare dev vs. installed ht-fonts. + New variables to support the above. + * tex4ht-fonts-4hf.tex: use \input common. + (TeX4ht copyright): remove, since it was only used in unicode.4hf + files and it turns out they don't allow comments. + (unicode.4hf): in all the many encodings, remove leading comments. + +2017-03-16 Michal Hoftich + + * Makefile (tex4ht_fonts_4hf_derived): use dvilualatex for compilation. + +2017-03-15 Michal Hoftich + + * Makefile (tex4ht_fonts_4hf_derived): support tex4ht-fonts-4hf.tex. + * tex4ht-fonts-4hf.tex + (tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/charset/unicode.4hf) + and others: request xml entity for single quote, removed xml + entity for ` character. + +2017-03-13 Karl Berry + + * Makefile (tex4ht_4ht_derived): spread out by first letter. + + * tex4ht-4ht.tex (graphics.4ht): copyright. + +2017-03-11 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht), + * tex4ht-4ht.tex (graphics.4ht): Fixed support for images with spaces + in their filenames. + +2017-03-11 Michal Hoftich + + * tex4ht-4ht.tex (memoir.4ht): redefinition for \legend command + * tex4ht-html4.tex (html4.4ht): default configuration for \legend + +2017-02-09 Michal Hoftich + + * tex4ht-env.tex (tex4ht.env-unix): use one version of htf paths for + both Unix and Windows. + +2017-02-04 Michal Hoftich + + * tex4ht-env.tex (tex4ht.env-win32): replaced backslashes with normal + slashes in HTF paths on Windows + +2017-02-03 Michal Hoftich + + * tex4ht-env.tex (tex4ht.env-win32): fixed file paths on Windows + +2017-02-01 Michal Hoftich + + * tex4ht-env.tex (tex4ht.env-unix, tex4ht.env-win32): + Use dvisvgm for SVG production and dvipng for bitmap production by + default. + +2017-01-31 Michal Hoftich + + * tex4ht-4ht.tex (usepackage.4ht, + usepackage-fontspec.4ht): New configurations for Fontspec package, + redefining user commands instead of internal macros. Hopefully + it will fix LuaLaTeX and XeLaTeX issues. + http://puszcza.gnu.org.ua/bugs/?352 + +2017-01-29 Karl Berry + + * common-info.tex, + * common.tex, + * tex4ht-fonts-4hf.tex, + * tex4ht-info-html4.tex, + * tex4ht-info-javahelp.tex, + * tex4ht-info-mml.tex, + * tex4ht-info.tex: copyright cleanups. + +2017-01-24 Karl Berry + + * tex4ht-4ht.tex (tuenc-luatex.4ht, tuenc-xetex.4ht, + fontspec-luatex.4ht, fontspec-xetex.4ht, + fontspec-4ht.lua, fontspec.4ht): + use | and direct copyright lines + for these new files, instead of various macro invocations. + +2017-01-24 Michal Hoftich + + * tex4ht-4ht.tex (tuenc-luatex.4ht, tuenc-xetex.4ht, + fontspec-luatex.4ht, fontspec-xetex.4ht, latex.4ht): Introduced + basic Unicode handling for LuaLaTeX and XeLaTeX. It is based on + code which was originally used in Fontspec support. + (Plus copyright tweaks from Karl.) + https://puszcza.gnu.org.ua/bugs/?352 + +2017-01-23 Michal Hoftich + + * tex4ht-4ht.tex (latex.4ht): prevent the selection of TU font + encoding, because it loads OpenType fonts. Use OT1 instead. + https://puszcza.gnu.org.ua/bugs/?352 + +2016-12-26 Michal Hoftich + + * tex4ht-4ht.tex (nameref.4ht): changed \:tempc to \:tempams, in order + to avoid collision with pic-align option + http://tex.stackexchange.com/q/345689/2891 + +2016-12-21 Karl Berry + + * tex4ht-4ht.tex (xr.4ht, xr-hyper.4ht): copyrights. + +2016-12-20 Michal Hoftich + + * tex4ht-4ht.tex (usepackage.4ht, xr.4ht, xr-hyper.4ht): fix support + for additional optional argument of \externaldocument, + and support for hyperref's label in the cross references. + http://puszcza.gnu.org.ua/bugs/?349> + +2016-12-18 Karl Berry + + * tex4ht-4ht.tex (nameref.4ht): copyright. + +2016-12-16 Michal Hoftich + + * tex4ht-4ht.tex (nameref.4ht): Fixed support for empty nameref + types in labels, added support for asmath environments. + https://puszcza.gnu.org.ua/bugs/?348 + +2016-12-16 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht): Added support for inclusion of + SVG images + https://puszcza.gnu.org.ua/bugs/?348 + +2016-12-15 Michal Hoftich + + * tex4ht-4ht.tex (listings.4ht): Fixed support for mathescape + option + https://puszcza.gnu.org.ua/bugs/?347> + +2016-12-14 Karl Berry + + * tex4ht-4ht.tex (xcolor.4ht): copyright. + +2016-12-14 Michal Hoftich + + * tex4ht-4ht.tex (colortbl.4ht): Added support for \color + command in table column specifivation. + * tex4ht-4ht.tex (xcolor.4ht): Added support for colors + defined by the user. + https://puszcza.gnu.org.ua/bugs/?346 + +2016-12-13 Michal Hoftich + + * tex4ht-4ht.tex (colortbl.4ht): Use xcolor.sty commands + to convert color specifications to CSS. + https://puszcza.gnu.org.ua/bugs/?346 + +2016-12-11 Karl Berry + + * tex4ht-fonts-noncjk.tex ([g]version 2..18): eliminate + right-justified %'s, typos. + + * tex4ht-fonts-modern.tex (rm-lm): copyright for + tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/rm-lm.htf. + +2016-12-11 Michal Hoftich + + * tex4ht-fonts-modern.tex + (tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/lm/rm-lm.htf, + tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/rm-lmt.htf, + tex4ht.dir/texmf/tex4ht/ht-fonts/alias/lm/rm-lmvt.htf): + Typewriter lmodern fonts in OT1 encoding containded wrong + backslashes and other characters. + +2016-12-10 Michal Hoftich + + * tex4ht-4ht.tex (usepackage.4ht): There was catcode issue with + `:` character, it was 11 instead of 12. + * tex4ht-4ht.tex (fontspec-4ht.lua): There could be Lua error caused + by some fonts. + https://puszcza.gnu.org.ua/bugs/?123 + +2016-12-09 Karl Berry + + * tex4ht-env.tex: copyright 2016. + + * tex4ht-4ht.tex (usepackage.4ht): | + not copywrite, so the full notice is inserted. + +2016-12-08 Karl Berry + + * tex4ht-cond4ht.tex (mktex4ht.4ht): copyright 2016. + +2016-12-07 Michal Hoftich + + * tex4ht-env.tex (tex4ht.env): moved default picture conversion + scripts below alternative scripts, in order to enable their + selection with -c option of t4ht. + https://puszcza.gnu.org.ua/bugs/?343 + http://tug.org/pipermail/tex4ht/2016q4/001689.html + +2016-12-04 Michal Hoftich + + * tex4ht-4ht.tex (fontspec.4ht, fontspec-luatex.4ht, + fontspec-xetex.4ht): moved luatex and xetex definitions for + fontspec to fontspec-xetex.4ht and fontspec-luatex.4ht. + * mktex4ht-cnf.tex (mktex4ht.4ht): added fontspec-luatex. + +2016-12-03 Karl Berry + + * .svnignore (fontspec-4ht.lua): add. + + * Makefile (tex4ht_4ht_derived), + * mktex4ht-cnf.tex, + * tex4ht-4ht.tex: rename xetex-fontspec.4ht to fontspec-xetex.4ht. + + * tex4ht-4ht.tex (fontspec.4ht, fontspec-4ht.lua, fontspec-xetex.4ht), + * mktex4ht-cnf.tex: copyrights, svn:keywords, comments. + +2016-12-02 Karl Berry + + * tex4ht-4ht.tex (multirow.4ht): copyright. + +2016-12-02 Michal Hoftich + + * tex4ht-4ht.tex (multirow.4ht): fixed support for package multirow. + https://puszcza.gnu.org.ua/bugs/index.php?342 + +2016-11-27 Michal Hoftich + + * mktex4ht-cnf.tex: added requests for fontspec + * Makefile: added mktex4ht-cnf.tex as dependency for tex4ht-cond4ht.tex + +2016-11-27 Michal Hoftich + + * tex4ht-4ht.tex (usepackage.4ht, fontspec.4ht, fontspec-4ht.lua, + fontspec-xetex.4ht): Added support for Fontspec package, for both + LuaLaTeX and XeLaTeX + * tex4ht-html4.tex: Configuration for basic font commands when + fontspec is used. + https://puszcza.gnu.org.ua/bugs/?123 + +2016-11-25 Karl Berry + + * tex4ht-html4.tex, + * tex4ht-options.tex: copyright 2016, svn:keywords. + +2016-11-25 Michal Hoftich + + * tex4ht-html5.tex (html5.4ht): basic html5 template + * tex4ht-options.tex (tex4ht.4ht): added html5 option + * Makefile: generate html5 files + https://puszcza.gnu.org.ua/bugs/index.php?341 + +2016-11-23 Karl Berry + + * tex4ht-mathml.tex: Copyright 2016. + +2016-11-22 Michal Hoftich + + Towards http://puszcza.gnu.org.ua/bugs/?340. + + * tex4ht-mathml.tex (mathml.4ht): added \a:mathml commands + before some attributes where it was missing. This ensures use of + mathml: prefix if it is used in the output format. + + * tex4ht-ooffice.tex (ooffice-mml.4ht): Removed configurations + of 'left' and 'right', default configurations from mathml.4ht + should be used instead. + +2016-11-21 Michal Hoftich + + * tex4ht-mathml.tex (mathml.4ht): added \let\columnlines\empty + before use of \columnlines in \Configure{halignTB<>}. It caused + compilation error in ooffice mode. + +2016-10-05 Deimantas Galcius + + * Makefile (d) Experimental target "d" for dependency/derived files. + * Makefile (tohtmldir) move html files to html.dir + * Makefile (toderivedir) move derived files to derived.dir + * extra-bin/fls2d, extra-bin/flslg2d: scripts to read *fls/*.lg + and output *.d file + +2016-10-03 Deimantas Galcius + + * Makefile (PATH): set PATH to look into $extra_bin and $ht_bin; + TeXLive 2016 (DVD) does not ship with 'xhlatex', so we find it in + $ht_bin. + * Makefile (tex_options): set '-recorder' option to $tex_opts. We + want to know deps/derived files. + * Makefile (clean): add '*.fls' for removal + * Makefile (ht tex): replace with $(HTTEX) which respects $tex_opts + * Makefile ("-d./" in htlatex calls): replace "-d./" with "". + "-d./" means move generated files to current folder, which does + not make sense. + * Makefile (html4): Amend $(tex4ht_html4_derived) rule. No + dependency on html4.4ht-released. + * Remove (html4.4-released): Delete file. (hopefully) not needed + any more. + * Makefile: change $(dev_null) to "". + +2016-09-29 Deimantas Galcius + + * common-info.tex (CleanComment): fix CleanComment to not + raise latex run error on first pass. + * mktex4ht-cnf.tex (new file): copy of mktex4ht.cnf. The file + should not be generated by literate sources + * tex4ht-4ht.tex (mktex4ht.4ht,mktex4ht.cnf): remove mktex4ht.4ht + generation. Remove mktex4ht.cnf processing. Define macro + \Skipmkfilename. + * tex4ht-cond4ht.cnf (ConfigFiles,FirstPass): \ConfigFiles set to + a new file mktex4ht-cnf.tex; skip processing lit entries on + FirstPass; set a hook \Skipmkfilename for skipping mktex4ht.4ht + generation from tex4ht-4ht.tex + * tex4ht-info-html4.tex: remove code duplication; input + common-info.tex and common.tex; this also fixes latex run error as + in common-info.tex. + * tex4ht-info-javahelp.tex: remove code duplication; ensure to load + local mktex4ht.4ht + * tex4ht-info-mml.tex: ensure to load local mktex4ht.4ht + * tex4ht-info.tex: remove code duplication + +2016-09-20 Karl Berry + + * tex4ht-c.tex (scan postamble): allow any value <= the xdv byte, + instead of requiring equality. That way the same tex4ht binary + can be used with different versions of XeTeX. As of + XeTeX 3.14159265-2.6-0.99996 (TeX Live 2016), the id value is 7. + (version xdv): update value to 10. + +2016-08-10 Michal Hoftich + + * tex4ht-4ht.tex (latex.4ht): use \mathunderscore in math mode for + \_ macro. + * tex4ht-mathml.tex (mathml.4ht): fix for mathml. + https://puszcza.gnu.org.ua/bugs/?337 + +2016-07-19 Karl Berry + + * tex4ht-4ht.tex (lettrine.4ht) <\@lettrine>: use lettrine-* + for the + + * Makefile (dev_null): new macro for + + * tex4ht-sty.tex (tex4ht.sty): make macros patched by \pend:def + and similar patching commands \long, in order to correctly support + macros defined with \newcommand. + . + +2016-07-17 Karl Berry + + * tex4ht-4ht.tex (\CodeLineNo): disable again since Michal's + compilation fails. + +2016-06-05 Karl Berry + + * ProTex.sty, + * AlProTex.sty: symlinks to ../protex, so dev versions will be used. + * Makefile (common): depend on them. + + * tex4ht-c.tex, + * tex4ht-4ht.tex: enable new protex option CodeLineNo to generate + #line directives in the .c files, and %line comments in *.4ht. + http://puszcza.gnu.org.ua/bugs/?136 + +2016-07-04 Karl Berry + + * tex4ht-html-speech.tex, + * tex4ht-jsml.tex, + * tex4ht-mathltx.tex: update copyrights. + * Makefile (diff-all): --ignore-matching-lines for boilerplate. + +2016-07-04 Karl Berry + + * tex4ht-mkht.tex: don't hardwire c: paths. + +2016-07-03 Karl Berry + + * tex4ht-4ht.tex, + * tex4ht-auto-script.tex, + * tex4ht-env.tex, + * tex4ht-sty.tex: remove nonascii chars in comments. + +2016-07-02 Karl Berry + + * tex4ht-4ht.tex (lettrine.4ht): delete the .lettrine-Agrave css + with literal Agraves, to avoid encoding agony. Update copyright. + +2016-07-01 Karl Berry + + * tex4ht-sty.tex (tex4ht.sty), + * tex4ht-4ht.tex (usepackage.4ht): unify copyright notices. + +2016-06-30 Karl Berry + + * tex4ht-4ht.tex (latex.4ht): unify copyright notice. + +2016-06-30 Michal Hoftich + + * tex4ht-4ht.tex (latex.4ht): added \hbox{} to active + hyphen in order to prevent ligatures in environments defined + with \ScriptEnv. + + +2016-06-16 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht): added \par command to sectioning + commands, text can be outside paragraphs otherwise. + + +2016-06-16 Michal Hoftich + + * tex4ht-4ht.tex (html4.4ht): Replaced non-breaking Unicode space with + normal spaces. + + +2016-06-16 Michal Hoftich + + * tex4ht-4ht.tex: Fixed lstinline configuration - spurious \aftergroup. + +2016-06-15 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht): Fixed configurations for + algorithmic package - indentation and line number align. + + +2016-06-15 Michal Hoftich + + * tex4ht-4ht.tex, + * tex4ht-misc.tex: move definitions for lettrine to tex4ht-4ht.tex. + * Makefile: don't compile tex4ht-misc.tex, it causes overwritting of + mktex4ht.cnf. + +2016-06-10 Michal Hoftich + + * tex4ht-html4.tex, + * tex4ht-html-speech.tex, + * tex4ht-html32.tex, + * tex4ht-ooffice.tex: remove explicit two-space indentation in + fancyvrb configuration; found by deimi. + + +2016-06-09 Michal Hoftich + + * tex4ht-sty.tex (tex4ht.sty): added \:dontusepackage macro for + package loading preventing. Changed \@onefilewithoptions + patching, second argument is read and saved. + * tex4ht-4ht.tex (usepackage.4ht): added savetrees.sty to list + of packages detected upon their loading. It is blocked from + loading, as it causes tex4ht to fail. + * Makefile: add derived files. + https://puszcza.gnu.org.ua/bugs/?309 + +2016-05-24 Michal Hoftich + + * tex4ht-4ht.tex (geometry.4ht): new file to turn off frame-drawing. + + * Makefile (tex4ht_4ht_derived): add it. + +2016-05-22 Karl Berry + + * tex4ht-c.tex (search_file): return NULL rather than FALSE + to placate MiKTeX. Report from Mojca, + https://sourceforge.net/p/miktex/bugs/2488. + +2016-03-31 Karl Berry + + * Makefile (tex4ht_info_html4_derived, tex4ht_info_javahelp_derived, + tex4ht_misc_derived): new variables, targets. + + * tex4ht-docbook.tex, + * tex4ht-html-speech.tex, + * tex4ht-html0.tex, + * tex4ht-html32.tex, + * tex4ht-ooffice.tex, + * tex4ht-tei.tex: likewise make timestamps (\:today) in output + off by default, enabled with timestamp option. In css files + and other contexts where an option is inconvenient, just remove them. + + * tex4ht-javahelp.tex, + * tex4ht-docbook.tex: reference tug rather than ohio-state.edu + web site. + +2016-03-31 Michal Hoftich + + * tex4ht-html4.tex (html4.4ht): remove timestamp from the HTML4 + output. It can be enabled with ``timestamp'' option. + https://puszcza.gnu.org.ua/bugs/index.php?277 + +2016-03-16 Karl Berry + + * Makefile (tex4ht_4ht_derived): add biblatex.4ht. + +2016-03-16 Michal Hoftich + + * tex4ht-4ht.tex (biblatex.4ht): support for biblatex 3.0. + http://puszcza.gnu.org.ua/bugs/?273> + +2016-02-01 Michal Hoftich + + * tex4ht-fonts-noncjk.tex (pcrro8r.htf): Fixed some wrong characters. + http://puszcza.gnu.org.ua/bugs/?271 + +2016-01-12 Michal Hoftich + + * tex4ht-4ht.tex (hyperref.4ht): Added support for \nameref* command, + http://tex.stackexchange.com/q/285339/2891, + http://puszcza.gnu.org.ua/bugs/?269. + +2016-01-04 Michal Hoftich + + * tex4ht-4ht.tex (biblatex.4ht): Fix for version checking + +2015-12-19 Michal Hoftich + + * tex4ht-ooffice.tex (il2-pl.tcx url encoder): Fix the file + encoding. It is related to a earlier bug in tex4ht-html4.tex, + where input encoding error was reported with package babel when + LuaLaTeX was used for compilation. Just + \input{html4-l2-url.4ht}. + Report from Guido Milanese, Dec 18 23:29:28 CET 2015, + http://tug.org/pipermail/tex4ht/2015q4/001326.html. + + * tex4ht-4ht.tex (, frenchn.4ht): disable LuaTeX + callback which causes tex4ht command to fail. + +2015-10-25 Michal Hoftich + + * tex4ht-fonts-noncjk.tex (tcrm-uni): Updated support for textcomp + font tcrm. + * Makefile (tex4ht_fonts_noncjk_derived): add derived file + tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/jknappen/tc/tcrm.htf. + https://puszcza.gnu.org.ua/bugs/?264 + +2015-10-09 Karl Berry + + * Makefile (tex4ht_fonts_modern_derived): new var for l7x, + and make it a target in addition to noncjk_derived. + +2015-10-09 Michal Hoftich + + * tex4ht-fonts-modern.tex (l7x-lmcsc.htf, l7x-lm.htf): fixed + diacritic marks for Lithuanian language. + https://puszcza.gnu.org.ua/bugs/?263 + +2015-09-29 Michal Hoftich + + * tex4ht-ooffice.tex (configure ooffice subscript), + * tex4ht-4ht.tex (subscript.4ht), + * tex4ht-html4.tex (configure html4 subscript): + support for \textsubscript. http://puszcza.gnu.org.ua/bugs/?262 + * Makefile (derived): add subscript.4ht. + +2015-08-05 Michal Hoftich + and Karl Berry + + * Makefile (derived): add graphicx.4ht. + * tex4ht-4ht.tex (graphicx.4ht): usee .xbb for png/jpg/gif. + https://puszcza.gnu.org.ua/bugs/?257 + +2015-06-10 Michal Hoftich + + * tex4ht-ooffice.tex (save image name): use \Gin@ext rather than + \PictExt (which is apparently always png). Report from Simon Spiegel, + 10 Jun 2015 10:21:19. + +2015-06-10 Radhakrishnan CV + + * tex4ht-4ht.tex (biblatex): \blx@checksum was a parameterless + macro, while the current biblatex defines it as a macro with three + parameters. The macro has been redefined to match the package. The bug + was reported by Simon Spiegel and fix suggested by Michal Hoftich. + http://tug.org/pipermail/tex4ht/2015q2/001211.html (and previous). + +2015-06-07 Michal Hoftich + + * tex4ht-fonts-noncjk.tex: huge update of T1-encoded fonts + not previously supported by tex4ht. + * t1fontmake.lua: new script. + * t1fontsample.tex: new sample tex file. + * Makefile (tex4ht_fonts_noncjk_derived): add two of + the new aliases/t1fonts/*.htf files. + Mail of http://tug.org/pipermail/tex4ht/2015q2/001180.html. + +2015-05-25 Michal Hoftich + and Karl Berry + + * tex4ht-fonts-noncjk.tex (eccc): new font support. + https://puszcza.gnu.org.ua/bugs/?253 + + * Makefile (tex4ht_fonts_noncjk_derived): add the new + tex4ht.dir/texmf/tex4ht/ht-fonts/alias/ec/eccc.htf + tex4ht.dir/texmf/tex4ht/ht-fonts/unicode/ec/eccc-uni.htf + as htf output examples. + +2015-04-14 Michal Hoftich + + * Makefile (tex4ht_4ht_derived): add memoir.4ht. + * tex4ht-4ht.tex: improve array and tabular support for memoir; + input array,dcolumn,tabularx,booktabs.4ht, disable \columnlines. + http://puszcza.gnu.org.ua/bugs/?249 + +2015-04-01 Michal Hoftich + + * tex4ht-ooffice.tex: configure wrapfig to avoid spurious \par. + https://puszcza.gnu.org.ua/bugs/?247 + +2015-02-17 Michal Hoftich + + * tex4ht-4ht.tex (spanish.4ht): fix missing csname when Spanish + babel is used. + https://puszcza.gnu.org.ua/bugs/?245 + * Makefile (tex4ht_4ht_derived): add spanish.4ht. + +2015-02-11 Michal Hoftich + + * tex4ht-ooffice.tex (ooffice.4ht): fix images in subfolders + handling -- everything in Pictures/. + * tex4ht-env.tex: likewise, copy all images to one directory. + https://puszcza.gnu.org.ua/bugs/?240 + +2015-02-13 Michal Hoftich + + * tex4ht-mathml.tex (mathml.4ht) : + output + + * tex4ht-mathml.tex (mathml.4ht) : \ifmmode\else + to avoid some (but not all) + problems. https://puszcza.gnu.org.ua/bugs/?244 + +2015-02-07 Michal Hoftich + + * tex4ht-4ht.tex (scrartcl.4ht, scrbook.4ht, scrreprt.4ht): + koma-script patch, mail of 6 Feb 2015 12:32:10. + Original report from Alexander Willand. + +2015-02-04 Radhakrishnan CV + + * tex4ht-4ht.tex (biblatex.4ht): biblatex fixes for + http://puszcza.gnu.org.ua/bugs/?227. + +2015-01-29 Michal Hoftich and Karl Berry + + * Makefile (tex4ht_4ht_derived): add quoting.4ht. + * tex4ht-4ht.tex (quoting.4ht): new generated file, + to restore

when quoting.sty is sued. + http://puszcza.gnu.org.ua/bugs/?198 + http://tex.stackexchange.com/q/140986/2891 + +2015-01-28 Michal Hoftich + + * tex4ht-mathltx.tex + * tex4ht-mathml.tex + * tex4ht-html-speech.tex + * tex4ht-jsmath.tex: added \relax after \mathchar to prevent eating + following characters as hexadecimal numbers. + https://puszcza.gnu.org.ua/bugs/?230 + http://tex.stackexchange.com/q/116340/2891 + + * Makefile (diff): new convenience target. + +2015-01-28 Karl Berry + + * tex4ht-4ht.tex (\CopyYear, \TeX4ht copyright): no need for + en-dash in copyrights. + (frenchb.4ht): rework copyrights, and install in TL, + including previously-unreleased testing for + \FDP@space vs. \FDP@colonspace. + +2015-01-26 Michal Hoftich and Karl Berry + + * tex4ht-html4.tex: generate {html4-l2-url,html4-russian-accents}.4ht + as separate files, to avoid having html4.4ht with multiple encodings, + which lualatex does not like to read. + * Makefile (tex4ht_html4_derived): add the new files. + +2015-01-23 Karl Berry + + * html4.4ht-released: new file, copied from current TL. + * Makefile (tex4ht_html4_derived): enable, and intersperse + copying of html4.4ht-released to html4.4ht with latex runs, + per comments at top of file. No significant differences remain. + +2015-01-19 Michal Hoftich + + * tex4ht-html4.tex, + * tex4ht-unicode.tex: remove spurious semicolon produced by + \textregistered command. + http://puszcza.gnu.org.ua/bugs/?242 + http://tex.stackexchange.com/questions/223804/tex4ht-textregistered-and-an-unwanted-semicolon + +2014-10-28 Michal Hoftich + + * tex4ht-html4.tex: Spurious comma in css selector causes CSS + validation error. + https://puszcza.gnu.org.ua/bugs/index.php?232 + +2014-10-10 Peter Breitenlohner + + * tex4ht-c.tex: Avoid compiler warning [-Wunused-value]. + (Backport from TeX Live.) + +2014-07-15 Michal Hoftich + + * tex4ht-4ht.tex (scrbook.4ht, scrreprt.4ht, scrartcl.4ht): Update + KOMA-Script configurations to handle recent changes in the classes + for the \rm, etc., font commands. + http://tug.org/pipermail/tex4ht/2014q1/000913.html + http://puszcza.gnu.org.ua/bugs/?205 + * Makefile (tex4ht_4ht_derived): add the affected scr*.4ht. + +2014-07-14 Karl Berry + + * Makefile (tex4ht_4ht_derived): add titlesec.4ht. + (titlesec 2005) <\ttl:straight@i>: use {#2} in case arg contains + brackets. From Michal Hoftich. + http://tex.stackexchange.com/q/185866/ + http://puszcza.gnu.org.ua/bugs/?215 + +2014-07-13 Karl Berry + + * Makefile (tex4ht_4ht_derived): add listings.4ht. + * tex4ht-4ht.tex (listings.4ht): handle listings' escapechar + feature. From Michal Hoftich. + http://tex.stackexchange.com/q/188322/2891 + http://puszcza.gnu.org.ua/bugs/?221 + +2014-07-13 Karl Berry + + * Makefile (tex4ht_4ht_derived): add tocloft.4ht. + * tex4ht-4ht.tex (tocloft.4ht): new generated file, + to turn off tocloft toc's. Fix from Michal Hoftich. + http://tex.stackexchange.com/q/190991/2891 + http://puszcza.gnu.org.ua/bugs/?220 + + * tex4ht-4ht.tex (TeX4ht license text): new macro without + copyright line, used in the new .4ht file. + (TeX4ht copyright): use that after the copyright line. + +2014-06-27 Karl Berry + + * tex4ht-4ht.tex (mwcls divs): omit error if not in vertical mode + in mwbk.cls. Report from Sylwester Arabas, fix from Deimantas Galcius. + http://puszcza.gnu.org.ua/bugs/?214 + +2014-06-27 Karl Berry + + * tex4ht-fonts-noncjk.tex, + * tex4ht-mathltx.tex, + * tex4ht-mathml.tex: copyright years and notices. + +2014-06-26 Chris Horler + + * tex4ht-mathltx.tex, + * tex4ht-mathml.tex: use different align= values + instead of CSS text-align: values, per current standards. + Affects mathltx.4ht and mathml.4ht. + https://puszcza.gnu.org.ua/bugs/?219 + +2014-06-26 Karl Berry + + * Makefile (tex4ht_mathml_derived): new variable and target, + for tex4ht-mathml.tex. + + * Makefile (tex4ht_fonts_noncjk_derived): evidently lm-htf.tex + is created from tex4ht-fonts-noncjk.tex, but not cmtex.htf. + Don't see where/how cmtex.htf is created. + +2014-05-22 Karl Berry + + * tex4ht-4ht.tex (shared url): must use definition + of \set@mathnolig from previous url.sty, since we must + use literal _ rather than \sb for tex4ht. (From CVR.) + +2014-02-21 Karl Berry + + * tex4ht-html4.tex (font-size): need \%, not %, for the 70%. + Found by Raphael Pinson, http://puszcza.gnu.org.ua/bugs/?189. + +2014-02-10 Karl Berry + + * tex4ht-env.tex: use gs instead of convert for making bitmaps + (from dick, + notes). + + * tex4ht-env.tex: use %%~ or ~ instead of hardwired gurari dir. + +2013-10-07 Karl Berry + + * Makefile (tex4ht-fonts-{cjk,cjk-utf8,noncjk}*): new targets and vars. + * tex4ht-fonts-noncjk.tex: do not generate cjk and cjk-utf8. + * tex4ht-fonts-cjk-utf8.tex: copyright update. + +2013-07-02 Peter Breitenlohner + + * tex4ht-c.tex, tex4ht-t4ht.tex: Always include system headers + after . (Backport from TeX Live.) + +2013-03-01 Radhakrishnan CV + + * tex4ht-ooffice.tex: \NoFonts ... \EndNoFonts added in + {footnotetext} configuration to avoid font size anomalies in + footnotes when footnote text has accented characters. Patch + submitted by Nicolai Rostov, Feb 28, 2013 at 4:40 AM. + +2013-01-08 Peter Breitenlohner + + Backport from TeX Live. + * tex4ht-c.tex, tex4ht-t4ht.tex: Drop set but unused variables. + +2012-07-27 Peter Breitenlohner + + Adapt to W32TeX (backport from TeX Live). + * tex4ht-c.tex, tex4ht-t4ht.tex [WIN32]: + Use binary mode for output files. + Pass program name string to kpse_set_program_name. + Must not free argv. + +2011-09-18 Karl Berry + + * tex4ht-unicode.tex (): \H{O} is 0150, + not 0151; http://www.fileformat.info/info/unicode/char/150/index.htm. + Report from Tibor Tomacs, 18 Sep 2011 12:34:09, + http://puszcza.gnu.org.ua/bugs/?147. + +2010-12-25 Karl Berry + + * tex4ht-c.tex (): allow -hA to enable all tracing. + (): fatal error if we don't find it, since the + next thing we do is seek on the file which crashes anyway. + (): use --format=othertext so we can find + tex4ht.env. However, this is not enough to find the .htf files, + so it's still not possible to run the program as anything except + `tex4ht'. So it goes. + +2010-12-24 Karl Berry + + * tex4ht-c.tex, + * tex4ht-t4ht.tex: attempt to document which files I think these + programs read and write. Fix a couple typos. + +2010-12-23 Karl Berry + + * tex4ht-c.tex, + * tex4ht-t4ht.tex, + * tex4ht-htcmd.tex: rewrite some doc uses of "win32". + + * common-info.tex (\CleanComment): lengthy comment about ultimate + failure trying to make the info option work with mzlatex. + + * tex4ht-info-mml.tex (configure infomml tex4ht): use \Configure, + not the undefined \Contribution, add plain text heading + like the others. + +2010-12-16 Peter Breitenlohner + + * tex4ht-t4ht.tex: missed <<<. + +2010-12-14 Karl Berry + + * tex4ht-c.tex, + * tex4ht-t4ht.tex (resplit argv for windows): new section, from Akira + Kakuto. + + * tex4ht-htcmd.tex: document that this not used. + +2010-11-17 Karl Berry + + * all files: switch to ranges in copyright notices. + +2010-11-17 Karl Berry + + * tex4ht-c.tex: compiler options are a comment, despite #define's. + +2010-11-16 Peter Breitenlohner + + * t4ht.c (main): Initialize addr and media in order to avoid + compiler warnings. Use '#if 0' to skip unreachable code. + +2010-11-12 Peter Breitenlohner + + * t4ht.c (filterGifScript): Avoid 'filtered_script might be used + uninitialized'. Use NULL_SCRIPT. + +2010-03-17 Karl Berry + + * tex4ht-auto-script.tex: unused, it seems. + +2010-03-12 Karl Berry + + * tex4ht-bibtex2.tex: license notices. + * Makefile: add derivations. + +2010-03-11 Karl Berry + + * tex4ht-c.tex: license notices. + * Makefile: add derivations. + +2010-03-08 Karl Berry + + * tex4ht-cond4ht.tex: license notices. + * mktex4ht.cnf: new (empty) file, needed to run cond4ht. + * Makefile: add derivations. + * tex4ht-cpright.tex: note additional copy. + * all files: no period ending copyright lines, I guess. + +2010-03-08 Karl Berry + + * tex4ht-docbook-xtpipes.tex: license notices. + * Makefile: add derivations. + +2010-03-07 Karl Berry + + * tex4ht-docbook.tex: license notices. + * Makefile: add derivations. + +2010-03-06 Karl Berry + + * tex4ht-env.tex: license notices. + (dvips convert (personal)): do not hardcode path to convert + (else zztex4ht-env.ps is left behind). + * Makefile: add derivations. + +2010-03-05 Karl Berry + + * tex4ht-fonts-noncjk.tex: start at license notices. + Correct quoting of the + \Needs{"xhlatex tex4ht-fonts-4hf ..."} line. + * Makefile: start at derivations. + +2010-03-04 Radhakrishnan CV + + * tex4ht-mkht.tex ( + + * tex4ht-htcmd.tex: update license notices. + * Makefile: add derivations. + +2010-03-03 Karl Berry + + * tex4ht-html-speech-xtpipes.tex: update license notices. + * Makefile: add derivations. + +2010-03-02 Karl Berry + + * tex4ht-html-speech.tex, + * tex4ht-html0.tex: update license notices. + * Makefile: add derivations. + +2010-02-28 Karl Berry + + * tex4ht-html32.tex, + * tex4ht-html4.tex: update license notices. + * Makefile: add derivations. + +2010-02-26 Karl Berry + + * tex4ht-info-mml.tex, + * tex4ht-info-ooffice.tex: update license notices. + * Makefile: add derivations. + +2010-02-25 Karl Berry + + * tex4ht-info-svg.tex, + * tex4ht-javahelp-xtpipes.tex: update license notices. + * Makefile: add derivations. + +2010-02-23 Karl Berry + + * tex4ht-javahelp.tex, + * tex4ht-jsmath.tex: update license notices. + * Makefile: add derivations. + +2010-02-22 Karl Berry + + * tex4ht-jsml-xtpipes.tex, + * tex4ht-jsml.tex: update license notices. + * Makefile: add derivations. + +2010-02-21 Karl Berry + + * tex4ht-mathltx.tex: update license notices. + * Makefile: add derivations. + +2010-02-18 Karl Berry + + * tex4ht-mathplayer.tex: update license notices. + * tex4ht-mkht.tex: update some license notices, more to come. + * Makefile: add derivations. + +2010-02-17 Karl Berry + + * tex4ht-moz.tex: update license notices. + * Makefile: add derivations. + +2010-02-16 Karl Berry + + * tex4ht-oo-xtpipes.tex: update license notices. + * Makefile: add derivations. + +2010-02-15 Karl Berry + + * tex4ht-ooffice.tex: update license notices. + * Makefile: add derivations. + +2010-02-14 Karl Berry + + * tex4ht-ooimpress.tex: update license notices. + Remove would-be generation of ooimpress-math and ooimpress-mml, + since it seems they are not actually generated. + * Makefile: add derivations. + +2010-02-13 Karl Berry + + * common-code.tex: new file. + * tex4ht-unicode.tex: use it. + + * tex4ht-options.tex: update license notices. + * Makefile: add derivations. + +2010-02-12 Karl Berry + + * tex4ht-sty.tex: update license notices. + * Makefile: add derivations. + +2010-02-11 Karl Berry + + * tex4ht-svg.tex: update license notices. + * Makefile: add derivations. + + * All files so far: Put current (2010) copyright line first. + +2010-02-10 Karl Berry + + * tex4ht-t4ht.tex: update license notices. + * Makefile: add derivations. + +2010-02-09 Karl Berry + + * tex4t-tei.tex: update license notices. + * Makefile: add derivations. + * tex4ht-cpright.tex: new macro |TeX4ht copywrite, + to output the license notice with a \write to the log file. + +2010-02-08 Karl Berry + + * tex4ht-unicode.tex: update license notices. + * Makefile: add derivations. + +2010-02-07 Karl Berry + + * tex4ht-word.tex: update license notices. + * Makefile: add derivations. + +2010-02-06 Karl Berry + + * tex4ht-xhtml-xtpipes.tex: update license notices. + * Makefile: add derivations. + + * tex4ht-xhtmml-xtpipes.tex, + * xtpipes.tex: \message when running the lit sources doesn't + seem useful. Remove it. + +2010-02-05 Karl Berry + + * tex4ht-xhtmml-xtpipes.tex: update license notices. + * Makefile: add derivations. + +2010-02-03 Karl Berry + + * wripro.tex: add license notice. + +2010-02-02 Karl Berry + + * xtpipes.tex: add derivation info and copyright messages + to generated files. + * tex4ht-cpright.tex: minimize lines. + * Makefile: start at new file. + +2010-02-23 Peter Breitenlohner + + * t4ht.c (get_env_dir) [WIN32]: Declare as static. + +2010-02-20 Peter Breitenlohner + + * tex4ht.c [__MINGW32__]: #define HAVE_BOOLEAN in order to avoid + conflicting declaration for boolean from kpathsea/types.h. + Declare various param strings as const. + +2009-09-30 Peter Breitenlohner + + * t4ht.c, tex4ht.c: Declare numerous param and local strings as + const. + +This file is public domain. Started 2010, Karl Berry. +2011-09-18 Karl Berry + + * tex4ht-unicode.tex (): \H{O} is 0150, + not 0151; http://www.fileformat.info/info/unicode/char/150/index.htm. + Report from Tibor Tomacs, 18 Sep 2011 12:34:09, + http://puszcza.gnu.org.ua/bugs/?147. + +2010-12-25 Karl Berry + + * tex4ht-c.tex (): allow -hA to enable all tracing. + (): fatal error if we don't find it, since the + next thing we do is seek on the file which crashes anyway. + (): use --format=othertext so we can find + tex4ht.env. However, this is not enough to find the .htf files, + so it's still not possible to run the program as anything except + `tex4ht'. So it goes. + +2010-12-24 Karl Berry + + * tex4ht-c.tex, + * tex4ht-t4ht.tex: attempt to document which files I think these + programs read and write. Fix a couple typos. + +2010-12-23 Karl Berry + + * tex4ht-c.tex, + * tex4ht-t4ht.tex, + * tex4ht-htcmd.tex: rewrite some doc uses of "win32". + + * common-info.tex (\CleanComment): lengthy comment about ultimate + failure trying to make the info option work with mzlatex. + + * tex4ht-info-mml.tex (configure infomml tex4ht): use \Configure, + not the undefined \Contribution, add plain text heading + like the others. + +2010-12-16 Peter Breitenlohner + + * tex4ht-t4ht.tex: missed <<<. + +2010-12-14 Karl Berry + + * tex4ht-c.tex, + * tex4ht-t4ht.tex (resplit argv for windows): new section, from Akira + Kakuto. + + * tex4ht-htcmd.tex: document that this not used. + +2010-11-17 Karl Berry + + * all files: switch to ranges in copyright notices. + +2010-11-17 Karl Berry + + * tex4ht-c.tex: compiler options are a comment, despite #define's. + +2010-11-16 Peter Breitenlohner + + * t4ht.c (main): Initialize addr and media in order to avoid + compiler warnings. Use '#if 0' to skip unreachable code. + +2010-11-12 Peter Breitenlohner + + * t4ht.c (filterGifScript): Avoid 'filtered_script might be used + uninitialized'. Use NULL_SCRIPT. + +2010-03-17 Karl Berry + + * tex4ht-auto-script.tex: unused, it seems. + +2010-03-12 Karl Berry + + * tex4ht-bibtex2.tex: license notices. + * Makefile: add derivations. + +2010-03-11 Karl Berry + + * tex4ht-c.tex: license notices. + * Makefile: add derivations. + +2010-03-08 Karl Berry + + * tex4ht-cond4ht.tex: license notices. + * mktex4ht.cnf: new (empty) file, needed to run cond4ht. + * Makefile: add derivations. + * tex4ht-cpright.tex: note additional copy. + * all files: no period ending copyright lines, I guess. + +2010-03-08 Karl Berry + + * tex4ht-docbook-xtpipes.tex: license notices. + * Makefile: add derivations. + +2010-03-07 Karl Berry + + * tex4ht-docbook.tex: license notices. + * Makefile: add derivations. + +2010-03-06 Karl Berry + + * tex4ht-env.tex: license notices. + (dvips convert (personal)): do not hardcode path to convert + (else zztex4ht-env.ps is left behind). + * Makefile: add derivations. + +2010-03-05 Karl Berry + + * tex4ht-fonts-noncjk.tex: start at license notices. + Correct quoting of the + \Needs{"xhlatex tex4ht-fonts-4hf ..."} line. + * Makefile: start at derivations. + +2010-03-04 Radhakrishnan CV + + * tex4ht-mkht.tex ( + + * tex4ht-htcmd.tex: update license notices. + * Makefile: add derivations. + +2010-03-03 Karl Berry + + * tex4ht-html-speech-xtpipes.tex: update license notices. + * Makefile: add derivations. + +2010-03-02 Karl Berry + + * tex4ht-html-speech.tex, + * tex4ht-html0.tex: update license notices. + * Makefile: add derivations. + +2010-02-28 Karl Berry + + * tex4ht-html32.tex, + * tex4ht-html4.tex: update license notices. + * Makefile: add derivations. + +2010-02-26 Karl Berry + + * tex4ht-info-mml.tex, + * tex4ht-info-ooffice.tex: update license notices. + * Makefile: add derivations. + +2010-02-25 Karl Berry + + * tex4ht-info-svg.tex, + * tex4ht-javahelp-xtpipes.tex: update license notices. + * Makefile: add derivations. + +2010-02-23 Karl Berry + + * tex4ht-javahelp.tex, + * tex4ht-jsmath.tex: update license notices. + * Makefile: add derivations. + +2010-02-22 Karl Berry + + * tex4ht-jsml-xtpipes.tex, + * tex4ht-jsml.tex: update license notices. + * Makefile: add derivations. + +2010-02-21 Karl Berry + + * tex4ht-mathltx.tex: update license notices. + * Makefile: add derivations. + +2010-02-18 Karl Berry + + * tex4ht-mathplayer.tex: update license notices. + * tex4ht-mkht.tex: update some license notices, more to come. + * Makefile: add derivations. + +2010-02-17 Karl Berry + + * tex4ht-moz.tex: update license notices. + * Makefile: add derivations. + +2010-02-16 Karl Berry + + * tex4ht-oo-xtpipes.tex: update license notices. + * Makefile: add derivations. + +2010-02-15 Karl Berry + + * tex4ht-ooffice.tex: update license notices. + * Makefile: add derivations. + +2010-02-14 Karl Berry + + * tex4ht-ooimpress.tex: update license notices. + Remove would-be generation of ooimpress-math and ooimpress-mml, + since it seems they are not actually generated. + * Makefile: add derivations. + +2010-02-13 Karl Berry + + * common-code.tex: new file. + * tex4ht-unicode.tex: use it. + + * tex4ht-options.tex: update license notices. + * Makefile: add derivations. + +2010-02-12 Karl Berry + + * tex4ht-sty.tex: update license notices. + * Makefile: add derivations. + +2010-02-11 Karl Berry + + * tex4ht-svg.tex: update license notices. + * Makefile: add derivations. + + * All files so far: Put current (2010) copyright line first. + +2010-02-10 Karl Berry + + * tex4ht-t4ht.tex: update license notices. + * Makefile: add derivations. + +2010-02-09 Karl Berry + + * tex4t-tei.tex: update license notices. + * Makefile: add derivations. + * tex4ht-cpright.tex: new macro |TeX4ht copywrite, + to output the license notice with a \write to the log file. + +2010-02-08 Karl Berry + + * tex4ht-unicode.tex: update license notices. + * Makefile: add derivations. + +2010-02-07 Karl Berry + + * tex4ht-word.tex: update license notices. + * Makefile: add derivations. + +2010-02-06 Karl Berry + + * tex4ht-xhtml-xtpipes.tex: update license notices. + * Makefile: add derivations. + + * tex4ht-xhtmml-xtpipes.tex, + * xtpipes.tex: \message when running the lit sources doesn't + seem useful. Remove it. + +2010-02-05 Karl Berry + + * tex4ht-xhtmml-xtpipes.tex: update license notices. + * Makefile: add derivations. + +2010-02-03 Karl Berry + + * wripro.tex: add license notice. + +2010-02-02 Karl Berry + + * xtpipes.tex: add derivation info and copyright messages + to generated files. + * tex4ht-cpright.tex: minimize lines. + * Makefile: start at new file. + +2010-02-23 Peter Breitenlohner + + * t4ht.c (get_env_dir) [WIN32]: Declare as static. + +2010-02-20 Peter Breitenlohner + + * tex4ht.c [__MINGW32__]: #define HAVE_BOOLEAN in order to avoid + conflicting declaration for boolean from kpathsea/types.h. + Declare various param strings as const. + +2010-01-11 Karl Berry + + * texmf/tex/generic/tex4ht/frenchb.4ht: patch from + daniel.flipo@univ-lille1.fr to improve compatibility + with different versions of frenchb. + +2009-09-30 Peter Breitenlohner + + * t4ht.c, tex4ht.c: Declare numerous param and local strings as + const. + +This file is public domain. Started 2010, Karl Berry. + +# vim: textwidth=78 diff --git a/Master/texmf-dist/source/generic/tex4ht/Makefile b/Master/texmf-dist/source/generic/tex4ht/Makefile new file mode 100644 index 00000000000..702bc156fae --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/Makefile @@ -0,0 +1,834 @@ +# $Id: Makefile 924 2021-05-02 22:55:22Z karl $ +# This file is public domain. Originally written 2010, Karl Berry. +# Assumes GNU make. + +# todo: look for xx below, among much more. + +SHELL = /bin/sh + +# setting PATH as it's nice to find our own (development) scripts, +# e.g., look for xmlint and vcss in ./extra-bin. +extra_bin = ./extra-bin +ht_bin = ../bin/ht/unix +PATH := $(shell echo $$PATH) +# +# per-user addition to PATH. We need to use LaTeX out of current TeX Live, +# since changes that affect tex4ht are often made. Include trailing :. +ifeq ($(USER),karl) +user_bin := /usr/local/texlive/dev/bin/x86_64-linux: +else +user_bin := +endif +# +export PATH := $(ht_bin):$(extra_bin):$(user_bin)$(PATH) + +homedir ?= tex4ht.dir +wd = work.dir +htmldir = html.dir +xtpipesdir = xtpipes.dir +deriveddir = derived.dir +texmf_t4ht_bin = texmf/tex4ht/bin +# List of directories we'll substitute into tex4ht-dir.tex below: +dirs = homedir wd htmldir xtpipesdir deriveddir texmf_t4ht_bin + +# do_java variable to control how tex4ht.jar is built. +# do_java=1 works only if tex4ht-dir.tex is not already built with +# do_java=0 option. +# Similarly do_java=0 will keep java compilation in tex in addition to +# building in Makefile if tex4ht-dir.tex was already built with +# do_java=1 +# 0 = in Makefile only +# 1 = in .tex only +# 2 = no java compilation +do_java ?= 2 +java_in_make := false +java_in_tex := false +ifeq ($(do_java),0) +java_in_make := true +else ifeq ($(do_java),1) +java_in_tex := true +else ifneq ($(do_java),2) +$(error Invalid do_java, supported values are 0, 1, and 2) +endif + +# The xtpipes.jar is an intermediate product that is needed only when +# java compilation is made through t4ht system call (do_java=1), not +# when the java compilation is made in Makefile (do_java=0) +ifeq ($(java_in_tex),true) +xtpipe_jar = $(wd)/bin/xtpipes.jar +else +xtpipe_jar = # +endif + +tex_opts = --interaction=nonstopmode -recorder #--file-line-error +tex_1opt = "$(tex_opts)" # must be quoted, passing to shell script +dev_null = $@ || rm -f $@ + +# Start long list of generated files from the literate sources. Needs more. +derived = + +derived += $(tex4ht_cond4ht_derived) +tex4ht_cond4ht_derived = cond4ht.4ht mktex4ht.4ht +derived += $(tex4ht_4ht_derived) +tex4ht_4ht_derived = \ + abstract.4ht adjustbox.4ht algorithmic.4ht amsmath.4ht \ + animate.4ht authblk.4ht appendix.4ht \ + biblatex.4ht biblatex-chicago.4ht book.4ht bussproofs.4ht \ + caption.4ht cleveref.4ht color.4ht colortbl.4ht \ + fontspec.4ht fontspec-4ht.lua fontspec-luatex.4ht fontspec-xetex.4ht \ + footmisc.4ht framed.4ht frenchb.4ht floatpag.4ht \ + geometry.4ht graphics.4ht graphicx.4ht \ + hyperref.4ht \ + imakeidx.4ht \ + jurabib.4ht \ + latex.4ht lettrine.4ht listings.4ht longtable.4ht \ + ltugboat.4ht ltugboat-a.4ht ltugproc.4ht ltugproc-a.4ht \ + magyar.4ht mdframed.4ht memoir.4ht minted.4ht multicol.4ht multirow.4ht \ + nameref.4ht natbib.4ht \ + parallel.4ht proof.4ht pstricks.4ht pythontex.4ht \ + quoting.4ht \ + reading.4ht \ + scrartcl.4ht scrbook.4ht scrreprt.4ht scrjura.4ht sectionbreak.4ht \ + skak.4ht spanish.4ht subscript.4ht svg.4ht \ + tabu.4ht tcolorbox.4ht titlesec.4ht tocloft.4ht \ + tuenc-luatex.4ht tuenc-xetex.4ht \ + tugboat.4ht \ + usepackage.4ht usepackage-fontspec.4ht \ + wrapfig.4ht \ + xcolor.4ht xr.4ht xr-hyper.4ht +# xx and many, many more. + +derived += $(tex4ht_bibtex2_derived) +tex4ht_bibtex2_derived = bibtex2.4ht + +derived += $(tex4ht_c_derived) +tex4ht_c_derived = tex4ht.c + +derived += $(tex4ht_docbook_derived) +tex4ht_docbook_derived = docbook.4ht docbook-math.4ht docbook-mml.4ht + +ifeq ($(java_in_make),true) +derived += $(tex4ht_docbook_xtpipes_derived) +tex4ht_docbook_xtpipes_derived = docbook.4xt $(wd)/src/DbUtilities.java +endif + +derived += $(tex4ht_env_derived) +tex4ht_env_derived = tex4ht.env-unix tex4ht.env-win32 tex4ht.env + +derived += $(tex4ht_fonts_cjk_derived) +tex4ht_fonts_cjk_derived = \ + $(ht_fonts_devdir)/unicode/cjk/gbksong/gbksong01.htf +# and a whole lot more + +derived += $(tex4ht_fonts_cjk_utf8_derived) +tex4ht_fonts_cjk_utf8_derived = \ + $(ht_fonts_devdir)/unicode/cjk/utf8/utf8songa0.htf + +# noncjk.tex \input's modern, but seems more maintainable +# to have separate lists. +ht_fonts_devdir = $(homedir)/texmf/tex4ht/ht-fonts +derived += $(tex4ht_fonts_noncjk_derived) +tex4ht_fonts_noncjk_derived = \ + $(ht_fonts_devdir)/alias/ec/eccc.htf \ + $(ht_fonts_devdir)/unicode/ec/eccc-uni.htf \ + $(ht_fonts_devdir)/alias/t1fonts/ClearSans-BoldItalic-lf-t1.htf \ + $(ht_fonts_devdir)/alias/t1fonts/ipxg-r-t1.htf \ + $(ht_fonts_devdir)/unicode/jknappen/tc/tcrm.htf \ + $(ht_fonts_devdir)/unicode/misc/SkakNew.htf \ + $(ht_fonts_devdir)/unicode/adobe/courier/pcrro8r.htf \ + $(ht_fonts_devdir)/iso8859/1/tibetan/ctib.htf \ + $(ht_fonts_devdir)/unicode/tibetan/ctib.htf \ + $(ht_fonts_devdir)/alias/bera/fveb8r.htf \ + $(ht_fonts_devdir)/alias/bera/fveb8t.htf \ + $(ht_fonts_devdir)/alias/bera/fver8r.htf \ + $(ht_fonts_devdir)/alias/bera/fver8t.htf \ + $(ht_fonts_devdir)/alias/bera/fvero8r.htf \ + $(ht_fonts_devdir)/alias/bera/fvero8t.htf \ + $(ht_fonts_devdir)/alias/t1fonts/XCharter-Roman-tlf-t1--base.htf \ + $(ht_fonts_devdir)/alias/t1fonts/XCharter-Italic-tlf-t1--base.htf \ + $(ht_fonts_devdir)/alias/t1fonts/XCharter-Bold-tlf-t1--base.htf + +# Although SearchFonts.java is created by fonts-noncjk, it's a +# development tool that we don't use and have no need for, so don't list +# it or try to compile it. (See source for a little more info.) +# $(wd)/src/SearchFonts.java + +derived += $(tex4ht_fonts_modern_derived) +tex4ht_fonts_modern_derived = \ + $(ht_fonts_devdir)/unicode/lm/l7x-lmcsc.htf \ + $(ht_fonts_devdir)/unicode/lm/l7x-lm.htf \ + $(ht_fonts_devdir)/unicode/lm/lm-ts1.htf \ + $(ht_fonts_devdir)/unicode/lm/rm-lm.htf \ + $(ht_fonts_devdir)/alias/lm/rm-lmt.htf \ + $(ht_fonts_devdir)/alias/lm/rm-lmvt.htf \ + lm-htf.tex + +derived += $(tex4ht_fonts_ebgaramond_derived) +tex4ht_fonts_ebgaramond_derived = \ + $(ht_fonts_devdir)/unicode/EB_Garamond/EBGaramond-Regular-lf-swash-t1.htf \ + $(ht_fonts_devdir)/alias/EB_Garamond/EBGaramond-Bold-lf-titling-t1.htf + +derived += $(tex4ht_fonts_libertine_derived) +tex4ht_fonts_libertine_derived = \ + $(ht_fonts_devdir)/unicode/Linux_Biolinum_T/LinBiolinumT-lf-sc-ly1.htf + +derived += $(tex4ht_fonts_newtx_derived) +tex4ht_fonts_newtx_derived = \ + $(ht_fonts_devdir)/unicode/txbmiaX/ntxbmia.htf + +derived += $(tex4ht_fonts_fourier_derived) +tex4ht_fonts_fourier_derived = \ + $(ht_fonts_devdir)/unicode/Fourier-Math-Letters/futmi.htf + +derived += $(tex4ht_fonts_spectral_derived) +tex4ht_fonts_spectral_derived = \ + $(ht_fonts_devdir)/unicode/Spectral/Spectral-Regular-lf-sc-ly1.htf +# xx and many more +# whither tmp? how change target dir? what happened to cmtex.htf? etc. + +# htcmd not used +#derived += $(tex4ht_htcmd_derived) +#tex4ht_htcmd_derived = htcmd.c + +derived += $(tex4ht_fonts_4hf) +tex4ht_fonts_4hf = \ + $(ht_fonts_devdir)/mozilla/charset/unicode.4hf \ + $(ht_fonts_devdir)/unicode/charset/unicode.4hf \ + +# xx and many more + +derived += $(tex4ht_html_speech_derived) +tex4ht_html_speech_derived = html-speech.4ht html-speech-math.4ht emacspeak.4ht + +ifeq ($(java_in_make),true) +derived += $(tex4ht_html_speech_xtpipes_derived) +tex4ht_html_speech_xtpipes_derived = htspk.4xt $(wd)/src/HtSpk.java +endif + +derived += $(tex4ht_html0_derived) +tex4ht_html0_derived = html0.4ht + +derived += $(tex4ht_html32_derived) +tex4ht_html32_derived = html32.4ht html32-math.4ht + +derived += $(tex4ht_html4_derived) +tex4ht_html4_derived = \ + html4.4ht html4-math.4ht html4-uni.4ht \ + html4-l2-url.4ht html4-russian-accents.4ht \ + onmouseover.4ht exerqz.4ht + +#xx big changes for unknown reasons +derived += $(tex4ht_info_derived) +tex4ht_info_derived = info4ht.4ht + +derived += $(tex4ht_info_html4_derived) +tex4ht_info_html4_derived = infoht4.4ht + +derived += $(tex4ht_info_javahelp_derived) +tex4ht_info_javahelp_derived = infojh.4ht + +derived += $(tex4ht_info_mml_derived) +tex4ht_info_mml_derived = infomml.4ht + +derived += $(tex4ht_info_ooffice_derived) +tex4ht_info_ooffice_derived = infoof.4ht + +derived += $(tex4ht_info_svg_derived) +tex4ht_info_svg_derived = infosvg.4ht + +derived += $(tex4ht_javahelp_derived) +tex4ht_javahelp_derived = javahelp.4ht javahelp-a.4ht + +ifneq ($(do_java),2) +derived += $(tex4ht_javahelp_xtpipes_derived) +tex4ht_javahelp_xtpipes_derived = javahelp.4xt +endif + +derived += $(tex4ht_jsmath_derived) +tex4ht_jsmath_derived = jsmath.4ht html-jsmath.4ht + +ifneq ($(do_java),2) +derived += $(tex4ht_jsml_xtpipes_derived) +tex4ht_jsml_xtpipes_derived = \ + jsml.4xt \ + $(addprefix $(wd)/src/,HtJsml.java GroupMn.java JsmlFilter.java JsmlMathBreak.java) +endif + +derived += $(tex4ht_jsml_derived) +tex4ht_jsml_derived = jsml.4ht jsml-math.4ht + +derived += $(tex4ht_mathltx_derived) +tex4ht_mathltx_derived = mathltx.4ht html-mltx.4ht + +derived += $(tex4ht_mathml_derived) +tex4ht_mathml_derived = mathml.4ht html-mml.4ht + +derived += $(tex4ht_mathplayer_derived) +tex4ht_mathplayer_derived = mathplayer.4ht + +derived += $(tex4ht_mkht_derived) +tex4ht_mkht_derived = mkht.4ht mk4ht.perl mkht-scripts.4ht ht.unix ht.bat + +derived += $(tex4ht_moz_derived) +tex4ht_moz_derived = mozilla.4ht + +derived += $(tex4ht_html5_derived) +tex4ht_html5_derived = html5.4ht + +ifneq ($(do_java),2) +derived += $(tex4ht_oo_xtpipes_derived) +tex4ht_oo_xtpipes_derived = \ + oo-math.4xt oo-text.4xt \ + $(addprefix $(wd)/src/,OoUtilities.java OomFilter.java OoFilter.java) +endif + +derived += $(tex4ht_ooffice_derived) +tex4ht_ooffice_derived = ooffice.4ht ooffice-mml.4ht + +derived += $(tex4ht_ooimpress_derived) +tex4ht_ooimpress_derived = ooimpress.4ht + +derived += $(tex4ht_options_derived) +tex4ht_options_derived = tex4ht.4ht + +derived += $(tex4ht_sty_derived) +tex4ht_sty_derived = tex4ht.sty + +derived += $(tex4ht_svg_derived) +tex4ht_svg_derived = svg-option.4ht html4-svg.4ht + +derived += $(tex4ht_t4ht_derived) +tex4ht_t4ht_derived = t4ht.c + +derived += $(tex4ht_tei_derived) +tex4ht_tei_derived = tei.4ht tei-mml.4ht tei-math.4ht tei-mmltei.4ht + +derived += $(tex4ht_jats_derived) +tex4ht_jats_derived = jats.4ht + +derived += $(tex4ht_unicode_derived) +tex4ht_unicode_derived = unicode.4ht + +derived += $(tex4ht_word_derived) +tex4ht_word_derived = htmlw.4ht + +ifneq ($(do_java),2) +derived += $(tex4ht_xhtml_xtpipes_derived) +tex4ht_xhtml_xtpipes_derived = xhtml.4xt $(wd)/src/XhtmlEmails.java +endif + +ifneq ($(do_java),2) +derived += $(tex4ht_xhtmml_xtpipes_derived) +tex4ht_xhtmml_xtpipes_derived = xhtmml.4xt $(wd)/src/XhtmmlUtilities.java +endif + +derived += $(tex4ht_mathjax_derived) +tex4ht_mathjax_derived = mathjax-latex-4ht.4ht + +# wripro.tex generates nothing (not literate). + +ifneq ($(do_java),2) +derived += $(xtpipes_derived) +xtpipes_derived = \ + $(addprefix $(wd)/src/, \ + xtpipes.java \ + xtpipes/FileInfo.java \ + xtpipes/InputObject.java \ + xtpipes/Xtpipes.java \ + xtpipes/XtpipesPrintWriter.java \ + xtpipes/XtpipesUni.java \ + xtpipes/util/ScriptsManager.java \ + xtpipes/util/ScriptsManagerLH.java ) \ + xtpipes-default.4xt \ + xtpipes-map.dtd \ + xtpipes.dtd \ + $(xtpipes_jar) + # +endif + +# +all: $(derived) + texlua checklog.lua *.log + +$(tex4ht_4ht_derived): tex4ht-4ht.tex cond4ht.4ht $(common) + etex $(tex_opts) $< + +$(tex4ht_bibtex2_derived): tex4ht-bibtex2.tex $(common) + latex $(tex_opts) $< + +$(tex4ht_c_derived): tex4ht-c.tex $(common) + etex $(tex_opts) $< + +$(tex4ht_cond4ht_derived): tex4ht-cond4ht.tex mktex4ht-cnf.tex \ + $(common_no_cond_sty) + etex $(tex_opts) $< + etex $(tex_opts) cond4ht.4ht + +$(tex4ht_docbook_derived): tex4ht-docbook.tex $(common) + htlatex $< "html,3" "" "" $(tex_1opt) + +$(tex4ht_docbook_xtpipes_derived): tex4ht-docbook-xtpipes.tex $(common) + htlatex $< "html,3" "" "" $(tex_1opt) + +$(tex4ht_env_derived): tex4ht-env.tex $(common) + htlatex $< "xhtml,3" "" "" $(tex_1opt) + +$(tex4ht_fonts_cjk_derived): tex4ht-fonts-cjk.tex + $(HTTEX) $< "" + +$(tex4ht_fonts_cjk_utf8_derived): tex4ht-fonts-cjk-utf8.tex + $(HTTEX) $< "" + +$(tex4ht_fonts_noncjk_derived) $(tex4ht_fonts_modern_derived): \ + tex4ht-fonts-noncjk.tex tex4ht-fonts-modern.tex $(common) + $(HTTEX) $< "" + +$(tex4ht_fonts_ebgaramond_derived): tex4ht-fonts-ebgaramond.tex + $(HTTEX) $< "" + +$(tex4ht_fonts_libertine_derived): tex4ht-fonts-libertine.tex + $(HTTEX) $< "" + +$(tex4ht_fonts_newtx_derived): tex4ht-fonts-newtx.tex + $(HTTEX) $< "" + +$(tex4ht_fonts_fourier_derived): tex4ht-fonts-fourier.tex + $(HTTEX) $< "" + +$(tex4ht_fonts_spectral_derived): tex4ht-fonts-spectral.tex + $(HTTEX) $< "" + +# requires more memory than configured in other tex programs. +$(tex4ht_fonts_4hf): tex4ht-fonts-4hf.tex + dvilualatex $< + tex4ht `basename $< .tex` + t4ht `basename $< .tex` + +$(tex4ht_htcmd_derived): tex4ht-htcmd.tex $(common) + $(HTTEX) $< "" + +$(tex4ht_html_speech_derived): tex4ht-html-speech.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_html_speech_xtpipes_derived): tex4ht-html-speech-xtpipes.tex $(common) + htlatex $< "html,next,3" "" "" $(tex_1opt) + +$(tex4ht_html0_derived): tex4ht-html0.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_html32_derived): tex4ht-html32.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_html4_derived): tex4ht-html4.tex $(common) + latex $(tex_opts) $< + latex $(tex_opts) $< + +$(tex4ht_html5_derived): tex4ht-html5.tex $(common) + htlatex $< "xhtml,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_info_html4_derived): tex4ht-info-html4.tex $(common_info) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_jats_derived): tex4ht-jats.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_info_javahelp_derived): tex4ht-info-javahelp.tex $(common_info) + htlatex $< "html,sections+" "" "" $(tex_1opt) + +$(tex4ht_info_mml_derived): tex4ht-info-mml.tex $(common_info) + latex $(tex_opts) $< + +$(tex4ht_info_ooffice_derived): tex4ht-info-ooffice.tex $(common_info) + htlatex $< "html,sections+" "" "" $(tex_1opt) + +$(tex4ht_info_svg_derived): tex4ht-info-svg.tex $(common_info) + latex $(tex_opts) $< + +$(tex4ht_info_derived): tex4ht-info.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_javahelp_derived): tex4ht-javahelp.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_javahelp_xtpipes_derived): tex4ht-javahelp-xtpipes.tex $(common) + htlatex $< "xhtml,next,3" "" "" $(tex_1opt) + +$(tex4ht_jsmath_derived): tex4ht-jsmath.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_jsml_xtpipes_derived): tex4ht-jsml-xtpipes.tex $(common) $(xtpipes_jar) + htlatex $< "xhtml,next,3" "" "" $(tex_1opt) + +$(tex4ht_jsml_derived): tex4ht-jsml.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_mathjax_derived): tex4ht-mathjax.tex + htlatex $< "xhtml,3,next" "" "" $(tex_1opt) + +$(tex4ht_mathltx_derived): tex4ht-mathltx.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_mathml_derived): tex4ht-mathml.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_mathplayer_derived): tex4ht-mathplayer.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_mkht_derived): tex4ht-mkht.tex $(common) + latex $(tex_opts) $< + perl -c mk4ht.perl # syntax check + latex $(tex_opts) mkht-scripts.4ht + +$(tex4ht_moz_derived): tex4ht-moz.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_oo_xtpipes_derived): tex4ht-oo-xtpipes.tex $(common) + htlatex $< "xhtml,next,3" "" "" $(tex_1opt) + +$(tex4ht_ooffice_derived): tex4ht-ooffice.tex $(common) + htlatex $< "xhtml,4,sections+" "" "" $(tex_1opt) + +$(tex4ht_ooimpress_derived): tex4ht-ooimpress.tex $(common) + htlatex $< "xhtml,4,sections+" "" "" $(tex_1opt) + +$(tex4ht_options_derived): tex4ht-options.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_sty_derived): tex4ht-sty.tex $(common_no_cond_sty) + $(HTTEX) $< "" + +$(tex4ht_svg_derived): tex4ht-svg.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_t4ht_derived): tex4ht-t4ht.tex $(common) + $(HTTEX) $< "" + +$(tex4ht_tei_derived): tex4ht-tei.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_unicode_derived): tex4ht-unicode.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_word_derived): tex4ht-word.tex $(common) + htlatex $< "html,3,sections+" "" "" $(tex_1opt) + +$(tex4ht_xhtml_xtpipes_derived): tex4ht-xhtml-xtpipes.tex $(common) + htlatex $< "xhtml,3,next" "" "" $(tex_1opt) + +$(tex4ht_xhtmml_xtpipes_derived): tex4ht-xhtmml-xtpipes.tex $(common) + htlatex $< "xhtml,3,next" "" "" $(tex_1opt) + +$(xtpipes_derived): xtpipes.tex $(common) + htlatex $< "xhtml,3,next" "" "" $(tex_1opt) +# Derived files are generated in . and $(wd). +# (corresponds to src/java for xtpipes.tex) + +# +# Test installation. Does not work. +destdir = update.dir +dest_texmf = $(destdir)/texmf/tex/generic/tex4ht +dest_4ht = $(destdir)/texmf/tex4ht +dest_base = $(dest_4ht)/base +dest_xtpipes = $(dest_4ht)/xtpipes +dest_src = $(destdir)/src +dest_java = $(dest_src)/java +# +update = cp -pr +mkdir = install -d +# +update-env: + $(mkdir) $(dest_base)/unix $(dest_base)/win32 + $(update) tex4ht.env-unix $(dest_base)/unix/tex4ht.env + $(update) tex4ht.env-win32 $(dest_base)/win32/tex4ht.env + +update: all + $(update) $(tex4ht_bibtex2_derived) $(dest_src)/ +# + $(update) $(tex4ht_c_derived) $(dest_src)/ +# + $(update) $(tex4ht_cond4ht_derived) $(dest_texmf)/ +# + $(update) docbook.4xt $(dest_xtpipes)/ + $(update) DbUtilities.java $(dest_java)/ +# + $(update) $(tex4ht_docbook_derived) $(dest_texmf)/ +# + $(MAKE) update-env +# + $(update) $(tex4ht_html_speech_xtpipes_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_html_speech_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_html0_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_html32_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_html4_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_info_mml_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_info_ooffice_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_info_svg_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_info_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_javahelp_xtpipes_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_javahelp_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_jsmath_derived) $(dest_texmf)/ +# + $(update) jsml.4xt $(dest_xtpipes)/ + $(update) HtJsml.java GroupMn.java JsmlFilter.java \ + JsmlMathBreak.java $(dest_java)/ +# + $(update) $(tex4ht_jsml_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_mathltx_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_mathplayer_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_moz_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_html5_derived) $(dest_texmf)/ +# + $(update) oo-text.4xt oo-math.4xt $(dest_xtpipes)/ + $(update) OoUtilities.java OomFilter.java $(dest_java)/ +# + $(update) $(tex4ht_ooffice_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_ooimpress_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_options_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_sty_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_svg_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_t4ht_derived) $(dest_src)/ +# + $(update) $(tex4ht_tei_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_jats_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_unicode_derived) $(dest_texmf)/ +# + $(update) $(tex4ht_word_derived) $(dest_texmf)/ +# + $(update) xhtml.4xt $(dest_xtpipes)/ + $(update) XhtmlEmails.java $(dest_java)/ +# + $(update) xhtmml.4xt $(dest_xtpipes)/ + $(update) XhtmmlUtilities.java $(dest_java)/ +# +# this has to be done last. Does anything else use $(wd)? We'll see. + rmdir $(wd)/bin + $(update) $(wd)/* $(dest_java)/ + $(update) xtpipes.dtd xtpipes-map.dtd xtpipes-default.4xt \ + $(dest_xtpipes)/ + +clean: mostlyclean + rm -rf $(wd) + rm -f *.4ct *.4tc *.aux *.css *.dvi *.idv *.lg *.log *.tmp *.trc *.xref + rm -f *.4es *.bat *.unix *.htf *.html *.png tmp + rm -f *.fls + rm -f tex4ht-dir.tex + +mostlyclean: + rm -f $(derived) + +clean1: + rm -f $(f).[0-s]* $(f).[u-z]* $(f).trc + +# +# Java. +ifeq ($(java_in_make),true) +.PHONY: jar +jar: $(homedir)/$(texmf_t4ht_bin)/tex4ht.jar +$(homedir)/$(texmf_t4ht_bin)/tex4ht.jar: + $(tex4ht_docbook_xtpipes_derived) \ + $(tex4ht_fonts_noncjk_derived) \ + $(tex4ht_html_speech_xtpipes_derived) \ + $(tex4ht_jsml_xtpipes_derived) \ + $(tex4ht_oo_xtpipes_derived) \ + $(tex4ht_xhtml_xtpipes_derived) \ + $(tex4ht_xhtmml_xtpipes_derived) + find $(wd)/src -iname '*.java' -print0 \ + | xargs -0 javac -d $(xtpipesdir) -sourcepath $(wd)/src + mkdir -p $(dir $@) + cd $(xtpipesdir) && jar cf $(notdir $@) * + mv $(xtpipesdir)/$(notdir $@) $(dir $@) +endif + +# +# The directories where tex4ht is installed in TeX Live, +# i.e., where we will copy and commit updates. + +texmf = /r/tug/home/texlive/karl/Master/texmf-dist +inst_dir_4ht = $(texmf)/tex/generic/tex4ht +inst_dir_top = $(texmf)/tex4ht +inst_dir_scripts = $(texmf)/scripts/tex4ht +inst_dir_source = $(texmf)/source/tex4ht + +# Simple command to "install" from dev to TL. +# (Other methods are also used.) +install_data = cp -p + +# Diff and install the *.unix and *.bat scripts. +# The suffix changes from .unix in development to .sh in TL, +# and many of the scripts are not installed at all; +# don't worry about that. We also won't worry about the +# Perl scripts (mk4ht) at present. +# +diff-scripts: + for f in *.unix; do \ + inst_f=$(inst_dir_scripts)/`basename $$f .unix`.sh; \ + test -r $$inst_f || continue; \ + $(diff) $$inst_f $$f; done + +# Diff from installed to dev, but install from dev to installed. +install-scripts: + for f in *.unix; do \ + inst_f=$(inst_dir_scripts)/`basename $$f .unix`.sh; \ + test -r $$inst_f || continue; \ + echo $(install_data) $$inst_f $$f; \ + $(install_data) $$f $$inst_f; done + +# +# Checking and updating source files from development vs. TeX Live, +# from whence they get to CTAN. + +srcfiles = $(shell svn status -v | awk '{print $$NF}' \ + | egrep -v '^\.|^archive|ProTex.sty$$') + +# Diff source files from installed to dev. +diff-src: + for f in $(srcfiles); do $(diff) $$f $(inst_dir_source)/$$f; done +# +# Install from dev to installed. +install-src: + for f in $(srcfiles); do $(install_data) $$f $(inst_dir_source); done +# +# Just list the files. +list-src: + @echo $(srcfiles) | tr ' ' '\n' + +# +# Checking and updating font support files. +# +ht_fonts_instdir = $(inst_dir_top)/ht-fonts +# +install-unicode-4hf: + cd $(ht_fonts_devdir) && tar cf - `find . -name unicode.4hf` \ + | (cd $(ht_fonts_instdir) && tar xf -) + svn diff $(ht_fonts_instdir) +# +# copy fonts listed in /tmp/htf (must be filenames relative to +# ht_fonts_devdir, like those created by diff-htfonts below) +# to ht_fonts_instdir. Or to use /tmp/htnew instead of /tmp/htf, override: +tmp_htf = /tmp/htf +install-htfonts-tmp: + cd $(ht_fonts_devdir) && tar cfT - $(tmp_htf) \ + | (cd $(ht_fonts_instdir) && tar xvf -) + svn status $(ht_fonts_instdir) + +diff-htfonts: +# put the raw diff in /tmp/htd: + -$(diff) -r $(ht_fonts_instdir) $(ht_fonts_devdir) >/tmp/htd +# just the filenames in htf: + sed -n 's,^diff.*ht-fonts/,,p' /tmp/htd |sort >/tmp/htf +# new files in htnew: + sed -n -e 's,^Only in.*ht-fonts/,,' \ + -e 's,: ,/,p' /tmp/htd >/tmp/htnew +# for human consumption, remove generation lines (hopefully there are no +# real diffs on those lines); also the @@ lines from diff -u and the +# redundant diff invocations. + egrep -v '^(diff |@@ |[-+][^-+].*20[0-9][0-9]-[0-9][0-9]-[0-9][0-9])' \ + /tmp/htd | tee /tmp/htchanges + +# +# diff all files in the main TeX Live installation directory against +# cwd (development). the --ignore-matching-lines below only works when +# that's the only change in the hunk, so ignore them all explicitly. +# also ignore commented changes. +# +# htf files, scripts, etc. are in different places, so don't include them here, +# +# The diff-scripts output is usually empty, so we can run that; +# but diff-htfonts is too verbose to run every time. +diff-all: diff-scripts #diff-htfonts + -for f in $(inst_dir_4ht)/*; do $(diff) $$f .; done \ + | tee /tmp/u | egrep -v '^ *[-+]%|^@@ |^- *$$|-1.version' \ + | egrep -v '^..ifx.infoIVht.UnDeF.*//$$' + +# For checking the derived files that are explicitly listed above +# against installed (in TL) files. This is a small subset of all the +# generated files. +diff_files = $(filter-out %.htf %.4hf tex4ht.env% %.c lm-htf.tex \ + mk4ht.perl ht.unix ht.bat,\ + $(derived)) +diff-derived: + -for f in $(diff_files); do $(diff) $(inst_dir_4ht)/$$f .; done \ + | tee /tmp/u | egrep -v '^ *[-+]%|^@@ |^- *$$|-1.version' \ + | egrep -v '^..ifx.infoIVht.UnDeF.*//$$' + +# Check that anything with a \version of this year +# also has a copyright of this year. +inst-check-copyright: + -cd $(inst_dir_4ht) && for f in *; do \ + if grep "version.*`date +%Y`" $$f >/dev/null; then \ + grep "Copyright.*`date +%Y`" $$f >/dev/null || echo $$f; fi; done + +# Check that all *.4ht in dev are installed. Other file types are +# difficult, but all 4ht's should be present. +inst-check-files: + cd $(inst_dir_4ht) && ls -1 *.4ht >/tmp/instlist + ls -1 *.4ht >/tmp/devlist + comm -3 /tmp/devlist /tmp/instlist + +# missing version identifications. +inst-check-version: + -cd $(inst_dir_4ht) && for f in *; do \ + grep 'write-1.*version' $$f >/dev/null || echo $$f; done + +# +# diff one specified file, as in "make d1 d=filename.4ht". +diff1 d1: + $(diff) $(inst_dir_4ht)/$(d) . + +# the diff command used pervasively. +diff = diff -u0 --ignore-all-space --ignore-blank-lines \ + --ignore-matching-lines='write-1.version\|, generated from\|Copyright' + +# final simple abbrev for convenience. +upmake upm: + svn update && make diff --git a/Master/texmf-dist/source/generic/tex4ht/README b/Master/texmf-dist/source/generic/tex4ht/README new file mode 100644 index 00000000000..9d8b2e663ac --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/README @@ -0,0 +1,23 @@ +$Id: README 924 2021-05-02 22:55:22Z karl $ +This file is public domain. Originally written 2010, Karl Berry. + +Sources for TeX4ht, https://tug.org/tex4ht. + +Eitan Gurari (the original author of tex4ht) devised his own literate +programming system, which supports multiple output files from a single +source (https://ctan.org/pkg/protex). The files here are such "literate" +source files. They are processed with (ht)(la)tex, as given by commands +at the top of each file and in the Makefile. + +The extra-bin subdirectory contains do-nothing scripts named xmllint +and vcss, which are called for validation via tex4ht-env.tex. (Of +course they won't be used unless ./extra-bin is early enough in PATH.) +The real xmllint can take a long time to run, and fails to find the +DTD on the tex4ht-docbook*.html output. + +The Makefile has commands to build the derived files (e.g., *.4ht) from +the *.tex sources, compare them against an installed system, etc. Much +work remains to be done to make it a clean build, but it's a start. + +Bug reports and patches are most welcome. See https://tug.org/tex4ht +for contact and other information. diff --git a/Master/texmf-dist/source/generic/tex4ht/checklog.lua b/Master/texmf-dist/source/generic/tex4ht/checklog.lua new file mode 100644 index 00000000000..0e048175dbc --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/checklog.lua @@ -0,0 +1,50 @@ +-- $Id$ +-- Public domain. Originally written by Michal Hoftich, 2020. +-- this script parses log files for errors +-- pass the .log file as a first argument +-- +-- Usage: +-- texlua checklog.lua .log + +kpse.set_program_name "luatex" +-- the following library is part of make4ht +local error_logparser = require("make4ht-errorlogparser") + +local function parse_log(input_file, content) + -- log parsing can be expensive on time, don't do it if we don't have + -- any error message in the log file + if content:match("\n!") then + local errors = error_logparser.parse(content) + if #errors > 0 then + print(input_file .. ": errors found:") + for _, err in ipairs(errors) do + print((err.filename or "?") .. ":" + .. (err.line or "?") .. ":" .. err.error) + end + os.exit(1) + end + end +end + +local content +-- the log file can be passed as filename argument, or piped from shell + +if #arg > 0 then + for _, input_file in ipairs(arg) do + local ext = input_file:match("%.([^%.]+)$") + if not ext then + input_file = input_file .. ".log" + elseif ext ~="log" then + input_file = input_file:gsub("[^%.]+$", "log") + end + local f = io.open(input_file, "r") + content = f:read("*all") + f:close() + parse_log(input_file, content) + end +else + -- read from STDIN + content = io.read("*all") + parse_log(content) +end + diff --git a/Master/texmf-dist/source/generic/tex4ht/common-code.tex b/Master/texmf-dist/source/generic/tex4ht/common-code.tex new file mode 100644 index 00000000000..048872ad27d --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/common-code.tex @@ -0,0 +1,32 @@ +% $Id: common-code.tex 65 2010-11-17 19:16:45Z karl $ +% A more few common TeX definitions for literate sources. Not installed +% in runtime. These are only used in a few files, compared to those in +% common.tex. Do not know if any harm would come from including them always. +% +% Copyright 2009-2010 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project . +% +% If you modify this program, changing the +% version identification would be appreciated. + +\let\AltxModifyShowCode=\ModifyShowCode +\def\ModifyShowCode{% + \def\by{by}\def\={=}\AltxModifyShowCode} + +\let\pReModifyOutputCode=\ModifyOutputCode +\def\ModifyOutputCode{% + \def\by{}\def\={}% + \pReModifyOutputCode} diff --git a/Master/texmf-dist/source/generic/tex4ht/common-info.tex b/Master/texmf-dist/source/generic/tex4ht/common-info.tex new file mode 100644 index 00000000000..57bcf182f7d --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/common-info.tex @@ -0,0 +1,68 @@ +% $Id: common-info.tex 237 2017-01-29 18:20:42Z karl $ +% Common TeX definitions used only in the *-info.tex literate sources. +% Not installed. +% +% Copyright 2009-2017 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\expandafter\ifx \csname YES\HTML\endcsname\relax + % begin comment. 21/07/2016 (dg) + % on first run \infoIVht expects \ConfigureHinput + % ( \def\infoIVht#1\ConfigureHinput{..} ) + % so we feed it with "\ConfigureHinput" (no expansion here, merely + % a delimiter); the rest is slurped until the "//". + % end + \def\CleanComment{[0]\ConfigureHinput\id:gobble} +\else + \let\saveCd=\< + \def\<{\edef\FIRST{\the\inputlineno}\let\<\saveCd \saveCd} + % + % Eitan's commented-out definition started like this (and doesn't work): + %\def\CleanComment#1tex4ht-info#2#3#4.#5>#6//{[\eatIV#4% <--jobname + % + % Eitan's active definition started like this: + %\def\CleanComment#1tex4ht-info#2#3#4.#5>#6//{[#4% <--jobname + % + % However, that didn't work either. #4 is not the jobname. + % The arguments when running htlatex tex4ht-info-mml.tex are these: + % %#1<- + %\CleanComment #1tex4ht-info#2#3#4.#5>#6//-> + %[\if ,\ifnum \FIRST =#6 .\else ,0\fi + %#1<- + %#2<-- + %#3<-m + %#4<-ml + %#5<-html#QPrTx1"\#6//{[1\empty % + \if,\ifnum \FIRST=#6 .\else ,0\fi\fi]#6//} + \def\eatIV#1#2#3#4{} +\fi + +\Comment{ + +\string\ifx\string\infoIVht\string\UnDeF\string\def\string\infoIVht#1//{}\string\fi\string\infoIVht\CleanComment}{// + +} + +\def\>>>#1<<<{\bgroup\csname no:catcodes\endcsname0{255}{12}% + \csname no:catcodes\endcsname{13}{13}{13}% ^^M + \def\temp##1>>>{\egroup + \expandafter \def\csname #1\endcsname{##1}}\temp} diff --git a/Master/texmf-dist/source/generic/tex4ht/common.tex b/Master/texmf-dist/source/generic/tex4ht/common.tex new file mode 100644 index 00000000000..66c74a69ed6 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/common.tex @@ -0,0 +1,43 @@ +% $Id: common.tex 411 2018-06-11 13:12:17Z michal_h21 $ +% A few common TeX definitions for literate sources. Not installed in runtime. +% +% Copyright 2009-2017 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project . +% +% If you modify this program, changing the +% version identification would be appreciated. + +\newcount\tmpcnt \tmpcnt\time \divide\tmpcnt 60 +\edef\temp{\the\tmpcnt} +\multiply\tmpcnt -60 \advance\tmpcnt \time + +\edef\version{\the\year-\ifnum \month<10 0\fi + \the\month-\ifnum \day<10 0\fi\the\day + -\ifnum \temp<10 0\fi \temp + :\ifnum \tmpcnt<10 0\fi\the\tmpcnt} + +% a fixed-string version that can be enabled for debugging. +%\edef\versionDebug{000-00-00-00:00} +%\let\version\versionDebug + +% #1 is the first year for Eitan. The last year is always 2009. RIP. +\def\CopyYear.#1.{#1-2009} + +% command for write to terminal and the log file +% this version is used in the .4ht files build +% identical command is defined also in tex4ht-sty.tex, +% it is used in TeX document compilation +\def\writesixteen#1{\immediate\write1616{#1}} diff --git a/Master/texmf-dist/source/generic/tex4ht/extra-bin/vcss b/Master/texmf-dist/source/generic/tex4ht/extra-bin/vcss new file mode 100755 index 00000000000..af3a4e4bec2 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/extra-bin/vcss @@ -0,0 +1,2 @@ +#!/bin/sh +true diff --git a/Master/texmf-dist/source/generic/tex4ht/extra-bin/xmllint b/Master/texmf-dist/source/generic/tex4ht/extra-bin/xmllint new file mode 100755 index 00000000000..af3a4e4bec2 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/extra-bin/xmllint @@ -0,0 +1,2 @@ +#!/bin/sh +true diff --git a/Master/texmf-dist/source/generic/tex4ht/mktex4ht-cnf.tex b/Master/texmf-dist/source/generic/tex4ht/mktex4ht-cnf.tex new file mode 100644 index 00000000000..bad50dd5bb6 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/mktex4ht-cnf.tex @@ -0,0 +1,361 @@ +% $Id: mktex4ht-cnf.tex 903 2021-04-16 15:02:57Z michal_h21 $ +% Manually-maintained file, listing *.4ht files created by tex4ht-4ht.tex. +% Read by tex4ht-cond4ht. +% +% Copyright 2016-2020 TeX Users Group +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. +% +\AddFile{0}{Preamble} +\AddFile{0}{tex4ht} +\AddFile{0}{tex4ht2} +\AddFile{0}{etex4ht} +\AddFile{2}{book} +\AddFile{2}{report} +\AddFile{2}{article} +\AddFile{1}{latex} +\AddFile{9}{titlesec} +\AddFile{2}{tcilatex} +\AddFile{7}{seslideb} +\AddFile{9}{jeep} +\AddFile{9}{apacite} +\AddFile{9}{mla} +\AddFile{6}{biblatex} +\AddFile{6}{biblatex-chicago} +\AddFile{6}{reading} +\AddFile{5}{debug} +\AddFile{5}{footnote-dw} +\AddFile{8}{varioref} +\AddFile{8}{nameref} +\AddFile{8}{cleveref} +\AddFile{8}{authblk} +\AddFile{8}{geometry} +\AddFile{8}{byname} +\AddFile{7}{xr} +\AddFile{7}{xr-hyper} +\AddFile{7}{url} +\AddFile{9}{path} +\AddFile{7}{hyperref} +\AddFile{9}{hypcap} +\AddFile{8}{fleqn} +\AddFile{7}{supertabular} +\AddFile{7}{array} +\AddFile{9}{dcolumn} +\AddFile{7}{longtable} +\AddFile{7}{pctable} +\AddFile{8}{tabulary} +\AddFile{8}{tabulary-a} +\AddFile{7}{tabularx} +\AddFile{9}{tabu} +\AddFile{9}{mdwtab} +\AddFile{9}{multirow} +\AddFile{8}{theorem} +\AddFile{8}{ntheorem} +\AddFile{8}{bussproofs} +\AddFile{8}{proof} +\AddFile{9}{wrapfig} +\AddFile{9}{subscript} +\AddFile{9}{subfigure} +\AddFile{9}{caption} +\AddFile{9}{subcaption} +\AddFile{9}{makeidx} +\AddFile{9}{splitidx} +\AddFile{6}{glossaries} +\AddFile{6}{glossary} +\AddFile{9}{chicago} +\AddFile{9}{srcltx} +\AddFile{9}{emulateapj} +\AddFile{7}{ifthen} +\AddFile{9}{picins} +\AddFile{9}{nomencl} +\AddFile{2}{fontmath} +\AddFile{5}{latex209} +\AddFile{8}{t2benc} +\AddFile{9}{ot4enc} +\AddFile{9}{pd1enc} +\AddFile{4}{inputenc} +\AddFile{8}{memoir} +\AddFile{8}{abstract} +\AddFile{8}{verse} +\AddFile{8}{mempatch} +\AddFile{9}{revtex4} +\AddFile{9}{aps} +\AddFile{9}{revsymb} +\AddFile{7}{mwart} +\AddFile{7}{mwrep} +\AddFile{7}{mwbk} +\AddFile{9}{aa} +\AddFile{9}{latex2man} +\AddFile{9}{texinfo} +\AddFile{9}{doc} +\AddFile{9}{holtxdoc} +\AddFile{9}{scrbook} +\AddFile{9}{scrartcl} +\AddFile{9}{scrreprt} +\AddFile{6}{letter} +\AddFile{9}{elsart} +\AddFile{9}{apa} +\AddFile{9}{apa-a} +\AddFile{9}{JHEP} +\AddFile{9}{TextBook} +\AddFile{9}{combine} +\AddFile{9}{g-brief} +\AddFile{9}{ltxguide} +\AddFile{9}{extarticle} +\AddFile{9}{extbook} +\AddFile{9}{extletter} +\AddFile{9}{extproc} +\AddFile{9}{extreport} +\AddFile{5}{amsart} +\AddFile{5}{amsbook} +\AddFile{5}{amsproc} +\AddFile{5}{amsldoc} +\AddFile{9}{amsdtx} +\AddFile{5}{amsthm} +\AddFile{5}{amsbsy} +\AddFile{8}{amssymb} +\AddFile{5}{amsmath} +\AddFile{8}{gauss} +\AddFile{5}{amsfonts} +\AddFile{5}{amstext} +\AddFile{5}{amstex1} +\AddFile{9}{braket} +\AddFile{9}{mathtools} +\AddFile{9}{llncs} +\AddFile{9}{llncs-a} +\AddFile{9}{lncse} +\AddFile{9}{lncse-a} +\AddFile{5}{amstex} +\AddFile{5}{amsppt} +\AddFile{9}{bibtopic} +\AddFile{9}{overcite} +\AddFile{9}{harvard} +\AddFile{9}{jurabib} +\AddFile{9}{scrjura} +\AddFile{7}{natbib} +\AddFile{5}{babel} +\AddFile{7}{csquotes} +\AddFile{7}{CJK} +\AddFile{8}{arabicore} +\AddFile{8}{lfeenc} +\AddFile{9}{cp1256} +\AddFile{9}{8859-6} +\AddFile{8}{alatex} +\AddFile{8}{rlbabel} +\AddFile{8}{hebtex} +\AddFile{8}{abidir} +\AddFile{8}{hewrite} +\AddFile{8}{aoutput} +\AddFile{8}{koi8-r} +\AddFile{6}{latin2} +\AddFile{8}{frenchb} +\AddFile{7}{german} +\AddFile{5}{ngerman} +\AddFile{9}{germanb} +\AddFile{9}{ngermanb} +\AddFile{9}{manju} +\AddFile{7}{italian} +\AddFile{7}{french} +\AddFile{9}{verbatimfiles} +\AddFile{9}{verbatim} +\AddFile{7}{moreverb} +\AddFile{7}{fancyvrb} +\AddFile{9}{minted} +\AddFile{9}{pythontex} +\AddFile{9}{prosper} +\AddFile{9}{prosper-a} +\AddFile{8}{powerdot} +\AddFile{8}{powerdot-a} +\AddFile{9}{beamer} +\AddFile{9}{beamerbasetoc} +\AddFile{9}{beamerbasefont} +\AddFile{9}{seminar} +\AddFile{9}{seminar-a} +\AddFile{9}{slides} +\AddFile{9}{foils} +\AddFile{9}{slidesec} +\AddFile{9}{texpower} +\AddFile{9}{xy} +\AddFile{9}{pictex} +\AddFile{9}{diagrams} +\AddFile{9}{pstricks} +\AddFile{9}{pst-all} +\AddFile{7}{epsf} +\AddFile{7}{psfig} +\AddFile{7}{epsfig} +\AddFile{4}{graphics} +\AddFile{4}{graphicx} +\AddFile{9}{svg} +\AddFile{9}{endfloat} +\AddFile{9}{mfpic} +\AddFile{9}{pb-diagram} +\AddFile{7}{amscd} +\AddFile{9}{pgf} +\AddFile{7}{color} +\AddFile{7}{xcolor} +\AddFile{7}{dvipsnam} +\AddFile{7}{svgnam} +\AddFile{7}{colortbl} +\AddFile{6}{dvips} +\AddFile{9}{textures} +\AddFile{9}{dvipdf} +\AddFile{9}{dvipsone} +\AddFile{9}{fig4tex} +\AddFile{9}{pctex32} +\AddFile{9}{overpic} +\AddFile{9}{dratex} +\AddFile{9}{europecv} +\AddFile{9}{resume} +\AddFile{9}{curve} +\AddFile{9}{vowel} +\AddFile{9}{enumitem} +\AddFile{9}{esperanto} +\AddFile{9}{IEEEtran} +\AddFile{9}{enumerate} +\AddFile{9}{accents} +\AddFile{9}{linguex} +\AddFile{9}{cgloss4e} +\AddFile{9}{covington} +\AddFile{9}{pst-jtree} +\AddFile{9}{diagram} +\AddFile{9}{subeqnarray} +\AddFile{9}{eurosym} +\AddFile{9}{SIunits} +\AddFile{9}{sistyle} +\AddFile{9}{ushort} +\AddFile{9}{chapterbib} +\AddFile{9}{microtype} +\AddFile{9}{bm} +\AddFile{9}{beton} +\AddFile{9}{everyshi} +\AddFile{9}{quoting} +\AddFile{9}{titling} +\AddFile{9}{appendix} +\AddFile{9}{res} +\AddFile{9}{res-a} +\AddFile{9}{algorithmic} +\AddFile{9}{algorithmicx} +\AddFile{9}{algorithm} +\AddFile{9}{booktabs} +\AddFile{9}{tocloft} +\AddFile{7}{minitoc} +\AddFile{9}{gloss} +\AddFile{9}{dsfont} +\AddFile{9}{afterpage} +\AddFile{8}{euler} +\AddFile{8}{eucal} +\AddFile{9}{longdiv} +\AddFile{7}{index} +\AddFile{7}{multind} +\AddFile{7}{imakeidx} +\AddFile{9}{tugboat} +\AddFile{9}{ltugboat} +\AddFile{9}{ltugboat-a} +\AddFile{9}{ltugproc} +\AddFile{9}{ltugproc-a} +\AddFile{9}{mls} +\AddFile{9}{rotating} +\AddFile{9}{boxedminipage} +\AddFile{9}{ulem} +\AddFile{9}{go} +\AddFile{9}{paralist} +\AddFile{9}{pifont} +\AddFile{9}{listings} +\AddFile{9}{alphanum} +\AddFile{9}{lineno} +\AddFile{9}{errata} +\AddFile{9}{epigraph} +\AddFile{9}{float} +\AddFile{9}{floatflt} +\AddFile{9}{floatpag} +\AddFile{7}{fancybox} +\AddFile{7}{adjustbox} +\AddFile{7}{awesomebox} +\AddFile{7}{alltt} +\AddFile{9}{lb} +\AddFile{7}{latin1} +\AddFile{7}{utf8} +\AddFile{7}{utf8x} +\AddFile{7}{ucs} +\AddFile{9}{acm-proc-article-sp} +\AddFile{9}{sig-alternate} +\AddFile{9}{endnotes} +\AddFile{9}{2up} +\AddFile{9}{web} +\AddFile{9}{exerquiz} +\AddFile{9}{nicefrac} +\AddFile{9}{multicol} +\AddFile{2}{lettrine} +\AddFile{9}{osudeG} +\AddFile{7}{vanilla} +\AddFile{9}{ProTex} +\AddFile{9}{th4} +\AddFile{9}{footmisc} +\AddFile{9}{writer} +\AddFile{9}{mdwlist} +\AddFile{9}{sverb} +\AddFile{9}{syntax} +\AddFile{9}{soul} +\AddFile{5}{plain} +\AddFile{9}{manmac} +\AddFile{8}{mex} +\AddFile{7}{eplain} +\AddFile{7}{context} +\AddFile{5}{amsopn} +\AddFile{9}{cp850} +\AddFile{9}{cp852} +\AddFile{9}{cp862} +\AddFile{9}{cp1250} +\AddFile{9}{cp1252} +\AddFile{9}{cp437} +\AddFile{9}{cp437de} +\AddFile{9}{cp865} +\AddFile{9}{norsk} +\AddFile{9}{polish} +\AddFile{9}{polski} +\AddFile{9}{portuges} +\AddFile{9}{romanian} +\AddFile{9}{russianb} +\AddFile{9}{scottish} +\AddFile{9}{slovak} +\AddFile{9}{slovene} +\AddFile{9}{spanish} +\AddFile{9}{swedish} +\AddFile{9}{turkish} +\AddFile{9}{ukraineb} +\AddFile{9}{usorbian} +\AddFile{9}{welsh} +\AddFile{9}{hebrew} +\AddFile{9}{austrian} +\AddFile{9}{catalan} +\AddFile{9}{croatian} +\AddFile{9}{czech} +\AddFile{9}{danish} +\AddFile{9}{dutch} +\AddFile{9}{english} +\AddFile{9}{esperant} +\AddFile{9}{estonian} +\AddFile{9}{finnish} +\AddFile{9}{francais} +\AddFile{9}{galician} +\AddFile{9}{greek} +\AddFile{9}{magyar} +\AddFile{9}{exam} +\AddFile{9}{ctex} +\AddFile{9}{polyglossia} +\AddFile{9}{gloss-french} +\AddFile{9}{fontspec} +\AddFile{9}{fontspec-xetex} +\AddFile{9}{fontspec-luatex} +\AddFile{9}{tuenc-xetex} +\AddFile{9}{tuenc-xetex-input} +\AddFile{9}{tuenc-luatex} +\AddFile{9}{framed} +\AddFile{9}{mdframed} +\AddFile{9}{tcolorbox} +\AddFile{9}{parallel} +\AddFile{9}{skak} +\AddFile{9}{chessboard} +\AddFile{9}{animate} +\AddFile{9}{sectionbreak} +% \AddFile{9}{mktex4ht} diff --git a/Master/texmf-dist/source/generic/tex4ht/t1fontmake.lua b/Master/texmf-dist/source/generic/tex4ht/t1fontmake.lua new file mode 100644 index 00000000000..0c3d6109820 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/t1fontmake.lua @@ -0,0 +1,48 @@ +local libertineproperty = function(x) + local property = x:gsub("I","italic") + property = property:gsub("B", "bold") + return string.lower(property) +end + + +local fontfixes = { +["Lin Libertine"] = function(x) + return "Linux Libertine O", libertineproperty(x) +end, +["Lin Biolinum"] = function(x) + return "Linux Biolinum O", libertineproperty(x) .. "sans" +end +} + +for rec in io.lines() do + local filename = rec:match("([^%/]+).tfm$") + local propertystring = filename:lower() + local fontname = filename:match("([^%-]+)") + local t = {} + fontname:gsub("([A-Z]*[a-z]+)", function(x) t[#t+1] = x end) + fontname = table.concat(t," ") + local fontfunc = fontfixes[fontname] + if fontfunc then + fontname, propertystring = fontfunc(filename) + propertystring = string.lower(propertystring) + end + local bold = propertystring:match("bold") and "font-weight: bold;" + local slanted = propertystring:match("slanted") and "font-style: oblique;" + local italic = propertystring:match("italic") and "font-style: italic;" + local smallcaps = (propertystring:match("sc") or propertystring:match("smallcaps")) and "font-variant: small-caps;" + local sans = propertystring:match("sans") and "sans-serif" + local mono = propertystring:match("mono") and "monospace" + local cssfontname = string.format("font-name: '%s', %s", fontname,(mono or sans) or "serif") + local t = {} + table.insert(t,bold) + table.insert(t,slanted) + table.insert(t,italic) + table.insert(t,smallcaps) + table.insert(t,cssfontname) + local css = table.concat(t, " ") + print(string.format('\\<%s\\><<<', filename)) + print(".lm-ec") + print("htfcss: ".. filename .." " ..css) + print(">>>") + print(string.format("\n\\AddFont{%s}{alias/t1fonts/%s}{}\n", filename, filename)) +end diff --git a/Master/texmf-dist/source/generic/tex4ht/t1fontsample.tex b/Master/texmf-dist/source/generic/tex4ht/t1fontsample.tex new file mode 100644 index 00000000000..5d34832678b --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/t1fontsample.tex @@ -0,0 +1,21 @@ +\documentclass{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\def\sample{``PříliÅ¡ žluÅ¥ouÄký kůň úpÄ›l Äábelské ódy''} + +\usepackage{libertine} + +\begin{document} + +\sample + +\textit{\sample} + +\textbf{\sample} + +\textit{\textbf{\sample}} + +\textsc{\sample} + +\end{document} diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex new file mode 100644 index 00000000000..f3db98f2e41 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex @@ -0,0 +1,39084 @@ +% $Id: tex4ht-4ht.tex 921 2021-05-02 17:08:51Z karl $ +% tex tex4ht-4ht or ht tex tex4ht-4ht +% +% Copyright 2009-2021 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\input DraTex.sty +\input AlDraTex.sty + +\DrawOff + +\def\writesixteen#1{\immediate\write1616{#1}} +\writesixteen{----------Verify length of lines!!!!------------} +\writesixteen{----------Verify length of lines!!!!------------} +\writesixteen{----------Verify length of lines!!!!------------} +\writesixteen{----------Verify length of lines!!!!------------} + +\newif\ifalprotex \alprotexfalse + +\hbadness=10000 \vbadness=10000 \hfuzz=99in \vfuzz=99in +\def\BREAK{^^J} + +\def\Link#1\EndLink{} + +\openin15=th4.4ht + \ifeof15 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% replacement for TeX4ht %%%%%%%%%%%%%%%%%% +\csname newif\endcsname\ifHtml \Htmlfalse +\def\-#1{\ifx#1-\expandafter\TEMP\else\expandafter#1\fi} +\expandafter\let\csname bye\endcsname=\end +\def\TEMP#1/#2/#3/{} +\def\HTable#1{} +\def\'#1'{} +\def\`#1'{} +\let\TableOfContents=\relax +\def\Part#1{} +\def\Chapter#1{} +\def\Appendix#1{} +\def\Section#1{} +\def\SubSection#1{} +\def\Margin#1{} +\def\HCode#1{} +\def\LinkPort\<#1\>{} +\def\TagSec#1{} +\def\RefSec#1{} +\def\List#1{} \let\ShortList=\List +\def\EndList{} +\def\item{} +\def\IgnorePar{} +\def\EndP{} +\catcode`\:=11 +\csname newcount\endcsname\tmp:cnt + \def\no:catcodes#1#2#3{% + \tmp:cnt=#1 + \def\no::catcodes{% + \catcode\tmp:cnt=#3 + \ifnum\tmp:cnt<#2 + \advance\tmp:cnt by 1 \expandafter\no::catcodes + \fi }% + \no::catcodes } + \let\:oldlq=\` +\let\:oldrq=\' +\def\'{\leavevmode \:cats \::cats} +\def\::cats#1{\if #1"\expandafter\:oldrq + \else \def\:eat##1#1{\tt ##1\egroup}\expandafter\:eat\fi} +\def\`{\leavevmode \:cats \:::cats} +\def\:::cats#1{\if #1"\expandafter\:oldlq + \else \def\:eat##1#1{`{\tt ##1}'\egroup}\expandafter\:eat\fi} +\def\:cats{\bgroup \no:catcodes0{255}{12}\catcode`\ = 10 + \catcode`\^^M = 10 \catcode`\^^I = 10 +} + +\def\HPage{} \def\EndHPage{} +\def\Verbatim{\bgroup\catcode`\\=12 \catcode`\#=12 + \catcode`\^=12 \catcode`\_=12 + \catcode`\{=12 \catcode`\}=12 \catcode`\%=12 \:vrb} +\long\def\:vrb#1EndVerbatim{\egroup} + + \closein15 + \def\next{%\input DraTex.sty + \input ProTex.sty + \AlProTex{sty,<<<>>>,|,title,list,[],ClearCode}} + \catcode`\:=12 +\else + \closein15 + \def\next{%\input DraTex.sty + \input tex4ht.sty + \Preamble{html,th4,family,sections+,xhtml,next} + \Configure{@HEAD}{\HCode{}} +% \input MyTeX4ht.sty {}% + \input ProTex.sty + \AlProTex{sty,<<<>>>,|,title,list,[],ClearCode} + \EndPreamble + } +\fi + +\next + +%\CodeLineNo % Set line numbers in the output, using %. +% to change the comment char used: \srclineBOT{some symbol} +% Sadly, this causes compilation to fail in unknown circumstances. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\expandafter \ifx \csname append:def\endcsname \relax + \expandafter\def\csname append:def\endcsname#1#2{% + \def\Xtemp{\def#1}% + \expandafter\expandafter\expandafter\Xtemp\expandafter{#1#2}} +\fi + +\expandafter \ifx \csname Verbatim\endcsname \relax + \def\Verbatim{\bgroup + \catcode`\^=10 \catcode`\\=10 \catcode`\%=10 + \catcode`\{=10 \catcode`\}=10 \catcode`\#=10 \catcode`\#=10 + \XVerbatim} + \long\def\XVerbatim#1EndVerbatim{\egroup} +\fi + +\expandafter \ifx \csname Verb\endcsname \relax + \def\Verb{\bgroup \catcode`\^=10 \catcode`\\=10 \catcode`\%=10 + \catcode`\{=10 \catcode`\}=10 \catcode`\#=10 \catcode`\#=10 + \leavevmode \Xctgs} + \def\Xctgs#1{\def\Xeat##1#1{\egroup}\Xeat } +\fi + +\ifx \HAssign\UnDef + +\csname newcount\endcsname \tmpXxXcnt + +\def\advXxX#1{\def\XxXvar{#1}\futurelet\XxXtemp\AdvancXxX} +\def\AdvancXxX{\ifx [\XxXtemp \expandafter\AdvancXxXe + \else \expandXxXafter{\expandafter\advXxXc\XxXvar}\fi} +\def\AdvancXxXe[#1]{\expandafter\advXxXc\csname + \expandafter\string\XxXvar[#1]\endcsname} + +\def\gXxXAdvance#1{\bgroup \def\XxXtemp{#1}% + \tmpXxXcnt#1\afterassignment\XxXgplus \mthXxXop\tmpXxXcnt} +\def\XxXgplus{\expandafter\xdef\XxXtemp{\the\tmpXxXcnt}\egroup} +\def\XxXAdvance#1{\bgroup \def\XxXtemp{#1}% + \tmpXxXcnt#1\afterassignment\XxXaplus \mthXxXop\tmpXxXcnt} +\def\XxXaplus{\xdef\XxXtemp{\def\expandafter\noexpand\XxXtemp{\the\tmpXxXcnt}}% + \egroup \XxXtemp} +\def\HAssign{\XxXssg\edef} +\def\gHAssign{\XxXssg\xdef} + +\def\XxXssg#1#2{\let\dXxXfn#1\def\XxXvar{#2}\futurelet\XxXtemp\XxXAssgn} +\def\XxXAssgn{% + \ifx [\XxXtemp + \expandafter\dXxXfn\XxXvar[##1]{% + \noexpand\csname \expandafter + \string\XxXvar[##1]\noexpand\endcsname}% + \expandafter\assgXxXm + \else \afterassignment\assgXxXv \expandafter \tmpXxXcnt \fi } + +\def\assgXxXv{\expandafter\dXxXfn\XxXvar{\the\tmpXxXcnt}} +\def\assgXxXm[#1]{% + \def\XxXtemp{\expandafter\dXxXfn + \csname \expandafter\string\XxXvar[#1]\endcsname{\the\tmpXxXcnt}}% + \afterassignment\XxXtemp \tmpXxXcnt} + +\fi +\catcode`\:=11 +\csname newcount\endcsname\tmp:cnt +\expandafter\ifx \csname no:catcodes\endcsname\relax + \def\no:catcodes#1#2#3{% + \tmp:cnt=#1 + \def\no::catcodes{% + \catcode\tmp:cnt=#3 + \ifnum\tmp:cnt<#2 + \advance\tmp:cnt by 1 \expandafter\no::catcodes + \fi }% + \no::catcodes } +\fi +\let\:oldlq=\` +\let\:oldrq=\' +\def\'{\leavevmode \:cats \::cats} +\def\::cats#1{\if #1"\expandafter\:oldrq + \else \def\:eat##1#1{\tt ##1\egroup}\expandafter\:eat\fi} +\def\`{\leavevmode \:cats \:::cats} +\def\:::cats#1{\if #1"\expandafter\:oldlq + \else \def\:eat##1#1{`{\tt ##1}'\egroup}\expandafter\:eat\fi} +\bgroup + \catcode`\^=7 + \gdef\:cats{\bgroup \no:catcodes0{255}{12}\catcode`\ = 10 + \catcode`\^^M = 10 \catcode`\^^I = 10 + } +\egroup +\catcode`\:=12 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\HOME{/opt/cvr/gurari/tex4ht.dir/texmf/tex/generic/tex4ht/} +\def\SOURCE{/opt/cvr/gurari/main.dir/html.dir} + +\newcount\tmpcnt \tmpcnt\time \divide\tmpcnt 60 +\edef\temp{\the\tmpcnt} +\multiply\tmpcnt -60 \advance\tmpcnt \time + +\edef\version{\the\year-\ifnum \month<10 0\fi + \the\month-\ifnum \day<10 0\fi\the\day + -\ifnum \temp<10 0\fi \temp + :\ifnum \tmpcnt<10 0\fi\the\tmpcnt} + +\def\CopyYear.#1.{% + \ifnum #1=\year #1\space\space\space\space\space\space + \else #1-2009\fi +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\ConfigFiles=\empty +\def\AddFile#1#2{\csname append:def\endcsname\ConfigFiles{\AddFile{#1}{#2}}} + +\AddFile{0}{Preamble} +\AddFile{0}{tex4ht} +\AddFile{0}{tex4ht2} +\AddFile{0}{etex4ht} + +\let\OutFiles=\empty +\def\AddFile{\futurelet\next\contAddFile} +\def\contAddFile{% + \ifx [\next \def\next{\finishAddFile}% + \else \def\next{\finishAddFile[]}\fi + \bgroup \catcode`\_=12 \next +} +\def\finishAddFile[#1]#2#3{\egroup + \writesixteen{ ==> <#1, #2, #3>}% + \csname append:def\endcsname\OutFiles{\OutputCodE\<\if !#1!#3\else #1\fi.4ht\>}% + \csname append:def\endcsname\ConfigFiles{\AddFile{#2}{#3}}% +} + +\ifHtml + +\def\tocSubSection#1#2#3{\par| #2} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % must appear before all TocAt + % that refer to SubSection + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\TocAt{Part,Chapter,Section,LikeSection} +\TocAt{Chapter,Section,LikeSection,/Appendix,/Part} +\TocAt{LikeChapter,Section,LikeSection,/Appendix,/Part} +\TocAt{Appendix,Section,LikeSection,/Appendix,/Part} +\TocAt{Section,SubSection,/LikeSection} +\TocAt{LikeSection,SubSection,/Section} + +\CutAt{Part} +\CutAt{Chapter,LikeChapter,Appendix,Part} +\CutAt{LikeChapter,Chapter,Appendix,Part} +\CutAt{Appendix,Chapter,LikeChapter,Part} +\CutAt{Section,LikeSection,Appendix,Chapter,LikeChapter,Part} +\CutAt{LikeSection,Section,Appendix,Chapter,LikeChapter,Part} +\CutAt{SubSection,Section,LikeSection,Appendix,Chapter,LikeChapter,Part} + +\else +\def\ParentOf#1{} +\csname TableOfContents\endcsname +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\by{by}\def\={=} +\let\pReModifyOutputCode=\ModifyOutputCode +\def\ModifyOutputCode{% + \def\by{}\def\={}% + \pReModifyOutputCode} + +\csname NoOutputCode\endcsname + +\let\coDE=\< +\def\<{\vfil\par\coDE} + +\tracingstats=1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\IgnorePar\EndP \HCode{

A `Literate' View of tex4ht.sty

} + +\csname TableOfContents\endcsname[ParentOf,Part,Chapter,% + Appendix,LikeChapter%,Section,LikeSection% + ] + +%%%%%%%%%%%%%%%%%%%%% +\Part{Deeper Toc} +%%%%%%%%%%%%%%%%%% + +\csname TableOfContents\endcsname[ParentOf,Part,Chapter,% + Appendix,LikeChapter,Section,LikeSection% + ] + +%----------------- shared with TeX4ht ------------------------------------ + +%%%%%%%%%%%%%%%%%%%%% +\Part{Shared} +%%%%%%%%%%%%%%%%%% + +\<<< +!*?: >>> + +\
<<< +|1-\file:id-\TitleCount >>> + +\<<< +Q>>> + +%------------------------------ start here ------------------------ + +\Chapter{Outline of the Code} + +Keeping all the existing copyright messages in this file unchanged, +hence splitting the text from copyright line. + +\<<< +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project . +% +% If you modify this program, changing the +% version identification would be appreciated. +\immediate\write-1{version |version} +>>> + +This is prepended to the definition in tex4ht-cpright.tex, hence no need +to include the above (new) ``TeX4ht license text''. I don't understand. + +\<<< +% Copyright 2009-|the|year|empty TeX Users Group +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\<<< +% book.4ht |version % +% Copyright (C) |CopyYear.1997. Eitan M. Gurari % +| +| +| +| +| +| + +| +| +| +| +\Hinput{book} +\endinput +>>> \AddFile{2}{book} + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% report.4ht |version % +% Copyright (C) |CopyYear.1997. Eitan M. Gurari % +| + +| +| +| + +| +| +| +| +| +| + +| +\Hinput{report} +\endinput +>>> \AddFile{2}{report} + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% article.4ht |version % +% Copyright (C) |CopyYear.1997. Eitan M. Gurari % +| + +| +| + +| +| +| +| +| +| +|
+|
+\Hinput{article} +\endinput +>>> \AddFile{2}{article} + +\<<< +| +| +| |%after tocs, divs, and cuts|% +>>> + +\<<< +| +>>> + +\<<< +\long\def\:tempc{\@roman \c@enumiii} +\ifx \theenumiii\:tempc + \def\:tempc{\a:enumiii\@roman\c@enumiii\b:enumiii} + \HLet\theenumiii\:tempc +\fi +\NewConfigure{enumiii}{2} +>>> + +\<<< +|
+\ConfigureToc{appendix} {\empty}{\ }{}{\newline} +\ConfigureToc{chapter} {\empty}{\ }{}{\newline} +\ConfigureToc{likechapter} {}{\empty}{}{\newline} +>>> + +\
<<< +\ConfigureToc{likeparagraph} {}{\empty}{}{\newline} +\ConfigureToc{likepart} {}{\empty}{}{\newline} +\ConfigureToc{likesection} {}{\empty}{}{\newline} +\ConfigureToc{likesubparagraph} {}{\empty}{}{\newline} +\ConfigureToc{likesubsection} {}{\empty}{}{\newline} +\ConfigureToc{likesubsubsection} {}{\empty}{}{\newline} +\ConfigureToc{paragraph} {\empty}{\ }{}{\newline} +\ConfigureToc{part} {\empty}{\ }{}{\newline} +\ConfigureToc{section} {\empty}{\ }{}{\newline} +\ConfigureToc{subparagraph} {\empty}{\ }{}{\newline} +\ConfigureToc{subsection} {\empty}{\ }{}{\newline} +\ConfigureToc{subsubsection} {\empty}{\ }{}{\newline} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Package patching handling} +%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%% +% tutorial begin +%%%%%%%%%%%%%%%%%%%%%%%% + +By default, .4ht files are loaded at begin document. When we need to patch +a package at the moment when it is loaded, we can use the mechanism provided +by usepackage.4ht. + +The obsolete way is to use the following construct: + +\Verbatim +\<<< +packagename,>>> + +\<<< +\def\:temp{packagename}\ifx\@currname\:temp +% package redefinitions +\fi +>>> +\EndVerbatim + +The downside of this that it loads usepackage.4ht again for each package +it detects. This can slow down the compilation. + +The recommended way is the following: + +\Verbatim +\<<< +% use package name as the second argument and name of the file +% that contains redefinitions as the third +\Configure{PackageHooks}{packagename.sty}{packagename-hooks.4ht} +>>> + +\<<< +% packagename-hooks.4ht (|version), generated from |jobname.tex +% Copyright 2020 TeX Users Group +| +% package redefinitions +>>>\AddFile{9}{packagename-hooks} +\EndVerbatim + +The contents of the hooks file can be following: + +\Verbatim +% code before package is loaded +% ... +\:AtEndOfPackage{ + % redefine package commands that are used in the preamble + % ... +} +\EndVerbatim + +You can use the following special commands in the hooks file: + +\Verbatim +\:dontusepackage{packagename} % prevent the package from loading +\:AtEndOfPackage{code} % redefine macros that can be used in the document preamble +\EndVerbatim + +%%%%%%%%%%%%%%%%%%%%%%%% +% tutorial end +%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +% usepackage.4ht (|version), generated from |jobname.tex +% Copyright |CopyYear.2003. Eitan M. Gurari +| + | +\endinput +>>> + +\<<< +\def\:temp{tex4ht}\ifx \:temp\@currname + \:warning{\string\usepackage{tex4ht} again?} + | +\fi +\gdef\a:usepackage{\use:package |,|} +\gdef\use:package#1,{% + \if :#1:\def\:temp##1|{}\else + \def\:temp{#1}\ifx \@currname\:temp + \def\:temp##1|{\input usepackage.4ht }% + \else \let\:temp=\use:package \fi + \fi \:temp} +| +>>> + +\<<< +\def\:temp#1htex4ht.def,tex4ht.sty#2|{\def\:temp{#2}} +\expandafter\:temp \@filelist htex4ht.def,tex4ht.sty|% +\ifx \:temp\empty \else + \:warning{if + \string\RequirePackage[tex4ht]{hyperref} or + \string\usepackage[tex4ht]{hyperref} was + used try instead, repectively, + \string\RequirePackage{hyperref} or + \string\usepackage{hyperref}} +\fi +>>> + +%%%%%%%%%%%%%%%%% +\Part{latex.ltx} +%%%%%%%%%%%%%%%% + +\Link[/usr/local/teTeX/share/texmf/tex/latex/base/latex.ltx]{}{}latex.ltx\EndLink, + +\Link[http://ctan.org/tex-archive/macros/latex/base/]{}{}latex +source components\EndLink + +\def\1.#1.{\Link[http://ctan.org/tex-archive/macros/latex/base/#1.dtx]{}{}#1\EndLink} + +\<<< +% latex.4ht (|version), generated from |jobname.tex +% Copyright |CopyYear.1997. Eitan M. Gurari +| +| +| +| +| +| |%|1.ltclass.|% + |%|1.ltdirchk.|% +| |%|1.ltplain.|% + |%|1.ltvers.|% + |%|1.ltdefns.|% + |%|1.ltalloc.|% + |%|1.ltcntrl.|% + |%|1.lterror.|% + |%|1.ltpar.|% +| |%|1.ltspace.|% + |%|1.ltlogos.|% + |%|1.ltfiles.|% +| |%|1.ltoutenc.|% +| |%|1.ltcounts.|% +| |%|1.ltlength.|% + |%|1.ltfssbas.|% +| |%|1.ltfsstrc.|% + |%|1.ltfsscmp.|% +| |%|1.ltfssdcl.|% + |%|1.ltfssini.|% + |%|1.ltfntcmd.|% + |%|1.ltpageno.|% +| |%|1.ltxref.|% +| |%|1.ltmiscen.|% +| |%|1.ltmath.|% +| |%|1.ltlists.|% +| |%|1.ltboxes.|% +| |%|1.lttab.|% +| |%|1.oltpictur.|% +| |%|1.ltthm.|% +| |%|1.ltsect.|% +| |%|1.ltfloat.|% +| |%|1.ltidxglo.|% +| |%|1.ltbibl.|% +| |%|1.ltpage.|% +| |%|1.ltoutput.|% +| |%|1.ltfinal.|% +| +| + +\let\:MClass:|=\c:MathClass: +\NewConfigure{MathClass}[5]{\bgroup + \let\@nodocument|=\empty + \let\normalcolor|=\relax + \:MClass:{#1}{#2}{#3}{#4}{#5}\egroup} + +\let\:MDelims:|=\c:MathDelimiters: +\NewConfigure{MathDelimiters}[2]{\bgroup + \let\@nodocument|=\empty + \let\normalcolor|=\relax + \:MDelims:{#1}{#2}\egroup} + +\Hinput{latex} +\endinput +>>> \AddFile{1}{latex} + +\<<< +\edef\:temp{% + \every@math@size={\noexpand\ifx \noexpand\EndPicture\noexpand\:UnDef + \noexpand\else \the\every@math@size \noexpand\fi}% +} +\:temp +>>> + +\<<< +\ifx\SaveMkHalignConf:g\:UnDef \else \expandafter\endinput\fi +>>> + + Latex prohibits content before the \`'\begin{document}' by putting +\`'\ht:everypar{\@nodocument}' before +\`'\begin{document}' to get an error if text appears before the +beginning. A possible solution is to put sensitive stuff +in, for instance, \`'{ \let\@nodocument=\empty ...}'. + +It is unsafe to define \''\romannumeral' because it is used +within immediate definition \''\edef', as well as definitions of macro +names \''\csname ...\romannumeral ...\endcsname'. Consider also +\''\Configure{enumerate}' (e.g., +\HPage{paralist} +\Verbatim +\documentclass[a4paper]{article} +\usepackage{amssymb} +\usepackage{amsmath} + +\setcounter{MaxMatrixCols}{10} + +% \RequirePackage[nocfg]{paralist}% avoid locals +% \setdefaultenum{a.}{(i)}{A.}{I.} + +\begin{document} + +\title{Test} +\date +\author{C. Fierro} + +Default list: +\begin{enumerate} +\item \label{7-a}$x \underset{\text{(\ref{7-i})}}{\leq }y$ +\item \label{7-b} $a\underset{\text{(\ref{7-ii})}}{\geq }b$ +\end{enumerate} + +Custom list: +\begin{enumerate}%[\itshape (i)]{} +\item \label{7-i}$y\underset{\text{(\ref{7-a})}}{\geq }x$, +\item \label{7-ii}$b \underset{\text{(\ref{7-b})}}{\leq }a$ +\end{enumerate} + +\end{document} +\EndVerbatim +\EndHPage{}) + +\<<< +\:CheckOption{enum}\if:Option + \def\:temp#1{\a:romannumeral {\expandafter + \:slowroman\romannumeral #1@}\b:romannumeral} + \HLet\@roman=\:temp + \def\:temp#1{\a:romannumeral {\expandafter + \:Slowroman\romannumeral #1@}\b:romannumeral} + \HLet\@Roman=\:temp +\item + :warning{To configure roman numbers use + the option 'enum' (unsafe)} +\fi +\NewConfigure{romannumeral}{2} +>>> + +\<<< +\def\:Slowroman#1{\ifx @#1\else |%\@slowromancap|% + \if i#1\I:rnum\else + \if v#1\V:rnum\else + \if x#1\X:rnum\else + \if l#1\L:rnum\else + \if c#1\C:rnum\else + \if d#1\D:rnum\else + \if m#1\M:rnum\else + #1\fi\fi\fi\fi\fi\fi\fi\expandafter\:Slowroman\fi +} +\NewConfigure{Roman}[7]{% + \def\I:rnum{#1}\def\V:rnum{#2}\def\X:rnum{#3}\def\L:rnum{#4}% + \def\C:rnum{#5}\def\D:rnum{#6}\def\M:rnum{#7}} +\Configure{Roman}{I}{V}{X}{L}{C}{D}{M} +>>> + +\<<< +\def\:slowroman#1{\ifx @#1\else + \if i#1\i:rnum\else + \if v#1\v:rnum\else + \if x#1\x:rnum\else + \if l#1\l:rnum\else + \if c#1\c:rnum\else + \if d#1\d:rnum\else + \if m#1\m:rnum\else + #1\fi\fi\fi\fi\fi\fi\fi\expandafter\:slowroman\fi +} +\NewConfigure{roman}[7]{% + \def\i:rnum{#1}\def\v:rnum{#2}\def\x:rnum{#3}\def\l:rnum{#4}% + \def\c:rnum{#5}\def\d:rnum{#6}\def\m:rnum{#7}} +\Configure{roman}{i}{v}{x}{l}{c}{d}{m} +>>> + +\Chapter{Classes and Packages} + +\Link[http://ctan.tug.org/ctan/tex-archive/macros/latex/base/ltdirchk.dtx]{}{}ltdirchk.dtx\EndLink + +An option \`'no_#1' asks not to load the style file \`'#1.4ht'. + +\<<< +\ifx \@ifpackageloaded\:UnDef + \long\def\@ifpackageloaded#1#2#3{} +\fi +\def\:ifpackageloaded#1#2#3{% + \:CheckOption{no_#1}\if:Option \:Optionfalse + \else \@ifpackageloaded{#1}{#2}{#3}\fi} +>>> + +\<<< +\def\:ifclassloaded#1#2#3{% + \:CheckOption{no_#1}\if:Option \:Optionfalse + \else \@ifclassloaded{#1}{#2}{#3}\fi} +\def\:iffileloaded#1#2#3{% + \:CheckOption{no_#1}\if:Option \:Optionfalse + \else | \expandafter \:tempa\fi } +>>> + +\<<< +\def\:temp{#1}\expandafter + \:iffil\@filelist,,|% + \ifx \:tempa\:temp \def\:tempa{#2}\else \def\:tempa{#3}\fi +>>> + +\<<< +\def\:iffil#1,#2|{\def\:tempa{#1}\ifx \:temp\:tempa + \let\:tempb=\empty + \else + \ifx \:tempa\empty \let\:tempb=\empty + \else \def\:tempb{\:iffil#2|}\fi + \fi \:tempb} +>>> + +We need the follwoing for definition of fonts that are introduced late, e.e., + +\Verbatim +\documentclass{amsart} + \usepackage{textcomp} + \usepackage{amssymb} +\begin{document} + +\csname Configure\endcsname{mathfrak}{[[[[}{]]]} +\csname Configure\endcsname{mathbb}{[[[[}{]]]} + +$\mathfrak{A}a^{\mathfrak{A}}$ +\end{document} +\EndVerbatim + +\<<< +\let\document:select:group\document@select@group +\def\document@select@group#1#2#3#4{% + \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi + {% + \document:select:group{#1}{#2}{#3}{}% + \expandafter\ifx \csname n:\expandafter + \:gobble\string#1:\endcsname\relax\else + \expandafter\let\csname o:\expandafter\:gobble + \string#1:\endcsname\:UnDef + \expandafter\HLet\expandafter#1\csname + n:\expandafter\:gobble\string#1:\endcsname + \expand:after{\global\expandafter\let + \csname o:\expandafter\:gobble\string#1:\endcsname}% + \csname o:\expandafter\:gobble\string#1:\endcsname + \global\let#1=#1% + \fi + #1{#4}% +}} +>>> + +%%%%%%%%%%%%%%%%%% +\Section{titlesec} + +\<<< +% titlesec.4ht (|version), generated from |jobname.tex +% Copyright |CopyYear.2000. Eitan M. Gurari +| +\ifx \ttl@assign@ii\:Undef + \ifx \ttl@sect\:UnDef\else + | + \fi + \ifx \ttl@useclass\:UnDef\else + | + \fi + | +\else + | +\fi +\Hinput{titlesec} +\endinput +>>> \AddFile{9}{titlesec} + +\<<< +\pend:defII\ttl@useclass{% + \@ifstar {}{\SkipRefstepAnchor}} +\let\ttl:select|=\ttl@select +\def\ttl@select#1{% + \edef\sc:tp{\ifttl@label\else like\fi + #1}\def\c:secnumdepth{\@nameuse{ttll@#1}}% + \ttl:select{#1}} +\let\ttl@write|=\:gobbleII +\let\ttl@glcmds\relax +\let\ttl@beginlongest\@empty +\let\ttl@midlongest\@empty +\let\ttl@endlongest\@empty +>>> + +\<<< +\pend:defII\ttl@sect{% + \@ifstar {}{\SkipRefstepAnchor}} +\let\ttl:select=\ttl@select +\def\ttl@select#1#2#3#4#5{% + \edef\sc:tp{\ifttl@label\else like\fi #1}\def\c:secnumdepth{#5}% + \ttl:select{#1}{#2}{#3}{#4}{#5}} +\let\ttl@write|=\:gobbleIII +>>> + +\<<< +\let\ttlh:hang|=\ttlh@hang +\def\ttlh@hang#1#2#3#4#5#6#7#8{% + \HtmlEnv + \expandafter\def\csname thetitle\sc:tp\endcsname{#2}% + \csname no:\sc:tp\endcsname{#8}% + \par \ttlh:hang{}{}{#3}{}{}{#6}{#7}{}} +>>> + +\<<< +\let\:seccntformat=\@seccntformat +\def\@seccntformat#1{\ifnum 0=0\the\csname c@#1\endcsname\else + \:seccntformat{#1}\fi} +>>> + + +\<<< +\let\ttl:straight@i\ttl@straight@i +\def\ttl@straight@i#1[#2]#3{% + |% + \ifttl@label \else + |% + \fi + \edef\sc:tp{\ifttl@label\else like\fi #1}% + \ttl:straight@i{#1}[{#2}]{#3}% +} +\def\ttlh@hang#1#2#3#4#5#6#7#8{% + \def\c:secnumdepth{\@nameuse{ttll@\sc:tp}}% + \:StartSec {\sc:tp}{% + \ifttl@label \ifnum \c:secnumdepth >\c@secnumdepth + \else \csname the\sc:tp\endcsname \fi \fi + }{#8}% +} +\def\:tempc#1#2#3#4{% + \begingroup + \let\everypar\@gobble% don't let titlesec to break our paragraph handling + \edef\sc:tp{\ifttl@label\else like\fi #1}% + \let\ttl@savewrite\empty + \o:ttl@select:{#1}{#2}{#3}{#4} + \endgroup +} + +\HLet\ttl@select\:tempc +>>> + +% runin and display formats ruin tex4ht section patching +% letting them to the \ttl@hang format seems to fix that +% https://tex.stackexchange.com/q/451077/2891 +\<<< +\let\ttlh@runin\ttlh@hang +\let\ttlh@display\ttlh@hang +>>> + +\<<< +\def\:temp{#1}\edef\:tempa{\expandafter + \expandafter\expandafter\:gobble + \expandafter\string\csname section\endcsname}\ifx \:temp\:tempa \else + |% +\fi +>>> + +\<<< +\edef\:tempa{\expandafter\expandafter\expandafter\:gobble + \expandafter\string\csname subsection\endcsname}\ifx \:temp\:tempa \else + {\ttl@labeltrue \ttl@addcontentsline{like#1}{#3}}% +\fi +>>> + +\<<< +\gdef\NR:Title{\a:newlabel{#3}}% +>>> + +% \def\ttlh@display#1#2#3#4#5#6#7#8{{[111]#1\ifttl@label #2\fi #4{#8}[/111]}} +% \def\ttlh@runin#1#2#3#4#5#6#7#8{{[333]#1\ifttl@label #2\fi #4{#8}[/333]}} + +TeX4ht handles stuff written to TOC itself, Titlesec caused duplicated entries in TOC, +so we just disable it's TOC handling. + +\<<< +\def\ttl@addcontentsline#1#2{\nobreak} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Scientific Word} + +\Link[ftp://ftp.mackichan.com/]{}{}mackichan\EndLink, +\Link[http://cutter.ship.edu/\string + ~ensley/tci/]{}{}tci\EndLink + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tcilatex.4ht |version % +% Copyright (C) |CopyYear.2000. Eitan M. Gurari % +| +| +\expandafter\ifx \csname @TCItagstar\endcsname\relax + | +\else + | + \ifx \@msidraft\:Undef + | +\fi \fi +| +\Hinput{tcilatex} +\endinput +>>> \AddFile{2}{tcilatex} + +\<<< +\let\tci:ProvidesPackage=\ProvidesPackage +\def\ProvidesPackage#1{% + \tci:ProvidesPackage{#1}% + \def\:temp{swpframe}\def\:tempa{#1}\ifx \:temp\:tempa + \ifx \GRAPHICSHP\:UnDef\else + \let\swp:GRAPHICSHP=\GRAPHICSHP + \:AtEndOfPackage{\let\GRAPHICSHP\swp:GRAPHICSHP}% + \fi + \ifx \graffile\:UnDef\else + \let\swp:graffile=\graffile + \:AtEndOfPackage{\let\graffile\swp:graffile}% + \fi + \ifx \GRAPHIC\:UnDef\else + \let\swp:GRAPHIC=\GRAPHIC + \:AtEndOfPackage{\let\GRAPHIC\swp:GRAPHIC}% + \fi + \fi +} +>>> + +% \ifx \BOXEDSPECIAL\:UnDef\else +% \let\swp:BOXEDSPECIAL=\BOXEDSPECIAL +% \AtEndOfPackage{\let\BOXEDSPECIAL\swp:BOXEDSPECIAL}% +% \fi +% +% + +The \`'\protect' in \`'\section{The second Section + \protect\label{two}}' is problematic because of double labels when +the toc is on. The problem can be solved with the code. + +\<<< +\def\label:gobble{\futurelet\:temp\lbl:gobble} +\def\lbl:gobble#1{\ifx\:temp\relax \expandafter\label:gobble\fi} +\AtBeginDocument{\immediate\write\:tocout{% + \let\string\label \string\label:gobble }} +>>> + +\<<< +\def\:temp#1#2#3#4{#2\ref{#4}#3} +\ifx \:temp\hyperref + \def\hyperref{\bgroup + \catcode`\#=12 \catcode`\~=12 \catcode`\_=12 \h:pref}% + \def\h:pref#1#2#3#4{\egroup\Link[#4]{}{}#1\EndLink}% +\fi +>>> + +In version 4 \''\hyperref' is aliased to \''\x@hyperref'. + +\<<< +\def\y@hyperref#1#2#3#4{% + \Link[#4]{}{}#1\EndLink + \catcode`\~ = 13 + \catcode`\$ = 3 + \catcode`\_ = 8 + \catcode`\# = 6 + \catcode`\& = 4 +} +>>> + +\<<< +\let\:tempc=\GRAPHICSPS +\pend:defI\:tempc{\a:GRAPHICSPS} +\append:defI\:tempc{\b:GRAPHICSPS} +\HLet\GRAPHICSPS=\:tempc +\NewConfigure{GRAPHICSPS}{2} +>>> + +\<<< +\let\:tempc=\GRAPHICSHP +\pend:defI\:tempc{\a:GRAPHICSHP} +\append:defI\:tempc{\b:GRAPHICSHP} +\HLet\GRAPHICSHP=\:tempc +\NewConfigure{GRAPHICSHP}{2} +>>> + +\<<< +\let\:tempc=\BOXTHEFRAME +\pend:defI\:tempc{\hbox\bgroup\a:BOXTHEFRAME} +\append:defI\:tempc{\b:BOXTHEFRAME\egroup} +\HLet\BOXTHEFRAME=\:tempc +\NewConfigure{BOXTHEFRAME}{2} +\let\:IFRAME=\IFRAME +\let\:DFRAME=\DFRAME +\let\:FFRAME=\FFRAME +\def\IFRAME#1#2#3#4#5#6{\a:IFRAME\leavevmode + \IgnorePar\:IFRAME{#1}{#2}{#3}{#4}{#5}{#6}\b:IFRAME} +\def\DFRAME#1#2#3#4#5{\a:DFRAME\leavevmode + \IgnorePar\:DFRAME{#1}{#2}{#3}{#4}{#5}\b:DFRAME} +\def\FFRAME#1#2#3#4#5#6#7#8{\a:FFRAME\leavevmode + \IgnorePar\:FFRAME{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}\b:FFRAME} +\NewConfigure{IFRAME}{2} +\NewConfigure{DFRAME}{2} +\NewConfigure{FFRAME}{2} +>>> + +% \def\mailto{\bgroup \catcode`\#=12 \catcode`\~=12 \catcode`\_=12 \mlto}% +% \def\mlto#1{\egroup \Link[mailto:#1]{}{}\texttt{#1}\EndLink}% + +\<<< +\def\:tempc#1#2{\o:QATOP:{\a:QATOP #1\b:QATOP}{\c:QATOP #2\d:QATOP}} +\HLet\QATOP=\:tempc +\NewConfigure{QATOP}{4} +\def\:tempc#1#2{\o:QDATOP:{\a:QDATOP #1\b:QDATOP}{\c:QDATOP #2\d:QDATOP}} +\HLet\QDATOP=\:tempc +\NewConfigure{QDATOP}{4} +\def\:tempc#1#2{\o:QTATOP:{\a:QTATOP #1\b:QTATOP}{\c:QTATOP #2\d:QTATOP}} +\HLet\QTATOP=\:tempc +\NewConfigure{QTATOP}{4} +>>> + +\<<< +\expandafter\ifx \csname o:dfrac:\endcsname \relax + | +\fi +>>> + +The following protection, e.g., for titles of sections. + +\<<< +\let\o:Greekmath:|=\Greekmath +\def\Greekmath{\protect\o:Greekmath:} +>>> + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% seslideb.4ht |version % +% Copyright (C) |CopyYear.2001. Eitan M. Gurari % +| +| +\Hinput{seslideb} +\endinput +>>> \AddFile{7}{seslideb} + +\<<< +\NewSection\swSlide{}{} +\def\PageBreak{\swSlide{\swTitle}} +\let\swTitle|=\relax +>>> + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% jeep.4ht |version % +% Copyright (C) |CopyYear.2002. Eitan M. Gurari % +| +| +\Hinput{jeep} +\endinput +>>> \AddFile{9}{jeep} + +\<<< +\let\jeep:@sect|=\no@sect +\def\no@sect#1#2#3#4#5{% + \jeep:@sect{#1}{#2}{#3}{#4}{#5\let\@svsec=\empty}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Chapter{Common to Plain and LaTeX-Plain} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\Link[http://ctan.tug.org/ctan/tex-archive/macros/latex/base/ltplain.dtx]{}{}ltplain.dtx\EndLink + +\<<< +| +>>> + +plain.tex and latex. + +The following is assumed to be within a group. + +\<<< +\def\:temp{\o:obeylines: + \let\obeylines|=\o:obeylines: + \a:obyln \global\let\x:obln|=\end:obeylines \aftergroup\x:obln + \def\:temp{% + \ifx\:tempa\par \ht:everypar{\ht:everypar{\b:obyln}}% + \else \ht:everypar{\b:obyln}\fi}% + \futurelet\:tempa\:temp } +\HLet\obeylines|=\:temp +\NewConfigure{obeylines}[3]{\c:def\a:obyln{#1}\c:def\b:obyln{#3}% + \c:def\end:obeylines{#2}} +>>> + +\ifHtml[\HPage{more}\Verbatim +xxxxxxxxxxxxxxxxxxxxx + +{\obeylines neither do +things too high for me.} + +xxxxxxxxxxxxxxxxxxxxxxxxxxxx + +xxxxxxxxxxxxxxxxxxxxx +{\obeylines neither do +things too high for me.} +xxxxxxxxxxxx + +xxxxxxxxxxxxxxxxxxxxxxx +{\obeylines neither do +things too high for me.} + +xxxxxxxxxxxxxxxxxxxxxxxxxx + +xxxxxxxxxxxxxxxxxxxxx +

neither do +

things too high for me. +

xxxxxxxxxxxxxxxxxxxxxxxxxxxx +

xxxxxxxxxxxxxxxxxxxxx neither do +

things too high for me. xxxxxxxxxxxx +

xxxxxxxxxxxxxxxxxxxxxxx neither do +

things too high for me. +

xxxxxxxxxxxxxxxxxxxxxxxxxx + +\EndVerbatim\EndHPage{}]\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Chapter{ltspace (Horizontal Spaces)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\Link[http://ctan.tug.org/ctan/tex-archive/macros/latex/base/ltspace.dtx]{}{}ltspace.dtx\EndLink + +\<<< +\NewConfigure{hspace}{3} +\Configure{hspace}{}{}{ } +\def\:temp#1{\tmp:dim|=#1\relax + \a:hspace \hsp:c\hskip #1\relax\b:hspace} +\HLet\@hspace|=\:temp +\def\:temp#1{\tmp:dim|=#1\relax + \a:hspace \hsp:c\vrule \@width\z@\nobreak + \hskip #1\hskip \z@skip\b:hspace} +\HLet\@hspacer|=\:temp +\def\hsp:c{\ifdim \tmp:dim<1em\else\c:hspace\fi + \ifdim \tmp:dim<2em\else\c:hspace\fi + \ifdim \tmp:dim<3em\else\c:hspace\fi + \ifdim \tmp:dim<4em\else\c:hspace\fi + \ifdim \tmp:dim<5em\else\c:hspace\fi} +>>> + +We need the assignment to \''\tmp:dim' because of commands like +\''\hspace{0.25em plus 0.125em minus 0.08em}'. + +\<<< +\let\:tempc\@vspace +\append:defI\:tempc{\a:vspace{#1}} +\HLet\@vspace\:tempc +\let\:tempc\@vspacer +\append:defI\:tempc{\a:vspace{#1}} +\HLet\@vspacer\:tempc +\NewConfigure{vspace}[1]{\def\a:vspace##1{#1}} +\Configure{vspace}{} +>>> + +%%%%%%%%%%%%%%%%%% +\Chapter{ltlength} +%%%%%%%%%%%%%%%%%% + +\Link[http://ctan.tug.org/ctan/tex-archive/macros/latex/base/ltlength.dtx]{}{}ltlength.dtx\EndLink + +% +%>>> + +The commands \''\settoheight', \''\settodepth', and \''\settowidth' +invoke \''\setbox' without producing output. To avoid fake pictures, +we do the following. + +\<<< +\let\:settodim|=\@settodim +\def\@settodim#1#2#3{\PictureOff \:settodim#1{#2}{#3}\PictureOn} +>>> + +%%%%%%%%%%%%% +\Chapter{Cross References} +%%%%%%%%%%%%% + +\Link[http://ctan.tug.org/ctan/tex-archive/macros/latex/base/ltxref.dtx]{}{}ltxref.dtx\EndLink + +%%%%%%%%%%%%% +\Section{LaTeX} +%%%%%%%%%%%%% + +\<<< +| +| +>>> + +%%%%%%%%%%%%% +\SubSection{Index Labels} +%%%%%%%%%%%%% + +Try to delete, or at least contain, \''\no:lbl:idx'. + +\<<< +\def\no:lnk#1#2#3\EndLink{#3} +\let\:ref|=\ref +\let\:index|=\index +\def\no:lbl:idx{\let\label|=\@gobble } +\def\toc:lbl:idx{\a:NoSection} +>>> + +%%%%%%%%%%%%% +\SubSection{ref, label, newlabel: Usage} +%%%%%%%%%%%%% + +\<<< +\def\:tempc#1{\a:pageref\o:pageref:{#1}\b:pageref} +\HLet\pageref\:tempc +\NewConfigure{pageref}[3]{% + \def\a:pageref{#1\bgroup \Configure{ref}{\Link}{\EndLink}{#3}}% + \def\b:pageref{\egroup #2}% +} +\Configure{pageref}{}{}{} +>>> + +\<<< +\NewConfigure{@newlabel}[1]{\concat:config\a:@newlabel{#1}} +\let\a:@newlabel|=\relax +| +\NewConfigure{newlabel}[2]{% + \def\a:newlabel{#1}\ifx \a:newlabel\empty + \def\label:addr{\cur:th \:currentlabel}% + \else + \def\label:addr{#1}% + \fi + \def\a:newlabel##1{\expandafter\string\c:rEfLiNK{\label:addr}{#2}}} +\NewConfigure{ref}[3]{% + \def\a:rEfLiNK{#1}\def\b:rEfLiNK{#3}% + \ifx \a:rEfLiNK\empty + \ifx \b:rEfLiNK\empty + \expandafter\def\c:rEfLiNK##1##2{##2}% + \else + \expandafter\def\c:rEfLiNK##1##2{#3}% + \fi + \else + \ifx \b:rEfLiNK\empty + \expandafter\def\c:rEfLiNK##1##2{#1{##1}{}##2#2}% + \else + \expandafter\def\c:rEfLiNK##1##2{#1{##1}{}#3#2}% + \fi + \fi + \def\b:rEfLiNK{#2}% +} +\Configure{newlabel}{\cur:th \:currentlabel}{#1} +\NewConfigure{newlabel-ref}[1]{\def\c:rEfLiNK{#1}% + \ifx \at:startdoc\:UnDef \dflt:ref{#1}\else + \pend:def\at:startdoc{\dflt:ref{#1}}\fi +} +\def\dflt:ref#1{\if@filesw\immediate\write\@auxout{\string\ifx + \string#1\string\UnDef\gdef\string#1\#1\#2{\#2}\string\fi}\fi} +\Configure{newlabel-ref}{\rEfLiNK} +\let\:writefile|=\@writefile +\def\@writefile#1{\bgroup \catcode`\:|=11 \:wrtfile{#1}} +\def\:wrtfile#1#2{\egroup\:writefile{#1}{#2}} +>>> + +\List{*} +\item +\`'\Configure{ref}{\Link}{\EndLink}{anchor}' tells what \''\Link'-type command +should be on insertions of \''\ref'. If the third parameter is empty, +the anchor is the one provided by the system. If the first parameter +is empty, no Link is assumed. + +\item +\''\Configure{newlabel}{\cur:th \:currentlabel}{#1}' supplies the +target address and the anchor. +\item +\''\Configure{newlabel}{}{#1}' +is equivalent to +\''\Configure{newlabel}{\cur:th \:currentlabel}{#1}' +\item +The +\''\Configure{newlabel-ref}{\rEfLiNK}' command provides an +intermediate link command for the aux command, which +\`'\Configure{ref}{\Link}{\EndLink}{anchor}' configures. If the first +field of the last configuration command is empty, than the anchor is +provided without its surrounding. +\EndList + +\Verbatim + + > One more thing. You will notice from `minitoc.tex' that the HTML + > anchors given to the sections depend on the value of \@currentlabel, + > be it set explicitely or implicitly (e.g., by the previous section). + > Is it what you want ? + +Yes. I believe the reason was to avoid ambiguities--unfortunately, +I can't locate now where they could occur. + +{\makeatletter \gdef\@currentlabel{XxX}} +\section*{first section/First chapter} +\section{second section/First chapter} +\section*{third section/First chapter} + +\EndVerbatim + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{ref, label, newlabel: Hooking into Label} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\let\:label|=\label +\def\label{\relax + \expandafter\ifx \csname cur:th\endcsname\relax \expandafter\:label + \else \expandafter\l:bel \fi} +\let\lb:l|=\label +\def\l:bel#1{\@bsphack\if@filesw {\let\thepage|=\relax + |% + \let\protect|=\@unexpandable@protect \cur:lbl{}% + \ifx \EndPicture\:UnDef + \ifx \cur:th\skip:anchor + |% + \else \ifx \:currentlabel\empty + |

%
+      \fi \fi
+   \else
+      |%
+   \fi
+   \a:@newlabel
+   \edef\@tempa{\write\@auxout{\string
+      \newlabel{#1}{{|}%
+                    {|}|}}}%
+   \expandafter}\@tempa
+   \if@nobreak \ifvmode\nobreak\fi\fi\fi
+   |%
+   \@esphack}
+|
+>>>
+
+\<<<
+\Configure{@newlabel}{\def\%{\string\%}}
+>>>
+
+We had before \`'\ifx \EndPicture\:UnDef...\else...\fi' embeded within
+\`'\ifx \cur:th\skip:anchor' but that eliminated the anchors for
+eqnarray of pictures.
+
+To save memory, we try to get anchors only when refered by labels.
+For instance, this is the case for \''\@thm'.
+
+\<<<
+\bgroup   \a:@newlabel
+   \Make:Label{\label:addr}{}\egroup
+>>>
+
+\<<<
+\let\skip:anchor|=\:UnDef
+>>>
+
+The following deals with labels \''\label' provided before sectioning commands.
+
+\
<<<
+\def\:currentlabel{doc}%
+|%
+>>>
+         
+
+\<<<
+\def\AutoRefstepAnchor{\SkipRefstepAnchor}
+>>>
+
+The following is to ensure anchors for labels in pictures.
+
+\<<<
+\begingroup
+   \a:@newlabel
+   \edef\:temp{\noexpand\AfterPicture{%
+       \noexpand\Make:Label{\label:addr}{}%
+       \noexpand\uno:lbl{\label:addr}}%
+   }\:temp
+\endgroup
+>>>
+
+The following is to avoid eliminated anchors as is the case in, for instance, \`'\[xx\label{a}\label{b}\] '.
+
+\<<<
+\def\uno:lbl#1{\def\:temp{#1}\futurelet\:tempa\I:lbl}
+\def\I:lbl{\ifx \:tempa\Make:Label \expandafter\no:mklbl \fi}
+\def\no:mklbl#1#2#3{\def\:tempa{#2}\ifx \:temp\:tempa \else
+   \Make:Label{#2}{#3}\fi}
+>>>
+
+\<<<
+\a:newlabel\@currentlabel
+>>>
+
+The anchor for the page is approximated to the anchor of the logical unit.
+This is so to solve the possible problem of having a \`'label' in a position
+where \`'' links are not allowed. 
+
+\<<<
+\a:newlabel\thepage
+>>>
+
+\<<<
+\let\:currentlabel|=\empty
+>>>
+
+In pure latex, \''\Configure{newlabel}{##1}'.
+
+The following is treated in a similar manner to cite.
+It provides the means to disable nested links in
+entries of tocs. The \''\Link' doesn't seem to need
+the \''[]' option there, so a \''\:gobbleII' can do the job.
+
+A better def is given to \''\l:bel' in AmsLaTeX .
+
+\<<<
+\let\l:bel:|=\l:bel
+\def\l::bel#1{{\:SUBOff\:SUPOff\xdef\:temp{\noexpand\l:bel:{#1}}}\:temp}
+\def\l:bel{\Protect\l::bel}
+\let\o:ref|=\:ref
+\def\::ref#1{{\:SUBOff\:SUPOff\xdef\RefArg{#1}}\expandafter\o:ref
+                                               \expandafter{\RefArg}}
+\def\:ref{\Protect\::ref}
+\let\ref|=\:ref
+>>>
+
+Without the \'''\expandafter' we may get \''\RefArg' passed
+ as the first argument to \''\T@arg',
+resulting in \''\def\RefArg{\RefArg}'.
+
+\<<<
+\let\:newl@bel|=\@newl@bel
+\let\n:wlbl|=\@newl@bel
+\def\@newl@bel#1#2{{\:SUBOff\:SUPOff
+   \xdef\:temp{\noexpand\n:wlbl{#1}{#2}}}\:temp}
+>>>
+
+\<<<
+\let\:testdef|=\@testdef
+\def\@testdef #1#2{{\:SUBOff\:SUPOff
+   \xdef\:temp{\noexpand\:testdef{#1}{#2}}}\:temp}
+>>>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\SubSection{@currentlabel}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The second parameter of \''\anc:lbl' is a counter name, when such is know.
+
+The \`'\@currentlabel' comes sometimes with font info.  Normally, it
+comes from \''\refstepcounter' in the form of
+\''\the..counter-name..'. In such cases, we can take the counter
+name which is provided in the parameter of \''\cur:lbl'.
+
+\<<<
+\NewConfigure{@:currentlabel}[1]{\concat:config\a:@:currentlabel{#1}}
+\let\a:@:currentlabel|=\relax
+\def\cur:lbl#1{{\a:@:currentlabel 
+  |\expandafter}\:currentlabel}
+>>>
+
+\<<<
+\def\:currentlabel{\par}%
+\ifx\@currentlabel\:currentlabel 
+   \def\:currentlabel{\let\:currentlabel|=\empty}%
+\else \def\:currentlabel{#1}%
+   \edef\:currentlabel{\def\noexpand
+                 \:currentlabel{\ifx\:currentlabel\empty
+         \ifx \:@currentlabel\:UnDef \@currentlabel
+         \else \:@currentlabel \fi
+      \else 
+          \expandafter\ifx\csname #1:Count\endcsname\relax
+             \expandafter\the\csname c@#1\endcsname
+          \else \csname #1:Count\endcsname\fi
+      \fi}}%
+\fi
+>>>
+
+The \''\label' command of latex invokes \''\cur:lbl{}'. If
+\''\:@currentlabel' is deined, it is the to be used for the current label.
+The   \''\ltx@label' command of amsmath.sty ignores it.
+
+Whenever \''\@currentlabel' is redefined, we also want to redefine
+\''\:@currentlabel'. It is redefined in 
+\List{*}
+\item  latex.ltx within
+    \''\refstepcounter', \''\eqnarray', \''\@mpfootnotetext',
+     and \''\@footnotetext';
+\item amsart.cls, amsbook.cls, and amsproc.cls
+    within \''eqnarray' and \''\@footnotetext'; 
+\item amsmath.sty within
+    \''\df@tag' and \''\make@df@tag@@';  
+\item amstex.sty  within
+    \''\@currentlabel', \''\@seteqlabel', and \''multline*'. 
+\EndList
+
+\<<<
+\let\cnt:currentlabel|=\@currentlabel
+\def\:@currentlabel{\ifx \cnt:currentlabel\@currentlabel
+   \expandafter\the\csname c@equation\endcsname\else \@currentlabel\fi}%
+>>>
+
+\<<<
+\let\cnt:currentlabel|=\@currentlabel
+\def\:@currentlabel{\ifx \cnt:currentlabel\@currentlabel
+   \expandafter\the\csname c@#1\endcsname\else \@currentlabel\fi}%
+>>>
+
+\<<<
+\html:addr \edef\cur:th{|\last:haddr r}% 
+>>>
+
+\<<<
+\anc:lbl r{}%
+>>>
+
+\<<<
+|
+\def\cnt:currentlabel{\p@equation\theequation}%   
+\def\:@currentlabel{\ifx \cnt:currentlabel\@currentlabel
+   \expandafter\the\csname c@equation\endcsname\else \@currentlabel\fi}%
+>>>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\SubSection{/link for /label from /refstepcounter}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The following is late arrival into TeX4ht, inserted for handling
+\''\newtheorem', and possibly other structures.  It might cause
+duplicated anchors.  At least in the  case of figures and lists they
+are overided by other anchors, and hence not needed. In case of 
+lists and new theorems we ended to delete the overriden case. Still
+need to do it
+for pictures, and amybe also other cases.
+
+The \''\refstepcounter' may appear in places (e.g., before first item
+of a list) where no text is allowed, hence we have to ensure that
+\''\anc:lbl' will not break this restriction.
+How about within pictures?
+
+\<<<
+\append:defI\refstepcounter{%
+  |%
+  \anc:lbl r{#1}}
+\def\anc:lbl#1#2{%
+   \html:addr   \edef\cur:th{|\last:haddr #1}%
+   \ifx \EndPicture\:UnDef
+      {\let\leavevmode|=\empty \cur:lbl{#2}%
+      \Make:Label{\cur:th\:currentlabel}{}}%
+   \else \ifx \label\@gobble \else  \cur:lbl{#2}%
+       \edef\:temp{\noexpand\AfterPicture{%
+          \noexpand\Make:Label{\cur:th\:currentlabel}{}}}\:temp
+   \fi \fi}
+\let\onc:lbl|=\anc:lbl
+\def\SkipRefstepAnchor{\def\anc:lbl##1##2{\html:addr
+   \edef\cur:th{|\last:haddr}\ShowRefstepAnchor
+   \let\skip:anchor|=\cur:th}}
+\def\ShowRefstepAnchor{\let\anc:lbl|=\onc:lbl}
+|
+\html:addr   \edef\cur:th{|\last:haddr}
+>>>
+
+% \def\AutoRefstepAnchor{\def\anc:lbl##1##2{\onc:lbl{##2}{}%
+%   \ShowRefstepAnchor}}
+
+We can't use ref- below, because 
+
+The MakeLabel removes duplicates such as in
+
+\Verbatim
+         \documentclass{article}
+         \begin{document}
+            \begin{equation}\label{jh}
+              c
+            \end{equation}
+         \end{document}
+\EndVerbatim
+
+For memory conservation, a maximum is placed on the number of labels
+recorded.
+
+\<<<
+\def\Make:Label#1#2{%
+   \def\:tempb##1|{%
+      \xdef\Made:Labels{{#1}\Made:Labels}%
+      \set:label{\hbox{\Link{}{#1}#2\EndLink}}%
+      \trim:Labels
+   }%
+   \def\:tempc##1|{\hbox{#2}}%
+   \let\:next=\check:labels \edef\:tempa{#1}%
+   \expandafter\:next\Made:Labels{}|%      
+}
+\let\set:label=\empty
+>>>
+
+\<<<
+\let\Made:Labels=\empty
+\def\check:labels#1{%
+   \def\:temp{#1}\ifx\:temp\empty \let\:next=\:tempb 
+   \else\ifx \:temp\:tempa        \let\:next=\:tempc
+   \fi \fi
+   \:next }
+>>>
+
+\<<<
+\HAssign\Labels:Cnt |= 0
+\def\trim:Labels{%
+   \ifnum \Labels:Cnt>100 
+      \def\:tempa##1|{}%
+      \gHAssign\Labels:Cnt = 0
+      \let\:tempb\Made:Labels  
+      \let\Made:Labels\empty
+      \expandafter\keep:Labels\:tempb|%
+   \else \gHAdvance\Labels:Cnt by 1 \fi
+}
+\def\keep:Labels#1{\relax
+   \ifnum \Labels:Cnt<50
+     \xdef\Made:Labels{\Made:Labels{#1}}\gHAdvance\Labels:Cnt |by 1
+         \expandafter\keep:Labels
+   \else \expandafter\:tempa \fi }
+>>>
+
+We need the \''\hbox' above because \''\label' complains if vertical
+mode is replaced with horizontal mode.
+
+\`'   \let\Link:Labe|=\Make:Label
+   \def\Tag:Label#1#2{\Tag{fR\label:Count}{#1}#2\GetLabel}
+   \def\LinkLabels{\let\Make:Label|=\Link:Label} 
+   \def\SendLabels{\let\Make:Label|=\Tag:Label}'
+
+\ifHtml[\HPage{test data}\Verbatim
+\newtheorem{example}{Example}[section]
+
+\begin{example} 
+
+\label{E}
+
+\end{example} 
+
+Example \ref{E}
+
+\EndVerbatim\EndHPage{}]\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\SubSection{divisions in tex4ht.sty}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\<<<
+\def\Get:SecAnchor#1#2#3{%
+   |%
+   \xdef\cur:th{|\last:haddr}%
+   |%
+   \edef\:SecAnchor{\cur:th\:currentlabel}%
+ }
+>>>
+
+We redefine \''\@Roman' for \''\thepart' to have the same number
+of entries as \''\Alph'.
+
+\<<<
+\bgroup  \def\@Roman##1{%
+  \ifcase##1\or I\or II\or III\or IV\or V\or VI\or 
+     VII\or VIII\or IX\or X\or XI\or XII\or XIII\or 
+     XIV\or XV\or XVI\or XVII\or XVIII\or XIX\or XX\or 
+     XXI\or XXII\or XXIII\or XXIV\or XV\or XVI\else
+     \expandafter\uppercase\expandafter{\romannumeral ##1}\fi}%
+   \a:currentlabel
+   \edef\:temp{#2}\ifx \:temp\empty
+   \else \global\let\@currentlabel|=\:temp\fi
+\egroup
+>>>
+
+\<<<
+\NewConfigure{currentlabel}{1}
+>>>
+
+The \''\@currentlabel' may hold a \''\uppercase' due to \''\thepart'
+that has a \''\@Roman' in it.
+Tried to go for \`'\cur:lbl{#1}%', but that was a problem for cross
+references with labels of sections, because \''\label' uses \`'\cur:lbl{}'.
+
+\<<<
+\let\:tempa|=\uppercase \def\uppercase##1{##1}\cur:lbl{}%
+\let\uppercase|=\:tempa
+>>>
+
+How the above  \`'\global\let\cur:th|=\last:haddr'
+work with the change in \''\refstepcounter'?
+
+%%%%%%%%%%%%%%%%%%
+\SubSection{ref-}
+%%%%%%%%%%%%%%%%%%
+
+To reduce conflicts, we deal with labels indirectly
+through a counter. The counter is increased before
+\''\getlabel' and after \''ref'. That is, this pair is assured
+consistency of a label.  The separation between \''\GetLabel' and
+\''\PutLabel' is
+to allow the latter one into immediate arguments such as \''\HCode'
+and \''\Tg'.
+
+\''\label' sends its info to \''\getlabel'. It insert a 
+\`'' iff it is a target of a \''\pageref'.
+
+\Verbatim
+\:info{\string\Configure{label}{\string#1}{\string#1}}
+\:info{\string\Configure{pageref}{\string#1}}
+\:info{\string\Configure{ref}{\string#1}}
+
+\Configure{label}{#1}{\HCode{[pagelabel label="#1"/]}}
+\Configure{pageref}{\HCode{[pageref label="#1"/]}}
+\Configure{ref}{\HCode{[ref label="#1"/]}}
+\GetLabel \PutLabel  \ref{a}  \pageref{a}  \label{a}
+\EndVerbatim
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+\Section{apacite.sty bibtex}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+
+\<<<
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+% apacite.4ht                           |version %
+% Copyright (C) |CopyYear.2000.       Eitan M. Gurari         %
+|
+   | 
+   \ifx \@@citeNP\:UnDef
+     |
+   \else
+     |
+   \fi
+\Hinput{apacite}
+\endinput
+>>>        \AddFile{9}{apacite}
+
+\<<<
+\def\B:my@dummy{\B@my@dummy}
+\def\:citeP{\@citeP}
+
+\def\:tempc<#1>[#2]#3{%
+   \start:cite\a:cite \o:@@cite:<#1>[#2]{#3}\b:cite \end:cite
+}
+\HLet\@@cite=\:tempc
+>>>
+
+\<<<
+\def\@lbibitem[#1]#2{% 
+    \def\BBA{\BBAA}% 
+    \item[\@biblabel{#1}]% 
+    \if@filesw{% 
+        \a:bibcite
+        \def\BBA{\string\BBA}% 
+        \def\protect##1{\string ##1}% 
+        \immediate\write\@auxout{\string\bibcite{#2}{#1}}% 
+        \def\BBA{\BBAA}% 
+    }% 
+    \fi% 
+    \ignorespaces% 
+} 
+>>>
+
+\<<<
+\def\start:cite{%
+   \let\sv:edef\edef
+   \let\gobble:cite=\:gobble
+   \def\edef##1{\def\:temp{##1}%
+      \ifx \:temp\B:my@dummy
+         \ifx \o:BCA\:UnDef
+             \ifx \BCA\:UnDef\else
+                \let\o:BCA=\BCA
+                \def\BCA####1####2{\Protect\cIteLink{X\@citeb}{}%
+                       \o:BCA{####1}{####2}\Protect\EndcIteLink}%
+             \fi
+         \fi
+      \fi
+      \sv:edef##1}%
+}
+\def\end:cite{%
+   \let\edef=\sv:edef
+   \let\BCA=\o:BCA  \let\o:BCA=\:UnDef
+}
+>>>
+
+\
<<<
+\def\start:cite{%
+   \let\sv:edef\edef
+   \let\gobble:cite=\:gobble
+   \def\edef##1{\def\:temp{##1}%
+      \ifx \:temp\B:my@dummy
+         \cIteLink{X\@citeb}{}\let\gobble:cite=\empty
+         \ifx \o:@BBOP\:UnDef 
+             \let\o:@BBOP=\@BBOP
+             \let\o:@BBAY=\@BBAY
+             \pend:def\@BBOP{\gobble:cite\EndcIteLink
+                        \let\gobble:cite=\:gobble}%
+             \pend:def\@BBAY{\gobble:cite\EndcIteLink
+                        \let\gobble:cite=\:gobble}%
+         \fi
+      \fi
+      \ifx \:temp\:citeP
+         \gobble:cite\EndcIteLink \let\gobble:cite=\:gobble
+      \fi
+      \sv:edef##1}%
+}
+\def\end:cite{%
+   \let\edef=\sv:edef
+   \let\@BBOP=\o:@BBOP  \let\o:@BBOP=\:UnDef
+   \let\@BBAY=\o:@BBAY  \let\o:@BBAY=\:UnDef
+}
+\def\:tempc[#1]#2{%
+   \start:cite\a:cite \o:@citeA:[#1]{#2}\b:cite \end:cite
+}
+\HLet\@citeA=\:tempc
+\def\:tempc[#1]#2{%
+   \start:cite\a:cite \o:@citeyear:[#1]{#2}\b:cite \end:cite
+}
+\HLet\@citeyear=\:tempc
+\def\:tempc<#1>[#2]#3{%
+   \start:cite\a:cite \o:@@citeNP:<#1>[#2]{#3}\b:cite \end:cite
+}
+\HLet\@@citeNP=\:tempc
+\def\:tempc#1{%
+   \start:cite\a:cite \o:@citeauthor:{#1}\b:cite \end:cite
+}
+\HLet\@citeauthor=\:tempc
+\def\:tempc[#1]#2{%
+   \start:cite\a:cite \o:@citeyearNP:[#1]{#2}\b:cite \end:cite
+}
+\HLet\@citeyearNP=\:tempc
+>>>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+\Section{mla.sty bibtex}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+
+\<<<
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+% mla.4ht                             |version %
+% Copyright (C) |CopyYear.2002.      Eitan M. Gurari         %
+|
+   | 
+\Hinput{mla}
+\endinput
+>>>        \AddFile{9}{mla}
+
+\<<<
+\catcode`\:=12  
+\def\@citedatax[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+  \def\@citea{}\csname a:cite\endcsname
+  \@cite{\@for\@citeb:=#2\do%
+    {\@citea\def\@citea{, }\@ifundefined% by Young
+       {b@\@citeb}{{\bf ?}%
+       \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+       {\cIteLink {X\@citeb}{}\csname b@\@citeb\endcsname \EndcIteLink
+   }}}{#1}\csname b:cite\endcsname}
+\catcode`\:=11 
+>>>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+\Section{Biblatex}
+
+\SubSection{biblatex.sty}
+
+\<<<
+% biblatex.4ht (|version), generated from |jobname.tex
+% Copyright |CopyYear.2007. Eitan M. Gurari
+|
+   | 
+   |
+   |
+   |
+\Hinput{biblatex}
+\endinput
+>>>        \AddFile{6}{biblatex}
+
+\<<<
+\let\:temp\do
+  \def\do#1{% 
+    \patchcmd#1% 
+      {\color@begingroup}% 
+      {\color@begingroup\toggletrue{blx@footnote}}% 
+      {\togglefalse{blx@tempa}\listbreak}%
+      {}}% 
+  \docsvlist{% 
+    \@footnotetext,%          latex 
+    \H@@footnotetext,%        hyperref 
+    \scr@saved@footnotetext,% koma-script 3.x 
+    \l@dold@footnotetext,%    ledmac 
+    \l@doldold@footnotetext,% ledmac 
+    \@fntORI}%                frenchle 
+\let\do\:temp
+>>>
+
+\<<<
+\def\make:blx:ver#1.#2#3\relax{%
+   %\ifdim#1pt< 3pt \xdef\blx:ver:no{2}\else\xdef\blx:ver:no{3}\fi%
+   \gdef\blx:ver:no{#1}
+   \gdef\blx:subver:no{#2}
+}
+\expandafter\make:blx:ver\abx@version.0\relax
+\ifx\a:printshorthands\Undef\let\blx@shorthands\@empty\fi
+\ifx\blx@startbib\:UnDef
+ \pend:def\blx@shorthands{%
+   \pend:def\blx@bibinit{%
+       \HAssign\shorthands:cnt=0
+       \NewConfigure{printfield-shorthand}{2}%
+       \Configure{printfield-shorthand}%
+         {\gHAdvance\shorthands:cnt by 1\relax
+          \ifnum \shorthands:cnt=1 \a:printshorthands
+          \else                    \c:printshorthands \fi
+         }
+         {\d:printshorthands}%
+   \append:def\endtheshorthands{\b:printshorthands}%
+   \csname a:@shorthands\endcsname}
+}
+>>>
+
+\<<<
+\ifx\b:printshorthands\Undef\let\endtheshorthands\@empty\fi
+\def\a:entryhead{CVR}
+\def\a:entryhead:full{CV Radhakrishnan}
+\ifx\bib@macro@entryhead:name\UnDef
+  \let\bib@macro@entryhead:name\@empty\fi
+\ifx\bib@macro@entryhead:full\UnDef
+  \let\bib@macro@entryhead:full\@empty\fi
+  \gdef\BibFileName[#1]#2{\expandafter\xdef\csname 
+       BibFileName#1\endcsname{#2}}
+>>>
+
+\<<<
+\newcount\sv:sec:cnt
+\def\bibSecConfigure{%
+  \let\save:section\section
+  \global\sv:sec:cnt=\c@secnumdepth  
+  \def\section{\@ifstar
+      {\c@secnumdepth=0\relax\save:section}%
+      {\c@secnumdepth=\sv:sec:cnt\save:section}}% 
+}
+\gHAssign\bibN=0
+>>>
+
+Biblatex recently started to complain about ifthenelse
+patching. It is quite strange, as this patching code is quite 
+old and there were no such errors previously. Anyway, 
+this code should try to patch ifthenelse using TeX4ht built-in
+mechanism for ifthenelse.
+
+\<<<
+\@ifpackageloaded{hyperref}{}{%
+\ifdefined\TE@hook\else%
+\def\TE@hook{}%
+\fi%
+}
+
+\AtBeginDocument{%
+  \Configure{ifthenelse}{\TE@hook}
+}
+>>>
+
+\<<<
+\def\bibConfigure{\ConfigureList{thebibliography}%
+      {\IgnorePar\EndP \gHAdvance\bib:N by 1
+       \HCode{
+              \Hnewline
+             }
+           \NoFonts\ref:name\EndNoFonts
+       \HCode{\Hnewline
+%
+           \Hnewline
+%
+            \Hnewline
+%
+           : \Hnewline
+           \Hnewline
+           , \Hnewline
+%
+           \Hnewline
+           , \Hnewline
+%
+           \Hnewline
+           \Hnewline\Hnewline
+           \Hnewline
+           \Hnewline}%
+         \let\en:bib=\empty
+      }%
+      {\en:bib\HCode{}}
+      {\en:bib\gdef\en:bib{\HCode{\Hnewline}}%
+        \HCode{}%
+        \gHAdvance\bibN by 1
+        \HCode{%
+          }%
+      }%
+      {}{}
+  }
+>>>
+
+\<<<
+ \def\bibConfigure{%
+  \ConfigureList{thebibliography}
+  {\ifvmode \IgnorePar \fi \EndP \EndP
+    \HCode {
}% +% +% This is for linking citations with biblist items which +% are in a different file when output is split into different +% chunks. [CVR 2012-09-27] +% +% +% +% + \immediate\write\@auxout{% + \string\BibFileName[\therefsection]{\FileName}}% +% +% +% + \PushMacro \end:itm \global \let \end:itm =\empty}% + {\ifvmode \IgnorePar \fi \EndP + \PopMacro \end:itm \global \let \end:itm \end:itm \EndP + \HCode {
}\ShowPar}% + {\ifvmode \IgnorePar \fi \EndP \gHAdvance \bibN by 1 + \end:itm \global \def \end:itm {\EndP \Tg }% + \HCode {
}\bgroup \bf}% + {\ifvmode \IgnorePar \fi \EndP + \egroup + \HCode {
}% + \par \ShowPar}% + } +>>> + +\<<< + \:CheckOption{ooffice}\if:Option + | + \else + | + \fi +>>> + +\<<< +\NewConfigure{printshorthands}{4} +\NewConfigure{@shorthands}[1]{\concat:config\a:@shorthands{#1}} +\let\a:@shorthands\empty +% \def\nolinkurl{\o:url:} +% \def\blx@checksum{\ifx \blx@checksum@old \blx@checksum@new \else +% \blx@warning@noline {Page references have changed.\MessageBreak +% Rerun to get references right}\@tempswatrue \blx@reruntrue \fi +% \@nameuse {blx@rerun}} +\def\blx@checksum#1#2#3{% + \begingroup + \blx@tempcnta\the\numexpr0#2*0#3\relax + \blx@tempcntb\blx@tempcnta + \divide\blx@tempcntb10 + \multiply\blx@tempcntb10 + \advance\blx@tempcnta-\blx@tempcntb + \xdef#1{#1\the\blx@tempcnta}% + \endgroup} + +\@ifpackagelater{biblatex}{2018/03/01}{\let\blx:pend:def\pend:defI}{\let\blx:pend:def\pend:def} +\blx:pend:def\blx@bibliography{\bibSecConfigure% + \pend:def\blx@bibinit{% + \bibConfigure + \csname onthebibliography:list\endcsname + }% +} +>>> + +\<<< +\let\en:bib\@empty +\newcounter{bib} +\ifnum\blx:ver:no < 3 + \protected\def\blx@bbl@entry#1#2#3{% + \begingroup + \def\texht@bibkey{#1} + \edef\abx@field@entrykey{\detokenize{#1}}% + \global\advance\c@bib 1 + \immediate\write\@auxout{\string\expandafter\string\gdef + \string\csname\space BIB-\thebib\string\endcsname + {\expandafter\strip@prefix\meaning\texht@bibkey}}% + \Tag{)QX\therefsection-#1}{\thebib}% + \blx@setoptions@type{#2}% + \blx@bbl@options{#3}% + \blx@setoptions@entry + \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}% + \csuse\blx@bbl@data + \cslet\blx@bbl@data\@empty + \blx@bbl@addfield{entrykey}{\abx@field@entrykey}% + \blx@bbl@addfield{entrytype}{#2}% + \blx@imc@iffieldundef{options} + {} + {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}} +% + \protected\def\blx@finentry{% + \unspace + \a:finentry + \finentrypunct + \blx@postpunct + \b:finentry + \blx@initunit + } +% +\else +% Biblatex 3.0 +% +% Hacks for biblatex +% MakeUppercase is redefined by tex4ht, biblatex tries to redefine it as well, but it relies on original +% LaTeX version: +\DeclareRobustCommand{\MakeUppercase}[1]{{% + \def\i{I}\def\j{J}% + \def\reserved@a##1##2{\let##1##2\reserved@a}% + \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% + \protected@edef\reserved@a{\uppercase{#1}}% + \reserved@a +}} +% Same applies also for \MakeLowercase +\DeclareRobustCommand{\MakeLowercase}[1]{{% + \def\reserved@a##1##2{\let##2##1\reserved@a}% + \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% + \protected@edef\reserved@a{\lowercase{#1}}% + \reserved@a +}} + +% I don't really understand this, but language processing is broken by default +% with biblatex. It loads language file, but it executes code which should be +% executed only in the case if the language file fails, it displays an error message +% and language handling doesn't work. When we execute following code, the language +% files are loaded before checking of the success and it seems to work. + +\AtBeginDocument{% +\@ifpackageloaded{babel} + {% This is required for languages which are never explicitly selected + % It seems this code was executed also with Polyglossia, where it caused compilation error + \@ifpackageloaded{polyglossia}{}{% + \def\do#1{\blx@lbxinput{#1}{}{}}% + \ifx\@empty\bbl@loaded\else% + \expandafter\docsvlist\expandafter{\bbl@loaded}% + \fi}}{}% +} +\fi % end of version boolean +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% CVR 2010/03/31 +% \bib@field@entrykey initialized with empty value +% +% CVR 2010/07/18 +% null initialization will result in wrong hyperlinking of citations +% with respective bibitems. Therefore, \bib@field@entrykey is defined +% as the entrykey which is the correct value. +% +% CVR 2010/09/10 +% \blx@checksum macro added to match biblatex.sty +% version 1.6 2011/07/29 +% +\<<< +\let\blx@anchors\@empty +\let\bib@field@entrykey\@empty +\protected\def\blx@anchor{% + \xifinlist{|\bib@field@entrykey}{\blx@anchors}% + {}% + {\listxadd\blx@anchors{|\bib@field@entrykey}% + \hyper:natanchorstart{|\bib@field@entrykey}% + \hyper:natanchorend}} +>>> + +\<<< +\protected\def\blx@bibhyperref{% + \@ifnextchar[%] + {\blx@bibhyperref@i}% + {\blx@bibhyperref@i[\bib@field@entrykey]}}% +\long\def\blx@bibhyperref@i[#1]#2{% + \hyper:natlinkstart{|#1}% + #2\hyper:natlinkend}% +\protected\long\def\blx@bibhyperlink#1#2{% + \hyper:natlinkstart{|#1}% + #2\hyper:natlinkend}% +\protected\long\def\blx@bibhypertarget#1#2{% + \@bsphack + \hyper:natanchorstart{|#1}% + \@esphack + #2\hyper:natanchorend}% +>>> + +\<<< +X\the\c@refsection -%@ +>>> + +\<<< +X\the\c@refsection --%: +>>> + +\<<< +\let\blx@ifhyperref\@firstoftwo +\def\hyper:natanchorstart#1{\Link{}{#1}\EndLink} +\def\hyper:natanchorend{} +\def\hyper:natlinkstart#1{\Link{#1}{}} +\def\hyper:natlinkend{\EndLink} +>>> + +\<\><<< +\long\def\blx@bibhyperref@i[#1]#2{#2} +\protected\long\def\blx@bibhyperlink#1#2{#2} +\protected\long\def\blx@bibhypertarget#1#2{#2} +>>> +% +% 2010/09/26 CVR +% Kristian Debrabant and +% Christian Fearnot reported that consequent +% to revision of biblatex to version 0.9d, biblatex.4ht seemed to +% be broken. It was true. The problem was the redefined +% \blx@checksum in biblatex.4ht which was either superfluous or +% erratic or both. So, I have commented out in biblatex.4ht +% and decided to use the default definition in the biblatex.sty. +% Both the bug reporters have told that the modified version +% solved their problems. +% +% \<<< +% \def\blx@checksum{\ifx \blx@checksum@old \blx@checksum@new \else +% \blx@warning@noline {Page references have changed.\MessageBreak +% Rerun to get references right}\@tempswatrue \blx@reruntrue \fi +% \@nameuse {blx@rerun}} +% >>> + +\<<< +\pend:def\blx@bibliography{% + \pend:def\blx@bibinit{% + \ConfigureList{thebibliography}% + {\a:thebibliography}% + {\b:thebibliography}% + {\c:thebibliography}% + {\d:thebibliography}% + \csname onthebibliography:list\endcsname + }% +% \pend:def\endthebibliography{% +% \if@newlist \global\@newlistfalse \fi +% }% +} +>>> + +\<<< +\pend:defI\blx@bibitem{% + \ifx \bibitem:key\:UnDef + \let\blx:anchor\blx@anchor + \def\blx@anchor{\let\blx@anchor\blx:anchor + \Link{}{\bibitem:key}\EndLink}% + \fi + \def\bibitem:key{##1}% +} +>>> + +\<<< +\protected\def\blx@citeprint#1{% + \advance\c@citecount\@ne + \addtocounter{instcount}\@ne + \ifnum\c@citecount=\@ne + \blx@getdata@cite{#1}% + \blx@precode + \ifnum\c@citetotal>\@ne + \blx@resetdata + \fi + \else + \blx@dlimcode + \fi + \begingroup + \ifnum\c@citetotal>\@ne + \blx@getdata@cite{#1}% + \fi + \blx@entrysetcount + \blx@options + \blx@backref + \blx@pagetracker + \csuse{blx@hook@citekey}% + \csuse{blx@hook@citekey@next}% + \blx@execute + \cIteLink{#1}{}\blx@loopcode \EndcIteLink + \blx@citetracker + \blx@ibidtracker + \blx@opcittracker + \blx@loccittracker + \ifnum\c@citecount=\c@citetotal + \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}% + \blx@postcode + \fi + \endgroup} +>>> + +\<<< +\NewConfigure{finentry}{2} +\def\:tempc[#1]#2{% + \expandafter\ifx \csname a:printfield-#2\endcsname\relax + \NewConfigure{printfield-#2}{2}% + \a:printfield{printfield-#2}% + \fi + \Configure{blx@unit}% + {\csname a:printfield-#2\endcsname}% + {\csname b:printfield-#2\endcsname}% + \csname o:\string\blx@printfield:\endcsname[#1]{#2}% +} +\expandafter\HLet\csname\string\blx@printfield\endcsname\:tempc +>>> + +\<<< +\NewConfigure{printfield}[1]{\def\a:printfield##1{#1}} +\Configure{printfield}{% + \Configure{#1}% + {\HCode{}}% + {\HCode{}}% +} +>>> + +\<<< +\def\:tempc[#1]#2{% + \expandafter\ifx \csname a:printtext-#2\endcsname\relax + \NewConfigure{printtext-#2}{2}% + \a:printfield{printtext-#2}% + \fi + \Configure{blx@unit}% + {\csname a:printtext-#2\endcsname}% + {\csname b:printtext-#2\endcsname}% + \csname o:\string\blx@printtext:\endcsname[#1]{#2}% +} +\expandafter\HLet\csname\string\blx@printtext\endcsname\:tempc +>>> + +\<<< +\def\:tempc[#1]#2{% + \expandafter\ifx \csname a:bibstring-#2\endcsname\relax + \NewConfigure{bibstring-#2}{2}% + \a:printfield{bibstring-#2}% + \fi + \Configure{blx@unit}% + {\csname a:bibstring-#2\endcsname}% + {\csname b:bibstring-#2\endcsname}% + \csname o:\string\blx@bibstring:\endcsname[#1]{#2}% +} +\expandafter\HLet\csname\string\blx@bibstring\endcsname\:tempc +>>> + +\<<< +\def\:tempc[#1]#2{% + \expandafter\ifx \csname a:bibcpstring-#2\endcsname\relax + \NewConfigure{bibcpstring-#2}{2}% + \a:printfield{bibcpstring-#2}% + \fi + \Configure{blx@unit}% + {\csname a:bibcpstring-#2\endcsname}% + {\csname b:bibcpstring-#2\endcsname}% + \csname o:\string\blx@bibcpstring:\endcsname[#1]{#2}% +} +\expandafter\HLet\csname\string\blx@bibcpstring\endcsname\:tempc +>>> + +\<<< +\def\:tempc[#1]#2{% + \expandafter\ifx \csname a:biblcstring-#2\endcsname\relax + \NewConfigure{biblcstring-#2}{2}% + \a:printfield{biblcstring-#2}% + \fi + \Configure{blx@unit}% + {\csname a:biblcstring-#2\endcsname}% + {\csname b:biblcstring-#2\endcsname}% + \csname o:\string\blx@biblcstring:\endcsname[#1]{#2}% +} +\expandafter\HLet\csname\string\blx@biblcstring\endcsname\:tempc +>>> + +\<<< +\def\:tempc[#1]#2{% + \expandafter\ifx \csname a:bibucstring-#2\endcsname\relax + \NewConfigure{bibucstring-#2}{2}% + \a:printfield{bibucstring-#2}% + \fi + \Configure{blx@unit}% + {\csname a:bibucstring-#2\endcsname}% + {\csname b:bibucstring-#2\endcsname}% + \csname o:\string\blx@bibucstring:\endcsname[#1]{#2}% +} +\expandafter\HLet\csname\string\blx@bibucstring\endcsname\:tempc +>>> + +\<<< +\pend:def\blx@bibliography{% + \pend:def\thebibitem{\c:thebibliography}% + \append:def\thebibitem{\relax\d:thebibliography}% + \pend:def\blx@startbib{\a:thebibliography}% + \pend:def\endthebibliography{% + \if@newlist \global\@newlistfalse \fi + }% + \append:def\endthebibliography{\b:thebibliography}% +} +>>> + +\<<< +\NewConfigure{thebibliography}{4} +>>> + +\<<< +\NewConfigure{biblatex-style}[2]{% + \def\:temp{#1}% + \ifx \:temp\blx@cbxfile + #2% + \global\let\biblatex:style\def + \fi +} + +\def\biblatex:style{} +\Configure{biblatex-style}{}{} + +\pend:def\at:docend{% + \ifx \UnDef\biblatex:style + \:warning{\string\Configure{biblatex-style}{\blx@cbxfile}{...} + not available}% + \fi +} +>>> + +\<<< +\let\blx:item\@item +\def\@item[#1]{% + \blx:item[#1]% + \ifhmode \spacefactor\blx@sf@par\fi +} +\let\blx@resetpuncthook\@empty +\let\blx@csq@ifkernmark\@empty +\newskip\blx@unitmark +\blx@unitmark=10pt plus 1pt minus 1pt +\let\abx@aux@page\@gobbletwo +\let\abx@aux@fnpage\@gobbletwo +\let\abx@aux@refsection\@gobbletwo +% +% reported that After updating +% biblatex and biblatex.ht to versions 2.2 respectively +% 2012-09-28-17:49 (using MiKTeX 2.9 64 bit), tex4ht seemed no longer +% respected the defernumbers option in biblatex.sty: When applied to +% the attached file tex4hterror.tex. +% +% The problem was due to nullifying \abx@aux@number which in fact +% should have been redefined to \blx@aux@number when defernumbers +% option is true. +% +% This is done now and as per Kristian, the fix works fine now. +% +\ifnum\blx:ver:no < 3 +% + \protected\def\blx@aux@number#1#2#3#4{% + \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}% + \ifblank{#4}% + {}% + {\csgdef{blx@labelnumber@#3}{#4}% + %\blx@addchecksum{#1}{#4} % this can cause a nodocument error! + }} +% + \iftoggle{blx@defernumbers}% + {\setkeys{blx@opt@pre}{labelnumber}% + \let\blx@thelabelnumber\blx@addlabelnumber + \let\abx@aux@number\blx@aux@number}% + {\let\blx@thelabelnumber\relax + \let\abx@aux@number\@gobblefour} +% +\else + \def\@gobblefive#1#2#3#4#5{}% + \protected\def\blx@aux@number#1#2#3#4#5{% + \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}% + \blx@bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}% + \global\toggletrue{blx@localnumber}% + \ifblank{#5} + {} + {\csgdef{blx@labelnumber@#3@#4}{#5}}} + + \iftoggle{blx@defernumbers}% + {\setkeys{blx@opt@pre}{labelnumber}% + \let\blx@thelabelnumber\blx@addlabelnumber + \let\abx@aux@number\blx@aux@number}% + {\let\blx@thelabelnumber\relax + \let\abx@aux@number\@gobblefive} +\fi % end of version boolean +% +\AtEndDocument{% + \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}% + \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}% +} +% +\def\blx@begunit{% + \toggletrue{blx@tempa}% + \iftoggle{blx@insert}% + {\iftoggle{blx@unit}% + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \let\blx@endnounit\@empty + \blx@unitpunct\blx@postpunct + \endgroup + \global\togglefalse{blx@unit}% + \togglefalse{blx@tempa}} + {\blx@postpunct}% + \iftoggle{blx@block}% + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \let\blx@endnounit\@empty + \newblockpunct + \endgroup + \global\togglefalse{blx@block}% + \togglefalse{blx@tempa}}% + {}}% + {}% + \blx@postpunct + \blx@resetpuncthook + \iftoggle{blx@tempa}% + {}% + {\global\togglefalse{blx@insert}}% + \csname a:blx@unit\endcsname + \blx@leavevmode + \blx@csq@ifkernmark + {}% + {\penalty\@M + \hskip-\blx@unitmark\relax + \hskip\blx@unitmark\relax + }% + \begingroup + \Configure{blx@unit}{}{}% +} +\def\blx@endunit{% + \endgroup + \csname b:blx@unit\endcsname + \Configure{blx@unit}{}{}% + \ifdim\lastskip=\blx@unitmark + \unskip\unskip\unpenalty + \global\togglefalse{blx@lastins}% + \else + \global\toggletrue{blx@insert}% + \global\toggletrue{blx@lastins}% + \fi +} +\NewConfigure{blx@unit}{2} +% + \else +\fi + +>>> + +The following code fixes non-ascii cite keys with XeLaTeX, +they caused compilation error when the AUX file is loaded. +\<<< +\ifdefined\XeTeXversion + \def\abx@aux@defaultrefcontext#1#2#3{% + \global\boolfalse{refcontextdefaults}% + \csxdef{blx@assignedrefcontextbib@#1@\detokenize{#2}}{\detokenize{#3}}} +\fi +>>> + +\<<< +\append:def\blx@bibinit{\a:bibinit}% +\NewConfigure{bibinit}{1}% +>>> + +\<<< +\let\blx@anchors\@empty +\let\bib@field@entrykey\@empty + +\protected\def\blx@anchor{% + \xifinlist{X\the\c@refsection -%@ + \bib@field@entrykey}{\blx@anchors}% + {}% + {\listxadd\blx@anchors{X\the\c@refsection -%@ + \bib@field@entrykey}% + \hyper:natanchorstart{X\the\c@refsection -%@ + \bib@field@entrykey}% + \hyper:natanchorend}} + +\protected\def\blx@bibhyperref{% + \@ifnextchar[%] + {\blx@bibhyperref@i}% + {\blx@bibhyperref@i[\bib@field@entrykey]}}% + +\long\def\blx@bibhyperref@i[#1]#2{% + \hyper:natlinkstart{X\the\c@refsection -%@ + #1}% + #2\hyper:natlinkend}% + +\protected\long\def\blx@bibhyperlink#1#2{% + \hyper:natlinkstart{X\the\c@refsection -%: + #1}% + #2\hyper:natlinkend}% + +\protected\long\def\blx@bibhypertarget#1#2{% + \@bsphack + \hyper:natanchorstart{X\the\c@refsection -%: + #1}% + \@esphack + #2\hyper:natanchorend}% + +\let\blx@ifhyperref\@firstoftwo + +% Oleg Domanov odomanov@yandex.ru reports: +% tex4ht ends with an error when compiles biblatex files. I'm on +% Windows, texlive 2012. I put here a minimal example and files +% generated with the command latexmk test && mk4ht oolatex test +% +% https://www.dropbox.com/s/hn1zm40htqs13mf/t4htlink.zip +% +% There is a superfluous \relax in the file test.tmp, line 65 which +% seems to cause the error. +% +% Changes to cope with biblatex upgrade caused this problem. It is now +% fixed. --CVR 2012/10/26 +% +\:CheckOption{ooffice}\if:Option + \def\hyper:natanchorstart#1{\Link{}{#1}\EndLink}% + \def\hyper:natlinkstart#1{\Link{#1}{}}% +\else + \def\hyper:natanchorstart#1{% + \expandafter\ifx\csname QXpage.\thepage\endcsname\relax% + \Tag{)Qpage.\thepage}{\file:id}% + \HCode{
}% + \expandafter\xdef\csname QXpage.\thepage\endcsname{0}% + \fi + \Link[\csname BibFileName\therefsection\endcsname]{}{#1}\EndLink} + \def\hyper:natlinkstart#1{% + \expandafter\ifx\csname QXpage.\thepage\endcsname\relax% + \Tag{)Qpage.\thepage}{\file:id}% + \HCode{}% + \expandafter\xdef\csname QXpage.\thepage\endcsname{0}% + \fi + \Link[\csname BibFileName\therefsection\endcsname]{#1}{}} +\fi +\def\hyper:natanchorend{} +\def\hyper:natlinkend{\EndLink} +\def\writeCiteLink#1{\immediate\write\@mainaux{% + \string\@namedef{#1.\thepage}{\FileName}}} +\let\blx@addpagesum\@gobbletwo +% \let\nolinkurl\relax + +\ifx\blx:ver:no < 3 +% +% biblatex 2.9a +% +% Newly added to process {keylist} environment (CVR) +% +\let\keylist\description +\let\endkeylist\enddescription +\def\keyitem#1{\item[#1]}% +% +% +\else +% +% biblatex 3.0 +% +\let\keylist\Un:def +\let\endkeylist\Un:def +\newenvironment*{keylist} + {\list{}{% + \setlength{\labelwidth}{1.25in}% + \setlength{\labelsep}{10pt}% + \setlength{\leftmargin}{0pt}% + \setlength{\itemsep}{0pt}% + \raggedright% + \renewcommand*{\makelabel}[1]{\hss\bfseries##1}}} + {\endlist} +% +\def\keyitem#1{% + \item[#1] + \begingroup + \keyitemhook% + \blx@bibinit% + \midsentence\ifbibstring{#1}{}{\latintext}\biblstring{#1}% + \expandafter\lbx@initnamehook\lsmartoftext% + \par\nobreak + \midsentence\ifbibstring{#1}{}{\latintext}\bibsstring{#1}% + \expandafter\lbx@initnamehook\ssmartoftext% + \endgroup + \par\nobreak} +\fi % End of version boolean + +\ConfigureList{keylist}% + {\EndP\HCode{
}% + \PushMacro\end:itm +\global\let\end:itm=\empty}% + {\PopMacro\end:itm \global\let\end:itm \end:itm +\EndP\HCode{
}\ShowPar}% + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
}\bgroup \bf}% + {\egroup\EndP\HCode{
}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{reading.4ht} + +\<<< +% reading.4ht (|version), generated from |jobname.tex +% Copyright |CopyYear.2008. Eitan M. Gurari +| + | +\Hinput{reading} +\endinput +>>> \AddFile{6}{reading} + +\<<< +\def\bbx@thebibitem{% + \@itempenalty\z@ + \itemsep4\bibitemsep + \item\relax + \@itempenalty\@M + \itemsep\bibitemsep + \begingroup + \samepage\bfseries + \def\finentrypunct{\strut}% + \ifnum\bbx@head<\tw@ + \usebibmacro{entryhead:full}% + \ifbool{bbx:entrykey}% + {\def\newblockpunct{% + \nobreak\hskip\z@skip\strut + \hfill\penalty100\hskip1em\relax + \hbox{}\nobreak\hfill\strut}% + \def\finentrypunct{% + \parfillskip\z@\finalhyphendemerits\z@ + \par\nobreak}% + \newblock + \printfield{entrykey}}% + {}% + \else + \usebibmacro{entryhead:name}% + \fi + \finentry + \endgroup + \vskip 1.25pt\relax `%hrule height`% + \item\strut} +>>> + +\<\><<< +\renewcommand*{\thebibitem}{% + \@itempenalty\z@ + \itemsep4\bibitemsep + \item\relax + \@itempenalty\@M + \itemsep\bibitemsep + \begingroup + \samepage\bfseries + \usebibmacro{entryhead}% + \endgroup + \vskip 1pt + \item\strut +} +>>> + +\<<< +\pend:def\bib@macro@entryhead:name{\a:entryhead} +\append:def\bib@macro@entryhead:name{\b:entryhead} +\pend:def\bib@macro@entryhead:full{\a:entryhead:full} +\append:def\bib@macro@entryhead:full{\b:entryhead:full} +\NewConfigure{entryhead:name}{2} +\NewConfigure{entryhead:full}{2} +>>> + +\<<< +\let\blx:item\@item %% discarded CVR +\def\@item[#1]{% + \blx:item[#1]% + \ifhmode \spacefactor\blx@sf@par\fi +} +>>> + +The definition of \Verb=\@item= ends with \Verb=\leavevmode=, and +biblatex has a \Verb=\blx@leavevmode= definition with the following +spacefactor assignment. Biblatex uses the spacefactor for checking +different statuses of the compilation. + +The following macros were not initialized, hence done now: + + \Verb=\let\blx@resetpuncthook\@empty= + \Verb=\let\blx@csq@ifkernmark\@empty= + \Verb=\let\bib@field@entrykey\@empty= + +% +% Bug posted by Nicholas Cole +% Bug posted by Joanna Bryson +% + +\Verb=\blx@unitmark= is defined as a new skip to match the introduction +of the same in biblatex.sty v 1.6. [CVR 2011/09/10] + +\<<< +\newskip\blx@unitmark %% discarded CVR +\blx@unitmark=10pt plus 1pt minus 1pt +\let\abx@aux@page\@gobbletwo +\AtEndDocument{% + \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}% + \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}} +% +\let\blx@resetpuncthook\@empty +\let\blx@csq@ifkernmark\@empty +\def\blx@begunit{% + \toggletrue{blx@tempa}% + \iftoggle{blx@insert}% + {\iftoggle{blx@unit}% + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \blx@unitpunct\blx@postpunct + \endgroup + \global\togglefalse{blx@unit}% + \togglefalse{blx@tempa}} + {\blx@postpunct}% + \iftoggle{blx@block}% + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \newblockpunct + \endgroup + \global\togglefalse{blx@block}% + \togglefalse{blx@tempa}}% + {}}% + {}% + \blx@postpunct + \blx@resetpuncthook + \iftoggle{blx@tempa}% + {}% + {\global\togglefalse{blx@insert}}% + \csname a:blx@unit\endcsname + \blx@leavevmode + \blx@csq@ifkernmark + {}% + {\penalty\@M + \hskip-\blx@unitmark\relax + \hskip\blx@unitmark\relax}% + \begingroup + \Configure{blx@unit}{}{}% +} +>>> + +\<<< +\def\blx@begunit{% + \toggletrue{blx@tempa}% + \iftoggle{blx@insert}% + {\iftoggle{blx@unit}% + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \blx@unitpunct + \endgroup + \global\togglefalse{blx@unit}% + \togglefalse{blx@tempa}}% + {}% + \iftoggle{blx@block}% + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \newblockpunct + \endgroup + \global\togglefalse{blx@block}% + \togglefalse{blx@tempa}}% + {}}% + {}% + \blx@postpunct + \blx@resetpuncthook + \iftoggle{blx@tempa}% + {}% + {\global\togglefalse{blx@insert}}% + \csname a:blx@unit\endcsname + \blx@leavevmode + \blx@csqmarkcheck{% + \penalty\@M + \hskip-\blx@unitmark\relax + \hskip\blx@unitmark\relax}% + \begingroup + \Configure{blx@unit}{}{}% +} +>>> + +\<<< +\def\blx@endunit{% + \endgroup + \csname b:blx@unit\endcsname + \Configure{blx@unit}{}{}% + \ifdim\lastskip=\blx@unitmark + \unskip\unskip\unpenalty + \global\togglefalse{blx@lastins}% + \else + \global\toggletrue{blx@insert}% + \global\toggletrue{blx@lastins}% + \fi +} +>>> + +\<<< +\NewConfigure{blx@unit}{2} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{biblatex-chicago.4ht} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The tex4ht output contains wrong punctuation, it should follow +US rules. +\Link[https://tex.stackexchange.com/q/301287/2891]{}{}Source.\EndLink + +\<<< +% biblatex-chicago.4ht (|version), generated from |jobname.tex +% Copyright 2018 TeX Users Group +| +\blx@defbibextras{english}{\uspunctuation} +\Hinput{biblatex-chicago} +\endinput +>>> \AddFile{6}{biblatex-chicago} + + +%%%%%%%%%%%%% +\SubSection{debug.bbx} +%%%%%%%%%%%%% + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% debug.4ht |version % +% Copyright (C) |CopyYear.2008. Eitan M. Gurari % +| +| +\Hinput{debug} +\endinput +>>> \AddFile{5}{debug} + +\<<< +\def\bbx@fieldlabel#1{% + \thebibitem + [\texttt{\makebox[\leftmargin][l]{[#1]}}]} +\def\bbx@subfieldlabel#1{% + \par\nobreak + \makebox[6em][l]{\a:subfieldlabel\ttfamily [#1]\b:subfieldlabel}} +\NewConfigure{subfieldlabel}{2} +>>> + +%%%%%%%%%%%%% +\SubSection{footnote-dw} +%%%%%%%%%%%%% + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% footnote-dw.4ht |version % +% Copyright (C) |CopyYear.2008. Eitan M. Gurari % +| +| +\Hinput{footnote-dw} +\endinput +>>> \AddFile{5}{footnote-dw} + +\<<< +\def\bib@macro@footref{\:label{\thefield {entrykey}}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{amstex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\
}} + + +\<<< +\def\r:HA{\HCode{}} +\def\d:HA{\ifvmode \IgnorePar \fi \EndP\HCode{}|} +>>> + + +\<<< +\newif\ifHCond +>>> + + +\<<< +% +>>> + + +\<<< +\SaveEndP +>>> + +\<<< +\RecallEndP +>>> + +\<<< +\par \ShowPar +>>> + +\<<< +\IgnorePar \EndP +>>> + + + + + + + + +%%%%%%%%%%%%% +\subsection{Obey Lines and Alignments} +%%%%%%%%%%%%% + + + + +\<<< +\Configure{verb}{}{} +>>> + +\<<< +\Configure{obeylines} + {\ifvmode \IgnorePar \EndP + \HCode{
}% + \gdef\ob:ln{blockquote}% + \else \HCode{}% + \gdef\ob:ln{remark}% + \fi + } + {\ht:special{t4ht=}\ShowPar} {\hbox{\HCode{}}} +>>> + +\<<< +\ConfigureEnv{center} + {} {\ShowPar} {}{} +\Configure{centerline} + {\ifvmode \IgnorePar\fi\HCode{}} + {\HCode{}} +\Configure{leftline} + {\ifvmode \IgnorePar\fi\HCode{}} + {\HCode{}} +\Configure{rightline} + {\ifvmode \IgnorePar\fi\HCode{}} + {\HCode{}} +>>> + + +%%%%%%%%%%%%% +\subsection{multirow} +%%%%%%%%%%%%% + +\<<< +\Configure{multirow} + {\HCode{
}} + {\HCode{
}} +>>> + + + +%%%%%%%%%%%%% +\subsection{multirow} +%%%%%%%%%%%%% + +\<<< +\Configure{dcolumn} + {\HCode{
}} + {\HCode{
}} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\subsection{colortbl.sty} +%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\HAssign\Table:No=0 +\HAssign\TableNo=0 +\HAssign\Prev:Col=0 +\HAssign\HRow=0 + +\Configure{@classz} + {\let\begin:current@color=\relax + \let\end:current@color=\relax } + {% + \ifx \CT@column@color\relax \else + \ifx \CT@column@color\empty \else{% + \def\CT@color{\@ifnextchar[\color:ii\color:i}% + \CT@column@color|% + \edef\:temp{\noexpand\add:color + {background-color}{\:temp}{\ar:cnt}}\:temp + }\fi \fi + } + {\begin:current@color} + {\end:current@color} +\Configure{rowcolor}{\row:clr} +\def\row:clr#1{{% +% \HAdvance\HRow by 1 + \add:color{background-color}{#1}{\HRow-}}} +\Configure{text-colortbl} + {\add:color{color}{\current@color}{\HRow-\HCol}} +\Configure{cell-colortbl} + {\add:color{background-color}{\current@color}{\HRow-\HCol}} +\def\add:color#1#2#3{% + \Configure{SetHColor}{\Css{ \#TBL-\TableNo-#3{ #1:\HColor }}}{#2}} +>>> + + + + +%%%%%%%%%%%%%%%%% +\section{Figures} +%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{figure} + {\ifvmode \IgnorePar\fi \EndP \HCode{
<blockquote>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</blockquote></figure>}} + {}{} +\Configure{caption} + {\HCode{<blockquote role="caption"><title role="caption">}} + {\HCode{}} + {} + {\HCode{
}} +>>> + +\<<< +\ConfigureToc{lof} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +\ConfigureToc{lot} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +>>> + + + +%%%%%%%%%%%%%% +\section{Math} +%%%%%%%%%%%%%% + +\<<< +\Configure{$$}{\EndP\PicDisplay}{\EndPicDisplay} + {\everymath{}\everydisplay{}} +\Configure{$}{\PicMath}{\EndPicMath}{} +\Configure{PicMath} + {\Tg}{\Tg}{}{} +\let\MathPar\empty +>>> + + +\<<< +\Configure{PicDisplay} + {\edef\MathPar{\ifvmode par-\fi}\IgnorePar\EndP\ShowPar\endgraf + \HCode{}} + {\HCode{}\ShowPar} + {} {\space role="\MathPar math-display" } +>>> + + + + + +\<<< +\ShowPar\par{\HCondtrue\noindent}% +>>> + + + +\<<< +\Configure{Picture+}{}{} +\Configure{Picture*}{}{} +\Configure{IMG} + {\ht:special{t4ht=}} +\Configure{pic-halign}{} +>>> + + + +\<<< +\Configure{Picture+}{}{} +\Configure{Picture*}{}{} +\Configure{IMG} + {\ht:special{t4ht=}} +\Configure{pic-halign}{} +>>> + + + +\<<< +\Configure{PictureAlt*+} + {\let\sv:HtmlPar=\HtmlPar \let\HtmlPar=\empty + |% + |% + \NoFonts\csname PauseMathClass\endcsname \SUBOff \SUPOff + \let\HCode=\:gobble |%\offinterlineskip|% + \let\EndPicture=\empty + \ht:special{t4ht@[}% + } + {\ht:special{t4ht@]}% + \let\HCode=\:HCode + \let\EndPicture=\:UnDef \let\HtmlPar=\sv:HtmlPar \SUBOn \SUPOn + \csname EndPauseMathClass\endcsname \EndNoFonts + |% + |% + } +>>> + +\<<< +\def\PsCode##1{{\ht:special{\PsCodeSpecial##1}}}% +>>> + +\<<< +\iffalse{\fi +\let\sv:halign=\halign +\let\sv:cr=\cr +\let\sv:crcr=\crcr +\iffalse}\fi +\RecallTeXcr \let\halign =\TeXhalign +>>> + +\<<< +\iffalse{\fi +\let\halign=\sv:halign +\let\cr=\sv:cr +\let\crcr=\sv:crcr +\iffalse}\fi +>>> + +\<<< +\let\PsCode=\relax +>>> + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< + +\Configure{halignTR} + {\HCode{ style="vertical-align:baseline;"}} +\Configure{halignTBL} +% % {t}{\HCode{ valign="top"}} +% % {b}{\HCode{ valign="baseline"}} +% % {c}{\HCode{ valign="middle"}} + {} + +\Configure{halign} + {\EndP\halignTB{halign}} {\HCode{}} + \R:HA\r:HA\D:HA\d:HA +\Configure{pic-halign}{} +\Configure{halignTD} {}{} + {<}{\HCode{ style="white-space:nowrap; text-align:left;"}} + {-}{\HCode{ style="white-space:nowrap; text-align:center;"}} + {>}{\HCode{ style="white-space:nowrap; text-align:right;"}} + {^}{\HCode{ style="vertical-align:top; white-space:nowrap;"}} + {=}{\HCode{ style="vertical-align:baseline; white-space:nowrap;"}} + {||}{\HCode{ style="vertical-align:middle; white-space:nowrap;"}} + {_}{\HCode{ style="vertical-align:bottom; white-space:nowrap;"}} + {p}{\HCode{ style="white-space:wrap; text-align:left;"}\Protect\a:HColWidth} + {m}{\HCode{ style="white-space:nowrap; text-align:left; vertical-align:middle;"}} + {b}{\HCode{ style="white-space:nowrap; text-align:left; vertical-align:baseline;"}} + {} + + + +\ifx \a:imgdir\:UnDef + \let\a:imgdir=\empty + \catcode`\:=12 + \expandafter + \def\csname :temp\endcsname#1imgdir:#2,#3!*?: {% + \if !#2!\else \expandafter + \def\csname a:imgdir\endcsname{#2}\fi} + \expandafter\csname :temp\expandafter\endcsname + \Preamble ,imgdir:,!*?: % + \catcode`\:=11 + \Log:Note{for addressing images in + a subdirectory, use the command line option `imgdir:.../'} +\fi + +>>> + +\<<< + \ConfigureEnv{array} + {\IgnorePar\EndP\Tg
\Picture*{}$$} + {$$\EndPicture\Tg
}{}{} +>>> + +\<<< + \ConfigureEnv{array} + {\IgnorePar\EndP\Tg
\Picture*{}$$} + {$$\EndPicture\Tg
}{}{} +>>> + + + + + + + + + +\<<< +\Configure{graphics} + {} + {\HCode{}% + } +>>> + + +\<<< +\Configure{graphics} + {} + {\HCode{}% + } +>>> + + +\<<< +\Configure{[]} + {\PicDisplay $$\everymath{}\everydisplay{}} + {$$\EndPicDisplay} +\Configure{()}{\protect\PicMath$}{$\protect\EndPicMath} +>>> + + + + +\<<< +\Configure{$$} + {\Configure{@math}{|}\DviMath} + {\EndDviMath{\csname HCondtrue\endcsname\noindent}} + {} +\Configure{@math}{|} \let\math:mode=\a:@math +\Configure{DviMath} + {\a:DviMathML \mathmltrue + \mml:htfsym |%\NoFonts|%% + \IgnoreRule + \HCode{}\a:math + |\IgnorePar} + {\HCode{} \EndIgnoreRule + \ext:htfsym |%\EndNoFonts|%% + \mathmlfalse \b:DviMathML |} +\Configure{DviMathML} + {\HCode{<\ifx \math:mode\a:@math \else inline\fi + equation \Hnewline \expandafter\:rend \a:@math==//>}} + {\HCode{}} +\def\:rend#1=#2=#3//{\if !#1!\else role=#2\fi} +>>> + + +% \ifOption{mml-fonts}{}{|%\mml:htfsym|%\NoFonts}% +% \ifOption{mml-fonts}{}{|%\ext:htfsym|%\EndNoFonts}% + +\<<< +display="block">>> + +\<<< +\sv:ignore +>>> + +\<<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + + + + + + +\<<< +\Configure{mathit}{\HCode{}} + {\HCode{}} +\Configure{mathbf}{\HCode{}} + {\HCode{}} +\Configure{mathtt}{\HCode{}} + {\HCode{}} +\Configure{mathsf}{\HCode{}} + {\HCode{}} +\Configure{mathrm}{\HCode{}} + {\HCode{}} +>>> + +\<<< +\Configure{textbf}{|\HCode{}} + {\HCode{}|} +\Configure{textit}{|\HCode{}} + {\HCode{}|} +\Configure{textrm}{|\HCode{}} + {\HCode{}|} +\Configure{textup}{|\HCode{}} + {\HCode{}|} +\Configure{textsc}{|\HCode{}} + {\HCode{}|} +\Configure{textsf}{|\HCode{}} + {\HCode{}|} +\Configure{textsl}{|\HCode{}} + {\HCode{}|} +\Configure{texttt}{|\HCode{}} + {\HCode{}|} +\Configure{emph}{|\HCode{}} + {\HCode{}|} +>>> + + + +\<<< +\leavevmode\SaveEndP\bgroup +\Configure{HtmlPar} + {\HCode{}} + {\HCode{}} + {}{}% +>>> + +\<<< +\egroup \RecallEndP +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{Environments} +%%%%%%%%%%%%%%%%%%%% + + + + + +%%%%%%%%%%%% +\subsection{quote} +%%%%%%%%%%%% + +\<<< +\ConfigureEnv{quote}{\ifvmode\IgnorePar\fi\EndP\HCode{
}}{\ifvmode\IgnorePar\fi\EndP\HCode{
}\par\ShowPar}{}{} +>>> + +%%%%%%%%%%%%% +\subsection{Center} +%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{center} + {\EndP}{\par \ShowPar} {}{} +\ConfigureList{center} + {\IgnorePar\EndP\HCode{
}\par\ShowPar} + {\IgnorePar\EndP\HCode{</section>}\par\ShowPar} + {} {\par\ShowPar} +>>> + +%%%%%%%% +\subsection{Flusshing} +%%%%%%%%%%%%% + +\<latex environments\><<< +\ConfigureEnv{flushleft} + {\EndP}{\par \ShowPar} {}{} +\ConfigureEnv{flushright} + {\EndP}{\par \ShowPar} {}{} +\ConfigureList{flushleft} + {\IgnorePar\EndP\HCode{<blockquote role="flushleft">}\par\ShowPar} + {\IgnorePar\EndP\HCode{</blockquote>}\par\ShowPar} + {} {\par\ShowPar} +\ConfigureList{flushright} + {\IgnorePar\EndP\HCode{<blockquote role="flushright">}\par\ShowPar} + {\IgnorePar\EndP\HCode{</blockquote>}\par\ShowPar} + {} {\par\ShowPar} +>>> + +%%%%%%%%%%%%% +\subsection{Mini Page} +%%%%%%%%%%%%% + +\<latex environments\><<< +\ConfigureEnv{minipage} + {%\IgnorePar\EndP + %\HCode{<note><para role="minipage">}% + {\ifnum 0=`}\fi + } + {\ifnum 0=`{\fi}% +% \EndP\HCode{</para></note>}% + } + {}{} +>>> + +The extra braces in the minipage configurations are to allow the +compilation of cases similar to the following one. + +\begin{verbatim} +\documentclass{article} +\begin{document} +\begin{tabular}{c} +\begin{minipage}{4in} +\begin{eqnarray} +x & = & y +\end{eqnarray} +\end{minipage} +\end{tabular} +\end{document} +\end{verbatim} + + + + +\<latex environments\><<< +\ConfigureEnv{section} + {\IgnorePar\EndP\HCode{<section role="minipage">}} + {\IgnorePar\EndP\HCode{</section>}\ShowPar} + {}{} +>>> + +%%%%%%%%%%%%% +\subsection{Tabbing} +%%%%%%%%%%%%% + +\<latex environments\><<< + +>>> + +\subsection{Tabular and Array} + +\<latex environments\><<< + +>>> + +\subsection{Verbatim} + +\<latex environments\><<< +\ConfigureEnv{verbatim} + {\ifinner\else \vfill\break\fi + \IgnorePar\EndP\HCode{<literallayout role="verbatim">}\EndNoFonts} + {\NoFonts \ht:special{t4ht=</literallayout>}\ShowPar\par} + {} {} +\ConfigureEnv{verbatim*} + {\ifinner\else \vfill\break\fi + \IgnorePar\EndP\HCode{<literallayout role="verbatim-star">}\EndNoFonts} + {\NoFonts \HCode{</literallayout>}\ShowPar\par} + {} {} +\Configure{verbatim}{\:nbsp}{\a:sp} +>>> + + array + tabbing + tabular + + +%%%%%%%%%%%%%%%%%%%%%% +\subsection{Listings} +%%%%%%%%%%%%%%%%%%%%%% + +\<configure docbook listings\><<< +\Log:Note{to ensure proper alignments use + fixed size fonts (see listings.dtx)} +\Configure{listings} + {\ifvmode \IgnorePar\fi \EndP + {\everypar{}\leavevmode}\HCode{<!--l. \the\inputlineno-->}% + \HCode{<pre class="listings">}% + } + {{\everypar{}\leavevmode}\HCode{</pre>}} + {}{} +\Configure{lstinline} + {\HCode{<remark role="lstinline">}} + {\HCode{</remark>}} +>>> + +\<configure docbook listings\><<< +\ConfigureEnv{lstlisting} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno-->}% + \HCode{<div class="lstlisting">}% + \bgroup + \Configure{listings} + {{\everypar{}\leavevmode}} + {{\everypar{}\leavevmode}} + {\HCode{<br/>}}{}% + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{Paragraphs} +%%%%%%%%%%%%%%%%%%%% + + +\<tex4ht paragraphs\><<< +\Configure{HtmlPar} + {\EndP\HCode{<!--l. \the\inputlineno--><para>}} + {\EndP\HCode{<!--l. \the\inputlineno--><para>}} + {\HCode{</para>}} {\HCode{</para>}} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{TOCs} +%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%% +\subsection{Shared} +%%%%%%%%%%%%%%%%%%%% + + + + +\<configure docbook tex4ht\><<< +\Configure{TocLink}{\Link{#2}{#3}\EndLink#4} +>>> + + + + +\<article tocs\><<< +\Configure{tableofcontents} + {\ifvmode \IgnorePar\fi \EndP\HCode{<toc><tocpart>}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</tocpart></toc><para></para>}} + {}{}{} +>>> + + +\<report,book tocs\><<< +|<article tocs|> +\ConfigureToc{appendix} + {\HCode{\Hnewline<tocentry role="appendixToc">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{chapter} + {\HCode{\Hnewline<tocentry role="chapterToc">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{likechapter} + {} {\HCode{\Hnewline<tocentry role="likechapterToc">}} + {} {\HCode{</tocentry>}} +>>> + +\<article tocs\><<< +\ConfigureToc{likeparagraph} + {} {\HCode{\Hnewline<tocentry role="likeparagraphToc">}} + {} {\HCode{</tocentry>}} +\ConfigureToc{likepart} + {} {\HCode{\Hnewline<tocentry role="likepartToc">}} + {} {\HCode{</tocentry>}} +\ConfigureToc{likesection} + {} {\HCode{\Hnewline<tocentry role="likesectionToc">}} + {} {\HCode{</tocentry>}} +\ConfigureToc{likesubparagraph} + {} {\HCode{\Hnewline<tocentry role="likesubparagraphToc">}} + {} {\HCode{</tocentry>}} +\ConfigureToc{likesubsection} + {} {\HCode{\Hnewline<tocentry role="likesubsectionToc">}} + {} {\HCode{</tocentry>}} +\ConfigureToc{likesubsubsection} + {} {\HCode{\Hnewline<tocentry role="likesubsubsectionToc">}} + {} {\HCode{</tocentry>}} +\ConfigureToc{paragraph} + {\HCode{\Hnewline<tocentry role="paragraphToc">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{part} + {\HCode{\Hnewline<tocentry role="partToc">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{section} + {\HCode{\Hnewline<tocentry role="sectionToc">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{subparagraph} + {\HCode{\Hnewline<tocentry role="subparagraphToc">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{subsection} + {\HCode{\Hnewline<tocentry role="subsectionToc">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{subsubsection} + {\HCode{\Hnewline<tocentry role="subsubsectionToc">}} + {\ }{} {\HCode{</tocentry>}} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{Scr} +%%%%%%%%%%%%%%%%%%%% + +\<scrbook tocs\><<< +\ConfigureToc{addchap} + {} + {\HCode{\Hnewline<tocentry role="addchapToc">}} + {} + {\HCode{</tocentry>}} +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{Texinfo} +%%%%%%%%%%%%%%%%%%%% + + + +\<configure docbook texinfo\><<< +\ConfigureToc{chapter} + {\HCode{\Hnewline<tocentry role="chapter">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{appendix} + {\HCode{\Hnewline<tocentry role="appendix">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{unnumbered} + {\HCode{\Hnewline<tocentry role="unnumbered">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{numberedsec} + {\HCode{\Hnewline<tocentry role="numberedsec">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{appendixsec} + {\HCode{\Hnewline<tocentry role="appendixsec">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{unnumberedsec} + {\HCode{\Hnewline<tocentry role="unnumberedsec">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{numberedsubsec} + {\HCode{\Hnewline<tocentry role="numberedsubsec">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{appendixsubsec} + {\HCode{\Hnewline<tocentry role="appendixsubsec">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{appendixsubsec} + {\HCode{\Hnewline<tocentry role="appendixsubsec">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{unnumberedsubsec} + {\HCode{\Hnewline<tocentry role="unnumberedsubsec">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{numberedsubsubsec} + {\HCode{\Hnewline<tocentry role="numberedsubsubse">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{appendixsubsubsec} + {\HCode{\Hnewline<tocentry role="appendixsubsubse">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{appendixsubsubsec} + {\HCode{\Hnewline<tocentry role="appendixsubsubse">}} + {\ }{} {\HCode{</tocentry>}} +\ConfigureToc{unnumberedsubsubsec} + {\HCode{\Hnewline<tocentry role="unnumberedsubsub">}} + {\ }{} {\HCode{</tocentry>}} +\Configure{toTocLink}{\Title:Link}{} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{Indexes} +%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%% +\subsection{Article, Report, Book} +%%%%%%%%%%%%% + +\<index entry\><<< +\Configure{theindex} + {\let\end:theidx=\empty \HCode{<indexterm>}} + {\HCode{</indexterm>}} + {|<primary index|>% + \def\end:cur{|<end primary index|>\let\end:cur=\empty}% + \DB:index + } + {\end:cur \let\chain:subitem=\empty} + {\chain:subitem |<secondary index|>% + \def\end:cur{|<end secondary index|>\let\end:cur=\empty}% + } + {\end:cur \def\chain:subitem{% + |<new index entry|>|<primary index|>|<end primary index|>}% + \let\chain:subsubitem=\empty + } + {\chain:subsubitem|<tertiary index|>% + \def\end:cur{|<end tertiary index|>\let\end:cur=\empty}% + } + {\end:cur \def\chain:subsubitem{% + |<new index entry|>|<primary index|>|<end primary index|>% + |<secondary index|>|<end secondary index|>}% + } + {} +>>> + + + +\<article, report, book\><<< +\def\DB:index#1\indNum#2{% + \ifnum #2=\index:N + \let\DB:index=\relax #1\long\def\item##1\end{\end}% + \else \expandafter\gob:item \fi +} +\long\def\gob:item#1\item{\DB:index} +\let\indNum=\:gobble +>>> + + + + +\<article, report, book\><<< +\HAssign\index:N = 0 +\def\comNum#1{\tmp:cnt=} +\let\db:index=\index +\def\index{% + \immediate\openin15=\jobname.ind + \ifeof15 \else + \immediate\closein15 + \bgroup + \def\gobble##1{}% + \gHAdvance\index:N by 1 + |<index entry|>% + \leavevmode \let\par=\empty + \input{\jobname.ind}% + \egroup + \fi + \db:index} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{index} +%%%%%%%%%%%%%%%%%%%% + + +\<configure docbook latex\><<< +\Configure{idxmake}{\Beforeentry} +>>> + + +\<ams art,proc,book\><<< +|<index throug printindex|> +>>> + + +\<configure docbook amsmidx\><<< +|<index throug printindex|> +>>> + +\<configure docbook makeidx\><<< +|<index throug printindex|> +>>> + + +\<configure docbook index\><<< +|<index throug printindex|> +>>> + +\<configure docbook multind\><<< +|<index throug printindex|> +>>> + + +\<index throug printindex\><<< +\def\:temp{\HCode{<indexterm role="printindex" />}} +\HLet\printindex\:temp +\expandafter\ifx \csname db:index\endcsname\realx + \let\db:index=\index +\fi +\def\index{\bgroup + \HRestore\printindex + \def\gobble##1{}% + \gHAdvance\index:N by 1 + |<index entry|>% + \leavevmode \let\par=\empty + \printindex + \egroup \db:index} +\def\comNum#1{\tmp:cnt=} +\def\brange#1{\HCode{<remark role="start">}\Link{to-#1}{from-#1}\EndLink + \HCode{</remark>}} +\def\erange#1{\HCode{<remark role="to">}\Link{from-#1}{to-#1}\EndLink + \HCode{</remark>}} +>>> + + + +\<\><<< +\def\comNum{% + \def\:tempa{% + \ifx ,\:temp \def\:tempa####1{\tmp:cnt=}% + \else \ifx {\:temp \def\:tempa####1{\tmp:cnt=####1}% + \iffalse }\fi + \else \def\:tempa{\tmp:cnt=}% + \fi\fi \:tempa}% + \futurelet\:temp\:tempa} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{theindex} +%%%%%%%%%%%%%%%%%%%% + + +\<article, report, book\><<< +\Configure{theindex} + {\special{t4ht@[}} + {\special{t4ht@]}} + {}{}{}{}{}{}{} +>>> + + + +\<configure docbook makeidx\><<< +\Configure{see} + {\csname end:cur\endcsname \HCode{<seealso role="see">}} + {\HCode{</seealso>}% + \futurelet\:next\remove:comma} +\def\remove:comma{\ifx ,\:next \expandafter\:gobble\fi} +>>> + + + +\<primary index\><<< +\HCode{<primary>}% +>>> + +\<end primary index\><<< +\HCode{</primary>}\hfil\break +>>> + +\<secondary index\><<< +\HCode{<secondary>}% +>>> + +\<end secondary index\><<< +\HCode{</secondary>}\hfil\break +>>> + +\<tertiary index\><<< +\HCode{<tertiary>}% +>>> + +\<end tertiary index\><<< +\HCode{</tertiary>}\hfil\break +>>> + + + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{splitindex} +%%%%%%%%%%%%%%%%%%%% + +\<configure docbook splitidx\><<< +\let\db:sindex=\sindex +\def\:sindex{\bgroup + \HRestore\printindex + \def\gobble##1{}% + \gHAdvance\index:N by 1 + \leavevmode \let\par=\empty + \edef\:temp{\LikeRef{printindex}}\expandafter\printindex\:temp + \egroup \db:sindex} +>>> + +\<configure docbook splitidx\><<< +\def\:temp{% + \def\:tempa{% + \HCode{<indexterm role="printindex\ifx *\:temp -star\fi" />}% + \ifx *\:temp \Tag{printindex}{*}\expandafter\:gobble\fi + }% + \futurelet\:temp\:tempa +} +\HLet\printindex\:temp +>>> + +\<configure docbook splitidx\><<< +\def\sindex{% + \def\:tempa{% + \ifx [\:temp + \def\:temp[####1]{\def\ind:ext{####1}\:sindex[####1]}% + \expandafter\:temp + \else \expandafter\:sindex \fi + }% + \futurelet\:temp\:tempa +} +\let\o:@@printindex:=\@@printindex +\def\@@printindex[#1][#2]{% + \def\:temp{#1}% + \ifx \:temp\ind:ext \o:@@printindex:[#1][#2]\fi} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Color} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure docbook color\><<< +\Configure{color}{\:gobble} +\Configure{HColor:gray}{% + \int:of\:tempa{255}{#1}% + \Configure{HColor}{}{rgb(\:tempa,\:tempa,\:tempa)}% +} +\Configure{HColor:rgb}{% + \int:of\:tempa{255}{#1}% + \int:of\:tempb{255}{#2}% + \int:of\:tempc{255}{#3}% + \Configure{HColor}{}{rgb(\:tempa,\:tempb,\:tempc)}% +} +\Configure{HColor:cmyk}{% + \int:of\:Cyan{255}{#1}% + \int:of\:Magenta{255}{#2}% + \int:of\:Yellow{255}{#3}% + \int:of\:Black{255}{#4}% + \:cmyk\:tempa\:Cyan + \:cmyk\:tempb\:Magenta + \:cmyk\:tempc\:Yellow + \Configure{HColor}{}{rgb(\:tempa,\:tempb,\:tempc)}% +} +|<HColor util|> +>>> + + +\<HColor util\><<< +\def\int:of#1#2#3{% + \tmp:dim=#3pt \tmp:dim=#2\tmp:dim + \edef\:temp{\tmp:cnt\the\tmp:dim//}% + \def#1##1//{}\afterassignment#1\:temp + \edef#1{\the\tmp:cnt}% +} +>>> + + +\begin{verbatim} +cmyk -> gray +(1 - 0.299c - 0.587m - 0.114y)(1 - k) + +cmyk -> rgb +Red = 1-minimum(1,Cyan *(1-Black)+Black) +Green = 1-minimum(1,Magenta*(1-Black)+Black) +Blue = 1-minimum(1,Yellow *(1-Black)+Black) +\end{verbatim} + + + +\<HColor util\><<< +\def\:cmyk#1#2{% + \tmp:cnt=255 \advance\tmp:cnt by -\:Black + \multiply\tmp:cnt by#2 \advance\tmp:cnt by \:Black + \advance\tmp:cnt by -255 \tmp:cnt=-\tmp:cnt + \ifnum \tmp:cnt<0 \tmp:cnt=0 \fi + \edef#1{\the\tmp:cnt}% +} +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{Other} +%%%%%%%%%%%%%%%%%%%% + + +\<latex ltoutenc\><<< +\Configure{textcircled} + {\@use@text@encoding \@curr@enc c} + {\leavevmode \special{t4ht@+\string&\#x00A9;}c} + {\@use@text@encoding \@curr@enc \scshape r} + {\leavevmode \special{t4ht@+\string&\#x00AE;}r} + {} +>>> + + +\<configure docbook latex\><<< +|<latex ltoutenc|> +\def\:temp{LaTeX} +\HLet\LaTeX\:temp +>>> + +\<configure docbook amsmath\><<< +\def\:temp{{\protect\AmSfont AMS}} +\HLet\AmS\:temp +>>> + + +\<latex, plain\><<< +|<unicode space|> +>>> + +\<unicode space\><<< +\def\:nbsp{\HCode{\string&}\HChar{-35}\HCode{x00A0;}}% +>>> + + +\<configure docbook latex\><<< +\Configure{footnotetext} + {\HCode{<footnote><para>}\setbox\tmp:bx=\hbox\bgroup\let\@makefnmark\relax} + {\egroup}% + {\HCode{</para></footnote>}} +\Configure{footnotemark} + {\setbox\tmp:bx=\hbox\bgroup} + {\egroup} +\ifx \tmp:bx\:UnDef \csname newbox\endcsname \tmp:bx \fi +>>> + + +Sub and super scripts + + +\<configure docbook latex\><<< +\Configure{textsuperscript} + {\HCode{<superscript>}} + {\HCode{</superscript>}} + +\Configure{textsubscript} + {\HCode{<subscript>}} + {\HCode{</subscript>}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Underline and Overline} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure docbook latex\><<< +\Configure{underline} + {\HCode{<emphasis role="underline">}\:gobble} + {\HCode{</emphasis>}} +\Configure{overline} + {\HCode{<emphasis role="overline">}} + {\HCode{</emphasis>}} +>>> + +\<configure docbook plain\><<< +\Configure{underline} + {\HCode{<emphasis role="underline">}\hbox\bgroup \:gobble} + {\egroup \HCode{</emphasis>}} +\Configure{overline} + {\HCode{<emphasis role="overline">}} + {\HCode{</emphasis>}} +>>> + + + + + + + +\<configure docbook-mml latex\><<< +\Configure{overline} + {\bgroup\ifmathml |<mathml overline|>\else + \HCode{<emphasis role="overline">}\fi} + {\ifmathml |<end mathml overline|>\else \HCode{</emphasis>}\fi\egroup} +\Configure{underline} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<emphasis role="underline">}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</emphasis>}\fi \egroup} +>>> + + +\<mathml latex\><<< +|<und/ov-erline|> +>>> + +\<mathml plain\><<< +|<und/ov-erline|> +>>> + + +\<und/ov-erline\><<< +\Configure{overline} + {\bgroup |<mathml overline|>} + {|<end mathml overline|>\egroup} +\Configure{underline} + {\bgroup \ifmmode |<mathml underline|>\else + |<nomath underline|>\fi} + {|<end mathml underline|>\egroup} +>>> + +\<nomath underline\><<< +\expandafter\everymath +\expandafter{\expandafter\everymath + \expandafter{\the\everymath}}% +\let\o::@underline:\o:@@underline: +\def\o:@@underline:{\let\o:@@underline:\o::@underline:}% +>>> + + +\<mathml overline\><<< +\HCode{<\a:mathml mover accent="false"\Hnewline +\mml:class="mml-overline"><\a:mathml mrow>}% +>>> + +\<end mathml overline\><<< +\HCode{</\a:mathml mrow><\a:mathml mo\Hnewline + accent="true">&\#x00AF;</\a:mathml mo>% +</\a:mathml mover>}% +>>> + +\verb'¯' is the code of \verb'‾' + + +\<mathml underline\><<< +\HCode{<\a:mathml munder \a:mathml accentunder="false"\Hnewline +\mml:class="mml-underline"><\a:mathml mrow>}% +>>> + +\<end mathml underline\><<< +\HCode{</\a:mathml mrow><\a:mathml mo\Hnewline +accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% +>>> + + +\verb'̲' is the code of \verb'_' + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{AMS} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%% +\section{Root} +%%%%%%%%%%%%%%%%%%%% + + +\<configure docbook amsart\><<< +|<article prologue|> +|<sectioning utilities|> +|<ams maketitle|> +|<ams article,report maketitle|> +|<ams art,proc,book|> +|<ams art,proc|> +>>> + +\<configure docbook amsbook\><<< +|<article prologue|> +|<sectioning utilities|> +|<ams maketitle|> +|<ams article,report maketitle|> +|<ams art,proc,book|> +|<ams book|> +>>> + +\<configure docbook amsproc\><<< +|<article prologue|> +|<sectioning utilities|> +|<ams maketitle|> +|<ams article,report maketitle|> +|<ams art,proc,book|> +|<ams art,proc|> +>>> + +\<configure docbook-mml amsart\><<< +|<ams dtd|> +>>> + +\<ams dtd\><<< +\:CheckOption{css} \if:Option + \:CheckOption{dtd} \if:Option + \Configure{VERSION} + {\HCode{<?xml version="1.0"?>\Hnewline}} + \Configure{DOCTYPE} + {\HCode{<!DOCTYPE article |<doctype 5.0|> >}} + \Configure{XML-STYLESHEET} + {\HCode{<?xml-stylesheet type="text/css" href="\jobname.css"?> + \Hnewline}} + \else + \Configure{VERSION} + {\HCode{<?xml version="1.0"?>\Hnewline}} + \Configure{DOCTYPE} + {\HCode{<!DOCTYPE article |<doctype 5.0|> >}} + \Configure{XML-STYLESHEET} + {\HCode{<?xml-stylesheet type="text/css" href="\jobname.css"?> + \Hnewline}} + \fi +\else + \Configure{VERSION} + {\HCode{<?xml version="1.0"?>\Hnewline}} + \Configure{DOCTYPE} + {\HCode{<!DOCTYPE article |<doctype 5.0|> >\Hnewline }} +\fi +>>> + + + +\<configure docbook Preamble\><<< +\Configure{PROLOG}{VERSION,DOCTYPE,*XML-STYLESHEET} +\:CheckOption{no-DOCTYPE} \if:Option + \Configure{PROLOG}{VERSION,*XML-STYLESHEET} +\fi +>>> + + + +\<configure docbook-mml amsbook\><<< +|<ams dtd|> +>>> + +\<configure docbook-mml amsproc\><<< +|<ams dtd|> +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{Css} +%%%%%%%%%%%%%%%%%%%% + +\<configure docbook tex4ht\><<< +|<cascade style sheets|> +\Configure{Preamble} + {|<default cascade style sheets|>} {} +\Configure{CssFile}{\jobname.css} + {/* \aa:CssFile\space from \jobname.tex (TeX4ht) */} +\Configure{Needs}{l. + \the\inputlineno\space--- needs --- #1 ---} +\Configure{Needs-}{l. + \the\inputlineno\space--- needs --- #1 ---} +>>> + +\<default cascade style sheets\><<< +{\ifdim \lastskip>\z@ \unskip\fi \IgnorePar\parindent\z@ +\leavevmode}% +\immediate\write-1{--- file \aa:CssFile\space ---}% +\ht:special{t4ht>\aa:CssFile}\ht:special{t4ht=\Hnewline /* css.sty */}% +\ht:special{t4ht<\aa:CssFile}% +>>> + + +\<cascade style sheets\><<< +\ScriptCommand{\CssFile}{% + \immediate\write-1{--- file \aa:CssFile\space ---}% + \def\FontSize##1##2{\:Context{##1}\ht:special{t4ht;\%##2}\%}% + \def\FontName##1{\:Context{##1}\ht:special{t4ht;=}}% + \def\:Context##1{\ht:special{t4ht>\jobname.tmp}##1\ht:special + {t4ht>\aa:CssFile}}% + \ht:special{t4ht>\jobname.tmp}\ht:special{t4ht>\aa:CssFile}\bb:CssFile + \hfil\break\NoFonts}{\EndNoFonts + \ht:special{t4ht<\aa:CssFile}\ht:special{t4ht<\jobname.tmp}} +\let\Css:File|=\CssFile +\def\CssFile{\futurelet\:temp\Css:Fl} +\def\Css:Fl{\ifx [\:temp \expandafter\Css:fl + \else \expand:after{\Css:File \space}\fi} +\def\Css:fl[#1]{\Css:File\space \css:files #1,,|<par del|>} +\def\css:files#1,#2|<par del|>{\def\:temp{#1}\ifx \:temp\empty + \else \def\:temp{\in:css#1.|<par del|>\css:files#2,,|<par del|>}\fi + \:temp } +\def\in:css#1.#2|<par del|>{\def\:temp{#2}\ifx \:temp\empty \input #1.css + \else \inc:ss#1.#2|<par del|>\fi} +\def\inc:ss#1.|<par del|>{\input #1 } +\NewConfigure{CssFile}[2]{\def\aa:CssFile{#1}\def\bb:CssFile{#2}} +>>> + + + +\<cascade style sheets\><<< +\def\Css#1{{\def\:temp{\Configure{Needs}}% + \expandafter\:temp\expandafter{\aa:Css}\Needs{#1}}} +>>> + + +\<configure docbook tex4ht\><<< +\ifx \a:FontCss:\:UnDef + \Configure{FontCss}{Font\string_Css##1} + {Font\string_Css\string_Plus\space##1} +\fi +\expandafter\ifx \csname aa:Css\endcsname\relax + \Configure{Css}{Css: ##1} +\fi +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{Theorem} +%%%%%%%%%%%%%%%%%%%% + + +\<ams art,proc,book\><<< +\ifx \deferred@thm@head\:UnDef\else + |<shared ams thm/cls|> +\fi +>>> + +\<configure docbook amsthm\><<< +|<shared ams thm/cls|> +>>> + +\<shared ams thm/cls\><<< +\Configure{proof} + {\IgnorePar\EndP\HCode{<blockquote role="proof"><title>}\IgnorePar} + {\ifvmode \IgnorePar\fi\EndP\HCode{}\ShowPar\par} + {\IgnorePar\EndP\HCode{
}\ShowPar\par} +>>> + + + + +%%%%%%%%%%%%%%%%%%%% +\section{Title Page} +%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{maketitle} + {\HCode{}} + {\HCode{}} + {\HCode{}}{\HCode{}} +\Configure{thanks author date and} {}{} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {}{} +>>> + + +\<<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi\EndP + \HCode{
}% + \ConfigureEnv{center} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi}% + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</section>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<para role="title">}} + {\ifvmode \IgnorePar\fi\HCode{</para>}} +\Configure{thanks author date and} + {\par\IgnorePar\EndP \HCode{<note role="thanks">}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</note>}} + {\ifvmode \IgnorePar\fi\EndP + |<para role|>\HCode{<para role="authorgroup"><author><personname><othername>}} + {\ifvmode \IgnorePar\fi + \HCode{</othername></personname></author><!--/author--></para><!--/authorgroup-->}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<para role="date">}} + {\ifvmode \IgnorePar\fi \HCode{</para><!--/date-->}} + {\ifvmode \IgnorePar\fi\lowercase{\HCode{</othername></personname></author> + <!--/author--><!--author--><author><personname><othername>}}} + {} +>>> + +\<ams article,report maketitle\><<< +\Configure{addresses} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<note role="addresses">}\ShowPar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</note><!--addresses-->}} +\Configure{address} + {\HCode{<note role="address-title"><para>}} + {\ifvmode \IgnorePar\fi + \HCode{</para></note><!--address-title--><note role="address"><para>}} + {\HCode{</para></note><!--address-->}} +\Configure{curraddr} + {\HCode{<para role="curraddr-title">}} + {\ifvmode \IgnorePar\fi + \HCode{</para><!--curraddr-title--><para role="curraddr">}} + {\HCode{</para><!--curraddr-->}} +\Configure{email} + {\HCode{<note role="email-title"><para>}} + {\ifvmode \IgnorePar\fi + \HCode{</para></note><!--email-title--><note role="email"><para>}} + {\HCode{</para></note><!--email-->}} +\Configure{urladdr} + {\HCode{<para role="urladdr-title">}} + {\ifvmode \IgnorePar\fi + \HCode{</para><!--urladdr-title--><para role="urladdr">}} + {\HCode{</para><!--urladdr-->}} +>>> + +\<ams art,proc,book\><<< +\ConfigureEnv{abstract} + {\ifvmode \IgnorePar\fi \EndP} + {\ifvmode \IgnorePar\fi \EndP} + {}{} +\ConfigureList{abstract} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<note role="abstract">}\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</note><!--abstract-->}\ShowPar} + {\IgnorePar\par\HCode{<title>}} + {\HCode{}\ShowPar\par} +\Configure{setabstract} + {\ifvmode \IgnorePar \fi \EndP} + {\ifvmode \IgnorePar \fi \EndP} +>>> + +\<<< +\Configure{subjclass} + {\par\IgnorePar\HCode{}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP\HCode{}} +\Configure{keywords} + {\par\IgnorePar\EndP \HCode{}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP\HCode{}} +>>> + + + +\<<< +\Configure{translators} + {\par\IgnorePar\EndP \HCode{}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP \HCode{}} + {\HCode{}} + {\HCode{}} +>>> + +\<<< +\Configure{translators} + {\par\IgnorePar\EndP \HCode{}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP \HCode{}} + {\HCode{}} + {\HCode{}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Sections} +%%%%%%%%%%%%%%%%%% + + + + + +\<<< +| +>>> + +\<<< +| +>>> + + +\<<< +| +>>> + + + + +\<<< +\Configure{part} + {\OpenDiv{part}} {\CloseDiv{part}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{section} + {\OpenDiv{section}} {\CloseDiv{section}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{subsection} + {\OpenDiv{subsection}} {\CloseDiv{subsection}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{subsubsection} + {\OpenDiv{subsubsection}} {\CloseDiv{subsubsection}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{paragraph} + {\OpenDiv{paragraph}} {\CloseDiv{paragraph}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{subparagraph} + {\OpenDiv{subparagraph}} {\CloseDiv{subparagraph}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +| +>>> + + +\<<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \HCode{}\thesection + \HCode{}\fi } +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \HCode{}\thesubsection + \HCode{}\fi } +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \HCode{}\thesubsubsection + \HCode{}\fi } +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{End Points} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likpart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\ifx \part\:UnDef \else + \Configure{endpart}{likepart} +\fi +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{amsmath} +%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\Configure{equation} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}% + \Configure{gather} + {\HCode{}\IgnorePar } + {\HCode{}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{}\fi } + {} + } + {\ifvmode \IgnorePar\fi\EndP \HCode{}} + {\ifvmode \IgnorePar\fi\EndP \HCode{
}\par + \ShowPar} + +% Mar 18, 2013 at 9:28 PM, Matteo Gamboz +% wrote that starred equation caused an forgotten endgroup error, hence +% the following fix. CVR Mar 22, 2013. + +\Configure{equation*} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}% + \Configure{gather} + {\HCode{}\IgnorePar } + {\HCode{}} + {} + {} + {} + {} + } + {\ifvmode \IgnorePar\fi\EndP \HCode{
}\par + \ShowPar} +>>> + + +\<<< +\ConfigureEnv{align*} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi} {}{} +\ConfigureEnv{alignat*} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{alignat} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{align} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{eqxample} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{flalign*} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{flalign} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{gather} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{gather*} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{gathered} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{matrix} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{xalignat*} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{xalignat} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +\ConfigureEnv{xxalignat} + {\ifmmode\else \ifvmode\else \IgnorePar\fi \EndP\fi} + {\ifmmode\else \par\ShowPar\fi}{}{} +>>> + + + + +\<<< +\ConfigureEnv{subequations} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}% + } + {\ifvmode \IgnorePar\fi\EndP \HCode{
}\par + \ShowPar} + {}{} +>>> + +\<<< +\Configure{equation} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{
}\IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP\HCode{}} + {\HCode{
}} +\Configure{equation*} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{
}\IgnorePar + } + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{
}} +>>> + + +\<<< +\def\:tempc#1#2{% + \ConfigureEnv{#1} + {\par\IgnorePar\EndP\HCode{}\Picture*[]{}} + {\EndPicture\EndP\HCode{}\par} + {} {}} +\:tempc{align}{align} +\:tempc{alignat}{alignat} +\:tempc{xalignat}{xalignat} +\:tempc{xxalignat}{xxalignat} +\:tempc{flalign}{flalign} +\:tempc{align*}{align-star} +\:tempc{alignat*}{alignat-star} +\:tempc{xalignat*}{xalignat-star} +\:tempc{flalign*}{flalign-star} +>>> + +%%%%%%%%%%%%%%%%% +\chapter{Plain} +%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{centerline} + {\IgnorePar\EndP\HCode{
}\ShowPar\par} + {\IgnorePar\EndP\HCode{
}\ShowPar\par} +\Configure{leftline} + {\IgnorePar\EndP\HCode{
}\ShowPar\par} + {\IgnorePar\EndP\HCode{
}\ShowPar\par} +\Configure{rightline} + {\ifvmode \IgnorePar \fi \EndP \HCode{
}\ShowPar\par} + {\ifvmode \IgnorePar \fi \EndP \HCode{
}\ShowPar\par} +>>> + + +%%%%%%%%%%%%%%%%% +\chapter{TeXinfo} +%%%%%%%%%%%%%%%%% + + + + +\<<< +| +\Configure{pdfurl} + {\let\sv:Link=\Link \let\sv:EndLink=\EndLink + \let\Link=\U:Link + \def\EndLink{\EndU:Link\let\Link=\sv:Link \let\EndLink=\sv:EndLink}} +%\LinkCommand\U:Link{ulink, url,,,,} +\LinkCommand\U:Link{link, xlink:href,,,,} +>>> + + + + +\<<< +\Configure{group} + {\IgnorePar\EndP\HCode{
}\ShowPar\par} + {\IgnorePar\EndP\HCode{
}\ShowPar\par} +\Configure{multitable} + {\IgnorePar \EndP\HCode{}\IgnorePar } + {\HCode{}} + {\HCode{\ifnum \HRow=1 \fi + }} + {\HCode{}} + {\HCode{}} + {\IgnorePar \EndP\HCode{}} +>>> + + +\<<< +\Configure{example} + {\IgnorePar\EndP\HCode{}\bgroup + \Configure{obeylines}{}{}{\hbox{\HCode{}}}} + {\egroup\IgnorePar\EndP\HCode{}\ShowPar\par} +\Configure{smallexample} + {\IgnorePar\EndP\HCode{}\bgroup + \Configure{obeylines}{}{}{\hbox{\HCode{}}}} + {\egroup\IgnorePar\EndP\HCode{}\ShowPar\par} +>>> + + + + + +\<<< +\ConfigureMark{chapter}{\the\chapno} +\Configure{chapter} + {\OpenDiv{chapter}} {\CloseDiv{chapter}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\ConfigureMark{appendix}{\appendixletter} +\Configure{appendix} + {\AppOpenDiv{appendix}} {\AppCloseDiv{appendix}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{unnumbered} + {\OpenDiv{unnumbered}} {\CloseDiv{unnumbered}} + {\HCode{}} {\HCode{}\par\ShowPar} +\ConfigureMark{numberedsec}{\the\chapno.\the\secno} +\Configure{numberedsec} + {\OpenDiv{numberedsec}} {\CloseDiv{numberedsec}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\ConfigureMark{appendixsec}{\appendixletter.\the\secno} +\Configure{appendixsec} + {\OpenDiv{appendixsec}} {\CloseDiv{appendixsec}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{unnumberedsec} + {\OpenDiv{unnumberedsec}} {\CloseDiv{unnumberedsec}} + {\HCode{}} {\HCode{}\par\ShowPar} +\ConfigureMark{numberedsubsec}{\the\chapno.\the\secno .\the\subsecno} +\Configure{numberedsubsec} + {\OpenDiv{numberedsubsec}} {\CloseDiv{numberedsubsec}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\ConfigureMark{appendixsubsec}{\appendixletter .\the\secno.\the\subsecno} +\Configure{appendixsubsec} + {\OpenDiv{appendixsubsec}} {\CloseDiv{appendixsubsec}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\ConfigureMark{appendixsubsec}{\appendixletter.\the\secno + .\the\subsecno} +\Configure{appendixsubsec} + {\OpenDiv{appendixsubsec}} {\CloseDiv{appendixsubsec}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{unnumberedsubsec} + {\OpenDiv{unnumberedsubsec}} {\CloseDiv{unnumberedsubsec}} + {\HCode{}} {\HCode{}\par\ShowPar} +\ConfigureMark{numberedsubsubsec}{\the\chapno.\the\secno + .\the\subsecno.\the\subsubsecno} +\Configure{numberedsubsubsec} + {\OpenDiv{numberedsubsubsec}} {\CloseDiv{numberedsubsubsec}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\ConfigureMark{appendixsubsubsec}{\appendixletter + .\the\secno.\the\subsecno.\the\subsubsecno} +\Configure{appendixsubsubsec} + {\OpenDiv{appendixsubsubsec}} {\CloseDiv{appendixsubsubsec}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\ConfigureMark{appendixsubsubsec}{\appendixletter.\the\secno + .\the\subsecno.\the\subsubsecno} +\Configure{appendixsubsubsec} + {\OpenDiv{appendixsubsubsec}} {\CloseDiv{appendixsubsubsec}} + {\HCode{}|<TitleMark|>} {\HCode{}\par\ShowPar} +\Configure{unnumberedsubsubsec} + {\OpenDiv{unnumberedsubsubsec}} {\CloseDiv{unnumberedsubsubsec}} + {\HCode{}} {\HCode{}\par\ShowPar} +>>> + + + + + + + + +\<<< +\Configure{enumerate}% + {\ifvmode\IgnorePar\fi \EndP \HCode{}} + {\EndP\HCode{}\ShowPar} + {\ifnum \itemno>1 + \ifvmode\IgnorePar\fi \EndP \Tg\fi \DeleteMark} + {\ifvmode\IgnorePar\fi \EndP \HCode{}\par\ShowPar} +\Configure{itemize}% + {\ifvmode\IgnorePar\fi \EndP \HCode{}} + {\EndP\HCode{}\ShowPar} + {\ifnum \itemno>1 \ifvmode\IgnorePar\fi \EndP + \Tg\fi \DeleteMark} + {\ifvmode\IgnorePar\fi \EndP \HCode{}\par\ShowPar} +\Configure{table}% + {\EndP\HCode{}\let\end:itm=\empty} + {\EndP\HCode{}\ShowPar} + {\end:itm\def\end:itm{\EndP\HCode{}}% + \HCode{}\bgroup \bf} + {\egroup\HCode{}\par\ShowPar} +>>> + +\<<< +\Configure{titlepage} + {\ifvmode \IgnorePar \fi \EndP \HCode{}\bgroup + \Configure{flushleft} + {\ifvmode \IgnorePar \fi \EndP \HCode{}\bgroup + \Configure{obeylines}{}{}{\hbox{\HCode{}}}\ShowPar\par + \leavevmode } + {\ifvmode \IgnorePar \fi \EndP \egroup\HCode{}} + } + {\egroup\ifvmode \IgnorePar \fi \EndP \HCode{}} +\Configure{title} + {\ifvmode \IgnorePar \fi \EndP \HCode{}\bgroup + \Configure{leftline}{}{}} + {\egroup\ifvmode \IgnorePar \fi \EndP \HCode{}} +\Configure{subtitle} + {\IgnorePar\EndP\HCode{}\bgroup + \Configure{rightline}{}{}} + {\egroup \IgnorePar\EndP\HCode{}} +\Configure{author} + {\ifvmode \IgnorePar \fi \EndP \HCode{}\bgroup + \Configure{leftline}{}{}} + {\egroup \ifvmode \IgnorePar \fi \EndP \HCode{}} +>>> + + + + +\<<< +| +>>> + + + + +% \HCode{\string&\#x00A0;}} + + +\<<< +\Configure{contents} + {\b:titlepage \let\b:titlepage=\empty + \ifvmode \IgnorePar \fi \EndP \HCode{}} + {\ifvmode \IgnorePar \fi \EndP \HCode{}} +>>> + + + + +\<<< +\Configure{endchapter}{appendix} +\Configure{endappendix}{chapter} +\Configure{endnumberedsec} + {chapter,appendix,appendixsec,unnumberedsec,unnumbered} +\Configure{endappendixsec} + {chapter,appendix,umberedsec,unnumberedsec,unnumbered} +\Configure{endunnumberedsec} + {chapter,appendix,umberedsec,appendixsec,unnumbered} +\Configure{endunnumbered} + {chapter,appendix,umberedsec,appendixsec,unnumberedsec} +\Configure{endnumberedsubsec} + {chapter,appendix,umberedsec,appendixsec,unnumberedsec,% + unnumbered,appendixsubsec,appendixsubsec,unnumberedsubsec} +\Configure{endappendixsubsec} + {chapter,appendix,umberedsec,appendixsec,unnumberedsec,% + unnumbered,numberedsubsec,appendixsubsec,unnumberedsubsec} +\Configure{endappendixsubsec} + {chapter,appendix,umberedsec,appendixsec,unnumberedsec,% + unnumbered,numberedsubsec,appendixsubsec,unnumberedsubsec} +\Configure{endunnumberedsubsec} + {chapter,appendix,umberedsec,appendixsec,unnumberedsec,% + unnumbered,numberedsubsec,appendixsubsec,appendixsubsec} +\Configure{endnumberedsubsubsec}{chapter,appendix,umberedsec,% + appendixsec,unnumberedsec,unnumbered,numberedsubsec,% + appendixsubsec,appendixsubsec,unnumberedsubsec,appendixsubsubsec,% + appendixsubsubsec,unnumberedsubsubsec} +\Configure{endappendixsubsubsec} + {chapter,appendix,umberedsec,appendixsec,unnumberedsec,% + unnumbered,numberedsubsec,appendixsubsec,appendixsubsec,% + unnumberedsubsec,numberedsubsubsec,appendixsubsubsec,% + unnumberedsubsubsec} +\Configure{endappendixsubsubsec} + {chapter,appendix,umberedsec,appendixsec,unnumberedsec,% + unnumbered,numberedsubsec,appendixsubsec,appendixsubsec,% + unnumberedsubsec,numberedsubsubsec,appendixsubsubsec,% + unnumberedsubsubsec} +\Configure{endunnumberedsubsubsec} + {chapter,appendix,umberedsec,appendixsec,unnumberedsec,% + unnumbered,numberedsubsec,appendixsubsec,appendixsubsec,% + unnumberedsubsec,numberedsubsubsec,appendixsubsubsec,appendixsubsubsec} +>>> + + + + + + + + + +\<<< +\Configure{index} + {\IgnorePar\leavevmode\EndP\Tg
} + {\IgnorePar\EndP\Tg
} + {\leavevmode\Tg} + {\Tg\Tg
\IgnorePar} +>>> + + +%%%%%%%%%%%%%%%%% +\chapter{Packages} +%%%%%%%%%%%%%%%%% + + + + + + +%%%%%%%%%%%%%%%%%%% +\section{Verbatim} +%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{fancyvrb} +%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{fancyvrb} + {\ifvmode \IgnorePar \fi \EndP + \HCode{}} + {\EndP\HCode{}} + {\HCode{}} {\HCode{}} + {\HCode{}} {\HCode{}} +>>> + + +\<<< +\Configure{fancyvrbcolor} + {\Css{div\#fancyvrb\fancyvrbNo { color: \HColor; }}} + {\Css{div\#fancyvrb\fancyvrbNo { background-color: \HColor;}}} + {\Css{div\#fancyvrb\fancyvrbNo { border-color: \HColor;}}} +>>> + +\<<< +\Configure{fancyvrbframe} + {\Css{div\#fancyvrb\fancyvrbNo { border-top: solid \HSize; }}} + {\Css{div\#fancyvrb\fancyvrbNo { border-left: solid \HSize; }}} + {\Css{div\#fancyvrb\fancyvrbNo { border-bottom: solid \HSize; }}} + {\Css{div\#fancyvrb\fancyvrbNo { border-right: solid \HSize; }}} + {\Css{div\#fancyvrb\fancyvrbNo {border-width:\HSize;}}} + {\Css{div\#fancyvrb\fancyvrbNo {padding:\HSize;}}} +>>> + +\<<< +\Configure{BVerbatimInput} + {\ifvmode \IgnorePar \fi \EndP + \gHAssign\HRow=0 + \HCode{
}} + {\ifvmode \IgnorePar \fi \EndP \HCode{
}} + {\gHAdvance\HRow by 1 \ifnum \HRow>1 \HCode{
}\fi}{} +>>> + + + + +%%%%%%%%%%%%%%%%%%% +\section{Drawing Utilitis} +%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%% +\subsection{pgf} +%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%% +\subsection{pgf} +%%%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{pgfpicture} + {\hbox\bgroup\Picture+[ ]{}} + {\EndPicture\egroup} + {}{} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\section{beamer} +%%%%%%%%%%%%%%%%%%% + + + + +\<<< +|
+| +| +| +| +| +| +| +| +>>> + +\<<< +\Configure{HtmlPar} + {\EndP\HCode{}} + {\EndP\HCode{}} + {\HCode{}} {\HCode{}} +>>> + +\<<< +\Configure{titlepage} + {\ifvmode \IgnorePar\fi \EndP \HCode{}% + \bgroup |} + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{}} +\Configure{title} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} +\Configure{author} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} +\Configure{institute} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} +\Configure{date} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} +\Configure{inst} + {\HCode{}\bgroup \everymath{}\let\sp=\empty} + {\egroup\HCode{}} +\Configure{andtitle}{\HCode{}} +>>> + + + +\<<< +\Configure{tableofcontents} + {\ifvmode \IgnorePar\fi \EndP \HCode{}} + {\ifvmode \IgnorePar\fi \EndP\HCode{}} + {}{}{} +\ConfigureToc{toc} + {} {\HCode{\Hnewline}} + {} {\HCode{}} +\Configure{sectionshadedintoc} + {\HCode{}} + {\ifvmode \IgnorePar\fi \HCode{}} +\Configure{sectionintoc} + {\HCode{}} + {\ifvmode \IgnorePar\fi \HCode{}} +\Configure{subsectionshadedintoc} + {\HCode{}} + {\ifvmode \IgnorePar\fi \HCode{}} +\Configure{subsectionintoc} + {\HCode{}} + {\ifvmode \IgnorePar\fi \HCode{}} +>>> + + +\<<< +\ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}\par + } + {\ifvmode \IgnorePar\fi \EndP \HCode{
}} + {} {} +>>> + + + +\<<< +\let\no:section\section +\Def:Section\section{\thesection}{#1} +\let\no::section\section +\let\section\no:section +\let\no:section\@section +\def\@section[#1]#2{\no::section{#2}% + \ifvmode \IgnorePar\fi \EndP + \HCode{}#1% + \ifvmode \IgnorePar\fi \EndP \HCode{}% + \no:section[#1]{#2}} + +\let\no:subsection\subsection +\Def:Section\subsection{\thesubsection}{#1} +\let\no::subsection\subsection +\def\subsection#1{\no::subsection{#1}\no:subsection{#1}} + +\Configure{section} + {\IgnorePar\EndP \HCode{}} + {\IgnorePar\EndP\HCode{
}} + {\HCode{}\TitleMark} + {\HCode{}\par\ShowPar} +\Configure{subsection} + {\IgnorePar\EndP \HCode{}} + {\IgnorePar\EndP\HCode{}} + {\HCode{}\TitleMark} + {\HCode{}\par\ShowPar} +\Configure{endsubsection}{section} +>>> + + + + +\<<< +\let\block:Name=\empty +\ConfigureEnv{block} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{block}\fi + \HCode{
}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{
}} + {} {} +\ConfigureEnv{alertblock} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{alertblock}\fi + \HCode{
}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{
}} + {} {} +\ConfigureEnv{exampleblock} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{exampleblock}\fi + \HCode{
}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{
}} + {} {} +\Configure{blocktitle} + {\ifvmode \IgnorePar\fi \EndP \HCode{}\par\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP \HCode{}\par} +>>> + +\<<< +\ConfigureEnv{Problem} + {\def\block:Name{Problem}} {} {} {} +\ConfigureEnv{Loesung} + {\def\block:Name{Loesung}} {} {} {} +\ConfigureEnv{Definition} + {\def\block:Name{Definition}} {} {} {} +\ConfigureEnv{Satz} + {\def\block:Name{Satz}} {} {} {} +\ConfigureEnv{Beweis} + {\def\block:Name{Beweis}} {} {} {} +\ConfigureEnv{Folgerung} + {\def\block:Name{Folgerung}} {} {} {} +\ConfigureEnv{Lemma} + {\def\block:Name{Lemma}} {} {} {} +\ConfigureEnv{Fakt} + {\def\block:Name{Fakt}} {} {} {} +\ConfigureEnv{Theorem} + {\def\block:Name{Theorem}} {} {} {} +\ConfigureEnv{Proof} + {\def\block:Name{Proof}} {} {} {} +\ConfigureEnv{Corollary} + {\def\block:Name{Corollary}} {} {} {} +\ConfigureEnv{Fact} + {\def\block:Name{Fact}} {} {} {} +\ConfigureEnv{definition} + {\def\block:Name{definition}} {} {} {} +\ConfigureEnv{definitions} + {\def\block:Name{definitions}} {} {} {} +\ConfigureEnv{theorem} + {\def\block:Name{theorem}} {} {} {} +\ConfigureEnv{proof} + {\def\block:Name{proof}} {} {} {} +\ConfigureEnv{corollary} + {\def\block:Name{corollary}} {} {} {} +\ConfigureEnv{fact} + {\def\block:Name{fact}} {} {} {} +\ConfigureEnv{Beispiel} + {\def\block:Name{Beispiel}} {} {} {} +\ConfigureEnv{Beispiele} + {\def\block:Name{Beispiele}} {} {} {} +\ConfigureEnv{Example} + {\def\block:Name{Example}} {} {} {} +\ConfigureEnv{Examples} + {\def\block:Name{Examples}} {} {} {} +\ConfigureEnv{example} + {\def\block:Name{example}} {} {} {} +\ConfigureEnv{examples} + {\def\block:Name{examples}} {} {} {} +>>> + + + +\<<< +\Configure{frametitle} + {\ifvmode \IgnorePar\fi \EndP + \HCode{}\bgroup + \Configure{HtmlPar}{ }{ }{}{}% + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{}} +>>> + + +\<<< +\ConfigureEnv{columns} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}} + {\ifvmode \IgnorePar\fi \EndP \HCode{
}\par} + {}{} +\ConfigureEnv{column} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}} + {\ifvmode \IgnorePar\fi \EndP \HCode{
}} + {}{} +>>> + + +\<<< +\Configure{alert} + {\HCode{}\bgroup + \Configure{HtmlPar}{\HCode{}}{\HCode{}}{}{}% + } + {\egroup\HCode{}} +>>> + + + + + +\<<< +\ConfigureList{thebibliography}% + {\IgnorePar\EndP + \HCode{}\let\en:bib=\empty} + {\en:bib\HCode{}} + {\en:bib\def\en:bib{\HCode{}}% + \HCode{}% + |} + {\HCode{}} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\section{prosper} +%%%%%%%%%%%%%%%%%%% + + + +\<<< +\ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}\par} + {\HCode{
}} + {}{} +\Configure{slidetitle} + {\HCode{}} + {\HCode{}} +>>> + + +%%%%%%%%%%%%%%%%%%% +\section{algorithmic} +%%%%%%%%%%%%%%%%%%% + + + +\<<< +\ConfigureEnv{algorithmic} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
}% + \bgroup + \Configure{HtmlPar}{}{}{}{}} + {\egroup \ifvmode \IgnorePar\fi + \HCode{
}\par\ShowPar} + {}{} +\Configure{ALCitem} + {\HCode{\ifnum \c@ALC@line>1 \fi + }} + {\HCode{}} +\Configure{algorithmiccomment} + {\HCode{
}} + {\HCode{
}} + {}{} +>>> + +%%%%%%%%%%%%%%%%%%% +\section{llncs} +%%%%%%%%%%%%%%%%%%% + + + +\<<< +\Configure{email} + {\HCode{}} + {\HCode{}} +\Configure{institute} + {\HCode{}} + {\HCode{}} +>>> + +\<<< +\ConfigureEnv{abstract} + {\ifvmode \IgnorePar\fi \EndP} + {\ifvmode \IgnorePar\fi \EndP} + {}{} +\ConfigureList{abstract} + {\ifvmode \IgnorePar\fi \EndP + \HCode{}\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{}\ShowPar} + {\IgnorePar\par\HCode{}} + {\HCode{}\ShowPar\par} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{array} +%%%%%%%%%%%%%%%%%% + + + +\<<< +| +| +>>> + + +\<<< +| +>>> + + + + + +%%%%%%%%%%%%% +\subsection{subeqnarray} +%%%%%%%%%%%%% + + +\<<< +\ConfigureEnv{subeqnarray} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}} + {\ifvmode \IgnorePar\fi \EndP \HCode{
}} + {}{} +>>> + +\begin{thebibliography}{9} +\bibitem{home} +\url{http://www.docbook.org/} +\bibitem{specs} +Norman Walsh +(With contributions from Leonard Muellner), +DocBook 5.0: The Definitive Guide, +3 March 2008, +O'Reilly, +\url{http://www.docbook.org/tdg5/en/html/} +(\Link[http://www.docbook.org/tdg5/en/html/pt02.html]{}{}element references\EndLink, \Link[http://docbook.org/schemas/5x]{}{}relax ng\EndLink + +\bibitem{wiki} +\url{http://en.wikipedia.org/wiki/DocBook} +\end{thebibliography} + + +%%%%%%%%%%%%%%%%%% +\section{Bitmaps} +%%%%%%%%%%%%%%%%%% + + + +\<<< +\Configure{graphics*} + {gif} + {{\Configure{Needs}{File: \Gin@base.gif}\Needs{}}% + \Picture[\a:GraphicsAlt]{\Gin@base.gif |}} +\Configure{graphics*} + {png} + {{\Configure{Needs}{File: \Gin@base.png}\Needs{}}% + \Picture[\a:GraphicsAlt]{\Gin@base.png |}} +\Configure{graphics*} + {jpg} + {{\Configure{Needs}{File: \Gin@base.jpg}\Needs{}}% + \Picture[\a:GraphicsAlt]{\Gin@base.jpg |}} +\Configure{graphics*} + {jpeg} + {{\Configure{Needs}{File: \Gin@base.jpeg}\Needs{}}% + \Picture[\a:GraphicsAlt]{\Gin@base.jpeg |}} +>>> + +\<<< +\csname a:Gin-dim\endcsname +>>> + +\<<< +\NewConfigure{Gin-dim}{1} +>>> + +\<<< +\:CheckOption{jpg} \if:Option + \Configure{Picture}{.jpg} +\else + \Log:Note{for jpg bitmaps of pictures, use the `jpg' + command line option. |} +\fi +\:CheckOption{gif} \if:Option + \Configure{Picture}{.gif} +\else + \Log:Note{for gif bitmaps of pictures, use the `gif' + command line option. |} +\fi +>>> + +\<<< +(Character bitmaps are controled only by `g' records of tex4ht.env and `-g' +switches of tex4ht.c) +>>> + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-env.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-env.tex new file mode 100644 index 00000000000..9b175890b32 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-env.tex @@ -0,0 +1,1729 @@ +% $Id: tex4ht-env.tex 418 2018-07-03 17:37:07Z karl $ +% latex tex4ht-env +% or htlatex tex4ht-env "xhtml,3" +% +% Copyright 2009-2018 TeX Users Group +% Copyright 1997-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\documentclass{article} + +\usepackage{url} +\input tex4ht-dir.tex + +\ifx \HCode\Undef + \usepackage[xhtml,2,sections+]{tex4ht} + \input ProTex.sty + \AlProTex{env,<<<>>>,@,title,list} +\else + \Configure{ProTex}{env,<<<>>>,@,title,list} +\fi + +\input{common} + +\begin{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Outline of Scripts} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Note: The `-c...' calls are executed in the order of the prsence of +the scripts within tex4ht.env. Hence, place the xtpipe translations +before validations. + + +\<<< +@% +@% +@% +@% +@% +@% +@% +@% +@% +@ +@ +@ +@ +@ +@ @%before validate@% +@% +@ % +@% +% end of file +>>> + + +\<<< +@% +@% +@% +@% +@% +@% +@% +@% +@% +@ +@ +@ +@ +@ +@ @%before validate@% +@% +@ % +@% +% end of file +>>> + + + +\<<< +@% +@% +@% +@% +@% +@% +@% +@% +@% +@% +@ +@ +@ +@ +@ +@ @%before validate@% +@ +@ % +@% +% end of file +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Opening Comments} +%%%%%%%%%%%%%%%%%%% + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Notes: % +% 1. Empty lines might be harmful % +% 2. Tagged script segments ... are scanned only if % +% their names are specified within -ctag switches of tex4ht.c % +% and t4ht.c. When -c switches are not supplied, a -cdefault % +% is implicitly assumed. % +% The tags and , but not their bodies, are % +% ignored if they are not located at the start of their lines. % +% 3. Place this file in your work directory and/or root directory % +% and/or in directory `xxx' of your choice. In the latest case, % +% compile tex4ht.c and t4ht.c with `#define ENVFILE xxx', or % +% provide the address of the file to tex4ht and t4ht throught % +% the -e switch % +% 4. Under kpathsea, the substring `%%~' may be employed in % +% commands to obtain the value of ${TEXMFDIST}. % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +>>> + + +\<<< +% See comments in the Unix tex4ht.env for how this file gets found, +% except on Windows, we also look in the directory of tex4ht.exe/t4ht.exe. +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Fonts} +%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%% +\subsection{TFM Files} +%%%%%%%%%%%%%%%%%%% + + + +\<<< +tpath/tex/texmf/fonts/tfm/! +>>> + + +\<<< +tc:\path\tfm! +>>> + +\<<< +t/usr/local/teTeX/share/texmf/fonts/tfm/! +t/var/tmp/texfonts/tfm/! + t/usr/local/teTeX/texmf/fonts/vf/! +>>> + +The \verb't/var/tmp/texfonts/tfm/!' are for fonts created on the fly +during the compilation by tex. + + + +%%%%%%%%%%%%%%%%%% +\subsection{HTF Files} +%%%%%%%%%%%%%%%%%%% + +The structure of htf fonts is the same on Windows and Unix, so it +doesn't make sense to keep two versions. + + + +\<<< +@ +@ +@ +@ +@ +@ +@ +@ +@ +@ +@ +@ +@ +>>> + + + +\<<< + +i%%~/tex4ht/ht-fonts/iso8859/1/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! +i%%~/tex4ht/ht-fonts/mozilla/! +i%%~/tex4ht/ht-fonts/unicode/! + +>>> + + +\<<< + +i%%~/tex4ht/ht-fonts/mozilla/! +i%%~/tex4ht/ht-fonts/unicode/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! + +>>> + + + +\<<< + +i%%~/tex4ht/ht-fonts/unicode/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! + +>>> + + + +\<<< + +i%%~/tex4ht/ht-fonts/html-speech/! +i%%~/tex4ht/ht-fonts/unicode/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! +i%%~/tex4ht/ht-fonts/css/emacspeak/! + +>>> + + +\<<< + +i%%~/tex4ht/ht-fonts/jsml/! +i%%~/tex4ht/ht-fonts/unicode/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! + +>>> + + +\<<< + +i%%~/tex4ht/ht-fonts/iso8859/2/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! +i%%~/tex4ht/ht-fonts/unicode/! + +>>> + + +\<<< + +i%%~/tex4ht/ht-fonts/iso8859/5/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! +i%%~/tex4ht/ht-fonts/unicode/! + +>>> + + + +\<<< + +i%%~/tex4ht/ht-fonts/iso8859/7/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! +i%%~/tex4ht/ht-fonts/unicode/! + +>>> + + + +\<<< + +i%%~/tex4ht/ht-fonts/iso8859/8/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! +i%%~/tex4ht/ht-fonts/unicode/! + +>>> + + +\<<< + +i%%~/tex4ht/ht-fonts/iso8859/15/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! +i%%~/tex4ht/ht-fonts/unicode/! + +>>> + + + +\<<< + +i%%~/tex4ht/ht-fonts/koi/8r/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! +i%%~/tex4ht/ht-fonts/unicode/! + +>>> + + +\<<< % + +i%%~/tex4ht/ht-fonts/symbol/! +i%%~/tex4ht/ht-fonts/unicode/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! + +>>> + + + +\<<< % + +i%%~/tex4ht/ht-fonts/win/1251/! +i%%~/tex4ht/ht-fonts/unicode/! +i%%~/tex4ht/ht-fonts/ascii/! +i%%~/tex4ht/ht-fonts/alias/! + +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\subsection{Bookkeeping tex4ht.fls} +%%%%%%%%%%%%%%%%%%% + +Currently broken and Disabled. + + +\<<< +% * Address for an automatically created bookkeeping file % +% * The work directory is assumed for a default % +l~/tex4ht.dir/tex4ht.fls +>>> + + + + +\<<< +% * Address for an automatically created bookkeeping file % +% * Ignored under kpathsea % +% * The work directory is assumed for a default % + l~/tex4ht.dir/tex4ht.fls +>>> + + + +\<<< +% * Address for an automatically created bookkeeping file % +% * Ignored under kpathsea % +% * The work directory is assumed for a default % +lc:\tex4ht\tex4ht.fls +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{Notes} +%%%%%%%%%%%%%%%%%%% + +\<<< +% * Replace `path', and possibly what follows, with appropriate % +% content % +% * A path may start with: % +% ~ for environment variable HOME % +% ~~ for environment variable TEX4HTTFM % +% %%~ for ${TEXMFDIST} of KPATHSEA % +% * A ! requests recursive search into subdirectories % +% * Multiple t and i entries are allowed % +% * When supported by kpathsea % +% + t entries are ignored % +% + the path before /ht-fonts/ is ignored in i records that don't % +% represent real addresses % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Bitmap Conversion Scripts} +%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%% +\subsection{Unix} +%%%%%%%%%%%%% + + + + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% dvi-to-xxx % +% choose one G-script % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% dvips options % +% magnification: -x mag (e.g., -x 1200) % +% page size: -T x,y (e.g., -T 14in,14in) % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +@ + + +@ +@ +G. +@ +@ + +@ +@ % +>>> + + +%%%%%%%%%%%%% +\subsection{Windows} +%%%%%%%%%%%%% + + + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% dvi-to-xxx % +% choose one G-script % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% dvips options % +% magnification: -x mag (e.g., -x 1200) % +% page size: -T x,y (e.g., -T 14in,14in) % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +@ + +@ + +@ + +@ +@ +G. +@ + +@ +@ % +>>> + + +%%%%%%%%%%%%% +\subsection{Private (on SUN)} +%%%%%%%%%%%%% + + + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Select one of the G scripts % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% dvips options % +% magnification: -x mag (e.g., -x 1200) % +% page size: -T x,y (e.g., -T 14in,14in) % +% gs fonts: -Pfont (e.g., -Pcmz -Pamz) % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +@ +@ +G. +@ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +@ + +@ + +@ + +@ % +>>> + + + +%%%%%%%%%%%%% +\subsection{Script: dvips + gs} +% duplicated below, as well as twice here. must fixx! +% we don't want to use convert for the sake of simplifying mactex. +%%%%%%%%%%%%% + +\<<< +Gdvips -E -q -Ppdf -f %%1 -pp %%2 > zz%%4.ps +Ggs -sDEVICE=pngalpha -sOutputFile=%%3 -r110x110 -dEPSCrop -dBackgroundColor=16#ffffff -dTextAlphaBits=2 -dGraphicsAlphaBits=2 -q -dbatch -dNOPAUSE zz%%4.ps -c quit +Grm zz%%4.ps >>> + +\<<< +%echo "dbg: got to dvips to png via gs (unix dvips convert)" +Gdvips -E -q -Ppdf -f %%1 -pp %%2 > zz%%4.ps +Ggs -sDEVICE=pngalpha -sOutputFile=%%3 -r110x110 -dEPSCrop -dBackgroundColor=16#ffffff -dTextAlphaBits=2 -dGraphicsAlphaBits=2 -q -dbatch -dNOPAUSE zz%%4.ps -c quit +Grm zz%%4.ps >>> + + +\<<< +Gif exist zz%%4.ps DEL zz%%4.ps >nul +Gif exist %%3 DEL %%3 >nul +Gdvips -E -Ppdf -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +Gconvert -trim +repage -density 110x110 -transparent "#FFFFFF" zz%%4.ps %%3 +Gif exist zz%%4.ps DEL zz%%4.ps >nul >>> + + + +\<<< +%--------- alternative instructions for old versions of convert +% Gconvert -trim -density 110x110 -transparent "#FFFFFF" zz%%4.ps %%3 +% Gconvert -crop 0x0 +repage -density 110x110 -transparent "#FFFFFF" zz%%4.ps %%3 +% Gconvert -crop 0x0 +page -density 110x110 -transparent "#FFFFFF" zz%%4.ps %%3 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >>> + +The `-E' option is required for dvips to produce a tight bounding box. + + +%%%%%%%%%%%%% +\subsection{Script: dvips + gs + convert} +%%%%%%%%%%%%% + +\<<< + +Gdvips -Ppdf -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +Ggs -sDEVICE=ppm -sOutputFile=zz%%4.ppm -r110x110 -dTextAlphaBits=2 -dGraphicsAlphaBits=2 -q -dbatch -dNOPAUSE zz%%4.ps -c quit +Gconvert zz%%4.ppm -trim +repage -density 110x110 -transparent '#FFFFFF' %%3 +Grm zz%%4.ps +Grm zz%%4.ppm + >>> + + +The intermediate ppm step is to overcome cropping and other problems +in convert. + + + +\<<< +Gdvips -Ppdf -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +Ggs -sDEVICE=ppm -sOutputFile=zz%%4.ppm -r110x110 -dTextAlphaBits=2 -dGraphicsAlphaBits=2 -q -dbatch -dNOPAUSE zz%%4.ps -c quit +Gconvert zz%%4.ppm -crop 0x0 +page -density 110x110 -transparent '#FFFFFF' %%3 +Grm zz%%4.ps +Grm zz%%4.ppm >>> + +\<<< + +Gif exist zz%%4.ps DEL zz%%4.ps >nul +Gif exist zz%%4.ppm DEL zz%%4.ppm >nul +Gif exist %%3 DEL %%3 >nul +Gdvips -Ppdf -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +Ggswin32c -dNOPAUSE -sDEVICE=ppmraw -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r110x110 -sOutputFile=zz%%4.ppm -q zz%%4.ps -c quit +Gconvert zz%%4.ppm -trim +repage -density 110x110 -transparent #FFFFFF %%3 +Gif exist zz%%4.ps DEL zz%%4.ps >nul +Gif exist zz%%4.ppm DEL zz%%4.ppm >nul + >>> + +The command line options \verb'-Pcmz -Pamz' of dvips requests type 1 +postscript format for the standard Computer Modern fonts of \TeX. + + +TextAlphaBits, GraphicsAlphaBits: The number of bits of anti-aliasing +information for text or graphics respectively. Legal values are 1 (no +anti-aliasing, the default for most devices), 2, or 4. + +-x: magnification * 1000. A variant of \verb'\magnification'. Should use +values for which the printers can support the font sizes. Typically, +\verb'1.2{\tt\string^}i * 1000'. + +%%%%%%%%%%%%% +\subsection{PNG Script: dvi + gs} +%%%%%%%%%%%%% + + + +\<<< + G.png + Gdvips -E -q -Ppdf -f %%1 -pp %%2 > zz%%4.ps + Ggs -sDEVICE=pngalpha -sOutputFile=%%3 -r110x110 -dEPSCrop -dBackgroundColor=16#ffffff -dTextAlphaBits=2 -dGraphicsAlphaBits=2 -q -dbatch -dNOPAUSE zz%%4.ps -c quit + Grm zz%%4.ps >>> + +A piping of the conversion as in + +\begin{verbatim} +dvips -E -q -Ppdf -f %%1 -pp %%2 | Ggs -sDEVICE=pngalpha -sOutputFile=- ... +\end{verbatim} + +provides faster compilations, but error messages might get lost if +they happen to be directed to the standard output stream. + + +\<<< + G.png + Gif exist zz%%4.ps DEL zz%%4.ps >nul + Gif exist %%3 DEL %%3 >nul + Gdvips -E -q -Ppdf -f %%1 -pp %%2 > zz%%4.ps + Ggswin32c -sDEVICE=pngalpha -sOutputFile=%%3 -r110x110 -dEPSCrop -dBackgroundColor=16#ffffff -dTextAlphaBits=2 -dGraphicsAlphaBits=2 -q -dbatch -dNOPAUSE zz%%4.ps -c quit + Gif exist zz%%4.ps DEL zz%%4.ps >nul >>> + + + + +ImageMagic comes with an `identify' utility for inspecting image +files. For instance, try `identify -verbatim foo.png'. For additional +information, try `identify' or `man identify'. + + +%%%%%%%%%%%%% +\subsection{Script: netpbm} +%%%%%%%%%%%%% + + + +\<<< +Gdvips -Ppdf -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +Ggs -sDEVICE=ppm -r110 -sOutputFile=zz%%4.ppm -q -dbatch -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dNOPAUSE zz%%4.ps -c quit +Gmv zz%%4.ppm temp.ppm +Gpnmcrop temp.ppm > zz%%4.ppm +Gpnmtopng -interlace -transparent 1,1,1 zz%%4.ppm > %%3 + Gppmtopng -interlace -transparent 1,1,1 zz%%4.ppm > %%3 +Grm zz%%4.ps +Grm zz%%4.ppm +Grm temp.ppm +% Gppmtogif -interlace -transparent 1,1,1 zz%%4.ppm > %%3 >>> + + +\<<< +Gif exist zz%%4.ps DEL zz%%4.ps +Gif exist zz%%4.ppm DEL zz%%4.ppm +Gif exist temp.ppm DEL temp.ppm +Gdvips -Ppdf -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +Ggswin32c -sDEVICE=ppm -r110 -sOutputFile=zz%%4.ppm -q -dbatch -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dNOPAUSE zz%%4.ps -c quit +Gmove /y zz%%4.ppm temp.ppm +Gpnmcrop temp.ppm > zz%%4.ppm +Gif exist %%3 DEL %%3 +Gppmtopng -interlace -transparent 1,1,1 zz%%4.ppm > %%3 +Gif exist zz%%4.ps DEL zz%%4.ps +Gif exist zz%%4.ppm DEL zz%%4.ppm +Gif exist temp.ppm DEL temp.ppm +% Gppmtogif -interlace -transparent 1,1,1 zz%%4.ppm > %%3 >>> + +%%%%%%%%%%%%% +\subsection{Script: dvipng} +%%%%%%%%%%%%% + + \<<< + +G.png +%echo "dbg: got to dvi to png via (dvipng)" +Gdvipng -T tight -D 144 -bg Transparent -pp %%2:%%2 %%1 -o %%3 +G.gif +Gdvipng -T tight -D 144 -bg Transparent -gif -pp %%2:%%2 %%1 -o %%3 +@ +G. +Gdvipng -T tight -D 144 -bg Transparent -pp %%2:%%2 %%1 -o %%3 +% avoiding convert for mactex. +% Gdvips -Ppdf -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +% Gconvert -crop 0x0 -density 110x110 -transparent '#FFFFFF' zz%%4.ps %%3 +%Grm zz%%4.ps + +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{SVG Bitmap Conversion Scripts} +%%%%%%%%%%%%%%%%%%% + +\<<< +G.svg +Gdvisvgm -n -p %%2 --exact -c 1.4,1.4 -s %%1 > %%3 >>> + + +\<<< +G.svg +Gdvisvgm -n -p %%2 --exact -c 1.4,1.4 -s %%1 > %%3 >>> + +dvisvgm is included with all \TeX\ distributions nowadays and the +conversion is quite fast and efficient. + + +%%%%%%%%%%%%% +\subsection{Request Scripts} +%%%%%%%%%%%%% + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Default scripts, shifted rightward 1 pos +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + s--- needs --- %%1.idv[%%2] ==> %%3 --- + b--- characters --- + g.png +% empty bitmaps % + Ecopy empty.png %%1%%2 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +>>> + + +%%%%%%%%%%%%% +\subsection{Alternative Scripts} +%%%%%%%%%%%%% + + + + + + +\begin{itemize} +\item +\begin{verbatim} + Gdvips -T 14in,14in -Ppdf -mode epstypro -D 360 -f %%1 -pp %%2 > zz%%4.ps +\end{verbatim} + +\item +\begin{verbatim} +Gtest ! -f %%3 +Gdvips -pp %%2 -R -E %%1 -o - | convert -transparent '#FFFFFF' -quality 100 +-density 110 ps:- %%3 +\end{verbatim} + +\item +{A +Netpbm-based script +(\Link[ftp://ftp.x.org/R5contrib/netpbm-1mar1994.tar.gz]{}{}src\EndLink{})} + +\begin{verbatim} + Ggs -sDEVICE=ppm -sOutputFile=zz%%4.ppm -q -dbatch -dNOPAUSE zz%%4.ps -c quit + Gmv zz%%4.ppm yz%%4.ppm + Gpnmcrop yz%%4.ppm > zz%%4.ppm + Gppmtopng -interlace -transparent 1,1,1 zz%%4.ppm > %%3 +\end{verbatim} + +\item +{A +PDF-based script +(\Link[http://www.cs.wisc.edu/\string + ~ghost/doc/AFPL/6.50/Ps2pdf.htm]{}{}ps2pdf\EndLink{})} +\begin{verbatim} +Gdvips -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +Gps2pdf zz%%4.ps zz%%4.pdf +Gconvert zz%%4.pdf -trim -density 110x110 -transparent '#FFFFFF' %%3 +\end{verbatim} + + +\item + +\<<< + +Gif exist zz%%4.ps DEL zz%%4.ps >nul +Gif exist %%3 DEL %%3 >nul +Gdvips -E -q -Ppdf -D 110 -mode ibmvga -f %%1 -pp %%2 -o zz%%4.ps +Ggswin32c -dbatch -dNOPAUSE -sDEVICE=pngalpha -dEPSCrop ``-dBackgroundColor=16#ffffff'' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r110x110 -sOutputFile=%%3 -q zz%%4.ps -c quit +Gif exist zz%%4.ps DEL zz%%4.ps >nul + +>>> + + +\end{itemize} + + + +\begin{itemize} + + + +\item{A variant of the given script} +\begin{verbatim} +GDEL zz%%4.ps +Gdvips -T 14in,14in -Ppdf -mode epstypro -D 360 -f %%1 -pp %%2 > zz%%4.ps +GDEL %%3 +Gc:/imagemagic/convert zz%%4.ps -trim -density 110x110 -transparent #FFFFFF %%3 +\end{verbatim} +\item{A +Netpbm-based script +(\Link[ftp://ftp.x.org/R5contrib/netpbm-1mar1994.tar.gz]{}{}src\EndLink{} / +binaries for Win 95/98/NT: +\Link[http://sourceforge.net/projects/netpbm/]{}{}Netpbm project\EndLink, +\Link[ftp://miktex.sourceforge.net/pub/miktex/util/]{}{}MiK\TeX\EndLink +)} + +\begin{verbatim} + Gif exist zz%%4.ps DEL zz%%4.ps + Gif exist zz%%4.ppm DEL zz%%4.ppm + Gdvips -T 14in,14in -Ppdf -f %%1 -pp %%2 -o zz%%4.ps + Ggswin32c -sDEVICE=ppm -sOutputFile=zz%%4.ppm -q -dbatch -dNOPAUSE zz%%4.ps -c quit + Gmove zz%%4.ppm yz%%4.ppm + Gpnmcrop yz%%4.ppm > zz%%4.ppm + Gif exist %%3 DEL %%3 + Gppmtopng -interlace -transparent 1,1,1 zz%%4.ppm > %%3 +\end{verbatim} + +or similarly + +% on dvips: -D 600 +% on gs : -r600x600 + +\begin{verbatim} + Gif exist zz%%4.ps DEL zz%%4.eps + Gif exist zz%%4.ppm DEL zz%%4.ppm + Gdvips -E -f %%1 -pp %%2 -o zz%%4.eps + Ggswin32c -dEPSCrop -dBATCH -dNOPAUSE -sDEVICE=pbm -q -sOutputFile=zz%%4.ppm zz%%4.eps -c quit + Gmove zz%%4.ppm yz%%4.ppm + Gpnmcrop yz%%4.ppm > zz%%4.ppm + Gppmtopng -interlace -transparent 1,1,1 zz%%4.ppm > %%3 +\end{verbatim} + +\item {IrfanView} +\Link[http://www.irfanview.com]{}{}IrfanView\EndLink{} +offers a possible alternative for the +\`'convert' utility of ImageMagick. + +\item{PDF-based script} +\Link{}{pdf-based}\EndLink {A +(\Link[http://www.cs.wisc.edu/\string + ~ghost/doc/AFPL/6.50/Ps2pdf.htm]{}{}ps2pdf\EndLink{})} +\begin{verbatim} +Gdvips -mode ibmvga -D 110 -f %%1 -pp %%2 > zz%%4.ps +Gps2pdf zz%%4.ps zz%%4.pdf +Gconvert zz%%4.pdf -trim -density 110x110 -transparent '#FFFFFF' %%3 +\end{verbatim} + + +\end{itemize} + + + +%%%%%%%%%%%%%%%%%%%% +\section{Open Office} +%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{Unix} +%%%%%%%%%%%%%%%%%%%% + + +A `.foo command' record in the script asks to execute the given +command for each entry 'File: abc.foo' in the .lg file. A \verb=%%0= +stands for the job name, a \verb=%%1= stands for the file name +(e.g., 'abc') without the extension. A \verb=%%~= stands for the +value of \verb=${TEXMFDIST}= under KPATHSEA, and `\verb=~=' (home dir) +when such a value is unavailable. + + +\<<< + +%%% openoffice % +.4oo mkdir sxw-%%0.dir +.4os mkdir sxw-%%0.dir/Pictures +.4os mv %%1.4os sxw-%%0.dir/settings.xml +.4oo mv %%0.4oo sxw-%%0.dir/content.xml +% % +.4om mkdir sxw-%%0.dir/%%1 +.4om mv %%1.4om sxw-%%0.dir/%%1/content.xml +.4om cp sxw-%%0.dir/settings.xml sxw-%%0.dir/%%1/settings.xml +% % +.4of mkdir sxw-%%0.dir/META-INF +.4of mv %%1.4of sxw-%%0.dir/META-INF/manifest.xml +% % +.4ot mv %%1.4ot sxw-%%0.dir/meta.xml +.4oy mv %%1.4oy sxw-%%0.dir/styles.xml +% .4og cp --parents %%1 Pictures +% .4og mkdir -p sxw-%%0.dir/Pictures/%%1 +% .4og rmdir sxw-%%0.dir/Pictures/%%1 +.4og cp %%1 sxw-%%0.dir/Pictures/ +%-- sxw -- % +.4ox cd sxw-%%0.dir; zip -r %%0.sxw * ; cd .. +% % +.4ox mv sxw-%%0.dir/%%0.sxw . +% % +.4ox rm %%1.4ox +.4ox rm -r -f sxw-%%0.dir +%-- odt -- % +.4od cd sxw-%%0.dir; zip -r %%0.odt * ; cd .. +% % +.4od mv sxw-%%0.dir/%%0.odt . +% % +.4od rm %%1.4od +.4od rm -r -f sxw-%%0.dir +%%% end openoffice % + +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Win32} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<<< + +%%% openoffice % +.4oo if exist sxw-%%0.dir rmdir /Q /S sxw-%%0.dir +.4oo mkdir sxw-%%0.dir +.4os mkdir sxw-%%0.dir\Pictures +.4os move %%1.4os sxw-%%0.dir\settings.xml +.4oo move %%0.4oo sxw-%%0.dir\content.xml +% +.4om mkdir sxw-%%0.dir\%%1 +.4om move %%1.4om sxw-%%0.dir\%%1\content.xml +.4om copy sxw-%%0.dir\settings.xml sxw-%%0.dir\%%1\settings.xml +% +.4of mkdir sxw-%%0.dir\META-INF +.4of move %%1.4of sxw-%%0.dir\META-INF\manifest.xml +% +.4ot move %%1.4ot sxw-%%0.dir\meta.xml +.4oy move %%1.4oy sxw-%%0.dir\styles.xml +.4og copy %%1 sxw-%%0.dir\Pictures\ +.4od cd sxw-%%0.dir & zip -r -m %%0.zip * & cd .. +% .4od cd sxw-%%0.dir & 7za a -y %%0.zip * & cd .. +.4od move sxw-%%0.dir\%%0.zip %%0.odt +% +.4od del %%1.4od +.4od if exist sxw-%%0.dir rmdir /Q /S sxw-%%0.dir +%%% end openoffice + +>>> + +7za: \url{http://sourceforge.net/projects/sevenzip/} + +Windows uses ampersand character '\verb=&=' as command separator. +There are also conditional separators '\verb=&&=' (execute if previous +command successful) and '\verb=||=' (execute if previous command +failed). It was added in NT so it's not portable to win95(98). + + + +\<<< +%%% openoffice % +.4oo mkdir sxw-%%0.dir +.4os mkdir sxw-%%0.dir\Pictures +.4os move %%1.4os sxw-%%0.dir\settings.xml +.4oo move %%0.4oo sxw-%%0.dir\content.xml +% +.4om mkdir sxw-%%0.dir\%%1 +.4om move %%1.4om sxw-%%0.dir\%%1\content.xml +.4om copy sxw-%%0.dir\settings.xml sxw-%%0.dir\%%1\settings.xml +% +.4of mkdir sxw-%%0.dir\META-INF +.4of move %%1.4of sxw-%%0.dir\META-INF\manifest.xml +% +.4ot move %%1.4ot sxw-%%0.dir\meta.xml +.4oy move %%1.4oy sxw-%%0.dir\styles.xml +.4og copy %%1 sxw-%%0.dir\Pictures\%%1 +%-- sxw -- +.4ox cd sxw-%%0.dir\ +.4ox cd sxw-%%0.dir\META-INF +.4ox zip sxw-%%0.dir\%%0.sxw sxw-%%0.dir\META-INF\*.* +.4ox cd .. +.4ox cd sxw-%%0.dir\Pictures +.4ox zip sxw-%%0.dir\%%0.sxw sxw-%%0.dir\Pictures +.4ox cd .. +.4ox zip -j sxw-%%0.dir\%%0.sxw sxw-%%0.dir\* +.4ox cd .. +% +.4ox move sxw-%%0.dir\%%0.sxw . +% +.4ox del %%1.4ox +.4ox echo y | del sxw-%%0.dir\Pictures\*.* +.4ox rd sxw-%%0.dir\Pictures +.4ox echo y | del sxw-%%0.dir\META-INF\*.* +.4ox rd sxw-%%0.dir\META-INF +.4ox echo y | del sxw-%%0.dir\*.* +.4ox rd /S sxw-%%0.dir +%-- odt -- +.4od cd sxw-%%0.dir\ +.4od cd sxw-%%0.dir\META-INF +.4od zip sxw-%%0.dir\%%0.odt sxw-%%0.dir\META-INF\*.* +.4od cd .. +.4od cd sxw-%%0.dir\Pictures +.4od zip sxw-%%0.dir\%%0.odt sxw-%%0.dir\Pictures +.4od cd .. +.4od zip -j sxw-%%0.dir\%%0.odt sxw-%%0.dir\* +.4od cd .. +% +.4od move sxw-%%0.dir\%%0.odt . +% +.4od del %%1.4od +.4od echo y | del sxw-%%0.dir\Pictures\*.* +.4od rd sxw-%%0.dir\Pictures +.4od echo y | del sxw-%%0.dir\META-INF\*.* +.4od rd sxw-%%0.dir\META-INF +.4od echo y | del sxw-%%0.dir\*.* +.4od rd sxw-%%0.dir +% (1) if 'echo y | del ...' does not work try 'del /Q ...' instead +% (2) if rd fails to do the job, try replacing 'rd' with 'rd /s /q' +%%% end openoffice % + +>>> + + +t.m.trzeciak (Tolmek): + +\begin{verbatim} +'rd' won't remove non-empty directory. It should be: +rd /s /q sxw-test-tex4ht.dir +\end{verbatim} + + + +Contributed by Hans-Peter Kohler: + +\<<< +% +% Activate the following non-concurent sub script, if the previous +% one does not work. That is, interchange with +% and with . +% + +%%% openoffice % +.4os mkdir Pictures +.4os move %%1.4os settings.xml +.4oo move %%0.4oo content.xml +% +.4om mkdir %%1 +.4om move %%1.4om %%1\content.xml +.4om copy settings.xml %%1\settings.xml +% +.4of mkdir META-INF +.4of move %%1.4of META-INF\manifest.xml +% +.4ot move %%1.4ot meta.xml +.4oy move %%1.4oy styles.xml +.4og copy %%1 Pictures\%%1 +%-- sxw --- +.4ox zip -m %%0.sxw Pictures +.4ox zip -m %%0.sxw settings.xml +.4ox zip -m %%0.sxw content.xml +.4ox zip -m -r %%0.sxw %%0-m* +.4ox zip -m -r %%0.sxw META-INF +.4ox zip -m %%0.sxw meta.xml +.4ox zip -m %%0.sxw styles.xml +.4ox zip -m -r %%0.sxw Pictures/* +%-- odt --- +.4od zip -m %%0.odt Pictures +.4od zip -m %%0.odt settings.xml +.4od zip -m %%0.odt content.xml +.4od zip -m -r %%0.odt %%0-m* +.4od zip -m -r %%0.odt META-INF +.4od zip -m %%0.odt meta.xml +.4od zip -m %%0.odt styles.xml +.4od zip -m -r %%0.odt Pictures/* +%%% end openoffice % + +>>> + + + + + + + +Contributed: Andrzej Or\l{}owski-Skoczyk; Modified: Wilfried Hennings: + +\<<< + +%%% openoffice % +.4os mkdir sxw-%%0.dir +.4os mkdir Pictures +.4os move %%1.4os sxw-%%0.dir\settings.xml +.4os move %%0.4oo sxw-%%0.dir\content.xml +% +.4om mkdir %%1 +.4om move %%1.4om %%1\content.xml +.4om copy sxw-%%0.dir\settings.xml %%1\settings.xml +.4om zip %%0.zip %%1\* +.4om del /Q %%1\* +.4om rmdir %%1 +% +.4of mkdir META-INF +.4of move %%1.4of META-INF\manifest.xml +% +.4ot move %%1.4ot sxw-%%0.dir\meta.xml +.4oy move %%1.4oy sxw-%%0.dir\styles.xml +.4og copy %%1 Pictures\%%1 +%-- sxw -- +.4ox move %%0.zip %%0.sxw +.4ox zip %%0.sxw META-INF\*.* +.4ox zip %%0.sxw Pictures +.4ox zip -j %%0.sxw sxw-%%0.dir\* +% +.4ox del %%1.4ox +.4ox del /Q Pictures\*.* +.4ox rd Pictures +.4ox del /Q META-INF\*.* +.4ox rd META-INF +.4ox del /Q sxw-%%0.dir\*.* +.4ox rd /S sxw-%%0.dir +.4ox del /Q *.tmp +%-- odt -- +.4od move %%0.zip %%0.odt +.4od zip %%0.odt META-INF\*.* +.4od zip %%0.odt Pictures +.4od zip -j %%0.odt sxw-%%0.dir\* +% +.4od del %%1.4od +.4od del /Q Pictures\*.* +.4od rd Pictures +.4od del /Q META-INF\*.* +.4od rd META-INF +.4od del /Q sxw-%%0.dir\*.* +.4od rd sxw-%%0.dir +.4od del /Q *.tmp +% if rd fails to do the job, try replacing 'rd' with 'rd /s /q' +%%% end openoffice + +>>> + + +\<<< + +%%% openoffice % +.4os mkdir sxw-%%0.dir +.4os mkdir Pictures +.4os move %%1.4os sxw-%%0.dir\settings.xml +.4os move %%0.4oo sxw-%%0.dir\content.xml +% +.4om mkdir %%1 +.4om move %%1.4om %%1\content.xml +.4om copy sxw-%%0.dir\settings.xml %%1\settings.xml +% +.4of mkdir META-INF +.4of move %%1.4of META-INF\manifest.xml +% +.4ot move %%1.4ot sxw-%%0.dir\meta.xml +.4oy move %%1.4oy sxw-%%0.dir\styles.xml +.4og copy %%1 Pictures\%%1 +%-- sxw -- +.4ox zip %%0.sxw META-INF\*.* +.4ox zip %%0.sxw Pictures +.4ox zip -j %%0.sxw sxw-%%0.dir\* +% +.4ox del %%1.4ox +.4ox del /Q Pictures\*.* +.4ox rd Pictures +.4ox del /Q META-INF\*.* +.4ox rd META-INF +.4ox del /Q sxw-%%0.dir\*.* +.4ox rd /S sxw-%%0.dir +%-- odt -- +.4od zip %%0.odt META-INF\*.* +.4od zip %%0.odt Pictures +.4od zip -j %%0.odt sxw-%%0.dir\* +% +.4od del %%1.4od +.4od del /Q Pictures\*.* +.4od rd Pictures +.4od del /Q META-INF\*.* +.4od rd META-INF +.4od del /Q sxw-%%0.dir\*.* +.4od rd sxw-%%0.dir +% if rd fails to do the job, try replacing 'rd' with 'rd /s /q' +%%% end openoffice + +>>> + + + + + +Contributed by Andreas Gobel: + + +\<<< +% +% Platforms (e.g., cygwin) with cp and mv utilities of +% http://www.mingw.org/msys.shtml may use the following script. +% It is capable of moving pictures from subdirectories required, +% for instance, by \includegraphics{bitmaps/test.eps} +% + +%%% openoffice % +.4os mkdir Pictures +.4os mv %%1.4os settings.xml +.4oo mv %%0.4oo content.xml +% +.4om mkdir %%1 +.4om mv %%1.4om %%1\content.xml +.4om cp settings.xml %%1\settings.xml +% +.4of mkdir META-INF +.4of mv %%1.4of META-INF\manifest.xml +% +.4ot mv %%1.4ot meta.xml +.4oy mv %%1.4oy styles.xml +.4og cp %%1 Pictures\ +%-- sxw -- +.4ox zip %%0.sxw Pictures +.4ox zip %%0.sxw settings.xml +.4ox zip %%0.sxw content.xml +.4ox zip -r %%0.sxw %%0-m* +.4ox zip -r %%0.sxw META-INF +.4ox zip %%0.sxw meta.xml +.4ox zip %%0.sxw styles.xml +.4ox zip -r %%0.sxw Pictures/* +%-- odt -- +.4od zip %%0.odt Pictures +.4od zip %%0.odt settings.xml +.4od zip %%0.odt content.xml +.4od zip -r %%0.odt %%0-m* +.4od zip -r %%0.odt META-INF +.4od zip %%0.odt meta.xml +.4od zip %%0.odt styles.xml +.4od zip -r %%0.odt Pictures/* +% +%%% end openoffice % + +>>> + + + + + +%%%%%%%%%%%%% +\subsection{xtpipes} +%%%%%%%%%%%%% + + + + + + + +\<<< + +.4oo mv %%0.4oo %%0.tmp +.4oo java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%0.4oo %%0.tmp +.4om mv %%1.4om %%1.tmp +.4om java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.4om %%1.tmp + +>>> + + +\<<< + +.4oo mv %%0.4oo %%0.tmp +.4oo java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%0.4oo %%0.tmp +.4om mv %%1.4om %%1.tmp +.4om java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.4om %%1.tmp + +>>> + + +\<<< + +.4oo move %%0.4oo %%0.tmp +.4oo java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%0.4oo %%0.tmp +.4om move %%1.4om %%1.tmp +.4om java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.4om %%1.tmp + +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{JavaHelp} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< + +.html mv %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s javahelp.4xt -o %%1.html %%1.tmp +.jhm echo "java -jar ${HOME}/javahelp.dir/jh2.0/javahelp/bin/jhindexer.jar -db %%0-doc/%%1-jhs %%1*.html" +.jhm echo "--- Warning --- Beware of leftover %%1*.html files from other compilations" +.jhm java -jar ${HOME}/javahelp.dir/jh2.0/javahelp/bin/jhindexer.jar -db %%0-doc/%%1-jhs %%1*.html + + +.java rm -r -f %%0-java.dir +.java mkdir %%0-java.dir +.java cp *.java %%0-java.dir/. +.java javac -classpath ${HOME}/javahelp.dir/jh2.0/javahelp/lib/jh.jar %%0-java.dir/%%1.java +.java chdir %%0-java.dir; jar -cf %%1.jar *.class ; chdir .. +.java mv %%0-java.dir/%%1.jar . +.java rm -r -f %%0-java.dir +.java zip -r %%1 %%0-doc %%1.jar + +>>> + + +\<<< + +.jhm java -jar ${HOME}/javahelp.dir/jh1.1.3/javahelp/bin/jhindexer.jar -db %%0-doc/%%1-jhs %%1*.html + + +.java rm -r -f %%0-java.dir +.java mkdir %%0-java.dir +.java cp *.java %%0-java.dir/. +.java javac -classpath ${HOME}/javahelp.dir/jh1.1.3/javahelp/lib/jh.jar %%0-java.dir/%%1.java +.java chdir %%0-java.dir; jar -cf %%1.jar *.class ; chdir .. +.java mv %%0-java.dir/%%1.jar . +.java rm -r -f %%0-java.dir +.java zip -r %%1 %%0-doc %%1.jar + +>>> + + +\begin{verbatim} +jhlatex jhprog "html,3,xml,xmldtd" + javac -classpath ${HOME}/javahelp.dir/jh2.0/javahelp/lib/jh.jar jhprog.java + +jh1latex jhprog "html,3,xml,xmldtd" +javac -classpath ${HOME}/javahelp.dir/jh1.1.3/javahelp/lib/jh.jar jhprog.java +\end{verbatim} + + +\<<< + +.html mv %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s javahelp.4xt -o %%1.html %%1.tmp +.jhm echo "java -jar ${HOME}/jh2.0/javahelp/bin/jhindexer.jar -db %%0-doc/%%1-jhs %%1*.html" +.jhm echo "--- Warning --- Beware of leftover %%1*.html files from other compilations" +.jhm java -jar ${HOME}/jh2.0/javahelp/bin/jhindexer.jar -db %%0-doc/%%1-jhs %%1*.html + + +.jhm java -jar ${HOME}/jh1.1.3/javahelp/bin/jhindexer.jar -db %%0-doc/%%1-jhs %%1*.html + +>>> + + +\<<< + +.html move %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s javahelp.4xt -o %%1.html %%1.tmp +.jhm java -jar c:\jh2.0\javahelp\bin\jhindexer.jar -db %%0-doc\%%1-jhs %%1*.html + + +.jhm java -jar c:\jh1.1.3\javahelp\bin\jhindexer.jar -db %%0-doc\%%1-jhs %%1*.html + +>>> + +%%%%%%%%%%%%%%%%%% +\section{Access to OS} +%%%%%%%%%%%%%%%%%% + +\<<< +% t4ht -d%%2 % +Mmv %%1 %%2%%3 +Ccp %%1 %%2%%3 +% t4ht -d%%2 -m%%1 % +Achmod %%1 %%2%%3 +% removed protection % +S* +>>> + + +\<<< +% t4ht -d%%2 % +Mmv %%1 %%2%%3 +Ccp %%1 %%2%%3 +% t4ht -e%%1 -d%%2 % +Ecp empty.png %%1%%2 +% t4ht -d%%2 -m%%1 % +Achmod %%1 %%2%%3 +% removed protection % +S* +>>> + +\<<< +% t4ht -d%%2 % +Mmove %%1 %%2%%3 +Ccopy %%1 %%2%%3 +% removed protection % +S* +>>> + +Note: the permission option `S' takes into account also trailing spaces. + + +%%%%%%%%%%%%%%%%%% +\section{Validation} +%%%%%%%%%%%%%%%%%% + + + +\<<< + + .html xmllint --noout --valid --html %%1.html + + + .xml xmllint --noout --valid %%1.xml + .html xmllint --noout --valid %%1.html + .css mycssparser %%1.css + +>>> + +% Xmake -f NSGMLS name=%%1 ext=%%2 + + +\<<< + + + + .xml xmllint --noout --valid %%1.xml + .html xmllint --noout --valid %%1.html + .css mycssparser %%1.css + +>>> + + +% Xif "%%2"=="html" nsgmls -wxml -wall -c catalog -s xml.dcl %%1.%%2 +% Xecho "*****************************************" + + + + +\def\.#1.{\csname #1\endcsname} + + +\<<< + +.html xmllint --noout --valid --html %%1.html +.xml xmllint --noout --valid %%1.xml + .hs java -cp @.HOME.texmf/tex4ht/bin/xv4ht.jar xv4ht %%1.hs @.HOME.texmf/tex4ht/base/solaris/xv4ht.cat + .jhm java -cp @.HOME.texmf/tex4ht/bin/xv4ht.jar xv4ht %%1.jhm @.HOME.texmf/tex4ht/base/solaris/xv4ht.cat +.css vcss %%1.css + + +.xml xmllint --noout --valid %%1.xml +.html xmllint --noout --valid %%1.html +.css vcss %%1.css + .4om echo "rxp -V -s -e %%1.4om" + .4om rxp -V -s -e %%1.4om + .4oo xmllint --relaxng ~/dtd.dir/openoffice/relaxng.dir/OpenDocument-schema-v1.0-os.rng -noout %%0.4oo +.4oo xmllint --relaxng ~/dtd.dir/openoffice/relaxng.dir/OpenDocument-schema-v1.1.rng -noout %%0.4oo + .4oy xmllint --relaxng ~/dtd.dir/openoffice/relaxng.dir/OpenDocument-schema-v1.0-os.rng -noout %%0-styles.4oy +.4oy xmllint --relaxng ~/dtd.dir/openoffice/relaxng.dir/OpenDocument-schema-v1.1.rng -noout %%0-styles.4oy +.4om perl -pe 's/math://g' %%1.4om | perl -pe 's/xmlns:[^=]*="[^"]*"//g' | perl -pe 's/xlink:[^=]*="[^"]*"//g' > tmp.tmp ; xmllint --valid --noout --catalogs tmp.tmp + + Xmake -f \HOME texmf/base/NSGMLS name=%%1 ext=%%2 %%3 +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Emacspeak} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< + +.html mv %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.html %%1.tmp +.html xmllint --noout %%1.html + +>>> + + +\<<< + +.html mv %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.html %%1.tmp + +>>> + + +\<<< + +.html move %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.html %%1.tmp + +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{JSML} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< + +.jsml mv %%1.jsml %%1.tmp +.jsml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.jsml %%1.tmp +.jsml xmllint --noout %%1.jsml + +>>> + + +\<<< + +.jsml mv %%1.jsml %%1.tmp +.jsml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.jsml %%1.tmp + +>>> + + +\<<< + +.jsml move %%1.jsml %%1.tmp +.jsml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.jsml %%1.tmp + +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{DocBook} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< + +.xml cp %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.xml %%1.tmp +.xml xmllint --relaxng /home/4/gurari/dtd.dir/docbook.dir/docbook-5.0/rng/docbook.rng -noout -dropdtd -nonet %%0.xml + +>>> + + +\<<< + +.xml cp %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.xml %%1.tmp + +>>> + + +\<<< + +.xml copy %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -o %%1.xml %%1.tmp + +>>> + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{XHTML} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< + +.html mv %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.html %%1.tmp +.html xmllint --noout %%1.html +.xht mv %%1.xht %%1.tmp +.xht java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.xht %%1.tmp +.xht xmllint --noout %%1.xht +.xml mv %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.xml %%1.tmp +.xml xmllint --noout %%1.xml + +>>> + + +\<<< + +.html mv %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.html %%1.tmp +.xht mv %%1.xht %%1.tmp +.xht java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.xht %%1.tmp +.xml mv %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.xml %%1.tmp + +>>> + + +\<<< + +.html move %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.html %%1.tmp +.xht move %%1.xht %%1.tmp +.xht java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.xht %%1.tmp +.xml move %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtml.4xt -o %%1.xml %%1.tmp + +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{XHTML + MathML} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< + +.html mv %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.html %%1.tmp +.html xmllint --noout %%1.html +.xht mv %%1.xht %%1.tmp +.xht java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.xht %%1.tmp +.xht xmllint --noout %%1.xht +.xml mv %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.xml %%1.tmp +.xml xmllint --noout %%1.xml + +>>> + + +\<<< + +.html mv %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.html %%1.tmp +.xht mv %%1.xht %%1.tmp +.xht java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.xht %%1.tmp +.xml mv %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.xml %%1.tmp + +>>> + + +\<<< + +.html move %%1.html %%1.tmp +.html java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.html %%1.tmp +.xht move %%1.xht %%1.tmp +.xht java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.xht %%1.tmp +.xml move %%1.xml %%1.tmp +.xml java -classpath %%~/tex4ht/bin/tex4ht.jar xtpipes -i %%~/tex4ht/xtpipes/ -s xhtmml.4xt -o %%1.xml %%1.tmp + +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Copyright} +%%%%%%%%%%%%%%%%%% + +\input{tex4ht-cpright} + + +\<<< +% tex4ht.env-unix (@version), generated from @jobname.tex +% (can be used as ~/.tex4ht) +% Copyright 2009-2018 TeX Users Group +% Copyright @CopyYear.1997. Eitan M. Gurari +@>>> + +\<<< +% tex4ht.env (private) (@version), generated from @jobname.tex +% (can be used as ~/.tex4ht) +% Copyright 2009-2018 TeX Users Group +% Copyright @CopyYear.1997. Eitan M. Gurari +@>>> + +\<<< +% tex4ht.env-win32 (@version), generated from @jobname.tex +% Copyright 2009-2018 TeX Users Group +% Copyright @CopyYear.1997. Eitan M. Gurari +@>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\OutputCode\ +\OutputCodE\ +\OutputCodE\ + +\end{document} + +Date: Thu, 14 Nov 2013 13:08:12 -0800 +From: Richard Koch +To: Karl Berry + +[...] + +The syntax of tex4ht.env is certainly unclear. Eitan says at the top +that is ignored if it doesn't start a line, and then has a vague +comment about defaults. + +Looking at the section, everything here seems to call dvips to get a +ps, and then output a graphic, either png or svg. The section has + + G.png prefaced by a space + G.svg prefaced by no space + G. prefaced by no space + +I guessed this meant that output of either a png or svg was acceptable, and +the preferred method is G. + +So as a test, I left everything alone except the existing "G." section, which I +commented out. Then I added my own "G." section, containing the existing +G.png code, because it calls ghostscript rather than convert. + +Next there is a netpbm section. The Mac doesn't have netpbm, so this section +seems to do no harm and I left it alone. + +The final graphic section has tag and the programs inside seem to +all start with a dvi, skip the ps step, and get either a png or a gif. The +section has + + G.png with no initial space + G.gif with no initial space + G. with no initial space + +With little evidence, I took this to mean that conversion starting with a dvi +file can end with either a png or a gif, but that the preferred method is in G. +As before, I commented out the old "G." because it used convert, and replaced +it with a "G." section containing the contents of G.png because it uses +Gdvipng instead of convert. + +Then I tried a sample file. It worked fine, even when I disabled +convert. Earlier attempts to change tex4ht.env resulted in no png files +and lots "missing picture" icons in the html, but this time all those +png files were created and the html output looked fine on a browser. + +This evidence suggests, but does not prove, that Ghostscript itself +would be a satisfactory conversion method. The change seems to take more +time, but perhaps this is startup time and large projects wouldn't see +much difference. + +END OF TODAY'S HOBBY SESSION + +Dick diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-4hf.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-4hf.tex new file mode 100644 index 00000000000..97c1a31bc54 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-fonts-4hf.tex @@ -0,0 +1,101665 @@ +% $Id: tex4ht-fonts-4hf.tex 724 2020-06-05 17:34:50Z karl $ +% htlatex tex4ht-fonts-4hf "xhtml,3" +% +% Copyright 2009-2020 TeX Users Group +% Copyright 1997-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\documentclass{article} + +\input tex4ht-dir + \def\MYdir{\HOME texmf/tex4ht/ht-fonts} + + \ifx \HCode\UnDef \usepackage[xhtml,3,sections+]{tex4ht} \fi + \usepackage{url} + \Configure{ProTex}{java,<<<>>>,title,list,`} + + +\def\AddFont#1#2{% + \Comment{}{}\OutputCode[4hf]\<#1\>% + \let\StartDir=\empty \def\EndDir{#2}\MakeDir + \ifx \WWWdir\Undef \else + \Needs{"cp #1.4hf \WWWdir /#2.4hf"}% + \Needs{"chmod 644 \WWWdir /#2.4hf"}% + \fi + \Needs{"mv #1.4hf \MYdir /#2.4hf"}% + } +\def\MakeDir{\relax + \expandafter \ifx \csname !\StartDir\endcsname\relax + \expandafter\let\csname !\StartDir\endcsname=\empty + \Needs{"mkdir -p \MYdir/\StartDir"}% + \ifx \WWWdir\Undef \else + \Needs{"mkdir -p \MYdir/\StartDir"}% + \Needs{"chmod 711 \WWWdir /StartDir"}% + \fi + \fi + \ifx \EndDir\empty \else + \expandafter\AppendDir \EndDir////*% + \expandafter\MakeDir + \fi +} +\def\AppendDir#1/#2/#3/*{% + \def\temp{#2}\ifx \temp\empty \let\EndDir=\empty + \else + \edef\StartDir{\ifx \StartDir\empty\else \StartDir/\fi + #1}\def\EndDir{#2/#3}% + \fi +} + +\input{common} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + +% unicode.4hf files can't contain comments; they have the same copyright +% and license as the rest of tex4ht; see tex4ht-cpright.tex. +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{Translation Patterns for Encodings} +%%%%%%%%%%%%%%%%%%%% + +Early patterns take precedence over latter ones. + + + +%%%%%%%%%%%%%%%%%%% +\subsection{8859-1} +%%%%%%%%%%%%%%%%%%% + + +\Link[http://www.cestina.cz/cestina/kodovani/unicode/unic8859-1.txt]{}{}translation +codes\EndLink + + +\AtEndDocument{\AddFont{iso-8859-1}{iso8859/1/charset/uni/unicode}} + + +Keep the `hexa to decimal' at the start so its entries can be overcome +by 8-bit character encodings when such are provided. (In fact, when +browsers will comply with hexa decimal values this segment can be +eliminated.) + +\<<< +` +` +'¡' '' '\161\' '' `% INVERTED EXCLAMATION MARK `% +'¢' '' '\162\' '' `% CENT SIGN `% +'£' '' '\163\' '' `% POUND SIGN `% +'¤' '' '\164\' '' `% CURRENCY SIGN `% +'¥' '' '\165\' '' `% YEN SIGN `% +'¦' '' '\166\' '' `% BROKEN BAR `% +'§' '' '\167\' '' `% SECTION SIGN `% +'¨' '' '\168\' '' `% DIAERESIS `% +'©' '' '\169\' '' `% COPYRIGHT SIGN `% +'ª' '' '\170\' '' `% FEMININE ORDINAL INDICATOR `% +'«' '' '\171\' '' `% LEFT-POINTING DOUBLE ANGLE QUOTATION MARK `% +'¬' '' '\172\' '' `% NOT SIGN `% +'­' '' '\173\' '' `% SOFT HYPHEN `% +'®' '' '\174\' '' `% REGISTERED SIGN `% +'¯' '' '\175\' '' `% MACRON `% +'°' '' '\176\' '' `% DEGREE SIGN `% +'±' '' '\177\' '' `% PLUS-MINUS SIGN `% +'²' '' '\178\' '' `% SUPERSCRIPT TWO `% +'³' '' '\179\' '' `% SUPERSCRIPT THREE `% +'´' '' '\180\' '' `% ACUTE ACCENT `% +'µ' '' '\181\' '' `% MICRO SIGN `% +'¶' '' '\182\' '' `% PILCROW SIGN `% +'·' '' '\183\' '' `% MIDDLE DOT `% +'¸' '' '\184\' '' `% CEDILLA `% +'¹' '' '\185\' '' `% SUPERSCRIPT ONE `% +'º' '' '\186\' '' `% MASCULINE ORDINAL INDICATOR `% +'»' '' '\187\' '' `% RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK `% +'¼' '' '\188\' '' `% VULGAR FRACTION ONE QUARTER `% +'½' '' '\189\' '' `% VULGAR FRACTION ONE HALF `% +'¾' '' '\190\' '' `% VULGAR FRACTION THREE QUARTERS `% +'¿' '' '\191\' '' `% INVERTED QUESTION MARK `% +'À' '' '\192\' '' `% LATIN CAPITAL LETTER A WITH GRAVE `% +'Á' '' '\193\' '' `% LATIN CAPITAL LETTER A WITH ACUTE `% +'Â' '' '\194\' '' `% LATIN CAPITAL LETTER A WITH CIRCUMFLEX `% +'Ã' '' '\195\' '' `% LATIN CAPITAL LETTER A WITH TILDE `% +'Ä' '' '\196\' '' `% LATIN CAPITAL LETTER A WITH DIAERESIS `% +'Å' '' '\197\' '' `% LATIN CAPITAL LETTER A WITH RING ABOVE `% +'Æ' '' '\198\' '' `% LATIN CAPITAL LETTER AE `% +'Ç' '' '\199\' '' `% LATIN CAPITAL LETTER C WITH CEDILLA `% +'È' '' '\200\' '' `% LATIN CAPITAL LETTER E WITH GRAVE `% +'É' '' '\201\' '' `% LATIN CAPITAL LETTER E WITH ACUTE `% +'Ê' '' '\202\' '' `% LATIN CAPITAL LETTER E WITH CIRCUMFLEX `% +'Ë' '' '\203\' '' `% LATIN CAPITAL LETTER E WITH DIAERESIS `% +'Ì' '' '\204\' '' `% LATIN CAPITAL LETTER I WITH GRAVE `% +'Í' '' '\205\' '' `% LATIN CAPITAL LETTER I WITH ACUTE `% +'Î' '' '\206\' '' `% LATIN CAPITAL LETTER I WITH CIRCUMFLEX `% +'Ï' '' '\207\' '' `% LATIN CAPITAL LETTER I WITH DIAERESIS `% +'Ð' '' '\208\' '' `% LATIN CAPITAL LETTER ETH `% +'Ñ' '' '\209\' '' `% LATIN CAPITAL LETTER N WITH TILDE `% +'Ò' '' '\210\' '' `% LATIN CAPITAL LETTER O WITH GRAVE `% +'Ó' '' '\211\' '' `% LATIN CAPITAL LETTER O WITH ACUTE `% +'Ô' '' '\212\' '' `% LATIN CAPITAL LETTER O WITH CIRCUMFLEX `% +'Õ' '' '\213\' '' `% LATIN CAPITAL LETTER O WITH TILDE `% +'Ö' '' '\214\' '' `% LATIN CAPITAL LETTER O WITH DIAERESIS `% +'Ø' '' '\216\' '' `% LATIN CAPITAL LETTER O WITH STROKE `% +'Ù' '' '\217\' '' `% LATIN CAPITAL LETTER U WITH GRAVE `% +'Ú' '' '\218\' '' `% LATIN CAPITAL LETTER U WITH ACUTE `% +'Û' '' '\219\' '' `% LATIN CAPITAL LETTER U WITH CIRCUMFLEX `% +'Ü' '' '\220\' '' `% LATIN CAPITAL LETTER U WITH DIAERESIS `% +'Ÿ' '' '\221\' '' `% LATIN CAPITAL LETTER Y WITH ACUTE `% +'Þ' '' '\222\' '' `% LATIN CAPITAL LETTER THORN `% +'ß' '' '\223\' '' `% LATIN SMALL LETTER SHARP S `% +'à' '' '\224\' '' `% LATIN SMALL LETTER A WITH GRAVE `% +'á' '' '\225\' '' `% LATIN SMALL LETTER A WITH ACUTE `% +'â' '' '\226\' '' `% LATIN SMALL LETTER A WITH CIRCUMFLEX `% +'ã' '' '\227\' '' `% LATIN SMALL LETTER A WITH TILDE `% +'ä' '' '\228\' '' `% LATIN SMALL LETTER A WITH DIAERESIS `% +'å' '' '\229\' '' `% LATIN SMALL LETTER A WITH RING ABOVE `% +'æ' '' '\230\' '' `% LATIN SMALL LETTER AE `% +'ç' '' '\231\' '' `% LATIN SMALL LETTER C WITH CEDILLA `% +'è' '' '\232\' '' `% LATIN SMALL LETTER E WITH GRAVE `% +'é' '' '\233\' '' `% LATIN SMALL LETTER E WITH ACUTE `% +'ê' '' '\234\' '' `% LATIN SMALL LETTER E WITH CIRCUMFLEX `% +'ë' '' '\235\' '' `% LATIN SMALL LETTER E WITH DIAERESIS `% +'ì' '' '\236\' '' `% LATIN SMALL LETTER I WITH GRAVE `% +'í' '' '\237\' '' `% LATIN SMALL LETTER I WITH ACUTE `% +'î' '' '\238\' '' `% LATIN SMALL LETTER I WITH CIRCUMFLEX `% +'ï' '' '\239\' '' `% LATIN SMALL LETTER I WITH DIAERESIS `% +'ð' '' '\240\' '' `% LATIN SMALL LETTER ETH `% +'ñ' '' '\241\' '' `% LATIN SMALL LETTER N WITH TILDE `% +'ò' '' '\242\' '' `% LATIN SMALL LETTER O WITH GRAVE `% +'ó' '' '\243\' '' `% LATIN SMALL LETTER O WITH ACUTE `% +'ô' '' '\244\' '' `% LATIN SMALL LETTER O WITH CIRCUMFLEX `% +'õ' '' '\245\' '' `% LATIN SMALL LETTER O WITH TILDE `% +'ö' '' '\246\' '' `% LATIN SMALL LETTER O WITH DIAERESIS `% +'÷' '' '\247\' '' `% DIVISION SIGN `% +'ø' '' '\248\' '' `% LATIN SMALL LETTER O WITH STROKE `% +'ù' '' '\249\' '' `% LATIN SMALL LETTER U WITH GRAVE `% +'ú' '' '\250\' '' `% LATIN SMALL LETTER U WITH ACUTE `% +'û' '' '\251\' '' `% LATIN SMALL LETTER U WITH CIRCUMFLEX `% +'ü' '' '\252\' '' `% LATIN SMALL LETTER U WITH DIAERESIS `% +'ÿ' '' '\253\' '' `% LATIN SMALL LETTER Y WITH ACUTE `% +'þ' '' '\254\' '' `% LATIN SMALL LETTER THORN `% +` +` +` +` +>>> + + + + +\<<< + +>>> + +\<<< +` +` +` +`<'minus' into 'negative'`> +` +` +>>> + + +\<<< +` +` +` +` +>>> + + +\marginpar{Can dom be prevented from creating an xml declaration in + the output? The xslt part is there just to remove the undesirable + declaration.} + + +\<<< + + ` + ` + + +>>> + + + + + + + +\AtEndDocument{\OutputCodE\} +\ifdojava + \Needs{" + javac HtSpk.java -d \XTPIPES . +"} +\fi + +\<<< +package tex4ht; +/* HtSpk.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2006. Eitan M. Gurari +` */ +import org.w3c.dom.*; +public class HtSpk { + ` + ` + ` +} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Line Break Elements} +%%%%%%%%%%%%%%%%%% + +Avoid short versions \verb+
+. + +\<<< + +>>> + +%%%%%%%%%%%%%%%%%% +\section{Capital Letters in Math} +%%%%%%%%%%%%%%%%%% + +\<<< + +>>> + +% (translate(.,'abcdefghijklmnopqrstuvwxyz', +% 'ABCDEFGHIJKLMNOPQRSTUVWXYZ') = . ) +% and + +\<<< + + + + + + + capital + + + + + + +>>> + +%%%%%%%%%%%%%%%%%% +\section{Superscripts and Subscripts} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Insert Sub-Levels Info} +%%%%%%%%%%%%% + + + + +\<<< + +` +>>> + + + +\<<< +public static void scriptLevel(Node dom) { + setScriptLevel(dom.getFirstChild(), ""); +} +private static void setScriptLevel(Node node, String prefix) { + String clName = null; + if (node.hasChildNodes()) { + if (node.hasAttributes()) { + Node cl = node.getAttributes().getNamedItem("class"); + if (cl != null) { + clName = cl.getNodeValue(); + if( clName.equals("mrow-sub") + || + clName.equals("mrow-super") + ){ + ` + } else if( + clName.equals("msqrt") + ){ prefix = ""; } + } } + ` + + +>>> + +\<<< + + ` + ` + ` + + +>>> + +\<<< + + + +>>> + + + +\begin{verbatim} + + + ......... + + + superscript + baseline + + +\end{verbatim} + + + + +%%%%%%%%%%%%% +\subsection{Squared} +%%%%%%%%%%%%% + +\<<< + + ` + ` + ` + + +>>> + +\<<< + + + + + +>>> + + +\<<< +not( + child::span[ (@class = 'mrow-base') ] + / child::span[ not( @title = 'speech-extra' ) ] + [ position() = last() ] + / self::* [ @class = 'mo-op' ] +) +>>> + + + + +\<<< + + + + + + + squared + + + + + + + + +>>> + + + + + + +\begin{verbatim} + + + cos + + + superscript + 2 + baseline + + +\end{verbatim} + + + + +\<<< + + + + + +>>> + + + +\<<< + + + + + + + cube + + + + + + + + +>>> + + +\<<< + + ` + ` + ` + + +>>> + + + + + +\<<< + + + + msub + + + + +>>> + + + +\<<< + + + + + + + + + + squared-super + + + squared + + + + + + + + +>>> + + +\<<< + + + + msub + + + + +>>> + + + +\<<< + + + + + + + + + + cube-super + + + cube + + + + + + + + +>>> + + + +%%%%%%%%%%%%% +\subsection{Numeric Subscripts (Rule 77)} +%%%%%%%%%%%%% + +\<<< + + ` + ` + ` + + +>>> + + + +\<<< + + + + + + + + + + + + +>>> + +Emacspeak doesn't read fluently numbers with commas. For instance `10,000' is +treated as `ten comma zero zero zero'. + +\begin{verbatim} + + + x + + + subscript + 1 + baseline + + +\end{verbatim} + +%%%%%%%%%%%%% +\subsection{Primes} +%%%%%%%%%%%%% + +\<<< + + +>>> + + + +\<<< + + +>>> + + + +\begin{verbatim} + + + x + + + superscript + + + double prime + + + baseline + + +\end{verbatim} + +\<<< + + ` + ` + ` + + +>>> + + +\<<< + + + + msub + + + + + + + + +>>> + + + +\begin{verbatim} + + + x + + + ...... + + + superscript + + + prime + + + + +\end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\section{Over and Under Limit Scripts} +%%%%%%%%%%%%%%%%%% + + +\<<< + +>>> + +\<<< + + + + + + + + + +>>> + + +\<<< + + + + + + + end scripts + + + end script + + + + + +>>> + + +\<<< + + + + + + + + + + + + + + +>>> + + + +\<<< + + + over + + + +>>> + + +\<<< + + + under + + + +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Fractions} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%% + + + +\<<< + +>>> + +\<<< + + + + ` + ` + ` + + + + + + +>>> + +%%%%%%%%%%%%% +\subsection{Continuos Fractions} +%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsubsection{Get Three Bottom Levels} +%%%%%%%%%%%%% + + + +\<<< + + ` + + + + + + + + + + + + +>>> + + +\<<< +( normalize-space( + child::span[ @class = 'mrow-numerator' ]) + and + normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + child::span[ @class = 'mrow-numerator' ]) +) +and +( normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + child::span[ @class = 'mrow-numerator' ]) + and + normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + child::span[ @class = 'mrow-numerator' ]) +) +>>> + + + +\<<< +( child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + preceding-sibling::*[1][@class = 'mo-bin'] +) +and +( normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + preceding-sibling::*[1] ) + = + normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + preceding-sibling::*[1] ) +) +>>> + + + +\<<< + + + + + + + + + +>>> + + +\<<< + + + + + + +>>> + + + + +%%%%%%%%%%%%% +\subsubsection{Prepend Existing one} +%%%%%%%%%%%%% + + + +\<<< + + ` + + + + + + + + + + + + +>>> + +\<<< +( + normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + preceding-sibling::*[1] ) + = + normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mfrac' ] / + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'continuous-mfrac' ] / + preceding-sibling::*[1] ) +) +>>> + + +\<<< + + + + + + +>>> + +%%%%%%%%%%%%% +\subsection{Word Fractions} +%%%%%%%%%%%%% + + + +\<<< + + `
+ + + + + + + word-frac + + ` + ` + + + + + + +>>> + + +\<<< + + + + + + +>>> + + +\<<< + + one + two + three + four + five + six + seven + eight + nine + +>>> + + +\<<< + + half + third + fourth + fifth + sixth + seventh + eighth + nineth + +s + +>>> + + +%%%%%%%%%%%%% +\subsection{Prefix `and' Connectors} +%%%%%%%%%%%%% + +\<<< + + and + + + + +>>> + +%%%%%%%%%%%%% +\subsection{Hyper Complex Fractions} +%%%%%%%%%%%%% + + +\<<< + +` +>>> + + + +\<<< +public static void fracLevel(Node dom) { + setFracLevel(dom.getFirstChild(), 0); +} +private static int setFracLevel(Node node, int cont) { + int level = 0; + String clName = null; + if (node.hasChildNodes()) { + if (node.hasAttributes()) { + Node cl = node.getAttributes().getNamedItem("class"); + if (cl != null) { clName = cl.getNodeValue(); } + } + ` + if( clName != null ){ + ` + ` + if (clName.equals("mfrac")) { + if( cont > 0 ){ + ` + } else if( level > 0 ){ + ` + } + level++; + } } } + return level; +} +>>> + + +\<<< +NodeList children = node.getChildNodes(); +int max = 0; +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + int d = setFracLevel(child, + (clName != null) && + clName.equals("continuous-mfrac")? + 2 : + ((clName != null) && + clName.equals("continuous-mfrac")? + (cont-1) : cont) + ); + if (d > max) { max = d; } +} } +level += max; +>>> + + + + +The `cont' parameter is for determining whether the parent and the +grandparent are frac elements marked as continuous. + + +\<<< +if( clName.equals("msub") || clName.equals("msup") || + clName.equals("msubsup") +) { + return 0; +} +>>> + + +\<<< +if( clName.equals("continuous-mfrac") ) { + if( cont > 0 ){ + ` + } else { ` } `%root of continuous chain`% + return 0; +} +>>> + + + +\<<< +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() + .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if (clsName.equals("begin-end")) { + child = child.getFirstChild(); + String s = child.getNodeValue(); + String bg = "", ov = "", en = ""; + for(int j=0; j>> + + +\<<< +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() + .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if ( clsName.equals("begin-end")) { + child = child.getFirstChild(); + String s = child.getNodeValue(); + s = s.replaceFirst("begin", "begin continued"); + s = s.replaceFirst("end", "end continued"); + ((org.w3c.dom.Text) child).setData(s); +} } } } +>>> + +\<<< +Node child = node.getLastChild(); +if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if ( clsName.equals("begin-end")) { + node.removeChild( child ); +} } } +>>> + + + + +%%%%%%%%%%%%% +\subsection{Set Levels on Roots} +%%%%%%%%%%%%% + +\<<< + +` +>>> + +\<<< +public static void rootLevel(Node dom) { + setRootLevel(dom.getFirstChild()); +} +private static int setRootLevel( Node node ){ + int level = 0; + String clName = null; + if (node.hasChildNodes()) { + if (node.hasAttributes()) { + Node cl = node.getAttributes().getNamedItem("class"); + if (cl != null) { clName = cl.getNodeValue(); } + } + ` + if( clName != null ){ + ` + if( clName.equals("msqrt") || clName.equals("root") ){ + ` + level++; + } } } + return level; +} +>>> + + +\<<< +NodeList children = node.getChildNodes(); +int max = 0; +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + int d = setRootLevel(child); + if( d > max ){ max = d; } +} } +level += max; +>>> + + +\<<< +if( clName.equals("msub") || clName.equals("msup") || + clName.equals("msubsup") +) { + return 0; +} +>>> + + + + +\<<< +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() + .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if( clsName.equals("begin-root") + || clsName.equals("mid-root") + || clsName.equals("end-root") + ){ + child = child.getFirstChild(); + String s = child.getNodeValue(); + String nested = ""; + for(int j=0; j>> + + + +%%%%%%%%%%%%%%%%%% +\section{Odd Ends} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Remove Empty Array Cells} +%%%%%%%%%%%%% + +Empty array celles at end of rows can make it more difficult to +detect deletable baseline indicators. + + + +\<<< + +>>> + +\<<< + + +>>> + + + + + +%%%%%%%%%%%%% +\subsection{'minus' into 'negative'} +%%%%%%%%%%%%% + + + +\<'minus' into 'negative'\><<< + + + + mo-unary + + + + +>>> + + +\<'minus' into 'negative'\><<< + + + + + +>>> + +\begin{verbatim} + subscript + + + minus + + +2 +\end{verbatim} + + + + +\<'minus' into 'negative'\><<< + + + + negative + + + + + + +>>> + +%%%%%%%%%%%%% +\subsection{Short-Cuts for Modifiers} +%%%%%%%%%%%%% + +\<<< + +>>> + + + + +\<<< + +>>> + + + + + + + + + +\<<< + + + + + + + + + + + under bar + + + + + + + + +>>> + + + + + + + + +\<<< + + + + + + + + + + + over bar + + + + + + + + +>>> + + + +\begin{verbatim} + + modified above + + + bold + + capital + Z + + + + with bar + +\end{verbatim} + + + +\begin{verbatim} + + modified under + + x + + with bar + +\end{verbatim} + +%%%%%%%%%%%%% +\subsection{Font Decorations} +%%%%%%%%%%%%% + + + + + +\<<< + +>>> + + + +\<<< + + + + + + + + + + bold + + + + + + begin bold + + + + end bold + + + + + +>>> + + +%%%%%%%%%%%%% +\section{Eliminate Inline Math Narrative} +%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Simple Sub-Sup (Core Content of Length One)} +%%%%%%%%%%%%% + + + + +\<<< + + + + + + + + + semi-math + + + + ` + + + + + + +>>> + + +\<<< +child::*[ not(@title) or (@title != 'speech-extra') ] +>>> + + +\<<< + + + + + + + + semi-math + + +`% + + baseline + +`% + + + + + + +>>> + + +\begin{verbatim} + + + + C + + + i + + + +\end{verbatim} + + + + +%%%%%%%%%%%%% +\subsection{Unary Op on Core Content of Length One} +%%%%%%%%%%%%% + +The `mo-unary' is established in the first pass over inline-math, +so we need to wait for the second pass with the following. + + +\<<< + + + + + + + + + semi-math + + + + + + + + + +>>> + + + +\begin{verbatim} + + begin math + + + negative + + + + bold + + + + capital + + A + + + end math + +\end{verbatim} + +%%%%%%%%%%%%%%%%%% +\section{Empty Elements} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Set for W3} +%%%%%%%%%%%%% + + + +\<<< + + ` + ` + ` + + +>>> + +\<<< + + + + + ` + + + +>>> + +Note: Java 5 complains when comments contain just white spaced. + + +\<<< +.>>> + +%%%%%%%%%%%%% +\subsection{Remove Split Arrays} +%%%%%%%%%%%%% + +\<<< + +>>> + + +\<<< + + + + + + + + + + +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Spaces around Math Identifiers} +%%%%%%%%%%%%%%%%%% + +The following is to cause a pause. For instance, between the +variables in \verb+ij+. + + +\<<< + + + + + + + + +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Prose} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Tables} +%%%%%%%%%%%%% + +\<<< + +>>> + + +\<<< + + + +
+ +
+ +
+
+>>> + + + + + +%%%%%%%%%%%%% +\subsection{New Theorems} +%%%%%%%%%%%%% + +\<<< + +>>> + + +\<<< + + + +
+ +
+
+
+>>> + + + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Shared} +%%%%%%%%%%%%%%%%%% + + + +\<<< + + +>>> + +\<<< + + + + + + +]]> +>>> + + +\<<< + + + + x + + + + + + +>>> + + +%%%%%%%%%%%%%%%%%% +\section{To Do} +%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item +Left subscripts and tensors. +\end{itemize} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifdojava +\AtEndDocument{\Needs{% + "pushd \XTPIPES || exit 1 + ; + jar cf tex4ht.jar * + ; + popd + ; + mkdir -p \TEXMFTEXivBIN || exit 1 + ; + mv \XTPIPES tex4ht.jar \TEXMFTEXivBIN . +"}} +\fi + + + +\end{document} + + + + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-html-speech.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html-speech.tex new file mode 100644 index 00000000000..a31f00c91ed --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html-speech.tex @@ -0,0 +1,25036 @@ +% $Id: tex4ht-html-speech.tex 184 2016-07-04 17:35:09Z karl $ +% Compile 3 times: latex tex4ht-html-speech +% or xhlatex tex4ht-html-speech "html,3,sections+" +% (html4*.4ht must be up to date.) +% +% Copyright 2009-2016 TeX Users Group +% Copyright 2006-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{html-speech,html-speech-math,emacspeak} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\OPTIONS{xhtml,3,sections+} + \def\PREAMBLE{\usepackage{url}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +\def\.{\string\a:mathml:\space} + + +\TocAt{section,subsection,likesubsection} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Needs{"ls -l tex4ht-*.tex > ls-links.log"} +\openin15=ls-links.log +\ifeof15 \else \closein15 +\bgroup + \catcode`\-=13 + \def-#1tex4ht-{\bgroup \catcode`\-=12 + \def-##1.tex{\egroup + [\Link[tex4ht\string-##1.html]{}{}##1\EndLink]} + -} + \input ls\string-links.log +\egroup +\fi + + +%%%%%%%%%%%%%%%%%% +\section{General} +%%%%%%%%%%%%%%%%%% + + + + +\begin{center} +\tt htlatex file "html,emspk" " -cemspkhtf -s4css -s4es" "-cemspk" +\end{center} + +%%%%%%%%%%%%%%%%%% +\section{Root} +%%%%%%%%%%%%%%%%%% + + +\<<< +% html-speech.4ht (|version), generated from |jobname.tex +% Copyright 2009-2016 TeX Users Group +% Copyright |CopyYear.1997. Eitan M. Gurari +| +>>> + +\<<< +% html-speech-math.4ht (|version), generated from |jobname.tex +% Copyright 2009-2015 TeX Users Group +% Copyright |CopyYear.2006. Eitan M. Gurari +| +>>> + +\<<< +% emacspeak.4ht (|version), generated from |jobname.tex +% Copyright 2009-2016 TeX Users Group +% Copyright |CopyYear.2006. Eitan M. Gurari +| +>>> + + +\<<< +!*?: >>> +\<<< + cw:>>> + + +\<<< +\xdef\:cursec{|
}% +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Preamble} +%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{VERSION} + {\HCode{ ?>\Hnewline + \Hnewline}} +>>> + +\<<< +encoding="\expandafter\ifx \csname a:charset\endcsname\relax + \expandafter\:encoding\A:charset + \else \expandafter\:encoding\a:charset\fi" +>>> + +\<<< +\:CheckOption{math-} \if:Option + \edef\Preamble{\Preamble,mathml-} +\else + \Log:Note{for sources failing to produce + clean math code, try the command line option `math-'}% +\fi +>>> + + +\<<< +\def\CssSpeech#1{\Css{@media speech{#1}}} +\def\add:description#1#2{\Hnewline #2\Hnewline} +\def\add:vdescription#1#2{
\Hnewline #2\Hnewline
} +>>> + + +The attribute `{\tt title="speech-extra"}' is useful when there is +a need to check just the content provided to the translation. + + + +\<<< +\Css{.begin-math, .end-math {color:red;}} +\Css{span.semi-math {color:red;font-style:italic;}} +\Css{span[title="ch-verbose"] {color:red;}} +\Css{.added-description {color:green;}} +\Css{.begin-end {color:green;}} +\Css{.begin-root, .end-root, .mid-root {color:green;}} +\Css{.begin-stack, .end-stack, .mid-stack {color:green;}} +\Css{.capital-description {color:green;}} +>>> + + +\<<< +\CssSpeech{.begin-end {stress:4; richness:4;}} +\CssSpeech{.begin-math, .end-math {stress:3; richness:5;}} +\CssSpeech{.semi-math {pitch: 8; pitch-range: 7; volume: 5;}} +\CssSpeech{.begin-root, .end-root, .mid-root {stress:3;}} +\CssSpeech{.begin-stack, .end-stack, .mid-stack {stress:3;}} +\CssSpeech{.char-del {stress:4;}} +\CssSpeech{.capital-description {stress:4;}} +\CssSpeech{body {speak-punctuation: none}} +>>> + +% + +\<<< +% +>>> + + + + +\<<< +\edef\Preamble{\Preamble,xhtml} +>>> + +\<<< +\Configure{DOCTYPE} + {\HCode{% \Hnewline + + \Hnewline}} +\def\xhtml:DOCTYPE{PUBLIC + "-//W3C//DTD XHTML 1.0 Transitional//|"\Hnewline + \space\space "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"} +>>> + +The DOCTYPE is not provided since we don't know how to hide it from +Java SAX in stpipes. + + +%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%% + + +\<<< +| +| +| +>>> + + + +\<<< +| +| +| +>>> + + +\<<< +| +| +| +>>> + +\<<< +| +>>> + +\<<< +| +>>> + +\<<< +| +| +>>> + +\<<< +| +| +>>> + +\<<< +| +| +| +>>> + +\<<< +| +>>> + +\<<< +| +| +| +| +| +| +| +| +>>> + + +\<<< +| +| +| +| +>>> + +\<<< +| +| +| +| +>>> + +\<<< +| +| +| +| +| +>>> + +\<<< +| +| |%should appear before TocAt|% +>>> + +\<<< +| +>>> + +\<<< +| +>>> + +\<<< +| +>>> + + +\<<< +| +| +| +>>> + +\<<< +| +| +>>> + + +\<<< +| +>>> + + +\<<< +| +>>> + + +\<<< +| +| +>>> + + + +\<<< +| +| +>>> + +\<<< +| +| +>>> + +\<<< +| +| +>>> + +\<<< +| +>>> + +\<<< +| +>>> + +\<<< +| +>>> + +\<<< +| +>>> + + +\<<< +| +| +>>> + + + +\<<< +| +>>> + +%%%%%%%%%%%%%%%%%% +\section{HTML Head} +%%%%%%%%%%%%%%%%%% + +\<<< +\let\Link\M:Link \let\M:Link\:UnDef +\let\EndLink\M:EndLink \let\M:EndLink\:UnDef +>>> + + + + +\<<< +\Configure{@HEAD}{} +| +\:CheckOption{css-in} \if:Option + \Log:Note{the inline CSS code is extracted from the input of the + previous compilation, so an extra compilation might be needed} + \Configure{@HEAD}{|} +\else + \Log:Note{for inline CSS code, use the command line option `css-in'} + \Configure{@HEAD}{\HCode{\Hnewline}} +\fi +>>> + +\<<< +\:CheckOption{xht} \if:Option + \:CheckOption{xhtml}\if:Option \else \:CheckOption{xml}\fi +\fi +| +\def\:gobbleM#1->{} +| +\immediate\write-1{TeX4ht package options: + \expandafter\:gobbleM\meaning\Preamble} +\Configure{@HEAD} + {\HCode{\Hnewline}} +\:CheckOption{timestamp}\if:Option +\Configure{@HEAD} + {\HCode{\Hnewline}} +\else + \Log:Note{To print a timestamp, use the command line option timestamp} +\fi +>>> + +\<<< +\Log:Note{for file extension name xht, use the command line option `xht'}% +\Configure{@HEAD}{\HCode{\Hnewline}} +>>> + +\<<< +\Configure{@HEAD}{\HCode{\Hnewline}} +\Configure{@HEAD}{\HCode{\Hnewline + \Hnewline}} +>>> + + +%%%%%%%%%%%%%%%%%% +\part{Prose} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%% +\section{Bibliography and Equation References} +%%%%%%%%%%%%%%%%%% + + + +\<<< +\def\@cite#1#2{% + \HCode{\add:description{added-description}{\a:speak:citation}}% + {#1\if@tempswa , #2\fi}} +\def\@biblabel#1{% + \HCode{\add:description{added-description}{\a:speak:bib}}% + #1} +>>> + +\<<< +\NewConfigure{speak:citation}{1} +\Configure{speak:citation}{citation } +\NewConfigure{speak:bib}{1} +\Configure{speak:bib}{Bibliography entry } +>>> + + + + +\<<< +\Configure{eqref} + {\bgroup\let\tagform@\empty + \HCode{ + \add:description{added-description}{\a:speak:eqref}}} + {\HCode{}\egroup} +>>> + +\<<< +\NewConfigure{speak:eqref}{1} +\Configure{speak:eqref}{ equation } +>>> + + +\<<< +\CssSpeech{@media speech{.cite, .biblabel + {pitch: 5 ; pitch-range: 6; stress: 6; richness: 5;}}} +>>> + + +\<<< +\CssSpeech{@media speech{.eqref + {pitch: 5 ; pitch-range: 6; stress: 6; richness: 5;}}} +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Cross Links} +%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{crosslinks}{ }{ }{next}{previous}{previous-tail}{front}{tail}{up} +\Configure{crosslinks+} + {\IgnorePar\EndP\HCode{|% + }\par\ShowPar} + {\IgnorePar\EndP\HCode{|% + }\par\ShowPar} +\:CheckOption{next} \if:Option + \Configure{next+} + {\ShowPar\par\noindent \HCode{ + \add:description{added-description}{\c:speak:crosslinks}}} + {\HCode{}} +\fi +>>> + + +\<<< +\NewConfigure{speak:crosslinks}{3} +\Configure{speak:crosslinks} + {Navigation links} + {End navigation links} + {Navigation link} +>>> + +\<<< +\CssSpeech{@media speech{.crosslinks a, .next a + { pitch: 9; pitch-range: 4; volume: 5; + stress:1; pause-after: 1000ms }}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Front Matter} +%%%%%%%%%%%%%%%%%% + + +\<<< +\CssSpeech{ + .titleHead {pitch: 3; + pitch-range: 4; + richness: 8; + stress: 3; + volume: |}} +\CssSpeech{ .author, .date {pitch: 5; + pitch-range: 4; + richness: 7; + stress: 1; + volume: |}} +\CssSpeech{ .date {speak-date: dmy}} +\CssSpeech{ div.abstract { pitch: 4; + pitch-range: 3; + speed: x-fast; + volume: |}} +>>> + + +\<<< +\ConfigureEnv{abstract} + {\IgnorePar\EndP + \HCode{
}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP\HCode{
}} + {}{} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Sections} +%%%%%%%%%%%%%%%%%% + + +\<<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{\add:description{added-description} + {\a:speak:section}}\@seccntformat{section}% + \HCode{}\fi } +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{\add:description{added-description} + {\a:speak:subsection}}\@seccntformat{subsection}% + \HCode{}\fi } +| +>>> + + + +\<<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{\add:description{added-description} + {\a:speak:section}}\@ifundefined{sectionname}{}{% + \ignorespaces\sectionname\space}% + \@seccntformat{section}% + \HCode{}\fi } +| +>>> + + + +\<<< +\NewConfigure{speak:section}{1} +\Configure{speak:section}{section} +\NewConfigure{speak:subsection}{1} +\Configure{speak:subsection}{subsection} +>>> + + +\<<< +\CssSpeech{ + .sectionHead {pitch: 4; + pitch-range: 7: + richness: 9; + speed: slow; + volume: |;}} +\CssSpeech{ .subsectionHead {pitch: 5; + pitch-range: 7; + richness: 9; + speed: slow; + volume: |;}} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Tables} +%%%%%%%%%%%%%%%%%% + + + +\<<< +| +>>> + +\<<< +\ConfigureEnv{tabular} + {|% + \IgnorePar|\EndP + } + {\ShowPar + |% + |% + }{}{} +>>> + +\<<< +\Configure{noalign}% + {\f:tabular\d:tabular \HCode{}} + {\HCode{}\pend:def\TableNo{0}\c:tabular\e:tabular}% +>>> + + +\<<< +\Configure{noalign}{}{}% +>>> + + +\<<< +\ifvmode\else\HCode{}\fi +>>> + + + +\<<< +\Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
}|} + {|\HCode{
}} + {\HCode{
}% + |} + {|\HCode{
}} + {\HCode{
}% + |\HCode{
}\SaveEndP + \par \ShowPar} + {\IgnorePar \EndP \ifvmode \IgnorePar \fi \EndP + \HCode{
}|% + \HCode{
\Hnewline}\RecallEndP } +>>> + + +\<<< +\HCode{\add:vdescription{begin-end}{begin table}}% +>>> + +\<<< +\HCode{|\add:vdescription{begin-end}{end table}}% +>>> + +\<<< +\HCode{\add:vdescription{begin-end}{| row}}% +>>> + + +\<<< +\HCode{% + \add:vdescription{added-description}{% + \ifnum \HMultispan>1 | cell, spans + \HMultispan \space columns + \else + \ifnum \HCol>1 | cell \fi + \fi +}}% +>>> + +\<<< +>>> + + + + + + +\<<< +\ShowPar +>>> + +\<<< +\ShowPar \par{\HCondtrue\noindent}% +>>> + +%%%%%%%%%%%%% +\subsection{Numbering} +%%%%%%%%%%%%% + + +\<<< +\HAssign\HRow=0 +>>> + +\<<< +\PushStack\Table:Stck\TableNo +\gHAdvance\Next:TableNo by 1 +\global\let\TableNo=\Next:TableNo +>>> + +\<<< +\PopStack\Table:Stck\TableNo +>>> + +\<<< +\PushStack\Row:Stck\HRow \HAssign\HRow=0\relax +>>> + +\<<< +\PopStack\Row:Stck\HRow +>>> + +\<<< +\PushStack\Col:Stck\Prev:Col +>>> + +\<<< +\PopStack\Col:Stck\Prev:Col +>>> +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Matrices} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Aligned} +%%%%%%%%%%%%% + + + +\<<< +\Configure{aligned} + {|% + |% + \HCode{
}% + \HCode{\add:vdescription{begin-array}{\a:speak:aligned}}} + {\Tag{aligned-\TableNo}{\hrow:s}% + \HCode{|% + \add:vdescription{end-array}{\b:speak:aligned}}% + \ifvmode \IgnorePar\fi \Tg
% + |% + |} + {\HCode{
}\c:speak:aligned}% + {\xdef\hrow:s{\HRow}\HCode{
}}% + {\HCode{
}% + \e:speak:aligned \HCode{
}} + {\HCode{
}\f:speak:aligned + \HCode{
\Hnewline}} +>>> + +\<<< +\NewConfigure{speak:aligned}{6} +\Configure{speak:aligned} + {begin + \ifTag{aligned-\TableNo}{\LikeRef{aligned-\TableNo}}{} + aligned equations} + {end equations} + {|} + {|} + {|} + {|} +>>> + + + +\<<< +\Configure{alignedat} + {|% + |% + \HCode{
}% + \HCode{\add:vdescription{begin-array}{\a:speak:aligned}}} + {\Tag{aligned-\TableNo}{\hrow:s}% + \HCode{|% + \add:vdescription{end-array}{\b:speak:aligned}}% + \ifvmode \IgnorePar\fi \Tg
% + |% + |} + {\HCode{
}\c:speak:aligned}% + {\xdef\hrow:s{\HRow}\HCode{
}}% + {\HCode{
}% + \e:speak:aligned \HCode{
}} + {\HCode{
}\f:speak:aligned + \HCode{
\Hnewline}} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{Cases} +%%%%%%%%%%%%%%%%% + +\<<< +\Configure{cases} + {}{} {\Tg}{\Tg} + {\Tg}{\Tg} + {\Tg}{\Tg} +>>> + + +\<<< +\ConfigureEnv{cases} + {|% + |% + \HCode{
}% + \bgroup + |% + |% + |% + } + {\egroup\HCode{
}% + |% + |} + {}{} +>>> + + + + + + +\<<< +\Configure{array} + {\HCode{
% + \add:vdescription{begin-array}{begin + \ifTag{cases-\TableNo}{\LikeRef{cases-\TableNo}}{} cases}}} % + {\Tag{cases-\TableNo}{\HRow}% + \HCode{|% + \add:vdescription{end-array}{end cases}}% + \ifvmode \IgnorePar\fi \Tg
} + {\HCode{
% + \add:vdescription{begin-end}{Case \HRow}}} + {\HCode{
}}% + {\HCode{
}% + \bgroup + |% + |% + } + {\egroup \HCode{
\Hnewline}} +>>> + + + + + + +\<<< +\Configure{left} + {} + {\bgroup} +\Configure{right} + {\egroup} + {} +>>> + + +\<<< +\let\sv:a:left=\a:left +\let\sv:b:left=\b:left +\let\sv:a:right=\a:right +\let\sv:b:right=\b:right +>>> + + +\<<< +\let\a:left=\sv:a:left +\let\b:left=\sv:b:left +\let\a:right=\sv:a:right +\let\b:right=\sv:b:right +>>> + + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{matrix} +%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{matrix} + {|% + |% + \HCode{
}% + \HCode{\add:vdescription{begin-array}{\a:speak:array}}} + {\Tag{array-\TableNo}{\hrow:s}% + \HCode{|% + \add:vdescription{end-array}{\b:speak:array}}% + \ifvmode \IgnorePar\fi \Tg
% + |% + |} + {\HCode{
}\c:speak:array}% + {\xdef\hrow:s{\HRow}\HCode{
}}% + {\HCode{
}% + \e:speak:array\HCode{
}} + {\HCode{
}\f:speak:array + \HCode{
\Hnewline}} +>>> + +\<<< +\HCode{}% +>>> + + + +The grouping below is handle the case that the matrix is a base of an exponent. + + +\<<< +\Configure{pmatrix} + {\bgroup\Tg
} + {\Tg
\egroup} +>>> + + + + +\<<< +\NewConfigure{speak:array}{6} +\Configure{speak:array} + {begin array with + \ifTag{array-\TableNo}{\LikeRef{array-\TableNo}}{} + rows} + {end array} + {|} + {|} + {|} + {|} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Math} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +| +>>> +\
<<< +\Configure{eqalign} + {\:xhtml{\IgnorePar\EndP}\HCode + {
}} + {\HCode{
}} + {\HCode{}}{\IgnorePar\HCode{}} + {\HCode{}} + {\HCode{}} +\def\:eqalign:{\Configure{noalign} + {\HCode{}}% + {\HCode{}}} +\Css{td.eqalign3 { text-align:right; margin-left:10em;}} +\Css{.eqalign td { white-space: nowrap; }} +\Css{div.eqalign {text-align:center;}} +>>> + + + + + +\<<< +\Configure{eqalignno} + {\:xhtml{\IgnorePar\EndP}\HCode{
}} + {\HCode{
}} + {\HCode{}}{\IgnorePar\HCode{}} + {\HCode{\ifnum \HCol=3 \fi + }} + {\HCode{}} +\def\:eqalignno:{\Configure{noalign} + {\HCode{}}% + {\HCode{}}} +\Css{td.eqalignno3, td.leqalignno3 + { text-align:right; margin-left:10em;}} +\Css{.leqalignno td, .eqalignno td + { white-space: nowrap; }} +\Css{.leqalignno td.noalign, .eqalignno td.noalign + { width:5\%; white-space: normal; }} +\Css{table.leqalignno, table.eqalignno {width:100\%;}} +>>> + +\<<< +\Configure{leqalignno} + {\:xhtml{\IgnorePar\EndP}\HCode{
}} + {\HCode{
}} + {\HCode{}}{\IgnorePar\HCode{}} + {\HCode{\ifnum \HCol=3 \fi + }} + {\HCode{}} +\def\:leqalignno:{\Configure{noalign} + {\HCode{}}% + {\HCode{}}} +>>> + + + + +\<<< +\Configure{array} + {|% + |% + \HCode{
}% + \HCode{\add:vdescription{begin-array}{\a:speak:array}}} + {\Tag{array-\TableNo}{\hrow:s}% + \HCode{|% + \add:vdescription{end-array}{\b:speak:array}}% + \ifvmode \IgnorePar\fi |\Tg
% + |% + |} + {\HCode{
}\c:speak:array}% + {\xdef\hrow:s{\HRow}\HCode{
}}% + {\HCode{
}% + \e:speak:array\HCode{
}} + {\HCode{
}\f:speak:array + \HCode{
\Hnewline}} +\ConfigureEnv{array} + {\bgroup\Configure{$}{}{}{}} + {\egroup} + {}{} +>>> + + + + +\<<< +\Css{.begin-array, .end-array {color:green;}} +>>> + +\<<< +\CssSpeech{.begin-array, .end-array {stress:4; richness:4;}} +>>> + + +\<<< +\HCode{\add:vdescription{begin-end}{Row \HRow}}% +>>> + + + + +\<<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + +\<<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + + + + + + +\<<< +\expandafter\tmp:toks\expandafter{\Clr}% +\HCode{}% +>>> + + + + + +\<<< +\def\:MM{m} +\Configure{HBorder} + {} + {|} + {} + {} + {} + {|} + {} + {} + {
} + {} +>>> + +\<<< +\def\:MM{\ifmathml m\fi} +\Configure{HBorder} + {<\:MM tr\Hnewline + \ifmathml \expandafterclass\else class\fi="hline">} + {\ifmathml|\else + \fi} + {} + {<\:MM tr\Hnewline + \ifmathml \expandafterclass\else class\fi ="cline">} + {<\:MM td>} + {\ifmathml|\else + \fi} + {} + {<\:MM tr\Hnewline + \ifmathml \expandafterclass\else class\fi="vspace" + style="font-size:\HBorderspace">} + {<\:MM td\Hnewline>\ifmathml\else\string&\#x00A0;\fi + } + {} +\Configure{halign} + {\EndP\halignTB{halign}} \t:HA + \R:HA\r:HA\D:HA\d:HA +>>> + + + +\<<< + \string&\#x0332; +>>> + +%%%%%%%%%%%%% +\subsection{Small Matrix} +%%%%%%%%%%%%% + + + +\<<< +| +>>> + + +\<<< +| +>>> + + +\<<< +\Configure{multicolumn} + {\let\sv:VBorder\VBorder + \let\VBorder\empty + \Configure{VBorder}{}{}{}{}% + } + {\let\VBorder\sv:VBorder} + {\ifmmode \else + \ifvmode\IgnorePar\fi + \fi \HCode{
}} + {\ifmmode \else + \ifvmode\IgnorePar\fi \EndP\fi \HCode{
} } +\def\gob:sp#1{#1} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{TeX} +%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{eqalignno} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} +\def\:eqalignno:{\Configure{noalign} + {\HCode{}}% + {\HCode{}}} +>>> + + +\<<< +\Configure{leqalignno} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} +\def\:leqalignno:{\Configure{noalign} + {\HCode{}}% + {\HCode{}}} +>>> + + + + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Lists} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Shared} +%%%%%%%%%%%%% + + + + +\<<< +| +>>> + +\<<< +\CssSpeech{ + .itemize, .enumerate, .description {pitch: 8; + pitch-range: 4; + volume: |; + pause-after: 1000ms} +} +\CssSpeech{.added-list-description + { pitch: 8; pitch-range: 4; volume: 5; pause-after: 1000ms }} +\CssSpeech{.li-itemize, .li-enumerate, .li-description + { pitch: 3; pitch-range: 6; volume: 5 }} +>>> + + +\<<< +\ConfigureList{trivlist}% + {\EndP\HCode{
}% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
}\bgroup \bf} + {\egroup\HCode{
}} +>>> + +\<<< +\ConfigureList{list}% + {\EndP\HCode{
}% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
}\bgroup \bf} + {\egroup\HCode{
}} +>>> + +%%%%%%%%%%%%% +\subsection{Itemized} +%%%%%%%%%%%%% + + + +\<<< +\ConfigureList{itemize}% + {\EndP|\HCode{
}% + |\global\let\end:itm=\empty} + {|\ifvmode \IgnorePar\fi + \EndP\HCode{
}|\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}% + \HCode{
}|\DeleteMark + } + {\HCode{}} +>>> + +\<<< +\HCode{
% +
% + \add:description{added-description}{\a:speak:itemize}
}% +>>> + +\<<< +\HCode{
% + \add:description{added-description}{\b:speak:itemize}
}% +>>> + +\<<< +\HCode{% + \add:description{added-description}{\c:speak:itemize}}% +>>> + + + +\<<< +\NewConfigure{speak:itemize}{3} +\Configure{speak:itemize} + {begin \ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi + list} + {end \ifcase\csname @listdepth\endcsname + \or sub \or sub sub \or sub sub sub \else\fi + list} + {|%\ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi|% + item} +>>> + + + + + + +%%%%%%%%%%%%% +\subsection{Enumerate} +%%%%%%%%%%%%% + + + + +\<<< +\ConfigureList{enumerate}% + {|} + {|} + {|} + {|} +>>> + + +\<<< +\EndP|\HCode{
}|\global\let\end:itm=\empty +>>> + +\<<< +|% +\EndP\HCode{
}|\ShowPar +>>> + + +\<<< +\end:itm \gdef\end:itm{\EndP\Tg}% +\HCode{
}|%\DeleteMark +>>> + +\<<< +\HCode{}\HCode{}%\AnchorLabel +>>> + + + +\<<< +\PushMacro\end:itm +>>> + + +\<<< +\PopMacro\end:itm \global\let\end:itm \end:itm +>>> + + + + +\<<< +\HCode{
% +
% + \add:description{added-description}{\a:speak:enumerate}
}% +>>> + + +\<<< +\HCode{
% + \add:description{added-description}{\b:speak:enumerate}
}% +>>> + +\<<< +\HCode{% + \add:description{added-description}{\c:speak:enumerate}}% +>>> + + + +\<<< +\Configure{enumiii} + {\HCode{}% + Roman numeral \HCode{}\the\c@enumiii + \HCode{}\:gobbleII} + {\HCode{}} +\long\def\:tempc{(\theenumii)} +\ifx \labelenumii\:tempc + \def\:tempc{(\HCode{}\theenumii\HCode{})} + \HLet\labelenumii\:tempc +\fi +>>> + + + +\<<< +\NewConfigure{speak:enumerate}{3} +\Configure{speak:enumerate} + {begin \ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi + list} + {end \ifcase\csname @listdepth\endcsname + \or sub \or sub sub \or sub sub sub \else\fi + list} + {|%\ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi|% + item} +>>> + +%%%%%%%%%%%%% +\subsection{Description} +%%%%%%%%%%%%% + + +\<<< +\ConfigureList{description}% + {\EndP|% + \HCode{
}% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
}% + |\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
}|\bgroup \bf} + {\egroup\EndP\HCode{
}} +>>> + + + + + + + +\<<< +\HCode{
% +
% + \add:description{added-description}{\a:speak:description}
}% +>>> + + +\<<< +\HCode{
% + \add:description{added-description}{\b:speak:description}
}% +>>> + +\<<< +\HCode{% + \add:description{added-description}{\c:speak:description}% + }% +>>> + + +\<<< +\NewConfigure{speak:description}{3} +\Configure{speak:description} + {begin \ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi + list} + {end \ifcase\csname @listdepth\endcsname + \or sub \or sub sub \or sub sub sub \else\fi + list} + {|%\ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi|% + item} +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Verbatim} +%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{verbatim} {} {\a:sp} +\def\env:verb#1{\ifinner\else \vfill\break\fi + \IgnorePar\EndP \HAssign\Verb:N=0 + \HCode{\add:description{added-description}{begin verbatim}% +
}\EndNoFonts}
+\def\endenv:verb{\NoFonts
+  \EndP \ht:special{t4ht=
% + \add:description{added-description}{end verbatim}% + }|} +\def\start:fenv#1{\:xhtml{\IgnorePar + \EndP}\HCode{
}} +\def\end:fenv{\IgnorePar\HCode{
}\IgnorePar} +>>> + + +\<<< +\CssSpeech{ pre.verbatim { pitch: |; + pitch-range: 0; + stress: 0; + richness: 8 + }} +>>> + + +h1, h2, h3, +h4, h5, h6 { voice-family: paul, male; stress: 20; richness: 90 } +h1 { pitch: x-low; pitch-range: 90 } +h2 { pitch: x-low; pitch-range: 80 } +h3 { pitch: low; pitch-range: 70 } +h4 { pitch: medium; pitch-range: 60 } +h5 { pitch: medium; pitch-range: 50 } +h6 { pitch: medium; pitch-range: 40 } +li, dt, dd { pitch: medium; richness: 60 } +dt { stress: 80 } +pre, code, tt { pitch: medium; pitch-range: 0; stress: 0; richness: 80 } +em { pitch: medium; pitch-range: 60; stress: 60; richness: 50 } +strong { pitch: medium; pitch-range: 60; stress: 90; richness: 90 } +dfn { pitch: high; pitch-range: 60; stress: 60 } +s, strike { richness: 0 } +i { pitch: medium; pitch-range: 60; stress: 60; richness: 50 } +b { pitch: medium; pitch-range: 60; stress: 90; richness: 90 } +u { richness: 0 } +a:link { voice-family: harry, male } +a:visited { voice-family: betty, female } +a:active { voice-family: betty, female; pitch-range: 80; pitch: x-high } + + + +%%%%%%%%%%%%%%%%%% +\section{Figures} +%%%%%%%%%%%%%%%%%% + + + + + +\<<< +\Configure{float} + {\ifOption{refcaption}{}{\csname par\endcsname\ShowPar \leavevmode}} + {\:xhtml{\IgnorePar\EndP}\HCode{
}} + {\ifvmode \IgnorePar \fi\EndP + \HCode{
}\csname par\endcsname\ShowPar} +\ConfigureEnv{figure} + {\:xhtml{\IgnorePar\EndP}% + \HCode{
|}% + \bgroup \Configure{float}{\ShowPar}{}{}% + } + {\egroup + \:xhtml{\IgnorePar\EndP}\HCode{|
}% + |\par} + {}{} +>>> + +% \<<< +% \CssSpeech{ .caption {pitch: 5; +% pitch-range: 9; +% richness: 5; +% volume: |; +% voice-family: betty +% } } +% >>> +% + +\<<< +\Configure{caption}{\HCode{\if:nopar \else
\fi} + \:xhtml{\IgnorePar\EndP}\HCode{
}% + |} + {: } {|\HCode{% + % + \add:description{added-description}{\a:speak:caption}}} + {\HCode{\add:description{added-description}{\b:speak:caption}% +
}|} +>>> + + +\<<< +
\add:description{begin-end}{\a:speak:figure}
% +>>> + + +\<<< +
\add:description{begin-end}{\b:speak:figure}
% +>>> + +\<<< +\HCode{\add:description{added-description}{\c:speak:caption}}% +>>> + +\<<< +\HCode{}% +>>> + +\<<< +\NewConfigure{speak:caption}{3} +\Configure{speak:caption} + {begin caption} + {end caption} + {caption of} +\NewConfigure{speak:figure}{2} +\Configure{speak:figure} + {begin figure environment} + {end figure environment} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Footnotes} +%%%%%%%%%%%%%%%%%% + + + +\<<< +\Configure{footnote-mark} + {|\HCode{}} + {\HCode{}|} +>>> + + + +\<<< +\HCode{\add:description{added-description}{\a:speak:footnote}}% +>>> + + +\<<< +\HCode{}% +>>> + + +\<<< +\NewConfigure{speak:footnote}{1} +\Configure{speak:footnote} + {footnote} +>>> + + +%%%%%%%%%%%%% +\section{Margin Notes} +%%%%%%%%%%%%% + + + +\<<< +\Configure{marginpar} + {\ifvmode + \IgnorePar\EndP\HCode{
}% + |% + \def\end:margp{\ifvmode \IgnorePar\fi \EndP + |\HCode{
}}% + \par + \else + \SaveEndP + \HCode{}|% + \bgroup + \Configure{HtmlPar} + {
} + {\HCode{
}} + {}{}% + \def\end:margp{\egroup + |\HCode{
}\RecallEndP}% + \fi + } + {\end:margp} +>>> + +\<<< +\CssSpeech{.marginpar {pitch: 7; + pitch-range: 4; + richness: 3; + stress: 2; + volume: 4}} +>>> + +\<<< +\HCode{
+ \add:description{begin-end}{\a:speak:marginpar}
}% +>>> + +\<<< +\HCode{
+ \add:description{begin-end}{\b:speak:marginpar}
}% +>>> + + +\<<< +\HCode{\add:description{begin-end}{\a:speak:marginpar}}% +>>> + +\<<< +\HCode{\add:description{begin-end}{\b:speak:marginpar}}% +>>> + + + +\<<< +\NewConfigure{speak:marginpar}{2} +\Configure{speak:marginpar} + {begin margin note} + {end margin note} +>>> + +%%%%%%%%%%%%%%%%%% +\part{Math} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The equation Environment} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{equation} + {\IgnorePar|\EndP + |% + \HCode{
% + \add:description{begin-math}{\a:speak:equation}% +
}\IgnorePar + |} + {\ifvmode \IgnorePar\fi\EndP + \HCode{
}% + \let\@eqnnum\empty + } + {\HCode{% + \add:description{end-math}{\b:speak:equation}% +
}% + \Tag{eq-\TableNo-num}{\theequation}% + |} +>>> + + + +\<<< +\NewConfigure{speak:equation}{2} +\Configure{speak:equation} + {begin equation + \ifTag{eq-\TableNo-num}{\LikeRef{eq-\TableNo-num}}{}% + } + {end equation \theequation} +>>> + + + +\<<< +\ifvmode\else \HCode{}\fi +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{AmsMath} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +\<<< +\ifx \mathdisplay@@pop\:UnDef + \ifx \emdf@La\:UnDef + | + \else + | + \fi +\else + | +\fi +>>> + + +\<<< +\Configure{equation} + {\ifvmode \IgnorePar\fi\EndP + |% + \HCode{
% + \add:description{begin-math}{\a:speak:equation}% +
}% + |% + |% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{
}% + \let\@eqnnum\empty + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{% + \add:description{end-math}{\b:speak:equation}% +
}% + \Tag{eq-\TableNo-num}{\theequation}% + |% + \ShowPar\IgnoreIndent\par} +>>> + + + +\<<< +\Configure{equation*} + {\ifvmode \IgnorePar\fi\EndP + |% + \HCode{
% + \add:description{begin-math}{\csname + a:speak:equation*\endcsname}}% + |% + |% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{\add:description{end-math}{\csname + b:speak:equation*\endcsname}
}% + |% + \ShowPar\IgnoreIndent\par} +>>> + + +\<<< +\Configure{speak:equation} + {begin equation + \ifTag{eq-\TableNo-num}{\LikeRef{eq-\TableNo-num}}{}% + } + {end equation \theequation} +\NewConfigure{speak:equation*}{2} +\Configure{speak:equation*} + {begin equation} + {end equation} +>>> + + + +\<<< +\Configure{gather} + {\HCode{
}\IgnorePar + |} + {\HCode{
}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{
}\fi } + {} +>>> + + +\<<< +\Configure{gather*} + {\HCode{
}\IgnorePar + |} + {\HCode{
}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{
}\fi } + {} +>>> + + +\<<< +\Configure{$$} + {\Configure{@math}{|% + class="equation"}\IgnorePar\EndP\DviMath} + {\EndDviMath\EndP} + {\DisplayMathtrue}% +>>> + + + + + + + + + + + +\<<< +\Configure{@begin} + {split} + {\let\tagform@=\:gobble } +>>> + + + + + +\<<< +\Configure{split} + {|% + \HCode{
% + \add:vdescription{begin-array}{begin + \ifTag{split-\TableNo}{\LikeRef{split-\TableNo}}{} + sub equations}}} + {\ifvmode\IgnorePar\fi + \Tag{split-\TableNo}{\HRow:s}% + \HCode{\add:vdescription{end-array}{end sub equations}
}% + |% + } + {\HCode{}% + \xdef\HRow:s{\HRow}% + } + {\HCode{
}} + {\HCode{% + \add:vdescription{begin-end}{% + \ifnum \HCol=1 left \else right \fi + | sub equation}}% + } + {\HCode{}} +>>> + + +\<<< +\ConfigureEnv{multline} + {\bgroup |} + {\egroup} + {}{} +\ConfigureEnv{multline*} + {\bgroup |} + {\egroup} + {}{} +>>> + +\<<< +\Configure{multline} + {|% + |% + \HCode{% + |}} + {\Tag{multline-\TableNo}{\hrow:s}% + \HCode{|}% + |% + |} + {\HCode{
% + |}} + {\xdef\hrow:s{\HRow}\HCode{
}} + {\HCode{
}} + {} +\Configure{multline-num} + {\Tag{multline-\TableNo-num}{\theequation}\let\tagform@\:gobble} + {} +>>> + + +\<<< +\Configure{multline*} + {|% + |% + \HCode{% + |}} + {\Tag{multline-\TableNo}{\hrow:s}% + \HCode{|
}% + |% + |} + {\HCode{% + |}} + {\xdef\hrow:s{\HRow}\HCode{}} +\Css{.begin-multline, .end-multline {color:red;}} +>>> + + + +\<<< +\CssSpeech{.begin-multline, .end-multline {stress:3; richness:5;}} +>>> + + +\<<< +\add:vdescription{begin-math}{begin equation + \ifTag{multline-\TableNo-num}{\LikeRef{multline-\TableNo-num}}{} + with + \ifTag{multline-\TableNo}{\LikeRef{multline-\TableNo}}{} + lines}% +
% +>>> + +\<<< +\add:vdescription{begin-math}{begin equation with + \ifTag{multline-\TableNo}{\LikeRef{multline-\TableNo}}{} + lines}% +
% +>>> + + +\<<< +
% +\add:vdescription{end-math}{end equation + \ifTag{multline-\TableNo-num}{\LikeRef{multline-\TableNo-num}}{}% +}% +>>> + +\<<< +
% +\add:vdescription{end-math}{end equation}% +>>> + + +\<<< +\add:vdescription{begin-end}{| line}% +>>> + +\<<< +\HAdvance\HRow by 1 +>>> + + + + +\<<< +\ConfigureEnv{gather} + {\bgroup |} + {\egroup} + {}{} +\ConfigureEnv{gather*} + {\bgroup |} + {\egroup} + {}{} +\Css{.begin-gather, .end-gather {color:red;}} +>>> + + +\<<< +\CssSpeech{.begin-gather, .end-gather {stress:3; richness:5;}} +>>> + + +\<<< +\Configure{gather} + {|% + |% + \HCode{% + \add:vdescription{begin-math}{begin group of + \ifTag{gather-\TableNo}{\LikeRef{gather-\TableNo}}{} + equations}% +
% + }} + {\HCode{
\add:vdescription{end-math}{end equations}% + }% + \Tag{gather-\TableNo}{\hrow:s}% + |% + |} + {\HCode{
% + \add:vdescription{begin-end}{| equation}% + }} + {\xdef\hrow:s{\HRow}\HCode{
}} + {\HCode{\Hnewline
>}% + \ifnum \HCol>1 \let\tagform@\:gobble \fi + } + {\HCode{
}} +>>> + +\<<< +\Configure{gather*} + {|% + |% + \HCode{% + \add:vdescription{begin-math}{begin group of + \ifTag{gather-\TableNo}{\LikeRef{gather-\TableNo}}{} + equations}% +
% + }} + {\HCode{
\add:vdescription{end-math}{end equations}% + }% + \Tag{gather-\TableNo}{\hrow:s}% + |% + |} + {\HCode{
% + \add:vdescription{begin-math}{| equation}% + }} + {\xdef\hrow:s{\HRow}\HCode{
}} + {\HCode{\Hnewline
>}} + {\HCode{
}} +>>> + + + + +\<<< +\Configure{gathered} + {|% + |% + \HCode{% + \add:vdescription{begin-math}{begin group of + \ifTag{gather-\TableNo}{\LikeRef{gather-\TableNo}}{} + equations}% +
% + }} + {\HCode{
\add:vdescription{end-math}{end equations}% + }% + \Tag{gather-\TableNo}{\hrow:s}% + |% + |} + {\HCode{
% + \add:vdescription{begin-end}{| equation}% + }} + {\xdef\hrow:s{\HRow}\HCode{
}} + {\HCode{\Hnewline
>}% + \ifnum \HCol>1 \let\tagform@\:gobble \fi + } + {\HCode{
}} +>>> + + +\<<< +\ifnum \HCol=1 class="col-\HCol" +\else class="content-less" title="col-\HCol" +\fi +>>> + + +\<<< +\ord:pos{\HRow}% +>>> + +\<<< +\ord:pos{\HCol}% +>>> + + +\<<< +\def\ord:pos#1{% + \ifcase #1 + \or first + \or second + \or third + \or fourth + \or fifth + \or sixth + \or seventh + \or eighth + \or nineth + \else #1th + \fi +} +>>> + + +\<<< +\Css{.ord-row {color:red;}} +>>> + +\<<< +\Configure{subarray} + {|% + |% + \HCode{
% + \add:vdescription{begin-array}{\a:speak:subarray}% + }} + {\HCode{\add:vdescription{end-array}{\b:speak:subarray}% +
}% + \Tag{subarray-\TableNo}{\hrow:s}% + |% + |} + {\HCode{
% + \add:vdescription{begin-end}{\c:speak:subarray}% + }} + {\xdef\hrow:s{\HRow}\HCode{
}} +>>> + +\<<< +\NewConfigure{speak:subarray}{3} +| +>>> + +\<<< +\Configure{speak:subarray} + {begin sub array with + \ifTag{subarray-\TableNo}{\LikeRef{subarray-\TableNo}}{} + rows} + {end sub array} + {| row} +>>> + + +\<<< +\Configure{substack} + {\bgroup + \Configure{speak:subarray} + {begin sub stack with + \ifTag{subarray-\TableNo}{\LikeRef{subarray-\TableNo}}{} + entries} + {end sub stack} + {| entry} + } + {\egroup} +>>> + +\<<< +\Configure{smallmatrix} + {|% + |% + \HCode{
}% + \HCode{\add:vdescription{begin-array}{\a:speak:smallmatrix}}} + {\Tag{smallmatrix-\TableNo}{\hrow:s}% + \HCode{|% + \add:vdescription{end-array}{\b:speak:smallmatrix}}% + \ifvmode \IgnorePar\fi \Tg
% + |% + |} + {\HCode{
}\c:speak:smallmatrix}% + {\xdef\hrow:s{\HRow}\HCode{
}}% + {\HCode{
}% + \e:speak:smallmatrix \HCode{
}} + {\HCode{
}\f:speak:smallmatrix + \HCode{
\Hnewline}} +>>> + + +\<<< +\NewConfigure{speak:smallmatrix}{6} +\Configure{speak:smallmatrix} + {begin matrix with + \ifTag{smallmatrix-\TableNo}{\LikeRef{smallmatrix-\TableNo}}{} + rows} + {end matrix} + {|} + {|} + {|} + {|} +>>> + +\<<< +\def\:tempc#1#2{% + \ConfigureEnv{#1} + {\def\end:al:env{}\ifmmode\else + \ifvmode\else \def\end:al:env{\par\ShowPar\IgnoreIndent}\fi\fi} + {\end:al:env } + {}{}% + \Configure{#1} + {\IgnorePar + \ifvmode \EndP \else \EndP \HCode{}\fi + \ifmathml + \Tg\def\end:mathalign{\Tg}% + \else + \DviMath + \def\end:mathalign{\EndDviMath \DisplayMathfalse}% + \DisplayMathtrue + \fi + |% + |% + \HCode{
% + \add:description{begin-array}{\a:speak:align}% + }} + {\HCode{% + \add:description{end-array}{\b:speak:align}% +
}% + \Tag{align-\TableNo}{\hrow:s}% + |% + |\end:mathalign } + {\HCode{
|}} + {\HCode{
}\ifst@rred\else + \Tag{align-\TableNo-\HRow}{\theequation}% + \fi \xdef\hrow:s{\HRow}} + {\HCode{}% + \ifnum \HCol>\maxfields@ \let\tagform@\:gobble \fi + } + {\HCode{}} +} +\:tempc{align}{align} +\:tempc{alignat}{alignat} +\:tempc{xalignat}{xalignat} +\:tempc{xxalignat}{xxalignat} +\:tempc{flalign}{flalign} +\:tempc{align*}{align-star} +\:tempc{alignat*}{alignat-star} +\:tempc{xalignat*}{xalignat-star} +\:tempc{flalign*}{flalign-star} +\Css{.begin-aligned, .end-aligned {color:red;}} +>>> + + +\<<< +\CssSpeech{.begin-aligned, .end-aligned {stress:3; richness:5;}} +>>> + +\<<< +\add:description{begin-end}{\c:speak:align}% +>>> + + +\<<< +\NewConfigure{speak:align}{3} +\Configure{speak:align} + {begin + \ifTag{align-\TableNo}{\LikeRef{align-\TableNo}}{} + aligned equations} + {end aligned equations} + {\ifst@rred | equation + \else + equation number \ifst@rred\else + \ifTag{align-\TableNo-\HRow}{\LikeRef{align-\TableNo-\HRow}}{} + \fi + \fi + } +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Math Delimiters} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Full Expressions} +%%%%%%%%%%%%% + + + + +\<<< +\Configure{DviMath} + {\a:DviMathSpk \mathmltrue + \ifOption{mml-fonts}{}{|%\mml:htfsym|%\NoFonts}% + \IgnoreRule \HCode{}\a:math + |\IgnorePar} + {\EndIgnoreRule + \mathmlfalse \b:DviMathSpk |} +\NewConfigure{DviMathSpk}{2} +>>> + + + +\<<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +\<<< +\sv:ignore +>>> + + + +\<<< +\Configure{math}{} +\Configure{$} + {|\DviMath} + {\EndDviMath}{} +\Configure{$$} + {|\DviMath} + {\EndDviMath + \ShowPar\par{\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue} +>>> + + +\<<< +\Configure{[]} + {|\DviMath $$\DisplayMathtrue } + {$$\EndDviMath} +\Configure{()} + {|\DviMath $} + {$\EndDviMath} +>>> + + +\<<< +\Configure{DviMathSpk} + {\HCode{% + \add:description{begin-math}{\a:speak:math}}} + {\HCode{\add:description{end-math}{\b:speak:math}}}% +>>> + + +\<<< +\Configure{@math}{div}\IgnorePar + |\EndP + \Configure{DviMathSpk} + {\HCode{
% + \add:description{begin-math}{\a:speak:math}}} + {\HCode{\add:description{end-math}{\b:speak:math}
}}% +>>> + + +\<<< +\NewConfigure{speak:math}{2} +\Configure{speak:math} + {begin math} + {end math} +>>> + + +\<<< +\CssSpeech{.inline-math, .display-math + { pitch: 8; pitch-range: 7; stress:7; richness: 7; }} +\CssSpeech{.space {pitch:0; pitch-range:0; richness:0; stress:0;}} +>>> + + +%%%%%%%%%%%%% +\subsection{Left and Right} +%%%%%%%%%%%%% + + + +\<<< +\Configure{left} + {} + {\HCode{% + |}\bgroup} +\Configure{right} + {\egroup} + {\HCode{% + |}} +>>> + +\<<< +\Configure{big} + {}{} + {} + {} +\Configure{Big} + {}{} + {} + {} +\Configure{bigg} + {}{} + {} + {} +\Configure{Bigg} + {}{} + {} + {} +>>> + + + + + + + +\<<< +| +\:CheckOption{mathml-} \if:Option + | +\else + | +\fi +>>> + +\<<< +\Configure{Biggl} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathopen}{*} + {} + {} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Biggr} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathclose}{*} + {} + {} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{Bigl} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathopen}{*} + {} + {} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Bigr} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathclose}{*} + {} + {} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{biggl} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathopen}{*} + {} + {} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{biggr} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathclose}{*} + {} + {} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{bigl} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathopen}{*} + {} + {} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{bigr} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathclose}{*} + {} + {} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +>>> + + + + +\<<< +\Configure{Biggl} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathopen}{*} + {} + {} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Biggr} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathclose}{*} + {} + {} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{Bigl} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathopen}{*} + {} + {} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Bigr} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathclose}{*} + {} + {} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{biggl} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathopen}{*} + {} + {} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{biggr} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathclose}{*} + {} + {} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{bigl} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathopen}{*} + {} + {} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{bigr} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathclose}{*} + {} + {} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +>>> + + + +\<<< +\Configure{Biggm} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathrel}{*} + {} + {} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{Bigm} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathrel}{*} + {} + {} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{biggm} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathrel}{*} + {} + {} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{bigm} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathrel}{*} + {} + {} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +>>> + +\<<< +\Configure{mfenced}{\vert}{||} +\edef\:temp{\noexpand\Configure{mfenced}{\noexpand\{}{\string&\#x007B;}}\:temp +\edef\:temp{\noexpand\Configure{mfenced}{\noexpand\}}{\string&\#x007D;}}\:temp +\edef\:temp{\noexpand + \Configure{mfenced}{\noexpand\lbrace}{\string&\#x007B;}}\:temp +\edef\:temp{\noexpand + \Configure{mfenced}{\noexpand\rbrace}{\string&\#x007D;}}\:temp +>>> + + +%%%%%%%%%%%%% +\subsection{Math Inner} +%%%%%%%%%%%%% + + +\<<< +\def\mathinner#1{\Tg#1\Tg} +>>> + + + +%%%%%%%%%%%%% +\subsection{Tokens} +%%%%%%%%%%%%% + + + +\<<< +\Configure{MathClass}{0}{*}{}% + {}{} +\Configure{MathClass}{1}{*}{ + }{ }{} +\Configure{MathClass}{2}{*}{}{}{} +\Configure{MathClass}{3}{*}{}{}{} +\:CheckOption{mathml-} \if:Option + \Configure{MathClass}{4}{*}{} + {}{} + \Configure{MathClass}{5}{*}{} + {}{} +\else + \Log:Note{for sources failing to produce + clean mathml code, try the command line option `mathml-'}% + \Configure{MathClass}{4}{*}{} + {}{} + \Configure{MathClass}{5}{*}{} + {}{} +\fi +\Configure{MathClass}{6}{*}{}{}{} +\Configure{MathClass}{7}{*}{}{} + {0123456789} +\Configure{FormulaClass}{0}{}{}{} +\Configure{FormulaClass}{1}{}{}{} +\Configure{FormulaClass}{2}{}{}{} +\Configure{FormulaClass}{3}{}{}{} +\Configure{FormulaClass}{4}{}{}{} +\Configure{FormulaClass}{5}{}{}{} +\Configure{FormulaClass}{6}{}{}{} +>>> + + + + + +\<<< +\Configure{qopname} + {\Configure{mathop}{*} + { } + { } + {}} +>>> + + +\<<< +\CssSpeech{ .mo-open, .mo-close{ stress:3; }} +\CssSpeech{ .mo-rel, .mo-bin { stress:4; }} +\CssSpeech{ .mo-op { stress:4; }} +\CssSpeech{ .mo-punc { stress:4; }} +\CssSpeech{ .mo-qopname { stress:4; }} +>>> + + +%%%%%%%%%%%%% +\subsection{Embedded Text} +%%%%%%%%%%%%% + + + +\<<< +\def\AA:text#1{|} +\def\BB:text{|} +>>> + + +\<<< +\mtexttrue +\HCode{ }% + |\PauseMathClass + |% +>>> + + +\<<< +\mtextfalse\EndPauseMathClass|\HCode + {}% +>>> + +\<<< +\Configure{$}% + {\EndPauseMathClass \HCode{}\mtextfalse + |}% + {\HCode{}|\PauseMathClass \mtexttrue}% + {}% +>>> + + + +\<<< +\ht:special{t4ht@,&\#x00A0;}% +>>> +\<<< +\ht:special{t4ht@,}% +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Fonts} +%%%%%%%%%%%%%%%%%% + + + +\<<< +\def\bold:version{bold} +\Configure{mathbf}% + {\bgroup \Tg}% + {\Tg\egroup }% +\Configure{mathit}% + {\bgroup \Tg}% + {\Tg\egroup }% +\Configure{mathrm}% + {\bgroup \Tg}% + {\Tg\egroup }% +\Configure{mathsf}% + {\bgroup \Tg}% + {\Tg\egroup }% +\Configure{mathtt}% + {\bgroup \Tg}% + {\Tg\egroup }% +>>> + + +\<<< +\def\:tempd#1#2{% + \expandafter\def\csname #1\endcsname{\mathchar"13#2\relax}% + \MathSymbol\mathop{#1}% + \expandafter\def\csname #1:limits\endcsname{\expandafter + \:same \math:sym\mathop{#1}\limits}% + \expandafter\def\csname #1:nolimits\endcsname{\expandafter + \:same \math:sym\mathop{#1}\nolimits}% + \expandafter\edef\csname n:#1:\endcsname{\noexpand\ifDisplayMath + \noexpand\expandafter \expandafter\noexpand \csname #1:limits\endcsname + \noexpand\else \noexpand\expandafter + \expandafter\noexpand + \csname #1:nolimits\endcsname\noexpand\fi}% + \expandafter\pend:def\csname n:#1:\endcsname{\ifDisplayMath + \mathop:prefix{mathsize-big}\fi}% +} +\:tempd{bigcap}{54} +\:tempd{bigcup}{53} +\:tempd{bigodot}{4A} +\:tempd{bigoplus}{4C} +\:tempd{bigotimes}{4E} +\:tempd{bigsqcup}{46} +\:tempd{biguplus}{55} +\:tempd{bigvee}{57} +\:tempd{bigwedge}{56} +\:tempd{coprod}{60} +\:tempd{intop}{52} +\:tempd{ointop}{48} +\:tempd{prod}{51} +\:tempd{sum}{50} +>>> + +\<<< +\def\mathop:prefix#1{% + \Configure{mathop}{*}{}{}% + {\Configure{mathop}{*}{}{}{}}} +>>> + +\begin{verbatim} + + + sum + + +\end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\section{Symbols} +%%%%%%%%%%%%%%%%%% + + +\<<< +\def\:tempc{\HCode{}\mathbin{mod} } +\HLet\bmod\:tempc +\def\:tempc#1{ (#1)} +\HLet\pod=\:tempc +\def\:tempc#1{\pod{\mathop{mod} #1}} +\HLet\pmod=\:tempc +\def\:tempc#1{ \mathop{mod} #1} +\HLet\mod=\:tempc +>>> + + + +\<<< +\def\:tempc{\ifDisplayMath\mathop:prefix{big}\fi\o:n:iint::} +\HLet\n:iint:\:tempc +\def\:tempc{\ifDisplayMath\mathop:prefix{big}\fi\o:n:iiint::} +\HLet\n:iiint:\:tempc +\def\:tempc{\ifDisplayMath\mathop:prefix{big}\fi\o:n:idotsint::} +\HLet\n:idotsint:\:tempc +>>> + + +\<<< +\def\:tempc{\mathop{\underrightarrow\lim}\displaylimits} \HLet\varinjlim\:tempc +\def\:tempc{\mathop{\underleftarrow\lim}\displaylimits} \HLet\varprojlim\:tempc +\def\:tempc{\mathop{\overline\lim}\displaylimits} \HLet\varlimsup\:tempc +\def\:tempc{\mathop{\underline\lim}\displaylimits} \HLet\varliminf\:tempc +>>> + + +\<\><<< +\HRestore\varinjlim +\HRestore\varprojlim +\HRestore\varlimsup +\HRestore\varliminf +>>> + + + +\<<< +\Configure{hdotsfor}{\dots} +>>> + + + +\<<< +\def\:tempc{\HCode{\add:description{added-description}{real part + symbol capital }}\o:Re:} +\HLet\Re\:tempc +\def\:tempc{\HCode{\add:description{added-description}{real part + symbol capital }}\o:Im:} +\HLet\Im\:tempc +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Spaces} +%%%%%%%%%%%%%%%%%% + + + + +\<<< +\Configure{quad}{\HCode{|}} +\Configure{qquad}{\HCode{|}} +\Configure{,}{\HCode{|}} +\Configure{ }{\:nbsp} +>>> + + +\<<< +\Configure{hspace}{ }{}{ } +>>> + + +\<<< +\Configure{tmspace} + {\HCode{|}} +>>> + +\<<< +\def\:nbsp{\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x} +>>> + + + +\<<< +\Configure{frenchb-nbsp} + {\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x% + \setbox\tmp:bx=\hbox\bgroup} + {\egroup} +>>> + + + +\<<< + % +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Fractions and Stacks} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Regular Ones} +%%%%%%%%%%%%% + + + +\<<< +\Configure{over} + {\Send{GROUP}{0}{|}|} + {|\Send{EndGROUP}{0}{|}} +\Configure{atop} + {\Send{GROUP}{0}{|}|} + {|\Send{EndGROUP}{0}{|}} +\Configure{above} + {\Send{GROUP}{0}{|}% + |\o:over:\:gobbleII} + {|\Send{EndGROUP}{0}{|}} +>>> + + + +\<<< +\Configure{frac} + {\HCode{|}} + {|\Configure{over}{}{}} + {|} + {\HCode{|}} +>>> + + + +\<<< +\Configure{above} + {\Send{GROUP}{0}{|}% + |\o:@@over:\:gobbleII} + {|\Send{EndGROUP}{0}{|}} +>>> + + +\<<< +\Configure{choose} + {\Send{GROUP}{0}{% + \add:description{begin-stack}{\a:speak:choose}% + }% + \HCode{}\o:atop: + \HCode{\add:description{added-description}% + {\c:speak:choose}}% + \Send{EndGROUP}{0}% + {\add:description{end-stack}{\b:speak:choose}}% + } +>>> + + + +\<<< +\NewConfigure{speak:choose}{3} +\Configure{speak:choose} + {begin binomial coefficient} + {end binomial coefficient} + {choose} +>>> + + +\<<< +\Configure{tbinom} + {\Send{GROUP}{0}{% + \add:description{begin-stack}{\a:speak:choose}% + }% + \HCode{}\o:@@abovewithdelims: ..\z@{}% + \HCode{\add:description{added-description}% + {\c:speak:choose}}% + \Send{EndGROUP}{0}% + {\add:description{end-stack}{\b:speak:choose}}% + } +>>> + +\<<< +\Configure{dbinom} + {\Send{GROUP}{0}{% + \add:description{begin-stack}{\a:speak:choose}% + }% + \HCode{}\o:@@abovewithdelims: ..\z@{}% + \HCode{\add:description{added-description}{\c:speak:choose}}% + \Send{EndGROUP}{0}% + {\add:description{end-stack}{\b:speak:choose}}% + } +>>> + + + + +\<<< +\Configure{binom} + {\Send{GROUP}{0}{% + \add:description{begin-stack}{\a:speak:choose}% + }% + \HCode{}\o:@@abovewithdelims: ..\z@{}% + \HCode{\add:description{added-description}{\c:speak:choose}}% + \Send{EndGROUP}{0}% + {\add:description{end-stack}{\b:speak:choose}}% + } +>>> + +%%%%%%%%%%%%% +\subsection{With Delimiters} +%%%%%%%%%%%%% + + + + + +\<<< +\def\abovewithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|}% + |\o:over: + |\Send{EndGROUP}{0}{|} + \else + \Send{GROUP}{0}% + {|% + |}% + |\o:over: + |\Send{EndGROUP}{0}{|% + |} + \fi + \tmp:dim + } +>>> + + + +\<<< +\def\atopwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|}% + |\o:atop: + |\Send{EndGROUP}{0}{|} + \else + \Send{GROUP}{0}% + {|% + |}% + |\o:atop: + |% + \Send{EndGROUP}{0}{|% + |} + \fi + } +>>> + +\<<< +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|}|\o:over: + |\Send{EndGROUP}{0}{|} + \else + \Send{GROUP}{0}% + {|% + |}% + |\o:over: + |\Send{EndGROUP}{0}{|% + |} + \fi + } +>>> + + + +\<<< +\def\abovewithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|}% + |\o:@@over: + |\Send{EndGROUP}{0}{|} + \else + \Send{GROUP}{0}% + {|% + |}% + |\o:@@over: + |\Send{EndGROUP}{0}{|% + |} + \fi + \tmp:dim + } +>>> + + +\<<< +\def\atopwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|}% + |\o:@@atop: + |\Send{EndGROUP}{0}{|} + \else + \Send{GROUP}{0}% + {|% + |}% + |\o:@@atop: + |\Send{EndGROUP}{0}{|% + |} + \fi + } +>>> + + + +\<<< +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|}% + |\o:over: + |\Send{EndGROUP}{0}{|} + \else + \Send{GROUP}{0}% + {|% + |}% + |\o:@@over: + |\Send{EndGROUP}{0}{|% + |} + \fi + } +>>> + + + +%%%%%%%%%%%%% +\subsection{Code Assignments} +%%%%%%%%%%%%% + + + +\<<< +\add:description{begin-end}{\a:speak:fraction}% +% +>>> + + +\<<< +\HCode{}% +>>> + + + +\<<< +\HCode{\add:description{begin-end}{\c:speak:fraction} + }% +>>> + +\<<< +\add:description{begin-end}{\b:speak:fraction}% +>>> + + +\<<< +% +\add:description{begin-stack}{\a:speak:atop}% +% +>>> + + + + +\<<< +\HCode{}% +>>> + + +\<<< +\HCode{\add:description{added-description}{\c:speak:atop}}% +>>> + + +\<<< +\add:description{end-stack}{\b:speak:atop}% +>>> + + + + +\<<< +|% +>>> + + +\<<< +|% +>>> + + +\<<< +|% +>>> + +\<<< +|% +>>> + + + +\<<< +\expandafter +\ifx \csname \string#1:lr del\endcsname\relax #1\else + \csname \string#1:lr del\endcsname\fi +>>> + +\<<< +\expandafter +\ifx \csname \string#2:lr del\endcsname\relax #2\else + \csname \string#2:lr del\endcsname\fi +>>> + + +\<<< +\expandafter +\ifx \csname \string#3:lr del\endcsname\relax #3\else + \csname \string#3:lr del\endcsname\fi +>>> + + +The following cases in mathml are translated directly +to explicit caharacters and so donn't get there the +speech interpretation provided in unicode.4hf. + +\<<< +\Configure{mfenced}{\vert}{\string&\#x007C;} +\Configure{mfenced}{\{}{\string&\#x007B;} +\Configure{mfenced}{\}}{\string&\#x007D;} +\Configure{mfenced}{\lbrace}{\string&\#x007B;} +\Configure{mfenced}{\rbrace}{\string&\#x007D;} +\Configure{mfenced}{\rgroup}{\string&\#x0028;} +\Configure{mfenced}{\lgroup}{\string&\#x0029;} +\Configure{mfenced}{(}{\string&\#x0028;} +\Configure{mfenced}{)}{\string&\#x0029;} +\Configure{mfenced}{[}{\string&\#x0058;} +\Configure{mfenced}{]}{\string&\#x0059;} +\Configure{mfenced}{||}{\string&\#x007C;} +\Configure{mfenced}{\bracevert}{\string&\#x007C;} +\Configure{mfenced}{\bracevert}{\string&\#x007C;} +>>> + + + + +\<<< +\NewConfigure{speak:fraction}{3} +\Configure{speak:fraction} + {begin fraction} + {end fraction} + {over} +>>> + + +\<<< +\CssSpeech{.mfrac{ + pitch:7; pitch-range: 1; richness: 9; stress:4;}} +>>> + + + + +\<<< +\NewConfigure{speak:atop}{3} +\Configure{speak:atop} + {begin stack} + {end stack} + {over} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Theorems} +%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{newtheorem} + {\ifvmode\IgnorePar\fi\EndP + \HCode{
}\par\noindent + \HCode{}} + {\HCode{}} + {\EndP\IgnorePar\HCode{
}\ShowPar\par} +\Css{span.theorem-head { font-weight:bold; }} +>>> + +\<<< +\Configure{proof} + {\ifvmode\IgnorePar\fi\EndP + \HCode{
}\par\noindent + \HCode{}} + {\HCode{}} + {\EndP\IgnorePar\HCode{
}\ShowPar\par} +>>> + + +\<<< +| +>>> + +\<<< +\ifx \deferred@thm@head\:UnDef\else + | +\fi +>>> + + +\<<< +\Configure{proof} + {\ifvmode \IgnorePar \fi \EndP + \HCode{
}\par\ShowPar + \HCode{}\IgnorePar} + {\HCode{}\ShowPar} + {\ifvmode \IgnorePar \fi \EndP \HCode{
}\par} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Others} +%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{radical} + {\HCode{% + \add:description{begin-root}{\a:speak:radical}}% + \special{t4ht\string~!e<}% + \special{t4ht\string~!e>% + \add:description{end-root}{\b:speak:radical}}% + \special{t4ht\string~!ee/}% + \special{t4ht\string~!ese-}% + } +>>> + +\<<< +\NewConfigure{speak:radical}{2} +\Configure{speak:radical} + {begin root} + {end root} +>>> + + + + + +\<<< +\Configure{root} + {\HCode{% + \add:description{begin-root}{\a:speak:root}}} + {\HCode{\add:description{mid-root}{\b:speak:root}% + }} + {\HCode{\add:description{end-root}{\c:speak:root}}} +>>> + + +\<<< +\NewConfigure{speak:root}{3} +\Configure{speak:root} + {root index} + {begin root} + {end root} +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Boxed} +%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{boxed} + {\HCode{% + \add:description{begin-end}{\a:speak:boxed}}} + {\HCode{\add:description{begin-end}{\b:speak:boxed}}} +>>> + + +\<<< +\NewConfigure{speak:boxed}{2} +\Configure{speak:boxed} + {begin boxed} + {end boxed} +>>> + + +%%%%%%%%%%%%%%%%%% +\chapter{Over and Under} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%% +\section{Subscrips and Superscripts (sub and super)} +%%%%%%%%%%%%% + + + +\<<< +\Configure{SUB} + {\Send{BACK} + {|}|} + {|} +\Configure{SUP} + {\Send{BACK} + {|}|} + {|} +\Configure{SUBSUP} + {\Send{BACK} + {|}|} + {|} + {|} +\def\trap:base{{\HCode{}}} +>>> + + + +\<<< +% +>>> + +\<<< +\HCode{\add:description{begin-script}{\b:speak:subsup}}\trap:base +>>> + +\<<< +\HCode{\add:description{end-script}{\c:speak:subsup}
}% +>>> + + + +\<<< +% +>>> + +\<<< +\HCode{\add:description{begin-script}{\a:speak:subsup}}\trap:base +>>> + +\<<< +\HCode{\add:description{end-script}{\c:speak:subsup}}% +>>> + + + +\<<< +% +>>> + +\<<< +\HCode{\add:description{begin-script}{\a:speak:subsup}}\trap:base +>>> + + +\<<< +\HCode{\add:description{mid-script}{\b:speak:subsup}}\trap:base +>>> + + +\<<< +\HCode{\add:description{end-script}{\c:speak:subsup}}% +>>> + +\<<< +\NewConfigure{speak:subsup}{3} +\Configure{speak:subsup} + {subscript} + {superscript} + {baseline} +>>> + +\<<< +\CssSpeech{.mrow-super{ pitch:9; pitch-range:4; richness:9; stress:9;}} +\CssSpeech{.mrow-base{ pitch:9; pitch-range:4; richness:5; stress:5;}} +\CssSpeech{.mrow-sub{ pitch:9; pitch-range:0; richness:1; stress:1;}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Limits of Sub- snd Super- Scripts (over/under - end - scripts)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{limits}{|} +\def\disp:limits{|} +>>> + + +\<<< +\let|=\:UnDef +\let|=\:UnDef +\ifx \:temp\sp |\else +\ifx \:temp\sb |\fi\fi +|% +>>> + + + +\begin{verbatim} + + + a + + + under script + b + end script + + +\end{verbatim} + +\begin{verbatim} + + + a + + + over script + b + end script + + +\end{verbatim} + +\begin{verbatim} + + + a + + + under script + b + + + over script + c + end scripts + + +\end{verbatim} + + +\<<< +\Css{.begin-limits-script, .end-limits-script, .mid-limits-script {color:green;}} +\Css{.begin-script, .end-script, .mid-script {color:green;}} +>>> + +\<<< +\CssSpeech{.begin-limits-script, + .end-limits-script, .mid-limits-script {stress:3;}} +\CssSpeech{.begin-script, .end-script, .mid-script {stress:3;}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Simultaneously Sub- and Super- Scripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +|% +\Configure{SUBSUP} + {\ifx |\:UnDef\else |\fi + \ifx |\:UnDef\else |\fi + |% + \Send{BACK} + {|}|} + {|} + {|} +>>> + + + + +\<<< +% +>>> + +\<<< +\HCode{\add:description{begin-limits-script}{\a:speak:underover}}\trap:base +>>> + + +\<<< +\HCode{\add:description{mid-limits-script}{\b:speak:underover}}\trap:base +>>> + + +\<<< +\HCode{\add:description{end-limits-script}{\c:speak:underover}}% +>>> + + +\<<< +\NewConfigure{speak:underover}{3} +\Configure{speak:underover} + {under script} + {over script} + {end scripts} +>>> + +\<<< +\let\pl:SUBSUP=\SUBSUP: +>>> + +\<<< +\ifx \pl:SUBSUP\:UnDef \else + \let\SUBSUP:=\pl:SUBSUP +\fi +>>> + +\<<< +\ifx \a:putSUB\:UnDef \else + \pend:def\a:putSUB{\ifx \pl:SUBSUP\:UnDef\else + \let\SUBSUP:=\pl:SUBSUP + \let\pl:SUBSUP=\:UnDef + \fi}% +\fi +\ifx \a:putSUP\:UnDef \else + \pend:def\a:putSUP{\ifx \pl:SUBSUP\:UnDef\else + \let\SUBSUP:=\pl:SUBSUP + \let\pl:SUBSUP=\:UnDef + \fi}% +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Superscripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +|% +\Configure{SUP} + {|\bgroup + |% + |\trap:base} + {}% +>>> + +\<<< +\def\pl:SUP{\Configure{SUP}}% +\expandafter\append:def + \expandafter\pl:SUP\expandafter{\expandafter{\a:SUP}}% +\expandafter\append:def + \expandafter\pl:SUP\expandafter{\expandafter{\b:SUP}}% +>>> + +\<<< +\Configure{SUP} + {|\bgroup + |\trap:base} + {\egroup|}% +>>> + + +\<<< +\Configure{SUP} + {|\bgroup \trap:base} + {\egroup |}% +>>> + + +\<<< +\Send{BACK}{|}% +|% +>>> + + + + + + + + +\<<< +\HCode{\add:description{begin-limits-script}{\b:speak:underover}}\trap:base +>>> + + +\<<< +% +>>> + +\<<< +\HCode{\add:description{end-limits-script}{\c:speak:underover}}\aftergroup|% +>>> + +\<<< +\pl:SUP >>> + +\<<< +\Send{BACK} +{|}|% +>>> + +\<<< +\Send{BACK} +{|}|% +>>> + +\<<< +|% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Subscripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<<< +|% +\Configure{SUB} + {|\bgroup + |% + |\trap:base} + {}% +>>> + +\<<< +\def\pl:SUB{\Configure{SUB}}% +\expandafter\append:def + \expandafter\pl:SUB\expandafter{\expandafter{\a:SUB}}% +\expandafter\append:def + \expandafter\pl:SUB\expandafter{\expandafter{\b:SUB}}% +>>> + +\<<< +\Configure{SUB} + {|\bgroup + |\trap:base} + {\egroup|}% +>>> + + +\<<< +\Configure{SUB} + {|\bgroup \trap:base} + {\egroup |}% +>>> + + +\<<< +\Send{BACK}{|}% +|% +>>> + + + +\<<< +\HCode{\add:description{begin-limits-script}{\a:speak:underover}}\trap:base +>>> + + + + +\<<< +% +>>> + + + +\<<< +\HCode{\add:description{end-limits-script}{\c:speak:underover}}\aftergroup|% +>>> + +\<<< +\pl:SUB >>> + +\<<< +\Send{BACK} +{|}|% +>>> + +\<<< +\Send{BACK} +{|}|% +>>> + +\<<< +|% +>>> + + + + +%%%%%%%%%%%%% +\section{On Arrows (over/under - end - scripts)} +%%%%%%%%%%%%% + + + +\<<< +\renewcommand{\xrightarrow}[2][]{% + \if :#1: + \HCode{|}% + \rightarrow + |#2% + |% + \else + \HCode{|}% + \leftarrow + |#1% + |#2% + |% + \fi +} +\renewcommand{\xleftarrow}[2][]{% + \if :#1: + \HCode{|}% + \leftarrow + |#2% + |% + \else + \HCode{|}% + \leftarrow + |#1% + |#2% + |% + \fi +} +>>> + + + + +%%%%%%%%%%%%% +\section{On Text (over/under - end - scripts)} +%%%%%%%%%%%%% + +\<<< +\def\overset#1#2{{% + \HCode{|}% + #2% + |#1% + |% +}} +\def\underset#1#2{{% + \HCode{|}% + #2% + |#1% + |% +}} +>>> + + + + + + +\<<< +\def\sideset#1#2#3{{\Tg{\HCode{}}#1{\HCode{}#3}#2\Tg}} +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Accents} +%%%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{new-accents} \if:Option \else + | +\fi +>>> + +\<<< +\Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|% + \ht:special{t4ht@[}\if!#1!x\else#2\fi + \ht:special{t4ht@]}}} + {\ifmathml + \ifmtext |% + \else \AccentMath{|}\fi + \else |\fi + } +>>> + +\<<< +\CssSpeech{.accented-char { pitch-range: 4; }} +\CssSpeech{.math-over { pitch-range: 4; }} +\CssSpeech{.mover-accent {pitch-range: 7; richness: 9;}} +>>> + + +\<<< +\leavevmode +\if !#1!\ht:special{t4ht@+&{35}x#2;}% +\else \expandafter \ifx\csname U#2#1\endcsname\relax + \ht:special{t4ht@+&{35}x#2;}% +\else + \ht:special{t4ht@+&{35}x\csname U#2#1\endcsname;}% +\fi \fi x% +>>> + +\<<< +\expandafter\ifx \csname :#1:over\endcsname\relax + \expandafter\ifx \csname :#1:under\endcsname\relax + \AccentMath{|}% + \else #3\csname :#1:under\endcsname \fi +\else #3\csname :#1:over\endcsname \fi +>>> + + +\<<< +\expandafter\ifx \csname :#1:over\endcsname\relax + |% +\else \expandafter\ifx \csname :#1:under\endcsname\relax + |% +\else + |% +\fi \fi +>>> + +\<<< +\HCode{}#3\HCode{}% + \csname :#1:under\endcsname + \HCode{}% +>>> + +\<<< +\HCode{}#3\HCode{}% + \csname prefix:#1:over\endcsname + \csname :#1:over\endcsname + \HCode{}% +>>> + +\<<< +\HCode{}#3\HCode{}% + \csname :#1:under\endcsname + \csname :#1:over\endcsname + \HCode{}% +>>> + +\<<< +\def\:temp#1#2{\expandafter\def\csname prefix:#1:over\endcsname + {\HCode{\add:description{added-description}{ #2 }}}} +\:temp{vec}{\b:speak:underover} +\:temp{dddot}{\b:speak:underover} +\:temp{ddddot}{\b:speak:underover} +>>> + + + + +%%%%%%%%%%%%% +\section{Lines and Braces (With ...)} +%%%%%%%%%%%%% + +\marginpar{See reordeing fix at jslatex} + + + + +\<<< +\Configure{overline} + {\bgroup\ifmathml + \HCode{% + \add:description{begin-end}{\b:speak:modified}% + }% + \else \HCode{}\fi} + {\ifmathml + \HCode{% + \add:description{begin-end}{\a:speak:modified:line}}% + \else \HCode{}\fi\egroup} +\Configure{underline} + {\bgroup + \ifmathml + \HCode{% + \add:description{begin-end}{\a:speak:modified}% + }% + \else |\HCode{}\fi} + {\ifmathml \HCode{% + \add:description{begin-end}{\a:speak:modified:line}}% + \else \HCode{}\fi \egroup} +>>> + +\<<< +\expandafter\everymath +\expandafter{\expandafter\everymath + \expandafter{\the\everymath}}% +\let\o::@underline:\o:@@underline: +\def\o:@@underline:{\let\o:@@underline:\o::@underline:}% +>>> + + + +\<<< +\Configure{overbrace} + {\Configure{mathop*}{*} + {% + \add:description{begin-end}{\b:speak:modified}% + } + {\add:description{begin-end}{\a:speak:modified:brace}} + {\Configure{mathop}{}{}{}{}}% + } + {\let\o:overbrace:=\displaystyle} + {} +\Configure{underbrace} + {\Configure{mathop*}{*} + {% + \add:description{begin-end}{\a:speak:modified}% + } + {\add:description{begin-end}{\a:speak:modified:brace}} + {\Configure{mathop}{}{}{}{}}% + } + {\let\o:underbrace:=\displaystyle} + {} +>>> + + + + + + + +\<<< +\Configure{accent}\widetilde\widetilde{{}{}} + {} + {\HCode{% + \add:description{begin-end}{\b:speak:modified}% + }% + #2% + \HCode{\add:description{begin-end}{\a:speak:modified:tilde}}} +\Configure{accent}\widehat\widehat{{}{}} + {} + {\HCode{% + \add:description{begin-end}{\a:speak:modified}% + }% + #2% + \HCode{\add:description{begin-end}{ + \a:speak:modified:hat}}} |%circumflex|% +>>> + + +\<<< +\NewConfigure{speak:modified}{2} +\Configure{speak:modified} + {modified under} + {modified above} +\NewConfigure{speak:modified:line}{1} +\Configure{speak:modified:line}{with bar} +\NewConfigure{speak:modified:brace}{1} +\Configure{speak:modified:brace}{with brace} +\NewConfigure{speak:modified:hat}{1} +\Configure{speak:modified:hat}{with wide hat} +\NewConfigure{speak:modified:tilde}{1} +\Configure{speak:modified:tilde}{with wide tilde} +>>> + + +%%%%%%%%%%%%% +\section{Arrows (With ...)} +%%%%%%%%%%%%% + + + + +\<<< +\Configure{overrightarrow} + {\HCode{% + \add:description{begin-end}{\b:speak:modified}% + }\:gobble} + {\HCode{% + \add:description{begin-end}{\a:speak:modified:rightarrow}}} +\Configure{overleftarrow} + {\HCode{% + \add:description{begin-end}{\b:speak:modified}% + }\:gobble} + {\HCode{% + \add:description{begin-end}{\a:speak:modified:leftarrow}}} +>>> + +\<<< +\NewConfigure{speak:modified:rightarrow}{1} +\Configure{speak:modified:rightarrow}{with right arrow} +\NewConfigure{speak:modified:leftarrow}{1} +\Configure{speak:modified:leftarrow}{with left right arrow} +\NewConfigure{speak:modified:leftrightarrow}{1} +\Configure{speak:modified:leftrightarrow}{with left right arrow} +>>> + +\<<< +\Configure{underrightarrow} + {\HCode{% + \add:description{begin-end}{\a:speak:modified}% + }\:gobble} + {\HCode{% + \add:description{begin-end}{\a:speak:modified:rightarrow}}} +\Configure{underleftarrow} + {\HCode{% + \add:description{begin-end}{\a:speak:modified}% + }\:gobble} + {\HCode{% + \add:description{begin-end}{speak:modified:leftarrow}}} +>>> + + +\<<< +\Configure{overleftrightarrow} + {\HCode{% + \add:description{begin-end}{\b:speak:modified}% + }\:gobble} + {\HCode{% + \add:description{begin-end}{\a:speak:modified:leftrightarrow}}} +\Configure{underleftrightarrow} + {\HCode{% + \add:description{begin-end}{\a:speak:modified}% + }\:gobble} + {\HCode{% + \add:description{begin-end}{\a:speak:modified:leftrightarrow}}} +>>> + +%%%%%%%%%%%%%%%%%% +\part{Loose Ends} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{halign} +%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{embedded-halign}{}{} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Problems with W3C / Emacspeak} +%%%%%%%%%%%%%%%%%% + +\begin{description} +\item[Don't use Shortcuts of Empty Elements] + + The W3C browser is getting confused by the slash character, and + takes the closing delimiter `\verb'+>+' for a content. So use, for + instance, \verb+

instead of \verb+
+. + +\item [Html-Speech Rate] Resets to default whenever a web page is reset. +The default is defined in +\verb+dtk-speak.el+, line 164 (\verb+~/emacspeak-22.0/lisp/dtk-speak.el+). + +\item [Named Property Values not Recognized] The `loud' and `medium' + properties are not supported for volume. (Wrong type argument: + integerp, medium) + + + + +\<<< +7 +>>> + +\<<< +9 +>>> + + +\<<< +5 +>>> + +See end of \url{http://www.w3.org/TR/CSS21/aural.htm}. We provide +values also for some unsupported attribute, with the expectation that +at some point they'll be supported. + +\item[Delimiters] + + + + In equation 3, the left parenthsis does not get spoken (The parentheses +around the product: ``( product under script j = 1 over script n end +scripts x circumflex subscript j baseline )''. They should be spoken +automatically by emacspeak, but the problem is that the punctuation mode +for HTML is hardcoded to ``some'', which means that not all punctuation +codes will be spoken. Convert ( and ) into ``left +parenthesis'' (or ``enlarged left parenthesis'') and ``right parenthesis'' (or +``enlarged right parenthesis'') + + +\end{description} + + +%%%%%%%%%%%%%%%%%% +\section{Baselines in Tables} +%%%%%%%%%%%%%%%%%% + + +Normalize math tables to facilitate processing, such as +removing `baseline' at end of rows. + +\begin{itemize} +\item +Use begin-array and end-array delimiters, to catch unneeded baseline indicators at end of tables +\item +Use `tr' class names to catch baseline indicators at end of non-final rows +\item +Use \verb+
+ roots, in case math environment is +needed to be explictly mentioned. +\item +A `title="implicit-baseline"' attribute can aslo help. +\end{itemize} + + +\begin{verbatim} +
+ ............... +
+ ... +
+
+
+ ..... + + baseline + +
+
+
+ ... +
+
+
+
+\end{verbatim} + +\begin{verbatim} +\begin{multline} +T=n^{p-2}\prod^p_{i=1} +(n-n_i)^{n_i-1} +\\ +T=n^{p-2}\prod^p_{i=1} +(n-n_i)^{n_i-1} +\end{multline} +\end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\section{Questions} +%%%%%%%%%%%%%%%%%% + + +\begin{itemize} +\item Emacspeak + w3c on a mac? + +\item Emacspeak is being fed by w3c. What it takes to attach +alternative browsaers? + +\end{itemize} + + +%%%%%%%%%%%%%%%%%% +\section{Resources} +%%%%%%%%%%%%%%%%%% + + +\begin{itemize} +\item +\url{http://www.w3.org/TR/CSS21/aural.html} + +\item +MathPlayer on MSIE +(http://www.dessci.com) + +\item +Nemeth's MathSpeak, +\url{http://www.gh-mathspeak.com/} (\url{http://www.ghbraille.com/}), +\url{http://www.rit.edu/~easi/easisem/talkmath.htm}, +\url{http://www.math.virginia.edu/~arm4r/nemeth/nemeth.htm} + + +\item +\url{http://www.livemath.com/} +Theorist Interactive, LLC, of Cambridge, developers of the LiveMath +>> and +>MathEQ +>> computer algebra software line, introduced this tool with the release +>> of MathEQ 4.0 for Windows and Macintosh computers. +>> +>> MathSpeak is a set of special HTML tags that all html-speech-to-text screen +> +>> readers can access on a webpage, and correctly read the expression as +>> spoken html-speech. Although webpage authors can manually create the such +>> tags for their math expressions, the task can be +>cumbersome. +>> MathEQ will automatically create the correct MathSpeak tags when used +>> to create either images or MathML-based math expressions for webpages. + +\item +Lawrence A Chang, +Handbook for spoken mathematics: (Larry's speakeasy), +Lawrence Livermore Laboratory (1983) +\item +Parkin, A.J. and Aldrich, F.K. (1987), How can studying from tape be made easier? New Beacon, LXXI, 341, 847342. Tape Recording Manual (3rd Edition) (1979), The National Braille Association, Inc. (Copies available on request from: National Library Service for the Blind and Physically Handicapped, Library of Congress, Washington, DC 20542.) + + +\item +\url{http://www.mathspeak.org/} + +\item +\url{http://www.w3.org/2000/08/nba-manual/Overview.html} + +\item +Richard Fateman, +How can we speak math?, +\url {http://dlp.cs.berkeley.edu/~fateman/papers/speakmath.pdf} + +\item +Dave Raggett and +Davy Batsalle, +Add Math to Web pages with HP EzMath v1.1, +25th Ocober 1998 +\url{http://www.w3.org/People/Raggett/EzMath/} + +\item +T. V. Raman, Audio System for Technical Readings, +\url{http://emacspeak.sourceforge.net/raman/publications/web-aster/root-thesis.html.html} +(section 4.3) +Demo: \url{http://emacspeak.sourceforge.net/raman/aster/aster-toplevel.html} +\item +DotsPlus megaDots + +That said, I have developed a computer program which translates math +entered into Megadots into files in which the math symbols have been +translated into words. These can be read by any browser. The advantage is +that a computer is considerably more patient than a human. + + +The MegaDots technology now belongs to Duxbury. I have a special +arrangement to use MegaDots here at CHPI, so I can use the program here, +but I can't release it. In addition, it works only with MegaDots files. +\end{itemize} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + + + + + + +\<<< +\Configure{equation*} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<\tbl:XV{equation-star 3}>}\IgnorePar + } + {\end:TTT\ifmmode\else |\fi} +>>> + + + + + + + + +\<<< +\def\AccentMath#1{\relax\ifmmode #1\else $#1$\fi} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Constructs} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The equation Environment} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\let\A:equation|=\a:equation +\let\B:equation|=\b:equation +\let\C:equation|=\c:equation +\Configure{equation} + {\A:equation|} + {\B:equation}{\C:equation} +>>> + + + + + +\<<< +display="block" +>>> + + +\<<< +display="inline" +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{MathML} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%% +\section{?????} +%%%%%%%%%%%%%%%%% + +\Link[http://lists.w3.org/Archives/Public/www-math/]{}{}mailing list\EndLink + + +\<<< +\ifx \a:mathml\:UnDef + \NewConfigure{mathml}{1} + \Configure{mathml}{} +\fi +\defclass{class} +>>> + + +\<<< +| +| +>>> + + +\<\><<< +\def\mml:prefix#1{% + \Configure{mathop}{*}{}{}% + {\Configure{mathop}{*}{}{}{}}} +\def\mml:prefix#1{} +\def\limit:csname{|%form="prefix" |%class="csname-limit"} +\def\nolimit:csname{|%form="prefix" |%class="csname-nolimit"} +>>> + + +\<<< +\def\:tempb#1{% + \def\:tempc##11->##2///{\if :##2:% + \pend:def#1{\mml:prefix \nolimit:csname}\fi}% + \expandafter\:tempc\meaning#11->///% +} +\:tempb\arccos +\:tempb\arcsin +\:tempb\arctan +\:tempb\arg +\:tempb\cosh +\:tempb\cos +\:tempb\coth +\:tempb\cot +\:tempb\csc +\:tempb\deg +\:tempb\dim +\:tempb\exp +\:tempb\hom +\:tempb\ker +\:tempb\lg +\:tempb\ln +\:tempb\log +\:tempb\sec +\:tempb\sinh +\:tempb\sin +\:tempb\tanh +\:tempb\tan +| +>>> + +\<<< +\def\:tempb#1{% + \def\:tempc##11->##2///{\if :##2:% + \pend:def#1{\mml:prefix \limit:csname}\fi}% + \expandafter\:tempc\meaning#11->///% +} +\:tempb\Pr +\:tempb\det +\:tempb\gcd +\:tempb\inf +\:tempb\lim +\:tempb\max +\:tempb\min +\:tempb\sup +>>> + +\<<< +\def\:tempc{\mml:prefix\limit:csname \mathop{\operator@font lim inf}} +\HLet\liminf\:tempc +\def\:tempc{\mml:prefix\limit:csname \mathop{\operator@font lim sup}} +\HLet\limsup\:tempc +>>> + + +\<<< +\let\A:displaylines|=\a:displaylines +\let\B:displaylines|=\b:displaylines +\let\C:displaylines|=\c:displaylines +\let\D:displaylines|=\d:displaylines +\Configure{displaylines} + {\ifmmode + \def\A:displaylines{\HCode{}}% + \def\B:displaylines{\HCode{}}% + \def\C:displaylines{\HCode{}}% + \def\D:displaylines{\HCode{}}% + \fi + \A:displaylines} + {\B:displaylines} {\C:displaylines}{\D:displaylines} +>>> + + + +\<<< +\def\m:env#1{\HCode{}% + \def\endm:env{\HCode + {}}} +>>> + + + + + + +\<<< +| +| + +>>> + + + + + + + + + + +\<<< +\Configure{htf}{0}{+}{}{}% +\Configure{htf}{1}{+}{}% +\Configure{htf}{3}{+}{}% +\Configure{htf}{4}{+}{}{}% +\Configure{htf}{6}{+}{}{}% +\Configure{htf}{8}{+} + {}{}{}{}{}{}{}% +\Configure{htf}{10}{+} + {}{}{}{}{}{}{}% +\Configure{htf}{12}{+} + {}{}{}{}{}{}{}% +>>> + +\<<< +\Configure{htf}{0}{+}{}{}{}{}{}{}{}% +\Configure{htf}{1}{+}{}{}{}{}{}{}{}% +\Configure{htf}{3}{+}{}{}{}{}{}{}{}% +\Configure{htf}{4}{+}{}{}{}{}{}{}{}% +\Configure{htf}{6}{+}{}{}{}{}{}{}{}% +\Configure{htf}{8}{+}{}{}{}{}{}{}{}% +\Configure{htf}{10}{+}{}{}{}{}{}{}{}% +\Configure{htf}{12}{+}{}{}{}{}{}{}{}% +>>> + + + + + +\<<< +\def\mml:htfsym{\Configure + {htf}{254}{+}{}} +\def\ext:htfsym{\Configure{htf}{254}{+}{}{}{}{}{}{}{}} +>>> + + +\<<< +\append:def\mml:htfsym{|} +\append:def\ext:htfsym{|} +>>> + + +We reserve code 254 (and 255) for unknown symbols. + + +\<<< + + +| +>>> + +\<<< +| +>>> + +\<<< +| +| +>>> + +\<<< +| +| + +>>> + +\<<< +\Configure{intertext} + {\IgnorePar \ifinalign@ + \HCode{\ifnum \HRow>0 \fi + }% + \else \ifingather@ + \HCode{}% + \fi\fi + \AA:text{intertext}% + } + {\BB:text \ifvmode \IgnorePar \fi \EndP\ifinalign@ + \HCode{% + \ifnum \HRow>0 \fi}% + \else \ifingather@ + \HCode{}% + \fi\fi + } +>>> + + + +\<<< +\Configure{maketag} + {\ifmathml + \ifmtext \expandafter\expandafter\expandafter\no:maketag\fi + \else \expandafter\no:maketag\fi + \AA:text{maketag}\hbox\bgroup\:gobbleIII :@:} + {\egroup\BB:text } +\def\no:maketag#1:@:#2\b:maketag{\hbox{#2}} +>>> + + +\<<< +\Configure{text}{\AA:text{text}}{\BB:text} +>>> + + +\<<< +\def\:tempc{\DOTSI\protect\:idotsint} +\HLet\idotsint|=\:tempc +\def\:idotsint{% + \mathop{\intop\cdotp\cdotp\cdotp\intop }\ilimits@ +} +>>> + +\<<< +| +>>> + +\<<< +% amstex.sty +| +| +| + >>> + +\<<< +% amstex.tex +| +| +>>> + + \<<< + | + >>> + + + + + +\<<< +\Configure{romannumeral} + {\ifmathml\ifmtext\else \HCode{}\fi\fi} + {\ifmathml\ifmtext\else \HCode{}\fi\fi} +>>> + +\<<< +\Configure{romannumeral} + {\ifmtext\else + \HCode{<\ifmathml mrow \else span \fi class="romannumeral">}\fi + } + {\ifmtext\else \HCode{}\fi } +>>> + + + + +\<<< +\:CheckOption{new-accents} \if:Option \else + \ifx \mathml:on\:UnDef + \Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|% + \ht:special{t4ht@[}\if!#1!x\else#2\fi\ht:special{t4ht@]}}} + {\ifmmode + \Tg\mathord{#3}\Tg% + \else \HCode{}#3\HCode{}% + \fi + }% + \fi +\fi +>>> + + + + \<<< +\:CheckOption{new-accents} \if:Option \else + \ifx \mathml:on\:UnDef + \Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|% + \ht:special{t4ht@[}\if!#1!x\else#2\fi\ht:special{t4ht@]}}} + {\Tg\mathord{#3}\Tg% + }% + \fi +\fi +>>> + + + + + + + +The special replaces the `x' character. + + +\<<< +\Configure{PROLOG}{VERSION,DOCTYPE,*XML-STYLESHEET} +\:CheckOption{no-DOCTYPE} \if:Option + \Configure{PROLOG}{VERSION,*XML-STYLESHEET} +\fi +>>> + +% \Configure{VERSION} +% {\HCode{\Hnewline}} + + +\<<< +\def\mathml:DOCTYPE{|} +\def\:temp{xhtml} +\ifx \:DTD\:temp + | +\fi +>>> + + +\<<< +\Configure{DOCTYPE}{\HCode + {% + >\Hnewline +}} +>>> + +\<<< +PUBLIC + "-//W3C//DTD XHTML 1.1 plus MathML 2.0//|"\Hnewline + "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"\Hnewline + [\Hnewline + \Hnewline + ]>>> + + +\<<< +PUBLIC + "-//W3C//DTD XHTML 1.1 plus MathML 2.0//|"\Hnewline + "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd" +>>> + +DTD to be used. + +\begin{description} + +\item [http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd] + +Declares a FPI (Formal Public Identifier) +``-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN'' for XHTML+MathML. The DTD is broken +sine it contains a processing instruction +\verb!! with a colon in the name. XML +parsers don't allow it when namespaces are enabled. It carries +revision id `xhtml-1,v 1.1 2000/10/31 19:52:09 davidc Exp'. + +\item[http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd] + +Suggested by the MathML +specification + http://www.w3.org/TR/2003/REC-MathML2-20031021/appendixa.html. However, the +DTD incorporates also SVG. It shows revision id +`xhtml-math11-f.dtd,v 1.16 2003/11/04 13:14:35 davidc Exp' + +\item [others] + +See SVG specifications +\end{description} + +The DTD +a "-//W3C//DTD XHTML 1.1 plus MathML +2.0//EN" is claimed: + + + + + +\<<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi +>>> + + +\<<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + +\<<< +\let\mml:TeX|=\TeX +\def\TeX{\ifmathml + \HCode{TeX}\else \mml:TeX\fi} +>>> + + +\subsection{TeX Engine} + + +The \verb'\trap:base' is to catch empty bases of exponents like, e.g., +in \verb'$a^{^b}$'. + + + + + + + +\<<< +\newif\ifmathml \mathmlfalse +\newif\ifmtext \mtextfalse +| +\NewConfigure{math}{1} +\NewConfigure{@math}{1} +\def\IgnoreRule{\ht:special{t4ht@\string_}} +\def\EndIgnoreRule{\ht:special{t4ht@\string_\string_}} +\Configure{$$} + {\Configure{@math}{|}\IgnorePar + |\EndP\DviMath} + {\EndDviMath\ShowPar\par{\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue} +\Configure{$} + {\Configure{@math}{|}\DviMath} + {\EndDviMath}{} +\newif\ifDisplayMath \DisplayMathfalse +>>> + + +The \verb+\sqrt+ fanction produces a structure of the following form. + +\begin{verbatim} +PUSH + PUSH + ......sqrt et al symbols, possibly with PUSH-POP...... + POP + PUSH + W3: 655361 + DOWN3: -1020474 + PUT_RULE: height: 26213 + length: 1091179 + DOWN3: 1020474 + PUSH + .....body......... + POP + POP +POP +\end{verbatim} + + + +The following fails when the root symbol is made up +from multiple characters. + +\begin{verbatim} +\Configure{radical}{\Tg% + \Send{EndGROUP}{2}{}% + \Send{GROUP}{3}{}% + \Send{EndGROUP}{3}% + {\tg\tg}\special{t4ht@+}} +\end{verbatim} + + + + + +\<<< +\def\MathRow#1{% + \Configure{\expandafter\:gobble\string#1*}{*}% + {}{}% + {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}% +>>> + + + +The \verb'\MathRow' requests a \verb'...', instead of the contributions +of \verb'\mathop', \verb'\mathrel',...., for the next parameter. + + +\<<< +\def\:MT{\ifmathml m\fi} +\Configure{halignTB}{\HCode{<\:MT table }\halignTBL}{\HCode{>}} +\Configure{halignTBL} + {t}{\ifmathml \HCode{ align="top" }\fi} + {b}{\ifmathml \HCode{ align="baseline" }\fi} + {c}{\ifmathml \HCode{ align="axis" }\fi} + {} +\def\t:HA{\HCode{}} +\def\R:HA{\HCode{<\:MT tr \Hnewline valign="baseline">}} +\def\r:HA{\HCode{}} +\def\D:HA{\HCode{<\:MT td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline>}} +\def\d:HA{\HCode{}} +>>> + + +\subsection{latex.ltx} + + +MathML: +\begin{verbatim} +Authors wishing to encode whitespace characters at the start +or end of the content of a token, or in sequences other than a single +space, without having them ignored, must use   or other +`whitespace' non-marking entities as described in Section 6.2.4 +[Non-Marking Characters]. +\end{verbatim} + + + +\<<< +\Configure{newline} + {\ifmtext |\HCode{< + mtext class="newline">}% + |% + \else \Tg\fi} +>>> + +\<<< +\Configure{newline} + {|\HCode{}|} +>>> + + + +\<<< +\NewConfigure{mathml[]}{2} +\NewConfigure{mathml()}{2} +>>> + +\<<< +\Configure{mathml[]} + {\edef\MathPar{\ifvmode par-\fi}\IgnorePar\endgraf\EndP + \HCode{
}} + {\HCode{
}|} +\Css{div.math-display, div.par-math-display{text-align:center;}} +>>> + + + + +\<<< +\Configure{[]} + {\Configure{@math}{|}\csname a:mathml[]\endcsname + \DviMath\Tg$$\DisplayMathtrue } + {$$\Tg\EndDviMath\csname b:mathml[]\endcsname + \if@rl\else\beginR\fi } +>>> + + + + + + +\<<< +| +\let\A:fbox=\a:fbox +\let\B:fbox=\b:fbox +\let\OLDf:box=\fbox +\def\fbox{\relax\ifmmode + \Configure{fbox}{\leavevmode\Configure{HtmlPar}{}{}{}{}\IgnoreRule + \AA:text{fbox}}{\BB:text\EndIgnoreRule}\else + \Configure{fbox}{\leavevmode + \IgnoreRule\A:fbox}{\B:fbox\EndIgnoreRule}\fi + \OLDf:box} +\let\A:mbox|=\a:mbox +\let\B:mbox|=\b:mbox +\let\OLD:mbox|=\mbox +\def\mbox{\relax\ifmmode \Configure{mbox}{\AA:text{mbox}}{\BB:text}\else + \Configure{mbox}{\A:mbox}{\B:mbox}\fi\OLD:mbox} +| +>>> + + + + + +\begin{verbatim} +\documentclass{article} +\begin{document} +$ \mbox{is right-continuous at } -r $ +\end{document} + +I see the problematic space between + + is right-continuous at + +and + + -r + +but I don't understand it. The mathml code currently has there + + is right-continuous at + r + +Replacing mrow with mstyle doesn't make a difference. Removing +the mrow solves the problem of the extra space. + +I introduced the above changes to the mathml and mozilla-mathml +configurations, respectively. +\end{verbatim} + + + + + +\<<< +| +\Configure{text}{\AA:text{text}}{\BB:text} +\Configure{format} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{
}} + {\HCode{}} + {\HCode{}} +>>> + +\<<< +\Configure{frac} + {\Tg\Tg} + {\Tg\Configure{over}{}{}} + {\Tg} + {\Tg\Tg} +>>> + + + +\<<< +\ifx \mathdisplay@@pop\:UnDef + \ifx \emdf@La\:UnDef + | + \else + | + \fi +\else + | +\fi +>>> + + +% \Configure{quad}{{\ifmathml \ifmtext \o:quad:\else +% \fi\else \o:quad: \fi}} +% + + + + + +\<<< +\ShowPar\par{\HCondtrue\noindent}% +>>> + + +% \Configure{math}{} + +\<<< +\Configure{texttt} + {\ifmathml \Configure{@mtext}{class="texttt" + mathvariant="monospace" }\fi} + {}% +\Configure{textit} + {\ifmathml \Configure{@mtext}{class="textit" + mathvariant="italic" }\fi} + {}% +\Configure{textrm} + {\ifmathml \Configure{@mtext}{class="textrm" + mathvariant="normal" }\fi} + {}% +\Configure{textup} + {\ifmathml \Configure{@mtext}{class="textup" + mathvariant="normal" }\fi} + {}% +\Configure{textsl} + {\ifmathml \Configure{@mtext}{class="textsl" + mathvariant="italic" }\fi} + {}% +\Configure{textsf} + {\ifmathml \Configure{@mtext}{class="textsf" + mathvariant="sans-serif" }\fi} + {}% +\Configure{textbf} + {\ifmathml \Configure{@mtext}{class="textbf" + mathvariant="bold" }\fi} + {}% +\Configure{textsc} + {\ifmathml \Configure{@mtext}{class="textsc" + mathvariant="normal" }\fi} + {}% +\Configure{emph} + {\ifmathml \Configure{@mtext}{class="emph" + mathvariant="italic" }\fi} + {}% +>>> + + + + +\<<< +\:CheckOption{fonts} \if:Option +\Configure{texttt} + {\ifmathml \Configure{@mtext}{class="texttt" mathvariant="monospace" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} + \Configure{textit} + {\ifmathml \Configure{@mtext}{class="textit" mathvariant="italic" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} + \Configure{textrm} + {\ifmathml \Configure{@mtext}{ class="textrm" mathvariant="normal" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} + \Configure{textup} + {\ifmathml \Configure{@mtext}{ class="textup" mathvariant="normal" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} + \Configure{textsl} + {\ifmathml \Configure{@mtext}{ class="textst" mathvariant="italic" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} + \Configure{textsf} + {\ifmathml \Configure{@mtext}{ class="textsf" mathvariant="sans-serif" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} + \Configure{textbf} + {\ifmathml \Configure{@mtext}{ class="textbf" mathvariant="bold" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} + \Configure{textsc} + {\ifmathml \Configure{@mtext}{ class="textsc" mathvariant="normal" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} + \Configure{emph} + {\ifmathml \Configure{@mtext}{ class="emph" mathvariant="italic" }% + \else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} +\fi +>>> + +The \verb+\bgroup...\egroup+ is to handle cases like +\verb+\nathbf{a}^x+. + + +\<<< +\Configure{mathbb}{}{} +\Configure{mathfrak}{}{} +>>> + + + +Used to be + +\begin{verbatim} + \Configure{mathrm}{\Tg\PauseMathClass}% + {\EndPauseMathClass\Tg}% + \Configure{mathbf}{\Tg\PauseMathClass}% + {\EndPauseMathClass\Tg}% +\end{verbatim} + + +\<<< +\Css{math .texttt { font-family: monospace; }} +\Css{math .textit { font-style: italic; }} +\Css{math .textsl { font-style: oblique; }} +\Css{math .textsf { font-family: sans-serif; }} +\Css{math .textbf { font-weight: bold; }} +>>> + + + + + +\<<< +\Configure{afterSUB}{'}{\def\SUB:prime{\SUB:SUP}} +\Configure{'} + {\let\:primes=\empty} + {\relax \csname SUB:prime\endcsname\sp{% + \global\let\SUB:prime=\:UnDef + \def\:tempa{\prime\prime}\ifx \:tempa\:primes + \mathop{\HCode{\string&\#x2033;}}\else + \def\:tempa{\prime\prime\prime}\ifx \:tempa\:primes + \mathop{\HCode{\string&\#x2034;}}\else + \:primes \fi\fi}% + } + {\let\prime=\relax \xdef\:primes{\:primes\prime}} +>>> + +LaTeX places the primes within superscript, and mathml seems to follow +suit (maybe because of the use of latex fonts in mozilla). However, +unicode maps already seem to assume raised representation for the +primes. + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{plain.sty} +%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<<< + \Configure{eqalign} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\IgnorePar\HCode{}} + {\HCode{\ifnum \HCol=3 \fi + }} + {\HCode{}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Palin + LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The default \verb'\left' and \verb'\right' in their default definition +with tex produce multi-part delimiters, from cmex, on large +subformulas. Hence, the `'.' below is needed. + +\<<< +\def\:temp#1{\a:left{#1}\o:left:.\b:left{#1}} \HLet\left|=\:temp +\def\:temp#1{\a:right{#1}\o:right:.\b:right{#1}}\HLet\right|=\:temp +\Configure{left} + {} + {\HCode{}\bgroup} +\Configure{right} + {\egroup\Send{GROUP}{0}{ close="|"\space}\egroup} + {\HCode{}} +\def\def:DEL#1{\def\:DEL{#1}} +\def\check:DEL#1#2{\def\:tempa{#1}\ifx \:tempa\:DEL \def\:DEL{#2}\fi} +\NewConfigure{mfenced}[2]{\append:defI\def:DEL{\check:DEL{#1}{#2}}} + + +>>> + + +\<<< +\def\:tempc#1{\a:middle\mathrel{\left:right#1\:EMPTY}\b:middle} +\HLet\middle=\:tempc +\NewConfigure{middle}{2} +\Configure{middle} + {\bgroup + \Configure{mathrel}{*} + {} + {} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +>>> + + + + + +\<<< +\NewConfigure{mfenced}[2]{\expandafter + \def\csname \string#1:lr del\endcsname{#2}} +| +>>> + +\<<< +\Configure{mfenced}{\lvert}{\string&\#x007C;} |%vertical line|% +\Configure{mfenced}{\rvert}{\string&\#x007C;} |%double vertical line|% +\Configure{mfenced}{\lVert}{\string&\#x2016;} +\Configure{mfenced}{\rVert}{\string&\#x2016;} +>>> + +\<<< +\Configure{mfenced}{\lvert}{\string&\#x007C;} +\Configure{mfenced}{\rvert}{\string&\#x007C;} +\Configure{mfenced}{\lVert}{\string&\#x2016;} +\Configure{mfenced}{\rVert}{\string&\#x2016;} +>>> + + + + + + +\<<< +\Configure{mfenced}{\||}{\string&\#x2225;} +\Configure{mfenced}{.}{} +\Configure{mfenced}{\langle}{\string&\#x27E8;} |%lang|% +\Configure{mfenced}{\rangle}{\string&\#x27E9;} |%rang|% +\Configure{mfenced}{<}{\string&\#x003C;} |%lt|% +\Configure{mfenced}{>}{\string&\#x003E;} |%gt|% +\Configure{mfenced}{\lceil}{\string&\#x2308;} +\Configure{mfenced}{\rceil}{\string&\#x2309;} +\Configure{mfenced}{\lfloor}{\string&\#x230A;} +\Configure{mfenced}{\rfloor}{\string&\#x230B;} +\Configure{mfenced}{\Vert}{\string&\#x2016;} +\Configure{mfenced}{\vert}{\string&\#x007C;} +\Configure{mfenced}{\rgroup}{)} +\Configure{mfenced}{\lgroup}{(} +\Configure{mfenced}{\bracevert}{||} +\Configure{mfenced}{\bracevert}{||} +\Configure{mfenced}{\downarrow}{\string&\#x2193;} +\Configure{mfenced}{\uparrow}{\string&\#x2191;} +\Configure{mfenced}{\Uparrow}{\string&\#x21D1;} +\Configure{mfenced}{\updownarrow}{\string&\#x2195;} +\Configure{mfenced}{\Updownarrow}{\string&\#x21D5;} +\Configure{mfenced}{\Downarrow}{\string&\#x21D3;} +\Configure{mfenced}{\backslash}{\string&\#x2216;} +\Configure{mfenced}{\rmoustache}{\string&\#x25DD;} +\Configure{mfenced}{\lmoustache}{\string&\#x25DC;} +\Configure{mfenced}{\Arrowvert}{\string&\#x2225;} +\Configure{mfenced}{\arrowvert}{\string&\#x2223;} +>>> + +% \def\:tempa{\{}\ifx \:tempa\:DEL \let\:DEL\lbrc: \else +% \def\:tempa{\}}\ifx \:tempa\:DEL \let\:DEL\rbrc: \else +% \def\:tempa{<}\ifx \:tempa\:DEL \def\:DEL{\string<}\else +% \def\:tempa{>}\ifx \:tempa\:DEL \def\:DEL{\string>}% +% \fi\fi\fi\fi } +% \edef\lbrc:{\string{} \edef\rbrc:{\string}} + +% \HCode{\string#1;}% + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Amsmath} +%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Css{mtd.align-odd{margin-left:2em; text-align:right;}} +\Css{mtd.align-even{margin-right:2em; text-align:left;}} +>>> + + + + + +Setting \verb+#1+ below within mrow is problematic in the sense that +arrows don't stretch over multi-characters content \verb+#2+. +A \verb+accent="true"+ move the arrow lower, but also distribute the +characters further apart. + +\<<< +\Tg% +\Tg#2\Tg% +#1% +\Tg% +>>> + +\<<< +\Tg% +\Tg{#2#3}\Tg% +#1% +\Tg% +>>> + + + + +% \Tg#1\Tg% +% \Tg#1\Tg% + + +\<<< +\Configure{underarrow@} + {\Tg\Tg} + {\Tg\Tg} + {\Tg\Tg} +\Configure{overarrow@} + {\Tg\Tg} + {\Tg\Tg} + {\Tg\Tg} +\def\:tempc#1#2#3{\a:overarrow@ + \hbox{$\m@th#2#3$}\b:overarrow@ + \hbox{#1#2}\c:overarrow@ + } +\HLet\overarrow@\:tempc +>>> + + + + + +\<<< +\ifx \o:overrightarrow:\:UnDef\else + \HRestore\overrightarrow + \HRestore\overleftarrow + \HRestore\overleftrightarrow +\fi +>>> + + + +\<<< +\HRestore\overrightarrow +\HRestore\overleftarrow +\HRestore\overleftrightarrow +>>> + +\<<< +\HRestore\overrightarrow +\HRestore\overleftarrow +\HRestore\overleftrightarrow +>>> + +% \HRestore\underrightarrow +% \HRestore\underleftarrow +% \HRestore\underleftrightarrow + + + + +\<\><<< +\def\:tempc{\mathpalette{\overarrow@\rightarrow}} +\HLet\overrightarrow=\:tempc +\def\:tempc{\mathpalette{\overarrow@\leftarrow}} +\HLet\overleftarrow=\:tempc +\def\:tempc{\mathpalette{\overarrow@\leftrightarrow}} +\HLet\overleftrightarrow=\:tempc + +\def\:tempc{\mathpalette{\underarrow@\rightarrow}} +\HLet\underrightarrow=\:tempc +\def\:tempc{\mathpalette{\underarrow@\leftarrow}} +\HLet\underleftarrow=\:tempc +\def\:tempc{\mathpalette{\underarrow@\leftrightarrow}} +\HLet\underleftrightarrow=\:tempc +>>> + + +Replace with +\Link[http://www.unicode.org/charts/PDF/U27F0.pdf]{}{}stretching +arrows\EndLink{} once they work. It was \verb+\rightarrow+ (U-2192) +before going to \verb+\HCode{&\#x20D7;}+. +(... suggested +to replace it with +the diacritical one: \verb+⃗+. I t solves two problems. The arrow is +lower and the the spacing between a subscript and a vector is +reduced.) + + +\<\><<< +\def\underarrow:#1#2#3{|} +\def\overarrow:#1#2#3{|} +\def\:tempc{\mathpalette{\overarrow:\rightarrow}} +\HLet\overrightarrow=\:tempc +\def\:tempc{\mathpalette{\overarrow:\leftarrow}} +\HLet\overleftarrow=\:tempc +\def\:tempc{\mathpalette{\overarrow:\leftrightarrow}} +\HLet\overleftrightarrow=\:tempc +>>> + +\<\><<< +\def\:tempc{\mathpalette{\underarrow:\rightarrow}} +\HLet\underrightarrow=\:tempc +\def\:tempc{\mathpalette{\underarrow:\leftarrow}} +\HLet\underleftarrow=\:tempc +\def\:tempc{\mathpalette{\underarrow:\leftrightarrow}} +\HLet\underleftrightarrow=\:tempc +>>> + + + +\<<< +| + + +\renewcommand{\hdotsfor}[1]{% + \ifx[#1\@xp\shdots@for\else\hdots@for\@ne{#1}\fi} +\def\shdots@for#1]{\hdots@for{#1}} +\def\hdots@for#1#2{\multicolumn{#2}c% + {\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@ + \xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace@$}% + \hfill + \mkern-#1\dotsspace@}% + } +\ConfigureEnv{eqxample}{}{}{}{} +\ConfigureEnv{gather*}{}{}{}{} +\ConfigureEnv{gathered}{}{}{}{} +\ConfigureEnv{matrix}{}{}{}{} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{amsopn} +%%%%%%%%%%%%%%%%%%%% + + +\<<< +\def\varinjlim{{\underrightarrow\lim}} +\def\varprojlim{{\underleftarrow\lim}} +\def\varlimsup{{\overline\lim}} +\def\varliminf{{\underline\lim}} +\def\:tempc#1#2#3{\hbox{{\mtexttrue + \HCode{}|\PauseMathClass + \Configure{$}{\EndPauseMathClass\mtextfalse + |\HCode{}} + {|\HCode{}\mtexttrue\PauseMathClass}{#1} + \let\f@size#2\selectfont #3}% + \mtextfalse \EndPauseMathClass |\HCode + {}}} +\HLet\textdef@\:tempc +>>> + + +The original definitions for the following macros contain small spaces +\verb+\,+ in the names, and the spaces imply improper mathml outcome +of the form \verb+......+. + + +\<<< +\def\:tempc{\qopname\relax m{lim inf}} +\HLet\liminf=\:tempc +\def\:tempc{\qopname\relax m{lim sup}} +\HLet\limsup=\:tempc +\def\:tempc{\qopname\relax m{proj lim}} +\HLet\projlim=\:tempc +\def\:tempc{\qopname\relax m{inj lim}} +\HLet\injlim=\:tempc +>>> + + + + + +Why originally the accents are defined within a group? (knuth answer +this in the texbook.) + +\<<< +\let\A:oalign|=\a:oalign +\let\B:oalign|=\b:oalign +\Configure{oalign} + {\ifmmode \Configure{$}{\Tg}{\Tg}{}% + \let\halign|=\TeXhalign + \Tg\else\A:oalign + \fi} + {\ifmmode \Tg\else\B:oalign\fi} +>>> + + + +\<\><<< +\Configure{qopname} + {\Configure{mathop*}{*} + {} + {} + {\Configure{mathop}{}{}{}{}}} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{Eqnarray} +%%%%%%%%%%%%%%%%%%%% + +Had `BASELINE' before `MIDDLE', but changed to conform with math +in page 252-- in intro to theory book. + +\<<< +\Configure{eqnarray} + {\HCode{}}{\HCode{}} + {\HCode{}} {\HCode{}} + {\Tg + \ifnum \HCol=4 + \Tg|\PauseMathClass + \mtexttrue + \fi} + {\ifnum \HCol=4 \mtextfalse + \EndPauseMathClass|\Tg\fi + \Tg} +>>> + + + + +\<<< +\Configure{halignTD} {}{} + {<}{\HCode{-left}} + {-}{\HCode{-center}} + {>}{\HCode{-right}} + {p}{\HCode{-left}} + {}% +>>> + + +\<<< +\Configure{halignTD} {}{} + {<}{\ifmathml \HCode{ columnalign="left"}\else + \HCode{ align="left" style="white-space:nowrap;"}\fi} + {-}{\ifmathml \HCode{ columnalign="center"}\else + \HCode{ align="center" style="white-space:nowrap;"}\fi} + {>}{\ifmathml \HCode{ columnalign="right"}\else + \HCode{ align="right" style="white-space:nowrap;"}\fi} + {^}{\ifmathml \HCode{ rowalign="top"}\else + \HCode{ valign="top" style="white-space:nowrap;"}\fi} + {=}{\ifmathml \HCode{ rowalign="baseline"}\else + \HCode{ valign="baseline" style="white-space:nowrap;"}\fi} + {||}{\ifmathml \HCode{ rowalign="center"}\else + \HCode{ valign="middle" style="white-space:nowrap;"}\fi} + {_}{\ifmathml \HCode{ rowalign="bottom"}\else + \HCode{ valign="bottom" style="white-space:nowrap;"}\fi} + {p}{\ifmathml \HCode{ columnalign="left"}\else + \HCode{ align="left"}\fi} + {} +>>> + + + + +\<<< +\Configure{halignTD} {}{} + {<}{\HCode{ columnalign="left"}} + {-}{\HCode{ columnalign="center"}} + {>}{\HCode{ columnalign="right"}} + {^}{\HCode{ rowalign="top"}} + {=}{\HCode{ rowalign="baseline"}} + {||}{\HCode{ rowalign="center"}} + {_}{\HCode{ rowalign="bottom"}} + {p}{\HCode{ columnalign="left"}} + {} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Big, BIG, ....} +%%%%%%%%%%%%%%%%%%%%%%%%% + +The +\verb'\special{t4ht@[}...\special{t4ht@]}' gobble the enclosed stuff. +The external pair is provided as grouping mechanism for +sub/super-scripts cases like \verb'\bigl(...\bigr)^x' within dvimath +mode. The \verb'{\HCode{}}' is neded for creating content delimiters +\verb'.' delimiters like in \verb'$\bigl. a_b \bigr)$'; without that mathml +gets something wrong there. + + +\begin{verbatim} + > There are some minor problems wit \bigl | corresponding to #x2223 in + > Mozilla encoding + > but I eliminted it by using \left | which turned to be a right solution. + +The \big... macros decide the dimensions of the delimiters. As is the +case with \sum, also here I don't know how to transport the dimensions +to mozilla. + +The \left...\right macros ask latex/mozilla to determine the +dimensions. +\end{verbatim} + + + + +\verb+\bigl{.}+ et al produce empty para,etr , hence the \verb+\:EMPTY+ is a ompensation for such cases. + + +% \R=8.5; \R*1.4; \WriteVal\R +% \R=11.5; \R*1.4; \WriteVal\R +% \R=14.5; \R*1.4; \WriteVal\R +% \R=17.5; \R*1.4; \WriteVal\R + + +\<<< +\def\:tempc#1{{\hbox{\a:big$\c:big + \left#1\hbox{}\right.\n@space\d:big$\b:big}}} +\HLet\big=\:tempc +\def\:tempc#1{{\hbox{\a:Big$\c:Big + \left#1\hbox{}\right.\n@space\d:Big$\b:Big}}} +\HLet\Big=\:tempc +\def\:tempc#1{{\hbox{\a:bigg$\c:bigg + \left#1\hbox{}\right.\n@space\d:bigg$\b:bigg}}} +\HLet\bigg=\:tempc +\def\:tempc#1{{\hbox{\a:Bigg$\c:Bigg + \left#1\hbox{}\right.\n@space\d:Bigg$\b:Bigg}}} +\HLet\Bigg=\:tempc +>>> + +\<<< +\Configure{pmb} + {\ifmmode \HCode{}\fi} + {\ifmmode \HCode{}\fi} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{stackrel} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\def\:temp#1#2{{\a:stackrel{#1}\b:stackrel {#2}\c:stackrel}} +\HLet\stackrel|=\:temp +\:CheckOption{stackrel-} \if:Option + \Configure{stackrel} + {\mathrel\bgroup \HCode{}\egroup} + \def\put:arg{\HCode{{\the\tmp:toks}}} +\else + \Configure{stackrel} + {\HCode{}\inv:i:iii} + {\HCode{<\empty + mrow\Hnewline>}|\mathop} + {\HCode{}} + \def\inv:i:iii#1#2#3{{#3}#2{#1}} +\fi +>>> + +\<<< +\Configure{mathop*}{*} + {} + {} + {\Configure{mathop}{}{}{}{}}% +>>> + +\subsection{fontmath.ltx} + + +Accent versus underscript: \verb=\underbrace{x+y+z}= + versus \verb=\underbrace{\strut x+y+z}= + +\<\><<< +\def\:temp#1{% + \Configure{mathop*}{*}{} + {}% + {\Configure{mathop}{}{}{}{}}% + \mathop{\hbox{$\displaystyle{#1}$}}\limits} +\HLet\underbrace|=\:temp +\def\:temp#1{% + \Configure{mathop*}{*}{} + {}% + {\Configure{mathop}{}{}{}{}}% + \mathop{\hbox{$\displaystyle{#1}$}}\limits} +\HLet\overbrace|=\:temp +>>> + + +\<<< +\def\:temp#1{% + \Configure{mathop*}{*}{} + {}% + {\Configure{mathop}{}{}{}{}}% + \mathop{\vtop{$\displaystyle{#1}$}}\limits} +\HLet\underbrace|=\:temp +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sized Operations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + + +\<<< +\ifx \ilimits@\o:nolimits: + \let\ilimits@\nolimits +\fi +\ifx \ilimits@\o:nolimits: + \let\slimits@\nolimits +\fi +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Underline and Overline} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Choose} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{choose} + {\Send{GROUP}{0}{\Hnewline + }\HCode{}} + {\HCode{\Hnewline} + \Send{EndGROUP}{0}{}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{footnote-mark} + {\ifmathml \ifmtext \else + \HCode{}\fi + \else \HCode{}\fi } + {\ifmathml \ifmtext \else \HCode{}\fi + \else \HCode{}\fi } +\Configure{thank-mark} + {\HCode{<\ifmathml mrow \expandafterclass\else span class\fi + ="thank-mark">}} + {\HCode{}} +>>> + + + + + +The following code segments handle the different listed cases, +with possible exception of the last. + +\begin{verbatim} +a\footnote{b c} + +$a\footnote{b c}$ + +$a\footnote{\hbox{b c}}$ + +$a\footnote{\mbox{b c}}$ + +$a\mbox{\footnote{b c}}$ +\end{verbatim} + + +We have the following hooks + + +\begin{verbatim} +\def\@footnotemark{...\a:@makefnmark\@makefnmark + \b:@makefnmark...} +\long\def\@footnotetext#1{...\a:footnote-text\a:@makefntext + \@makefntext{\b:@makefntext + \a:@makefnbody #1\b:@makefnbody + }\c:@makefntext\b:footnote-text...} +\end{verbatim} + + + + + +\<<< +\:CheckOption{fn-in}\if:Option \else + \expandafter\let\csname A:footnote-text\expandafter\endcsname + \csname a:footnote-text\endcsname + \expandafter\let\csname B:footnote-text\expandafter\endcsname + \csname b:footnote-text\endcsname + \NewConfigure{footnote-text}[2]{% + \expandafter\def\csname a:footnote-text\endcsname{% + #1% + \ifmathml + \HCode{% + \ifmtext \fi} + \fi + \ifmathml \fi + }% + \expandafter\def\csname b:footnote-text\endcsname{% + \ifmathml + \HCode{\ifmtext\fi }% + \fi + #2% + }% + } + \Configure{footnote-text} + {\csname A:footnote-text\endcsname} + {\csname B:footnote-text\endcsname} +\fi +>>> + + + +\<<< +\let\A:footnotetext=\a:footnotetext +\let\B:footnotetext=\b:footnotetext +\let\C:footnotetext=\c:footnotetext +\NewConfigure{footnotetext}[3]{% + \def\a:footnotetext{% + \ifmathml \ifmtext |\fi\fi + #1% + \ifmathml \ifmtext |\fi\fi + }% + \def\b:footnotetext{% + \ifmathml \ifmtext |\fi\fi + #2% + \ifmathml \ifmtext |\fi\fi + }% + \def\c:footnotetext{% + \ifmathml \ifmtext |\fi\fi + #3% + \ifmathml \ifmtext |\fi\fi + }% +} +\Configure{footnotetext} + {\A:footnotetext} + {\B:footnotetext} + {\C:footnotetext} +>>> + +\<<< +\Configure{footnotebody} + {\tmp:toks=} + {\ifmathml \ifmmode $\mbox{$\the\tmp:toks$}$ + \else $\mbox{\the\tmp:toks}$\fi + \else \the\tmp:toks\fi} +>>> + + +\<<< +\:CheckOption{mouseover} \if:Option + \pend:def\js:on{\ifmathml \ifmtext |\fi\fi} + \append:def\js:on{\ifmathml \ifmtext |\fi\fi} +\fi +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Space Characters} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +% {\mathchar"0403} % \square +% {\mathchar"0404} % \blacksquare +% {\mathchar"0406} % \lozenge +% {\mathchar"0407} % \blacklozenge +% {\mathchar"0438} % \backprime +% {\mathchar"0446} % \bigstar +% {\mathchar"0448} % \blacktriangledown +% {\mathchar"044E} % \blacktriangle +% {\mathchar"044F} % \triangledown +% {\mathchar"045D} % \measuredangle +% {\mathchar"045E} % \sphericalangle +% {\mathchar"0473} % \circledS +% {\mathchar"047B} % \complement +% {\mathchar"051E} % \diagup +% {\mathchar"051F} % \diagdown +% {\mathchar"053F} % \varnothing +% {\mathchar"0540} % \nexists +% {\mathchar"0560} % \Finv +% {\mathchar"0561} % \Game +% {\mathchar"0567} % \eth +% {\mathchar"0569} % \beth +% {\mathchar"056A} % \gimel +% {\mathchar"056B} % \daleth +% {\mathchar"057A} % \digamma +% {\mathchar"057B} % \varkappa +% {\mathchar"057C} % \Bbbk +% {\mathchar"057D} % \hslash + + +\<<< +\def\:tempa#1"#2#3///{\Configure{MathClass}{#2}} +\def\:temp#1{\:tempa#1///{}{}{}{#1}} +\:temp{\mathchar"2400} |% \boxdot |% +\:temp{\mathchar"2401} |% \boxplus |% +\:temp{\mathchar"2402} |% \boxtimes |% +\:temp{\mathchar"2405} |% \centerdot |% +\:temp{\mathchar"240C} |% \boxminus |% +\:temp{\mathchar"2459} |% \veebar |% +\:temp{\mathchar"245A} |% \barwedge |% +\:temp{\mathchar"245B} |% \doublebarwedge |% +\:temp{\mathchar"2464} |% \Cup |% +\:temp{\mathchar"2465} |% \Cap |% +\:temp{\mathchar"2466} |% \curlywedge |% +\:temp{\mathchar"2467} |% \curlyvee |% +\:temp{\mathchar"2468} |% \leftthreetimes |% +\:temp{\mathchar"2469} |% \rightthreetimes |% +\:temp{\mathchar"2475} |% \dotplus |% +\:temp{\mathchar"247C} |% \intercal |% +\:temp{\mathchar"247D} |% \circledcirc |% +\:temp{\mathchar"247E} |% \circledast |% +\:temp{\mathchar"247F} |% \circleddash |% +\:temp{\mathchar"253E} |% \divideontimes |% +\:temp{\mathchar"256C} |% \lessdot |% +\:temp{\mathchar"256D} |% \gtrdot |% +\:temp{\mathchar"256E} |% \ltimes |% +\:temp{\mathchar"256F} |% \rtimes |% +\:temp{\mathchar"2572} |% \smallsetminus |% +\:temp{\mathchar"3408} |% \circlearrowright |% +\:temp{\mathchar"3409} |% \circlearrowleft |% +\:temp{\mathchar"340A} |% \rightleftharpoons |% +\:temp{\mathchar"340B} |% \leftrightharpoons |% +\:temp{\mathchar"340D} |% \Vdash |% +\:temp{\mathchar"340E} |% \Vvdash |% +\:temp{\mathchar"340F} |% \vDash |% +\:temp{\mathchar"3410} |% \twoheadrightarrow |% +\:temp{\mathchar"3411} |% \twoheadleftarrow |% +\:temp{\mathchar"3412} |% \leftleftarrows |% +\:temp{\mathchar"3413} |% \rightrightarrows |% +\:temp{\mathchar"3414} |% \upuparrows |% +\:temp{\mathchar"3415} |% \downdownarrows |% +\:temp{\mathchar"3416} |% \upharpoonright |% +\:temp{\mathchar"3417} |% \downharpoonright |% +\:temp{\mathchar"3418} |% \upharpoonleft |% +\:temp{\mathchar"3419} |% \downharpoonleft |% +\:temp{\mathchar"341A} |% \rightarrowtail |% +\:temp{\mathchar"341B} |% \leftarrowtail |% +\:temp{\mathchar"341C} |% \leftrightarrows |% +\:temp{\mathchar"341D} |% \rightleftarrows |% +\:temp{\mathchar"341E} |% \Lsh |% +\:temp{\mathchar"341F} |% \Rsh |% +\:temp{\mathchar"3420} |% \rightsquigarrow |% +\:temp{\mathchar"3421} |% \leftrightsquigarrow |% +\:temp{\mathchar"3422} |% \looparrowleft |% +\:temp{\mathchar"3423} |% \looparrowright |% +\:temp{\mathchar"3424} |% \circeq |% +\:temp{\mathchar"3425} |% \succsim |% +\:temp{\mathchar"3426} |% \gtrsim |% +\:temp{\mathchar"3427} |% \gtrapprox |% +\:temp{\mathchar"3428} |% \multimap |% +\:temp{\mathchar"3429} |% \therefore |% +\:temp{\mathchar"342A} |% \because |% +\:temp{\mathchar"342B} |% \doteqdot |% +\:temp{\mathchar"342C} |% \triangleq |% +\:temp{\mathchar"342D} |% \precsim |% +\:temp{\mathchar"342E} |% \lesssim |% +\:temp{\mathchar"342F} |% \lessapprox |% +\:temp{\mathchar"3430} |% \eqslantless |% +\:temp{\mathchar"3431} |% \eqslantgtr |% +\:temp{\mathchar"3432} |% \curlyeqprec |% +\:temp{\mathchar"3433} |% \curlyeqsucc |% +\:temp{\mathchar"3434} |% \preccurlyeq |% +\:temp{\mathchar"3435} |% \leqq |% +\:temp{\mathchar"3436} |% \leqslant |% +\:temp{\mathchar"3437} |% \lessgtr |% +\:temp{\mathchar"343A} |% \risingdotseq |% +\:temp{\mathchar"343B} |% \fallingdotseq |% +\:temp{\mathchar"343C} |% \succcurlyeq |% +\:temp{\mathchar"343D} |% \geqq |% +\:temp{\mathchar"343E} |% \geqslant |% +\:temp{\mathchar"343F} |% \gtrless |% +\:temp{\mathchar"3442} |% \vartriangleright |% +\:temp{\mathchar"3443} |% \vartriangleleft |% +\:temp{\mathchar"3444} |% \trianglerighteq |% +\:temp{\mathchar"3445} |% \trianglelefteq |% +\:temp{\mathchar"3447} |% \between |% +\:temp{\mathchar"3449} |% \blacktriangleright |% +\:temp{\mathchar"344A} |% \blacktriangleleft |% +\:temp{\mathchar"344D} |% \vartriangle |% +\:temp{\mathchar"3450} |% \eqcirc |% +\:temp{\mathchar"3451} |% \lesseqgtr |% +\:temp{\mathchar"3452} |% \gtreqless |% +\:temp{\mathchar"3453} |% \lesseqqgtr |% +\:temp{\mathchar"3454} |% \gtreqqless |% +\:temp{\mathchar"3456} |% \Rrightarrow |% +\:temp{\mathchar"3457} |% \Lleftarrow |% +\:temp{\mathchar"345F} |% \varpropto |% +\:temp{\mathchar"3460} |% \smallsmile |% +\:temp{\mathchar"3461} |% \smallfrown |% +\:temp{\mathchar"3462} |% \Subset |% +\:temp{\mathchar"3463} |% \Supset |% +\:temp{\mathchar"346A} |% \subseteqq |% +\:temp{\mathchar"346B} |% \supseteqq |% +\:temp{\mathchar"346C} |% \bumpeq |% +\:temp{\mathchar"346D} |% \Bumpeq |% +\:temp{\mathchar"346E} |% \lll |% +\:temp{\mathchar"346F} |% \ggg |% +\:temp{\mathchar"3474} |% \pitchfork |% +\:temp{\mathchar"3476} |% \backsim |% +\:temp{\mathchar"3477} |% \backsimeq |% +\:temp{\mathchar"3500} |% \lvertneqq |% +\:temp{\mathchar"3501} |% \gvertneqq |% +\:temp{\mathchar"3502} |% \nleq |% +\:temp{\mathchar"3503} |% \ngeq |% +\:temp{\mathchar"3504} |% \nless |% +\:temp{\mathchar"3505} |% \ngtr |% +\:temp{\mathchar"3506} |% \nprec |% +\:temp{\mathchar"3507} |% \nsucc |% +\:temp{\mathchar"3508} |% \lneqq |% +\:temp{\mathchar"3509} |% \gneqq |% +\:temp{\mathchar"350A} |% \nleqslant |% +\:temp{\mathchar"350B} |% \ngeqslant |% +\:temp{\mathchar"350C} |% \lneq |% +\:temp{\mathchar"350D} |% \gneq |% +\:temp{\mathchar"350E} |% \npreceq |% +\:temp{\mathchar"350F} |% \nsucceq |% +\:temp{\mathchar"3510} |% \precnsim |% +\:temp{\mathchar"3511} |% \succnsim |% +\:temp{\mathchar"3512} |% \lnsim |% +\:temp{\mathchar"3513} |% \gnsim |% +\:temp{\mathchar"3514} |% \nleqq |% +\:temp{\mathchar"3515} |% \ngeqq |% +\:temp{\mathchar"3516} |% \precneqq |% +\:temp{\mathchar"3517} |% \succneqq |% +\:temp{\mathchar"3518} |% \precnapprox |% +\:temp{\mathchar"3519} |% \succnapprox |% +\:temp{\mathchar"351A} |% \lnapprox |% +\:temp{\mathchar"351B} |% \gnapprox |% +\:temp{\mathchar"351C} |% \nsim |% +\:temp{\mathchar"351D} |% \ncong |% +\:temp{\mathchar"3520} |% \varsubsetneq |% +\:temp{\mathchar"3521} |% \varsupsetneq |% +\:temp{\mathchar"3522} |% \nsubseteqq |% +\:temp{\mathchar"3523} |% \nsupseteqq |% +\:temp{\mathchar"3524} |% \subsetneqq |% +\:temp{\mathchar"3525} |% \supsetneqq |% +\:temp{\mathchar"3526} |% \varsubsetneqq |% +\:temp{\mathchar"3527} |% \varsupsetneqq |% +\:temp{\mathchar"3528} |% \subsetneq |% +\:temp{\mathchar"3529} |% \supsetneq |% +\:temp{\mathchar"352A} |% \nsubseteq |% +\:temp{\mathchar"352B} |% \nsupseteq |% +\:temp{\mathchar"352C} |% \nparallel |% +\:temp{\mathchar"352D} |% \nmid |% +\:temp{\mathchar"352E} |% \nshortmid |% +\:temp{\mathchar"352F} |% \nshortparallel |% +\:temp{\mathchar"3530} |% \nvdash |% +\:temp{\mathchar"3531} |% \nVdash |% +\:temp{\mathchar"3532} |% \nvDash |% +\:temp{\mathchar"3533} |% \nVDash |% +\:temp{\mathchar"3534} |% \ntrianglerighteq |% +\:temp{\mathchar"3535} |% \ntrianglelefteq |% +\:temp{\mathchar"3536} |% \ntriangleleft |% +\:temp{\mathchar"3537} |% \ntriangleright |% +\:temp{\mathchar"3538} |% \nleftarrow |% +\:temp{\mathchar"3539} |% \nrightarrow |% +\:temp{\mathchar"353A} |% \nLeftarrow |% +\:temp{\mathchar"353B} |% \nRightarrow |% +\:temp{\mathchar"353C} |% \nLeftrightarrow |% +\:temp{\mathchar"353D} |% \nleftrightarrow |% +\:temp{\mathchar"3568} |% \eqsim |% +\:temp{\mathchar"3570} |% \shortmid |% +\:temp{\mathchar"3571} |% \shortparallel |% +\:temp{\mathchar"3573} |% \thicksim |% +\:temp{\mathchar"3574} |% \thickapprox |% +\:temp{\mathchar"3575} |% \approxeq |% +\:temp{\mathchar"3576} |% \succapprox |% +\:temp{\mathchar"3577} |% \precapprox |% +\:temp{\mathchar"3578} |% \curvearrowleft |% +\:temp{\mathchar"3579} |% \curvearrowright |% +\:temp{\mathchar"357F} |% \backepsilon |% +>>>> + + + + + + + +\<<< +\Configure{align} + {\EndP\HCode{}} + {\HCode{}} + {\HCode{}} {\HCode{}} + {\HCode{}} {\HCode{}} +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Right-to-Left Babel} +%%%%%%%%%%%%%%%%%% + + + +\<<< +\expandafter\ifx \csname o@everypar\endcsname\relax \else +\expandafter\ifx \csname ht:everypar\endcsname\relax + \let\ht:everypar\o@everypar +\fi\fi +>>> + + + + + + +\<<< +dir="\if@rl rtl\else ltr\fi" +>>> + + +\<<< +\Configure{moreL} + {\ifmathml |% + \else + \ifvmode \let\end:moreRL=\empty + \else\HCode{}% + \def\end:moreRL{\HCode{}}% + \fi + \fi + } + {\end:moreRL} +\Configure{moreR} + {\ifmathml |% + \else + \ifvmode \let\end:moreRL=\empty + \else\HCode{}\def\end:moreRL{\HCode{}}\fi + \fi + } + {\end:moreRL} +\Css{.rtl {direction: rtl} + .ltr {direction: ltr} } +>>> + + + +\<<< +\ifmtext + \leavevmode\special{t4ht@+}x% + \def\end:moreRL{\HCode{}}% +\else + \let\end:moreRL=\empty +\fi +>>> + + + +\<<< +\ifmtext + \leavevmode\special{t4ht@+}x% + \def\end:moreRL{\HCode{}}% +\else + \let\end:moreRL=\empty +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{openmath} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{itemitem}{}{}{\par\leavevmode}{} +>>> + + + + +Used to have also a \verb'\special{t4ht@[}...\special{t4ht@]}', +where the specials asked to igore the enclosed +content. It is provided for getting `realistic' measurements in mathml +applets. a candidadte for delition. + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +!*?: >>> + + +\<<< + cw:>>> + + + +\<<< +\xdef\:cursec{|
}% +>>> + + +\<<< +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else + \csname :RestoreCatcodes\endcsname \fi + \catcode`\noexpand :|=\the\catcode`:% + \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|= + \noexpand\UnDefcS} +\catcode`\:|=11 +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{fontmath} +%%%%%%%%%%%%%%%%%% + + + + +\<<< +\mathchar"3230 |%\prime|% +\mathchar"3231 |%\infty|% +\mathchar"323B |%\emptyset|% +\mathchar"323C |%\Re|% +\mathchar"323D |%\Im|% +\mathchar"3240 |%\aleph|% +>>> + +\<<< +\mathchar"3234 |%\triangle|% +\mathchar"3238 |%\forall|% +\mathchar"3239 |%\exists|% +\mathchar"323A |%\neg|% +\mathchar"323E |%\top|% +\mathchar"323F |%\bot|% +\mathchar"3272 |%\nabla|% +\mathchar"3278 |%\mathsection|% +\mathchar"327B |%\mathparagraph|% +\mathchar"327C |%\clubsuit|% +\mathchar"327D |%\diamondsuit|% +\mathchar"327E |%\heartsuit|% +\mathchar"327F |%\spadesuit|% +>>> + + + +\subsection{1: Large Operators} + +\begin{verbatim} +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 +\end{verbatim} + +\<<< +\Configure{MathClass}{1}{}{}{}{ + \mathchar"1360 + \mathchar"1357 + \mathchar"1356 + \mathchar"1355 + \mathchar"1354 + \mathchar"1353 + \mathchar"1352 + \mathchar"1351 + \mathchar"1350 + \mathchar"134E + \mathchar"134C + \mathchar"134A + \mathchar"1348 + \mathchar"1346 + \mathchar"1273 + |% +} +>>> + +% \mathchar"230 |%math prime|% + +A prime is typically placed on letters and digits. + + +\subsection{2: Binary Operations} + +\begin{verbatim} +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\-="2200 +\end{verbatim} + +\<<< +\Configure{MathClass}{2}{}{}{}{ +*-+/ +\mathchar"212F +\mathchar"212E +\mathchar"2234 +\mathchar"2235 +\mathchar"225E +\mathchar"225F +\mathchar"225C +\mathchar"225B +\mathchar"227A +\mathchar"2279 +\mathchar"2275 +\mathchar"2274 +\mathchar"225D +\mathchar"2271 +\mathchar"2205 +\mathchar"220F +\mathchar"226F +\mathchar"2204 +\mathchar"220C +\mathchar"220B +\mathchar"220A +\mathchar"2209 +\mathchar"2208 +\mathchar"2207 +\mathchar"2206 +\mathchar"220E +\mathchar"220D +\mathchar"226E +\mathchar"2201 +\mathchar"2203 +\mathchar"2202 +\mathchar"213F +} +>>> + + +\subsection{3: Relational Operations} + +The catcode is needed because 303A is \verb':'. + +\<<< +\Configure{MathClass}{3}{}{}{}{ + \mathchar"3128 + \mathchar"3129 + \mathchar"312A + \mathchar"312B + \mathchar"315E + \mathchar"315F + \mathchar"3210 + \mathchar"3211 + \mathchar"3212 + \mathchar"3213 + \mathchar"3214 + \mathchar"3215 + \mathchar"3216 + \mathchar"3217 + \mathchar"3218 + \mathchar"3219 + \mathchar"321A + \mathchar"321B + \mathchar"321C + \mathchar"321D + \mathchar"321E + \mathchar"321F + \mathchar"3220 + \mathchar"3221 + \mathchar"3224 + \mathchar"3227 + \mathchar"3232 + \mathchar"3233 + \mathchar"3236 + \mathchar"3237 + \mathchar"323F + :=>< + \mathchar"322F + \mathchar"3276 + \mathchar"3277 + \mathchar"326B + \mathchar"326A + \mathchar"3261 + \mathchar"3260 + \mathchar"3225 + \mathchar"3226 + \mathchar"322D + \mathchar"322E + \mathchar"322C + \mathchar"3228 + \mathchar"3229 +} +>>> + +% \mathchar"327C |%clubsuit|% +% \mathchar"327D |%diamondsuit|% +% \mathchar"327E |%heartsuit|% +% \mathchar"327F |%spadesuit|% + + + +% \mathchar"340A % rightleftharpoons +% \mathchar"340B % leftrightharpoons +% + +\begin{verbatim} +\mathcode`\>="313E +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\:="303A +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\set="321A +\mathchardef\supseteq="3213 +\mathchardef\seteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\end{verbatim} + + +\subsection{4/5: Delimiters} + +\begin{verbatim} +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\[="405B +\mathcode`\]="505D +\mathcode`\{="4266 +\mathcode`\}="5267 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\def\lmoustache{\delimiter"437A340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"537B341 } % top from ), bottom from ( +\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips +\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } +\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads +\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert How should these be treated? +\def\vert{\delimiter"26A30C } " " " " " +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\end{verbatim} + +The comamnds \verb'\Configure{MathClass}{4}...' +and \verb'\Configure{MathClass}{5}...' +are for unmatched delimiters, and the comamnd +\verb'\Configure{MathDelimiters}{(}{)}' is for matched ones. + + +\<<< +\Configure{MathClass}{4}{}{}{}{} +\Configure{MathDelimiters}{(}{)} +\Configure{MathDelimiters}{[}{]} +\Configure{MathDelimiters}{\mathchar"4262}{\mathchar"5263} +\Configure{MathDelimiters}{\mathchar"4264}{\mathchar"5265} +\Configure{MathDelimiters}{\mathchar"4266}{\mathchar"5267} +\Configure{MathDelimiters}{\mathchar"4268}{\mathchar"5269} +\Configure{MathDelimiters}{\mathchar"4300}{\mathchar"5301} +\Configure{MathDelimiters}{\mathchar"4302}{\mathchar"5303} +\Configure{MathDelimiters}{\mathchar"4304}{\mathchar"5305} +\Configure{MathDelimiters}{\mathchar"4306}{\mathchar"5307} +\Configure{MathDelimiters}{\mathchar"4308}{\mathchar"5309} +\Configure{MathDelimiters}{\mathchar"430A}{\mathchar"530B} +>>> + +\begin{verbatim} +\mathcode`\?="503F +\end{verbatim} + + +\subsection{6: Punctuation Marks} + +\begin{verbatim} +\mathcode`\;="603B +\mathcode`\,="613B +\end{verbatim} + +\<<< +\Configure{MathClass}{6}{}{}{}{ +\mathchar"613A % ldot +\mathchar"6201 % cdot +\mathchar"603A % colon +?; , +} +>>> + + +\subsection{Questions} + +\begin{verbatim} + + +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\end{verbatim} + + +\subsection{Type 4: Math Open} + + +latex.ltx, fontmath.ltx, plain.tex + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Packages} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%% +\section{Small Ones} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsubsection{Bm} +%%%%%%%%%%%%% + + +\<<< +\Configure{bm} + {\ifmmode \ifmtext \else + \Tg% + \expandafter\expandafter\expandafter\:gobble + \fi\fi} + {\ifmmode \ifmtext \else \Tg\fi\fi} +>>> + + +The bm commands produces bold printing by overprinting the characters +with small shifting. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Notes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{To Do} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{itemize} + +\item Filter output through SAX/DOM/SAX to allow, e.g., dealing + globaly with empty elements to accomodate w3 browser. That is, + xtpipes fed into xtpipes. + +\item Fix mathml config for + + +\begin{itemize} +\item + +\verb+$\mathop{\overline{x}} \limits_{a=3}^{b=4}$+ +\item Parametric commands as Superscripts or Subscripts: + \verb+$E^\frac{1}{2}$+ (instead of \verb+$E^{\frac{1}{2}}$+). + + +\item + +\begin{verbatim} +\def\varinjlim{\mathop{\underrightarrow\lim}\displaylimits} +\def\varprojlim{\mathop{\underleftarrow\lim}\displaylimits} + +$$\varprojlim_{p}$$ +\end{verbatim} + + +\end{itemize} + + +\item + Numbering is not right justified: + +\begin{verbatim} +\documentclass{amsart} + \begin{document} + + \begin{eqnarray} + A &=& B + C + \end{eqnarray} + + \begin{align} + A &= B + C \qquad & N &= G + F + \end{align} + + \begin{alignat}{2} + A &= B + C \qquad \qquad & N & = G + F + \end{alignat} + +\begin{gather} +A = B + C \tag{my equation} \\ +B = \text{variable unknown} \notag \\ +Y = \max X + \log 10 +\end{gather} + +\end{document} +\end{verbatim} + + +\item +\begin{verbatim} +\begin{align} +e &= a + b \\ +\intertext{this should be located on the left browser hand margin} +a &= u +\end{align} + +\end{verbatim} + +\end{itemize} + + + +\endinput + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{The Calling Tree for 4ht Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\if:latex | +\else | \fi +>>> + +\<0,32,4 plain\><<< +| +| +>>> + +\<0,32,4 latex\><<< +| +| +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Front part} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%% +\section{HTML} +%%%%%%%%%%%%%%%% + +\<<< +\ifx \a:HTML\:UnDef + \Configure{HTML} + {\IgnorePar\HCode{\Hnewline}>\Hnewline}} + {\ifvmode\IgnorePar\fi\HCode{\Hnewline}} +\fi +\ifx \a:HEAD\:UnDef + \Configure{HEAD} + {\IgnorePar\NoFonts\HCode {}} + {\HCode{}\EndNoFonts} +\fi +\ifx \a:BODY\:UnDef + \:CheckOption{frames} \if:Option + | + \else + \Log:Note{for content and toc + in 2 frames, use the command line option `frames'} + \Log:Note{for content, toc, and footnotes + in 3 frames, use the command line option `frames-fn'} + | +\fi\fi +\ifx \a:TITLE\:UnDef + \Configure{TITLE}{\Protect\IgnorePar + \HCode{}}{\HCode{\Hnewline}} +\fi +\ifx \a:@HEAD\relax \let\a:@HEAD=\empty\fi +\ifx \a:@HEAD\empty + | + \:CheckOption{css-in} \if:Option + \Log:Note{the inline CSS code is extracted from the input of the + previous compilation, so an extra compilation might be needed} + \Configure{@HEAD}{|} + \else + \Log:Note{for inline CSS code, use the command line option `css-in'} + \Configure{@HEAD}{\HCode{\Hnewline}} + \fi + | +\fi +\:CheckOption{mouseover} \if:Option + | +\else + \Log:Note{for pop ups on mouse over, + use the command line option `mouseover'} +\fi +>>> + +\<<< +\openin15=\jobname .css +\ifeof15 \else \:warning{Missing file: \jobname .css }% +\bgroup + \catcode`\{=12 \catcode`\}=12 \catcode`\%=12 \catcode`\#=12 + \HCode{\Hnewline\Hnewline}% +\egroup +\fi +\closein15 +>>> + + + +\<<< +\:CheckOption{uni-emacspeak} \if:Option + \def\A:charset{charset=utf-8} +\else + \def\A:charset{charset=iso-8859-1} +\fi +>>> + +\verb'\a:charset' can come from a private configuration file, and from +a poackage option. It takes precedence over \verb'\A:charset'. + + + +%%%%%%%%%%%%%%%% +\section{XML Version} +%%%%%%%%%%%%%%%% + +\<<< +| +\Configure{VERSION} + {\HCode{ ?>\Hnewline}} +>>> + +%%%%%%%%%%%%%%%% +\section{DOCTYPE} +%%%%%%%%%%%%%%%% + +\<<< +\ifx \a:DOCTYPE\relax + \:CheckOption{frames} \if:Option + | + \else + | + | + \fi +\fi +>>> + + +\<<< +\:CheckOption{xhtml} \if:Option + \NewConfigure{@DOCTYPE}[1]{\def\:temp{#1}% + \ifx \:temp\empty \let\a:@DOCTYPE|=\empty + \else \ifx \a:@DOCTYPE\relax \let\a:@DOCTYPE|=\empty\fi + \pend:def\a:@DOCTYPE{#1}\fi} + \let\a:@DOCTYPE|=\relax +\fi +>>> + +\<<< +\Configure{PROLOG}{VERSION,DOCTYPE,*XML-STYLESHEET} +\:CheckOption{mouseover} \if:Option + | +\fi +\:CheckOption{no-DOCTYPE} \if:Option + \Configure{PROLOG}{VERSION,*XML-STYLESHEET} +\else + \Log:Note{to remove the DOCTYPE declaration + use the command line option `no-DOCTYPE'} +\fi +>>> + + + + +\<<< +\:CheckOption{xhtml} \if:Option + |% + \def\:DTD{xhtml} +\else + |% +\fi +>>> + + + +Don't place the full address + \''http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd' +within DOCTYPE. It can stop tools like xt when the serves doen't respond + + +\<<< +|% +\Configure{DOCTYPE} + {\HCode{ \Hnewline + + \Hnewline}} +\def\xhtml:DOCTYPE{PUBLIC + "-//W3C//DTD XHTML 1.0 Transitional//|"\Hnewline + \space\space "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"} +>>> + + +\<<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi +>>> + + +\<<< +\Configure{@DOCTYPE} + {\Hnewline\%xhtml.dtd; \Hnewline} +>>> + +\<<< +\Configure{DOCTYPE}{\IgnorePar\HCode + {" + \Hnewline\space\space "http://www.w3.org/TR/emacspeak/loose.dtd"> + \Hnewline}} +>>> + + + +\<<< +\:CheckOption{xhtml} \if:Option + \Configure{DOCTYPE} + {\HCode{" + \Hnewline "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">\Hnewline}} +\else + \Configure{DOCTYPE} + {\HCode{" + \Hnewline "http://www.w3.org/TR/emacspeak/frameset.dtd">\Hnewline}} +\fi +>>> + + + + + + +Xerces reqires the following encoding. + +\<<< +\def\:encoding#1={} +>>> + +\<<< +encoding="\expandafter\ifx \csname a:charset\endcsname\relax + \expandafter\:encoding\A:charset + \else \expandafter\:encoding\a:charset\fi" +>>> + +%%%%%%%%%%%%%%%% +\section{BODY} +%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{mouseover} \if:Option + \Configure{BODY} + {\:xhtml{\SaveEndP}\IgnorePar\HCode{}|\ShowPar\par} + {\IgnorePar\:xhtml{\EndP}\HCode{\Hnewline + }\:xhtml{\RecallEndP}}% +\else + \Configure{BODY} + {\:xhtml{\SaveEndP}\IgnorePar\HCode{}\ShowPar\par } + {\IgnorePar\:xhtml{\EndP}\HCode{\Hnewline + }\:xhtml{\RecallEndP}}% +\fi +>>> + +\<<< +\def\Frame:Name{menu} +|% +\Configure{BODY} + {% + \a:frames \NoFrames \PushStack\BODY:stack{} + |% + |% + \HPage[tex4ht-p1]{table of contents}% + \Link{}{|}\EndLink + \bgroup + \Configure{Link}{a}{target="|" href=}{ name=}{} + \b:frames + \egroup + \def\Frame:Name{main} + \EndHPage{tex4ht-p1} \Tg
+ \HPage[tex4ht-p2]{text}\Link{}{|}\EndLink + } + {\EndHPage{tex4ht-p2}} +\NewConfigure{frames}{2} +\Css{body\#| {white-space: nowrap; }} +>>> + + +\<<< +\:CheckOption{mouseover} \if:Option + \Configure{BODY} + {\PushStack\BODY:stack{x}% + \:xhtml{\SaveEndP}\IgnorePar\HCode{}|\ShowPar\par \let\Frame:Name=\empty} + {\IgnorePar\:xhtml{\EndP}\PopStack\BODY:stack\:temp + \ifx \:temp\empty \EndFrames \else + \HCode{\Hnewline }\fi + \:xhtml{\RecallEndP}}% +\else + \Configure{BODY} + {\PushStack\BODY:stack{x}% + \:xhtml{\SaveEndP}\IgnorePar\HCode{}\ShowPar\par \let\Frame:Name\empty} + {\IgnorePar\:xhtml{\EndP}\PopStack\BODY:stack\:temp + \ifx \:temp\empty \EndFrames + \else \HCode{\Hnewline }\fi + \:xhtml{\RecallEndP}}% +\fi +>>> + + + +\<<< +tex4ht-main>>> + + +\<<< +tex4ht-fn>>> + +\<<< +tex4ht-menu>>> + + +%%%%%%%%%%%%%%%% +\section{Meta} +%%%%%%%%%%%%%%%% + + +\<<< +\:CheckOption{xht} \if:Option + \:CheckOption{xhtml}\if:Option \else \:CheckOption{xml}\fi +\fi +\if:Option | +\else |\fi +\def\:gobbleM#1->{} +| +\immediate\write-1{TeX4ht package options: + \expandafter\:gobbleM\meaning\Preamble} +\Configure{@HEAD} + {\HCode{\Hnewline}} +\:CheckOption{timestamp}\if:Option +\Configure{@HEAD} + {\HCode{\Hnewline}} +\else + \Log:Note{To print a timestamp, use the command line option timestamp} +\fi +>>> + + +\<<< +\Configure{@HEAD}{\HCode{\Hnewline}} +\Configure{html}{xht} +>>> + +\<<< +\Log:Note{for file extension name xht, use the command line option `xht'}% +\Configure{@HEAD}{\HCode{\Hnewline}} +>>> + + +\verb'\Hnewline' is needed at end of file to avoid loosing the +last line under some applications. + + + + + +Tex4ht pages published through FrontPage loose the generator metas, +but not the originator-metas. + + + + +\<<< +\Configure{@HEAD}{\HCode{\Hnewline}} +\Configure{@HEAD}{\HCode{\Hnewline + \Hnewline}} +>>> + + + +%%%%%%%%%%%%%%%% +\section{Frames} +%%%%%%%%%%%%%%%% + +\<<< +tex4ht-toc>>> + +\<<< +tex4ht-body>>> + +\<4 latex\><<< +\:CheckOption{frames} \if:Option + \:CheckOption{frames-fn} \if:Option + \Configure{frames} + {\HorFrames[rows="*"]{*,3*} + \VerFrames[cols="*"]{3*,*} + \Frame[ name="|" + frameborder="0" ]{|} + \Frame[ name="|" + frameborder="0" ]{} + \EndFrames + \Frame[ name="|" + frameborder="0" ]{|}} + {\let\contentsname=\empty \tableofcontents} + \else + \Configure{frames} + {\HorFrames[rows="*"]{*,3*} + \Frame[ name="|" + frameborder="0" ]{|} + \Frame[ name="|" + frameborder="0" ]{|}} + {\let\contentsname=\empty \tableofcontents} + \fi +\fi +>>> + +% frameborder="no" +% border="0" +% framespacing="0" + + +\<<< +\:CheckOption{frames-fn} \if:Option + \edef\Preamble{\Preamble,frames} +\fi +>>> + + + +\<<< +\Configure{frames} + {\VerFrames[ cols="*"]{4*,*} + \Frame[ name="|" + frameborder="1" ]{|} + \Frame[ name="|" + frameborder="1" ]{|}} + {\beamer:bookmarks \tableofcontents} +>>> + +\<<< +\Configure{frames} + {\HorFrames[ rows="*"]{*,3*} + \Frame[ name="|" + frameborder="1" ]{|} + \Frame[ name="|" + frameborder="1" ]{|}} + {\beamer:bookmarks \tableofcontents} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Structures} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sectioning} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Sub Sections} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< + +| +\Configure{subsection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{

}% + \TitleMark\space \HtmlParOff} + {\HCode{

}\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsection}{}{}{\EndP\bgroup + \ifvmode \IgnorePar\fi + \HCode{

}\HtmlParOff } + {\HCode{

}\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsectionTITLE+}{#1} +>>> + + +\<<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}\@seccntformat{section}% + \thesubsection\HCode{}\fi} +\Configure{subsection}{}{} + {\EndP\bgroup \IgnorePar\HCode{

}% + \TitleMark{. \space}} + {\HCode{

}\IgnoreIndent\egroup} +>>> + + + + +\
<<<
+\ConfigureMark{subsection}
+   {\ifnum \c:secnumdepth>\c@secnumdepth  \expandafter\:gobble \else
+    \csname thetitlesubsection\endcsname\fi}
+\Configure{subsection}{}{}
+   {\EndP\bgroup \IgnorePar\HCode{

}% + \TitleMark\space} + {\HCode{

}\IgnoreIndent\egroup\par} +\Configure{likesubsection}{}{} + {\EndP\bgroup \IgnorePar\HCode{

}} + {\HCode{

}\IgnoreIndent\egroup\par} +>>> + + +\<<< +\ConfigureMark{subsection} + {\ifHeadingNumbered \HCode{}\mw@seccntformat + \HeadingNumber \HCode{}\fi} +\Configure{subsection}{}{} + {\NoFonts \ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{

}% + \TitleMark \HtmlParOff} + {\HCode{

}\HtmlParOn \EndNoFonts \IgnoreIndent\egroup\par} +\Configure{subsectionTITLE+}{\thesubsection \space#1} +>>> + +\<<< +\Configure{likesubsection}{}{}{\EndP\bgroup + \ifvmode \IgnorePar\fi + \HCode{

}\HtmlParOff } + {\HCode{

}\HtmlParOn \IgnoreIndent\egroup\par} +\Configure{likesubsectionTITLE+}{#1} +>>> + + +\<<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}% + \@ifundefined{subsectionname}{}{% + \ignorespaces\subsectionname\space}% + \@seccntformat{subsection}% + \HCode{}\fi } +| +>>> + + +\<<< +\Configure{subsection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{

}% + \TitleMark\space \HtmlParOff} + {\HCode{

}\HtmlParOn \IgnoreIndent\egroup\par} +>>> + +\<<< +\Configure{subsection}{}{} + {\ShowPar\noindent + \HCode{}\begingroup\bf + \TitleMark\space} + {.\endgroup\HCode{}\IgnorePar\par} +>>> + + + +\<<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}\thesubsection + \HCode{}\fi } +| +\Configure{subsection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{

}% + \TitleMark.~~\HtmlParOff} + {\HCode{

}\HtmlParOn \IgnoreIndent\egroup\par} +\Configure{likesubsection}{}{}{\EndP\bgroup + \ifvmode \IgnorePar\fi + \HCode{

}\HtmlParOff } + {\HCode{

}\HtmlParOn \IgnoreIndent\egroup\par} +\Configure{likesubsectionTITLE+}{#1} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Sub Sub Sections} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}% + \@ifundefined{subsubsectionname}{}{% + \ignorespaces\subsubsectionname\space}% + \@seccntformat{subsubsection}% + \HCode{}\fi} +| +>>> + + +\<<< +\Configure{subsubsection}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{
}% + \TitleMark\space \HtmlParOff} + {\HCode{
}\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +>>> + +\<<< +\Configure{subsubsection}{}{} + {\ShowPar\noindent + \HCode{}\begingroup\it + \TitleMark\space} + {.\endgroup\HCode{}\IgnorePar} +>>> + + +\<<< +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}\@seccntformat{subsubsection}% + \HCode{}\fi} +| +\Configure{subsubsection}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{
}% + \TitleMark\space \HtmlParOff} + {\HCode{
}\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsubsection}{}{} + {\ifvmode \IgnorePar\fi \EndP\bgroup\IgnorePar + \HCode{
}\HtmlParOff} + {\HCode{
}\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +>>> + + + +\<<< +\ConfigureMark{subsubsection} + {\ifHeadingNumbered \HCode{}\mw@seccntformat + \HeadingNumber \HCode{}\fi} +\Configure{subsubsection}{}{} + {\NoFonts \ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{
}% + \TitleMark \HtmlParOff} + {\HCode{
}\HtmlParOn \EndNoFonts \IgnoreIndent\egroup + \par\ShowPar} +\Configure{subsubsectionTITLE+}{\thesubsubsection \space#1} +>>> + + + +\<<< +\Configure{likesubsubsection}{}{} + {\ifvmode \IgnorePar\fi \EndP\bgroup\IgnorePar + \HCode{
}\HtmlParOff} + {\HCode{
}\HtmlParOn \IgnoreIndent\egroup \par\ShowPar} +>>> + + + + +\
<<<
+\ConfigureMark{subsubsection}
+   {\ifnum \c:secnumdepth>\c@secnumdepth   \expandafter\:gobble \else
+    \csname thetitlesubsubsection\endcsname\fi}
+\Configure{subsubsection}{}{}
+   {\EndP\bgroup \IgnorePar\HCode{
}% + \TitleMark\space} + {\HCode{
}\IgnoreIndent\egroup \par\ShowPar} +\Configure{likesubsubsection}{}{} + {\EndP\bgroup \IgnorePar\HCode{
}% + \TitleMark\space} + {\HCode{
}\IgnoreIndent\egroup \par\ShowPar} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sectioning Pagination} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{article,report,book} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +| |%should appear before TocAt|% +| +>>> + + + + + +\<<< +\:CheckOption{7} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + \fi +\else\:CheckOption{6} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + \fi +\else \:CheckOption{5} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + \fi +\else\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + \fi +\else\:CheckOption{1} \if:Option + | |%cut toc before cutat|% + | +\else + \Log:Note{for automatic sectioning + pagination, use the command line option + `1', `2', `3', '4', '5', '6', or '7'}% +\fi \fi \fi \fi \fi \fi \fi +>>> + +% + +\<<< +\CutAt{part} +\CutAt{likepart} +>>> + + + + +\<<< +\CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} +>>> + + + +\<<< +\CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +>>> + + +\<<< +\CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{AMS} +%%%%%%%%%%%%%%%%%%% + + + +\<<< +| +>>> + + + + +%%%%%%%%%%%%% +\subsection{File Naming} +%%%%%%%%%%%%% + +\<<< +\:CheckOption{sec-filename} \if:Option \else + \Log:Note{for files named after section + titles, use the command line option `sec-filename'}% +\fi +>>> + + +\<<< +\:CheckOption{7} + \if:Option \else \:CheckOption{6}\fi + \if:Option \else \:CheckOption{5}\fi + \if:Option \else \:CheckOption{4}\fi + \if:Option \else \:CheckOption{3}\fi + \if:Option \else \:CheckOption{2}\fi + \if:Option \else \:CheckOption{1}\fi +\if:Option + \:CheckOption{sec-filename} + \if:Option + |
+ \else + \Log:Note{For section filenames that reflect on + their titles use the command line + option `sec-filename'} + \fi +\fi +>>> + +\
<<< +\Configure{CutAt-filename}{% + \ifx \:NxtNwFN\:Undef + \tmp:toks={#2}% + \immediate\openout15=\jobname .tmp + \immediate\write15{\string\next{\the\tmp:toks}}% + \immediate\closeout15 + \bgroup + \def\next{\xdef\:temp}% + \csname no:catcodes\endcsname{32}{47}{9}% + \csname no:catcodes\endcsname{58}{64}{9}% + \csname no:catcodes\endcsname{91}{91}{9}% + \csname no:catcodes\endcsname{93}{96}{9}% + \csname no:catcodes\endcsname{126}{126}{9}% + \input \jobname .tmp + \egroup + \tmp:cnt=0 \uniq:fn + \fi +} +\def\uniq:fn{% + \expandafter\ifx + \csname ct:fn\:temp + \ifnum \tmp:cnt>0 \the\tmp:cnt\fi\endcsname\relax + \expandafter\global\expandafter\let + \csname ct:fn\:temp + \ifnum\tmp:cnt>0 \the\tmp:cnt\fi + \endcsname=\def + \ifx \:temp\empty \else + \NextFile{\:temp + \ifnum \tmp:cnt>0 \the\tmp:cnt\fi .\:html}% + \fi + \else + \advance\tmp:cnt by 1 \expandafter\uniq:fn + \fi +} +>>> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables of Contents: Choice of Entries} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,section,subsection} + \fi + \Configure{tableofcontents*}{part,section} +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,section,likesection,% + subsection,likesubsection} + \fi + | + \Configure{tableofcontents*}{part,likepart,section,likesection} +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,chapter,appendix,section} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,chapter,likechapter,appendix,% + section,likesection} + \fi +\fi +>>> + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*} + {part,chapter,appendix} +\else + | + \Configure{tableofcontents*} + {part,likepart,chapter,likechapter,appendix} +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,chapter,likechapter,appendix,% + section,likesection} + \TocAt*{likepart,/part,chapter,likechapter,appendix,% + section,likesection} + \fi +\fi +>>> + + + + +\<<< +\:CheckOption{notoc*} \if:Option +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,chapter,% + section,likesection,subsection,likesubsection} + \TocAt*{likepart,/part,% + section,likesection,subsection,likesubsection} + \fi +\fi +>>> + + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section\expandafter\ifx + \csname @chapter\endcsname\relax ,subsection\fi} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection\expandafter\ifx + \csname @chapter\endcsname\relax ,subsection,likesubsection\fi} +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{chapter,/likechapter,/appendix,/part,% + section,subsection} + \TocAt*{likechapter,/appendix,/chapter,/part,% + section,subsection} + \TocAt*{appendix,/chapter,/likechapter,/part,% + section,subsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{chapter,/likechapter,/appendix,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{likechapter,/appendix,/chapter,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{appendix,/chapter,/likechapter,/part,% + section,likesection,subsection,likesubsection} + \fi +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,appendix,section% + \expandafter\ifx \csname @chapter\endcsname\relax + ,subsection\fi} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection% + \expandafter\ifx \csname @chapter\endcsname\relax + ,subsection,likesubsection\fi} +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{section,/likesection,/chapter,/likechapter,/appendix,/part,% + subsection,subsubsection} + \TocAt*{likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsection,subsubsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{section,/likesection,/chapter,/likechapter,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \TocAt*{likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,likesubsection,subsection} +\fi +>>> + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + subsubsection,paragraph} + \TocAt*{likesubsection,/subsection,/likesection,% + /section,/chapter,/likechapter,/appendix,/part,% + subsubsection,paragraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + subsubsection,likesubsubsection,% + paragraph} + \TocAt*{likesubsection,/subsection,% + /likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsubsection,likesubsubsection,% + paragraph} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection} +\fi +>>> + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{subsubsection,/likesubsubsection,/subsection,% + /likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + paragraph,subparagraph} + \TocAt*{likesubsubsection,/subsubsection,/likesubsection,% + /subsection,/likesection,% + /section,/chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{subsubsection,/likesubsubsection,% + /subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \TocAt*{likesubsubsection,/subsubsection,/likesubsection,/subsection,% + /likesection,/section,/chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \fi +\fi +>>> + + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection,paragraph} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection,% + paragraph} +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{paragraph,/subsubsection,/likesubsubsection,/subsection,% + /likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + subparagraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{paragraph,/subsubsection,/likesubsubsection,% + /subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + subparagraph} + \fi +\fi +>>> + + + + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection,% + paragraph,subparagraph} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection,% + paragraph,subparagraph} +\fi +>>> + + +\<<< +\CutAt{subsubsection,subsection,likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsubsection,subsection,likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +>>> + +\<<< +\CutAt{paragraph,subsubsection,likesubsubsection,subsection,likesubsection,% + section,likesection,chapter,likechapter,appendix,part} +>>> + +\<<< +\CutAt{subparagraph,paragraph,subsubsection,likesubsubsection,% + subsection,likesubsection,% + section,likesection,chapter,likechapter,appendix,part} +>>> + + + + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,chapter,addchap,appendix,section} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,chapter,likechapter,addchap,appendix,% + section,likesection} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*} + {part,chapter,addchap,appendix} +\else + | + \Configure{tableofcontents*} + {part,likepart,chapter,likechapter,addchap,appendix} +\fi +>>> + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,chapter,addchap,appendix,section} + \TocAt*{likepart,/part,chapter,addchap,appendix,section} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{part,/likepart,chapter,likechapter,addchap,appendix,% + section,likesection} + \TocAt*{likepart,/part,chapter,likechapter,addchap,appendix,% + section,likesection} + \fi +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{chapter,/likechapter,/addchap,/appendix,/part,% + section,subsection} + \TocAt*{likechapter,/addchap,/appendix,/chapter,/part,% + section,subsection} + \TocAt*{addchap,/likechapter,/appendix,/chapter,/part,% + section,subsection} + \TocAt*{appendix,/chapter,/likechapter,/addchap,/part,% + section,subsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{chapter,/likechapter,/addchap,/appendix,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{likechapter,/addchap,/appendix,/chapter,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{addchap,/likechapter,/appendix,/chapter,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{appendix,/chapter,/likechapter,/addchap,/part,% + section,likesection,subsection,likesubsection} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{section,/likesection,/chapter,/likechapter,% + /addchap,/appendix,/part,% + subsection,subsubsection} + \TocAt*{likesection,/section,/chapter,/likechapter,% + /addchap,/appendix,/part,% + subsection,subsubsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \TocAt*{section,/likesection,/chapter,/likechapter,% + /addchap,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \TocAt*{likesection,/section,/chapter,/likechapter,% + /addchap,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \CutAt{subsection,section,chapter,addchap,appendix,part} + \CutAt{likesubsection,section,chapter,addchap,appendix,part} +\else + \CutAt{subsection,section,likesection,% + chapter,likechapter,addchap,appendix,part} + \CutAt{likesubsection,section,likesection,% + chapter,likechapter,addchap,appendix,part} +\fi +>>> + + + +\<<< +\ConfigureToc{foilheads}{}{ *\ }{}{} +\Configure{tableofcontents*}{foilheads} +>>> + + +The `notoc*' is applicable only to pages that are automatically +decomposed into separate web pages along section divides. It +should be used whe addcontentline instructions are present. + +\begin{verbatim} +\section*{....} +\addcontentsline{toc}{section}{....} +\end{verbatim} + + + +\<<< +\Log:Note{for tocs without * entries, use + command line option `notoc*'} +>>> + + + +\<<< +\:CheckOption{1} \if:Option + \:CheckOption{notoc*} \if:Option + \addcontentsline{toc}{section}{\indexname}% + \fi +\else \:CheckOption{2} \if:Option + \:CheckOption{notoc*} \if:Option + \addcontentsline{toc}{section}{\indexname}% + \fi +\else \:CheckOption{3} \if:Option + \:CheckOption{notoc*} \if:Option + \addcontentsline{toc}{section}{\indexname}% + \fi +\else \:CheckOption{4} \if:Option + \:CheckOption{notoc*} \if:Option + \addcontentsline{toc}{section}{\indexname}% + \fi +\else + \addcontentsline{toc}{section}{\indexname}% +\fi \fi \fi \fi +>>> + + + +\<<< +\Log:Note{to eliminate mini tables of + contents, use the command line option `nominitoc'} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables of Contents: Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{TocAt} + {|% + \Configure{tableofcontents} + {\IgnorePar\EndP\HCode{
}\IgnorePar} + {}{\IgnorePar\HCode{
}\ShowPar}{\HCode{}}{}% + \ifvmode \IgnorePar\fi \EndP + } + {|\par\ShowPar} +\Configure{TocAt*} + {|% + \Configure{tableofcontents} + {\IgnorePar\EndP\HCode{
}\IgnorePar} + {}{\IgnorePar\HCode{
}\ShowPar}{\HCode{}}{}% + \ifvmode \IgnorePar\fi \EndP + } + {|\par\ShowPar} +>>> + + + + +\<<< +\Configure{tableofcontents} + {\IgnorePar\EndP\HCode{
}\IgnorePar} + {\ifTag{tex4ht-body}{\HCode{
}\Link{tex4ht-body}{}Home\EndLink}{}} + {\IgnorePar\EndP\HCode{
}\ShowPar} + {\HCode{}} {} +>>> + +\<<< +\let\sv:atoc|=\a:tableofcontents +\let\sv:btoc|=\b:tableofcontents +\let\sv:ctoc|=\c:tableofcontents +\let\sv:dtoc|=\d:tableofcontents +\let\sv:etoc|=\e:tableofcontents +>>> + + +\<<< +\let\a:tableofcontents|=\sv:atoc +\let\b:tableofcontents|=\sv:btoc +\let\c:tableofcontents|=\sv:ctoc +\let\d:tableofcontents|=\sv:dtoc +\let\e:tableofcontents|=\sv:etoc +>>> + + +\<<< +\def\tocpart#1#2#3{\par\:SPAN{partToc}{\if !#1!\else #1~~\fi #2}\par}% +\def\toclikepart#1#2#3{\par\:SPAN{likepartToc}{#2}\par}% +|% +\expandafter\ifx \csname @chapter\endcsname\relax + \def\tocsection#1#2#3{\par + \:SPAN{sectionToc}{\def\:temp{#1}\ifx \:temp\empty\else + #1 \fi #2}\par} + \def\toclikesection#1#2#3{\par\:SPAN{likesectionToc}{#2}\par}% + \def\tocsubsection#1#2#3{\par\ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par\ \:SPAN{likesubsectionToc}{#2}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \:SPAN{likesubsubsectionToc}{#2}\par} + \def\tocparagraph#1#2#3{\par\ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par\ \ \:SPAN{likeparagraphToc}{#2}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \:SPAN{likesubparagraphToc}{#2}\par} +\else + |% + \def\tocchapter#1#2#3{\par\:SPAN{chapterToc}{\ifnum \c@secnumdepth >\m@ne + #1 \fi #2}\par} + \def\toclikechapter#1#2#3{\par\:SPAN{likechapterToc}{#2}\par}% + \def\tocappendix#1#2#3{\par\:SPAN{appendixToc}{#1 #2}\par} + \def\tocsection#1#2#3{\par\ \toc:num{section}{#1}{#2}\par} + \def\toclikesection#1#2#3{\par\ \:SPAN{likesectionToc}{#2}\par} + \def\tocsubsection#1#2#3{\par\ \ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par + \ \ \:SPAN{likesubsectionToc}{#2}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \ \:SPAN{likesubsubsectionToc}{#2}\par} + \def\tocparagraph#1#2#3{\par\ \ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par + \ \ \ \:SPAN{likeparagraphToc}{#2}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \ \:SPAN{likesubparagraphToc}{#2}\par} +\fi +\def\toc:num#1#2#3{\def\:temp{#1#2}\:SPAN{#1Toc}{\ifx \:temp\empty \else + #2 \fi #3}} +>>> + + + +\<<< +\def\tocpart#1#2#3{\par\:SPAN{partToc}{\if !#1!\else #1~~\fi #2}\par}% +\def\toclikepart#1#2#3{\par\:SPAN{likepartToc}{#2}\par}% +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} + \Css{.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, + .appendixToc a, .appendixToc, .addchapToc a + {line-height: 200\%; font-weight:bold;}} + \def\tocchapter#1#2#3{\par\:SPAN{chapterToc}{#1~~#2}\par} + \def\toclikechapter#1#2#3{\par\:SPAN{likechapterToc}{#2}\par}% + \def\tocaddchap#1#2#3{\par\:SPAN{addchapToc}{#2}\par}% + \def\tocappendix#1#2#3{\par\:SPAN{appendixToc}{#1~~#2}\par} + \def\tocsection#1#2#3{\par\ \toc:num{section}{#1}{#2}\par} + \def\toclikesection#1#2#3{\par\ \:SPAN{likesectionToc}{#2}\par} + \def\tocsubsection#1#2#3{\par\ \ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par + \ \ \:SPAN{likesubsectionToc}{#2}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \ \:SPAN{likesubsubsectionToc}{#2}\par} + \def\tocparagraph#1#2#3{\par\ \ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par + \ \ \ \:SPAN{likeparagraphToc}{#2}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \ \:SPAN{likesubparagraphToc}{#2}\par} +\def\toc:num#1#2#3{\def\:temp{#1#2}\:SPAN{#1Toc}{\ifx \:temp\empty \else + #2~~\fi #3}} +>>> + + +\<<< +\def\tocpart#1#2#3{\par\:SPAN{partToc}{\if !#1!\else #1~~\fi #2}\par}% +\def\toclikepart#1#2#3{\par\:SPAN{likepartToc}{#2}\par}% +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} +% +\expandafter\ifx \csname @chapter\endcsname\relax + \def\tocsection#1#2#3{\par + \:SPAN{sectionToc}{\def\:temp{#1}\ifx \:temp\empty\else + #1 \fi #2}\par} + \def\toclikesection#1#2#3{\par\:SPAN{likesectionToc}{#2}\par}% + \def\tocsubsection#1#2#3{\par\ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par\ \:SPAN{likesubsectionToc}{#2}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \:SPAN{likesubsubsectionToc}{#2}\par} + \def\tocparagraph#1#2#3{\par\ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par\ \ \:SPAN{likeparagraphToc}{#2}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \:SPAN{likesubparagraphToc}{#2}\par} +\else + \Css{.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, + .appendixToc a, .appendixToc + {line-height: 200\%; font-weight:bold;}} +% + \def\tocchapter#1#2#3{\par\:SPAN{chapterToc}{#1 #2}\par} + \def\toclikechapter#1#2#3{\par\:SPAN{likechapterToc}{#2}\par}% + \def\tocappendix#1#2#3{\par\:SPAN{appendixToc}{#1 #2}\par} + \def\tocsection#1#2#3{\par\ \toc:num{section}{#1}{#2}\par} + \def\toclikesection#1#2#3{\par\ \:SPAN{likesectionToc}{#2}\par} + \def\tocsubsection#1#2#3{\par\ \ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par + \ \ \:SPAN{likesubsectionToc}{#2}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \ \:SPAN{likesubsubsectionToc}{#2}\par} + \def\tocparagraph#1#2#3{\par\ \ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par + \ \ \ \:SPAN{likeparagraphToc}{#2}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \ \:SPAN{likesubparagraphToc}{#2}\par} +\fi +\def\toc:num#1#2#3{\def\:temp{#1#2}\:SPAN{#1Toc}{\ifx \:temp\empty \else + #2 \fi #3}} +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{Tables of Contents} +%%%%%%%%%%%%%%%%%%% + + +\<<< +\ConfigureToc{part} + {\HCode{}\toc:Mark{part}} + {\End:Mark} + {} + {\HCode{}} +\ConfigureToc{section} + {\HCode{}\toc:Mark{section}} + {\End:Mark} + {} + {\HCode{}} +\ConfigureToc{subsection} + {\HCode{}~~\toc:Mark{subsection}} + {\End:Mark} + {} + {\HCode{}} +\ConfigureToc{subsubsection} + {\HCode{}~~~~\toc:Mark{subsubsection}} + {\End:Mark} + {} + {\HCode{}} +\def\toc:Mark#1#2\End:Mark{\if !#2!\else + \expandafter\ifx \csname #1name\endcsname\relax\else + \csname #1name\endcsname~\fi #2.~~\fi} +>>> + + +\<<< +\ConfigureToc{likepart} + {\HCode{}} + {\empty} + {} + {\HCode{}} +\ConfigureToc{chapter} + {\HCode{}% + \ifx \chaptername\:UnDef\else \chaptername~\fi} + {.~~} + {} + {\HCode{}} +\ConfigureToc{likechapter} + {\HCode{}} + {~~} + {} + {\HCode{}} +\ConfigureToc{appendix} + {\HCode{}% + \ifx \appendixname\:UnDef\else \appendixname~\fi} + {.~~} + {} + {\HCode{}} +>>> + +\<<< +\Css{.chapterToc a, .chapterToc, .appendixToc a, .appendixToc + {line-height: 200\%; font-weight:bold;}} +>>> + + +\<<< +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables and Arrays} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX Tabule} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\ConfigureEnv{table} + {\ifvmode \IgnorePar\fi \EndP \HCode{
}} + {\ifvmode \IgnorePar\fi \EndP \HCode{
}\par\ShowPar} + {}{} +>>> + +%%%%%%%%%%%%% +\subsection{multirow} +%%%%%%%%%%%%% + +\<<< +\Configure{multirow} + {\HCode{
}} + {\HCode{
}} +>>> + + +%%%%%%%%%%%%% +\subsection{tabulary} +%%%%%%%%%%%%% + + +\<<< +\Configure{halignTD} {}{} + {<}{\HCode{ % align="left" + style="white-space:nowrap; text-align:left;"}} + {-}{\HCode{ % align="center" + style="white-space:nowrap; text-align:center;"}} + {>}{\HCode{ % align="right" + style="white-space:nowrap; text-align:right;"}} + {l}{\HCode{ % align="left" + style="white-space:nowrap; text-align:left;"}} + {c}{\HCode{ % align="center" + style="white-space:nowrap; text-align:center;"}} + {r}{\HCode{ % align="right" + style="white-space:nowrap; text-align:right;"}} + {^}{\HCode{ valign="top" style="white-space:nowrap;"}} + {=}{\HCode{ valign="baseline" style="white-space:nowrap;"}} + {||}{\HCode{ valign="middle" style="white-space:nowrap;"}} + {_}{\HCode{ valign="bottom" style="white-space:nowrap;"}} + {p}{\HCode{ % align="left" + style="white-space:wrap; text-align:left;"}} + {m}{\HCode{ % align="left" + style="white-space:nowrap; text-align:left;" valign="middle"}} + {b}{\HCode{ % align="left" + style="white-space:wrap; text-align:left;" valign="baseline"}} + {L}{\HCode{ style="white-space:wrap; text-align:left;"}} + {R}{\HCode{ style="white-space:wrap; text-align:right;"}} + {C}{\HCode{ style="white-space:wrap; text-align:center;"}} + {J}{\HCode{ style="white-space:wrap;"}} + {} +>>> + +\<<< +\ConfigureEnv{tabulary} + {|% + \IgnorePar|\EndP\HCode{
}% + \PushStack\Col:Marg\AllColMargins + } + {\HCode{
}\PopStack\Col:Marg\AllColMargins\ShowPar + |% + |% + }{}{} +>>> + + +\<<< + \Configure{tabulary} + {\ifvmode \IgnorePar\fi \EndP \halignTB{tabulary}\putVBorder } + {|\HCode{}} + {\HCode{}} + {\r:HA} + {\HCode{1 colspan="\HMultispan"\fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}\NoFonts\ColMargins\EndNoFonts + \HCode{">}|\PushStack\Table:Stck\TableNo} + {|\PopStack\Table:Stck\TableNo \d:HA} +>>> + + +\<<< +\Configure{halignTB<>}{tabulary}{\HCode{class="tabulary"\Hnewline + cellspacing="0" cellpadding="0" \GROUPS\Hnewline + frame="\ifx \GROUPS\empty void\else border\fi" id="TBL-\TableNo-" + }<>\HAlign} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Bibliography} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Cite} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{cite} + {\HCode{}} + {\HCode{}} + {\Link[ |]} + {\EndLink } +\expandafter\def\csname c:mouseover-cite:\endcsname{% + \def\:tempb{cite}\csname c:mouseover-?:\endcsname} +\Configure{mouseover-cite}{tex4ht.body,FULLHTML} +>>> + + +\<<< +\mo:args{cite}{\@citeb}{\expandafter + \jsHash\expandafter{\expandafter X\@citeb}}% +>>> + + + + + + + + +\<<< +\Configure{cite}{}{}{}{}% +>>> + + +\<<< +\string\Configure{mouseover-vars}{cite}{Author,Title}% +>>> + + +\<<< +\string\Configure {mouseover-cite} + {tex4ht.body,CAPTION,tex4ht.caption+tex4ht.var,FULLHTML}% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Bib Item} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{bibitem}{\Link}{\EndLink} +>>> + +\<<< +\Configure{bibitem} + {\bibitem:link} + {\EndLink|} +\def\bibitem:link#1#2{|\HCode + {}\Link{#1}{#2}} +>>> + + + +\<<< +\Configure{HtmlPar} + {\EndP\HCode{

}} + {\EndP\HCode{

}} + {\Tg

} {\Tg

}% +>>> + + + +\<<< +\Configure{HtmlPar} + {\EndP\HCode{

}} + {\EndP\HCode{

}} + {\Tg

} {\Tg

}% +>>> + + +\<<< + \Configure{bibitem2} + {|\par\ShowPar + \HCode{}% + |% + } + {\EndP} + {\HCode{}~~~\HCode{}} +>>> + + +\<<< +\HCode{}% +|% +>>> + +\<<< +|% +\HCode{}% +>>> + +\<<< +.js p.bibitem-p +>>> + +\<<< +js p.bibitem +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The Bibliography} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +The bibliography environment is prooblematic because +it carries a definition that implies an environment similar +to + +\begin{verbatim} + \begin{....} + \section*{...} + ... + \end{....} +\end{verbatim} + +The \verb+\begin{...}+ has a \verb+\SaveEverypar+, and + \verb+\end{...}+ has a \verb+\RecallEverypar+. In the case of +paginations across sectioning commands, we have also the saving and +recalling also at the start and end of each section (each page). In +such a case, we don't have proper nestings of environments. + + + + + +\<<< +\ConfigureEnv{thebibliography}{\IgnorePar}{\ShowPar\par}{}{} +>>> + +\<<< +\ConfigureEnv{thebibliography}{\par\leavevmode}{\ShowPar}{}{} +>>> + + + + + + +\<<< +\<<< +\<<< +\<<< +\<<< +\<<< + + +\<<< +\ConfigureList{thebibliography}% + {\ifvmode\IgnorePar\fi \EndP \HCode{
}\let\en:bib=\empty} + {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{
}} + {\en:bib\def\en:bib{|\EndP}% + |\par\ShowPar + \HCode{}|} + {\HCode{}\:nbsp + \:nbsp\:nbsp\HCode{}} +>>> + + +\<<< +\:CheckOption{bibtex2} \if:Option + \Configure{bibliography2} + {~~[} {more} {]} + |% +\fi +>>> + + + + + +\<<< +\:CheckOption{no-bib} \if:Option\else + \:CheckOption{mouseover} \if:Option + | + | + \else + | + | + \fi +\fi +>>> + + +\<<< +\:CheckOption{no-bib} \if:Option\else + \:CheckOption{mouseover} \if:Option + | + \else + | + \fi + | +\fi +>>> + +\<<< +\csname bibliography2\endcsname +>>> + +\<<< +|\csname bibliography2\endcsname +|% +>>> + + + + + +% \HCode{\Hnewline\string\jselement{footnote}% +% \string\jselement{bibitem}\Hnewline}% + + + + + +\<<< +\Configure{vol}{\HCode{}}{\HCode{}} +\Configure{book}{\HCode{}}{\HCode{}} +\Configure{paper}{\HCode{}}{\HCode{}} +\Configure{Refs}{\IgnorePar\EndP\HCode{}} + {\HCode{
}} +\Configure{ref}{\HCode{}} + {\EndP\HCode{}}{} +\Configure{keyformat}{}{\EndP\HCode{}} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{acm-proc-article-sp} +%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{no-bib} \if:Option\else + \:CheckOption{mouseover} \if:Option + | + \else + | + \fi + | +\fi +>>> + + +\<<< +\ConfigureEnv{thebibliography}% + {\ifvmode\IgnorePar\fi \EndP \HCode{
}\let\en:bib=\empty} + {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{
}} + {}{} +\ConfigureList{thebibliography}% + {}{} + {\en:bib\def\en:bib{|\EndP}% + |\par\ShowPar + \HCode{}|} + {\HCode{}\:nbsp + \:nbsp\:nbsp\HCode{}} +>>> + + +\<<< +\ConfigureEnv{thebibliography}% + {\ifvmode\IgnorePar\fi\EndP |\HCode{
}\let\en:bib=\empty} + {\en:bib \ifvmode\IgnorePar\fi\EndP \HCode{
}} + {}{} +\ConfigureList{thebibliography}% + {}{} + {\en:bib\def\en:bib{|% + \EndP}||% + |\par\ShowPar + \leavevmode |\HCode{}|} + {\HCode{}\:nbsp + \:nbsp\:nbsp\HCode{}|} +>>> + + + +%%%%%%%%%%%%%%%% +\subsection{JS Contributions} +%%%%%%%%%%%%%%%% + + + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex From bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Skip bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Cont bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Set1 bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Set2 bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Addr1 bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Addr2 bib }% +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Lists} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\Css{li p.indent { text-indent: 0em }} +\ConfigureEnv{trivlist} + {}{|}{}{} +\ConfigureList{trivlist}% + {\EndP\HCode{
}% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
}\bgroup \bf} + {\egroup\HCode{
}} +\ConfigureEnv{list} + {}{|}{}{} +\ConfigureList{list}% + {\EndP\HCode{
}% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
}\bgroup \bf} + {\egroup\HCode{
}} +\ConfigureEnv{itemize} + {\ifvmode \IgnorePar\fi \EndP}{|} + {}{} +\ConfigureList{itemize}% + {\EndP\HCode{
    }% + |\global\let\end:itm=\empty} + {|\ifvmode \IgnorePar\fi + \EndP\HCode{
}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\DeleteMark} + {\HCode{
  • }} +\ConfigureEnv{enumerate} + {}{|}{}{} +\:CheckOption{li-} \if:Option + \ConfigureList{enumerate}% + {|} + {|} + {|} + {|} +\else + \ConfigureList{enumerate}% + {|} + {|} + {|} + {|} + \Log:Note{for enumerated list elements li's with value attributes, + use the command line option `li-'} +\fi +\:CheckOption{css2} \if:Option + | +\else + \Log:Note{for CSS2 code, use the command line option `css2'} +\fi +>>> + +\<<< +\bgroup + \def\textbullet{&\#x2219;} + \def\textasteriskcentered{&\#x2217;} + \Css{ul.itemize1 {list-style-type: none;}} + \Css{ul.itemize1 li.itemize:before { display: marker; + marker-offset: 0.5em; + content: "\labelitemi\space" }} + \Css{ul.itemize2 {list-style-type: none;}} + \Css{ul.itemize2 li.itemize:before { display: marker; + marker-offset: 0.5em; + content: "\labelitemii\space" }} + \Css{ul.itemize3 {list-style-type: none;}} + \Css{ul.itemize3 li.itemize:before { display: marker; + marker-offset: 0.5em; + content: "\labelitemiii\space" }} +\egroup +>>> + +It is better to put the LI in the third field to avoid extra space +to the following text. + +\<<< +\def\c:enumerate:#1{\c:enu #1|} +\def\c:enu#1#2#3#4#5|{% +\def\a:enumerate:{\ifcase \@enumdepth \or + #1\or #2\or #3\or #4\else\fi #5}} +>>> + +\<<< +\Configure{enumerate}{{}{}{}{}} +\Css{.enumerate1 {list-style-type:decimal;}} +\Css{.enumerate2 {list-style-type:lower-alpha;}} +\Css{.enumerate3 {list-style-type:lower-roman;}} +\Css{.enumerate4 {list-style-type:upper-alpha;}} +>>> + +\<\><<< +\:CheckOption{html+} \if:Option + \Configure{enumerate} + {% + {style="list-style-type:decimal"}% + {style="list-style-type:lower-alpha"}% + {style="list-style-type:lower-roman"}% + {style="list-style-type:upper-alpha"}% + } +\else + \Log:Note{for stricter html code, + use the command line option `html+'} + \Configure{enumerate}{% + {type="\theenumi"}% + {type="\theenumii"}% + {type="\theenumiii"}% + {type="\theenumiv"}} +\fi +>>> + +% \Configure{enumerate}{{type="1"}{type="a"}{type="i"}{type="A"}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Prosper} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{Itemize} + {\ifvmode \IgnorePar\fi \EndP}{|} + {}{} +\ConfigureList{Itemize}% + {\EndP\HCode{
      }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
    }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg
  • }\DeleteMark} + {\HCode{
  • }} +>>> + +\<<< +\ConfigureEnv{itemstep} + {\ifvmode \IgnorePar\fi + \EndP\HCode{
      }% + |\global\let\end:itm=\empty} + {|\ifvmode \IgnorePar\fi\EndP + \HCode{
    }\ShowPar} + {} + {} +\ConfigureList{itemstep} + {} + {} + {\end:itm \global\def\end:itm{\EndP\Tg
  • }\DeleteMark} + {\HCode{
  • }} +\Css{li.itemize-hide {visibility:hidden;}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Jeep} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<<< +\ConfigureEnv{outline} + {}{|}{}{} +\ConfigureList{outline}% + {|} + {|} + {|} + {|} +>>> + +\<<< +\EndP\HCode{
      }|\global\let\end:itm=\empty +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Description} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\ConfigureList{description}% + {\EndP\HCode{
      }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
      }\bgroup \bf} + {\egroup\EndP\HCode{
      }} +>>> + +\<32,4 report,book\><<< +\ConfigureEnv{description}{\IgnorePar}{}{}{} +>>> + +\<<< +\ConfigureEnv{description}{\IgnorePar}{}{}{} +>>> + +\<<< +\ConfigureEnv{description}{\IgnorePar}{}{}{} +>>> + +\<<< +| +\ConfigureEnv{description}{\IgnorePar}{}{}{} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{List Utilities} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +Latex allows groups like the following, so we need global \verb+\end:itm+ + +\begin{verbatim} +\begin{enumerate} +{\item Line 1} +{\item Line 2} +\end{enumerate} +\end{verbatim} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{mdwlist} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{itemize*} + {\ifvmode \IgnorePar\fi \EndP}{|} + {}{} +\ConfigureList{itemize*}% + {\EndP\HCode{
        }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\DeleteMark} + {\HCode{
    1. }} +\ConfigureEnv{enumerate*} + {}{|}{}{} +\ConfigureList{enumerate*}% + {|} + {|} + {|} + {|} +\ConfigureList{description*}% + {\EndP\HCode{
      }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
      }\bgroup \bf} + {\egroup\EndP\HCode{
      }} +\ConfigureList{basedescript} + {\EndP\HCode{
      }% + \PushMacro\end:itm \global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
      }\bgroup \bf} + {\egroup\EndP\HCode{
      }} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Index} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +| +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Scr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<32,4 report,book\><<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \chapter*{\indexname}\fi} +>>> + +\<<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \section*{\indexname}\fi} +>>> + + +\<<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \chapter*{\indexname}\fi} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{multiind} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\Configure{@begin}{theindex} + {\ifx \indexname\empty \else|\fi} +>>> + + +% \ifx \indexname\empty \else +% \ifx\chapter\:Undef \section*{\indexname}\else +% \chapter*{\indexname}\fi +% \let\indexname=\empty +% \fi +% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Index} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{NoSection} + {\let\sv:index|=\p@index \let\sv:label|=\label + \let\sv:newline|=\newline \def\newline{ }% + \def\p@index[##1]{\@gobble}\let\label|=\@gobble + |% + } + {\let\p@index|=\sv:index \let\label|=\sv:label + |% + \let\newline|=\sv:newline + } +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{texinfo} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{index} + {\IgnorePar\leavevmode\EndP\Tg
      } + {\IgnorePar\EndP\Tg
      } + {\leavevmode\Tg} + {\Tg\Tg
      \IgnorePar} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{ConTeXt} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<<< +\catcode`\!=11 +| +| +| +| +| +| +| +| +| +| +| +| +| +\catcode`\!=12 +>>> + +\<<< +\NewConfigure{-@@ly}{2} +>>> + +\<<< +\Configure{-@@ur} + {\HCode{}} + {\HCode{}} +>>> + + +\<<< +\v!hoofdstuk +>>> + +\<<< +\v!paragraaf +>>> + +\<<< +\v!sub \v!paragraaf +>>> + +\<<< +\v!sub \v!sub \v!paragraaf +>>> + +\<<< +\v!sub \v!sub \v!sub \v!paragraaf +>>> + +\<<< +\v!sub \v!sub \v!sub \v!sub \v!paragraaf +>>> + + + +\<<< +\Configure{sectie} + {\gHAdvance \sec:Level by 1\relax + \ifnum \sec:Level=1 + \ifvmode \IgnorePar\fi \EndP + \HCode{
      }% + \else + \HCode{}% + \fi + } + {\ifnum \sec:Level=1 + \ifvmode \IgnorePar\fi \EndP + \HCode{
      }% + \else + \HCode{}% + \fi + \gHAdvance \sec:Level by -1\relax + } +\HAssign\sec:Level=0 +>>> + + + + +\<<< +\def\:tmp#1#2{% + \ConfigureMark{#1} + {\HCode{}\finalsectionnumber + \HCode{}} + \Configure{#1}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<#2 class="#1Head"\a:LRdir>}\NoFonts + \TitleMark\space\HtmlParOff} + {\EndNoFonts \HCode{}\HtmlParOn + \IgnoreIndent \par \ShowPar} + \Configure{chapterTITLE+}{\finalsectionnumber\space##1} + \ifx \end:secs\empty \else + \edef\:temp{\noexpand\Configure{end#1}{\end:secs}}\:temp + \fi + \edef\end:secs{\end:secs,#1}% + \NewConfigure{#1-ko}{2} +} +\def\end:secs{} +\def\:tempd#1{\edef\:temp{\noexpand\:tmp{#1}}\:temp} +\:tempd{|}{h1} +\:tempd{|}{h2} +\:tempd{|}{h3} +\:tempd{|}{h4} +\:tempd{|}{h5} +\:tempd{|}{h5} +>>> + +\<<< +\ConfigureMark{part} + {\HCode{}\finalsectionnumber + \HCode{}} +\Configure{part}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

      }\NoFonts + \TitleMark\space\HtmlParOff} + {\EndNoFonts \HCode{

      }\HtmlParOn \IgnoreIndent \par} +\Configure{partTITLE+}{\finalsectionnumber\space#1} +>>> + +\<<< +\ConfigureMark{chapter} + {\HCode{}\finalsectionnumber + \HCode{}} +\Configure{chapter}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

      }\NoFonts + \TitleMark\space\HtmlParOff} + {\EndNoFonts \HCode{

      }\HtmlParOn + \IgnoreIndent \par \ShowPar} +\Configure{chapterTITLE+}{\finalsectionnumber\space#1} +\Configure{endsection}{part} +>>> + + + +\<<< +\Configure{placecontent} + {\ifvmode \IgnorePar\fi \EndP + \def\toc:br{\def\toc:br{\HCode{}}}% + \HCode{
      }\IgnorePar} + {} + {\IgnorePar\EndP\HCode{
      }\ShowPar} + {} {} +\Configure{contenthead} + {\ifvmode \IgnorePar\fi \EndP \HCode{

      }\NoFonts} + {\ifvmode \IgnorePar\fi \EndNoFonts \HCode{

      }\par} +>>> + + + +\<<< +\ConfigureToc{part} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + + + +\<<< +\ConfigureToc{chapter} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{section} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{subsection} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{subsubsection} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{subsubsubsection} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{subsubsubsubsection} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + + +\<<< +\Configure{narrower} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} +\Css{div.narrower {margin-left:2em; margin-right:2em;}} +>>> + + + +\<<< +\Configure{midaligned} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }\par} +\Configure{leftaligned} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }\par} +\Configure{rightaligned} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }\par} +\Css{div.midaligned {text-align:center;}} +\Css{div.leftaligned {text-align:left;}} +\Css{div.rightaligned {text-align:right;}} +>>> + + +\<<< +\Configure{startstop} + {\ifvmode \IgnorePar \EndP + \HCode{
      }\par + \def\end:startstop{\ifvmode \IgnorePar \EndP \fi + \HCode{
      }\par}% + \else + \HCode{}% + \def\end:startstop{\ifvmode \IgnorePar \HCode{}\par + \else \HCode{}\fi}% + \fi} + {\end:startstop} +>>> + + +\<<< +\Configure{description-item} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      +
      }\everypar{}} + {\HCode{
      }\everypar{\HtmlPar}\par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} +>>> + +\<<< +\Configure{description-word} + {\HCode{}} + {\ifvmode \IgnorePar \HCode{}\par + \else \HCode{}\fi} +>>> + + + +\<<< +\Configure{itemgroup} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
      }\let\end:dd=\empty} + {\ifvmode\IgnorePar\fi \EndP \end:dd \HCode{
      }} +\Configure{head-listitem} + {\ifvmode\IgnorePar\fi \EndP + \end:dd \HCode{
      }} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
      }\def\end:dd{\HCode{
      }}} +\Configure{symbol-listitem} + {\ifvmode\IgnorePar\fi \EndP + \end:dd \HCode{
      }} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
      }\def\end:dd{\HCode{
      }}} +\Configure{other-listitem} + {\ifvmode\IgnorePar\fi \EndP + \end:dd \HCode{
      }} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
      }\def\end:dd{\HCode{
      }}} +>>> + +\<<< +\Configure{typing} + {\ifvmode \IgnorePar\fi \EndP \par \ShowPar + \def\verb:par{% + \HCode{
      }% + \gdef\verb:par{\HCode{
      }}}% + } + {\ifvmode \IgnorePar\fi \HCode{
      }\par} + {\verb:par} + {\HCode{\string&}\HChar{-35}\HCode{x00A0;}} +\Css{div.typing + {font-family: monospace; white-space: nowrap; }} +>>> + + +\<<< +\Configure{plaatsblok} + {\ifvmode \IgnorePar\fi \EndP\HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP\HCode{
      }} +\Configure{caption} + {\HCode{}} {\HCode{}} + {\HCode{}} {\HCode{}} +>>> + +Q. Where placefigure is declared? + +\<<< +\NewConfigure{figure}{2} +\Configure{figure} + {\ifvmode \IgnorePar\fi \EndP\HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP\HCode{
      }} +>>> + + +\<<< +\Configure{externalfigure}{\Picture[fig]} +>>> + +\<<< +\Configure{figure-li} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }\par\IgnorePar} + {\HCode{}} + {\HCode{
      }} +\Configure{-@@kjfigure} + {\HCode{}} + {\HCode{}} +>>> + + +\<<< +\Configure{title-ko} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }% + \def\end:ko{\ifvmode \IgnorePar\fi \EndP \HCode{
      }}\bgroup + \aftergroup\end:ko + \Configure{title-ko}{\bgroup}{\egroup}% + } + {\egroup } +>>> + + + +\<<< +\Configure{\v!tabulate} + {\ifvmode \IgnorePar\fi + \EndP \HCode{
      }}
      +   {\ifvmode\IgnorePar\fi\HCode{
      }\par} +>>> + + + +\<<< +\Configure{table} + {\PushStack\Table:Stck\TableNo + \PushStack\Row:Stck\HRow \HAssign\HRow=0\relax + \PushStack\Col:Stck\Prev:Col + \gHAdvance\Table:No by 1\relax + \HAssign\TableNo=\Table:No\relax + \ifvmode \IgnorePar\fi \EndP\halignTB{table}\putVBorder +} + {\HCode{}% + \PopStack\Table:Stck\TableNo + \PopStack\Row:Stck\HRow + \PopStack\Col:Stck\Prev:Col + } + {\gHAdvance\HRow by 1 + \HCode{}% + \currentTABLEcolumn=0 \gHAssign\Prev:Col=0 } + {\HCode{}} + {\HAssign\HCol=\the\currentTABLEcolumn\relax + \HAssign\HMultispan=\HCol\relax + \HAdvance\HMultispan by -\Prev:Col\relax + \gHAssign\Prev:Col=\HCol\relax + \HAdvance\HCol by 1\relax + \ifnum \HMultispan>1 \HAdvance\HCol by 1 + \HAdvance\HCol by -\HMultispan\relax \fi + \HCode{\Hnewline1 colspan="\HMultispan" \fi >}% +\gdef\dd:table{% + \gdef\dd:table{}% + \x:tableCell + \d:table}% +\def\x:tableCell{\e:tableCell \global\let\x:tableCell=\empty}% +} + {\HCode{}} + +\HAssign\Table:No=0 +\HAssign\TableNo=0 +\HAssign\Prev:Col=0 +\HAssign\HRow=0 +>>> + + +\<<< +\Configure{tableCell} + {\e:table\HCode{
      }\ShowPar\par} + {\e:table\HCode{
      }\ShowPar\par} + {\e:table\HCode{
      }\ShowPar\par} + {\e:table\HCode{
      }\ShowPar\par} + {\ifvmode \IgnorePar\fi \EndP\HCode{
      }\f:table} +>>> + + +\<<< +\let\VBorder\empty \let\AllColMargins\empty +\Configure{VBorder} + {\let\VBorder\empty + \let\AllColMargins\empty + \global\let\GROUPS\empty + \HAssign\NewGroup = 0 + } + {% + \let\:temp\TableNo \let\TableNo=\relax + \edef\VBorder{\VBorder\ifnum \NewGroup> 0 \fi}% + \let\TableNo\:temp + \HAssign\NewGroup = 0 + \gdef\GROUPS{rules="groups"}% + } + {\Advance:\NewGroup by 1 + \let\:temp\TableNo \let\TableNo=\relax + \ifnum \NewGroup=1 \edef\VBorder{\VBorder}\fi + \edef\VBorder{\VBorder}\xdef\AllColMargins{\AllColMargins1}% + \let\TableNo\:temp + } + {% + \let\:temp\TableNo \let\TableNo=\relax + \edef\AllColMargins{\AllColMargins 0}% + \let\TableNo\:temp + } + +\Css{table.table td {vertical-align:top;}} +>>> + +\<<< +\Css{table.table td { padding-left:3pt; padding-right:3pt; }} + +\Configure{halignTB}{\HCode{}} +\Configure{halignTB<>}{table}{\HCode{class="table"\Hnewline + cellspacing="0" cellpadding="0" \GROUPS\Hnewline + frame="\ifx \GROUPS\empty void\else border\fi" id="TBL-\TableNo-" + }<>\HAlign} +>>> + +\<<< +\Configure{TABLElongrule}{\HCode{
      }} +\Configure{TableHL} + {\TABLEnoalign{% + \HCode{
      }% +\tmp:cnt=\maxTABLEcolumn +\advance\tmp:cnt by 2 +\HCode{}% + \HCode{}}% +} +>>> + + +\<<< +\Configure{halignTD} {}{} + {<}{\HCode{ % align="left" + style="white-space:nowrap; text-align:left;"}} + {-}{\HCode{ % align="center" + style="white-space:nowrap; text-align:center;"}} + {>}{\HCode{ % align="right" + style="white-space:nowrap; text-align:right;"}} + {l}{\HCode{ % align="left" + style="white-space:nowrap; text-align:left;"}} + {c}{\HCode{ % align="center" + style="white-space:nowrap; text-align:center;"}} + {r}{\HCode{ % align="right" + style="white-space:nowrap; text-align:right;"}} + {^}{\HCode{ valign="top" style="white-space:nowrap;"}} + {=}{\HCode{ valign="baseline" style="white-space:nowrap;"}} + {||}{\HCode{ valign="middle" style="white-space:nowrap;"}} + {_}{\HCode{ valign="bottom" style="white-space:nowrap;"}} + {p}{\HCode{ % align="left" + style="white-space:wrap; text-align:left;"}\Protect\a:HColWidth} + {m}{\HCode{ % align="left" + style="white-space:nowrap; text-align:left;" valign="middle"}} + {b}{\HCode{ % align="left" + style="white-space:nowrap; text-align:left;" valign="baseline"}} + {} +>>> + + +\<<< +\Configure{index} + {\Link{}{in-\nextinternalreference}\EndLink} +\Configure{indexpage}{% + \gHAdvance\Idx:No by 1 #1% + {#2}% + {#3}% + {#4}% + {\Link{in-#3}{}\Idx:No\EndLink}} +\HAssign\Idx:No = 0 +>>> + +\<<< +\Configure{indexchar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} + {\HCode{
      }\par} +\Css{div.indexchar{margin-top:0.2em; margin-bottom:0.1pt;}} +>>> + +\<<< +\Configure{index-env} + {\ifvmode \IgnorePar\fi \EndP\HCode{
      }\par} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }\par} +\Css{div.index-env p{margin-top:0em; margin-bottom:0em;}} +\NewConfigure{-@@idindex}{2} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{letters} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{g-brief} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }% + \let\sv:@imakebox\@imakebox + \let\sv:br=\\ \def\\{\HCode{
      }}% + \let\:clearpage\clearpage + \def\clearpage{\let\clearpage\:clearpage + \ifvmode \IgnorePar\fi \EndP + \HCode{

      }% + \IgnorePar + }% + \let\brf:par\par + \def\@imakebox[##1][##2]##3{% + \HCode{}% + \def\par{\let\par\brf:par + \ifvmode \IgnorePar\fi \EndP + \HCode{
      }% + \bgroup \let\\=\sv:br \let\@imakebox\sv:@imakebox + \let\par\sv:par + ##3% + \egroup + \HCode{
      }}% + }% + } + {\let\\=\sv:br \let\@imakebox\sv:@imakebox + \ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} +\Css{table.date {width:100\%; margin-top:2em;}} +\Css{table.date td{white-space: nowrap;}} +>>> + +\<<< +\Configure{letterfoot} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {} + {\HCode{
      }} +\Configure{letterhead} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} + {\HCode{}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {\HCode{
      }} +\Css{.letterfoot .tabular {text-align: left; margin-top:4em; }} +\Css{table.from {width:100\%; margin-bottom:2em;}} +\Css{table.from .address table {width:100\%;}} +\Css{.makebox-r {text-align:right;}} +>>> + +\<<< +\Configure{datumtext} + {\HCode{}} + {\HCode{}} +\Configure{datum} + {\HCode{}} + {\HCode{}\IgnorePar} +\Configure{anrede} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {\HCode{
      }} +\Configure{betreff} + {\ifvmode \IgnorePar\fi \EndP\HCode{
      }} + {\HCode{
      }} +\Css{.betreff{margin-top:2em; margin-bottom:1em;}} +\Configure{gruss} + {\HCode{}} + {\HCode{}} +\Configure{unterschrift} + {\HCode{}} + {\HCode{}} +\Configure{anlagen} + {\HCode{}} + {\HCode{}} +\Configure{verteiler} + {\HCode{}} + {\HCode{}} +\Configure{sprache} + {\HCode{}} + {\HCode{}} +\Configure{telefontex} + {\HCode{}} + {\HCode{}} +\Configure{telefaxtext} + {\HCode{}} + {\HCode{}} +\Configure{telextext} + {\HCode{}} + {\HCode{}} +\Configure{emailtext} + {\HCode{}} + {\HCode{}} +\Configure{httptext} + {\HCode{}} + {\HCode{}} +\Configure{banktext} + {\HCode{}} + {\HCode{}} +\Configure{blztext} + {\HCode{}} + {\HCode{}} +\Configure{betrefftext} + {\HCode{}} + {\HCode{}} +\Configure{ihrzeichentext} + {\HCode{}} + {\HCode{}} +\Configure{ihrschreibentext} + {\HCode{}} + {\HCode{}} +\Configure{meinzeichentext} + {\HCode{}} + {\HCode{}} +\Configure{unserzeichentext} + {\HCode{}} + {\HCode{}} +\Configure{anlagen} + {\HCode{}} + {\HCode{}} +\Configure{adresse} + {\HCode{}} + {\HCode{}} +\Configure{bank} + {\HCode{}} + {\HCode{}} +\Configure{blz} + {\HCode{}} + {\HCode{}} +\Configure{email} + {\HCode{}} +\Configure{gruss} + {\HCode{}} + {\HCode{}} +\Configure{grussskip} + {\HCode{}} + {\HCode{}} +\Configure{http} + {\HCode{}} + {\HCode{}} +\Configure{ihrschreiben} + {\HCode{}} + {\HCode{}} +\Configure{ihrzeichen} + {\HCode{}} + {\HCode{}} +\Configure{konto} + {\HCode{}} + {\HCode{}} +\Configure{land} + {\HCode{}} + {\HCode{}} +\Configure{meinzeichen} + {\HCode{}} + {\HCode{}} +\Configure{name} + {\HCode{}} + {\HCode{}} +\Configure{ort} + {\HCode{}} + {\HCode{}} +\Configure{postvermerk} + {\HCode{}} + {\HCode{}} +\Configure{retouradresse} + {\HCode{}} + {\HCode{}} +\Css{div.retouradresse { margin-bottom:2em; }} +\Configure{strasse} + {\HCode{}} + {\HCode{}} +\Configure{telefax} + {\HCode{}} + {\HCode{}} +\Configure{telefon} + {\HCode{}} + {\HCode{}} +\Configure{telex} + {\HCode{}} + {\HCode{}} +\Configure{unterschrift} + {\HCode{}} + {\HCode{}} +\Configure{verteiler} + {\HCode{}} + {\HCode{}} +\Configure{zusatz} + {\HCode{}} + {\HCode{}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{mwcls} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{@begin}{theindex}{\section*{\indexname}} +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }\let\end:theidx\empty} + {\end:theidx\HCode{
      }} + {} {\HCode{}\hfil\break} + {\ \ \ \ } {\HCode{}\hfil\break} + {\ \ \ \ \ \ \ \ } {\HCode{}\hfil\break} + {\hbox{\end:theidx\HCode{

      }}% + \def\end:theidx{\HCode{

      }}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Into Columns} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\def\:temp#1index=#2,#3|{% + \ifnum #2>1 |\fi + \def\:temp{#2}% +} +\expandafter\:temp\Preamble,index=0,| +\ifnum \:temp<2 + | +\else + | +\fi +>>> + + +The \verb=\Configure{IndexColumns}= instruction is to allow documents +that have more than one index to employ different number of columns. +The `index=i' provides the initial setting. + + +\<<< +\Log:Note{for i-columns index, + use the command line option `index=i' (e.g., index=2)} +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }\let\end:theidx|=\empty} + {\end:theidx\HCode{
      }} + {} {\hfil\break\HCode{}} + {\ \ \ \ } {\hfil\break\HCode{}} + {\ \ \ \ \ \ \ \ } {\hfil\break\HCode{}} + {\hbox{\end:theidx\HCode{

      }}% + \def\end:theidx{\HCode{

      }}} +>>> + +\<<< +\NewConfigure{IndexColumns}{1} +\Configure{IndexColumns}{#2} +>>> + + +\<<< +\Log:Note{the number of columns + requested by the option `index=\a:IndexColumns' can + be modified through the command \string\Configure{IndexColumns}{i}} +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }% + |\let\end:theidx|=\empty} + {\end:theidx + |\HCode{
      }} + {} {\hfil\break\HCode{}} + {\ \ \ \ } {\hfil\break\HCode{}} + {\ \ \ \ \ \ \ \ } {\hfil\break\HCode{}} + {%\ifvmode \EndP\fi + % \hbox{\end:theidx\HCode{

      }}% + % \def\end:theidx{\HCode{

      }} + \parindent=0pt + }% +>>> + + +% {} +% {\ifvmode \else \hfil\HCode{}\break\fi} +% {\ \ \ \ } {\hfil\HCode{}\break} +% {\ \ \ \ \ \ \ \ } {\hfil\HCode{}\break} + +\<<< +\Configure{HColumns} + {\IgnorePar\EndP + \HCode{}} + {\HCode{
      }} + {\HCode{}\ColMag{1.1}} + {\IgnorePar\EndP\HCode{}} + \HColumns{\a:IndexColumns}% + \everypar{\HtmlPar}% + \Configure{HtmlPar}{}{\HCode{
      }}{}{}% + \par\ShowPar +>>> + +\<<< +\ifvmode\IgnorePar\fi \EndP\EndHColumns +>>> + +\<<< +\def\add:col{\Advance:\:cols -1 \HAdvance\HCol 1\relax + \ifnum \:cols>0 + \c:Cols \vsplit0 to \tmp:dim \d:Cols \expandafter\add:col + \fi} +\NewConfigure{HColumns}{4} +\def\c:Cols{\edef\sv:dim{\the\tmp:dim}\c:HColumns} +\def\d:Cols{\d:HColumns \tmp:dim\sv:dim } +\def\ColMag#1{\tmp:dim #1\tmp:dim} +\def\HColumns#1{% + \a:HColumns + \HAssign\:cols#1 \setbox0=\vbox\bgroup + \divide\hsize #1 } +\def\EndHColumns{\egroup \HAssign\HCol0 + \tmp:dim\ht0 \advance\tmp:dim \dp0 \divide\tmp:dim \:cols + \add:col \c:Cols \box0 \d:Cols \b:HColumns} +>>> + + + +%%%%%%%%%%%%% +\section{Glossary} +%%%%%%%%%%%%% + +\<<< +\Configure{gloskip}{list}{\item[]\HCode{

      }} +\Configure{gloskip}{altlist}{\item[]\HCode{

      }} +\Configure{gloskip}{super}{\cr\HCode{

      }} +\Configure{gloskip}{long}{\cr\HCode{

      }} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Captions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{caption}{\HCode{\if:nopar \else \fi} + \:xhtml{\IgnorePar\EndP}\HCode{
      }} + {: } {\HCode{}} + {\HCode{
      }|} +\Css{.caption td.id{font-weight: bold; white-space: nowrap; }} +\Css{table.caption {text-align:center;}} +>>> + + +\<<< +\Configure{caption}{\HCode{\if:nopar \else \fi} + \:xhtml{\IgnorePar\EndP}\HCode{
      }} + { } {\HCode{}} + {\HCode{
      }|} +\Css{table.caption {text-align:left;}} +>>> + +\<<< +\Configure{caption}{\HCode{\if:nopar \else \fi} + \:xhtml{\IgnorePar\EndP}\HCode{
      }} + {: } {\HCode{}} + {\HCode{
      }|% +} +\Css{.caption td.id{font-weight: bold; white-space: nowrap; }} +\Css{div.cation {text-align:center;}} +>>> + +\<<< +\Configure{caption} + {\:xhtml{\IgnorePar\EndP}\HCode{
      }}{}{\HCode{
      }} +>>> + +\<<< +\Configure{caption} + {\HCode{
      }} + {\HCode{}: }{}{\HCode{
      }}% +>>> + + +\<<< +\HCode{}% +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Originating Packages} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +| +\:CheckOption{fn-in}\if:Option + | +\else + \Log:Note{for inline footnotes use + command line option `fn-in'} + | +\fi +>>> + + + + + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + \Log:Note{for inline footnotes, use + the command line option `fn-in'} + | +\fi +>>> + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + + + + + +%%%%%%%%%%%%%%%% +\subsection{In-Line LaTeX} +%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{mouseover} \if:Option + | + | + | + | +\else + | + | + | +\fi +>>> + + +\<<< +\Configure{footnotetext} + {|% + ||% + \NoFonts + \Tag{|-bk}{}% + \special{t4ht@(}% + } + {\special{t4ht@)}\EndNoFonts ||} + {\expandafter\global\expandafter + \let\csname (|)\endcsname\def + |} +>>> + +\<<< +\Configure{footnotemark} + {||% + \NoFonts + \Tag{|}{}} + {\EndNoFonts + ||% + \expandafter\global\expandafter + \let\csname (|-bk)\endcsname\def} +>>> + + + + +\<<< +\Configure{footnotetext} + {|% + |% + ||% + \NoFonts \Tag{|-bk}{}% + } + {\EndNoFonts ||} + {\expandafter\global\expandafter + \let\csname (|)\endcsname\def + |% + |} +>>> + +\<<< +\Configure{footnotemark} + {||% + \NoFonts + \Tag{|}{}} + {\EndNoFonts + ||% + \expandafter\global\expandafter + \let\csname (|-bk)\endcsname\def} +>>> + + + + + + + + + + + + + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \Link{|-bk}{}% + \else + \Link{|-bk}{|}% + \fi + } + {\expandafter\ifx\csname (|)\endcsname\def + \else \Link{}{|}\fi + }% +>>> + +\<<< +\ifTag{|} + {\EndLink} + {\expandafter\ifx\csname (|)\endcsname\def + \else \EndLink\fi + }% +>>> + + + +\<<< +|% +\ifTag{|-bk} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \Link[ |\Hnewline + ]{|}{}% + \else + \Link[ |\Hnewline + ]{|}{|-bk}% + \fi + } + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else \Link[ |\Hnewline + ]{}{|-bk}\fi + }% +>>> + + + + + + + +\<<< +\ifTag{|-bk} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \Link{|}{}% + \else + \Link{|}{|-bk}% + \fi + } + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else \Link{}{|-bk}\fi + }% +>>> + +\<<< +\ifTag{|-bk} + {\EndLink} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else \EndLink\fi + }% +>>> + + + + +\<<< +\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi +>>> + +\<<< +\EndP\egroup\RecallEndP +>>> + + +\<<< +\ifvoid \fn:box \else + \expandafter \ifx \csname fn:box\body:level\endcsname\relax + \csname newbox\expandafter\endcsname + \csname fn:box\body:level\endcsname + \fi + \global\expandafter\setbox\csname fn:box\body:level\endcsname= + \vbox{\csname unvbox\endcsname\fn:box}% +\fi +\gHAdvance\body:level by 1 +>>> + +\<<< +\gHAdvance\body:level by -1 +\expandafter \ifx \csname fn:box\body:level\endcsname\relax \else + \global\setbox\fn:box= + \vbox{\expandafter\ifvoid \csname fn:box\body:level\endcsname \else + \csname unvbox\expandafter\endcsname + \csname fn:box\body:level\endcsname\fi}% +\fi +>>> + +\<<< +\ifvmode \IgnorePar\fi\EndP +\ifvoid \fn:box\else + \HCode{
      }\box\fn:box\HCode{
      } + \IgnorePar\EndP +\fi +>>> + + +\<<< +(L >>> + +\<<< +)Q>>> + + + +\<<< +\Configure{BODY} + {|\:xhtml{\SaveEndP}\IgnorePar + \HCode{}|\ShowPar\par} + {|% + \relax \ifnum \FileNumber=1 + |% + \fi + \HCode{\Hnewline + }\:xhtml{\RecallEndP}|}% +>>> + +\<<< + \Configure{BODY} + {|\:xhtml{\SaveEndP}\IgnorePar + \HCode{}\ShowPar\par} + {|\HCode{\Hnewline + }\:xhtml{\RecallEndP}|}% +>>> + + +\<<< +\Configure{crosslinks+} + {\IgnorePar\EndP\HCode{|% + }\par\ShowPar} + {|% + \ifvmode \IgnorePar\fi \EndP + \HCode{|}\par\ShowPar} +>>> + +\<<< +\Css{div.footnotes{border-top:solid 1px black; + border-bottom:solid 1px black; + padding-bottom:1ex; + padding-top:0.5ex; + margin-right:15\%; margin-top:2ex; + font-style:italic; font-size:85\%;}} +\Css{div.footnotes p{margin-top:0; margin-bottom:0; text-indent:0;}} +\ifx \fn:box\:UnDef \csname newbox\endcsname\fn:box \fi +\HAssign\body:level=0 +>>> + + + + +%%%%%%%%%%%%%%%% +\subsection{Off-Line in latex} +%%%%%%%%%%%%%%%% + + +\<<< +\:CheckOption{mouseover} \if:Option + | + | + | + \AtEndDocument{|} +\else \:CheckOption{frames-fn} \if:Option + | + | + \else + | + | +\fi \fi +>>> + +\<<< +\Configure{footnotetext} + {|% + |\Link{}{|}% + \NoFonts + } + {\EndNoFonts \EndLink|} + {|} +>>> + +\<<< +\Configure{footnotemark} + {||\NoFonts + \Tag{|}{}} + {\EndNoFonts ||} +>>> + +\<<< +\Configure{footnotetext} + {|% + |\Link{}{|}% + \NoFonts + } + {\EndNoFonts \EndLink|} + {|} +>>> + + +\<<< +\Configure{footnotemark} + {||\NoFonts + \Tag{|}{}} + {\EndNoFonts + ||} +>>> + + + +\<<< +\Configure{footnotetext} + {|% + |\Link{}{|}\NoFonts + } + {\EndNoFonts\EndLink|} + {|} +>>> + +\<<< +\Configure{footnotemark} + {||\NoFonts + \Tag{|}{}} + {\EndNoFonts + ||} +>>> + + + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \:warning{Multiple footnote texts for mark \FNnum}% + \else \csname a:footnote-text\endcsname\fi + } + {}% +>>> + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \else \csname b:footnote-text\endcsname\fi + } + {}% +\expandafter\global\expandafter + \let\csname (|)\endcsname\def +>>> + + + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \:warning{Multiple footnote texts for mark \FNnum}% + \else \csname a:footnote-text\endcsname\fi + } + {}% +>>> + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \else \csname b:footnote-text\endcsname\fi + } + {}% +\expandafter\global\expandafter + \let\csname (|)\endcsname\def +>>> + + +\<<< +\ifTag{||} + {\Link{|}{}} + {}% +>>> + +\<<< +\ifTag{||} + {\EndLink} + {}% +>>> + + +\<<< +\ifTag{||} + {|% + \leavevmode \Link[ |% + \Hnewline]{|}{}} + {}% +>>> + +\<<< +\ifTag{||} + {\EndLink} + {}% +>>> + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \:warning{Multiple footnote texts for mark \FNnum}% + \else + \Configure{!BODY}{id="|" }% + \BeginHPage[|]{ }% + \Configure{!BODY}{}% + \fi + } + {}% +>>> + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \else + \close:fn\EndHPage{} + \fi + } + {}% +\expandafter\global\expandafter + \let\csname (|)\endcsname\def +>>> + + +\<<< +\def\close:fn{\HPage{}\Link{}{hide-fn}\EndLink\EndHPage{}% + \gdef\close:fn{\rightline{\Link{hide-fn}{}@\EndLink}}\close:fn} +>>> + +% \Css{body\#|{font-size:80\%;}}% + + +\<<< +\ifTag{||} + {\Link[\RefFile{|} + target="|"]{}{}} + {}% +>>> + +\<<< +\ifTag{||} + {\EndLink} + {}% +>>> + + + + + + + +\<<< +fn\FNnum x\minipageNum +>>> + + + +\<<< +\csname a:footnote-mark\endcsname +>>> + +\<<< +\csname b:footnote-mark\endcsname +>>> + +\<<< +\csname a:thank-mark\endcsname +>>> + +\<<< +\csname b:thank-mark\endcsname +>>> + +\<<< +\NewConfigure{footnote-mark}{2} +\NewConfigure{thank-mark}{2} +\Configure{footnote-mark} + {\HCode{}} + {\HCode{}} +\Configure{thank-mark} + {\HCode{}} + {\HCode{}} +\Css{span.thank-mark{ vertical-align: super }} +>>> + + + +\<<< +\NewConfigure{footnote-text}{2} +>>> + +\<<< +\Configure{footnote-text} + {\HPage{}\HCode{
      }\par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }\EndHPage{}} +>>> + +\<<< +\Configure{footnote-text} + {\HPage{}\HCode{
      }|} + {\ifvmode \IgnorePar\fi \EndP + |\HCode{
      }\EndHPage{}} +>>> + +\<<< +% \Css{span.footnote-mark{ vertical-align: super }} +\Css{span.footnote-mark sup.textsuperscript, + span.footnote-mark a sup.textsuperscript{ font-size:80\%; }} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{AMS} +%%%%%%%%%%%%%%%% + + +\<<< +\:CheckOption{fn-in}\if:Option + \:CheckOption{mouseover}\if:Option + |% + \else + |% + \fi +\else + \:CheckOption{mouseover}\if:Option + |% + \else \:CheckOption{frames-fn}\if:Option + |% + \else + |% + \fi \fi +\fi +>>> + +\<<< +\Configure{footnotetext} + {|\HPage{\FNnum}\HCode{
      }\NoFonts} + {\EndNoFonts} + {\HCode{
      }\EndHPage{}|}% +>>> + + +\<<< +|% +>>> + +\<<< +|% +>>> + +\<<< +|% +>>> + +\<<< +|% +>>> + +\<<< +% \Css{span.footnote-mark{ vertical-align: super }} +\Css{span.footnote-mark sup.textsuperscript, + span.footnote-mark a sup.textsuperscript{ font-size:80\%; }} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{SCR *} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + + + +\<<< +% \Css{span.footnote-mark{ vertical-align: super }} +\Css{span.footnote-mark sup.textsuperscript, + span.footnote-mark a sup.textsuperscript{ font-size:80\%; }} +>>> + + + +%%%%%%%%%%%%%%%% +\subsection{Plain} +%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{vfootnote} + {|} + {|} + {|} +>>> + + + + +\<<< +\HCode{}\Link{fn\FNnum}{fn\FNnum-bk}% + \ifx \FNmark\empty +\else \FNmark\fi\EndLink +\HCode{}% +>>> + +\<<< +|% +\HCode{}\Link{fn\FNnum-bk}{fn\FNnum}% +\ifx \FNmark\empty +\else \FNmark\fi +\EndLink\space\HCode{}% +>>> + +\<<< +| +>>> + + + +\<<< +\Configure{vfootnote} + {\HPageButton[fn\FNnum]{\FNmark}} + {\BeginHPage[fn\FNnum]{ }} + {\EndHPage{}} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{On Mouse Over} +%%%%%%%%%%%%%%%% + + +\<<< +\expandafter\def\csname c:mouseover-footnote:\endcsname{% + \def\:tempb{footnote}\csname c:mouseover-?:\endcsname} +\Configure{mouseover-footnote} {tex4ht.body,FULLHTML} +>>> + + + + +\<<< +|\let\sv:link=\Link +\def\Link[##1]{\let\Link=\sv:link + \Link[##1 |\Hnewline]}% +>>> + + +\<<< +\mo:args{footnote}{\FNnum}{|}% +>>> + + +\<<< +|% +\HCode{}% +|% +>>> + +\<<< +|% +\HCode{}% +>>> + + + + + + +An alternative css-based approach: + +\begin{verbatim} +\Configure{tableofcontents} + {\IgnorePar\EndP\HCode{
      }\IgnorePar} + {} + {\IgnorePar\EndP\HCode{
      }\ShowPar} + {\HCode{
      }} {} + +\ConfigureToc{section} + {\HCode{
      }} + { \HCode{}} + {} + {\HCode{
      }} +\ConfigureToc{subsection} + {\HCode{
      }} + { \HCode{}} + {} + {\HCode{
      }} +\ConfigureToc{subsubsection} + {\HCode{
      }} + { \HCode{}} + {} + {\HCode{
      }} + +\ConfigureToc{likesection} + {} + {\HCode{
      }} + {} + {\HCode{
      }} +\ConfigureToc{likesubsection} + {} + {\HCode{
      }} + {} + {\HCode{
      }} +\ConfigureToc{likesubsubsection} + {} + {\HCode{
      }} + {} + {\HCode{
      }} + + + +\Css{div.sectionToc { margin-left: 1em; text-indent: -1em; }} +\Css{div.sectionToc span.mark { text-align:right; width: 1em; + padding-right:0.25em; }} + +\Css{div.subsectionToc { margin-left:2.5em; text-indent: -2.5em; }} +\Css{div.subsectionToc span.mark { text-align:right; width: 2.5em; + padding-right:0.25em; }} +\Css{div.likesubsectionToc { margin-left: 2.5em; text-indent: -1.5em; }} + +\Css{div.subsubsectionToc { margin-left: 4.5em; text-indent: -4.5em; }} +\Css{div.subsubsectionToc span.mark { text-align:right; width: 4.5em; + padding-right:0.25em; }} +\Css{div.likesubsubsectionToc { margin-left: 4.5em; text-indent: -2em; }} +\end{verbatim} + +%%%%%%%%%%%%% +\subsection{Other} +%%%%%%%%%%%%% + + +\<<< +\Configure{textsuperscript} + {\HCode{}\bgroup \small} + {\egroup \HCode{}} +>>> + + +%%%%%%%%%%%%%%%% +\section{Floats} +%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{subfigure} +%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{subfigure} + {\ifvmode \IgnorePar \fi \EndP + \HCode{
      }} + {\ifvmode \IgnorePar \fi \EndP \HCode{
      }} +\Configure{subfigurecaption} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {}{} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} +\Css{.subfigcaption {margin-top:1em; + margin-left:1em; text-align:center;}} +\Css{div.subfigure {text-align:center;}} +>>> + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Wrapfig} +%%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item + r R - the right side of the text +\item + l L - the left side of the text +\item + i I - the inside edge--near the binding (if ``[twoside]'' document) +\item + o O - the outside edge--far from the binding +\end{itemize} + + +\<<< +\Configure{wrapfloat} + {\ifvmode\IgnorePar\EndP + \HCode{
      }% + \def\endWrap{\ifvmode\IgnorePar\fi\EndP\HCode{
      }\par}% + \else + \HCode{}\bgroup + |% + \def\endWrap{\egroup\HCode{}}% + \fi + } + {\endWrap} +\Css{.caption span.id{font-weight: bold;}} +\Css{ + .wrapfig-r, + .wrapfig-ri, + .wrapfig-ir, + .wrapfig-ro, + .wrapfig-or + {float:right; text-align:left; + margin-left:auto; margin-top:0.5em;} +} +\Css{ + .wrapfig-l, + .wrapfig-li, + .wrapfig-il, + .wrapfig-lo, + .wrapfig-ol + {float:left; text-align:left; + margin-right:auto; margin-top:0.5em;} +} +\Css{.wrapfig-r .caption td.content, + .wrapfig-ri .caption td.content, + .wrapfig-ir .caption td.content, + .wrapfig-ro .caption td.content, + .wrapfig-or .caption td.content, + .wrapfig-l .caption td.content, + .wrapfig-li .caption td.content, + .wrapfig-il .caption td.content, + .wrapfig-lo .caption td.content, + .wrapfig-ol .caption td.content + {white-space: normal; }} +\Css{.wrapfig-r .caption, + .wrapfig-ri .caption, + .wrapfig-ir .caption, + .wrapfig-ro .caption, + .wrapfig-or .caption, + .wrapfig-l .caption, + .wrapfig-li .caption, + .wrapfig-il .caption, + .wrapfig-lo .caption, + .wrapfig-ol .caption + {width:30\%; }} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%% +\subsection{endfloat} +%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{figure}{}{}{}{} +>>> + +\<<< +\Configure{floatingfigure} + {\HCode{}% + \bgroup \Configure{HtmlPar}{}{}{}{}% + \ConfigureEnv{minipage}{\IgnorePar}{}{\IgnorePar}{}% + |% + } + {\egroup \HCode{}} +\Css{.floatingfigure-r { float:right; text-align:left; + margin-top:0.5em; margin-bottom:0.5em; margin-left:0em;}} +\Css{.floatingfigure-l { float:left; text-align:left; + margin-top:0.5em; margin-bottom:0.5em; margin-right:0em; }} +\Css{.caption span.id{font-weight: bold;}} +>>> + + + +%%%%%%%%%%%%%%%% +\section{Make Title} +%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{book-report-article} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +thanks author date and>>> + +\<<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{div.maketitle {text-align:center;}} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; }} +|<maketitle footnote|> +>>> + + + +\<config thanks author date and\><<< +\Configure{|<thanks author date and|>} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="date" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +\Css{div.author{white-space: nowrap;}} +>>> + +\<thank for thanks\><<< +\Configure{thank} + {|<thank mark sup|>\Link{tk-\the\c@footnote}{}} + {\EndLink |<thank mark end sup|>} + {\HCode{<br />}\protect\Link{}{tk-\the\c@footnote}\protect + \EndLink |<thank mark sup|>} + {|<thank mark end sup|>} {} +>>> + +\<thanks for thanks p\><<< +\Configure{thank} + {|<thank mark sup|>\Link{tk-\the\c@footnote}{\ifx + \footnote\thanks kt-\the\c@footnote\fi}} + {\EndLink |<thank mark end sup|>} + {\HCode{<p>}\protect\Link{\ifx \footnote\thanks kt-\the\c@footnote + \fi}{tk-\the\c@footnote}|<thank mark sup|>} + {|<thank mark end sup|>\protect\EndLink} + {\HCode{</p>}} +>>> + +\<thanks for thanks EndP\><<< +\Configure{thank} + {\HCode{<sup>}\Link{tk-\the\c@footnote}{\ifx + \footnote\thanks kt-\the\c@footnote\fi}} + {\EndLink\HCode{</sup>}} + {\protect\Link{\ifx \footnote\thanks kt-\the\c@footnote + \fi}{tk-\the\c@footnote}\HCode{<sup>}} + {\HCode{</sup>}\protect\EndLink} + {\ifvmode\IgnorePar\fi\EndP} +>>> + + +\<end-thanks author date and\><<< +\Configure{|<thanks author date and|>} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author">}}{\HCode{</div>}} + {\HCode{<div class="date" >}}{\HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{RevTeX} +%%%%%%%%%%%%%%%%%%%% + +\<revtex title page\><<< +\ConfigureEnv{abstract}{\:xhtml{\IgnorePar\EndP}\HCode + {<\tbl:XV{abstract}><tr><td\Hnewline>}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</td></tr></table>}}{}{} +\Css{.abstract p {margin-left:5\%; margin-right:5\%;}} + +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE 2|>% + \HCode{<div class="maketitle">}} + {\HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +|<revtex maketitle footnote|> +\Configure{address} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="address">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} +>>> + + + + + +\<revtex end-thanks author date and\><<< +\Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" >}}{\HCode{</div>}} + {\HCode{<div class="date" >}}{\HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + +\<revtex config thanks author date and\><<< +\Configure{thanks author date and} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<div class="date" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +\Css{div.author{white-space: nowrap;}} +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{TUG LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<tug proc maketitle\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + |<global HtmlPar|>% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\EndP + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +>>> + + +\<tug boat maketitle\><<< +\@ifclassloaded{ltugproc}{}{% + \@ifpackageloaded{ltugproc}{}{\Configure{@BODY}{\rtitlex}} +} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP + \def\textSMC##1{##1}% + |<title for TITLE|>% + |<global HtmlPar|>% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\EndP + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +>>> + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{lncse} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech lncse\><<< +\Configure{institute}{}{}{\HCode{<br />}} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:left;}} +\:CheckOption{fn-in}\if:Option + \Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" >}}{\HCode{</div>}} + {\HCode{<div class="date" >}}{\HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +\else + \Configure{thanks author date and} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<div class="date" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +\fi + +>>> + +%%%%%%%%%%%%%%%%%%%% +\subsection{Prosper} +%%%%%%%%%%%%%%%%%%%% + + +\<prosper maketitle\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP + {\def\@title{\@Title}|<title for TITLE|>}% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + {\NoFonts\IgnorePar \EndP + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +>>> + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{AMS} +%%%%%%%%%%%%%%%%%%% + + + +\<ams art,proc,book\><<< +\Configure{translators} + {\par\IgnorePar\EndP \HCode{<div class="translators">}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP \HCode{</div>}} + {\HCode{<span class="translator">}} + {\HCode{</span>}} +>>> + +\<ams art,proc\><<< +\Css{div.translators {text-align:right; margin-bottom:0.7em;}} +>>> + + + +\<ams art,proc,book\><<< +\Configure{keywords} + {\par\IgnorePar\EndP \HCode{<div class="keywords">}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP\HCode{</div>}} +\Configure{subjclass} + {\par\IgnorePar\HCode{<div class="subjclass">}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP\HCode{</div>}} +\Configure{@maketitle} + {\Tg<div class="submaketitle">\IgnoreIndent} + {\ifvmode \IgnorePar \fi\EndP\Tg</div>} +\Css{div.submaketitle{ text-align:left; margin-top:2em; + border-top: 1px solid black; + border-bottom: 1px solid black; + margin-left:5\%; margin-right:5\%; + font-size:85\%; line-height: 95\%;}} +\Css{div.submaketitle div {margin-top:0.5em; margin-bottom:0.5em; }} +\Css{div.submaketitle p { margin-top:0em; margin-bottom:0em; }} +>>> + +\<ams art,proc,book\><<< +\ConfigureEnv{abstract} + {\ifvmode \IgnorePar\fi \EndP} + {\ifvmode \IgnorePar\fi \EndP} + {}{} +\ConfigureList{abstract} + {\ifvmode \IgnorePar\fi \EndP \Tg<div class="abstract">\ShowPar} + {\ifvmode \IgnorePar\fi \EndP\Tg</div>} + {\ShowPar\par\HCode{<span class="title">}} + {\HCode{</span>}} +\Configure{setabstract} + {\ifvmode \IgnorePar \fi \EndP} + {\ifvmode \IgnorePar \fi \EndP} +\Css{div.abstract{ margin-top: 2em; text-align:left; + margin-right:15pt; margin-left:15pt; }} +>>> + +\<ams art,proc,book\><<< +\Configure{addresses} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="addresses">}\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{address} + {\HCode{<span class="address-title">}} + {\ifvmode \IgnorePar\fi \HCode{</span><span class="address">}} + {\HCode{</span>}} +\Configure{curraddr} + {\HCode{<span class="curraddr-title">}} + {\ifvmode \IgnorePar\fi \HCode{</span><span class="curraddr">}} + {\HCode{</span>}} +\Configure{email} + {\HCode{<span class="email-title">}} + {\ifvmode \IgnorePar\fi \HCode{</span><span class="email">}} + {\HCode{</span>}} +\Configure{urladdr} + {\HCode{<span class="urladdr-title">}} + {\ifvmode \IgnorePar\fi \HCode{</span><span class="urladdr">}} + {\HCode{</span>}} +\Css{div.addresses p {margin-top:0em; margin-bottom:0em; }} +>>> + + +\<ams art,proc,book\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<ams title for TITLE|>% + \HCode{<div class="maketitle">}% + \ConfigureEnv{center} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi}% + |<footnote for ams title|>% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar \EndP + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar + \bgroup \Configure{HtmlPar}{}{}{}{}} + {\egroup \HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +>>> + + + + +\<ams art,proc\><<< +\Configure{|<thanks author date and|>} + {\par\IgnorePar\EndP \HCode{<div class="thanks">}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<div class="authors"><span class="author">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</span></div>}} + {\par\IgnorePar\EndP \HCode{<div class="date">}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\lowercase{\HCode{</span><span class="and">}}and~% + \lowercase{\HCode{</span><span>}}} + {\HCode{<br\xml:empty>}} +>>> + +\<ams book\><<< +\Configure{|<thanks author date and|>} + {\par\IgnorePar\EndP \HCode{<div class="thanks">}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<div class="authors"><div class="author">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div></div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="date">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\lowercase{\HCode{</div><div>}}} + {\HCode{<br\xml:empty>}} +\Css{div.addresses{ margin-top:0.5em; }} +>>> + +\<amsdtx maketitle\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="maketitle">}} + {\HCode{</div>}} + {\NoFonts\HCode{<h2 class="titleHead"\a:LRdir>}} + {\HCode{</h2>}\EndNoFonts} +\Css{div.maketitle {text-align:center;}} +>>> + +%%%%%%%%%%%%%%%% +\subsection{llncs} +%%%%%%%%%%%%%%%% + +\<configure html-speech llncs\><<< +\Configure{email} + {\HCode{<span class="email">}} + {\HCode{</span>}} +\Configure{institute} + {\HCode{<div class="institute">}} + {\HCode{</div>}} +>>> + + + +%%%%%%%%%%%%%%%% +\subsection{aa} +%%%%%%%%%%%%%%%% + +\<configure aa 3.2/4.0t\><<< +\Configure{subtitle institute} + {\HCode{<br\xml:empty><span class="subtitle">}}{\HCode{</span>}} + {\HCode{<div class="institute">}}{\HCode{</div>}} + {\Tg<sup>}{\Tg</sup>} + {\HCode{<br\xml:empty>}} + +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div align="center" >}} + {\HCode{</div>}} + {\NoFonts\IgnorePar \HCode{<h2 class="maketitleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Configure{|<thanks author date and|>} {}{} + {\HCode{<div class="author" align="center">}}{\HCode{</div>}} + {\HCode{<div class="date" align="center">}}{\HCode{</div>}} + {\SPAN:{and}and\EndSPAN:} + {\HCode{<br\xml:empty>}} +\Css{div.maketitle {text-align:center;}} +>>> + +\<configure aa 3.2/4.0t\><<< +\ConfigureEnv{abstract} + {\:xhtml{\IgnorePar\EndP}\HCode {<div class="abstract">}} + {\HCode{</div>}}{}{} + +\Css{div.abstract{text-align:center;}} + +\Configure{makeheadbox} + {\HCode{<table class="makeheadbox" + width="100\%"><tr><td><table><tr><td>}} + {\HCode{</td></tr><tr><td>}} + {\HCode{</td></tr><tr><td>}} + {\HCode{</td></tr></table></td><td class="AALogo" width="10\%">}} + {\HCode{</td></tr></table>}} +\Css{.AALogo{font-size:120\%;font-weight: bold; text-align:right;}} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{MWC} +%%%%%%%%%%%%%%%% + +\<mwcls configs\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE 2|>% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{div.maketitle {text-align:center;}} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; }} +\:CheckOption{fn-in}\if:Option + \Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author">}}{\HCode{</div>}} + {\HCode{<div class="date" >}}{\HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} + +\else + \Configure{thanks author date and} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="date" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +\Css{div.author{white-space: nowrap;}} + +\fi +>>> + + +%%%%%%%%%%%%%%%% +\subsection{scr} +%%%%%%%%%%%%%%%% + +\<configure html-speech scrbook\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE 3|>% + \HCode{<div class="maketitle">}} + {\HCode{</div>}} + {\IgnorePar \EndP + \NoFonts\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +|<maketitle footnote|> +|<scr title page|> +>>> + + +\<configure html-speech scrreprt\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE 3|>%% + \HCode{<div class="maketitle">}} + {\HCode{</div>}} + {\IgnorePar \EndP + \NoFonts\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +|<scrreprt maketitle footnote|> +|<scr title page|> +>>> + + +\<scr title page\><<< +\ConfigureEnv{titlepage} + {\bgroup + \ifvmode \IgnorePar\fi \EndP + \HCode{<div class="titlepage">}% + \ConfigureEnv{center}{}{}{}{}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}% + \egroup} + {} {} +\Configure{dedication} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="dedication" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} +\Css{div.dedication {text-align:center;}} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{ACM} +%%%%%%%%%%%%%%%% + + +\<configure html-speech acm-proc-article-sp\><<< +\Configure{toappear} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="toappear">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +\Configure{boilerplate} + {\HCode{<div class="boilerplate">}} {\HCode{</div>}} +\Configure{conf} + {\HCode{<div class="conf">}} {\HCode{</div>}} +\Configure{confinfo} + {\HCode{<div class="confinfo">}} {\HCode{</div>}} +\Configure{copyrightetc} + {\HCode{<div class="copyrightetc">}} {\HCode{</div>}} +>>> + +\<configure html-speech acm-proc-article-sp\><<< +\Configure{thanks} + {\IgnorePar\HCode{<div class="thanks">}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}\IgnoreIndent} +\Css{div.thanks{text-align:left; margin-top:1em; margin-bottom:1em;}} +\Configure{subtitle} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h4 class="subtitleHead"\a:LRdir>}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</h4>}\IgnoreIndent} +\Css{.subtitleHead{text-align:center;}} +\Configure{title} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h3 class="titleHead"\a:LRdir>}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</h3>}\IgnoreIndent} +\Css{.titleHead{text-align:center;}} +\Configure{email}{\Link[mailto:#1]{}{}\IgnorePar\o:email:{#1}\EndLink} +\Configure{@TITLE}{\let\titlenote=\:gobble} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>} + {} +\Configure{author} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<div class="author">}\ShowPar\par} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}\IgnoreIndent} +\Css{div.author{text-align:center; margin-top:1em; margin-bottom:1em;}} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{APA} +%%%%%%%%%%%%%%%% + +\<apa maketitle\><<< +\Configure{affil} + {\HCode{<div class="affil">}\bgroup + |<apa maketitle br cr|>% + } + {\egroup \HCode{</div>}} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="maketitle">}\bgroup + |<apa maketitle no-br cr|>% + } + {\egroup\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\apa:title} {\apa:endtitle} +\def\apa:title{\NoFonts\IgnorePar + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar + \global\let\apa:title=\empty } +\def\apa:endtitle{\HCode{</h2>}\IgnoreIndent\EndNoFonts + \global\let\apa:endtitle=\empty } +>>> + + +\<apa maketitle br cr\><<< +\Configure{centercr} + {\ht:special{t4ht=<br />}} + {\ht:everypar{\ht:everypar{\HtmlPar}}} +>>> + +\<apa maketitle no-br cr\><<< +\Configure{centercr} + {} {\ht:everypar{\ht:everypar{\HtmlPar}}}% +>>> + + +%%%%%%%%%%%%%%%% +\subsection{Shared} +%%%%%%%%%%%%%%%% + + + +\<title for TITLE\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection |<disable latex fonts|>\let\thanks|=\:gobble +\let\\|=\space \def\TeX{TeX}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\def\footnotemark[##1]{}% +\Tag{TITLE+}{\@title}} +>>> + +Old latex files need \verb'\no:fonts', but not new ones.---wrong, as far as writing to toc in 0.0? + +\<ams title for TITLE\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection |<disable latex fonts|>\let\thanks|=\:gobble +\let\\|=\space \def\TeX{TeX}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\def\footnotemark[##1]{}% +\Tag{TITLE+}{\shorttitle}} +>>> + + + +\<disable latex fonts\><<< +\let\leavevmode|=\empty \let\not@math@alphabet|=\:gobbleII +\def\text@command##1{##1}\let\selectfont|=\empty +\def\check@icl ##1\check@icr{}% +>>> + +\<title for TITLE 2\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection \let\leavevmode\empty \let\not@math@alphabet\:gobbleII +\def\text@command##1{##1}\let\selectfont\empty +\def\check@icl ##1\check@icr{}% +\let\thanks\:gobble +\let\\\space \def\TeX{TeX}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\def\footnotemark[##1]{}% +\def\a:ttl##1##2//{##1//}% +\let\large=\empty +\let \bf=\empty +\let \centering=\empty +\def \ignorespaces##1\vskip##2//{##1}% +\Tag{TITLE+}{\@title//}% +}% +>>> + +\<title for TITLE 3\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection \let\leavevmode\empty \let\not@math@alphabet\:gobbleII +\def\text@command##1{##1}\let\selectfont\empty +\def\check@icl ##1\check@icr{}% +\let\thanks\:gobble +\let\\\space \def\TeX{TeX}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\Tag{TITLE+}{\@title}}% +>>> + + + +%%%%%%%%%%%%%%%% +\section{Abstracts} +%%%%%%%%%%%%%%%% + +\<apa abstract\><<< +\Configure{abstract} + {\HCode{<div class="abstract">}\bgroup + |<apa maketitle br cr|>% + } + {\egroup \HCode{</div>}} +\Css{div.abstract{text-align:left; margin-left:10\%; margin-top:1em; }} +>>> + + + + + +%%%%%%%%%%%%%%%% +\section{Math} +%%%%%%%%%%%%%%%% + + + + +Don't put \verb'\:xhtml{\IgnorePar\EndP}' on the following; \verb'\PicDisplay' +should handle it. + + + +\<configure html-speech-math latex\><<< +\Configure{[]} + {\bgroup + \protect\nested:math + \PicDisplay + $$\everymath{}\everydisplay{}} + {$$\EndPicDisplay \egroup |<try inline par|>} +\Configure{()}{\bgroup + \protect\nested:math + \protect\PicMath + $} + {$ \protect\EndPicMath \egroup} +\def\nested:math{|<nested pic math|>} +>>> + +The above should be sensitive to cases like the following one. + +\begin{verbatim} +\[ \parbox[t]{2in} { \[.\] }\] +\end{verbatim} + + +\<nested pic math\><<< +\def\[{\bgroup \def\]{$$\egroup}$$}% +\def\({\bgroup \def\){$\egroup}$}% +>>> + + + + +\<configure html-speech-math latex\><<< +\Configure{@TITLE}{\Configure{()}{$}{$}} +>>> + +\<configure html-speech-math th4\><<< +\:CheckOption{th4}\if:Option + \Configure{[]} + {\PicDisplay $$\everymath{}\everydisplay{}} + {$$\EndPicDisplay |<try inline par|>} + \Configure{()}{\PicMath$}{$\EndPicMath} +\fi +>>> + + + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Cross References} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech latex\><<< +\Configure{pageref} + {\HCode{<span class="pageref">}} + {\HCode{</span>}} + {\S} +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Features} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%% +\section{Javascript: Pop-ups On Mouse Over} +%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%% +\subsection{Background} +%%%%%%%%%%%%%%%% + + +There are 6 supporting dvi variations of the +`CopyTo to-file op group' + dvi command: + +\begin{description} +\item[From] Start copying (at current address) +\item[Until] End copying (at current address) +\item[Skip] Start skipping (from current address) +\item[Cont] End skipping (at current-address) +\item[Addr integer-label] Associate current + address with the integer-label of the given group +\item[Set integer-label] + Replace the `current address' in the following Skip/Cont (and + From/Until ?) commands with the address associated to the + integer-label of the given group by an Addr command +\end{description} + +The code +\begin{verbatim} +B0 + \ht:special {t4ht@DCopyTo: \jobname-js.tex From bib } +B1 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Skip bib } +B2 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Addr1 bib } +B3 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Addr2 bib } +B4 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Set1 bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Cont bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Set2 bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Skip bib } +B5 +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until bib } +B6 +\end{verbatim} + +produces the string ` B1 B3 '. + + +%%%%%%%%%%%%%%%% +\subsection{End Points of the Jobname-js.tex File} +%%%%%%%%%%%%%%%% + + + +\<start js\><<< +\js:on +>>> + + + +\<onmouseover utilities\><<< +\def\js:on{% + \global\let\js:on=\relax + \HCode{<!--}% + |<js From js|>% + \HCode{\string\def\string\jstoday{\:today} }% + \HCode{\string\input\space onmouseover.4ht }% + \:CheckOption{trace-onmo} \if:Option + \HCode{<js trace="on">}% + \else + \Log:Note{for mouseover tracing of + compilation, use the command line option `trace-onmo'} + \HCode{<js>}% + \fi + |<js Until js|>% + \HCode{-->}% + |<end js|>} +>>> + + +\<end js\><<< +\csname a:mouseover-Needs\endcsname +\Css{.js {text-indent:0; background-color:aqua; color:black; + border:solid 1px black; margin:2pt; width:99\%;}} +\Css{.js p, .|<js p.bibitem css|>, |<js p.bibitem-p css|> {text-indent:0; + background-color:aqua; color:black; margin:2pt;}} +\AtEndDocument{{\HCode{<!--}% + |<js From js|>% + \HCode{</js>}% + |<js Until js|>% + \HCode{-->}}}% +>>> + + +Was \verb'\Css{.js p {margin:0; text-indent:0;}}' but javascript under +netscape had problems dealing with 0 left margins. + + + + +\<js From js\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex From js }% +>>> + +\<js Until js\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until js }% +>>> + + + + + +%%%%%%%%%%%%%%%% +\subsection{Configuration Commands} +%%%%%%%%%%%%%%%% + + + + +\<onmouseover utilities\><<< +\HAssign\MO:script = 0 +\NewConfigure{mouseover-script}[1]{\bgroup + \gHAdvance\MO:script by 1 + \expandafter\NextFile \expandafter{\jobname\MO:script.tmp}% + \HPage{}\IgnorePar |<js From var|>% + \HCode{<\if !#1!\else mouseover-script\fi>#1\if !#1!\else =\fi}% + \everyvbox{\IgnorePar\everyvbox{}\aftergroup\end:movar}% + \def\end:movar{\everyvbox{}\HCode + {</\if !#1!\else mouseover-script\fi>}% + |<js Until var|>\EndHPage{}% + \egroup}% + \vbox} +>>> + +\<ol-hauto mouseover-script\><<< +\Configure {mouseover-script}{}{\HCode{ol\string_hauto = 1;}}% +>>> + + +\<js From var\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex From var }% +>>> + +\<js Until var\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until var }% +>>> + + + + +\<onmouseover utilities\><<< +\expandafter\def\csname c:mouseover-vars:\endcsname#1#2{% + \expandafter\def\csname mouseover-#1-init\endcsname##1{}% + \def\:tempc##1{\expandafter\append:defI\csname + mouseover-#1-init\endcsname{tex4ht.##1=tex4ht.\expandafter\jsHash + \expandafter{\expandafter v####1.##1};}}% + \Mo:vars#2,<>} +\def\Mo:vars#1,#2<>{% + \if !#1!\else + \expandafter\def\csname mo#1\endcsname##1{% + \HCode{<!--}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex From #1 }% + \HCode{<#1-var>\jsHash{v##1.#1}=}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Skip #1 }% + \HCode{-->}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Cont #1 }% + }% + \expandafter\def\csname endmo#1\endcsname{% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Skip #1 }% + \HCode{<!--}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Cont #1 }% + \HCode{</#1-var>}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Until #1 }% + \HCode{-->}% + }% + \:tempc{#1}% + \fi + \if !#2!\else \expand:after{\Mo:vars#2<>}\fi +} +>>> + + + + +%%%%%%%%%%%%%%%% +\subsection{Footnotes Contributions} +%%%%%%%%%%%%%%%% + + + + +\<js From fn\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex From fn }% +>>> + +\<js Skip fn\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Skip fn }% +>>> + +\<js Cont fn\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Cont fn }% +>>> + +\<js Until fn\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until fn }% +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Overlib} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\Link[http://www.egroups.com/group/overlib]{}{}egroup for overlib\EndLink, +\Link[http://www.bosrup.com/web/overlib/]{}{}home over overlib\EndLink + + +\<overDiv\><<< +\HCode{<div id="overDiv" + style="position:absolute; + visibility:hidden; z-index:1000;"></div> + |<overlib src|>}% +>>> + + +\<onmouseover @HEAD\><<< +\Configure{@HEAD} + {\HCode{%|% natural place for <overlib src>, but netscape 4.7...|% + <script type="text/javascript" + src="\jobname-js.js"></script>\Hnewline}} +|<onmouseover utilities|> +\:CheckOption{info} \if:Option + |<overlib info|> +\fi +>>> + + +\<overlib info\><<< +\Log:Note{Option `mouseover' is powered + by the overlib.js utility of Erik Bosrup + (http://www.bosrup.com/web/overlib/).} +\immediate\write-1{} +\immediate\write-1{The option requires two compilations of + the source file.} +\immediate\write-1{} +\immediate\write-1{Use \string\Configure + {mouseover-XXX}{...} to introduce arguments into the overlib + function call, and code into a preceding script. XXX stands for + `cite' or `footnote', the default body is at tex4ht.body, + and the default caption at tex4ht.caption. An empty parameter + requests no sensitivity of mouse over the specified type of entries.} +\immediate\write-1{} +\immediate\write-1{The variant \string\Configure + {mouseover-XXX}[labels]{...} of the above command restricts the + outcome just to the listed labels (i.e., the values listed + in tex4ht.caption).} +\immediate\write-1{} +\immediate\write-1{The \string\Configure{mouseover-script }{variable-name} + {javascript-code} command may be used to introduce code into the + javascript script, as a content of a global variable when a name is + given and as a bare code when the name is not given. To be referenced, + the name must be prefixed by ``tex4ht.'.} +\immediate\write-1{} +\immediate\write-1{The \string\Configure{mouseover-vars}{XXX} + {variable-list} command introduces local variables, to be referenced + with the prefix ``tex4ht.' on their names. In addition, for each + variable YYY it introduces a construct \string\moYYY + {label}...\string\endmoYYY\space for selecting a value for the variable + at the specified label.} +\immediate\write-1{} +\immediate\write-1{Example:} +\immediate\write-1{ + \string\Configure{mouseover-script}{var}{\HCode{<hr />}}} +\immediate\write-1{|<mouseover cite config|>} +\immediate\write-1{|<mouseover cite css|>.} +\immediate\write-1{ + \string\moAuthor{bb}A name\string\endmoAuthor } +\immediate\write-1{} +\immediate\write-1{The compilation indirectly invokes the + command 'xhtex \string\jobname-js'. An alternative format for + the command can be requested within a configuration of + the form \string\Configure{mouseover-Needs}{\string\Needs{"..."}}. + The default setting is due to + \string\Configure{mouseover-Needs}{\string\Needs{"xhtex + \string\jobname-js"}}} +\immediate\write-1{In case \string\Configure{mouseover-Needs} is + undefined, introduce the instruction + \string\NewConfigure{mouseover-Needs}{1} before that command. +} +>>> + +\<onmouseover utilities\><<< +\expandafter\ifx \csname mouseover-Needs\endcsname\relax + \NewConfigure{mouseover-Needs}{1} + \Configure{mouseover-Needs}{\Needs{"xhtex \jobname-js"}} +\fi +\def\mo:args#1#2#3{\expandafter + \ifx \csname a:mouseover-#1-#2\endcsname\empty\else + \expandafter \ifx \csname a:mouseover-#1-#2\endcsname\relax + |<global mouseover-type|>\else + |<private mouseover-type|>\fi\fi} +>>> + +\<global mouseover-type\><<< +\expandafter \ifx \csname a:mouseover-#1\endcsname\empty + \else + \Hnewline + onmouseover="tex4ht.body=tex4ht.#3; tex4ht.caption='#2'; + |<init mouseover vars|>% + return overlib(\csname a:mouseover-#1\endcsname);" + \Hnewline onmouseout="nd();"\Hnewline\fi +>>> + +\<private mouseover-type\><<< +\Hnewline + onmouseover="tex4ht.body=tex4ht.#3; tex4ht.caption='#2'; + |<init mouseover vars|>% + return overlib(\csname a:mouseover-#1-#2\endcsname);" +\Hnewline onmouseout="nd();"\Hnewline +>>> + +\<init mouseover vars\><<< +\expandafter\ifx \csname mouseover-#1-init\endcsname\relax + \else \csname mouseover-#1-init\endcsname{#2}\fi +>>> + + + +%%%%%%%%%%%%%%%% +\subsection{Boundary Cases for mouseover} +%%%%%%%%%%%%%%%% + + + + +\<DOCTYPE in PROLOG under mouseover\><<< +\:CheckOption{xhtml} \if:Option \else + \:CheckOption{DOCTYPE} \if:Option + \Log:Note{to request a DOCTYPE declaration + use the command line option `DOCTYPE'} + \else + \edef\Preamble{\Preamble,no-DOCTYPE} + \fi +\fi +>>> + + + + + +\<overlib src\><<< +<script language="JavaScript" src="overlib.js" + type="text/javascript" ></script>\Hnewline +<!--http://www.bosrup.com/web/overlib/ (Erik Bosrup)-->% +>>> + + + +\begin{itemize} +\item +\begin{verbatim} +THE DOCUMENT DECLARATION GIVES TROUBLE IN CONNECTION WITH OVERLIB. It +would be hardly noticeable in small pages, requiring no scrolling - +the only symptom then is that the browser suddenly warns about errors +- those ones in overlib, and as a matter of fact, apparently in the +part of the script that ensures compatibility with Netscape. However, +in a large page, the pop-ups seem to disappear - making them STICKY +and scrolling up, one can find them in the upper right corner. One +has only to remove <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN" "http://www.w3.org/TR/emacspeak/loose.dtd"> however, to +put an end to the browser complaints and get back the pop-ups into +their proper places. \end{verbatim} + +\item +\begin{verbatim} + I +have just found a reference to the trouble, together with a very easy +way to go round it: it is enough to add <?xml version="1.1"?> BEFORE +the Document declaration. I have checked it, and it is all right - +both for Explorer6 and Netscape 4.7 and 6. + +By the way: for the Mouseover option to work under Netscape4.x, the call to +<script type="text/JavaScript" src="overlib.js"></script> +<!--http://www.bosrup.com/web/overlib/ (Erik Bosrup)--> +MUST appear in the <BODY> section, NOT in the <HEAD>: absurd, but true (it +is reported in Overlib's page). +\end{verbatim} + +\end{itemize} + + +%%%%%%%%%%%%%%%% +\subsection{The Configuration File onmouseover.4ht} +%%%%%%%%%%%%%%%% + + + + +\<onmouseover.4ht\><<< +\ifnum\the\catcode`\%=14\else\expandafter\edef\csname + \string:RestoreCatcodes\endcsname{\catcode`\%|=\the + \catcode`\%}\catcode`\%|=14\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% onmouseover.4ht |version % +% Copyright |CopyYear.2001. Eitan M. Gurari % +|<TeX4ht copyright|> + +\hbadness=10000 \vbadness=10000 \hfuzz=99in \vfuzz=\hfuzz +\overfullrule=0pt \let\makefootline\empty +\special{t4ht.js} + +\newcount\CodeNumber +\def\NoSpecials#1#2#3{\edef\temp{\the\CodeNumber}% + \global\CodeNumber=#3 + \def\next{\catcode\CodeNumber=#1 + \ifnum \CodeNumber=#2 \let\next=\relax \fi + \global\advance\CodeNumber by -1 \next}\next + \global\CodeNumber=\temp }% + +\expandafter\def\csname js js\endcsname{\egroup \special{t4ht@@}% + tex4ht=new Array() ; //\jstoday} +\expandafter\def\csname js js trace="on"\endcsname{\global + \let\TagTrace=\empty \csname js js\endcsname} +\expandafter\def\csname js /js\endcsname{\egroup \special{t4ht@@}% + \csname bye\endcsname\endinput} + +|<hash for onmouseover.4ht|> +|<escape backslashes|> +\catcode`\<=13 +\def\jselement#1{\expandafter\def\csname js #1\endcsname##1=##2</#1>{% + \hfill\break tex4ht.\jsHash{##1}=\hbox{"##2";}\egroup}} +|<escape double quotes|> +\expandafter\def\csname js \endcsname#1</>{% + \hfill\break \hbox{#1}\egroup} + +\def<#1>{\bgroup + \expandafter \ifx \csname js #1\endcsname \relax \jselement{#1}\fi + \def<##1>{\TagTrace{\def\x{##1}\def\y####1:->{}% + \immediate\write16{...\string<\expandafter\y\meaning\x>}}% + \string<\scan ##1"<>>}% + \NoSpecials{12}{0}{255}\NoSpecials{11}{65}{90}\NoSpecials{11}{97}{122}% + \catcode`\ =10 \catcode`\^^M=10 \catcode`\^^I=10 \catcode`\<=13 + \catcode`\\=13 + \tt \csname js #1\endcsname} +\def\TagTrace#1{} +\catcode`\&=12 \catcode`\#=12 +\endinput +>>> + +\<escape double quotes\><<< +\def\scan#1"#2<>{#1\if !#2!\expandafter\done\else + \string\"\expandafter\scan +\fi#2<>} +\def\done#1>{} +>>> + +\<escape backslashes\><<< +\catcode`/=0 \catcode`\\=13 +/def\{/string\/string\} +/catcode`/\=0 \catcode`\/=12 +>>> + + + +\<onmouseover utilities\><<< +\def\jsHash#1{\jsHash:a #1<>} +\def\jsHash:a#1#2<>{% + \ifnum `#1<`0 JjV\else + \ifnum `#1>`z jJv\else + \ifnum `#1>`9 + \ifnum `#1<`A jJV\else + \ifnum `#1>`Z + \ifnum `#1<`a jVV\else #1\fi + \else #1\fi\fi + \else #1\fi\fi\fi + \if !#2!\expandafter\done:hash + \else\expandafter\jsHash:a\fi#2<>} +\def\done:hash#1>{} +>>> + +\<hash for onmouseover.4ht\><<< +\def\jsHash#1{\jsHasha #1<>} +\def\jsHasha#1#2<>{% + \ifnum `#1<`0 JjV\else + \ifnum `#1>`z jJv\else + \ifnum `#1>`9 + \ifnum `#1<`A jJV\else + \ifnum `#1>`Z + \ifnum `#1<`a jVV\else #1\fi + \else #1\fi\fi + \else #1\fi\fi\fi + \if !#2!\expandafter\done + \else\expandafter\jsHasha\fi#2<>} +>>> + + + +\<onmouseover utilities\><<< +\expandafter\Odef\csname c:mouseover-?:\endcsname[#1]#2{% + \def\:temp{#2}% + \if !#1!\expandafter\let\csname a:mouseover-\:tempb\endcsname=\:temp + \else \om:type#1,|<par del|>\fi} +\def\om:type#1,#2|<par del|>{% + \if !#1!\else\expandafter + \let\csname a:mouseover-\:tempb-#1\endcsname=\:temp\fi + \ifx !#2!\else \def\:tempa{\om:type#2|<par del|>}\expandafter\:tempa \fi +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Formats} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%% +\section{latex.ltx} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech latex\><<< +|<0,32,4 plain,latex|> +|<32,4 plain,latex|> +|<4 plain,latex|> +|<32,4 latex|> +|<4 latex|> +|<0,32,4 latex|> +|<latex lttab|> +|<latex ltbibl|> +|<latex ltoutenc|> +|<latex ltfloat (footnotes)|> +\:CheckOption{javahelp} \if:Option + \input javahelp.4ht +\else + \Log:Note{for a JavaHelp output format, + use the command line option `javahelp'} +\fi +>>> + +\<latex lttab\><<< +\Configure{extracolsep} + {~\tmp:dim=#1\relax\ifdim \tmp:dim>1em ~\fi} +>>> + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltplain.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{obeylines} + +\<4 plain,latex\><<< +\Configure{obeylines} + {\ifvmode \:xhtml{\IgnorePar\EndP}\IgnoreIndent + \HCode{<div class="obeylines-v">}% + \gdef\ob:ln{\ht:special{t4ht=</div>}}% + \else + \SaveEndP \HCode{<span class="obeylines-h">}% + \gdef\ob:ln{\ht:special{t4ht=</span>}\RecallEndP}% + \fi + } + {\EndP\ob:ln\ShowPar} + {\hbox{\HCode{<br\xml:empty>}}} +\Css{.obeylines-h,.obeylines-v {white-space: nowrap; }} +\Css{div.obeylines-v p { margin-top:0; margin-bottom:0; }} +>>> + %%%%%%%%%%%%%%%%%%%%%%% + % ltlogos.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Logos} +\<4 plain\><<< +|</TeX for 4.0t|> +>>> + + +\</TeX for 4.0t\><<< +\def\TeX{\HCode{<span class="TEX">}T\HCode{<span\Hnewline + class="E">}E\HCode{</span>}X\HCode{</span>}} +\Css{span.TEX {letter-spacing: -0.125em; }} +\Css{span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}} +\Css{a span.TEX span.E {text-decoration: none; }} +>>> + +\verb'\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}' + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltfssini.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{tt Font} + +\<0,32,4 latex\><<< +\ifx \ttfamily\:UnDef \else \Configure{tt}{\ttfamily} \fi +>>> + + %%%%%%%%%%%%%%%%%%%%%%% + % ltxref.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Cross References} +\<32,4 latex\><<< +\Configure{ref} + {\Link} + {\ifx \RefArg\:UnDef\else + \Tg<!--tex4ht:ref: \RefArg\space-->\fi\EndLink} + {} +>>> + +The comments lets us relate the automatically created label with that +offered by the user. The space is needed for cases that the label ends with a dash. + + +\begin{itemize} +\item + LaTeX allows labels almost everywhere. +\item +Different labels may be associated to a common object in LaTex. +\item + There are almost no restrictions on the kind of characters + allowed within the labels of LaTeX. +\end{itemize} + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmiscen.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Miscellaneous Environments} +\<32,4 plain,latex\><<< +\def\end:TTT{\ifvmode\IgnorePar\fi \EndP\HCode{</td></tr></table>}} +>>> + +\<4 latex\><<< +\append:def\center{\par} +\ConfigureEnv{center} + {\ifvmode \IgnorePar\fi \EndP}{|<try env inline par|>} + {\EndP\IgnorePar + \HCode{<div class="center"\Hnewline>}\ShowPar\endgraf} + {\IgnorePar\EndP\HCode{</div>}} +\ConfigureEnv{flushleft} + {\ifvmode \IgnorePar\fi \EndP}{|<try env inline par|>} + {\EndP\IgnorePar + \HCode{<div class="flushleft"\Hnewline>}\ShowPar\endgraf} + {\IgnorePar\EndP\HCode{</div>}} +\ConfigureEnv{flushright} + {\ifvmode \IgnorePar\fi \EndP}{|<try env inline par|>} + {\EndP\IgnorePar + \HCode{<div class="flushright"\Hnewline>}\ShowPar\endgraf} + {\IgnorePar\EndP\HCode{</div>}} +\Css{div.center, + div.center div.center {text-align: center; + margin-left:1em; margin-right:1em;}} +\Css{div.center div {text-align: left;}} +\Css{div.flushright, + div.flushright div.flushright {text-align: right;}} +\Css{div.flushright div {text-align: left;}} +\Css{div.flushleft {text-align: left;}} +>>> + +\<32,4 latex\><<< +\ConfigureEnv{verbatim}{\env:verb{verbatim}}{\endenv:verb}{}{} +\ConfigureEnv{verbatim*}{\env:verb{verbatim}}{\endenv:verb}{}{} +\def\env:verb#1{\ifinner\else \vfill\break\fi + \IgnorePar\EndP \HAssign\Verb:N=0 + \HCode{<\tbl:XV{#1}><tr class="#1"><td\Hnewline + class="#1">}\HCode{<div class="#1"\a:LRdir>}\EndNoFonts} +\def\endenv:verb{\NoFonts + \EndP \ht:special{t4ht=</div>}\end:TTT |<try inline par|>} +\def\start:fenv#1{\:xhtml{\IgnorePar\EndP}\HCode{<table + \Hnewline width="100\%" + \:zbsp{flush#1}><tr><td><div align="#1"\Hnewline\a:LRdir>}} +\def\end:fenv{\IgnorePar\HCode{</div>}\end:TTT\IgnorePar} +\HAssign\Verb:N=0 +\Css{div.verbatim {font-family: monospace; white-space: nowrap; }} +>>> + +\<configure html-speech latex\><<< +\Configure{verb} + {\HCode{<span class="verb"\a:LRdir>}} + {\HCode{</span>}} +>>> + + + +The \verb+\:nbsp+ above is because lynx collapses +consecutive \verb+<br />+ tags. + + + + +\<configure html-speech latex\><<< +\Configure{centercr}{\ht:special{t4ht=<br\xml:empty>}} + {\ht:everypar{\ht:everypar{\HtmlPar}}} +>>> + + + % ltmath.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Math Setup} + +\<configure html-speech-math latex\><<< +\:CheckOption{pic-equation}\if:Option +% \ConfigureEnv{equation} +% {\relax\ifmmode\else\par\fi\:xhtml{\IgnorePar\EndP}% +% \HCode{<center class="equation"><table class="equation"\Hnewline +% border="0" cellpadding="0" cellspacing="15"><tr><td>}} +% {\:xhtml{\IgnorePar\EndP}% +% \HCode{</td></tr></table></center>}\IgnorePar +% \ifmmode\else\par\fi} +% {}{} + \Configure{equation} + {\:xhtml{\ifvmode \IgnorePar\fi\EndP}% + \HCode{<\tbl:XV{equation}><tr><td>}\IgnorePar + \Configure{$$}{\PicDisplay}{\EndPicDisplay} + {\everymath{}\everydisplay{}} + } + {\ifvmode \IgnorePar\fi\HCode{</td><td width="5\%">}} + {\end:TTT |<try inline par|>} |% was: \IgnorePar\par|% +\else +% \ConfigureEnv{equation} +% {\relax\ifmmode\else\par\fi\:xhtml{\IgnorePar\EndP}% +% \HCode{<center class="equation"><table class="equation"\Hnewline +% border="0" cellpadding="0" cellspacing="15"><tr><td>}% +% } +% {\:xhtml{\IgnorePar\EndP}% +% \HCode{</td></tr></table></center>}\IgnorePar +% \ifmmode\else\par\fi} +% {}{} + \Configure{equation} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<\tbl:XV{equation}><tr><td>}\IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP\HCode{</td><td width="5\%">}} + {\end:TTT\ifmmode\else |<try inline par|>\fi} +\fi +\Css{.equation td{text-align:center; }} +\Css{td.equation { margin-top:1em; margin-bottom:1em; } } +>>> + +\<configure html-speech-math latex\><<< +|<pic plain/latex math 4.0t|> +\:CheckOption{pic-eqnarray} \if:Option + |<PIC eqnarray Config|> +\else |<TABLE eqnarray Config 4.0t|>\fi +>>> + + +\<PIC eqnarray Config\><<< +\ConfigureEnv{eqnarray} + {\IgnorePar\EndP\Tg<div class="pic-eqnarray">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +\Css{div.pic-eqnarray {text-align:center;}} +\ConfigureEnv{eqnarray*} + {\IgnorePar\EndP\Tg<div class="pic-eqnarray-star">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +\Css{div.pic-eqnarray-star {text-align:center;}} +>>> + +\<TABLE eqnarray Config 4.0t\><<< +\Log:Note{for pictorial eqnarray, + use the command line option `pic-eqnarray'} + +\Configure{eqnarray}{\HCode{<table\Hnewline + class="eqnarray\ifx \@seqncr\@eqncr\else-star\fi ">}} + {\HCode{</table>}} + {\HCode{<tr valign="middle" + class="eqnarray\ifx \@seqncr\@eqncr\else-star\fi">}} + {\HCode{</tr>}} + {\HCode{\ifnum \HCol=4 <td\Hnewline width="10" + class="eqnarray4"></td>\fi + <td\Hnewline align="\ifcase\HCol \or right\or center\or + left\else right\fi" style="white-space:nowrap;"\Hnewline + class="eqnarray\HCol">}} + {\EndP\HCode{</td>}} +>>> + +\<TABLE eqnarray Config 4.0t\><<< +\ConfigureEnv{eqnarray} + {\:xhtml{\IgnorePar\EndP}\HCode{<div class="eqnarray">}} + {\:xhtml{\EndP}\HCode{</div>}}{}{} +\ConfigureEnv{eqnarray*} + {\:xhtml{\IgnorePar\EndP}\HCode{<div class="eqnarray">}} + {\:xhtml{\EndP}\HCode{</div>}}{}{} +\Css{div.eqnarray{text-align:center;}} +>>> + %%%%%%%%%%%%%%%%%%%%%%% + % lttab.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Tabbing, Tabular and Array Environments} + +\<configure html-speech latex\><<< +\:CheckOption{no-array}\if:Option \else + |<html latex array/tabular Config 4.0t|> +\fi +>>> + + +\<configure html-speech-math latex\><<< +\:CheckOption{no-array}\if:Option \else + |<math html latex array/tabular|> +\fi +>>> + + + + +\<vspace body for array/tabular\><<< +\append:def\vspc:s{\h:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\vspc:s{\i:HBorder}% + \expandafter\:tempb + \fi } +\tmp:cnt|=0 \:tempb +\append:def\vspc:s{\j:HBorder}\global\let\vspc:s|=\vspc:s +>>> + +\<0,32,4 latex\><<< +\Configure{hline}{\ifx \ar:cnt\:UnDef\else + \o:noalign:{|<hline body for array/tabular|>}% + \expandafter\ignoreEndTr + \fi} +\Configure{//[]}{\ifx \ar:cnt\:UnDef + \else\o:noalign:{|<vspace body for array/tabular|>}\fi} +>>> + + + +\<hline body for array/tabular\><<< +\append:def\hline:s{\a:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\hline:s{\b:HBorder}% + \expandafter\:tempb + \fi }% +\tmp:cnt|=0 \:tempb +\append:def\hline:s{\c:HBorder}\global\let\hline:s|=\hline:s +>>> + + + +\<html latex array/tabular Config 4.0t\><<< +\Configure{multicolumn} + {\let\sv:VBorder\VBorder + \let\VBorder\empty + \Configure{VBorder}{}{}{}{}% + } + {\let\VBorder\sv:VBorder} + {\ifvmode\IgnorePar\fi + \HCode{<div class="multicolumn" }\HColAlign\HCode{>}} + {\ifvmode\IgnorePar\fi \EndP\HCode{</div>}} +>>> + + + +\<html latex array/tabular Config 4.0t\><<< +\def\pic:env{% + \def\begin##1{\bgroup + \def\end####1{\o:end:{####1}\EndPicture\egroup}% + \ifx \EndPicture\:UnDef + \Picture+{ class="##1" align="middle"}% + \else \let\EndPicture|=\empty\fi + \o:begin:{##1}}% +} +>>> + +\verb'\AllColMargins' Return a binary string in which 1 represents +a column, and 0 represents a `@'. \verb'\ColMargins' retrieves the +zeros before the 1's that represent the current and following 1's. + +\<html latex array/tabular Config 4.0t\><<< +\def\ColMargins{\tmp:cnt|=\HCol\relax + \expandafter\nosp:hbr\AllColMargins 1//} +\def\nosp:hbr#11#2//{\ifnum \tmp:cnt>1 \advance\tmp:cnt by -1 + \nosp:hbr#2//\else\nosp:gt#11#2//\fi} +\def\nosp:gt#11#21#3//{% + \def\:temp{#1}\ifx \:temp\empty 1\else 0\fi + \def\:temp{#2}\ifx \:temp\empty 1\else 0\fi} +\Css{div.td00{ margin-left:0pt; margin-right:0pt; }} +\Css{div.td01{ margin-left:0pt; margin-right:5pt; }} +\Css{div.td10{ margin-left:5pt; margin-right:0pt; }} +\Css{div.td11{ margin-left:5pt; margin-right:5pt; }} +>>> + + +\<html latex array/tabular Config 4.0t\><<< +\:CheckOption{pic-tabular} \if:Option \else + \Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP \halignTB{tabular}\putVBorder } + {|<insert Clr|>\HCode{</table>}} + {\HCode{<tr \Hnewline}\halignTR + \HCode{ id="TBL-\TableNo-\HRow-">}} + {\r:HA} + {\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}\NoFonts\ColMargins\EndNoFonts + \HCode{">}|<td save EndP|>% + |<start array par box|>\PushStack\Table:Stck\TableNo} + {|<end array par box|>\PopStack\Table:Stck\TableNo \d:HA} +\fi +|<configuring @()|> +\Css{td.td00{ padding-left:0pt; padding-right:0pt; }} +\Css{td.td01{ padding-left:0pt; padding-right:5pt; }} +\Css{td.td10{ padding-left:5pt; padding-right:0pt; }} +\Css{td.td11{ padding-left:5pt; padding-right:5pt; }} +>>> + +\<insert ClrNO\><<< +\expandafter\tmp:toks\expandafter{\Clr}% +\HCode{<!--"\the\tmp:toks"-->}% +>>> + +The quotes above hide \verb+>+ from IE within the comment. Otherwise, the +browser inappropriately get confused. + +On the other hand, the above doesn't work, for instance on +`\verb+|r||r@{--}l|p{1.25in}|+' due to the extra \verb+--+. + + +\subsection{The option @()} + + +\<configuring @()\><<< +\Configure{@{}}{} +>>> + + +\<html latex array/tabular Config 4.0t\><<< +\Configure{halignTB<>}{array}{\HCode{class="array"\Hnewline + cellpadding="0" cellspacing="0" \GROUPS\Hnewline + frame="\ifx \GROUPS\empty void\else border\fi" + }<>\HAlign} +\:CheckOption{pic-array} \if:Option \else + \Configure{array} + {\ifvmode \IgnorePar\fi \EndP\halignTB{array}\putVBorder} + {|<insert Clr|>\HCode{</table>}} + {\R:HA} + {\r:HA} + {\D:HA\HCode{<div class="td}\NoFonts\ColMargins\EndNoFonts + \HCode{">}|<start array par box|>\pic:env} + {|<end array par box|>\HCode{</div>}\d:HA} + \Configure{arrayparbox}{\ShowPar} +\fi +>>> + +\verb|\par| is empty if not in par box. + +\<start array par box\><<< +\par \ShowPar +>>> + +\<end array par box\><<< +\IgnorePar \EndP +>>> + + +We force border around the full table whenever a vertical line is +requested, because it makes the tables better looking within the +existing capabilities. + +Currently, we either have empty \verb'\VBorder', or one defined to +\verb'\def\VBorder{border="1"}'. + +\<html latex array/tabular Config 4.0t\><<< + \let\VBorder|=\empty \let\AllColMargins|=\empty + \Configure{VBorder} + {\let\VBorder|=\empty \let\AllColMargins|=\empty + \global\let\GROUPS|=\empty \HAssign\NewGroup = 0 + \gHAdvance\Next:TableNo by 1 \global\let\TableNo=\Next:TableNo } + {\xdef\VBorder{\VBorder\ifnum \NewGroup> 0 </colgroup>\fi} + \HAssign\NewGroup = 0 \gdef\GROUPS{rules="groups"}} + {\Advance:\NewGroup by 1 + \ifnum \NewGroup=1 \xdef\VBorder{\VBorder<colgroup + id="TBL-\TableNo-\ar:cnt g">}\fi + \xdef\VBorder{\VBorder<col\Hnewline id="TBL-\TableNo + -\ar:cnt"\xml:empty>}\xdef\AllColMargins{\AllColMargins1}} + {\xdef\AllColMargins{\AllColMargins 0}} + \Configure{HBorder} + {<tr\Hnewline class="hline">} {<td><hr\xml:empty></td>} {</tr>} + {<tr\Hnewline class="cline">} + {<td></td>} {<td><hr\xml:empty></td>} {</tr>} + {<tr\Hnewline class="vspace" style="font-size:\HBorderspace">} + {<td\Hnewline>\string </td>} {</tr>} +\Configure{putHBorder}{\HCode{\HBorder}} +\HAssign\Next:TableNo|=0 \global\let\TableNo=\Next:TableNo +\Css{.hline hr, .cline hr{ height : 1px; margin:0px; }} +>>> + +When \verb'\putVBorder' is call in \verb'\VBorder' +we have a sequence of the form +\verb'<COLGROUP><COL ...">...</COLGROUP>...' with the last +tag possibly missing. + +\<html latex array/tabular Config 4.0t\><<< +\def\putVBorder{\expandafter\put:VBorder\VBorder</>|<par del|>} +\def\put:VBorder#1</#2>#3|<par del|>{\def\:temp{#2}\ifx\:temp\empty + \HCode{\VBorder}% + \def\:temp{#1}\ifx\:temp\empty \else\HCode{</colgroup>}\fi + \else \def\:temp{\put:VBorder#3|<par del|>}\expandafter\:temp\fi +} +>>> + +\<configure html-speech latex\><<< +\:CheckOption{pic-tabbing} \if:Option + \ConfigureEnv{tabbing}{\Picture*{}}{\EndPicture}{}{} +\else + |<TABLE tabbing Config 4.0t|> + \:CheckOption{pic-tabbing'} \if:Option + |<PICT dot tabbing|> + \fi +\fi +>>> + +\<TABLE tabbing Config 4.0t\><<< +\Configure{tabbing}[1.5]{% + \ifvmode \IgnorePar\fi\EndP \leavevmode\ht:special{t4ht=<table + \Hnewline\:zbsp{tabbing}><tr \Hnewline valign="baseline" + class="tabbing">}} + {\ht:special{t4ht=</tr></table>}\ShowPar \csname par\endcsname + |<global HtmlPar|>% + } + {\ht:special{t4ht=<td \ifx \TabWidth\empty \else + width="\TabWidth"\fi \Hnewline + class="tabbing\ifx \`\TabType -right\fi">}} + {\ht:special{t4ht=</td>}} +\ConfigureEnv{tabbing}{\IgnorePar\EndP}{}{}{} +\Css{.tabbing-right {text-align:right;}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%% to be placed %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{to be placed} +%%%%%%%%%%%%%%%%%%% + + + +\<4 latex\><<< +\Configure{underline} + {\HCode{<span class="underline">}\:gobble} + {\HCode{</span>}} +\Css{.underline{ text-decoration:underline; }} +\Css{.underline img{ border-bottom: 1px solid black; + margin-bottom:1pt; }} +>>> + +\<4 plain\><<< +\Configure{underline} + {\HCode{<span class="underline">}\hbox\bgroup \:gobble} + {\egroup \HCode{</span>}} +\Css{.underline{ text-decoration:underline; }} +\Css{.underline img{ border-bottom: 1px solid black; + margin-bottom:1pt; }} +>>> + + + +\<4 plain,latex\><<< +\Configure{overline} + {\HCode{<span class="overline">}} + {\HCode{</span>}} +\Css{.overline{ text-decoration:overline; }} +\Css{.overline img{ border-top: 1px solid black; }} +>>> + + + + + + + + + + +\<0,32,4 latex\><<< +\:CheckOption{pic-framebox} \if:Option + \Configure{framebox} + {\Picture+[]{ \a:@Picture{framebox}}} {\EndPicture} +\else + \Log:Note{for bitmap framebox'es, use + the command line option `pic-framebox'} + \Configure{framebox} + {\HCode{<span class="framebox-\frameboxAlign"\Hnewline + style="width:\frameboxWidth;">}} + {\HCode{</span>}} + |<shared framebox style|> +\fi +>>> + +% \bgroup +% \fboxrule=0pt \fboxsep=0pt +% \HAssign\frameboxN=0 +% \gHAdvance\frameboxN by 1 +% id="framebox-\frameboxN" + + +\<shared framebox style\><<< +\Css{.framebox-c, .framebox-l, .framebox-r { + padding-left:\the\fboxsep; + padding-right:\the\fboxsep; + text-indent:0pt; + border:solid black \the\fboxrule; +}} +\Css{.framebox-c {text-align:center;}} +\Css{.framebox-l {text-align:left;}} +\Css{.framebox-r {text-align:right;}} +>>> + +\<32,4 latex\><<< +\:CheckOption{pic-fbox} \if:Option + \Configure{fbox} + {\leavevmode\Picture+[]{ \a:@Picture{fbox}}} {\EndPicture} +\else + \Log:Note{for bitmap fbox'es, use + the command line option `pic-fbox'} + \Configure{fbox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="fbox">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="fbox">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.fbox {padding-left:\the\fboxsep; + padding-right:\the\fboxsep; + text-indent:0pt; + border:solid black \the\fboxrule; + }} + \Css{div.center div.fbox {text-align:center; clear:both; + padding-left:3.0pt; padding-right:3.0pt; + text-indent:0pt; border:solid black 0.4pt; }} +\fi +>>> + + + + +\<0,32,4 latex\><<< +\Configure{InsertTitle}{\let\label|=\lb:l + \let\ref|=\o:ref \Configure{ref}{}{}{}} +\Configure{AfterTitle}{\let\index|=\:index + \let\ref|=\:ref \let\label|=\lb:l } +\Configure{NoSection} + {\let\sv:index|=\index \let\sv:label|=\label + \let\sv:newline|=\newline \def\newline{ }% + \let\sv:setfontsize|=\@setfontsize \let\@setfontsize|=\:gobbleIII + \let\index|=\@gobble \let\label|=\@gobble + |<nolink ref|>% + } + {\let\index|=\sv:index \let\label|=\sv:label + |<restore ref|>% + \let\newline|=\sv:newline \let\@setfontsize|=\sv:setfontsize + } +>>> + +\<nolink ref\><<< +\let\sva:rEfLiNK|=\a:rEfLiNK +\let\svb:rEfLiNK|=\b:rEfLiNK +\let\svc:rEfLiNK|=\c:rEfLiNK +\expandafter\let\expandafter\svC:rEfLiNK\c:rEfLiNK +\Configure{ref}{}{}{}% \let\sv:ref|=\ref \let\ref|=\@gobble +>>> + +\<restore ref\><<< +\let\a:rEfLiNK|=\sva:rEfLiNK +\let\b:rEfLiNK|=\svb:rEfLiNK +\let\c:rEfLiNK|=\svc:rEfLiNK +\expandafter\let\c:rEfLiNK\svC:rEfLiNK % \let\ref\sv:ref +>>> + +\<0,32,4 latex\><<< +\Configure{oalign}{\Picture+{ \a:@Picture{oalign}}}{\EndPicture} +\Configure{TocLink} + {\expandafter\ifx \csname #3-def\endcsname\relax + \global\expandafter\let \csname #3-def\endcsname\def + \Link{#2}{#3}% + \else + \Link{#2}{}% + \fi + {\Configure{ref}{}{}{}% + |<cite in TocLink|>#4}\ifvmode\IgnorePar\fi\EndLink} +>>> + + +\<configure html-speech-math latex\><<< +\Configure{stackrel}{\Picture+{ class="stackrel"}\mathrel} + {\limits ^}{\EndPicture} +>>> + + +\<0,32,4 latex\><<< +\Configure{picture} + {\Picture+[PICT]{}} + {\EndPicture} +>>> + + +\<32,4 latex\><<< +\ConfigureEnv{minipage} + {\IgnorePar\EndP\HCode{<table class="minipage"><tr><td>}} + {\EndP\HCode{</td></tr></table>}} + {}{} +\Css{table.minipage{width:100\%;}} +>>> + +Tried the following for minipage +\begin{verbatim} +\ConfigureEnv{minipage} + {\IgnorePar\EndP\HCode{<div class="minipage">}} + {\EndP\HCode{</div>}} + {\IgnoreIndent\HtmlEnv}{} +\end{verbatim} +but was not able to find an appropriate css code for centered pages +\begin{verbatim} +Es ist ganz einfach: + +\begin{center} + \raisebox{0cm}{\begin{minipage}{10cm}\sc Jesus Christus\\ +erbarme dich meiner!\end{minipage}} +\end{center} + +Varianten sind: +\end{verbatim} + + + + +\<latex shared section config\><<< +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +>>> + +\<latex shared subsection config\><<< +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +>>> + +\<latex shared subsubsection config\><<< +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +>>> + + + + +\<latex shared div config\><<< +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +>>> + +\<latex shared paragraph config\><<< +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +>>> + + + +\<latex shared part config\><<< +\Configure{endpart}{likepart} +\Configure{endlikepart}{endpart} +>>> + + +\<latex shared part config\><<< +\Configure{part}{}{} + {\IgnorePar \EndP\HCode{<h1 class="partHead"\a:LRdir>}% + \HCode{<span class="titlemark">}\partname \ \thepart + \HCode{<br\xml:empty></span>}} + {\HCode{</h1>}\IgnoreIndent\par} +\Configure{likepart}{}{} + {\IgnorePar\EndP\HCode{<h1 class="likepartHead"\a:LRdir>}} + {\HCode{</h1>}\IgnoreIndent\par} +\Configure{partTITLE+}{\thepart\space #1} +\Configure{likepartTITLE+}{#1} +\Css{h1.partHead{text-align: center}} +>>> + + + +\<configure html-speech latex\><<< +\ifx\bf\:UnDef + \def\bf{\normalfont\bfseries} +\fi +>>> +Earlier we had +\verb'\:CheckOption{no-halign} \if:Option \else |<pic array|> \fi', +and the same for pic tabular. Why? + + + +\<4 plain,latex\><<< +\Configure{displaylines} + {\IgnorePar \EndP + \HCode{<table \Hnewline border="0" width="100\%" + class="displaylines">}\IgnorePar} + {\HCode{</table>}} + {\HCode{<tr class="displaylines"><td \Hnewline + valign="baseline" class="displaylines" + >}}{\HCode{</td></tr>}} +\Css{td.displaylines {text-align:center; white-space:nowrap;}} +>>> + + + + + + + + + + + + +\<configure html-speech latex\><<< +|</TeX for 4.0t|> +\def\:temp{\HCode{<span class="LATEX">}L\HCode{<span + class="A">}A\HCode{</span>}\TeX\HCode{</span>}} +\HLet\LaTeX|=\:temp +\def\:temp{\mbox{% + \if b\expandafter\@car\f@series\@nil\boldmath\fi + \LaTeX2$_{\textstyle\varepsilon}$}} +\expandafter\HLet\csname LaTeXe\endcsname|=\:temp +\Css{span.LATEX span.A{ position:relative; top:-0.5ex; + left:-0.4em; font-size:85\%;}} +\Css{span.LATEX span.TEX{ position:relative; left: -0.4em; }} +\Configure{@TITLE}{\def\LaTeX{LaTeX}\let\fontencoding|=\:gobble + \let\fontfamily|=\:gobble \let\fontseries|=\:gobble + \let\fontshape|=\:gobble \let\usefont|=\:gobbleIV } +>>> + + + + + +\<configure html-speech latex\><<< +\Configure{newline}{\HCode{<br class="newline"\xml:empty>}} +>>> + + + + +\<configure html-speech supertabular\><<< +\Configure{SpBorder} + {<tr\Hnewline class="vspace"><!--\SpBorder-->} + {<td>\string </td>} + {</tr>} +\ConfigureEnv{supertabular} + {\par \IgnorePar \EndP \HCode{<div class="supertabular">}} + {\HCode{</div>}\par} + {} {} +\Css{.supertabular {text-align:center}} +>>> + +\<configure html-speech longtable\><<< +\:CheckOption{old-longtable}\if:Option + |<config old longtable|> +\else + |<config new longtable|> +\fi +>>> + + +\<config new longtable\><<< +\Configure{halignTB<>}{longtable}{\HCode{class="longtable"\Hnewline + cellspacing="0" cellpadding="0" \GROUPS\Hnewline + frame="\ifx \GROUPS\empty void\else border\fi" + }<>\HAlign} +\Configure{longtable} + {\IgnorePar\EndP + \HCode{|<show input line no|><div class="longtable">}% + \halignTB{longtable}\putVBorder } + {|<insert Clr|>\HCode{</table></div>}} + {\HCode{<tr \Hnewline}\halignTR\HCode{ id="TBL-\TableNo-\HRow-">}} + {\r:HA} + {\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}\NoFonts\ColMargins\EndNoFonts + \HCode{">}|<td save EndP|>% + |<start array par box|>\PushStack\Table:Stck\TableNo} + {\PopStack\Table:Stck\TableNo |<end array par box|>\d:HA} +\Css{div.longtable{text-align:center;}} +\Configure{longtableparbox}{\IgnorePar\leavevmode\ShowPar\par} +>>> + + +\<config old longtable\><<< +\let\a:longtable=\a:tabular +\let\b:longtable=\b:tabular +\let\c:longtable=\c:tabular +\let\d:longtable=\d:tabular +\let\e:longtable=\e:tabular +\let\f:longtable=\f:tabular +>>> + +\<configure html-speech latex\><<< +\Configure{float} + {\ifOption{refcaption}{}{\csname par\endcsname\ShowPar \leavevmode}} + {\:xhtml{\IgnorePar\EndP}\HCode{<hr class="float"\xml:empty><div + class="float"\Hnewline><table + class="float"><tr class="float"><td class="float"\Hnewline + >}} + {\ifvmode \IgnorePar \fi\EndP + \HCode{</td></tr></table></div><hr + class="endfloat" />}\csname par\endcsname\ShowPar} +\ConfigureEnv{figure} + {\:xhtml{\IgnorePar\EndP}\HCode{<hr class="figure"\xml:empty><div + class="figure"\Hnewline><table + class="figure"><tr class="figure"><td class="figure"\Hnewline>}% + \bgroup \Configure{float}{\ShowPar}{}{}% + } + {\egroup + \:xhtml{\IgnorePar\EndP}\HCode{</td></tr></table></div><hr + class="endfigure"\xml:empty>}|<try env inline par|>\par} + {}{} +\Css{div.float img, div.float .caption {text-align:center;}} +\Css{div.figure img, div.figure .caption {text-align:center;}} +>>> +The \verb'<TABLE>' is needed as a grouping mechanism for \verb'<CENTER>'. + + + + +%%%%%%%%%%%%%%%%%%%%%% +\section{Plain} +%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{General} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech plain\><<< +|<4 plain,latex|> +|<0,32,4 plain|> +|<0,32,4 plain,latex|> +|<32,4 plain,latex|> +|<32,4 plain|> +|<4 plain|> +|<plain items|> |%keep last in html mode?|% +>>> + + +\<4 plain\><<< +\def\plain:indent{\ShowIndent \global\let\plain:indent\empty} +\Configure{@BODY}{\plain:indent} +>>> + + + +\<plain items\><<< +\Configure{item} + {}{} + {\par\Configure{items}{\item:class}\HCode{<span class="item">}} + {\HCode{</span>}\Configure{items}{}} +\Configure{itemitem} + {}{} + {\par\Configure{items}{\itemitem:class}\HCode{<span class="itemitem">}} + {\HCode{</span>}\Configure{items}{}} +\Css{p.item {text-indent:-2em; margin-left:2em;}} +\Css{p.itemitem {text-indent:-2em; margin-left:4em;}} +\Css{span.item, span.itemitem {width:2em; margin-right:0.4em;}} +\Configure{!P}{\a:items} +\NewConfigure{items}{1} +\Configure{items}{} +\def\item:class#1class#2"#3"{#1class="item"} +\def\itemitem:class#1class#2"#3"{#1class="itemitem"} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Environments} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<4 plain\><<< +\Configure{settabs}[1.5]{\IgnorePar\EndP\leavevmode + \ht:special{t4ht=<table + \Hnewline\:zbsp{settabs}><tr \Hnewline valign="baseline" + class="settabs">}} + {\ht:special{t4ht=</tr></table>}} + {\ht:special{t4ht=<td \ifx \TabWidth\empty \else + width="\TabWidth"\fi \Hnewline class="settabs">}} + {\ht:special{t4ht=</td>}} +>>> + +\<4 plain\><<< +\Configure{narrower}{\ifvmode \IgnorePar\fi \EndP% + \HCode{<table cellpadding="15" class="narrower"><tr + class="narrower"><td class="narrower">}\ifvmode \IgnorePar\fi} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</td></tr></table>}\ifvmode \IgnorePar\fi} +>>> + + + +\<0,32,4 plain\><<< +\Configure{settabs}[1.5]{}{}{}{}{} +\Configure{line}{\HCode{<br\xml:empty>}} +>>> + +\<4 plain\><<< +\Configure{proclaim} + {\IgnorePar\EndP\HCode{<div class="proclaim"><span class="proclaim">}} + {\HCode{</span>}} {\IgnorePar\EndP\HCode{</div>}} +\Css{div.proclaim { margin-top: 1em; margin-bottom: 1em; }} +>>> + +\<4 plain\><<< +\Configure{beginsection} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="beginsection">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\HCode{<h3 class="beginsection">}} + {\HCode{</h3>}\par\ShowPar} +\ConfigureToc{beginsection} + {} {\relax} {} { } +>>> + +% \Css{div.beginsection { margin-top: 1em; margin-bottom: 1em; }} + + + + +\<4 plain\><<< +\Configure{TableOfContents} + {\IgnorePar\EndP \HCode{<div class="TableOfContents">}}{} + {\ifvmode \IgnorePar\fi\EndP + \HCode{</div>}\ShowPar}{\HCode{<br\xml:empty>}}{} +>>> + +\<4 plain\><<< +\Configure{insert} + {\IgnorePar\EndP\HCode{<hr class="insert"\xml:empty>}\IgnorePar} + {\IgnorePar\EndP\HCode{<hr class="endinsert"\xml:empty>}\IgnorePar} +>>> + +\<pic plain/latex math 4.0t\><<< +\NewConfigure{@root}{1} +\Configure{@root}{align="middle" } +>>> + +\<html-speech-math plain,fontmath\><<< +\Configure{big}{\HCode{<span class="big">}}{\HCode{</span>}}{}{} +\Configure{Big}{\HCode{<span class="bbig">}}{\HCode{</span>}}{}{} +\Configure{bigg}{\HCode{<span class="bigg">}}{\HCode{</span>}}{}{} +\Configure{Bigg}{\HCode{<span class="bbigg">}}{\HCode{</span>}}{}{} +>>> + +\<pic plain math 4.0t\><<< +\Configure{@underbrace}{align="middle"} +>>> + +\<4 plain,latex\><<< +\def\:zbsp#1{cellpadding="0" border="0" cellspacing="0"\Hnewline + class="#1"} +>>> + +\<4 plain,latex\><<< +\Configure{centerline}{\ifvmode \IgnorePar + \fi \EndP\HCode{<div \Hnewline + class="centerline">}}{\EndP\HCode{</div>}\ShowPar} +\Configure{leftline}{\ifvmode \IgnorePar + \fi \EndP \HCode{<p\Hnewline class="leftline">}} + {\HCode{</p>}\ShowPar} +\Configure{rightline} + {\IgnorePar\EndP\HCode{<p class="rightline">}} + {\HCode{</p>}\ShowPar} +\Css{.centerline {text-align:center;}} +\Css{.rightline {text-align:right;}} +>>> + +\<4 plain,latex\><<< +\def\tbl:XV#1{table width="100\%"\Hnewline class="#1"} +>>> + + +The \verb'100%' is to allow centering of stuff on the page. +The table is a grouping mechanism to protect internal stuff +from external centering operations. + + +The \verb'special{t4ht=' is superior to \verb'\HCode{' because it can +prevent \verb'<p>'s from entering before \verb'<NOBR>'. + + +The hbox is for avoiding the start of a new paragraph, if in vmode. + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Shared plain latex Math} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +\<configure html-speech-math plain\><<< + +|<html-speech-math plain,fontmath|> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Classes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%% +\section{article} +%%%%%%%%%%%%%%%%% + +\<configure html-speech article\><<< +|<article,report,book options 1, 2, 3|> +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +|<config book-report-article|> +|<config report-article|> +>>> + + +\<config report-article\><<< +\ConfigureEnv{abstract} + {\IgnorePar\EndP + \HCode{<\tbl:XV{abstract}><tr><td\Hnewline>}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP\HCode{</td></tr></table>}}{}{} +\Css{.abstract p {margin-left:5\%; margin-right:5\%;}} +>>> + + + +%%%%%%%%%%%%%%%% +\section{report} +%%%%%%%%%%%%%%%%% + +\<configure html-speech report\><<< +|<article,report,book options 1, 2, 3|> +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +|<config book-report-article|> +|<latex shared part config|> +|<config book-report 4.0t|> +|<config report-article|> +|<32,4 report,book|> +|<32,4 report|> +>>> + +\<32,4 report\><<< +\ConfigureMark{chapter} + {\HCode{<span class="titlemark">}\chaptername + \ \thechapter\HCode{</span>}} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}% + \TitleMark{\HCode{<br\xml:empty>}}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{chapterTITLE+}{\thechapter\space#1} +\Configure{likechapterTITLE+}{#1} +>>> + + +\<32,4 report\><<< +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}% + \TitleMark{\HCode{<br\xml:empty>}}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent} +>>> + +\<32,4 report,book\><<< +\ConfigureMark{appendix}{\HCode{<span class="titlemark">}% + \appendixname \ \thechapter\HCode{</span>}} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapterTITLE+}{#1} +>>> + +\<32,4 report,book\><<< +\Configure{endchapter}{likechapter,appendix,part,likepart} +\Configure{endlikechapter}{chapter,appendix,part,likepart} +\Configure{endappendix}{chapter,likechapter,part,likepart} +>>> + + +%%%%%%%%%%%%%% +\section{book} +%%%%%%%%%%%%%% + +\<configure html-speech book\><<< +|<article,report,book options 1, 2, 3|> +\:CheckOption{1} \if:Option + |<toc book options 1|> +\fi +|<config book-report-article|> +|<latex shared part config|> +|<config book-report 4.0t|> +|<32,4 report,book|> +|<32,4 book|> +>>> + +\<32,4 book\><<< +\ConfigureMark{chapter} + {\if@mainmatter \ifnum \c@secnumdepth >\m@ne + \HCode{<span class="titlemark">}\chaptername + \ \thechapter\HCode{</span>}\fi \fi} +\Configure{chapterTITLE+}{\if@mainmatter\thechapter\space\fi#1} +\renewcommand\thechapter {\if@mainmatter\@arabic\c@chapter\fi} +>>> + +\<32,4 book\><<< +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}% + \if@mainmatter \TitleMark{\HCode{<br\xml:empty>}}\fi } + {\HCode{</h2>}\IgnoreIndent} +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}% + \if@mainmatter \TitleMark{\HCode{<br\xml:empty>}}\fi } + {\HCode{</h2>}\IgnoreIndent} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent} +>>> + + +\<chapter toc css\><<< +\Css{.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, + .appendixToc a, .appendixToc + {line-height: 200\%; font-weight:bold;}} +>>> + + +\<part toc css\><<< +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{letter} +%%%%%%%%%%%%%%%%%% + + +\<configure html-speech letter\><<< + +|<quotations|> +|<description 4|> +|<base font size|> +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} +>>> + + + + +\<configure html-speech letter\><<< +\Configure{opening} + {\bgroup + \ConfigureEnv{tabular}{}{}{}{}% + \Configure{tabular} + {\EndP\ifvmode \IgnorePar \fi + \HCode{<div class="opening"\a:LRdir>}} + {\HCode{</div><p class="clear-both" />}} + {} + {\HCode{<br />}} + {}{}% + \Configure{HBorder} + {<br class="hline"/>} {}{} + {<br class="cline" />} {}{} {} + {<br class="vspace"/>} {}{}% + } + {\egroup} +\Configure{closing} + {\EndP\ifvmode \IgnorePar\fi + \HCode{<div class="closing">}} + {\EndP\ifvmode \IgnorePar\fi + \HCode{</div><p class="clear-both" />}} +\longindentation=0pt +\Css{div.opening{float:right;}} +\Css{div.closing {float:right; margin-right:2em;}} +\Css{p.clear-both{clear:both;}} +>>> + +\<configure html-speech letter\><<< +\Configure{address} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="address">}} + {\HCode{</span>}} +\Configure{toaddress} + {\HCode{<div class="toaddress">}} + {\HCode{</div>}} +\Configure{toname} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="toname">}} + {\HCode{</div>}} +\Configure{date} + {\HCode{<span class="date">}} + {\HCode{</span>}} +\Configure{dear} + {\HCode{<span class="dear">}} + {\HCode{</span>}} +\Configure{sincerely} + {\HCode{<span class="sincerely">}} + {\HCode{</span>}} +\Configure{signature} + {\HCode{<span class="signature">}} + {\HCode{</span>}} +\Configure{cc} + {\HCode{<div class="cc">}\IgnorePar} + {\ifvmode\IgnorePar\fi\HCode{</div>}} +\Configure{encl} + {\HCode{<div class="encl">}\IgnorePar} + {\ifvmode\IgnorePar\fi\HCode{</div>}} +>>> + + +%%%%%%%%%%%%%%%%% +\section{AMS Art, Proc, Book} +%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%% +\subsection{amsart} +%%%%%%%%%%%%%%%% + + + +\<configure html-speech amsart\><<< +|<ams art,proc,book|> +|<ams art,proc|> +|<ams art|> +>>> + + + + +\<ams art,proc,book\><<< +|<ams maketitle|> +|<makeketitle config 4.0t|> +|<thebib config|> +>>> + +\<makeketitle config 4.0t\><<< +|<config captions|> +>>> + + + + + + + +\<ams art,proc,book\><<< +\ifx \deferred@thm@head\:UnDef\else + |<ams 2000 art + book + proc|> +\fi +>>> + +\<ams 2000 art + book + proc\><<< +\Configure{qed} + {\HCode{<span class="qed">}} {\HCode{</span>}} +\Css{.qed {width:2ex; float:right; text-align:right;}} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{amsproc} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech amsproc\><<< +|<ams art,proc,book|> +|<ams proc,book|> +|<ams art,proc|> +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{amsdtx} +%%%%%%%%%%%%%%%%%%% + + +\<configure html-speech amsdtx\><<< +|<amsdtx maketitle|> +>>> + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{amsbook} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech amsbook\><<< +|<ams art,proc,book|> +|<ams proc,book|> +|<ams book|> +>>> + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Divisions} +%%%%%%%%%%%%%%%%%%% + + +\<ams art,proc,book\><<< +|<ams art,proc,book div|> +|<ams art,proc,book toc|> |%should appear before TocAt|% +|<ams options 1, 2, 3|> +>>> + + +\<ams art,proc,book div\><<< +\ConfigureMark{part} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\@ifundefined{partname}{}{% + \ignorespaces\partname\space}% + \@seccntformat{part}% + \HCode{</span>}\fi } +\Configure{part}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h1 class="partHead"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</h1>}\HtmlParOn \IgnoreIndent \par} +\Configure{partTITLE+}{\thepart\space#1} +>>> + + +\<ams book\><<< +\Configure{likepart}{}{} + {\IgnorePar\EndP\HCode{<h1 class="likepartHead"\a:LRdir>}} + {\HCode{</h1>}\IgnoreIndent} +\Configure{likepartTITLE+}{#1} +>>> + + + + +\<ams art,proc,book div\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\@ifundefined{sectionname}{}{% + \ignorespaces\sectionname\space}% + \@seccntformat{section}% + \HCode{</span>}\fi } +|<section TITLE+|> +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \par} +>>> + +\<section TITLE+\><<< +\Configure{sectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesection\space + \fi\fi #1} +>>> + + +\<subsection TITLE+\><<< +\Configure{subsectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesubsection\space + \fi\fi #1} +>>> + +\<subsubsection TITLE+\><<< +\Configure{subsubsectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesubsubsection\space + \fi\fi #1} +>>> + + +\<ams art\><<< +\Css{.sectionHead{text-align:center;}} +>>> + + + + +\<ams proc,book\><<< +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\ConfigureMark{subparagraph}{\thesubparagraph} +\Css{.paragraphHead { margin-top:2em; font-weight: bold;}} +>>> + + + + +\<ams art\><<< +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}} + {.\HCode{</span>}\IgnorePar} +\ConfigureMark{subparagraph}{} +>>> + + +\<ams proc,book\><<< +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead { font-weight: bold;}} +>>> + +\<ams art\><<< +\Configure{subparagraph}{}{} + {\ShowPar\noindent\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup + \TitleMark\space} + {.\endgroup\HCode{</span>}\IgnorePar} +>>>> + + + +\<ams book\><<< +\ConfigureMark{chapter} + {\HCode{<span class="titlemark">}\chaptername + \ \thechapter\HCode{</span>}} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}% + \TitleMark{\HCode{<br\xml:empty>}}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{chapterTITLE+}{\thechapter\space#1} +>>> + +\<ams book\><<< +\ConfigureMark{appendix}{\HCode{<span class="titlemark">}% + \appendixname \ \thechapter\HCode{</span>}} +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}% + \TitleMark{\HCode{<br\xml:empty>}}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{likechapterTITLE+}{#1} +>>> + + +\<ams art,proc\><<< +\Configure{endsection} + {part} +\Configure{endsubsection} + {section,part} +\Configure{endsubsubsection} + {subsection,section,part} +\Configure{endparagraph} + {subsubsection,subsection,section,part} +>>> + + + +\<ams book\><<< +\Configure{endpart}{likepart} +\Configure{endlikepart}{endpart} +\Configure{endchapter}{likechapter,appendix,part,likepart} +\Configure{endlikechapter}{chapter,appendix,part,likepart} +\Configure{endappendix}{chapter,likechapter,part,likepart} +\Configure{endsection} + {chapter,likechapter,appendix,part,likepart} +\Configure{endsubsection} + {section,chapter,likechapter,appendix,part,likepart} +\Configure{endsubsubsection} + {subsection,section,chapter,likechapter,appendix,part,likepart} +\Configure{endparagraph} + {subsubsection,subsection,section,chapter,likechapter,% + appendix,part,likepart} +>>> + + + + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Tocs at Cut Points} +%%%%%%%%%%%%%%%%%%% + + +\<ams art,proc\><<< +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +>>> + +\<ams book\><<< +\:CheckOption{1} \if:Option + |<toc book options 1|> +\fi +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%% +\section{amsppt.sty} +%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure html-speech amsppt\><<< +\ifx \EnditemitemList\:UnDef + \Configure{itemitem} + {}{} + {\par{\Configure{HtmlPar}{\Tg<p class="itemitem">} + {\Tg<p class="itemitem">} {}{}% + \:xhtml{\Configure{HtmlPar}{\EndP\Tg<div class="itemitem">} + {\EndP\Tg<div class="itemitem">} + {\Tg</div>}{\Tg</div>}}% + \noindent}} + {} + \Css{.itemitem {margin-left: 5em; text-indent: -2em; + margin-top: 0.5em; margin-bottom: 0.5em;}} +\fi +|<32,4 amsppt|> +|<4 amsppt|> +>>> + + + + + +\<4 amsppt\><<< +\Configure{title} + {\IgnorePar\par\HCode{<div\Hnewline class="title">}} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar} +\Css{div.title {margin-top: 0.5em; + font-weight: bold; text-align:center;}} + +\Configure{author} + {\IgnorePar\par\HCode{<div\Hnewline class="author">}} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar} +\Css{div.author {text-align:center}} + +\Configure{affil} + {\IgnorePar\par\HCode{<div\Hnewline class="affil">}} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar} +\Css{.affil {text-align:center}} + +\Configure{date} + {\IgnorePar\par\HCode{<div\Hnewline class="date">}} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar + \append:def\c:footnote{ }% + } +\Css{.date {text-align:center}} + +\Configure{abstract} + {\IgnorePar\par + \HCode{<div\Hnewline class="abstract">}\ShowPar\IgnoreIndent\par} + {} + {} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar} +\Css{.abstract, .subjclass, .thanks, .keywords + {margin-left:5\%; margin-right:5\%;}} + +\Configure{subjclass} + {\ifx \m:top\:Undef + \let\m:top|=\relax \Css{.subjclass {margin-top:1em; }}% + \fi \Tg<div class="subjclass">} + {\Tg</div>} +\Configure{thanks} + {\ifx \m:top\:Undef + \let\m:top|=\relax \Css{.thanks {margin-top:1em; }}% + \fi \Tg<div class="thanks">} + {\Tg</div>} +\Configure{keywords} + {\ifx \m:top\:Undef + \let\m:top|=\relax \Css{.keywords {margin-top:1em; }}% + \fi \ifvmode \IgnorePar\fi\EndP\Tg<div class="keywords">} + {\ifvmode \IgnorePar\fi \EndP\Tg</div>} +>>> + +\<32 amsppt, 32,4 vanilla\><<< +\Configure{title} + {\IgnorePar\EndP\HCode{<div class="title">}\begingroup\bf} + {\endgroup\IgnorePar\HCode{</div>}} +\Css{div.title {margin-top: 0.5em;}} +\Configure{author} + {\IgnorePar\EndP\HCode{<br\xml:empty><center>}\IgnorePar\par} + {\IgnorePar\EndP\HCode{</center>}} + +>>> + +\<32,4 amsppt\><<< +\Configure{specialhead}{}{} + {\IgnorePar\EndP\HCode{<h1 class="amsspecialheadHead"\a:LRdir>}} + {\HCode{</h1>}\IgnoreIndent} +\ConfigureToc{specialhead} + {\HCode{<center>}\ignorespaces}{ } + {}{\HCode{</center>}} +\Configure{head}{}{} + {\IgnorePar\EndP\HCode{<h2 class="amsheadHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent} +\ConfigureToc{head} + {\ignorespaces}{ }{}{\HCode{<br\xml:empty>}} +\Configure{subhead}{}{} + {\IgnorePar\EndP\HCode{<h3 class="amssubheadHead"\a:LRdir>}} + {\HCode{</h3>}\IgnoreIndent} +\ConfigureToc{subhead} + {\:nbsp\:nbsp\:nbsp\:nbsp\ignorespaces} { } + {} {\HCode{<br\xml:empty>}} +\Configure{subsubhead}{}{} + {\IgnorePar\EndP\HCode{<h4 class="amssubsubheadHead"\a:LRdir>}} + {\HCode{</h4>}\IgnoreIndent} +\ConfigureToc{subsubhead} + {\:nbsp\:nbsp\:nbsp\:nbsp\:nbsp% + \:nbsp\:nbsp\:nbsp\ignorespaces} { } {} {\HCode{<br\xml:empty>}} +\Configure{block} + {\IgnorePar\EndP + \HCode{<table cellpadding="15"><tr><td>}\IgnorePar\par} + {\IgnorePar\HCode{</td></tr></table>}\IgnorePar\par} +|<amsppt captions|> +\Configure{roster} + {\IgnorePar\EndP\HCode{<table>}\let\end:item|=\empty} + {\IgnorePar\end:item\HCode{</table>}\IgnorePar\par} + {\IgnorePar\end:item \HCode{<tr valign="top"><td>} + \def\end:item{\EndP\HCode{</td></tr>}}} + {\:nbsp\EndP\HCode{</td><td>}\ShowPar} + {\IgnorePar\EndP\HCode{<table>}\let\end:iitem|=\empty} + {\IgnorePar\end:iitem\HCode{</table>}\IgnorePar\par} + {\IgnorePar\end:iitem\HCode{<tr valign="top"><td>}} + {\HCode{</td><td>} + \def\end:iitem{\EndP\HCode{</td></tr>}}} +|<bib in amsppt.sty|> +>>> + +%%%%%%%%%%%%%%%%%%%%%%%% +\section{amstex.tex} +%%%%%%%%%%%%%%%%%%%%%%%% + +\<amstex.tex m:env\><<< +|<amsmath / amstex1 m:env|> +>>> + +\<NO\><<< +\def\m:env#1{\:xhtml{\IgnorePar\EndP}\HCode{<center><table class="#1" + border="0" cellpadding="0" cellspacing="15"><tr><td>}} +\def\endm:env{\HCode + {</td></tr></table></center>}\IgnorePar} +>>> + +\<amsmath / amstex1 m:env\><<< +\def\m:env#1{\relax\ifmmode\else\par\fi\:xhtml{\IgnorePar\EndP}% + \HCode{<center class="#1"><table class="#1"\Hnewline + border="0" cellpadding="0" cellspacing="15"><tr><td>}} +\def\endm:env{\:xhtml{\IgnorePar\EndP}% + \HCode{</td></tr></table></center>}\IgnorePar + \ifmmode\else\par\fi} +>>> + + +\<shared amstex.tex matrix 4.0t\><<< +\Configure{linebreak}{\HCode{<br\xml:empty>}} +|<amstex.tex m:env|> +>>> + + +\section{amsthm.sty} + +\<configure html-speech amsthm\><<< +\ConfigureEnv{proof}{\par\leavevmode}{\par\ShowPar}{}{} + +>>> + + + + + + +\section{amsmath} + +\<configure html-speech-math amsmath\><<< +\Configure{equation} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<\tbl:XV{equation}><tr><td>}\IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP\HCode{</td><td width="5\%">}} + {\end:TTT\ifmmode\else |<try inline par|>\fi} +\Configure{equation*} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<\tbl:XV{equation-star}><tr><td>}\IgnorePar + } + {\end:TTT\ifmmode\else |<try inline par|>\fi} +>>> + + + +\<configure html-speech-math amsmath\><<< +|<amsmath / amstex1 m:env|> +>>> + +\<configure html-speech-math amsmath\><<< +\:CheckOption{pic-align} \if:Option + |<amsmath pic-align css|> +\else + |<amsmath align css|> +\fi +\:tempc{align}{align} +\:tempc{alignat}{alignat} +\:tempc{xalignat}{xalignat} +\:tempc{xxalignat}{xxalignat} +\:tempc{flalign}{flalign} +\:tempc{align*}{align-star} +\:tempc{alignat*}{alignat-star} +\:tempc{xalignat*}{xalignat-star} +\:tempc{flalign*}{flalign-star} +>>> + +\<amsmath align css\><<< +\def\:tempc#1#2{% + \Configure{#1} + {\IgnorePar\EndP \HCode{<table\Hnewline class="#2">}} + {\HCode{</table>}} {\HCode{<tr>}} {\HCode{</tr>}} + {\HCode{<td\Hnewline + class="align-\ifnum \HCol>\maxfields@ label\else + \ifodd\HCol\space odd\else even\fi + \fi">}} + {\HCode{</td>}}} +>>> + +\<amsmath pic-align css\><<< +\def\:tempc#1#2{% + \ConfigureEnv{#1} + {\par\IgnorePar\EndP\HCode{<div class="align">}\Picture*[pict]{}} + {\EndPicture\EndP\HCode{</div>}\par} + {} {}} +\Css{div.align {text-align: center;}} +>>> + +\<configure html-speech-math amsmath\><<< +\Configure{split} + {\HCode{<table\Hnewline class="split"><tr><td>}} + {\ifvmode \IgnorePar\fi \HCode{</td></tr></table>}} + {\HCode{<br\Hnewline class="split-tr"\xml:empty>}} {} + {\HCode{<br\Hnewline class="split-td"\xml:empty>}} {} +\Configure{smallmatrix} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<table\Hnewline class="smallmatrix">}} {\HCode{</table>}} + {\HCode{<tr>}} {\HCode{</tr>}} + {\HCode{<td\Hnewline>}} {\HCode{</td>}} +>>> + + + +\<configure html-speech-math amsmath\><<< +\ConfigureEnv{gather*}{\m:env{gather*}}{\endm:env}{}{} +\ConfigureEnv{gathered}{\m:env{gathered}}{\endm:env}{}{} +\ConfigureEnv{matrix}{\m:env{matrix}}{\endm:env}{}{} +\ConfigureEnv{quotation}{\m:env{quotation}}{\endm:env}{}{} +\Configure{equations}{*}{} +>>> + + +\<configure html-speech-math amsmath\><<< +\ConfigureEnv{multline} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{multline}><tr><td>}\Picture*{}\ExtractHLabel + } + {\EndPicture |<put HLabel|>\end:TTT} + {}{} + {}{} +\ConfigureEnv{multline*} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{multline-star}><tr><td>}\Picture*{}% + } + {\EndPicture \end:TTT} + {}{} +|<extract amsmath labels|> +>>> + +\<extract amsmath labels\><<< +\def\ExtractHLabel{% + \def\tagform@##1{{% + \ifx \:HLabel\:UnDef \let\:HLabel=\empty \fi + \def\tagform@####1{\expandafter\let\csname ####1\endcsname\def}% + \:HLabel + \expandafter\ifx\csname ##1\endcsname\relax + \let\tagform@=\relax + \let\HCode=\relax + \edef\:temp{\noexpand\append:def\noexpand + \:HLabel{\HCode{<br />}\tagform@{##1}\HCode{<br />}}}% + \:temp + \global\let\:HLabel=\:HLabel + \fi + }}} +\def\PutHLabel{\:HLabel} +>>> + +\<put HLabel\><<< +\ifx \:HLabel\:Undef \else + \HCode{</td><td width="5\%">}\PutHLabel + \global\let\:HLabel\:Undef +\fi +>>> + + + + +\<configure html-speech-math amsmath\><<< +\ConfigureEnv{gather} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{gather}><tr><td + class="gather1">}\Picture*{}\ExtractHLabel + } + {\EndPicture |<put HLabel|>\end:TTT} + {}{} +\ConfigureEnv{gather*} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{gather-star}><tr><td>}\Picture*{}% + } + {\EndPicture \end:TTT} + {}{} +>>> + + + + + +\<mathml: plain, amsmath, amstex1\><<< +\def\underarrow@#1#2#3{% + \Tg<|.munder>\Tg<|.mrow\Hnewline>#1\Tg</|.mrow>% + \Tg<|.mrow\Hnewline>#2\Tg</|.mrow>% + \Tg</|.munder>}% + +\def\overarrow@#1#2#3{% + \Tg<|.mover>\Tg<|.mrow + class="fill">#1\Tg</|.mrow>% + \Tg<|.mrow\Hnewline>{#2#3}\Tg</|.mrow>% + \Tg</|.mover>}% +>>> + +\<mathml: plain, fontmath, amsmath, amstex1\><<< +\def\overrightarrow{\mathpalette{\overarrow@\rightarrow}} +\def\overleftarrow{\mathpalette{\overarrow@\leftarrow}} +\def\overleftrightarrow{\mathpalette{\overarrow@\leftrightarrow}} + +\def\underrightarrow{\mathpalette{\underarrow@\rightarrow}} +\def\underleftarrow{\mathpalette{\underarrow@\leftarrow}} +\def\underleftrightarrow{\mathpalette{\underarrow@\leftrightarrow}} +>>> + + +\<mathml: plain, fontmath, amsmath, amstex1NO\><<< +\def\overrightarrow{\mathpalette{\overarrow@\rightarrow}} +\def\overleftarrow{\mathpalette{\overarrow@\leftarrow}} +\def\overleftrightarrow{\mathpalette{\overarrow@\leftrightarrow}} + +\def\underrightarrow{\mathpalette{\underarrow@\rightarrow}} +\def\underleftarrow{\mathpalette{\underarrow@\leftarrow}} +\def\underleftrightarrow{\mathpalette{\underarrow@\leftrightarrow}} +>>> + + The \verb'\HCode{}' in \verb'\sideset' is for catching superscripts and subscripts + + +\<configure html-speech-math amsmath\><<< +\Configure{intertext} + {\IgnorePar \ifinalign@ + \HCode{\ifnum \HRow>0 </td></tr>\fi<tr><td + colspan="\ifnum \HRow>0 \HCol\else 15\fi" + class="intertext">}% + \else \ifingather@ + \HCode{<tr><td colspan="\HCol" class="intertext">}% + \fi\fi + } + {\ifvmode \IgnorePar \fi \EndP\ifinalign@ + \HCode{</td></tr>\ifnum \HRow>0 <tr><td>\fi}% + \else \ifingather@ + \HCode{</td></tr>}% + \fi\fi + } +>>> + + + +\<configure html-speech-math amsmath\><<< +\Configure{@begin} + {split} + {\ifx \EndPicture \:UnDef \else \let\tagform@=\:gobble \fi} +>>> + + + +%%%%%%%%%%%%%%%%% +\section{amscd} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech amscd\><<< +\ConfigureEnv{CD} + {\Picture*{ class="CD"}$} {$\EndPicture} {}{} +\Css{.CD {text-align:center}} +>>> + + + + + + + +%%%%%%%%%%%%%%%% +\section{Memoir} +%%%%%%%%%%%%%%%%% + +\<configure html-speech memoir\><<< +\Configure{poemline} + {\HCode{<span class="poemline">}} {\HCode{</span>}} +\Css{.poemline {text-align:right; width:6em;}} +>>> + + +%%%%%%%%%%%%%%%% +\section{Elsvier Articles (elsart)} +%%%%%%%%%%%%%%%%% + +\<configure html-speech elsart\><<< +|<32,4 elsart|> +\Configure{abstract} + {\HCode{<\tbl:XV{abstract}><tr><td\Hnewline>}\par\ShowPar} + {} + {\ifvmode\IgnorePar\fi \HCode{</td></tr></table>}} +\Configure{keyword} + {\HCode{<\tbl:XV{keyword}><tr><td\Hnewline>}} + {\ifvmode\IgnorePar\fi \HCode{</td></tr></table>}} +\ConfigureEnv{abstract} + {\ifvmode \IgnorePar\fi \EndP} + {\ifvmode \IgnorePar\fi \EndP} + {}{} +\ConfigureEnv{keyword} + {\ifvmode \IgnorePar\fi \EndP} + {\ifvmode \IgnorePar\fi \EndP} + {}{} +>>> + + +\<32,4 elsart\><<< +\ConfigureEnv{frontmatter} + {\EndP\IgnorePar + \HCode{<\tbl:XV{frontmatter}><tr><td><div + class="frontmatter"\Hnewline>}} + {\ifvmode\IgnorePar\fi \EndP\HCode{</div>}\end:TTT\IgnorePar} + {}{} +\Css{div.frontmatter {text-align:center;}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%% +\section{American Psychological Association (APA)} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech apa\><<< +|<apa maketitle|> +|<apa abstract|> +|<apa captions|> +|<apa lists|> +\Configure{note} + {\HCode{<div class="note">}\bgroup + |<apa maketitle br cr|>% + } + {\egroup \HCode{</div>}} +\Css{div.note{text-align:left; margin-top:1em; }} +>>> + + +\<apa lists\><<< +\ConfigureList{enumerate}% + {|<enumerate I|>} + {|<enumerate II|>} + {|<enumerate III|>} + {|<enumerate IV|>} +\ConfigureList{APAenumerate}% + {|<enumerate I|>} + {|<enumerate II|>} + {|<enumerate III|>} + {|<enumerate IV|>} +\Configure{seriate} + {\HCode{<span class="seriate">}\let\end:seriate=\empty} + {\end:seriate\HCode{</span>}} + {\end:seriate \def\end:seriate{\HCode{</span>}}% + \HCode{<span class="seriate-item">}\HCode{<span class="seriate-label">}} + {\HCode{</span>}} +\ConfigureList{APAitemize}% + {\EndP\HCode{<ul class="itemize" \a:LRdir >}\PushMacro\end:itm + \global\let\end:itm=\empty + } + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP\HCode{</li></ul>}\ShowPar + } + {\end:itm \gdef\end:itm{\EndP\Tg</li>}\DeleteMark} + {\HCode{<li class="itemize">}\AnchorLabel } +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{JHEP} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech JHEP\><<< +|<latex shared part config|> +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<acm paragraph config|> +\Css{.sectionHead, .partHead{text-transform:uppercase}} +\Css{.subsubsectionHead, .likesubsubsectionHead {font-style: italic;}} +>>> + +\<configure html-speech JHEP\><<< +\Configure{abstract} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="abstract">}\IgnoreIndent} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{accepted} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="accepted">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{author} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="author">}\par \ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{conference} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="conference">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{dedicated} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="dedicated">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{keywords} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="keywords">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{preprint} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="preprint">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{received} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="received">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{title} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="title">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{.abstract{margin-top:1em; margin-bottom:1em;}} +\Css{.accepted{margin-top:1em; margin-bottom:1em; text-align:right;}} +\Css{div.author{margin-top:1em; margin-bottom:1em; margin-left:2em;}} +\Css{.conference{margin-top:1em; margin-bottom:1em;}} +\Css{.dedicated{margin-top:1em; margin-bottom:1em;}} +\Css{.keywords{margin-top:1em; margin-bottom:1em;}} +\Css{.preprint{margin-top:1em; margin-bottom:1em;}} +\Css{.received{margin-top:1em; margin-bottom:1em; text-align:right;}} +\Css{.title{margin-top:1em; margin-bottom:1em;}} +>>> + +\<configure html-speech JHEP\><<< +|<thebib config|> +|<JHEP maketitle footnote|> +>>> + +\<JHEP thanks author date and\><<< +\Configure{thanks} + {\HCode{<div class="thanks">}}{\HCode{</div>}} +|<thank for thanks|> +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + + +\<JHEP end-thanks author date and\><<< +\Configure{thanks} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\ifvmode\IgnorePar\fi\EndP\egroup\RecallEndP } +|<thanks for thanks EndP|> +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{acm-proc-article-sp} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-speech acm-proc-article-sp\><<< + +|<acm-proc-article-sp thebib config|> +|<config captions|> +>>> + + + +\<configure html-speech acm-proc-article-sp\><<< +\Configure{qed} + {\Picture+[Q.E.D.]{}\o:qed:\EndPicture + \SavePicture\qed:sym[Q.E.D.]} +>>> + +\<configure html-speech acm-proc-article-sp\><<< +|<latex shared part config|> +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<acm paragraph config|> +\Css{.sectionHead, .partHead{text-transform:uppercase}} +\Css{.subsubsectionHead, .likesubsubsectionHead {font-style: italic;}} +>>> + +\<acm paragraph config\><<< +\ConfigureMark{paragraph} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\theparagraph\space + \HCode{</span>}\fi} +\Configure{paragraph}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{<h5 class="paragraphHead"\a:LRdir>}% + \TitleMark\space \HtmlParOff} + {\HCode{</h5>}\HtmlParOn \IgnoreIndent\egroup} +\Configure{likeparagraph}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{<h5 class="likeparagraphHead"\a:LRdir>}% + \HtmlParOff} + {\HCode{</h5>}\HtmlParOn \IgnoreIndent\egroup} +\Css{.paragraphHead, .likeparagraphHead { font-style:italic; }} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{scrbook} +%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech scrbook\><<< +|<scr article,report,book|> +|<scr report,book|> +|<shared bib env|> +|<thebib config|> +|<description 4|> +\def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +\def\:tempa{ + \CutAt{part} + \CutAt{likepart} + |<cut toc scr: part|>% +} +\def\:tempb{ + |<tocat scr: part|> + \CutAt{chapter,likechapter,addchap,appendix,part} + \CutAt{likechapter,addchap,appendix,part} + \CutAt{addchap,chapter,likechapter,appendix,part} + \CutAt{appendix,chapter,likechapter,addchap,part} + |<tocat: ch|>% +} +\def\:tempc{ + |<tocat scr: ch|>% + \CutAt{section,likesection,chapter,likechapter,addchap,appendix,part} + \CutAt{likesection,chapter,likechapter,addchap,appendix,part} + |<cut toc: sec|>% +} +\def\:tempd{ + |<tocat scr: section|>% + |<tocat scr: subsection|>% + |<cut toc: subsec|>% +} + +\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \:tempd \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax \:tempa \:tempc + \else \:tempa \:tempb \fi +\else\:CheckOption{1} \if:Option + \:tempa +\else + \Log:Note{for sectioning pagination, + use the command line option `1', `2', or `3'}% +\fi \fi \fi \fi + +\:CheckOption{1} \if:Option + |<toc scrbook options 1|> +\fi + +|<scrbook end units|> +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi + +|<config lists of figures and tables|> + +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}\IgnorePar} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} + +\ConfigureMark{subparagraph}{\thesubparagraph} +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likesubparagraph}{}{} + {\ShowPar\HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +\ConfigureEnv{picture} + {\bgroup\ifvmode \Configure{HtmlPar} + {\EndP\HCode{<!--l. \the\inputlineno-->% +}\HCode{<p + class="center">}}% + {\EndP\HCode{<!--l. \the\inputlineno-->% +}\HCode{<p + class="center">}}% + {\:xhtml{\Tg</p>}}{\:xhtml{\Tg</p>}} \ShowPar\leavevmode + \fi} + {\egroup}{}{} + +|<book-report-article index|> +|<scr reprt/book captions|> + +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} +|<base font size|> + +|<quotations|> +\Configure{listof}{}{}{}{\HCode{<br\xml:empty>}}{}{} + + + +|<latex shared part config|> + +>>> + +\<scrbook end-thanks author date and\><<< +\Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" >}}{\HCode{</div>}} + {\HCode{<div class="date" >}}{\HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + + + +\<scrbook thanks author date and\><<< +\Configure{thanks author date and} + {\HCode{<div class="thanks">}}{\HCode{</div>}} + {\HCode{<div class="author">}}{\HCode{</div>}} + {\HCode{<div class="date" >}}{\HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} + +>>> + + +\<scr report,book\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\thesection\HCode{</span>}\fi } +|<section TITLE+|> +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark.~~\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \par} +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \par} +\Configure{likesectionTITLE+}{#1} +>>> + + + +\<scr report,book\><<< +|<shared h5 subsubsection|> +\ConfigureMark{appendix}{\HCode{<span class="titlemark">}% + \thechapter\HCode{</span>}} +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}\TitleMark{}.~~} + {\HCode{</h2>}\IgnoreIndent} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{likechapterTITLE+}{#1} +\Configure{addchap}{}{} + {\IgnorePar\EndP\HCode{<h2 class="addchapHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent\par} +>>> + +\<configure html-speech scrbook\><<< +\ConfigureMark{chapter} + {\if@mainmatter + \HCode{<span class="titlemark">}\thechapter\HCode{</span>}.~~\fi} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}\TitleMark{}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{chapterTITLE+}{\if@mainmatter\thechapter\space\fi#1} +\renewcommand\thechapter {\if@mainmatter\@arabic\c@chapter\fi} +>>> + +\<configure html-speech scrreprt\><<< +\ConfigureMark{chapter} + {\HCode{<span class="titlemark">}\thechapter\HCode{</span>}.~~} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}\TitleMark{}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{chapterTITLE+}{\thechapter\space#1} +>>> + +\<scr article,report,book\><<< +\ConfigureMark{minisec}{} +\Configure{minisec}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{<h5 class="minisecHead"\a:LRdir>}% + \TitleMark\space \HtmlParOff} + {\HCode{</h5>}\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +>>> + +\<scrbook end units\><<< +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsection} + {likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endchapter}{likechapter,addchap,appendix,part,likepart} +\Configure{endlikechapter}{chapter,appendix,part,likeparaddchap,addchap} +\Configure{endaddchap}{chapter,likechapter,appendix,part,likepart} +\Configure{endappendix}{chapter,likechapter,addchap,part,likepart} +>>> + + +%%%%%%%%%%%%%%%%%%% +\section{scrreprt} +%%%%%%%%%%%%%%%%%%% + + + + + +\def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} + +|<shared bib env|> +|<thebib config|> + +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi + +|<config lists of figures and tables|> +\ConfigureEnv{picture} + {\bgroup\ifvmode \Configure{HtmlPar} + {\EndP\HCode{<!--l. \the\inputlineno-->% +}\HCode{<p + class="center">}}% + {\EndP\HCode{<!--l. \the\inputlineno-->% +}\HCode{<p + class="center">}}% + {\:xhtml{\Tg</p>}}{\:xhtml{\Tg</p>}} \ShowPar\leavevmode + \fi} + {\egroup}{}{} + +|<quote config|> +|<book-report-article index|> +|<scr reprt/book captions|> + +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} +|<base font size|> +|<quotations|> + +\Configure{listof}{}{}{}{\HCode{<br\xml:empty>}}{}{} + + +|<latex shared part config|> + +\ConfigureEnv{abstract}{\:xhtml{\IgnorePar\EndP}\HCode + {<\tbl:XV{abstract}><tr><td\Hnewline>}} + {\EndP\HCode{</td></tr></table>}}{}{} +\Css{.abstract p {margin-left:5\%; margin-right:5\%;}} + +\def\:tempa{ + \CutAt{part} + \CutAt{likepart} + |<cut toc scr: part|>% +} +\def\:tempb{ + |<tocat scr: part|>% + \CutAt{chapter,likechapter,addchap,appendix,part} + \CutAt{likechapter,addchap,appendix,part} + \CutAt{addchap,chapter,likechapter,appendix,part} + \CutAt{appendix,chapter,likechapter,addchap,part} + |<tocat: ch|>% +} +\def\:tempc{ + |<tocat scr: ch|>% + \CutAt{section,likesection,chapter,likechapter,addchap,appendix,part} + \CutAt{likesection,chapter,likechapter,addchap,appendix,part} + |<cut toc: sec|>% +} +\def\:tempd{ + |<tocat scr: section|>% + |<tocat scr: subsection|>% + |<cut toc: subsec|>% +} + +\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \:tempd \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax \:tempa \:tempc + \else \:tempa \:tempb \fi +\else\:CheckOption{1} \if:Option + \:tempa +\else + \Log:Note{for sectioning pagination, + use the command line option `1', `2', or `3'}% +\fi \fi \fi \fi + +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +|<scrreprt end units|> +\Configure{addchapTITLE+}{#1} +\def\tocaddchap#1#2#3{\par\:SPAN{addchapToc}{#2}\par}% +>>> + + +\<scrreprt end-thanks author date and\><<< +\Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" >}}{\HCode{</div>}} + {\HCode{<div class="date" >}}{\HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + +\<scrreprt thanks author date and\><<< +\Configure{thanks author date and} + {\HCode{<div class="thanks">}}{\HCode{</div>}} + {\HCode{<div class="author" >}}{\HCode{</div>}} + {\HCode{<div class="date" >}}{\HCode{</div>}} + {\HCode{<br class="and"\xml:empty>}} + {\HCode{<br\xml:empty>}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + +\<configure html-speech scrartcl\><<< +|<scr article,report,book|> +>>> + +\<configure html-speech scrreprt\><<< +|<scr article,report,book|> +|<scr report,book|> +|<description 4|> +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}\IgnorePar} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} + +\ConfigureMark{subparagraph}{\thesubparagraph} +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likesubparagraph}{}{} + {\ShowPar\HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +>>> + +\<scrreprt end units\><<< +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} + +\Configure{endsection} + {likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,addchap,appendix,part,likepart} + +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} + +\Configure{endaddchap}{likechapter,appendix,part,likepart,chapter} +\Configure{endchapter}{likechapter,appendix,part,likepart,addchap} +\Configure{endlikechapter}{chapter,appendix,part,likepart,addchap} +\Configure{endappendix}{chapter,likechapter,part,likepart,addchap} +>>> + + +%%%%%%%%%%%%%% +\section{Res} +%%%%%%%%%%%%%% + +\<configure html-speech res\><<< +\ConfigureEnv{resume} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="resume">}\let\endHR=\empty} + {\ifvmode \IgnorePar\fi \EndP + \HCode{\endHR</div>}} + {} {} +\def\c:secnumdepth{-1} + +\Configure{overlapped-section} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar } + {\ifvmode \IgnorePar\fi \EndP\IgnorePar \HCode{</div>}} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h4 class="sectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h4>}% + \HCode{<div class="section">}% + \HtmlParOn \ShowPar \IgnoreIndent \csname par\endcsname} + +\ConfigureEnv{tabbing} + {\ifvmode \IgnorePar\fi \EndP \HCode{<table class="tabbing">}} + {\ifvmode \IgnorePar\fi \HCode{</table>}\par\ShowPar} + {} {} + +\Configure{tabbing} + {\ifvmode \IgnorePar\fi \HCode{<tr>}} + {\HCode{</tr>}} + {\ifvmode \IgnorePar\fi \HCode{<td class="tabbing">}} + {\ifvmode \IgnorePar\fi \HCode{</td>}} + +\Css{table.tabbing {width:100\%; margin-top:1em;}} +\Css{td.tabbing {width:33\%;}} +\Css{div.section {margin-left:3em;}} +>>> + + +\<configure html-speech res\><<< +\Configure{centeraddresses} + {} {} + {\HCode{<table class="center-addresses"><tr><td class="first-address">}} + {\HCode{</td><td class="second-address">}} + {\HCode{</td></tr></table>}} +\Css{.center-addresses {width:100\%}} +>>> + +\<configure html-speech res\><<< +\Configure{linename} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="linename">}} + {\HCode{</div><hr />}\par} +\Configure{lineaddress} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="line-address">}} + {\HCode{<br />}} + {\HCode{</div>}} +\Css{.line-address {text-align:right;}} +>>> + +\<configure html-speech res\><<< +\Configure{boxed-section} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="section"><tr><td class="section">}\par + } + {\ifvmode \IgnorePar\fi \EndP + \HCode{</td></tr></table>}\par} + {\ifvmode \IgnorePar\fi \HtmlParOff} + {\HCode{</td><td class="section-body">}\HtmlParOn\par\ShowPar} +\Css{table.section td{ vertical-align:top;}} +\Css{td.section {padding-right:2em; width:20\%;}} +\Css{table.section {margin-top:1em;}} +>>> + +\<configure html-speech res\><<< +\ConfigureEnv{position} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="position">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {}{} +\Css{.position table {width:100\%;}} +>>> + +%%%%%%%%%%%%%% +\section{aa} +%%%%%%%%%%%%%% + +\<configure html-speech aa\><<< + |<makeketitle config 4.0t|> + |<configure aa 3.2/4.0t|> +|<latex shared part config|> +|<latex config div 4.0t|> +|<latex shared div config|> +|<shared bib env|> +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi +>>> + +\subsection{Sizes of Fonts} + +pages should honor the base font sizes the +readers choose for their browsers. Hence, under this assumption, all +tex4ht should do is just assure appropriate relative dimensions for +fonts of other sizes. To meet this end, I modified latex.4ht to +automatically include + + \verb'{\Configure{Needs}{Font\string_Size: #1}\Needs{1...}}' + +when options 11pt and 12pt are listed in \verb'\documentclass'. +\<article,report,book\><<< +|<base font size|> +>>> +> + +\<base font size\><<< +{\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} +>>> + + +\<ams art,proc,book\><<< +|<base font size|> +>>> + + + + + + + +\<latex config div 4.0t\><<< +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<latex shared paragraph config|> +>>> + + + +% \Css{.titlemark{margin-right:0.7em;}} abuses NS 4.7 + +\<latex shared section config\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\@seccntformat{section}% + \HCode{</span>}\fi } +|<section TITLE+|> +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</h3>}\HtmlParOn\ShowPar \IgnoreIndent \par} +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \par} +\Configure{likesectionTITLE+}{#1} +>>> +% \def\HCode{<#1>}{\HCode{<#1>}} + + + +\<latex shared subsection config\><<< +|<shared h5 subsubsection|> +|<shared h4 subsection|> +>>> + + +\<latex shared paragraph config\><<< +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}\IgnorePar} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} +>>> + +\<latex config div 4.0t\><<< +\ConfigureMark{subparagraph}{} +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likesubparagraph}{}{} + {\ShowPar\HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +>>> + +\<32,4 latex\><<< +\ConfigureEnv{picture} + {\bgroup\ifvmode \Configure{HtmlPar} + {\EndP\HCode{|<show input line no|>}\HCode{<p + class="center">}}% + {\EndP\HCode{|<show input line no|>}\HCode{<p + class="center">}}% + {\:xhtml{\Tg</p>}}{\:xhtml{\Tg</p>}} \ShowPar\leavevmode + \fi} + {\egroup}{}{} +>>> + +%%%%%%%%%%%%%%%%%%%%%% +\subsection{ltxguide} +%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech ltxguide\><<< +\Configure{m} + {\HCode{\string&\#x2329;}} + {\HCode{\string&\#x232A;}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Polish: mwart.cls, mwrep.cls, mwbk.cls} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech mwart\><<< +|<mwcls divs|> +|<mwcls tocs|> +|<mwart tocs|> +|<cut and toc at for options 1, 2, 3|> |%should be after mw ... tocs|% +|<mwcls configs|> +>>> + + +\<configure html-speech mwrep\><<< +|<mwcls divs|> +|<mw rep/bk divs|> +|<mwcls tocs|> +|<mw rep/bk tocs|> +|<cut and toc at for options 1, 2, 3|> |%should be after mw ... tocs|% +|<mwcls configs|> +>>> + +\<configure html-speech mwbk\><<< +|<mwcls divs|> +|<mw rep/bk divs|> +|<mwcls tocs|> +|<mw rep/bk tocs|> +|<cut and toc at for options 1, 2, 3|> |%should be after mw ... tocs|% +|<mwcls configs|> +>>> + +\<mwcls configs\><<< +|<mwcls index|> +|<config captions|> +|<shared bib env|> +|<thebib config|> +\def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +|<config lists of figures and tables|> +\ConfigureList{description}% + {\EndP\HCode{<dl \a:LRdir class="description">}% + \PushMacro\end:itm +\global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm +\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="description">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}} + +|<quote config|> +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} + +{\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} + +|<quotations|> +\Configure{listof}{}{}{}{\HCode{<br\xml:empty>}}{}{} + +\ConfigureEnv{abstract} + {\IgnorePar\EndP + \HCode{<\tbl:XV{abstract}><tr><td\Hnewline>}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP\HCode{</td></tr></table>}}{}{} +\Css{.abstract p {margin-left:5\%; margin-right:5\%;}} +>>> + + +\<mwcls divs\><<< +\ConfigureMark{part} + {\ifHeadingNumbered \HCode{<span class="titlemark">}\partname + \space \HeadingNumber \HCode{</span>}\fi} +\Configure{part}{}{} + {\NoFonts\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h1 class="partHead"\a:LRdir>}\TitleMark + \HCode{<br />}\HtmlParOff} + {\HCode{</h1>}\HtmlParOn \EndNoFonts \IgnoreIndent \par} +\Configure{partTITLE+}{\thepart\space #1} +\Css{h1.partHead{text-align: left}} +>>> + +\<mwcls divs\><<< +\Configure{likepart}{}{} + {\IgnorePar\EndP\HCode{<h1 class="likepartHead"\a:LRdir>}} + {\HCode{</h1>}\IgnoreIndent} +\Configure{likepartTITLE+}{#1} +>>> + +\<mw rep/bk divs\><<< +\ConfigureMark{chapter} + {\ifHeadingNumbered \HCode{<span class="titlemark">}\mw@seccntformat + \HeadingNumber \HCode{</span>}\fi} +\Configure{chapter}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h2 class="chapterHead"\a:LRdir>}\TitleMark\HtmlParOff} + {\HCode{</h2>}\HtmlParOn \EndNoFonts \IgnoreIndent \par} +\Configure{chapterTITLE+}{\thesection\space#1} +>>> + +\<mw rep/bk divs\><<< +\Configure{likechapter}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h2 class="likechapterHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h2>}\HtmlParOn \IgnoreIndent \par} +\Configure{likechapterTITLE+}{#1} +>>> + +\<mwcls divs\><<< +\ConfigureMark{section} + {\ifHeadingNumbered \HCode{<span class="titlemark">}\mw@seccntformat + \HeadingNumber \HCode{</span>}\fi} +\Configure{section}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \EndNoFonts \IgnoreIndent \par} +\Configure{sectionTITLE+}{\thesection\space#1} +>>> + +\<mwcls divs\><<< +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \par} +\Configure{likesectionTITLE+}{#1} +>>> + + +\<mwcls divs\><<< +\Configure{paragraph}{}{} + {\par\ShowPar\IgnoreIndent\HCode{<span + class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} +>>> + +\<mwcls divs\><<< +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}\IgnorePar} +>>> + +\<mwcls divs\><<< +\ConfigureMark{subparagraph}{} +\Configure{subparagraph}{}{} + {\par\ShowPar\IgnoreIndent + \HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +>>> + +\<mwcls divs\><<< +\Configure{likesubparagraph}{}{} + {\par\ShowPar\IgnoreIndent + \HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +>>> + +\<mwcls divs\><<< +\Configure{endpart}{likepart} +\Configure{endlikepart}{endpart} +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +>>> + + + + + +\<mwcls tocs\><<< +\ConfigureToc{part} + {\HCode{<div class="partToc"><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likepart} + {\HCode{<div class="likepartToc"><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{section} + {\HCode{<div class="sectionToc"><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likesection} + {\HCode{<div class="likesectionToc"><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{subsection} + {\HCode{<div class="subsectionToc"><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likesubsection} + {\HCode{<div class="likesubsectionToc"><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{subsubsection} + {\HCode{<div class="subsubsectionToc"><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likesubsubsection} + {\HCode{<div class="likesubsubsectionToc"><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{paragraph} + {\HCode{<div class="paragraphToc"><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likeparagraph} + {\HCode{<div class="likeparagraphToc"><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{subparagraph} + {\HCode{<div class="subparagraphToc"><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likesubparagraph} + {\HCode{<div class="likesubparagraphToc"><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +>>> + +\<mw rep/bk tocs\><<< +\ConfigureToc{chapter} + {\HCode{<div class="chapterToc"><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likechapter} + {\HCode{<div class="likechapterToc"><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +>>> + + +\<mwcls tocs\><<< +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} +\Css{.partToc, .likepartToc{text-align:center;margin-bottom:0.25em; + margin-top:0.25em;}} +>>> + +\<mwart tocs\><<< +\Css{.sectionToc, .likesectionToc {white-space: nowrap;}} +\Css{.subsectionToc, .likesubsectionToc + {margin-left:1em; white-space: nowrap;}} +\Css{.subsubsectionToc, .likesubsubsectionToc + {margin-left:2em; white-space: nowrap;}} +\Css{.paragraphToc, .likeparagraphToc + {margin-left:3em; white-space: nowrap;}} +\Css{.subparagraphToc, .likesubparagraphToc + {margin-left:4em; white-space: nowrap;}} +>>> + +\<mw rep/bk tocs\><<< +\Css{.chapterToc, .likechapterToc {white-space: nowrap;}} +\Css{.sectionToc, .likesectionToc + {margin-left:1em; white-space: nowrap;}} +\Css{.subsectionToc, .likesubsectionToc + {margin-left:2em; white-space: nowrap;}} +\Css{.subsubsectionToc, .likesubsubsectionToc + {margin-left:3em; white-space: nowrap;}} +\Css{.paragraphToc, .likeparagraphToc + {margin-left:4em; white-space: nowrap;}} +\Css{.subparagraphToc, .likesubparagraphToc + {margin-left:5em; white-space: nowrap;}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%% +\section{texinfo} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-speech texinfo\><<< +\Configure{group} + {\IgnorePar\EndP\HCode{<div class="group">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} +\Css{div.obeylines-v div.group p { margin-top:0; margin-bottom:0; }} +\Configure{multitable} + {\IgnorePar \EndP\HCode{<table\Hnewline class="multitable">}\IgnorePar} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td \Hnewline class="multitabl\the\colcount">}} + {\IgnorePar \EndP\HCode{</td>}} +\Css{.multitable td{padding-left:1em; padding-right:1em;}} +>>> + + +\<configure html-speech texinfo\><<< +\Configure{example} + {\IgnorePar\EndP\HCode{<div class="example">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} +\Css{div.example { margin-left:2em; }} +\Configure{smallexample} + {\IgnorePar\EndP\HCode{<div class="smallexample">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} +\Css{div.smallexample { margin-left:2em; }} +>>> + + +\<configure html-speech texinfo\><<< +\ConfigureMark{chapter}{\the\chapno} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h2>}\IgnoreIndent} +\ConfigureMark{appendix}{\appendixletter} +\Configure{appendix}{}{} + {\IgnorePar\EndP + \HCode{<h2 class="appendixHead"\a:LRdir>}Appendix \TitleMark\space} + {\HCode{</h2>}\IgnoreIndent} +\Configure{unnumbered}{}{} + {\IgnorePar\EndP\HCode{<h2 class="unnumberedHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent} +\ConfigureMark{numberedsec}{\the\chapno.\the\secno} +\Configure{numberedsec}{}{} + {\IgnorePar\EndP\HCode{<h3 + class="numberedsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h3>}\IgnoreIndent} +\ConfigureMark{appendixsec}{\appendixletter.\the\secno} +\Configure{appendixsec}{}{} + {\IgnorePar\EndP\HCode{<h3 + class="appendixsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h3>}\IgnoreIndent} +\Configure{unnumberedsec}{}{} + {\IgnorePar\EndP\HCode{<h3 class="unnumberedsecHead"\a:LRdir>}} + {\HCode{</h3>}\IgnoreIndent} +\ConfigureMark{numberedsubsec}{\the\chapno.\the\secno .\the\subsecno} +\Configure{numberedsubsec}{}{} + {\IgnorePar\EndP\HCode{<h4 + class="numberedsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h4>}\IgnoreIndent} +\ConfigureMark{appendixsubsec}{\appendixletter .\the\secno.\the\subsecno} +\Configure{appendixsubsec}{}{} + {\IgnorePar\EndP\HCode{<h4 + class="appendixsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h4>}\IgnoreIndent} +\ConfigureMark{appendixsubsec}{\appendixletter.\the\secno + .\the\subsecno} +\Configure{appendixsubsec}{}{} + {\IgnorePar\EndP\HCode{<h4 + class="appendixsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h4>}\IgnoreIndent} +\Configure{unnumberedsubsec}{}{} + {\IgnorePar\EndP\HCode{<h4 class="unnumberedsubsecHead"\a:LRdir>}} + {\HCode{</h4>}\IgnoreIndent} +\ConfigureMark{numberedsubsubsec}{\the\chapno.\the\secno + .\the\subsecno.\the\subsubsecno} +\Configure{numberedsubsubsec}{}{} + {\IgnorePar\EndP\HCode{<h5 + class="numberedsubsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h5>}\IgnoreIndent} +\ConfigureMark{appendixsubsubsec}{\appendixletter + .\the\secno.\the\subsecno.\the\subsubsecno} +\Configure{appendixsubsubsec}{}{} + {\IgnorePar\EndP\HCode{<h5 + class="appendixsubsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h5>}\IgnoreIndent} +\ConfigureMark{appendixsubsubsec}{\appendixletter.\the\secno + .\the\subsecno.\the\subsubsecno} +\Configure{appendixsubsubsec}{}{} + {\IgnorePar\EndP\HCode{<h5 + class="appendixsubsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h5>}\IgnoreIndent} +\Configure{unnumberedsubsubsec}{}{} + {\IgnorePar\EndP\HCode{<h5 class="unnumberedsubsubsecHead"\a:LRdir>}} + {\HCode{</h5>}\IgnoreIndent} +>>> + +\<configure html-speech texinfo\><<< +\ConfigureToc{chapter} + {\Tg<span class="chapterToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{appendix} + {\Tg<span class="appendixToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{unnumbered} + {\Tg<span class="unnumberedToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{numberedsec} + {\Tg<span class="numberedsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{appendixsec} + {\Tg<span class="appendixsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{unnumberedsec} + {\Tg<span class="unnumberedsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{numberedsubsec} + {\Tg<span class="numberedsubsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{appendixsubsec} + {\Tg<span class="appendixsubsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{appendixsubsec} + {\Tg<span class="appendixsubsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{unnumberedsubsec} + {\Tg<span class="unnumberedsubsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{numberedsubsubsec} + {\Tg<span class="numberedsubsubsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{appendixsubsubsec} + {\Tg<span class="appendixsubsubsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{appendixsubsubsec} + {\Tg<span class="appendixsubsubsecToc">}{ }{}{\Tg</span>\Tg<br />} +\ConfigureToc{unnumberedsubsubsec} + {\Tg<span class="unnumberedsubsubsecToc">}{ }{}{\Tg</span>\Tg<br />} +>>> + + + +\<configure html-speech texinfo\><<< +\Configure{enumerate} + {\IgnorePar\EndP\HCode{<ol\space class="enumerate"\Hnewline>}} + {\IgnorePar\EndP\HCode{</li></ol>}\ShowPar} + {\IgnorePar\EndP\ifnum \itemno>1 \Tg</li>\fi\DeleteMark} + {\HCode{<li class="enumerate">}} +\Configure{itemize} + {\IgnorePar\EndP\HCode{<ul\space\a:LRdir class="itemize"\Hnewline>}} + {\IgnorePar\EndP\HCode{</li></ul>}\ShowPar} + {\IgnorePar\EndP\ifnum \itemno>1 \Tg</li>\fi\DeleteMark} + {\HCode{<li class="itemize">}} +\Configure{table}% + {\IgnorePar\EndP\HCode{<dl \a:LRdir class="description">}% + |<save end:itm|>\global\let\end:itm|=\empty} + {|<recall end:itm|>\IgnorePar\EndP\HCode{</dd></dl>}} + {\IgnorePar\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="description">}\bgroup \bf} + {\egroup\IgnorePar\EndP\HCode{</dt><dd\Hnewline class="description">}} +>>> + +\<configure html-speech texinfo\><<< +\Configure{titlepage} + {\IgnorePar\EndP\HCode{<div class="titlepage">}} + {\IgnorePar\EndP\HCode{</div>}} +\Configure{title} + {\IgnorePar\EndP\HCode{<div class="title">}} + {\IgnorePar\EndP\HCode{</div>}} +\Configure{subtitle} + {\IgnorePar\EndP\HCode{<div class="subtitle">}} + {\IgnorePar\EndP\HCode{</div>}} +\Configure{author} + {\IgnorePar\EndP\HCode{<div class="author">}} + {\IgnorePar\EndP\HCode{</div>}} +>>> + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Accents, encodings, and Languages} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\Link[http://lycos.basistech.com/info/standards/ISO-8859.txt]{}{}iso + text\EndLink, +\Link[http://titus.uni-frankfurt.de/unicode/iso8859/iso8859.htm]{}{}titus glyphs\EndLink, +satto glyphs: +\Link[http://www.satto.co.yu/podrska/iso/iso8859-1.htm]{}{}1\EndLink{} +\Link[http://www.satto.co.yu/podrska/iso/iso8859-2.htm]{}{}2\EndLink{} ..., +microsoft glyphs: +\Link[http://www.microsoft.com/globaldev/reference/iso/28591.htm]{}{}1\EndLink{} +\Link[http://www.microsoft.com/globaldev/reference/iso/28592.htm]{}{}2\EndLink{} ... + + + +\<configure html-speech latex\><<< +\ifOption{charset=iso-8859-7} + {|<T1 greek ldf iso-8859-7|>} + {} +\:CheckOption{new-accents} \if:Option +\else + |<T1 old iso-8859-1 accents|> +\fi +\let\^^_|=\v +>>> + + +\<old plain,latex accents\><<< +|<old iso-8859-1 accents|> +|<OT1 old iso-8859-1 accents|> +|<optional iso-8859-2 accents|> +>>> + +\<babel accents\><<< +|<optional iso-8859-2 accents|> +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Group Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{8859-1} +%%%%%%%%%%%%%%%%%%%% + +\<acute codes\><<< +A{00C1}C{0106}D{010E}E{00C9}G{01F4}I{00CD}L{0139}N{0143}% +O{00D3}R{0154}S{015A}U{00DA}Y{00DD}Z{0179}a{00E1}c{0107}% +d{010F}e{00E9}g{01F5}i{00ED}l{013A}n{0144}o{00F3}r{0155}% +s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}% +>>> + +\<add acute codes\><<< + {A}{\add:acc{00C1}} + {C}{\add:acc{0106}} + {D}{\add:acc{010E}} + {E}{\add:acc{00C9}} + {G}{\add:acc{01F4}} + {I}{\add:acc{00CD}} + {L}{\add:acc{0139}} + {N}{\add:acc{0143}} + {O}{\add:acc{00D3}} + {R}{\add:acc{0154}} + {S}{\add:acc{015A}} + {U}{\add:acc{00DA}} + {Y}{\add:acc{00DD}} + {Z}{\add:acc{0179}} + {a}{\add:acc{00E1}} + {c}{\add:acc{0107}} + {d}{\add:acc{010F}} + {e}{\add:acc{00E9}} + {g}{\add:acc{01F5}} + {i}{\add:acc{00ED}} + {l}{\add:acc{013A}} + {n}{\add:acc{0144}} + {o}{\add:acc{00F3}} + {r}{\add:acc{0155}} + {s}{\add:acc{015B}} + {u}{\add:acc{00FA}} + {y}{\add:acc{00FD}} + {z}{\add:acc{017A}} + {j}{\add:acc{FFFD}} + {J}{\add:acc{FFDD}} + {\i}{\add:acc{00ED}} + {\j}{\add:acc{FFFD}} +>>> + +\<acute iso-8859-1\><<< +|<acute codes|>% +>>> + +\<acute iso-8859-2\><<< +|<acute codes|>% +>>> + + +\<double acute code\><<< +o{0151}O{0150}U{0170}u{0171}% +>>> + +\<add double acute code\><<< + {o}{\add:acc{0151}} + {O}{\add:acc{0150}} + {U}{\add:acc{0170}} + {u}{\add:acc{0171}} +>>> + +\<double acute iso-8859-1\><<< +|<double acute code|>% +>>> + +\<double acute iso-8859-2\><<< +|<double acute code|>% +>>> + + + + + + + + +\<cedilla codes\><<< +K{0136}k{0137}L{013B}l{013C}N{0145}n{0146}% +R{0156}r{0157}S{015E}s{015F}T{0162}t{0163}% +E{0228}e{0229}D{1E10}d{1E11}H{1E28}h{1E29}% +C{00C7}c{00E7}G{0122}g{0123}% +>>> + +\<add cedilla codes\><<< + {K}{\add:acc{0136}} + {k}{\add:acc{0137}} + {L}{\add:acc{013B}} + {l}{\add:acc{013C}} + {N}{\add:acc{0145}} + {n}{\add:acc{0146}} + {R}{\add:acc{0156}} + {r}{\add:acc{0157}} + {S}{\add:acc{015E}} + {s}{\add:acc{015F}} + {T}{\add:acc{0162}} + {t}{\add:acc{0163}} + {E}{\add:acc{0228}} + {e}{\add:acc{0229}} + {D}{\add:acc{1E10}} + {d}{\add:acc{1E11}} + {H}{\add:acc{1E28}} + {h}{\add:acc{1E29}} + {C}{\add:acc{00C7}} + {c}{\add:acc{00E7}} + {G}{\add:acc{0122}} + {g}{\add:acc{0123}} +>>> + + +\<cedilla iso-8859-1\><<< +|<cedilla codes|>% +>>> + + +\<cedilla iso-8859-2\><<< +|<cedilla codes|>% +>>> + + + + +\<dot above codes\><<< +C{010A}c{010B}E{0116}e{0117}G{0120}g{0121}% +I{0130}Z{017B}z{017C}A{0226}a{0227}O{022E}% +o{022F}B{1E02}b{1E03}D{1E0A}d{1E0B}F{1E1E}% +f{1E1F}H{1E22}h{1E23}M{1E40}m{1E41}N{1E44}% +n{1E45}P{1E56}p{1E57}R{1E58}r{1E59}S{1E60}% +s{1E61}T{1E6A}t{1E6B}W{1E86}w{1E87}X{1E8A}% +x{1E8B}Y{1E8E}y{1E8F}% +>>> + +\<add dot above codes\><<< + {C}{\add:acc{010A}} + {c}{\add:acc{010B}} + {E}{\add:acc{0116}} + {e}{\add:acc{0117}} + {G}{\add:acc{0120}} + {g}{\add:acc{0121}} + {I}{\add:acc{0130}} + {Z}{\add:acc{017B}} + {z}{\add:acc{017C}} + {A}{\add:acc{0226}} + {a}{\add:acc{0227}} + {O}{\add:acc{022E}} + {o}{\add:acc{022F}} + {B}{\add:acc{1E02}} + {b}{\add:acc{1E03}} + {D}{\add:acc{1E0A}} + {d}{\add:acc{1E0B}} + {F}{\add:acc{1E1E}} + {f}{\add:acc{1E1F}} + {H}{\add:acc{1E22}} + {h}{\add:acc{1E23}} + {M}{\add:acc{1E40}} + {m}{\add:acc{1E41}} + {N}{\add:acc{1E44}} + {n}{\add:acc{1E45}} + {P}{\add:acc{1E56}} + {p}{\add:acc{1E57}} + {R}{\add:acc{1E58}} + {r}{\add:acc{1E59}} + {S}{\add:acc{1E60}} + {s}{\add:acc{1E61}} + {T}{\add:acc{1E6A}} + {t}{\add:acc{1E6B}} + {W}{\add:acc{1E86}} + {w}{\add:acc{1E87}} + {X}{\add:acc{1E8A}} + {x}{\add:acc{1E8B}} + {Y}{\add:acc{1E8E}} + {y}{\add:acc{1E8F}} +>>> + +\<dot above iso-8859-1\><<< +|<dot above codes|>% +>>> + +\<dot iso-8859-1\><<< +|<dot above codes|>% +>>> + +\<dot above iso-8859-2\><<< +|<dot above codes|>% +>>> + + + + +\<breve codes\><<< +g{011F}I{012C}i{012D}O{014E}o{014F}% +U{016C}u{016D}A{0102}a{0103}E{0114}% +e{0115}G{011E}\i{012D}% +>>> + +\<add breve codes\><<< + {g}{\add:acc{011F}} + {I}{\add:acc{012C}} + {i}{\add:acc{012D}} + {O}{\add:acc{014E}} + {o}{\add:acc{014F}} + {U}{\add:acc{016C}} + {u}{\add:acc{016D}} + {A}{\add:acc{0102}} + {a}{\add:acc{0103}} + {E}{\add:acc{0114}} + {e}{\add:acc{0115}} + {G}{\add:acc{011E}} + {\i}{\add:acc{012D}} + {y}{y\add:acc{0306}} +>>> + + +\<breve iso-8859-1\><<< +|<breve codes|>% +>>> + +\<breve iso-8859-2\><<< +|<breve codes|>% +>>> + + + + + + + +\<caron codes\><<< +C{010C}c{010D}D{010E}d{010F}% +E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}% +S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}% +i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}% +j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}% +>>> + +\<add caron codes\><<< + {C}{\add:acc{010C}} + {c}{\add:acc{010D}} + {D}{\add:acc{010E}} + {d}{\add:acc{010F}} + {E}{\add:acc{011A}} + {e}{\add:acc{011B}} + {L}{\add:acc{013D}} + {l}{\add:acc{013E}} + {N}{\add:acc{0147}} + {n}{\add:acc{0148}} + {R}{\add:acc{0158}} + {r}{\add:acc{0159}} + {S}{\add:acc{0160}} + {s}{\add:acc{0161}} + {T}{\add:acc{0164}} + {t}{\add:acc{0165}} + {Z}{\add:acc{017D}} + {z}{\add:acc{017E}} + {A}{\add:acc{01CD}} + {a}{\add:acc{01CE}} + {I}{\add:acc{01CF}} + {i}{\add:acc{01D0}} + {O}{\add:acc{01D1}} + {o}{\add:acc{01D2}} + {U}{\add:acc{01D3}} + {u}{\add:acc{01D4}} + {G}{\add:acc{01E6}} + {g}{\add:acc{01E7}} + {K}{\add:acc{01E8}} + {k}{\add:acc{01E9}} + {j}{\add:acc{01F0}} + {H}{\add:acc{021E}} + {h}{\add:acc{021F}} + {\i}{\add:acc{01D0}} + {\j}{\add:acc{01F0}} +>>> +% + + +\<caron iso-8859-1\><<< +|<caron codes|>% +>>> + +\<caron iso-8859-2\><<< +|<caron codes|>% +>>> + +\<check iso-8859-1\><<< +|<caron codes|>% +>>> + + + + + + + +\<ring codes\><<< +A{00C5}a{00E5}U{016E}u{016F}% +>>> + +\<add ring codes\><<< + {A}{\add:acc{00C5}} + {a}{\add:acc{00E5}} + {U}{\add:acc{016E}} + {u}{\add:acc{016F}} +>>> + + +\<ring iso-8859-1\><<< +|<ring codes|>% +>>> + +\<ring iso-8859-2\><<< +|<ring codes|>% +>>> + + + + + + + + + + + + + + +\<diaeresis codes\><<< +H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}% +t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}% +a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}% +Y{0178}\i{00EF}% +>>> + +\<add diaeresis codes\><<< + {H}{\add:acc{1E26}} + {h}{\add:acc{1E27}} + {W}{\add:acc{1E84}} + {w}{\add:acc{1E85}} + {X}{\add:acc{1E8C}} + {x}{\add:acc{1E8D}} + {t}{\add:acc{1E97}} + {A}{\add:acc{00C4}} + {E}{\add:acc{00CB}} + {I}{\add:acc{00CF}} + {O}{\add:acc{00D6}} + {U}{\add:acc{00DC}} + {a}{\add:acc{00E4}} + {e}{\add:acc{00EB}} + {i}{\add:acc{00EF}} + {o}{\add:acc{00F6}} + {u}{\add:acc{00FC}} + {y}{\add:acc{00FF}} + {Y}{\add:acc{0178}} + {\i}{\add:acc{00EF}} + {m}{m\add:acc{0308}} +>>> + + + +\<diaeresis iso-8859-1\><<< +|<diaeresis codes|>% +>>> + +\<diaeresis iso-8859-2\><<< +|<diaeresis codes|>% +>>> + + + + + + + +\<circumflex codes\><<< +A{00C2}E{00CA}I{00CE}O{00D4}U{00DB}a{00E2}e{00EA}% +i{00EE}o{00F4}u{00FB}C{0108}c{0109}G{011C}g{011D}% +H{0124}h{0125}J{0134}j{0135}S{015C}s{015D}W{0174}% +w{0175}Y{0176}y{0177}Z{1E90}z{1E91}\i{00EE}\j{0135}% +>>> + +\<add circumflex codes\><<< + {A}{\add:acc{00C2}} + {E}{\add:acc{00CA}} + {I}{\add:acc{00CE}} + {O}{\add:acc{00D4}} + {U}{\add:acc{00DB}} + {a}{\add:acc{00E2}} + {e}{\add:acc{00EA}} + {i}{\add:acc{00EE}} + {o}{\add:acc{00F4}} + {u}{\add:acc{00FB}} + {C}{\add:acc{0108}} + {c}{\add:acc{0109}} + {G}{\add:acc{011C}} + {g}{\add:acc{011D}} + {H}{\add:acc{0124}} + {h}{\add:acc{0125}} + {J}{\add:acc{0134}} + {j}{\add:acc{0135}} + {S}{\add:acc{015C}} + {s}{\add:acc{015D}} + {W}{\add:acc{0174}} + {w}{\add:acc{0175}} + {Y}{\add:acc{0176}} + {y}{\add:acc{0177}} + {Z}{\add:acc{1E90}} + {z}{\add:acc{1E91}} + {\i}{\add:acc{00EE}} + {\j}{\add:acc{0135}} +>>> + + + +\<circumflex iso-8859-1\><<< +|<circumflex codes|>% +>>> + +\<circumflex iso-8859-2\><<< +|<circumflex codes|>% +>>> + + +\<grave codes\><<< +A{00C0}E{00C8}I{00CC}N{01F8}O{00D2}U{00D9}W{1E80}% +Y{1EF2}a{00E0}e{00E8}i{00EC}n{01F9}o{00F2}u{00F9}% +w{1E81}y{1EF3}\i{00EC}% +>>> + + +\<add grave codes\><<< +{A}{\add:acc{00C0}} + {E}{\add:acc{00C8}} + {I}{\add:acc{00CC}} + {N}{\add:acc{01F8}} + {O}{\add:acc{00D2}} + {U}{\add:acc{00D9}} + {W}{\add:acc{1E80}} + {Y}{\add:acc{1EF2}} + {a}{\add:acc{00E0}} + {e}{\add:acc{00E8}} + {i}{\add:acc{00EC}} + {n}{\add:acc{01F9}} + {o}{\add:acc{00F2}} + {u}{\add:acc{00F9}} + {w}{\add:acc{1E81}} + {y}{\add:acc{1EF3}} + {\i}{\add:acc{00EC}} +>>> + +\<grave iso-8859-1\><<< +|<grave codes|>% +>>> + +\<grave iso-8859-2\><<< +|<grave codes|>% +>>> + + + +\<tilde codes\><<< +A{00C3}N{00D1}O{00D5}a{00E3}n{00F1}o{00F5}I{0128}% +i{0129}U{0168}u{0169}V{1E7C}v{1E7D}E{1EBC}e{1EBD}% +Y{1EF8}y{1EF9}\i{0129}% +>>> + +\<add tilde codes\><<< + {A}{\add:acc{00C3}} + {N}{\add:acc{00D1}} + {O}{\add:acc{00D5}} + {a}{\add:acc{00E3}} + {n}{\add:acc{00F1}} + {o}{\add:acc{00F5}} + {I}{\add:acc{0128}} + {i}{\add:acc{0129}} + {U}{\add:acc{0168}} + {u}{\add:acc{0169}} + {V}{\add:acc{1E7C}} + {v}{\add:acc{1E7D}} + {E}{\add:acc{1EBC}} + {e}{\add:acc{1EBD}} + {Y}{\add:acc{1EF8}} + {y}{\add:acc{1EF9}} + {\i}{\add:acc{0129}} +>>> + +\<tilde iso-8859-1\><<< +|<tilde codes|>% +>>> + + +\<tilde iso-8859-2\><<< +|<tilde codes|>% +>>> + + + + + + + + + + + + + + + + +\<vec iso-8859-1\><<< +>>> + + + + + + + + + + + + + +\<old iso-8859-1 accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {\a:accents{widetilde}{#1}} {\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {\a:accents{widehat}{#1}} {\b:accents{widehat}{#1}{#2}} +>>> + +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + + + + + +\<bar iso-8859-1\><<< +>>> + + + + + + + + + + +NOT USED!!!!! + + +\<bar below codes\><<< +B{1E06}b{1E07}% +D{1E0E}d{1E0F}K{1E34}k{1E35}L{1E3A}l{1E3B}N{1E48}n{1E49}% +R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}% +>>> + + + + +\<dot below codes\><<< +A{1EA0}a{1Ea1}B{1E04}b{1E05}D{1E0C}d{1E0D}% +E{1EB8}e{1EB9}H{1E24}h{1E25}I{1ECA}i{1ECB}% +K{1E32}k{1E33}L{1E36}l{1E37}M{1E42}m{1E43}% +N{1E46}n{1E47}O{1ECC}o{1ECD}R{1E5A}r{1E5B}% +S{1E62}s{1E63}T{1E6C}t{1E6D}U{1EE4}u{1EE5}% +V{1E7E}v{1E7F}W{1E88}w{1E89}Y{1EF4}y{1EF5}% +>>> + + + + +\<macron codes\><<< +A{0100}a{0101}E{0112}% +e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}% +y{0233}G{1E20}g{1E21}% +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{T1 8859-1} +%%%%%%%%%%%%%%%%%%%% + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname + \csname T1\string\`\endcsname{|<grave iso-8859-1|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname{|<acute iso-8859-1|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname + \csname T1\string\^\endcsname{|<circumflex iso-8859-1|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname + \csname T1\string\~\endcsname{|<tilde iso-8859-1|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\"\expandafter\endcsname + \csname T1\string\"\endcsname{|<diaeresis iso-8859-1|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\r\endcsname}% + \csname T1\string\r\endcsname{|<ring iso-8859-1|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\c\endcsname}% + \csname T1\string\c\endcsname{|<cedilla iso-8859-1|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\t\endcsname}% + \csname T1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\H\endcsname}% + \csname T1\string\H\endcsname{{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\b\endcsname}% + \csname T1\string\b\endcsname{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\d\endcsname}% + \csname T1\string\d\endcsname{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname + \csname T1\string\.\endcsname + {|<dot iso-8859-1|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname + \csname T1\string\u\endcsname + {|<breve iso-8859-1|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\vec\expandafter\endcsname + \csname T1\string\vec\endcsname + {|<vec iso-8859-1|>{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname + \csname T1\string\v\endcsname + {|<check iso-8859-1|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname + \csname T1\string\=\endcsname + {|<bar iso-8859-1|>{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{T1 on Empty Base} +%%%%%%%%%%%%%%%%%%%% + +\<latex accents\><<< +\Configure{add accent}{T1:2} + {}{\ht:special{t4ht@+\string&\#x005E;}x} + {}{} +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{OT1 8859-1} +%%%%%%%%%%%%%%%%%%%% + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname OT1\string\`\endcsname + \grave{|<grave iso-8859-1|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname + \acute{|<acute iso-8859-1|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\^\endcsname + \hat{|<circumflex iso-8859-1|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\~\endcsname + \tilde{|<tilde iso-8859-1|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname + OT1\string\"\expandafter\endcsname + \csname OT1\string\"\endcsname{|<diaeresis iso-8859-1|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\Configure{accent}\ddot\ddot{|<diaeresis iso-8859-1|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\r\endcsname + \mathring{|<ring iso-8859-1|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + + + + + + +The following are also placed under accents configuration. + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\c\endcsname}% + \csname OT1\string\c\endcsname{|<cedilla iso-8859-1|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\t\endcsname}% + \csname OT1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\H\endcsname}% + \csname OT1\string\H\endcsname{{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\b\endcsname}% + \csname OT1\string\b\endcsname{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\d\endcsname}% + \csname OT1\string\d\endcsname{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +The following originally have been defined to be parameter-less. + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname OT1\string\.\endcsname + \dot{|<dot iso-8859-1|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\u\endcsname + \breve{|<breve iso-8859-1|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\vec\endcsname + \vec{|<vec iso-8859-1|>{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\v\endcsname + \check{|<check iso-8859-1|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\=\endcsname + \bar{|<bar iso-8859-1|>{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + +\<OT1 old iso-8859-1 accents\><<< +|<ot1enc.def unicode|> +>>> + +\<ot1enc.def unicode\><<< +\expandafter\def + \csname OT1\string\l\endcsname{\ht:special{t4ht@+\string&{35}x0142{59}}x} +\expandafter\def + \csname OT1\string\L\endcsname{\ht:special{t4ht@+\string&{35}x0141{59}}x} +>>> + + +\<configure html-speech plain\><<< +\Configure{l}{\ht:special{t4ht@+\string&{35}x0142{59}}x} +\Configure{L}{\ht:special{t4ht@+\string&{35}x0141{59}}x} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{8859-2} +%%%%%%%%%%%%%%%%%%%% + + + +\<optional iso-8859-2 accents\><<< +\def\:temp{charset=iso-8859-2} +\ifx \a:charset\:UnDef + \ifx \A:charset\:temp \let\:temp=\def \fi +\else \ifx \a:charset\:temp \let\:temp=\def \fi +\fi +\ifx \:temp\def + \:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi \fi +>>> + +\<old iso-8859-2 accents\><<< +|<T1 old iso-8859-2 accents|> +>>> + + + + + + + + + + + +% d{239} + + + + + + + + + + + + + + + + + + + + + + + + +\<old iso-8859-2 accents\><<< +\Configure{accent}\`\grave{|<grave iso-8859-2|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{|<acute iso-8859-2|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{|<circumflex iso-8859-2|>{}{}} + {\a:accents{hat}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{|<tilde iso-8859-2|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{|<diaeresis iso-8859-2|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + + + + +The following are also placed under accents configuration. + +\<old iso-8859-2 accents\><<< +\Configure{accent}\c\c{|<cedilla iso-8859-2|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{|<double acute iso-8859-2|>{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\Configure{accent}\b\b{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\Configure{accent}\d\d{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + +The following originally have been defined to be parameter-less. + +\<old iso-8859-2 accents\><<< +\Configure{accent}\.\.{|<dot above iso-8859-2|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\dot\dot{|<dot above iso-8859-2|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{|<breve iso-8859-2|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\v{|<caron iso-8859-2|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\Configure{accent}\check\check{|<caron iso-8859-2|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + +\<old 8859-2 accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {\a:accents{widetilde}{#1}} {\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {\a:accents{widehat}{#1}} {\b:accents{widehat}{#1}{#2}} +>>> + +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + +%%%%%%%%%%%%%%%%%%%% +\section{T1 8859-2} +%%%%%%%%%%%%%%%%%%%% + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname + \csname T1\string\`\endcsname{|<grave iso-8859-2|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname{|<acute iso-8859-2|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname + \csname T1\string\^\endcsname{|<circumflex iso-8859-2|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname + \csname T1\string\~\endcsname{|<tilde iso-8859-2|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\"\expandafter\endcsname + \csname T1\string\"\endcsname{|<diaeresis iso-8859-2|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\r\endcsname}% + \csname T1\string\r\endcsname{|<ring iso-8859-2|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\c\endcsname}% + \csname T1\string\c\endcsname{|<cedilla iso-8859-2|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\t\endcsname}% + \csname T1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\H\endcsname}% + \csname T1\string\H\endcsname{|<double acute iso-8859-2|>{}{}} + {\a:accents{Huml}{#1}}{\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\b\endcsname}% + \csname T1\string\b\endcsname{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\d\endcsname}% + \csname T1\string\d\endcsname{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname + \csname T1\string\.\endcsname + {|<dot iso-8859-2|>{}{}} + {\a:accents{dot}{#1}}{\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname + \csname T1\string\u\endcsname + {|<breve iso-8859-2|>{}{}} + {\a:accents{breve}{#1}}{\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\vec\expandafter\endcsname + \csname T1\string\vec\endcsname + {|<vec iso-8859-2|>{}{}} + {\a:accents{vec}{#1}}{\b:accents{vec}{#1}{#2}} +\expandafter\let\csname T1\string\v\endcsname\:UnDef +\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname + \csname T1\string\v\endcsname + {|<caron iso-8859-2|>{}{}} + {\a:accents{check}{#1}}{\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname + \csname T1\string\=\endcsname + {|<bar iso-8859-2|>{}{}} + {\a:accents{bar}{#1}}{\b:accents{bar}{#1}{#2}} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{T1, OT1 8859-7} +%%%%%%%%%%%%%%%%%%%% + + + +\<T1 greek ldf iso-8859-7\><<< +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname + {|<acute iso-8859-7|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +>>> + +\<greek ldf iso-8859-7\><<< +\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname + \acute{|<acute iso-8859-7|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +>>> + +\<acute iso-8859-7\><<< +A{\ht:special{t4ht@+\string&{35}x00C1{59}}A}% +E{\ht:special{t4ht@+\string&{35}x00C9{59}}E}% +I{\ht:special{t4ht@+\string&{35}x00CD{59}}I}% +O{\ht:special{t4ht@+\string&{35}x00D3{59}}O}% +U{\ht:special{t4ht@+\string&{35}x00DA{59}}U}% +Y{\ht:special{t4ht@+\string&{35}x00DD{59}}Y}% +a{\ht:special{t4ht@+\string&{35}x00E1{59}}a}% +e{\ht:special{t4ht@+\string&{35}x00E9{59}}e}% +i{\ht:special{t4ht@+\string&{35}x00ED{59}}i}% +\i{\ht:special{t4ht@+\string&{35}x00ED{59}}i}% +o{\ht:special{t4ht@+\string&{35}x00F3{59}}o}% +u{\ht:special{t4ht@+\string&{35}x00FA{59}}u}% +y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}% +{\@use@text@encoding \@curr@enc a}{\ht:special{t4ht@220}a}% +{\@use@text@encoding \@curr@enc e}{\ht:special{t4ht@221}e}% +{\@use@text@encoding \@curr@enc h}{\ht:special{t4ht@222}h}% +{\@use@text@encoding \@curr@enc i}{\ht:special{t4ht@223}i}% +{\@use@text@encoding \@curr@enc o}{\ht:special{t4ht@252}o}% +{\@use@text@encoding \@curr@enc u}{\ht:special{t4ht@253}u}% +{\@use@text@encoding \@curr@enc w}{\ht:special{t4ht@254}w}% +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\section{LaTeX Encodings} +%%%%%%%%%%%%%%%%%%%%%%% + + + +\<32,4 plain,latex\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accents} + {\expandafter\ifx \csname #1-num\endcsname\relax + \ht:special{t4ht@+\string&{35}x#2{59}}x% + \else + \ht:special{t4ht@+\string&\#x#2;}X% + \fi + } + {\Picture+{ \a:@Picture{#1}}#2{#3}\EndPicture} + \expandafter\let\csname ring-num\endcsname=\def +\fi +>>> + +\<32,4 latexPRE-CSS\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{textscaccent} + {\Tg<small class="small-caps">}{\Tg</small>} +\fi +>>> + +\<latex ltoutenc\><<< +\Configure{textcircled} + {\@use@text@encoding \@curr@enc c} + {\leavevmode \special{t4ht@+\string&\#x00A9;}c} + {\@use@text@encoding \@curr@enc \scshape r} + {\leavevmode \special{t4ht@+\string&\#x00AE;}r} + {} +>>> + +\<latex accents\><<< +\:CheckOption{new-accents} \if:Option + |<new accents|> +\else + |<old plain,latex accents|> +\fi +\let\^^_|=\v +>>> + +\<latex accents\><<< +\Configure{@TITLE}{|<env for titles|>} +>>> + +\<env for titles\><<< +\let\"=\:same \let\~=\:same \let\^=\:same +\PictureOff +>>> + + + + +\<0,32,4 latex\><<< +|<latex accents|> +\let\@acci|=\' \let\@accii|=\` \let\@acciii|=\= +>>> + +\<new accents\><<< +\:CheckOption{accent-} \if:Option + \Configure{HAccent}\acute{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\bar{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\breve{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\check{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\ddot{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\dot{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\grave{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\hat{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\tilde{AOaoNn{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\vec{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widehat{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widetilde{}{\Picture+{}}{\EndPicture} +\fi +\:CheckOption{mathaccent-} \if:Option + \Configure{HAccent}\"{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\'{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\.{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\={}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\H{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\^{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\`{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\b{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\c{Cc{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\d{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\t{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\u{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\v{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\~{AOaoNn{}}{\Picture+{}}{\EndPicture} +\fi +>>> + +\<new accents\><<< +\Configure{accent}{*} + {<!--tex4ht:accent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accent-->} +\Configure{mathaccent}{*} + {<!--tex4ht:mathaccent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end mathaccent-->} +\Configure{accented}{*} + {<!--tex4ht:accented\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accented-->} +\Configure{accenting}{*} + {<!--tex4ht:accenting\Hnewline-->} + {<!--tex4ht:end accenting-->} +>>> + + + + + + + +\<0,32,4 plain\><<< +\:CheckOption{new-accents} \if:Option + |<new plain accents|> +\else + |<old plain accents|> + \Configure{accents} + {\ht:special{t4ht@+\string&{35}x#2{59}}x} + {\Picture+{ \:Picture:{#1}}#2{#3}\EndPicture} +\fi +\let\^^_|=\v +>>> + + + +\<new plain accents\><<< +\:CheckOption{accent-} \if:Option + \Configure{HAccent}\acute{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\bar{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\breve{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\check{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\ddot{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\dot{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\grave{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\hat{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\tilde{AOaoNn{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\vec{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widehat{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widetilde{}{\Picture+{}}{\EndPicture} +\fi +\:CheckOption{mathaccent-} \if:Option + \Configure{HAccent}\"{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\'{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\.{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\={}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\H{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\^{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\`{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\b{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\c{Cc{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\d{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\t{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\u{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\v{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\~{AOaoNn{}}{\Picture+{}}{\EndPicture} +\fi +>>> + +\<new plain accents\><<< +\Configure{accent}{*} + {<!--tex4ht:accent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accent-->} +\Configure{mathaccent}{*} + {<!--tex4ht:mathaccent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end mathaccent-->} +\Configure{accented}{*} + {<!--tex4ht:accented\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accented-->} +\Configure{accenting}{*} + {<!--tex4ht:accenting\Hnewline-->} + {<!--tex4ht:end accenting-->} +>>> + + + + + +\<old plain accents\><<< +\Configure{accent}\`\grave{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{|<circumflex codes|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + +The following are also placed under accents configuration. + +\<old plain accents\><<< +\Configure{accent}\c\c{C{C}c{c}{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\Configure{accent}\b\b{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\Configure{accent}\d\d{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + +The following originally have been defined to be parameter-less. + +\<old plain accents\><<< +\Configure{accent}\.\.{{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\dot\dot{{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{{}{}}{\a:accents{breve}{#1}} + {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}}{\a:accents{vec}{#1}} + {\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\v{{}{}}{\a:accents{check}{#1}} + {\b:accents{check}{#1}{#2}} +\Configure{accent}\check\check{{}{}}{\a:accents{check}{#1}} + {\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> +% \= macron + +\<old plain accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {\a:accents{widetilde}{#1}} {\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {\a:accents{widehat}{#1}} {\b:accents{widehat}{#1}{#2}} +>>> +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + +%%%%%%%%%%%%%%%%%%% +\section{AMS Encodings} +%%%%%%%%%%%%%%%%%%% + + + + +\<ams 2000 art + book + proc\><<< +\def\:tempc#1#2#3#4#5{% + \expandafter\ifx \csname #1mathaccentV\endcsname\relax + \o:mathaccentV:{#1}{#2}{#3}{#4}{#5}% + \else \csname #1mathaccentV\endcsname{#5}\fi} +\HLet\mathaccentV\:tempc +\:CheckOption{new-accents} \if:Option \else + |<ams 2000 iso-8859-1 accents|> +\fi +\def\:temp{charset=iso-8859-2} +\ifx \a:charset\:UnDef + \ifx \A:charset\:temp \let\:temp=\def \fi +\else \ifx \a:charset\:temp \let\:temp=\def \fi +\fi +\ifx \:temp\def + \:CheckOption{new-accents} \if:Option \else + |<old ams 2000 iso-8859-2 accents|> +\fi \fi +>>> + + +\<ams 2000 iso-8859-1 accents\><<< +\HRestore\grave +\expandafter\let\csname gravemathaccentV\endcsname=\grave +\expandafter\let\csname GRAVEmathaccentV\endcsname=\grave +\expand:after{\Configure{accent}}\csname + gravemathaccentV\expandafter\endcsname + \csname GRAVEmathaccentV\endcsname{|<grave iso-8859-1|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\HRestore\acute +\expandafter\let\csname acutemathaccentV\endcsname=\acute +\expandafter\let\csname ACUTEmathaccentV\endcsname=\acute +\expand:after{\Configure{accent}}\csname + acutemathaccentV\expandafter\endcsname + \csname ACUTEmathaccentV\endcsname{|<acute iso-8859-1|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\HRestore\hat +\expandafter\let\csname hatmathaccentV\endcsname=\hat +\expandafter\let\csname HATmathaccentV\endcsname=\hat +\expand:after{\Configure{accent}}\csname + hatmathaccentV\expandafter\endcsname + \csname HATmathaccentV\endcsname{|<hat iso-8859-1|>{}{}} + {\a:accents{hat}{#1}} {\b:accents{hat}{#1}{#2}} +\HRestore\tilde +\expandafter\let\csname tildemathaccentV\endcsname=\tilde +\expandafter\let\csname TILDEmathaccentV\endcsname=\tilde +\expand:after{\Configure{accent}}\csname + tildemathaccentV\expandafter\endcsname + \csname TILDEmathaccentV\endcsname{|<tilde iso-8859-1|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\HRestore\ddot +\expandafter\let\csname DDOTmathaccentV\endcsname=\ddot +\expand:after{\Configure{accent}}\csname + DDOTmathaccentV\expandafter\endcsname + \csname DDOTmathaccentV\endcsname{|<ddot iso-8859-1|>{}{}} + {\a:accents{ddot}{#1}} {\b:accents{ddot}{#1}{#2}} +\expandafter\let\csname ddotmathaccentV\endcsname=\ddot +\expand:after{\Configure{accent}}\csname + ddotmathaccentV\expandafter\endcsname + \csname ddotmathaccentv\endcsname{|<ddot iso-8859-1|>{}{}} + {\a:accents{ddot}{#1}} {\b:accents{ddot}{#1}{#2}} +\HRestore\check +\expandafter\let\csname checkmathaccentV\endcsname=\check +\expandafter\let\csname CHECKmathaccentV\endcsname=\check +\expand:after{\Configure{accent}}\csname + checkmathaccentV\expandafter\endcsname + \csname CHECKmathaccentV\endcsname{|<check iso-8859-1|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\HRestore\dot +\expandafter\let\csname dotmathaccentV\endcsname=\dot +\expandafter\let\csname DOTmathaccentV\endcsname=\dot +\expand:after{\Configure{accent}}\csname + dotmathaccentV\expandafter\endcsname + \csname DOTmathaccentV\endcsname{|<dot iso-8859-1|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\HRestore\breve +\expandafter\let\csname brevemathaccentV\endcsname=\breve +\expandafter\let\csname BREVEmathaccentV\endcsname=\breve +\expand:after{\Configure{accent}}\csname + brevemathaccentV\expandafter\endcsname + \csname BREVEmathaccentV\endcsname{|<breve iso-8859-1|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\HRestore\bar +\expandafter\let\csname barmathaccentV\endcsname=\bar +\expandafter\let\csname BARmathaccentV\endcsname=\bar +\expand:after{\Configure{accent}}\csname + barmathaccentV\expandafter\endcsname + \csname BARmathaccentV\endcsname{|<bar iso-8859-1|>{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +\HRestore\vec +\expandafter\let\csname vecmathaccentV\endcsname=\vec +\expandafter\let\csname VECmathaccentV\endcsname=\vec +\expand:after{\Configure{accent}}\csname + vecmathaccentV\expandafter\endcsname + \csname VECmathaccentV\endcsname{|<vec iso-8859-1|>{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +>>> + +\<old ams 2000 iso-8859-2 accents\><<< +\HRestore\acute +\expandafter\let\csname acutemathaccentV\endcsname=\acute +\expandafter\let\csname ACUTEmathaccentV\endcsname=\acute +\expand:after{\Configure{accent}}\csname + acutemathaccentV\expandafter\endcsname + \csname ACUTEmathaccentV\endcsname{|<acute iso-8859-2|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +>>> + +The upper case is needed for cases like + +\begin{verbatim} +\documentclass[12pt]{amsart} +\begin{document} +\title{BUDOWA J''ADER ATOM{O}W PIERWIASTK{O}W} +\author{Rafa''l ``Raba--P{o}''lg''l{o}wek\'o$\acute{o}$} +\def\datename{Wersja z} +\date{\today} +\maketitle +\end{document} +\end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\section{ot4enc} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech ot4enc\><<< +\def\add:acc#1{\ht:special{t4ht@+\string&\#x#1;}x} +\Configure{add accent}{OT4:18} %\` + |<add grave codes|> {}{} +\Configure{add accent}{OT4:127} %\" + |<add diaeresis codes|> {}{} +\Configure{add accent}{OT4:19} %\' + |<add acute codes|> {}{} +\Configure{add accent}{OT4:95} %\. + |<add dot above codes|> {}{} +\Configure{add accent}{OT4:22} %\= + {}{} +\Configure{add accent}{OT4:94} %\^ + |<add circumflex codes|> {}{} +\Configure{add accent}{OT4:126} %\~ + |<add tilde codes|> {}{} +\Configure{add accent}{OT4:125} %\H + |<add double acute code|> {}{} +\Configure{add accent}{OT4:21} %\u + |<add breve codes|> {}{} +\Configure{add accent}{OT4:20} %\v + |<add caron codes|> {}{} +\Configure{add accent}{OT4:23} %\r + |<add ring codes|> {}{} +\Configure{add accent}{OT4:24} %\c + |<add cedilla codes|> {}{} +>>> + +%%%%%%%%%%%%%%%%%% +\section{pd1enc} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech pd1enc\><<< +\def\add:acc#1{\ht:special{t4ht@+\string&\#x#1;}x} +\Configure{add accent}{PD1:96} %\` + |<add grave codes|> {}{} +\Configure{add accent}{PD1:168} %\" + |<add diaeresis codes|> {}{} +\Configure{add accent}{PD1:180} %\' + |<add acute codes|> {}{} +\Configure{add accent}{PD1:27} %\. + |<add dot above codes|> {}{} +\Configure{add accent}{PD1:26} %\^ + |<add circumflex codes|> {}{} +\Configure{add accent}{PD1:31} %\~ + |<add tilde codes|> {}{} +\Configure{add accent}{PD1:24} %\u + |<add breve codes|> {}{} +\Configure{add accent}{PD1:20} %\v + |<add caron codes|> {}{} +\Configure{add accent}{PD1:21} %\r + |<add ring codes|> {}{} +\Configure{add accent}{PD1:184} %\c + |<add cedilla codes|> {}{} +>>> + +% \Configure{add accent}{PD1:22} %\= {}{} + +% \Configure{add accent}{PD1:125} %\H +% |<add double acute code|> {}{} + + +%%%%%%%%%%%%%%%%%%% +\section{Languages} +%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%% +\subsection{Babel} +%%%%%%%%%%%%%%%%%%% + + +\<babel.def\><<< +|<quotedblbase|> +>>> + + +\<babel macros\><<< +|<babel.def|> +>>> + + + + +\<config tex4ht\><<< +\NewConfigure{charset}[1]{\def\a:charset{#1}} +\def\:temp#1charset=#2,#3|<par del|>{% + \if !#2!% + \Log:Note{for alternative charset, use + the command line option `charset=...'} + \else \Configure{charset}{charset=#2}\fi} +\expandafter\:temp\Preamble ,charset=,|<par del|> +>>> + + + + +\<configure html-speech CJK\><<< +\def\A:charset{charset=utf-8} +|<simplified chinese (mainland)|> +|<traditional chinese (taiwanese)|> +|<japanese charset|> +|<korean charset|> +\Configure{CJKbold}{\HCode{<b>}}{\HCode{</b>}} +>>> + + + +The following are from CJK.enc +\begin{verbatim} +% CEF: CEFX C80 +% CEFY C81 +\end{verbatim} + + +\<traditional chinese (taiwanese)\><<< +\Configure{CJK.enc}{Bg5}{\def\A:charset{charset=big5}} +\Configure{CJK.enc}{Bg5pmC}{\def\A:charset{charset=big5}} +\Configure{CJK.enc}{Bg5+}{\def\A:charset{charset=big5}} +>>> + + +GB2312 (1980) has been superceded by GBK (circa 1993?) and GB18030 (2000). + +\<simplified chinese (mainland)\><<< +\Configure{CJK.enc}{GBpmC}{\def\A:charset{charset=gbk}} +\Configure{CJK.enc}{GBK}{\def\A:charset{charset=gbk}} +\Configure{CJK.enc}{GBt}{\def\A:charset{charset=gbk}} +\Configure{CJK.enc}{GBtpmC}{\def\A:charset{charset=gbk}} +\Configure{CJK.enc}{CNS1-7}{\def\A:charset{charset=gbk}} +>>> + + +\<japanese charset\><<< +\Configure{CJK.enc}{JIS}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JISpmC}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JISdnp}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JISwn}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JIS2}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JIS2dnp}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{SJIS}{\def\A:charset{charset=iso-2022-jp}} +>>> + +\<korean charset\><<< +\Configure{CJK.enc}{KS}{\def\A:charset{charset=iso-2022-kr}} +\Configure{CJK.enc}{KSpmC}{\def\A:charset{charset=iso-2022-kr}} +\Configure{CJK.enc}{KSHL}{\def\A:charset{charset=iso-2022-kr}} +>>> + + + + + +\<configure html-speech hebtex\><<< +\def\A:charset{charset=iso-8859-8} +\Configure{arabtext} + {\ifhmode \let\end:arabtex=\empty \IgnorePar + \else + \HCode{<div align="right"><table class="arabtex"><tr><td\Hnewline + style="white-space:nowrap;" align="right">}% + \def\end:arabtex{\HCode{</td></tr></table></div>}}% + \fi + \global\let\start:arab=\relax} + {\end:arabtex} + {\ifx \start:arab\relax \global\let\start:arab=\empty + \else \Tg<br />\fi} + {} +\:CheckOption{nikud} \if:Option + \Configure{chireq}{\char5 } + \Configure{cholem}{\char3 } + \Configure{chpatach}{\char1\char7 } + \Configure{chqames}{\char2\char7 } + \Configure{chsegol}{\char3\char7 } + \Configure{dagesh}{\char46 } + \Configure{meteg}{\char44 } + \Configure{patachf}{\char1 } + \Configure{patach}{\char1 } + \Configure{qameschat}{\char6\char7 } + \Configure{qames}{\char6 } + \Configure{qibbus}{\HCode{<!--qibbus-->}} + \Configure{rdot}{\HCode{<!--rdot-->}} + \Configure{segol}{\char3 } + \Configure{sere}{\char9 } + \Configure{shindot}{\HCode{<!--shindot-->}} + \Configure{shwa}{\char7 } + \Configure{sindot}{\HCode{<!--sindot-->}} +\else + \Log:Note{for hebrew vowels, use + the command line option `nikud'} + \Configure{chireq}{\HCode{<!--chireq-->}} + \Configure{cholem}{\HCode{<!--cholem-->}} + \Configure{chpatach}{\HCode{<!--chpatach-->}} + \Configure{chqames}{\HCode{<!--chqames-->}} + \Configure{chsegol}{\HCode{<!--chsegol-->}} + \Configure{dagesh}{\HCode{<!--dagesh-->}} + \Configure{meteg}{\HCode{<!--meteg-->}} + \Configure{patachf}{\HCode{<!--patachf-->}} + \Configure{patach}{\HCode{<!--patach-->}} + \Configure{qameschat}{\HCode{<!--qameschat-->}} + \Configure{qames}{\HCode{<!--qames-->}} + \Configure{qibbus}{\HCode{<!--qibbus-->}} + \Configure{rdot}{\HCode{<!--rdot-->}} + \Configure{segol}{\HCode{<!--segol-->}} + \Configure{sere}{\HCode{<!--sere-->}} + \Configure{shindot}{\HCode{<!--shindot-->}} + \Configure{shwa}{\HCode{<!--shwa-->}} + \Configure{sindot}{\HCode{<!--sindot-->}} +\fi +>>> + + +\<configure html-speech abidir\><<< +\:CheckOption{pic-RL}\if:Option + \Configure{RL} + {\ifvmode \IgnorePar\EndP \def\RL:tag{div}\else \def\RL:tag{span}\fi + \HCode{<\RL:tag\space class="pic-RL">}\Picture*{}} + {\EndPicture\HCode{</\RL:tag>}} + {} {} {} {} + \Css{div.pic-RL{text-align:right;}} +\else + \Log:Note{for pictorial RL, use + the command line option `pic-RL'} + \Configure{RL} + {\HCode{<span class="RL">}} {\HCode{</span>}} + {} {\HCode{<br />}} {} {} + +\fi +>>> + +% \:CheckOption{RL2LR}\if:Option +% \Configure{RL} +% {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="RL" +% dir="rtl" >}} +% {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +% {} {} {} {} +% \else +% \Configure{RL} +% {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="RL" +% dir="rtl" >}} +% {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +% {} {\HCode{<br />}} {} {} +% \fi + + +\<configure html-speech-uni babel\><<< +\def\A:charset{charset=utf-8}% +>>> + + +\<configure html-speech-uni austrian\><<< +\def\A:charset{charset=utf-8} +>>> + +\<configure html-speech-uni catalan\><<< +\def\A:charset{charset=utf-8} +>>> + +\<configure html-speech-uni croatian\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni czech\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni danish\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni dutch\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni english\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni esperant\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni estonian\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni finnish\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni francais\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni galician\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni germanb\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni greek\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni hebrew\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni ngermanb\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni norsk\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni polish\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni polski\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni portuges\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni romanian\><<< +\def\A:charset{charset=utf-8} +>>> + + +\<configure html-speech-uni scottish\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni slovak\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni slovene\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni spanish\><<< +\def\A:charset{charset=utf-8} +|<spanish configs|> +>>> +\<configure html-speech-uni swedish\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni turkish\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni ukraineb\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni usorbian\><<< +\def\A:charset{charset=utf-8} +>>> +\<configure html-speech-uni welsh\><<< +\def\A:charset{charset=utf-8} +>>> + +\<configure html-speech-uni CJK\><<< +\def\A:charset{charset=utf-8} +\Configure{CJKbold}{\HCode{<b>}}{\HCode{</b>}} +>>> + +\<configure html-speech-uni hebtex\><<< +\def\A:charset{charset=utf-8} +>>> + +\<configure html-speech-uni exerquiz\><<< +\def\A:charset{charset=utf-8} +>>> + +\<configure html-speech romanian\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + +%%%%%%%%%%%%%%%%%%% +\subsection{Umlaut} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech german\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accent}\grmn@OTumlaut + \grmn@OTumlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\fi +>>> + + +\<configure html-speech ngerman\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accent}\grmn@OTumlaut + \grmn@OTumlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\fi +>>> + +\<babel.def\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accent}\lower@umlaut\lower@umlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\fi +>>> + + + +\<u mlaut\><<< +\Configure{accent}\bbl@umlauta + \bbl@umlaute{|<diaeresis iso-8859-1|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + +%%%%%%%%%%%%%%%%%%% +\subsection{Russian and Cyrillic} +%%%%%%%%%%%%%%%%%%% + + + +\<configure html-speech t2benc\><<< +\def\:temp{charset=koi8-r}\ifx \A:charset\:temp \else + \def\A:charset{charset=iso-8859-5} +\fi +>>> + + + +\<configure html-speech koi8-r\><<< +\def\A:charset{charset=koi8-r} +>>> + + + +\<set babel charset\><<< +\def\:temp{charset=koi8-r}\ifx \A:charset\:temp \else + \a:temp{russian}{iso-8859-5}{ru} +\fi +>>> + +\<configure html-speech-uni russianb\><<< +\NewConfigure{dtd-lang}{1} \Configure{dtd-lang}{RU} +\def\A:charset{charset=utf-8} + +\ifx \@begindocumenthook\:UnDef\else + \:CheckOption{new-accents} \if:Option \else + |<russian|> +\fi\fi +>>> + + + +\<configure html-speech russianb\><<< +\NewConfigure{dtd-lang}{1} \Configure{dtd-lang}{RU} +\def\:temp{charset=koi8-r}\ifx \A:charset\:temp \else + \def\A:charset{charset=iso-8859-5} +\fi +\ifx \@begindocumenthook\:UnDef\else + \:CheckOption{new-accents} \if:Option \else +% \def\:temp{russian}\ifx \languagename\:temp + |<russian|> +% \fi +\fi\fi +>>> + + +We had also \verb'\append:def\@begindocumenthook{\HLet\"|=\ddot}' in +babel. It gets russian and brazil into infinite loop. Why it was +inserted. + +ERROR: The non ascii characters might translate wrongly in the 4ht +file (e.g., \verb'^^e5' for 00EB below). They also not show in the +documentation since a cmtt10 font is in use and it doesn't covet those +symbols. The problem will probably vanish once the new accent approach +will kick in. + + +\<russian\><<< +\Configure{accent}\"\ddot{|<diaeresis codes|>å{00EB}% + {\@use@text@encoding \@curr@enc A}{00C4}% + {\@use@text@encoding \@curr@enc E}{00CB}% + {\@use@text@encoding \@curr@enc I}{00CF}% + {\@use@text@encoding \@curr@enc O}{00D6}% + {\@use@text@encoding \@curr@enc U}{00DC}% + {\@use@text@encoding \@curr@enc Y}{0178}% + {\@use@text@encoding \@curr@enc a}{00E4}% + {\@use@text@encoding \@curr@enc e}{00EB}% + {\@use@text@encoding \@curr@enc i}{00EF}% + {\@use@text@encoding \@curr@enc \i}{00EF}% + {\@use@text@encoding \@curr@enc o}{00F6}% + {\@use@text@encoding \@curr@enc u}{00FC}% + {\@use@text@encoding \@curr@enc y}{00FF}% + {\@use@text@encoding \@curr@enc å}{00EB}% + {}{34}} + {\a:accents{uml}{#1}} + {\def\:temp{>}\def\:tempa{#2}\ifx \:temp\:tempa\HCode{»}% + \else \def\:temp{<}\ifx \:temp\:tempa\HCode{«}% + \else \b:accents{uml}{#1}{#2}\fi\fi} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Features} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Margin Comments} +%%%%%%%%%%%%%%%%%% + + +We need to consider cases like + \verb+\marginpar{ Consider: \par *one \par *two}+ +for margin pars. + + + + +%%%%%%%%%%%%%%%%%% +\section{Pictures in Margins} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech picins\><<< +\Configure{parpic} + {\IgnorePar\EndP\HCode{<div class="picins-\parpicOpt">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +>>> + +\<configure html-speech picins\><<< +\Css{.picins-dr, .picins-rd { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + border: 1px dashed black; + }} +\Css{.picins-dl, .picins-ld, .picins-d { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + border: 1px dashed black; + }} +\Css{.picins-fr, .picins-rf { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + border: 1px dashed black; + }} +\Css{.picins-fl, .picins-lf, .picins-f { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + border: 1px solid black; + }} +\Css{.picins-sr, .picins-rs { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 4px solid black; + border-bottom: 4px solid black; + }} +\Css{.picins-sl, .picins-ls, .picins-s { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 4px solid black; + border-bottom: 4px solid black; + }} +\Css{.picins-xr, .picins-rx { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 1px double black; + border-bottom: 1px double black; + }} +\Css{.picins-xl, .picins-lx, .picins-x { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 1px double black; + border-bottom: 1px double black; + }} +\Css{.picins-r { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + }} +\Css{.picins-l, .picins- { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + }} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Style Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%% +\subsection{MeX} +%%%%%%%%%%%%%%%%%% + + +\<configure html-speech mex\><<< +\def\MeX{\HCode{<span class="MeX">}MeX\HCode{</span>}} +>>> + +%%%%%%%%%%%%%%%%%% +\subsection{eplain} +%%%%%%%%%%%%%%%%%% + + +\<configure html-speech eplain\><<< +\Configure{columns} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="columns"><!--cols=\NumColumns-->}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.columns { margin-left:2em; margin-right:2em; }} +>>> + + +\<configure html-speech eplain\><<< +\Configure{bibliography} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="bibliography">}\par} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +>>> + + + +\<configure html-speech eplain\><<< +\Configure{makecolumns} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="makecolumns"><tr><td>}% + \gdef\make:col{\gdef\make:col{\HCode{<br />}}}} + {\HCode{</td></tr></table>}} + {\HCode{</td><td>}% + \gdef\make:col{\gdef\make:col{\HCode{<br />}}}} + {\make:col} + {} +\Css{table.makecolumns{width:100\%;}} +\Css{table.makecolumns td {vertical-align:top;}} +>>> + + +\<configure html-speech eplain\><<< +\Configure{flushleft} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="flushleft">}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}} + {\HCode{<br />}} +\Configure{flushright} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="flushright">}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}} + {\HCode{<br />}} +\Configure{center} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="center">}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}} + {\HCode{<br />}} +\Css{div.center {text-align:center;}} +\Css{div.flushright {text-align:right;}} +\Css{div.flushleft {text-align:left;}} +>>> + + + +\<configure html-speech eplain\><<< +|<eplain dates|> +\Configure{numberedlist} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<ol>}\let\end:itm=\empty} + {\ifvmode \IgnorePar\fi \end:itm \HCode{</ol>}} + {\end:itm \def\end:itm{\EndP\Tg</li>}\HCode{<li>}\special{t4ht@[}\IgnorePar} + {\special{t4ht@]}} +\Configure{orderedlist} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<ol>}\let\end:itm=\empty} + {\ifvmode \IgnorePar\fi \end:itm \HCode{</ol>}} + {\end:itm \def\end:itm{\EndP\Tg</li>}\HCode{<li>}\special{t4ht@[}\IgnorePar} + {\special{t4ht@]}} +\Configure{unorderedlist} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<ul>}\let\end:itm=\empty} + {\ifvmode \IgnorePar\fi \end:itm \HCode{</ul>}} + {\ifvmode \IgnorePar\fi \EndP + \end:itm \def\end:itm{\EndP\Tg</li>}% + \HCode{<li>}\special{t4ht@[}\IgnorePar} + {\special{t4ht@]}} +>>> + +\<configure html-speech eplain\><<< +\Configure{listing} + {\IgnorePar\EndP \HCode{<div class="listing">}\par + \Configure{HtmlPar} + {\EndP} + {\EndP} + {~\HCode{<br />}} + {~\HCode{<br />}} + } + {\HCode{</div>}\par} +>>> + + +\<configure html-speech-math eplain\><<< +\Configure{PicDisplay} + {\edef\MathPar{\ifvmode par-\fi}\IgnorePar\endgraf\EndP + \HCode{<div class="\if@leftdisplays leftdisplay\else centereddisplay\fi">}} + {\HCode{</div>}} {} {class="\MathPar math-display" } +\Css{div.lsftdisplay {text-align:left;}} +\Css{div.centereddisplay {text-align:center;}} +>>> + + +\<configure html-speech-math eplain\><<< +\Configure{contents} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="contents">}} + {\HCode{</div>}} +\Configure{tocchapterentry} + {\HCode{<span class="tocchapterentry">}} + {\HCode{</span><span class="toc-num">}} + {\HCode{</span>}} +\Configure{tocsectionentry} + {\HCode{<span class="tocsectionentry">}} + {\HCode{</span><span class="toc-num">}} + {\HCode{</span>}} +\Configure{tocsubsectionentry} + {\HCode{<span class="tocsubsectionentry">}} + {\HCode{</span><span class="toc-num">}} + {\HCode{</span>}} +\Css{span.tocchapterentry{width:30em}} +\Css{span.tocsectionentry{width:30em; padding-left:1.5em}} +\Css{span.tocsectionentry{width:30em; padding-left:3em}} +\Css{span.toc-num{width:6em; padding-left:2em}} +>>> + + + +\<eplain dates\><<< +\Configure{monthname} + {\HCode{<span class="month">}} + {\HCode{</span>}} +\Configure{timestring} + {\HCode{<span class="time">}} + {\HCode{</span>}} +\Configure{timestamp} + {\HCode{<span class="timestamp">}} + {\HCode{</span>}} +\Configure{today} + {\HCode{<span class="today">}} + {\HCode{</span>}} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\section{Drawing Utilitis} +%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Diagrams} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech epsf\><<< +\Configure{epsfsetgraph} + {\Picture+[\PicName]{}} + {\EndPicture} +>>> + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Diagrams} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech diagrams\><<< +\ConfigureEnv{diagram} + {\ifvmode \IgnorePar \EndP + \Tg<div class="diagrams">\def\End:Diagrams{\Tg</div>}% + \else \let\End:Diagrams\empty + \fi } + {\End:Diagrams} + {}{} +\Configure{diagram} + {\Picture*{}$} {$\EndPicture} +\Css{.diagrams {text-align: center;}} +>>> + +%%%%%%%%%%%%%%%%%%% +\subsection{dratex} +%%%%%%%%%%%%%%%%%%% + + \<configure html-speech dratex\><<< +\Css{div.Draw{text-align:center}} +>>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{pgf} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech pgf\><<< +\ConfigureEnv{pgfpicture} + {\hbox\bgroup\Picture+[picture]{}} + {\EndPicture\egroup} + {}{} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{pgf} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech overpic\><<< +\ConfigureEnv{overpic} + {\Picture*[pic]{}} + {\EndPicture} + {}{} +>>> + + + + +%%%%%%%%%%%%%% +\subsection{psfig} +%%%%%%%%%%%%%% + +\<configure html-speech psfig\><<< +|<0,32,4 psfig|> +>>> + +\<0,32,4 psfig\><<< +\Configure{psfig} {\Picture+[psfig]{}}{\EndPicture} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{graphics} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech graphics\><<< +\:CheckOption{graphics-} \if:Option + \Configure{graphics} + {\bgroup + \let\E:IMG=\e:IMG \let\e:IMG=\empty + \Picture+[\a:GraphicsAlt]{ class="graphics"}} + {\EndPicture + \E:IMG\HCode{<!--tex4ht:graphics + \Hnewline name="\PictureFile" src="\Gin@base\Gin@ext" + \Hnewline -->}% + \egroup} +\else + |<graphics quality|> + \Configure{graphics} + {\bgroup + \let\E:IMG=\e:IMG \let\e:IMG=\empty + \Picture+[\a:GraphicsAlt]{ class="graphics"}} + {\EndPicture \ifx\noBoundingBox\UnDefined + |<pixels graphics width/height|>\fi + \E:IMG\HCode{<!--tex4ht:graphics + \Hnewline name="\PictureFile" src="\Gin@base\Gin@ext" + \Hnewline -->}% + \egroup} +\fi +\Css{.figure img.graphics {margin-left:10\%;}} +\Configure{graphics*} + {gif} + {\Picture[\a:GraphicsAlt]{\Gin@base.gif |<graphics dim|>}} +\Configure{graphics*} + {png} + {\Picture[\a:GraphicsAlt]{\Gin@base.png |<graphics dim|>}} +\Configure{graphics*} + {jpg} + {\Picture[\a:GraphicsAlt]{\Gin@base.jpg |<graphics dim|>}} +\Configure{graphics*} + {jpeg} + {\Picture[\a:GraphicsAlt]{\Gin@base.jpeg |<graphics dim|>}} +\NewConfigure{GraphicsAlt}{1} +\Configure{GraphicsAlt}{PIC} +|<includegraphics dim|> +>>> + +\<graphics quality\><<< +\def\:temp#1graphics-#2,#3|<par del|>{\def\gr:density{#2}} +\expandafter\:temp\Preamble,graphics-,|<par del|> +\ifx \gr:density\empty + \Log:Note{if included graphics are + of degraded quality, try the command line options + `graphics-num' or `graphics-'. The `num' should provide + the density of pixels in the bitmaps (e.g., 110). + } +\else + \def\int:pt#1.#2|<par del|>{#1} +\fi +>>> + + + +\<graphics dim\><<< +\csname a:Gin-dim\endcsname +>>> + + +\<includegraphics dim\><<< +\NewConfigure{Gin-dim}{1} +\:CheckOption{Gin-dim} \if:Option + \Configure{Gin-dim} + {\ifx\noBoundingBox\UnDefined + |<graphics width/height|>% + \else + |<graphicx width/height|>% + \fi + class="includegraphics" + } +\else \:CheckOption{Gin-dim+} \if:Option + \Configure{Gin-dim} + {\ifx \Gin:ewidth\Gin@exclamation + \ifx \Gin:eheight\Gin@exclamation + \ifx\noBoundingBox\UnDefined + |<graphics width/height|>% + \fi + \else + height="\Gin:eheight" + \fi + \else + width="\Gin:ewidth" + \ifx \Gin:eheight\Gin@exclamation \else + height="\Gin:eheight" + \fi + \fi + class="includegraphics" + } +\else + \Log:Note{for key dimensions try the option + `Gin-dim'; for key dimensions when bounding box is unavailable + try `Gin-dim+'; neither is recommended} + \Configure{Gin-dim} + {\ifx\noBoundingBox\UnDefined + |<graphics width/height|>% + \fi + } +\fi \fi +>>> + +\<pixels graphics width/height\><<< +\ifx \gr:density\empty + \HCode{ + width="\the\Gin@req@width" + height="\the\Gin@req@height" + }% +\else + \bgroup + \divide\Gin@req@width by 72 + \multiply\Gin@req@width by \gr:density \relax + \divide\Gin@req@height by 72 + \multiply\Gin@req@height by \gr:density \relax + \HCode{ + width="\expandafter\int:pt\the\Gin@req@width|<par del|>" + height="\expandafter\int:pt\the\Gin@req@height|<par del|>" + }% + \egroup +\fi +>>> + + +\<graphics width/height\><<< +width="\the\Gin@req@width" +height="\the\Gin@req@height" +>>> + +\<graphicx width/height\><<< +\ifx \Gin:ewidth\Gin@exclamation \else + width="\Gin:ewidth" +\fi +\ifx \Gin:eheight\Gin@exclamation \else + height="\Gin:eheight" +\fi +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{xy} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech xy\><<< +|<32,4 xy|> +>>> + +\<32,4 xy\><<< +\Configure{xypic} + {\Picture*{}} {\EndPicture} +>>> + + + +%%%%%%%%%%%%%%%%%% +\subsection{pstricks} +%%%%%%%%%%%%%%%%%% + + +\<configure html-speech pst-all\><<< +\ConfigureEnv{psmatrix} + {\Picture*{}} + {\EndPicture} + {}{} +>>> + +\<configure html-speech pstricks\><<< +\Configure{pspicture} + {\ifvmode \ifinner\else \vfill\break\fi + \leavevmode\fi + \bgroup + \ifdim \pst@dimh<\z@ \pst@dimh=-\pst@dimh \fi + \HCode{<!--width="\ifdim \wd\pst@hbox=\z@ \the\pst@dimg + \else\the\wd\pst@hbox\fi" + height="\ifdim \ht\pst@hbox=\z@ \the\pst@dimh + \else \the\ht\pst@hbox\fi"-->}% + \egroup + \Picture+[\a:pspictureAlt]{ class="pspicture"}} + {\EndPicture} +\NewConfigure{pspictureAlt}{1} +\Configure{pspictureAlt}{PIC} +>>> + +%%%%%%%%%%%%%%%%%% +\subsection{pb-diagram} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech pb-diagram\><<< +\ConfigureEnv{diagram} + {\Picture*{ class="pb-diagram"}$} {$\EndPicture} {}{} +\Css{.pb-diagram {align:center}} +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{pictex} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech pictex\><<< +\Configure{pictex} + {\:xhtml{\IgnorePar\EndP}\HCode{<div + class="pictex">}}{\HCode{</div>}}{+[PICT]} +\Css{div.pictex {text-align:center;}} +>>> + + + + +%%%%%%%%%%%%%%%%%%% +\section{Slides} +%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%% +\subsection{Beamer} +%%%%%%%%%%%%%%%%%%% + + + + +\<configure html-speech beamer\><<< +|<beamer slides|> +|<beamer environments|> +\ifx \beamer@version\:UnDef + |<beamer toc 0.8 and 0.3|> +\fi +>>> + +\<beamer environments\><<< +\let\block:Name=\empty +\ConfigureEnv{block} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{block}\fi + \HCode{<div class="\block:Name">}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +\ConfigureEnv{alertblock} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{alertblock}\fi + \HCode{<div class="\block:Name">}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +\ConfigureEnv{Problem} + {\def\block:Name{Problem}} {} {} {} +\ConfigureEnv{Loesung} + {\def\block:Name{Loesung}} {} {} {} +\ConfigureEnv{Definition} + {\def\block:Name{Definition}} {} {} {} +\ConfigureEnv{Satz} + {\def\block:Name{Satz}} {} {} {} +\ConfigureEnv{Beweis} + {\def\block:Name{Beweis}} {} {} {} +\ConfigureEnv{Folgerung} + {\def\block:Name{Folgerung}} {} {} {} +\ConfigureEnv{Lemma} + {\def\block:Name{Lemma}} {} {} {} +\ConfigureEnv{Fakt} + {\def\block:Name{Fakt}} {} {} {} +\ConfigureEnv{Theorem} + {\def\block:Name{Theorem}} {} {} {} +\ConfigureEnv{Proof} + {\def\block:Name{Proof}} {} {} {} +\ConfigureEnv{Corollary} + {\def\block:Name{Corollary}} {} {} {} +\ConfigureEnv{Fact} + {\def\block:Name{Fact}} {} {} {} +\ConfigureEnv{definition} + {\def\block:Name{definition}} {} {} {} +\ConfigureEnv{definitions} + {\def\block:Name{definitions}} {} {} {} +\ConfigureEnv{theorem} + {\def\block:Name{theorem}} {} {} {} +\ConfigureEnv{proof} + {\def\block:Name{proof}} {} {} {} +\ConfigureEnv{corollary} + {\def\block:Name{corollary}} {} {} {} +\ConfigureEnv{fact} + {\def\block:Name{fact}} {} {} {} +>>> + +\<beamer toc 0.8 and 0.3\><<< +\ConfigureEnv{exampleblock} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{exampleblock}\fi + \HCode{<div class="\block:Name">}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +>>> + + +\<beamer environments\><<< +\ConfigureEnv{Beispiel} + {\def\block:Name{Beispiel}} {} {} {} +\ConfigureEnv{Beispiele} + {\def\block:Name{Beispiele}} {} {} {} +\ConfigureEnv{Example} + {\def\block:Name{Example}} {} {} {} +\ConfigureEnv{Examples} + {\def\block:Name{Examples}} {} {} {} +\ConfigureEnv{example} + {\def\block:Name{example}} {} {} {} +\ConfigureEnv{examples} + {\def\block:Name{examples}} {} {} {} +\Css{div.Example, div.examplblock, div.Beispiele, + div.Beispiel, div.Examples, div.example, div.examples{color:green;}} +>>> + +\<beamer slides\><<< +\:CheckOption{1} \if:Option + \ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP + \ifnum \Slide:cnt>0 \HPage{}\fi + \ifvmode \IgnorePar\fi \EndP + |<beamer header|>% + \HCode{<div class="slide">}\par + } + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}\ifnum \Slide:cnt>1\relax \EndHPage{}\fi} + {} {} + \Css{div.slide {border-top:solid black 0.4pt;}} +\else + \Log:Note{for pagination of slides, + use the command line option `1'} + \ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<hr class="hidden" />}% + |<beamer header|>% + \HCode{<div class="slide">}\par + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} + \Css{div.slide {border:solid black 0.4pt;}} +\fi +>>> + + + + + + +\<beamer toc 0.8 and 0.3\><<< +\Configure{frametitle} + {\ifvmode \IgnorePar\fi \EndP \HCode{<h2 class="frametitle">}\bgroup + \Configure{HtmlPar}{ }{ }{}{}% + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</h2>}} +>>> + +\<configure html-speech beamer\><<< +\Css{h1, h2, span.inst sup{font-size:100\%;}} + +\ConfigureEnv{overlayarea} + {\bgroup + \ConfigureEnv{minipage} + {\bgroup \IgnorePar\EndP + \ConfigureEnv{minipage} + {\bgroup \IgnorePar\EndP + \HCode{<table class="minipage"><tr><td>}} + {\EndP\HCode{</td></tr></table>}\egroup } + {}{}% + } + {\EndP\egroup } + {}{} + } + {\egroup} {}{} +>>> + + +\<configure html-speech beamer\><<< +\Configure{sec@slide} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="hidden">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par + |<beamer cross links|>\par} +\Css{.hidden {visibility:hidden;}} + +\Css{table.columns {width:100\%;}} +\Css{td.column {vertical-align:top;}} +>>> + + +\<configure html-speech beamer\><<< +\Configure{inst} + {\HCode{<span class="inst">}} + {\HCode{</span>}} + +\Configure{titlepage} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="titlepage">}% + \gHAdvance\Slide:cnt by 1 + \Link{}{sl1}\EndLink + |<beamer cross links|>% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{title} + {\ifvmode \IgnorePar\fi \EndP \HCode{<h1 class="title">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</h1>}} +\Configure{author} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="author">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{institute} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="institute">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{date} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="date">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{andtitle}{\HCode{<br />}} +\Css{div.titlepage {text-align:center;}} +\Css{div.institute { margin-bottom: 1em; margin-top: 1em;}} +>>> + + +\<configure html-speech beamer\><<< +\ConfigureEnv{columns} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="columns"><tr>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</tr></table>}} + {}{} + +\ConfigureEnv{column} + {\bgroup + \ConfigureEnv{minipage} + {\bgroup \IgnorePar\EndP + \ConfigureEnv{minipage} + {\bgroup \IgnorePar\EndP + \HCode{<table class="minipage"><tr><td>}} + {\EndP\HCode{</td></tr></table>}\egroup } + {}{}% + } + {\EndP\egroup } + {}{}% + \HCode{<td class="column">}% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</td>}\egroup} + {}{} +>>> + + +\<configure html-speech beamer\><<< +\ifx \beamer@version\:UnDef + |<shared conf beamer 0.8 and 0.3|> + \ifx \insertinstituteshort\:UnDef + |<conf beamer 0.8|> + \else + |<conf beamer 0.3|> + \fi +\else + |<conf beamer 3.01|> +\fi +>>> + +\<shared conf beamer 0.8 and 0.3\><<< +\Configure{sectionshadedintoc} + {\HCode{<div class="sectionshadedintoc">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} +\Configure{sectionintoc} + {\HCode{<div class="sectionintoc">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} +\Configure{subsectionshadedintoc} + {\HCode{<div class="subsectionshadedintoc">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} +\Configure{subsectionintoc} + {\HCode{<div class="subsectionintoc">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} +\Css{div.sectionintoc, div.sectionshadedintoc{ margin-top:1em; }} +\Css{div.tableofcontents + { padding-left:1em; padding-right:1em; padding-bottom:1em; }} +\Css{.tableofcontents div.subsectionintoc, + .tableofcontents div.subsectionshadedintoc{ margin-left:1em; }} +>>> + +\<configure html-speech beamer\><<< +\ConfigureToc{toc} + {} + {\Configure{TocLink} + {\def\hyperlink########1########2{\Link{####2}{}########2\EndLink}####4}% + \leavevmode} + {}{\par} +\Configure{tableofcontents} + {\IgnorePar\EndP \HCode{<div class="TableOfContents">}}{} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\ShowPar} + {}{} +>>> + + +\<beamer cross links\><<< +\slides:toc +>>> + +\<beamer header\><<< +\gHAdvance\Slide:cnt by 1 +\ifx \sec:name\empty + \HCode{<div class="hidden">}\Link{}{sl\Slide:cnt}\EndLink + \HCode{</div>}% +\else + \HCode{<div class="header">}\Link{}{sl\Slide:cnt}\EndLink + \sec:name + \ifx \subsec:name\empty \else \HCode{<br />}\subsec:name\fi + \HCode{</div>}% +\fi +>>> + +\<configure html-speech beamer\><<< +\let\beamer:section=\@section +\def\@section[#1]#2{\beamer:section[#1]{#2}% + \gHAdvance\:bookmarkN by 1 + \def\sec:name{#2}\let\subsec:name=\empty} +\append:defI\subsection{% + \gHAdvance\:bookmarkN by 1 + \def\subsec:name{#1}} +\HAssign\:bookmarkN=0 +\let\sec:name=\empty +\let\subsec:name=\empty +\Css{div.header{ margin:0; text-align:right; font-size:70\%; }} +>>> + + + + + +\<configure html-speech beamer\><<< +\gHAssign\Slide:cnt=0 +\def\slides:toc{% + |<beamer bookmarks|>% + |<beamer toc frames|>% + \gdef\slides:toc{\ifvmode \IgnorePar\fi \EndP + \HCode{<p class="links">}|<set beamer cross links|>% + \HCode{</p>}\par}% + \slides:toc +} +\Css{p.links{ margin:0; float:right; text-align:right; + font-size:70\%; }} +>>> + + +\<set beamer cross links\><<< +\bgroup + \HAdvance\Slide:cnt by 1\relax + \ifTag{)Qsl\Slide:cnt}{\Link{sl\Slide:cnt}{}next\EndLink\HCode{<br />}}{}% +\egroup +\ifnum \Slide:cnt>1 + \bgroup + \HAdvance\Slide:cnt by -1 + \Link{sl\Slide:cnt}{}prev\EndLink\HCode{<br />}% + \ifnum \:bookmarkN>0\relax + \Link[ target="|<tex4ht-menu|>" + ]{tc-\:bookmarkN}{}toc\EndLink\HCode{<br />}% + \fi + \Link{sl1}{}top\EndLink\HCode{<br />}% + {\HAdvance\Slide:cnt by 1\relax \Slide:cnt}% + \egroup +\else + \Link[ target="|<tex4ht-menu|>"]{bookmark}{}toc\EndLink +\fi +>>> + + + + + + + +\<beamer bookmarks\><<< +\:CheckOption{frames}\if:Option\else + \bgroup + \HPage{}{\beamer:bookmarks\tableofcontents}\EndHPage{}% + \egroup +\fi +>>> + + +\<configure html-speech beamer\><<< +\:CheckOption{frames}\if:Option + \:CheckOption{ver}\if:Option + |<beamer ver frames|> + \else + \Log:Note{for vertically stacked frames, + use the command line options `frames' and `ver'} + |<beamer hor frames|> + \fi + \Css{body\#tex4ht-menu{ background-color:\#EEEEEE; }} +\fi +\def\beamer:bookmarks{% + \Link{}{bookmark}\EndLink + \HAssign\:bookmarkN=0 + |<beamer bookmark config|>% + \Configure{tableofcontents} + {\IgnorePar\EndP \HCode{<div class="bookmarks">}}{} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\ShowPar} + {}{} + \let\std:tableofcontents\tableofcontents + \def\tableofcontents{\std:tableofcontents[section,subsection]}% + } +>>> + + +\<beamer bookmark config\><<< +\:CheckOption{frames}\if:Option + \Configure{TocLink} + {\HAdvance\:bookmarkN by 1\relax + \Link{##2}{tc-\:bookmarkN}##4\ifvmode + \IgnorePar\fi \EndLink} +\else + \Configure{TocLink} + {\HAdvance\:bookmarkN by 1\relax + \Link[ target="|<tex4ht-main|>"]{##2}{tc-\:bookmarkN}##4\ifvmode + \IgnorePar\fi \EndLink} +\fi +>>> + + + +\<configure html-speech beamer\><<< +\ConfigureToc{section} + {}{\HCode{<div class="sectionintoc">}} {\HCode{</div>}} {}{} +\ConfigureToc{subsection} + {} + {\HCode{<div class="subsectionintoc">}} + {\HCode{</div>}} {}{} +\Css{div.bookmarks {white-space: nowrap;}} +\Css{div.bookmarks div.subsectionintoc a { text-decoration: none; + font-size:85\%;}} +>>> + + +\<configure html-speech beamer\><<< +\Configure{alert} + {\HCode{<span class="alert">}} + {\HCode{</span>}} +\Css{span.alert {color:\#FF0000;}} +\Hinclude{% + \Configure{HColor}{alert}{rgb(100\%,0\%,0\%)}% + \Configure{HColor}{blockstructure}{rgb(20\%,20\%,70\%)}% + \Configure{HColor}{darkgreen}{rgb(15\%,60\%,15\%)}% + \Configure{HColor}{lightgray}{rgb(90\%,90\%,90\%)}% + \Configure{HColor}{shaded}{rgb(60\%,60\%,60\%)}% + \Configure{HColor}{structuremedium}{rgb(30\%,30\%,30\%)}% + \Configure{HColor}{structureshaded}{rgb(75\%,75\%,75\%)}% + \Configure{HColor}{structure}{rgb(0\%,0\%,0\%)}% +}{color} +>>> + +The following is problematic when used on titles. + +\begin{verbatim} +\Configure{structure} + {\HCode{<span class="structure">}} + {\HCode{</span>}} +\Css{span.structure {color:\#000000;}} +\end{verbatim} + + + +%%%%%%%%%%%%%%% +\subsection{foils} +%%%%%%%%%%%%%%% + +\<configure html-speech foils\><<< +|<32,4 foils|> +>>> + +\<32,4 foils\><<< +\Configure{foilheads} {}{} + {\IgnorePar\EndP\HCode{<h1 class="foilheadsHead"\a:LRdir>}} + {\HCode{</h1>}\IgnorePar} +\ConfigureEnv{Theorem}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Lemma}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Corollary}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Corollary*}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Proposition}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Definition}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Proof}{\par\leavevmode}{\ShowPar}{}{} +|<foils bib|> +\:CheckOption{1} \if:Option + \CutAt{foilheads} + |<foils toc 1|>% +\else + \Log:Note{for pagination of slides, + use the command line option `1'} +\fi +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +\section{epigraph.sty} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech epigraph\><<< +\Configure{epigraphhead} + {\IgnorePar\EndP\HCode{<div class="epigraphhead">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} + +\Configure{epigraph} + {\IgnorePar\EndP\HCode{<div class="epigraph">}} + {\IgnorePar\EndP\HCode{<div class="episource">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div></div>}} + + +\ConfigureEnv{epigraphs} + {\IgnorePar\EndP\HCode{<div class="epigraphs">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} {}{} + +\Configure{qitem} + {\IgnorePar\EndP\HCode{<div class="qitem">}} + {\IgnorePar\EndP\HCode{<div class="episource">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div></div>}} + +\Css{.epigraph, .epigraphhead, epigraphs {margin-left:60\%}} +\Css{.epigraphhead .epigraph {margin-left:0\%}} + +\Css{.episource {text-align:right}} +\Configure{epirule} {\ifvmode \IgnorePar\fi \EndP\Tg<hr />\par} + +\Css{.epigraphs table { width:40\% ;}} +\Css{.epigraphs table div .episource { text-align:right; width:100\%;}} +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{slides} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech slides\><<< +\:CheckOption{1} \if:Option + |<multi slides|> +\else + \Log:Note{for pagination of slides, + use the command line option `1'} + \ConfigureEnv{slide} + {\ifnum \c@slide=0 + \IgnorePar\EndP\HCode{<hr />}\fi} + {\rightline{\a:slidename}% + \IgnorePar\EndP\par\HCode{<hr />}} + {}{} +\fi +>>> + +\<multi slides\><<< +\ConfigureEnv{slide} + {\ifnum \c@slide=0 \EndP\ShowPar\else\IgnorePar\fi} + {} + {}{} +\CutAt{slide} +\Configure{crosslinks}{[}{] }{next}{prev}{}{}{}{up} +\Configure{crosslinks+} + {}{} + {\IgnorePar\EndP \HCode{<div + class="crosslinks"><p class="noindent">}% + {\advance\c@slide by -1 \the\c@slide}: } + {\HCode{</p></div>}\par} +\Css{.crosslinks{text-align:right;font-size:85\%;}} +>>> + +\<configure html-speech slides\><<< +|<quote config|> +|<quotations|> +|<description 4|> +\ConfigureEnv{verse} + {\Tg<div class="verse">} + {\Tg</div>} + {}{} +\ConfigureEnv{note} + {\Tg<div class="note">} + {\Tg</div>} + {}{} +\ConfigureEnv{titlepage} + {\Tg<div class="titlepage">} + {\Tg</div>} + {}{} +>>> + + +\<configure html-speech slides\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \vtop\bgroup \IgnorePar \EndP \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\egroup} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +\Configure{author date} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="author" >}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="date">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.author, div.date {text-align:center;}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Prosper} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<configure html-speech prosper\><<< +|<prosper maketitle|> +|<prosper lists|> +>>> + + + +\<configure html-speech prosper\><<< +\Configure{slidetitle} + {\NoFonts \ifvmode \IgnorePar\fi \EndP + \HCode{<h2 class="slidetitle">} } + {\ifvmode \IgnorePar\fi \EndP \HCode{</h2>}\EndNoFonts} +\Css{h2.slidetitle {text-align:center;}} +>>> + +\<configure html-speech prosper\><<< +\Configure{Subtitle} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="Subtitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{email} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="email">}\Link[mailto:\@email]{}{}} + {\EndLink \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{institution} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="institution">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.email, div.institution {text-align:center;}} +>>> + + +\<configure html-speech prosper\><<< +\:CheckOption{1} \if:Option + |<paginated prosper|> +\else + \Log:Note{for pagination of slides, + use the command line option `1'} + |<non paginated prosper|> +\fi +\:CheckOption{nolayers} \if:Option + \def\itemstep{\itemize} + \def\enditemstep{\enditemize} + \let\overlays=\:gobble +\else + \Log:Note{to remove overlays of slides, + use the command line option `nolayers'} +\fi +>>> + + +\<non paginated prosper\><<< +\ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP\HCode{<hr />}\par} + {\rightline{\bgroup + \ifx \slide\SlideNormal \advance\c@slide by -1 \fi + \ifnum \c@slide>0 + \the\c@slide + \ifx \slide\SlideOverlay .\the\c@overlaysCount\fi + \fi + \egroup + }}{}{} +>>> + + +\<paginated prosper\><<< +\HAssign\Slide:cnt=0 +\ConfigureEnv{slide} + {\ifnum \Slide:cnt>0 + \ifnum \Slide:cnt>1 + \ifvmode\IgnorePar\fi + \fi |<start prosper page|>% + } + {\ifnum \Slide:cnt=1 + \else |<end prosper page|>\fi + } + {}{} +>>> + + + +\<start prosper page\><<< +\ifnum \Slide:cnt=1 + \IgnorePar \par\EndP \HCode{<hr />}\par +\fi +\noindent +\HPage{\the\c@slide + \ifx \slide\SlideOverlay .\the\c@overlaysCount\fi + }\fi +\gHAdvance\Slide:cnt by 1 +\Tag{f-\Slide:cnt}{\FileName}% +>>> + + +\<end prosper page\><<< +\rightline{|<foot paginated prosper|>}% +\EndHPage{}~~ +>>> + + +\<foot paginated prosper\><<< +\bgroup + \ifx \slide\SlideNormal \advance\c@slide by -1 \fi + \the\c@slide +\egroup +\ifx \slide\SlideOverlay .\the\c@overlaysCount\fi, +\bgroup + \HAdvance\Slide:cnt by 1 + \ifTag{f-\Slide:cnt}{\Link + [\LikeRef{f-\Slide:cnt}]{}{}next\EndLink, }{}% +\egroup +\bgroup +\ifnum \Slide:cnt>1 + \HAdvance\Slide:cnt by -1 + \Link[\LikeRef{f-\Slide:cnt}]{}{}prev\EndLink, +\fi +\egroup +\Link[\LikeRef{f-1}]{}{}up\EndLink% +\ifTag{prosperTOC}{% + \edef\:temp{\FileName}\edef\:tempa{\LikeRef{prosperTOC}}% + \ifx \:temp\:tempa \else, + \Link[\LikeRef{prosperTOC}]{}{}toc\EndLink}{}\fi +>>> + +\<paginated prosper\><<< +\Configure{tableofcontents} + {\ifx \prosperTOCtag\:UnDef + \global\let\prosperTOCtag\def + \Tag{prosperTOC}{\FileName}% + \fi + \IgnorePar\EndP + \HCode{<div class="tableofcontents">}\IgnorePar} + {} + {\IgnorePar\EndP\HCode{</div>}\ShowPar} + {\HCode{<br />}} {} +>>> + +FROM MANUAL: +When translated into PDF files, \texttt{prosper} slides benefit from +additional possibilities such as transition effects between slides and +incremental display of a slide with several animation effects. The +currently supported transitions are: +\begin{itemize} +\item {Split}: two lines sweep across the screen revealing the + new slide; +\item {Blinds}: multiple lines, evenly distributed across the + screen, appear and synchronously sweep in the same direction to + reveal the new slide; +\item {Box}: a box sweeps from the center, revealing the new slide; +\item {Wipe}: a single line sweeps across the screen from one + edge to the other, revealing the new slide; +\item {Dissolve}: the old page image dissolves to reveal the new slide; +\item {Glitter}: similar to \texttt{Dissolve}, except the + effect sweeps across the image in a wide band moving from one side + of the screen to the other; +\item {Replace}: the effect is simply to replace the old page + with the new page. +\end{itemize} + + + +%%%%%%%%%%%%%%%%%% +\subsection{seminar} +%%%%%%%%%%%%%%%%%% + + + + + + +\<configure html-speech seminar\><<< +\ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP\HCode{<hr />}\par} + {\rightline{\the\c@slide}}{}{} +>>> +%%%%%%%%%%%%%%%%%%% +\subsection{slidesec} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech slidesec\><<< + \ConfigureToc{slidesection} + {\HCode{<span class="tocslidesection">}}{\ }{}{\HCode + {</span><br\xml:empty>}} +>>> + +%%%%%%%%%%%%%%%%%%% +\section{Lit Prog and Verbatim} +%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%% +\subsection{ProTex} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech ProTex\><<< +\def\NAME:{ id=} +\:CheckProtexOption{[[]]}\if:Option + |<frame protex code|> +\fi +>>> + +\<frame protex code\><<< +\Configure{FrameCode} + {\ifvmode \IgnorePar\fi \EndP + |<lynx separator|>% + \HCode{<div class="ShowCode">\ifx \:test\:minus + \else<div class="head">\fi}\par\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div></div>}} +\Configure{ShowCode} + {\HCode{\ifx \:test\:minus \else </div>\fi + \html:src<div class="body"><span class="ShowCode" + style="font-family:monospace;white-space:nowrap;" + >\html:invisible}% + \nobreak + } + {\special{t4ht=\html:src</span>% + \ifx \:test\:minus \else + </div><div class="tail">\html:BackTitle\fi}} + {\HCode{<br />\html:invisible}} + {\HCode{<i>}} + {\HCode{</i>}} + {|<nbsp|>} +\Css{div.ShowCode{background-color:\#EEEEEE; border: 1px white solid;}} +\Css{div.ShowCode div.head{background-color:\#E0E0E0;}} +\Css{div.ShowCode div.tail{background-color:\#E0E0E0;}} +>>> + +\<nbsp\><<< +\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x% +>>> + +The `59' stands for semicolon. Explicit character might be problematic +for languages (e.g., French) where the cahacter is active and may be imported from +aux or another file. + + +\<lynx separator\><<< +\ifx \par:end\empty \HCode{<p></p>}\fi +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{moreverb} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech moreverb\><<< +|<moreverb.sty config 4.0t|> +>>> + +\<moreverb.sty config 4.0t\><<< +\ConfigureEnv{verbatimtab} + {\env:verb{verbatim}} + {\endenv:verb}{}{} +\Configure{verbatimtab} + {\HAdvance\Verb:N by 1 \ifnum \Verb:N>1 \:nbsp \HCode{<br />}\fi} + {\a:sp} +\ConfigureEnv{boxedverbatim} + {\env:verb{boxedverbatim}}{\endenv:verb}{}{} +\ConfigureEnv{boxedverbatim*} + {\env:verb{boxedverbatim}}{\endenv:verb}{}{} +>>> + +\<moreverb.sty config 4.0t\><<< +\ConfigureEnv{boxedverbatim} + {\env:verB{boxedverbatim}}{\endenv:verb}{}{} +\ConfigureEnv{boxedverbatim*} + {\env:verB{boxedverbatim}}{\endenv:verb}{}{} +\def\env:verB#1{\IgnorePar\HCode{<table \Hnewline + class="#1"><tr class="#1"><td \Hnewline + class="#1"><pre class="#1">}\EndNoFonts} +\Css{ pre.boxedverbatim{border:solid 1px; padding-right:1em;} } +\Css{table.boxedverbatim {text-align:center;}} +>>> + + +\<moreverb.sty config 4.0t\><<< +\Configure{listinginput} + {\HCode{<div class="listinginput">}} + {\IgnorePar\HCode{</div>}} +\Css{.listinginput p{ margin-bottom:0em; margin-top:0em; }} +>>> + + +\<moreverb.sty config 4.0t\><<< +\Configure{verbatimtabinput} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="verbatimtabinput"\a:LRdir>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{fancyvrb} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech fancyvrb\><<< +|<fancyvrb.sty config 4.0t|> +>>> + +\<fancyvrb.sty config 4.0t\><<< +\HAssign\fancyvrbNo|=0 +\Configure{fancyvrb} + {\IgnorePar \EndP \gHAdvance\fancyvrbNo by 1 + \gHAssign\fancyvrb:cnt0 + \HCode{<div class="fancyvrb" id="fancyvrb\fancyvrbNo">}} + {\EndP\HCode{</div>}} + {\gHAdvance\fancyvrb:cnt by 1 + \ifnum \fancyvrb:cnt>1 + \HCode{<br class="fancyvrb"\xml:empty>}\fi} {} + {}{} +\Css{P.fancyvrb {white-space: nowrap; margin:0em;}} +>>> + + + +The following is harmful at the start of section 1.1 in +listings.dtx. + +\begin{verbatim} +\ConfigureEnv{verbatim}{\HAssign\Verb:N=0\relax}{\empty}{}{} +\ConfigureEnv{verbatim*}{\HAssign\Verb:N=0\relax}{\empty}{}{} +\end{verbatim} + + + + + +\<fancyvrb.sty config 4.0t\><<< +\Configure{fancyvrbcolor} + {\Css{div\#fancyvrb\fancyvrbNo { color: \HColor; }}} + {\Css{div\#fancyvrb\fancyvrbNo { background-color: \HColor;}}} + {\Css{div\#fancyvrb\fancyvrbNo { border-color: \HColor;}}} +>>> + +\<fancyvrb.sty config 4.0t\><<< +\Configure{fancyvrbframe} + {\Css{div\#fancyvrb\fancyvrbNo { border-top: solid \HSize; }}} + {\Css{div\#fancyvrb\fancyvrbNo { border-left: solid \HSize; }}} + {\Css{div\#fancyvrb\fancyvrbNo { border-bottom: solid \HSize; }}} + {\Css{div\#fancyvrb\fancyvrbNo { border-right: solid \HSize; }}} + {\Css{div\#fancyvrb\fancyvrbNo {border-width:\HSize;}}} + {\Css{div\#fancyvrb\fancyvrbNo {padding:\HSize;}}} +>>> + +\<fancyvrb.sty config 4.0t\><<< +\Configure{BVerbatimInput} + {\ifvmode \IgnorePar \fi \EndP + \gHAssign\HRow=0 + \HCode{<div class="BVerbatimInput">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {\gHAdvance\HRow by 1 \ifnum \HRow>1 \HCode{<br />}\fi}{} +>>> + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Listings} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech listings\><<< +\Configure{lstinline} + {\HCode{<span class="lstinline">}} + {\HCode{</span}} +>>> + +\<configure html-speech listings\><<< +\Log:Note{to ensure proper alignments use + fixed size fonts (see listings.dtx)} +\Configure{listings} + {\ifvmode \IgnorePar\fi \EndP + {\everypar{}\leavevmode}\HCode{<!--l. \the\inputlineno-->}% + \HCode{<pre class="listings">}% + } + {{\everypar{}\leavevmode}\HCode{</pre>}} + {}{} +>>> + +\<configure html-speech listings\><<< +\ConfigureEnv{lstlisting} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno-->}% + \HCode{<div class="lstlisting">}% + \bgroup \special{t4ht@(}% + \Configure{listings} + {{\everypar{}\leavevmode}} + {{\everypar{}\leavevmode}} + {|<nbsp|>\HCode{<br />}}{}% + } + {\special{t4ht@)}\egroup + \ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + {} {} +>>> + +\<configure html-speech listings\><<< +\Configure{lstinputlisting} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno-->}% + \HCode{<div class="lstinputlisting">}% + \bgroup \tt \special{t4ht@(}% + \Configure{listings} + {{\everypar{}\leavevmode}} + {{\everypar{}\leavevmode}} + {|<nbsp|>\HCode{<br />}} + {}% + } + {\special{t4ht@)}\egroup + \ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Css{div.lstinputlisting{ + font-family: monospace; + white-space: nowrap; +}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Verbatim} +%%%%%%%%%%%%%%%%%%%%% + + + + + +\<configure html-speech verbatim\><<< +\Configure{verbatiminput} + {\HAssign\Verb:N=0 \ifvmode \IgnorePar\fi \EndP + \HCode{<div class="verbatiminput"\a:LRdir>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.verbatiminput + {font-family: monospace; white-space: nowrap; }} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{mdwlist} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech sverb\><<< +\HAssign\demoN=0 +\Configure{demo} + {\HAdvance\demoN by 1 + \ifvmode \IgnorePar \fi \EndP + \ifnum \demoN=1 + \HCode{<table class="demo"><tr>}% + \fi + \HCode{<td>}% + } + {\ifvmode \IgnorePar \fi \EndP + \HCode{</td>} + \ifnum \demoN=2 + \HAssign\demoN=0 + \HCode{</tr></table>}% + \fi + } +>>> + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{verbatimlisting} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-speech verbatimlisting\><<< +\Configure{verbatimlisting} + {\ifvmode \EndP\fi \EndP\HCode{<div class="verbatimlisting"\a:LRdir>}} + {\HCode{</div>}} + {\ifnum \c@lineno > 1 \HCode{<br />}\fi + \ifnum \c@lineno<10 ~\fi + \ifnum \c@lineno<100 ~\fi + \ifnum \c@lineno<1000 ~\fi + } + {} +>>> + + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{doc} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech doc\><<< +\ConfigureEnv{macrocode} + {\ifvmode \IgnorePar\fi\EndP\HCode{<pre class="macrocode">}} + {\ifvmode \IgnorePar \HCode{</pre>}\par\else \HCode{</pre>}\fi} + {}{} +>>> + + +%%%%%%%%%%%%%%%%%%% +\section{Boxes and Multiple columns} +%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%% +\subsection{fancybox} +%%%%%%%%%%%%%%%%%%% + + + + + + + + + + + +\<configure html-speech fancybox\><<< + \Configure{ovalbox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="ovalbox">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="ovalbox">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.ovalbox { + padding-left:3pt; + padding-right:3pt; + border:solid thin; + }} +>>> + +\<configure html-speech fancybox\><<< + \Configure{Ovalbox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="Ovalbox-thick">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="Ovalbox-thick">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.Ovalbox-thick { + padding-left:3pt; + padding-right:3pt; + border:solid thick; + }} +>>> + + +IE doesn't distinguish between upper and lower case characters in css + + + +\<configure html-speech fancybox\><<< + \Configure{shadowbox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="shadowbox">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="shadowbox">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.shadowbox { + padding-left:3pt; + padding-right:3pt; + border:solid thin; + border-right:solid thick; + border-bottom:solid thick; + }} +>>> + + + + +\<configure html-speech fancybox\><<< + \Configure{doublebox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="doublebox">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="doublebox">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.doublebox { + padding-left:3pt; + padding-right:3pt; + border-style:double; + border:solid thick; + }} +>>> + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{boxedminipage} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech boxedminipage\><<< +\ConfigureEnv{boxedminipage} + {\ifvmode \IgnorePar \EndP + \def\after:bmp{\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par\ShowPar}% + \HCode{<div class="boxedminipage">}% + \expandafter\everymath\expandafter{\expandafter + \everymath\expandafter{\the\everymath}}% + \else \def\after:bmp{\HCode{</span>}}% + \HCode{<span class="boxedminipage">}% + \fi + \bgroup \fboxrule=\z@} + {\egroup \after:bmp} + {}{} +>>> + +%%%%%%%%%%%%%%%%%%% +\subsection{Multicol} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech multicol\><<< +\HAssign\MultiCols=0 +\ConfigureEnv{multicols} + {\par\IgnorePar\EndP + \gHAdvance\MultiCols by 1\relax + \HCode{<table class="multicols" + id="multicols-\MultiCols"><tr><td class="multicol-1">}% + \let\sv:HCol=\HCol + \bgroup \gHAssign\HCol=1\relax + } + {\egroup + \global\let\HCol=\sv:HCol + \ifvmode\IgnorePar\fi\EndP + \HCode{</td></tr></table>}\par + } + {}{} +\Configure{columnbreak} + {\gHAdvance\HCol by 1\relax + \par \IgnorePar \EndP + \HCode{</td><td class="multicol-\HCol">}} +\Css{table.multicols { + width:100\%; margin-left:1em; margin-top:1em; margin-bottom:1em; +}} +>>> + + +%%%%%%%%%%%%%%%% +\section{array.sty} +%%%%%%%%%%%%%%%% + +\<configure html-speech array\><<< +|<html latex array/tabular Config 4.0t|> +>>> + + +\<configure html-speech-math array\><<< +|<math html latex array/tabular|> +>>> + + + +%%%%%%%%%%%%%%%%%%% +\section{algorithmic} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech algorithmic\><<< +\ConfigureEnv{algorithmic} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="algorithmic">}% + \bgroup + \Configure{HtmlPar}{}{}{}{}} + {\egroup \ifvmode \IgnorePar\fi \HCode{</div>}} + {}{} +\Configure{ALCitem} + {\HCode{\ifnum \c@ALC@line>1 <br />\fi <span class="ALCitem">}} + {\HCode{</span><span style="width:\the\ALC@tlm ;"> </span>}} +\Css{.ALCitem {width:2em; text-align:right;}} +>>> + + +\<configure html-speech algorithmic\><<< +\ConfigureEnv{ALC@for} + {\HCode{<span class="for-body">}} + {\HCode{</span>}} + {}{} +\ConfigureEnv{ALC@whl} + {\HCode{<span class="while-body">}} + {\HCode{</span>}} + {}{} +\ConfigureEnv{ALC@loop} + {\HCode{<span class="loop-body">}} + {\HCode{</span>}} + {}{} +\ConfigureEnv{ALC@rpt} + {\HCode{<span class="repeat-body">}} + {\HCode{</span>}} + {}{} +\Configure{ALCif} + {\HCode{<span class="if-body">}} + {\HCode{</span>}} + {\HCode{<span class="else-body">}} + {\HCode{</span>}} +\Configure{algorithmiccomment} + {\HCode{<span class="ALC-comment">}} + {\HCode{</span>}} + {}{} +>>> + + + + +%%%%%%%%%%%%%%%%%%% +\section{Bibliography} +%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%% +\subsection{jurabib} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech jurabib\><<< +\HAssign\jbancorDepth=0 +\Configure{jblink} + {\HAdvance\jbancorDepth by 1 \Link} + {\EndLink \HAdvance\jbancorDepth by -1 } +\Configure{jbanchor} + {\bgroup + \ifnum \jbancorDepth=0 + \Configure{Link}{a}{href=}{id=}{}% + \else + \Configure{Link}{span}{}{id=}{}% + \fi + \Link} + {\EndLink \egroup} +>>> + +The code \verb+\Configure{jbanchor}{\Link}{\EndLink}+ doen't work +because anchors can in jurabib reside within links. + + + + +\begin{verbatim} +Definition of \@citex +--------------------- + \hyper@jblinkstart{\@citeb} + \jb@firstcitefull + \hyper@jblinkend + +Definiton of \jb@firstcitefull +------------------------------ + \hyper@jbanchorstart{look@\@citeb:\jb@reset@look@label@for}\hyper@jbanchorend + + \jbincollcrossref + +Definition of \jbincollcrossref +------------------------------- + \hyper@jblinkstart{#1}% + + \hyper@jblinkend +\end{verbatim} + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Harvard} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech harvard\><<< +\Configure{harvardyear} + {\HCode{<span class="bib-year">}} + {\HCode{</span>}} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Text Decoration} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%% +\subsection{color} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech color\><<< +\Configure{HColor}{red}{\#FF0000} +\Configure{HColor}{rgb 1 0 0}{\#FF0000} +\Configure{HColor}{blue}{\#0000FF} +\Configure{HColor}{rgb 0 0 1}{\#0000FF} +\Configure{HColor}{green}{\#00FF00} +\Configure{HColor}{rgb 0 1 0}{\#00FF00} +\Configure{HColor}{white}{\#FFFFFF} +\Configure{HColor}{gray 1}{\#FFFFFF} +\Configure{HColor}{rgb 1 1 1}{\#FFFFFF} +\Configure{HColor}{black}{\#000000} +\Configure{HColor}{gray 0}{\#000000} +\Configure{HColor}{rgb 0 0 0}{\#000000} +\Configure{HColor}{cyan}{\#00FFFF} +\Configure{HColor}{cmyk 1 0 0 0}{\#00FFFF} +\Configure{HColor}{magenta}{\#FF00FF} +\Configure{HColor}{cmyk 0 1 0 0}{\#FF00FF} +\Configure{HColor}{yellow}{\#FFFF00} +\Configure{HColor}{cmyk 0 0 1 0}{\#FFFF00} +\Configure{color}{\:gobble} +|<color.sty config 4.0t|> +>>> + + + + + +% \Configure{pagecolor} +% {\Configure{color} +% {\Configure{SetHColor}{\Css{body {background-color:\HColor}}}}} + + + +\<configure html-speech color\><<< +\Configure{HColor:gray}{% + \int:of\:tempa{255}{#1}% + \Configure{HColor}{}{rgb(\:tempa,\:tempa,\:tempa)}% +} +\Configure{HColor:rgb}{% + \int:of\:tempa{255}{#1}% + \int:of\:tempb{255}{#2}% + \int:of\:tempc{255}{#3}% + \Configure{HColor}{}{rgb(\:tempa,\:tempb,\:tempc)}% +} +\Configure{HColor:cmyk}{% + \int:of\:Cyan{255}{#1}% + \int:of\:Magenta{255}{#2}% + \int:of\:Yellow{255}{#3}% + \int:of\:Black{255}{#4}% + \:cmyk\:tempa\:Cyan + \:cmyk\:tempb\:Magenta + \:cmyk\:tempc\:Yellow + \Configure{HColor}{}{rgb(\:tempa,\:tempb,\:tempc)}% +} +|<HColor util|> +>>> + + +\<HColor util\><<< +\def\int:of#1#2#3{% + \tmp:dim=#3pt \tmp:dim=#2\tmp:dim + \edef\:temp{\tmp:cnt\the\tmp:dim//}% + \def#1##1//{}\afterassignment#1\:temp + \edef#1{\the\tmp:cnt}% +} +>>> + + +\begin{verbatim} +cmyk -> gray +(1 - 0.299c - 0.587m - 0.114y)(1 - k) + +cmyk -> rgb +Red = 1-minimum(1,Cyan *(1-Black)+Black) +Green = 1-minimum(1,Magenta*(1-Black)+Black) +Blue = 1-minimum(1,Yellow *(1-Black)+Black) +\end{verbatim} + + + +\<HColor util\><<< +\def\:cmyk#1#2{% + \tmp:cnt=255 \advance\tmp:cnt by -\:Black + \multiply\tmp:cnt by#2 \advance\tmp:cnt by \:Black + \advance\tmp:cnt by -255 \tmp:cnt=-\tmp:cnt + \ifnum \tmp:cnt<0 \tmp:cnt=0 \fi + \edef#1{\the\tmp:cnt}% +} +>>> + + + + +\<color.sty config 4.0t\><<< +\HAssign\textcolorN=0 +\Configure{textcolor} + {\gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor} + {\Css{span\#textcolor\textcolorN{color:\HColor}}}}% + \HCode{<span id="textcolor\textcolorN">}}% + {\HCode{</span>}} +>>> + +\<color.sty config 4.0t\><<< +\Configure{colorbox} + {\bgroup + \gHAdvance\textcolorN by 1 + \ifvmode \let\v:colorbox\def \IgnorePar \EndP + \else \let\v:colorbox=\relax \fi + |<colorbox background|>% + \HCode{<\ifx \v:colorbox\def div\else span\fi \Hnewline + class="colorbox" id="colorbox\textcolorN">}}% + {\ifx \v:colorbox\def \EndP\HCode{</div>}\par + \else \HCode{</span>}\fi + \egroup + } +>>> + + +\<colorbox background\><<< +\let\A:color=\a:color +\Configure{color}% + {\let\a:color=\A:color + \Configure{SetHColor} + {\Css{\ifx \v:colorbox\def div\else span\fi + \#colorbox\textcolorN{background-color:\HColor;}}}}% +>>> + + +\<\><<< +\Configure{fcolorbox} + {\gHAdvance\textcolorN by 1 + \let\A:color=\a:color + \Configure{color}% + {\Configure{SetHColor}{\Css{\#colorbox\textcolorN{border: + solid 1px \HColor;}}}}% + \Configure{fbox}{\leavevmode + \gHAdvance\textcolorN by -1 \let\a:color=\A:color}{}} + {} +>>> + + +\<color.sty config 4.0t\><<< +\Configure{fcolorbox} + {\bgroup\gHAdvance\textcolorN by 1 + \ifvmode \let\v:colorbox\def \IgnorePar \EndP + \else \let\v:colorbox=\relax \fi + \HCode{<\ifx \v:colorbox\def div\else span\fi \Hnewline + class="colorbox" id="colorbox\textcolorN">}% + |<fcolorbox border|>% + \Configure{fbox}{\leavevmode }{}% +} +{\ifx \v:colorbox\def \EndP\HCode{</div>}\par + \else \HCode{</span>}\fi \egroup} +>>> + +\<fcolorbox border\><<< +\let\A:color=\a:color +\Configure{color}% + {|<fcolor background|>% + \Configure{SetHColor}{% + \Css{\#colorbox\textcolorN{border: solid 1px \HColor;}}}% + }% +>>> + +\<fcolor background\><<< +\Configure{color}% + {\let\a:color=\A:color + \Configure{SetHColor}{% + \Css{\#colorbox\textcolorN{background-color: \HColor;}}% + }}% +>>> + +%%%%%%%%%%%%%%%%%%%%%%% +\subsection{colortbl.sty} +%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech colortbl\><<< +\Configure{@classz} + {\let\begin:current@color|=\relax + \let\end:current@color|=\relax } + {% + \ifx \CT@column@color\relax \else + \ifx \CT@column@color\empty \else{% + \def\CT@color{\@ifnextchar[\color:ii\color:i}% + \CT@column@color|<par del|>% + \edef\:temp{\noexpand\add:color + {background-color}{\:temp}{\ar:cnt}}\:temp + }\fi \fi + } + {\begin:current@color} + {\end:current@color} +\Configure{rowcolor}{\row:clr} +\def\row:clr#1{{% +% \HAdvance\HRow by 1 + \add:color{background-color}{#1}{\HRow-}}} +\Configure{text-colortbl} + {\add:color{color}{\current@color}{\HRow-\HCol}} +\Configure{cell-colortbl} + {\add:color{background-color}{\current@color}{\HRow-\HCol}} +\def\add:color#1#2#3{% + \Configure{SetHColor}{\Css{ \#TBL-\TableNo-#3{ #1:\HColor }}}{#2}} +>>> + + +%%%%%%%%%%%%% +\subsection{Soul} +%%%%%%%%%%%%% + +\<configure html-speech soul\><<< +\Configure{textcaps} + {\HCode{<span class="textcaps">}} + {\HCode{</span>}} +\Configure{texthl} + {\HCode{<span class="texthl">}\bgroup + \ifx\sethlcolor\:gobble\else |<soul color|>\fi} + {\egroup \HCode{</span>}} +\Configure{textso} + {\HCode{<span class="textso">}} + {\HCode{</span>}} +\Configure{textst} + {\HCode{<span class="textst">}\bgroup + \ifx\setstcolor\:gobble\else |<soul color|>\fi} + {\egroup \HCode{</span>}} +\Configure{textul} + {\HCode{<span class="textul">}\bgroup + \ifx\setulcolor\:gobble\else |<soul color|>\fi} + {\egroup \HCode{</span>}} +\Css{span.textso{letter-spacing: 0.3em; word-spacing: 0.3em}} +\Css{span.textul{text-decoration:underline}} +\Css{span.textst{text-decoration:line-through}} +\Css{span.textcaps{font-variant:small-caps}} +>>> + +\<soul color\><<< +\Configure{textcolor} + {\gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor} + {\Css{span\#textcolor\textcolorN{background-color:\HColor}}}}% + \HCode{<span id="textcolor\textcolorN">}}% + {\HCode{</span>}}% +>>> + + +%%%%%%%%%%%%%%%% +\section{verse} +%%%%%%%%%%%%%%%%% + +\<configure html-speech verse\><<< +\Configure{poemtitle} + {\par\IgnorePar\EndP + \HCode{<div class="poemtitle"><span class="poemtitlemark">}} + {\HCode{</span>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Configure{likepoemtitle} + {\par\IgnorePar\EndP \HCode{<div class="likepoemtitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Css{.poemtitle, likepoemtitle {margin-left:2em; margin-bottom:0.5em;}} +>>> + + + +\<configure html-speech verse\><<< +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<div class="verse">}% + \bgroup + \Configure{hspace} + {\HCode{<span style="margin-right:\the\tmp:dim">}\:nbsp} + {\HCode{</span>}} {} + \let\end:verseln\empty + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {}{} + +\ConfigureList{verse} + {} {\ifvmode \IgnorePar\fi \EndP \end:verseln} + {\parindent=\z@} {} + +\Configure{verseline} + {\ifvmode \IgnorePar\fi \EndP \end:verseln + \HCode{<div class="verseline">}\def\end:verseln{\HCode{</div>}}} + {\ifvmode \IgnorePar\fi \EndP \end:verseln + \HCode{<div class="skip-verseline">}% + \def\end:verseln{\HCode{</div>}}} + +\Configure{flagverse} + {\HCode{<span class="flagverse">}\bgroup \setlength{\vleftskip}{0em}} + {\egroup \HCode{</span>}\ignorespaces} + +\Css{.skip-verseline {margin-top: 1em;}} +\Css{.skip-verseline, .verseline {white-space: nowrap;}} +\Css{.flagverse {float:right; font-size:85\%; + text-decoration:underline;}} +>>> + + +%%%%%%%%%%%%%%%% +\section{OpenOffice writer} +%%%%%%%%%%%%%%%% + +\<configure html-speech writer\><<< +\Configure{WriterEnv} + {% + \ConfigureEnv{#1} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="#1">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {}{}% + } + {% + \tmp:dim=\parindent + \divide\tmp:dim by \ten:Em\relax + \tmp:dim=10\tmp:dim + \Css{div.#1 {text-indent:\expandafter\x:Em \the\tmp:dim em;}}% + \tmp:dim=\leftskip + \divide\tmp:dim by \ten:Em\relax + \tmp:dim=10\tmp:dim + \Css{div.#1 {margin-left:\expandafter\x:Em \the\tmp:dim em;}}% + \tmp:dim=\rightskip + \divide\tmp:dim by \ten:Em\relax + \tmp:dim=10\tmp:dim + \Css{div.#1 {margin-right:\expandafter\x:Em \the\tmp:dim em;}}% + \Css{div.#1 {margin-top:0.75em; + margin-bottom:0.75em; + }}% +} +|<10 em constant|> +>>> + +\<10 em constant\><<< +{ + \def\x:Em{% + \catcode`\p=12 + \catcode`\t=12 + \gdef\x:Em} + \x:Em#1pt{#1} +} +\tmp:dim=10em +\edef\ten:Em#1.#2//{#1} +\edef\ten:Em{\expandafter\ten:Em \the\tmp:dim//} +>>> + +%%%%%%%%%%%%%%%%%% +\section{manmac} +%%%%%%%%%%%%%%%%%% + +\<configure html-speech manmac\><<< +\Configure{chapter} + {\IgnorePar\EndP + \HCode{<!--l. \the\inputlineno--><div class="chapter">}\IgnorePar } + {\IgnorePar\EndP\HCode{</div><!--end chapter-->}\par\ShowPar} + {\HCode{<div class="chapterTitle">}\par \ShowPar \noindent + \let\sv:rightline=\rightline \let\rightline=\hbox } + {\IgnorePar\EndP \let\rightline=\sv:rightline + \HCode{</div><!--end chapter title-->}\par\ShowPar} +\Configure{titlepage} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<!--l. \the\inputlineno--><div class="titlepage">}\par} + {\IgnorePar\EndP\HCode{</div><!--end titlepage-->}\par\ShowPar} +>>> + +\<configure html-speech manmac\><<< +\Configure{mathdemo} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="mathdemo">}} + {\HCode{</table>}\par\ShowPar} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +\Css{table.mathdemo{margin-left:2em}} +\Configure{longdisplaymathdemo} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="longdisplaymathdemo">}} + {\HCode{</table>}\par\ShowPar} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +\Css{table.longdisplaymathdemo{margin-left:2em}} +\Configure{longmathdemo} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="longmathdemo">}} + {\HCode{</table>}\par\ShowPar} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +\Css{table.longmathdemo{margin-left:2em}} +\Configure{displaymathdemo} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="displaymathdemo">}} + {\HCode{</table>}\par\ShowPar} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +\Css{table.displaymathdemo{margin-left:2em}} +>>> + + +\<configure html-speech manmac\><<< +\Configure{exercise} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><h5 class="exercise">}% + \bgroup \Configure{HtmlPar}{}{}{}{}} + {\egroup\HCode{</h5>}\IgnoreIndent\par} + +\Configure{manmac-display} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="manmac-display">}} + {\HCode{</table>}\IgnoreIndent\par} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</td>}} + +\Configure{ttenv} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><div class="ttenv">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par\noindent} +>>> + + + +\<configure html-speech manmac\><<< +\Configure{sampleglue} + {\HCode{<table class="sampleglue">}} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +>>> + +\<configure html-speech manmac\><<< +\Configure{danger} + {\HCode{<!--l. \the\inputlineno--><!--danger-->}} + {\HCode{<!--end danger-->}} +\Configure{ddanger} + {\HCode{<!--l. \the\inputlineno--><!--ddanger-->}} + {\HCode{<!--end ddanger-->}} +>>> + + +%%%%%%%%%%%%%%%% +\section{Small Packagesy} +%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{lineno.sty} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech lineno\><<< +\:warning{The line numbers are commented out. To reintroduce them, use + the \string\Configure{lineno}{...}{...} command} +\Configure{lineno} + {\bgroup \let\LineNumber=\empty} + {\egroup} +>>> + + + + +%%%%%%%%%%%%%% +\subsection{revtex (aps)} +%%%%%%%%%%%%%% + +\<configure html-speech aps\><<< +\ifx \@authoraddress\:UnDef + |<revtex4 aps.rtx|> +\else + |<revtex3 aps.sty|> +\fi +>>> + +\<revtex3 aps.sty\><<< +|<revtex sections|> +|<revtex title page|> +|<shared bib env|> +|<thebib config|> +>>> + + +\<revtex sections\><<< + \def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +>>> + + + + +\<revtex sections\><<< +\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +|<cut toc: sec|>% + \CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} + |<cut toc: subsec|>% + |<tocat: part|>% + |<tocat: section|>% + \else + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} +|<tocat: ch|>% + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +|<cut toc: sec|>% + \CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} + |<cut toc: subsec|>% + |<tocat: part|>% + |<tocat: ch|>% + |<tocat: section|>% + \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +|<cut toc: sec|>% + \CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} + |<cut toc: subsec|>% + |<tocat: part|>% + |<tocat: section|>% + \else + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} +|<tocat: ch|>% + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} + |<cut toc: sec|>% + |<tocat: part|>% + |<tocat: ch|>% + \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} + |<cut toc: sec|>% + |<tocat: part|>% + \else + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} + |<tocat: ch|>% + |<tocat: part|>% + \fi +\else\:CheckOption{1} \if:Option + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + +\else + \Log:Note{for automatic sectioning pagination, + use the command line option `1', `2', or `3'}% +\fi \fi \fi \fi + +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +|<shared h5 subsubsection|> +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} + +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi + +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\thesection\HCode{</span>}\fi } +|<section TITLE+|> +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark.\space\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \par} +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \par} +\Configure{likesectionTITLE+}{#1} + +\Css{h3.sectionHead, h3.likesectionHead {text-align:center;}} + +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +|<shared h4 subsection|> + +\Css{h4.subsectionHead {text-align:center;}} + +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} + +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}\IgnorePar} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} + +\ConfigureMark{subparagraph}{} +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likesubparagraph}{}{} + {\ShowPar\HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +>>> + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Spatial Math} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech longdiv\><<< +\Configure{longdiv} + {\Configure{halign} + {\HCode{<table class="longdiv">}} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>\Hnewline}} + {\tmp:cnt=\HRow \divide\tmp:cnt by 2 \multiply\tmp:cnt by 2 + \advance\tmp:cnt by -\HRow + \HCode{<td \ifnum\HCol=2 \ifnum\HRow=2 class="longdiv"\fi \fi>% + <span \ifnum \tmp:cnt=-1 + \ifnum \HRow>2 class="longdiv"\fi\fi >}% + } + {\HCode{</span></td>}}% + } + {} +\Css{table.longdiv {text-align: right;}} +\Css{td.longdiv {border-top:solid 1px black; + border-left:solid 1px black;}} +\Css{span.longdiv {text-decoration:underline;}} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{lncse} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech lncse\><<< +|<lncse chapter|> +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent + \HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\it} + {\endgroup\HCode{</span>}\IgnorePar} +>>> + + +\<lncse chapter\><<< +\ConfigureMark{chapter} + {\if@mainmatter + \HCode{<span class="titlemark">}\chaptername + \ \thechapter\HCode{</span>}\fi} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}% + \TitleMark{\HCode{<br\xml:empty>}}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{chapterTITLE+}{\if@mainmatter\thechapter\space\fi#1} +\renewcommand\thechapter {\if@mainmatter\@arabic\c@chapter\fi} + +\ConfigureMark{appendix}{\HCode{<span class="titlemark">}% + \appendixname \ \thechapter\HCode{</span>}} +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}% + \TitleMark{\HCode{<br\xml:empty>}}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead">}} + {\HCode{</h2>}\IgnoreIndent} +>>> + + + +%%%%%%%%%%%%%%%% +\section{?????} +%%%%%%%%%%%%%%%% + + + + + +\<0,32,4 preambles\><<< +|<hook utility|> +|<cascade style sheets|> +\Configure{Preamble} + {|<default cascade style sheets|>} {} +>>> + +\<default cascade style sheets\><<< +{\ifdim \lastskip>\z@ \unskip\fi \IgnorePar\parindent\z@ +\leavevmode}% +\immediate\write-1{--- file \aa:CssFile\space ---}% +\ht:special{t4ht>\aa:CssFile}\ht:special{t4ht=\Hnewline /* css.sty */}% +\ht:special{t4ht<\aa:CssFile}% +>>> + + + +\verb'\special' are like \verb'\hbox', and they so they may introduve empty lines in +vertical mode. That might be a problem if we don't want empty lines at +the start of the files. Hence, in latex we give them special treatment. + +\<cascade style sheets\><<< +\ScriptCommand{\CssFile}{% + \immediate\write-1{--- file \aa:CssFile\space ---}% + \def\FontSize##1##2{\:Context{##1}\ht:special{t4ht;\%##2}\%}% + \def\FontName##1{\:Context{##1}\ht:special{t4ht;=}}% + \def\:Context##1{\ht:special{t4ht>\jobname.tmp}##1\ht:special + {t4ht>\aa:CssFile}}% + \ht:special{t4ht>\jobname.tmp}\ht:special{t4ht>\aa:CssFile}% + \bgroup \everypar{}\NoFonts \bb:CssFile \hfil\break} + {\egroup \EndNoFonts + \ht:special{t4ht<\aa:CssFile}\ht:special{t4ht<\jobname.tmp}} +\let\Css:File|=\CssFile +\def\CssFile{\futurelet\:temp\Css:Fl} +\def\Css:Fl{\ifx [\:temp \expandafter\Css:fl + \else \expand:after{\Css:File \space}\fi} +\def\Css:fl[#1]{\Css:File\space \css:files #1,,|<par del|>} +\def\css:files#1,#2|<par del|>{\def\:temp{#1}\ifx \:temp\empty + \else \def\:temp{\in:css#1.|<par del|>\css:files#2,,|<par del|>}\fi + \:temp } +\def\in:css#1.#2|<par del|>{\def\:temp{#2}\ifx \:temp\empty + \inc:ss#1.css|<par del|> + \else \inc:ss#1.#2|<par del|>\fi} +\def\inc:ss#1.|<par del|>{|<input css file|> } +\NewConfigure{CssFile}[2]{\def\aa:CssFile{#1}\def\bb:CssFile{#2}} +>>> + + +\<input css file\><<< + \immediate\openin15=#1 + \ifeof15 \immediate\closein15 + \:warning{Missing file: #1}% + \else \immediate\closein15 \input #1 \fi +>>> + + +\verb'\CssFile[file-name,filename.ext,..]...\EndCssFile'. + +Default file, just in case the user doesn't provide one. If +the user does, the following file will be overwritten. + +Can't use below \verb'\a:CssFile' and \verb'\b:CssFile', because +\verb'\ScriptFile{\CssFile}' also needs them. + +\verb'\Css' changes its definition upon reachin \verb'\CssFile'. The +first definition is needed within the sty files, and the info is +sent to the lg file (where else it can be sent?). + + +\<cascade style sheets\><<< +\def\Css#1{{\def\:temp{\Configure{Needs}}% + \expandafter\:temp\expandafter{\aa:Css}\Needs{#1}}} +>>> + +\<cascade style sheets-DISABLE\><<< +\let\send:css|=\Css +\ScriptCommand{\Css}{\HCode{<style + type="text/css">\Hnewline}\NoFonts}{\EndNoFonts\HCode{</style>}} +\let\loc:css|=\Css +\def\Css{\futurelet\:temp\:Css} +\def\:Css{\ifx \:temp\bgroup \expandafter\send:css + \else \expandafter\loc:css\fi} +>>> + + +\<hook utility\><<< +\:CheckOption{hooks++} \if:Option + \else \:CheckOption{hooks+} + \if:Option \else \:CheckOption{hooks}\fi + \fi +\if:Option + \Configure{hooks} + {\HCode{<strong class="hooks"><}}{\HCode{></strong>}}{}{} +\fi +>>> + + + + +The following provides a faster version +than \verb'\LinkCommand\Link{a,href,name,}' for the \verb'\Link' +command + +\<config tex4ht\><<< +\Configure{Link}{a}{href=}{id=}{} +>>> + + +\section{Shared} +%%%%%%%%%%%%%%%%%% + + +\<config book-report-article\><<< +|<makeketitle config 4.0t|> +>>> + + + +\<config book-report-article\><<< +|<latex shared div config|> +|<shared bib env|> +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi +|<config lists of figures and tables|> +|<description 4|> +>>> + + +\<config lists of figures and tables\><<< +\ConfigureToc{lof} + {\HCode{<span class="lofToc">}}{\ }{}{\HCode{</span><br\xml:empty>}} +\ConfigureToc{lot} + {\HCode{<span class="lotToc">}}{\ }{}{\HCode{</span><br\xml:empty>}} +>>> + +\<config book-report-article\><<< +|<thebib config|> +|<latex config div 4.0t|> +>>> + + + +\<quote config\><<< +\ConfigureEnv{quote} + {}{} + {\IgnorePar\EndP\HCode{<div class="quote">}} + {\IgnorePar\EndP\HCode{</div>}\ShowPar\ShowIndent} +\Css{.quote {margin-bottom:0.25em; margin-top:0.25em; + margin-left:1em; margin-right:1em; text-align:justify;}} +>>> + +\<quote noindent config\><<< +\ConfigureEnv{quote} + {}{} + {\IgnorePar\EndP\HCode{<div class="quote">}\IgnoreIndent} + {\IgnorePar\EndP\HCode{</div>}\ShowPar\ShowIndent} +\Css{.quote {margin-bottom:0.25em; margin-top:0.25em; + margin-left:1em; margin-right:1em; text-align:justify;}} +>>> + + + +\<config book-report-article\><<< +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} +>>> + + + + + +\<config book-report-article\><<< +|<article,report,book|> + +>>> + + + + + + +%%%%%%%%%%%%%%%%%%% +\section{babel.sty} +%%%%%%%%%%%%%%%%%%% + + + + + +\<configure html-speech babel\><<< +|<babel macros|> +|<babel char set|> +|<babel accents|> +|<u mlaut|> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Character Set} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<babel char set\><<< +\def\a:temp#1#2#3{% + \ifOption{charset=#2}{\def\a:charset{charset=#2}}{}% + \def\:tempa{#1}\ifx \languagename\:tempa + \def\A:charset{#2}\ifx \A:charset\empty\else + \def\A:charset{charset=#2}% + \fi + \if !#3!\else + \Configure{@HTML}{% + \iflanguage{#1}{lang="#3" }{}% + } + \fi + \fi} +\a:temp{afrikaans}{iso-8859-1}{af} +\a:temp{arabic}{iso-8859-6}{ar} +\a:temp{austrian}{iso-8859-1}{ge} +\a:temp{brazilian}{iso-8859-1}{pt} +\a:temp{brazil}{iso-8859-1}{pt} +\a:temp{catalan}{iso-8859-1}{ca} +\a:temp{croatian}{iso-8859-2}{hr} +\a:temp{czech}{iso-8859-2}{cs} +\a:temp{danish}{iso-8859-1}{da} +\a:temp{dutch}{iso-8859-1}{nl} +\a:temp{esperanto}{iso-8859-3}{eo} +\a:temp{estonian}{iso-8859-5}{et} +\a:temp{finnish}{iso-8859-1}{fi} +\a:temp{francais}{iso-8859-1}{fr} +\a:temp{frenchb}{iso-8859-1}{fr} +\a:temp{french}{iso-8859-1}{fr} +\a:temp{galician}{iso-8859-1}{gl} +\a:temp{germanb}{iso-8859-1}{de} +\a:temp{german}{iso-8859-1}{de} +\a:temp{greek}{iso-8859-7}{el} +\a:temp{hebrew}{iso-8859-8}{he} +\a:temp{hungarian}{iso-8859-2}{hu} +\a:temp{ngerman}{iso-8859-1}{de} +\a:temp{norsk}{iso-8859-1}{no} +\a:temp{nynorsk}{iso-8859-1}{no} +\a:temp{polish}{iso-8859-2}{pl} +\a:temp{polski}{iso-8859-2}{pl} +\a:temp{polutonikogreek}{iso-8859-7}{el} +\a:temp{portuges}{iso-8859-1}{pt} +\a:temp{portuguese}{iso-8859-1}{pt} +\a:temp{romanian}{iso-8859-2}{ro} +\a:temp{scottish}{iso-8859-1}{gd} +\a:temp{slovak}{iso-8859-2}{sk} +\a:temp{slovene}{iso-8859-2}{sl} +\a:temp{spanish}{iso-8859-1}{es} +\a:temp{swedish}{iso-8859-1}{sv} +\a:temp{turkish}{iso-8859-9}{tr} +\a:temp{ukrainian}{iso-8859-5}{uk} +\a:temp{uppersorbian}{iso-8859-2}{} +\a:temp{welsh}{iso-8859-1}{cy} +|<set babel charset|> +>>> + + + + + + + +\<configure html-speech german\><<< +|<quotedblbase|> +>>> + +\<configure html-speech ngerman\><<< +|<quotedblbase|> +>>> + + + + + +\<quotedblbase\><<< +\Configure{quotedblbase}{\leavevmode\ht:special{t4ht@+&{35}8222{59}}x} +\Configure{quotesinglbase}{\leavevmode\ht:special{t4ht@+&{35}8218{59}}x} +>>> + + +% \HCode{&}\HChar{-35}\HCode{8222;}} + +\<configure html-speech austrian\><<< +\def\A:charset{charset=iso-8859-1} +>>> +\<configure html-speech catalan\><<< +\def\A:charset{charset=iso-8859-1} +>>> + +\<configure html-speech croatian\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + + +\<configure html-speech latin2\><<< +\def\A:charset{charset=iso-8859-2} +>>> + + + + +\<configure html-speech czech\><<< +\def\A:charset{charset=iso-8859-2} +>>> +\<configure html-speech danish\><<< +\def\A:charset{charset=iso-8859-1} +>>> +\<configure html-speech dutch\><<< +\def\A:charset{charset=iso-8859-1} +>>> +\<configure html-speech english\><<< +\def\A:charset{charset=iso-8859-1} +>>> +\<configure html-speech esperant\><<< +\def\A:charset{charset=iso-8859-3} +>>> +\<configure html-speech estonian\><<< +\def\A:charset{charset=iso-8859-5} +>>> +\<configure html-speech finnish\><<< +\def\A:charset{charset=iso-8859-1} +>>> + +\<configure html-speech francais\><<< +\def\A:charset{charset=iso-8859-1} +>>> + + +\<configure html-speech frenchb\><<< +\def\A:charset{charset=iso-8859-1} +\Configure{@TITLE}{\Configure{frenchb-thinspace}{}{}} +>>> + + + +\<configure html-speech frenchb\><<< +\Configure{system-nbsp} + {\ht:special{t4ht@[unhskip}} + {\ht:special{t4ht@]unhskip}} +>>> + +\<configure html-speech frenchb\><<< +\ifx \tmp:bx\:UnDef \csname newbox\endcsname \tmp:bx \fi +\Configure{frenchb-nbsp} + {\ht:special{t4ht@?unhskip}\HCode{<span class="frenchb-nbsp">}% + \HCode{ }\setbox\tmp:bx=\hbox\bgroup} + {\egroup \HCode{</span>}} +\Css{.frenchb-nbsp{font-size:75\%;}} +>>> + + +\<configure html-speech frenchb\><<< +\Configure{frenchb-thinspace} + {\ht:special{t4ht@?unhskip}\HCode{<span class="frenchb-thinspace">}% + \HCode{ }\setbox\tmp:bx=\hbox\bgroup} + {\egroup \HCode{</span>}} +\Css{.frenchb-thinspace{font-size:75\%;}} +>>> + + + + +\<configure html-speech galician\><<< +\def\A:charset{charset=iso-8859-1} +>>> +\<configure html-speech germanb\><<< +\def\A:charset{charset=iso-8859-1} +>>> + +\<configure html-speech greek\><<< +\def\A:charset{charset=iso-8859-7} +\ifOption{charset=iso-8859-7} + {|<greek ldf iso-8859-7|>} + {\Log:Note{for iso-8859-7 accents + use the command line option `charset=iso-8859-7'}} +\ifOption{sgreek} + {\:CheckOption{new-accents} \if:Option \else + |<greek ldf sgreek|> + \fi} + {\Log:Note{for Sgreek font + use the command line option `sgreek'}} +\ifOption{oldgreek} + {\:CheckOption{new-accents} \if:Option \else + |<greek ldf Greek Old Face|> + \fi} + {\Log:Note{for Greek Old Face font + use the command line option `oldgreek'}} +>>> + + + +\<greek ldf sgreek\><<< +\def\A:charset{charset=iso-8859-1} +\Configure{htf}{254}{+}{<font \Hnewline + face="}{}{}{}{}{Sgreek">}{</font>} +\Configure{htf}{252}{+}{<font \Hnewline + face="}{}{}{}{}{Sgreek" class="small-caps">}{</font>} +\Configure{htf-css}{252}{.small-caps{font-variant: small-caps; }} +\Configure{accents} + {\ht:special{t4ht@+\string&{35}x#2{59}}x} + {\expandafter \ifx \csname \@curr@enc :#1\endcsname\relax + \Picture+{ \a:@Picture{#1}}#2{#3}\EndPicture + \else + \csname \@curr@enc :#1\endcsname {#3}% + \fi + } +\def\LGR:acute#1{% + \LGR:gobble\ifx #1\i \HChar{237}% + \else #1\HCode{<font face="Sgreek">/</font>}\fi } +\def\LGR:grave#1{% + \LGR:gobble\ifx #1\i \HChar{236}% + \else #1\HCode{<font face="Sgreek">\string\</font>}\fi} +\def\LGR:circ#1{% + \LGR:gobble\ifx #1\i \HChar{238}% + \else #1\HCode{<font face="Sgreek">=</font>}\fi} +\def\LGR:tilde#1{#1\HCode{<font face="Sgreek">@</font>}} +\def\LGR:uml#1{% + \LGR:gobble\ifx #1\i \HChar{239}% + \else #1\HCode{<font face="Sgreek">+</font>}\fi} +\def\LGR:gobble#1#2#3{#1} +>>> + + +The accented \''\i' arrives in the form of \''\@use@text@encoding +\@curr@enc \i'. + + + +\<greek ldf Greek Old Face\><<< +\def\A:charset{charset=iso-8859-1} +\Configure{htf}{254}{+}{<font \Hnewline + face="}{}{}{}{}{Greek Old Face">}{</font>} +\Configure{htf}{252}{+}{<font \Hnewline + face="}{}{}{}{}{Greek Old Face" class="small-caps">}{</font>} +\Configure{htf-css}{252}{.small-caps{font-variant: small-caps; }} +\Configure{accents} + {\ht:special{t4ht@+\string&{35}x#2{59}}x} + {\expandafter \ifx \csname \@curr@enc :#1\endcsname\relax + \Picture+{ \a:@Picture{#1}}#2{#3}\EndPicture + \else + \csname \@curr@enc :#1\endcsname {#3}% + \fi + } +\def\LGR:acute#1{% + \LGR:gobble\ifx #1\i \HChar{237}% + \else + \edef\:temp{\:gobbleII#1\empty\empty}% + \LGR:ch{i}{133}\LGR:ch{w}{232}\LGR:ch{u}{218}\LGR:ch{o}{210}% + \LGR:ch{h}{187}\LGR:ch{a}{163}\LGR:ch{e}{154}% + \ifx \:temp\empty\else #1\HChar{-180}\fi + \fi } +\def\LGR:grave#1{% + \LGR:gobble\ifx #1\i \HChar{236}% + \else + \edef\:temp{\:gobbleII#1\empty\empty}% + \LGR:ch{i}{136}\LGR:ch{235}{232}\LGR:ch{u}{221}\LGR:ch{o}{213}% + \LGR:ch{h}{190}\LGR:ch{a}{166}\LGR:ch{e}{157}% + \ifx \:temp\empty\else #1`\fi + \fi } +\def\LGR:circ#1{% + \LGR:gobble\ifx #1\i \HChar{238}% + \else + \edef\:temp{\:gobbleII#1\empty\empty}% + \LGR:ch{i}{139}\LGR:ch{w}{238}\LGR:ch{u}{224}\LGR:ch{o}{253}% + \LGR:ch{h}{193}\LGR:ch{a}{169}\LGR:ch{e}{252}% + \ifx \:temp\empty\else #1\string^\fi + \fi} +\def\LGR:tilde#1{#1} +\def\LGR:uml#1{% + \LGR:gobble\ifx #1\i \HChar{239}% + \else + \edef\:temp{\:gobbleII#1\empty\empty}% + \LGR:ch{u}{227}\LGR:ch{i}{142}% + \ifx \:temp\empty\else #1\HChar{168}\fi + \fi} +\def\LGR:gobble#1#2#3{#1} +\def\LGR:ch#1#2{\def\:tempa{#1}\ifx \:temp\:tempa + \HCode{<font face="Greek Old Face">}\HChar{#2}\HCode{</font>}% + \let\:temp=\empty \fi } +>>> + + + + + + + + + +\<configure html-speech hebrew\><<< +\def\A:charset{charset=iso-8859-8} +>>> + +\<configure html-speech ngermanb\><<< +\def\A:charset{charset=iso-8859-1} +>>> +\<configure html-speech norsk\><<< +\def\A:charset{charset=iso-8859-1} +>>> +\<configure html-speech polish\><<< +\def\A:charset{charset=iso-8859-2} +>>> +\<configure html-speech polski\><<< +\def\A:charset{charset=iso-8859-2} +>>> +\<configure html-speech portuges\><<< +\def\A:charset{charset=iso-8859-1} +>>> + + + +\<configure html-speech scottish\><<< +\def\A:charset{charset=iso-8859-1} +>>> + +\<configure html-speech slovak\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + + +\<configure html-speech slovene\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + +\<configure html-speech spanish\><<< +\def\A:charset{charset=iso-8859-1} +|<spanish configs|> +>>> + + +\<spanish configs\><<< +\Configure{spanish"a} + {\HCode{<sup><u>a</u></sup>}} +\Configure{spanish"o} + {\HCode{<sup><u>o</u></sup>}} +\Configure{@TITLE}{% + \Configure{spanish"a}{\HCode{&\#170;}}% + \Configure{spanish"o}{\HCode{&\#176;}}% +} +>>> + + +\<configure html-speech swedish\><<< +\def\A:charset{charset=iso-8859-1} +>>> +\<configure html-speech turkish\><<< +\def\A:charset{charset=iso-8859-9} +>>> +\<configure html-speech ukraineb\><<< +\def\A:charset{charset=iso-8859-5} +>>> +\<configure html-speech usorbian\><<< +\def\A:charset{charset=iso-8859-2} +>>> +\<configure html-speech welsh\><<< +\def\A:charset{charset=iso-8859-1} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{right to left babel} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +tex4ht.sty indert Rregion and Lregion end hooks within +\verb+\beginL/R+ and \verb+\endL/R+, mainly to void the +inverse produced by the elatex compiler. + +\<configure html-speech rlbabel\><<< +\Configure{TITLE+}{\HCode{\jobname}} +\Configure{Rregion} {\beginL} {\endL} +\Configure{!P}{\a:LRdir} +\Configure{!BODY}{\a:LRdir} +\Configure{LRdir}{ |<dir ltr/rtl|> } +>>> + +\<dir ltr/rtl\><<< +dir="\if@rl rtl\else ltr\fi" +>>> + + +\<configure html-speech rlbabel\><<< +\Configure{moreL} + {\ifvmode \let\end:moreRL=\empty + \else\HCode{<span dir="ltr" >}\def\end:moreRL{\HCode{</span>}}\fi} + {\end:moreRL} +\Configure{moreR} + {\ifvmode \let\end:moreRL=\empty + \else\HCode{<span dir="rtl" >}\def\end:moreRL{\HCode{</span>}}\fi} + {\end:moreRL} +>>> + + +\<configure html-speech-math rlbabel\><<< +\:CheckOption{pic-m} \if:Option +\else + \Configure{$} + {\HCode{<span |<dir ltr/rtl|>>}} + {\HCode{</span>}}{} +\fi +>>> + + + +% \def\HCode{<#1>}{\HCode{<#1 |<dir ltr/rtl|>>}} + +\<configure html-speech-math rlbabel\><<< +\Configure{[]} + {\bgroup + \protect\nested:math + \PicDisplay + $$\everymath{}\everydisplay{}} + {$$\EndPicDisplay \egroup + |<try inline par|>\if@rl \beginL\fi \beginR } +>>> + +Test data + +\begin{verbatim} +\def\providehyphenmins#1#2{} +\documentclass[english,hebrew]{article} +\usepackage[T1]{fontenc} + +\makeatletter +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands. +%% Bold symbol macro for standard LaTeX users +\newcommand{\boldsymbol}[1]{\mbox{\boldmath $#1$}} + + +\usepackage{babel} +\makeatother +\begin{document} +ôéñ÷ä áòáøéú + \[F=ma\quad(\textrm{\L{Newton's 2nd Law}\R{áòáøéú }})\] + \[F=ma\quad(\mbox{Newton's 2nd Law áòáøéú} )\] + \R{\[F=ma\quad(\mbox{Newton's 2nd Law áòáøéú} )\]} +åòåã ÷öú òáøéú +\end{document} + +\end{verbatim} + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Scientific Word} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +% When \verb+\BOXEDSPECIAL+ is defined we don't want the +% following configuration, because the frame may enclose +% a graphics-like file that we might not want to translate. +% +% \<configure html-speech tcilatex\><<< +% \ifx \BOXEDSPECIAL\:UnDef +% \Configure{BOXTHEFRAME} +% {\Picture+[PICT]{}} {\EndPicture} +% \fi +% >>> + +\<configure html-speech tcilatex\><<< +\Configure{GRAPHICSPS} + {\Picture+[PICT]{}} {\EndPicture} +\Configure{GRAPHICSHP} + {\Picture+[PICT]{}} {\EndPicture} +\Configure{DFRAME} + {\EndP \IgnorePar\HCode{<div class="FRAME">}} + {\HCode{</div>}\par\ShowPar} +\Configure{FFRAME} + {\EndP \IgnorePar\HCode{<div class="FRAME">}} + {\HCode{</div>}\par\ShowPar} +\Configure{IFRAME} + {\ifvmode \IgnorePar \fi} {} +\Css{div.FRAME {text-align:center;}} +\expandafter\ifx \csname @TCItagstar\endcsname\relax + |<tcilatex 2.5|> +\else + |<tcilatex 3.5|> +\fi +>>> + + + +\<configure html-speech-math tcilatex\><<< +\expandafter\ifx \csname @TCItagstar\endcsname\relax + |<tcilatex 2.5 math|> +\else + |<tcilatex 3.5 math|> + \ifx \@msidraft\:Undef + |<tcilatex 3.5 not 4.0 math|> +\fi \fi +>>> + +\<tcilatex 3.5 not 4.0 math\><<< +\Configure{dfrac} + {\Picture+{ align="middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{tfrac} + {\Picture+{ align="middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{binom} + {\Picture+{ align="middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{tbinom} + {\Picture+{ align="middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{dbinom} + {\Picture+{ align="middle"}\bgroup} {} + {} {\egroup\EndPicture} +>>> + +\<tcilatex 3.5 math\><<< +\Configure{QATOP} + {\Picture+{ align="middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{QDATOP} + {\Picture+{ align="middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{QTATOP} + {\Picture+{ align="middle"}\bgroup} {} + {} {\egroup\EndPicture} +>>> + + + + + + + +\<configure html-speech seslideb\><<< +\ConfigureEnv{center} + {\IgnorePar \par \EndP \HCode{<div class="center"\Hnewline>}} + {\ifvmode\IgnorePar\fi\EndP\HCode{</div>}} + {} {} +{\Configure{Needs}{Font\string_Size: #1}% + \expandafter\Needs\expandafter{\csname normalsize@fsize\endcsname}} +>>> + +\<configure html-speech seslideb\><<< +\ConfigureToc{swSlide} + {} {\relax } {} { } +\:CheckOption{0} + \if:Option \else \:CheckOption{1} \fi +\if:Option + \:CheckOption{1} \if:Option + \CutAt{swSlide} + \Configure{crosslinks}{}{}{}{}{}{}{}{} + \fi + |<seslideb toc|> + |<seslideb page break|> +\else + |<handle my missing sw fonts|> + \Log:Note{pagination may be obtained + through the option `0' or `1', at locations marked with + \noexpand\csname PageBreak\string\endcsname} +\fi +>>> + +\<handle my missing sw fonts\><<< +\Configure{swSlide}{}{}{\bgroup\bf}{\egroup} +>>> + + + +\<seslideb toc\><<< +\def\:temp{% + \ifOption{1}{\par\IgnorePar\EndP\HCode{<hr />}\par}{} + \HAssign\TocN=1 + \def\swTitle{\gHAdvance\TocN by 1 \TocN}\:TableOfContents[swSlide] + \let\swTitle=\relax + \ifOption{0}{\par\IgnorePar\EndP\HCode{<hr />}\par}{} + \let\swSlide=\o:swSlide: \let\o:swSlide:=\empty \swSlide} +\HLet\swSlide=\:temp +>>> + + +\<seslideb page break\><<< +\Configure{swSlide} + {\gHAdvance\swSlideN by 1 \Link{}{s-\swSlideN}\EndLink } + {\rightline{ + {\HAdvance\swSlideN by -1 \Link{s-\swSlideN}{}\swSlideN\EndLink} + \Link[\jobname.html]{}{}\HCode{<>}\EndLink{} + {\HAdvance\swSlideN by 1 + \ifTag{)Qs-\swSlideN}{\Link{s-\swSlideN}{}\swSlideN\EndLink}{}} + } + \ifOption{0}{\par \IgnorePar\EndP\HCode{<hr />}\par}{} + } + {\IgnorePar\bgroup \bf } + {\egroup \ShowPar\IgnoreIndent\par} +\HAssign\swSlideN=1 +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{minitoc} + +\<configure html-speech minitoc\><<< + |<minitoc.sty Configure 4.0t|> +>>> + +\<minitoc.sty Configure 4.0t\><<< +\Configure{minitoc} + {\Configure{tableofcontents} + {\HCode{<div class="minitoc"><hr\xml:empty>}\IgnorePar}{} + {\IgnorePar\HCode{<hr\xml:empty></div>}\ShowPar} + {\HCode{<br\xml:empty>}}{}} {} + {\HCode{<div class="minitoc-\TocOption">}} {\HCode{</div>}} +\Configure{minilof} + {\Configure{tableofcontents} + {\HCode{<div class="minilof"><hr\xml:empty>}\IgnorePar}{} + {\IgnorePar\HCode{<hr\xml:empty></div>}\ShowPar} + {\HCode{<br\xml:empty>}}{}} {} + {\HCode{<div class="minilof-\TocOption">}} {\HCode{</div>}} +\Configure{minilot} + {\Configure{tableofcontents} + {\HCode{<div class="minilot"><hr\xml:empty>}\IgnorePar}{} + {\IgnorePar\HCode{<hr\xml:empty></div>}\ShowPar} + {\HCode{<br\xml:empty>}}{}} {} + {\HCode{<div class="minilot-\TocOption">}} {\HCode{</div>}} +\Css{.minitoc-l,.minilot-l,.minilof-l + {text-align:left;margin-left:3em;}} +\Css{.minitoc-c,.minilot-c,.minilof-c + {text-align:center;margin-left:3em;}} +\Css{.minitoc-r,.minilot-r,.minilof-r + {text-align:right;margin-left:3em;}} +\Css{DIV.minitoc,DIV.minilot,DIV.minilof{margin-left:3em;}} +\Css{.minitoc .sectionToc { font-weight:bold;} } +>>> + +Only one of the following is needed for a given document!!! + +\<minitoc.sty Configure 4.0t\><<< +\Configure{parttoc}{}{} + {\HCode{<div class="parttoc-\TocOption">}} {\HCode{</div>}} +\Configure{partlof}{}{} + {\HCode{<div class="partlof-\TocOption">}} {\HCode{</div>}} +\Configure{partlot}{}{} + {\HCode{<div class="partlot-\TocOption">}} {\HCode{</div>}} +\Css{.parttoc-l,.partlof-l,.partlot-l{text-align:left;}} +\Css{.parttoc-c,.partlof-c,.partlot-c{text-align:center;}} +\Css{.parttoc-r,.partlof-r,.partlot-r{text-align:right;}} +>>> +\<minitoc.sty Configure 4.0t\><<< +\Configure{secttoc}{}{} + {\HCode{<div class="secttoc-\TocOption">}} {\HCode{</div>}} +\Configure{sectlof}{}{} + {\HCode{<div class="sectlof-\TocOption">}} {\HCode{</div>}} +\Configure{sectlot}{}{} + {\HCode{<div class="sectlot-\TocOption">}} {\HCode{</div>}} +\Css{.secttoc-l,.sectlof-l,.sectlot-l{text-align:left;}} +\Css{.secttoc-c,.sectlof-c,.sectlot-c{text-align:center;}} +\Css{.secttoc-r,.sectlof-r,.sectlot-r{text-align:right;}} +>>> + +%%%%%%%%%%%%%%%%%%% +\section{alltt.sty} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech alltt\><<< +\ConfigureEnv{alltt} + {\IgnorePar\EndP\HCode{<div class="alltt">}} + {\IgnorePar\EndP\HCode{</div>}} {}{} +\Css{.alltt P { margin-bottom : 0em; margin-top : 0em; }} +\Css{.alltt { margin-bottom : 1em; margin-top : 1em; }} +>>> + +%%%%%%%%%%%%%%%%%%% +\section{url.sty} +%%%%%%%%%%%%%%%%%%% + +\<configure html-speech url\><<< +\:CheckOption{url-il2-pl} \if:Option +\else \:CheckOption{url-enc} \fi +\if:Option + \Configure{string-encoder}{url-encoder} +% \:CheckOption{url-il2-pl} \if:Option + |<il2-pl.tcx url encoder|> +% \else + |<default url encoder WAIT|> +% \Log:Note{for il2-pl url encoding, +% use the command line option 'url-il2-pl'} +% \fi + \Configure{url}% + {|<:temp = url encoded string|>% + \Link[\noexpand\the\tmp:toks \space + class="url"]{}{}{\let\UrlBigBreaks\empty + \let\UrlBreaks\empty #1}\EndLink} + |<url encoded string utilities|> +\else + \Log:Note{for URL encoding within href + use the command line option `url-enc'} + \Configure{url}% + {\tmp:toks{#1}\Link[\noexpand\the\tmp:toks\space + class="url"]{}{}{\let\UrlBigBreaks\empty + \let\UrlBreaks\empty #1}\EndLink} +\fi +|<path config|> +>>> + +\<:temp = url encoded string\><<< +\tmp:toks={}\set:spaces#1|<par del|>% +\edef\:temp{\tmp:toks{\csname url-encoder\expandafter\endcsname + \the\tmp:toks |<par del|>}}\:temp +>>> + +\<url encoded string utilities\><<< +\def\set:spaces{\futurelet\:temp\set:spacesoo} +\def\set:spacesoo{% + \expandafter\ifx \space\:temp + \tmp:toks\expandafter{\the\tmp:toks{ }}% + \fi + \set:spaceso +} +\def\set:spaceso#1#2|<par del|>{% + \tmp:toks\expandafter{\the\tmp:toks #1}% + \if :#2:\else \set:spaces#2|<par del|>\fi +} +>>> + +\<default url encoder\><<< +\Configure{url-encoder} + {%}{%25} + {&}{%26} + {'}{%27} + {<}{%3C} + {>}{%3E} + {_}{_} + {^}{^} + {}{} +\Log:Note{current url encoding setting: \string\Configure{url-encoder}% + {\%}{\%25}% + {&}{\%26}% + {'}{\%27}% + {<}{\%3C}% + {>}{\%3E}% + {\string _}{\string _}% + {\string ^}{\string ^}% + {}{}} +>>> + + + + +\<il2-pl.tcx url encoder\><<< +\Configure{url-encoder} + {%}{%25} + {&}{%26} + {'}{%27} + {<}{%3C} + {>}{%3E} + {_}{_} + {^}{^} + {±}{ą} + {æ}{ć} + {ê}{ę} + {³}{ł} + {ó}{ó} + {ñ}{ń} + {¶}{ś} + {¼}{ź} + {¿}{ż} + {¡}{Ą} + {Æ}{Ć} + {Ê}{Ę} + {£}{Ł} + {Ó}{Ó} + {Ñ}{Ń} + {¦}{Ś} + {¬}{Ź} + {¯}{Ż} + {}{} +>>> + + +\Link[http://www.faqs.org/rfcs/rfc2396.html]{}{}http://www.faqs.org/rfcs/rfc2396.html\EndLink + +See issues in: + +\begin{verbatim} +\documentclass{article} + \usepackage{url} +\begin{document} + +\url{a%b c&d} + +\url{a%25b+c&d} + +\end{document} +\end{verbatim} + +\<\><<< +\expandafter\ifx\csname Url@OT1encSpecials\endcsname\relax + |<url.sty|> +\else + |<url-2004.sty|> +\fi +>>> + +\<url-2004.styNO\><<< + +>>> + +\<url.styNO\><<< +\Configure{url}{\Link[#1 class="url"]{}{}{\let\UrlBigBreaks\empty + \let\UrlBreaks\empty #1}\EndLink} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Path.sty} +%%%%%%%%%%%%%%%%%% + +\<path config\><<< +\Configure{path} + {\HCode{<span class="path">}\bgroup + \Configure{obeylines}{}{}{}% + } + {\egroup\HCode{</span>}} +>>> + +\<configure html-speech path\><<< +|<path config|> +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%% +\section{fontmath} +%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure html-speech latex\><<< +\:CheckOption{fonts} \if:Option + \Configure{textbf}{\Protect\HCode{<span class="textbf">}} + {\Protect\HCode{</span>}} + \Configure{textit}{\Protect\HCode{<span class="textit">}} + {\Protect\HCode{</span>}} + \Configure{textrm}{\Protect\HCode{<span class="textrm">}} + {\Protect\HCode{</span>}} + \Configure{textup}{\Protect\HCode{<span class="textup">}} + {\Protect\HCode{</span>}} + \Configure{textsc}{\Protect\HCode{<span class="textsc">}} + {\Protect\HCode{</span>}} + \Configure{textsf}{\Protect\HCode{<span class="textsf">}} + {\Protect\HCode{</span>}} + \Configure{textsl}{\Protect\HCode{<span class="textsl">}} + {\Protect\HCode{</span>}} + \Configure{texttt}{\Protect\HCode{<span class="texttt">}} + {\Protect\HCode{</span>}} + \Configure{emph}{\Protect\HCode{<span class="emph">}} + {\Protect\HCode{</span>}} + \Css{span.textbf { font-weight: bold; }} + \Css{span.textit { font-style: italic; }} + \Css{span.textrm { font-family: serif; }} + \Css{span.textsc { font-variant: small-caps; }} + \Css{span.textsf { font-family: sans-serif; }} + \Css{span.texttt { font-family: monospace; }} +\else + \Log:Note{for tracing of latex font commands, + use the command line option `fonts'} +\fi +>>> + +\<configure html-speech-math fontmath\><<< +\:CheckOption{fonts} \if:Option + \Configure{mathit}{\Protect\HCode{<span class="mathit">}} + {\Protect\HCode{</span>}} + \Configure{mathbf}{\Protect\HCode{<span class="mathbf">}} + {\Protect\HCode{</span>}} + \Configure{mathtt}{\Protect\HCode{<span class="mathtt">}} + {\Protect\HCode{</span>}} + \Configure{mathsf}{\Protect\HCode{<span class="mathsf">}} + {\Protect\HCode{</span>}} + \Configure{mathrm}{\Protect\HCode{<span class="mathrm">}} + {\Protect\HCode{</span>}} +\fi +>>> + + + + + + + + + +\<configure html-speech-math amsfonts\><<< +\:CheckOption{fonts} \if:Option + \Configure{mathbb}{\Protect\HCode{<span class="mathbb">}} + {\Protect\HCode{</span>}} + \Configure{mathfrak}{\Protect\HCode{<span class="mathfrak">}} + {\Protect\HCode{</span>}} +\fi +>>> + + + + + + +\subsection{1: Large Operators} + +\begin{verbatim} +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 +\end{verbatim} + + + +\<plain tex classes\><<< +\Configure{MathClass}{1}{}{}{}{ + \mathchar"1360 + \mathchar"1357 + \mathchar"1356 + \mathchar"1355 + \mathchar"1354 + \mathchar"1353 + \mathchar"1352 + \mathchar"1351 + \mathchar"1350 + \mathchar"134E + \mathchar"134C + \mathchar"134A + \mathchar"1348 + \mathchar"1346 + \mathchar"1273 +} +>>> +\subsection{2: Binary Operations} + +\begin{verbatim} +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\-="2200 +\end{verbatim} + +\<plain tex classes\><<< +\Configure{MathClass}{2}{}{}{}{ +*-+/ +\mathchar"212F +\mathchar"212E +\mathchar"2234 +\mathchar"2235 +\mathchar"225E +\mathchar"225F +\mathchar"225C +\mathchar"225B +\mathchar"227A +\mathchar"2279 +\mathchar"2275 +\mathchar"2274 +\mathchar"225D +\mathchar"2271 +\mathchar"2205 +\mathchar"220F +\mathchar"226F +\mathchar"2204 +\mathchar"220C +\mathchar"220B +\mathchar"220A +\mathchar"2209 +\mathchar"2208 +\mathchar"2207 +\mathchar"2206 +\mathchar"220E +\mathchar"220D +\mathchar"226E +\mathchar"2201 +\mathchar"2203 +\mathchar"2202 +\mathchar"213F +} +>>> +\subsection{3: Relational Operations} + +The catcode is needed because 303A is \verb':'. + +\<plain tex classes\><<< +\Configure{MathClass}{3}{}{}{}{ + \mathchar"3128 + \mathchar"3129 + \mathchar"312A + \mathchar"312B + \mathchar"315E + \mathchar"315F + \mathchar"3210 + \mathchar"3211 + \mathchar"3212 + \mathchar"3213 + \mathchar"3214 + \mathchar"3215 + \mathchar"3216 + \mathchar"3217 + \mathchar"3218 + \mathchar"3219 + \mathchar"321A + \mathchar"321B + \mathchar"321C + \mathchar"321D + \mathchar"321E + \mathchar"321F + \mathchar"3220 + \mathchar"3221 + \mathchar"3224 + \mathchar"3227 + \mathchar"3232 + \mathchar"3233 + \mathchar"3236 + \mathchar"3237 + \mathchar"323F + :=>< + \mathchar"322F + \mathchar"3276 + \mathchar"3277 + \mathchar"326B + \mathchar"326A + \mathchar"3261 + \mathchar"3260 + \mathchar"3225 + \mathchar"3226 + \mathchar"322D + \mathchar"322E + \mathchar"322C + \mathchar"3228 + \mathchar"3229 +} +>>> + + + +\begin{verbatim} +\mathcode`\>="313E +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\:="303A +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\set="321A +\mathchardef\supseteq="3213 +\mathchardef\seteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\end{verbatim} +\subsection{4/5: Delimiters} + +\begin{verbatim} +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\[="405B +\mathcode`\]="505D +\mathcode`\{="4266 +\mathcode`\}="5267 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\def\lmoustache{\delimiter"437A340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"537B341 } % top from ), bottom from ( +\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips +\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } +\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads +\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert How should these be treated? +\def\vert{\delimiter"26A30C } " " " " " +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\end{verbatim} + +The comamnds \verb'\Configure{MathClass}{4}...' +and \verb'\Configure{MathClass}{5}...' +are for unmatched delimiters, and the comamnd +\verb'\Configure{MathDelimiters}{(}{)}' is for matched ones. + + +\<plain tex classes\><<< +\Configure{MathClass}{4}{}{}{}{} +\Configure{MathDelimiters}{(}{)} +\Configure{MathDelimiters}{[}{]} +\Configure{MathDelimiters}{\mathchar"4262}{\mathchar"5263} +\Configure{MathDelimiters}{\mathchar"4264}{\mathchar"5265} +\Configure{MathDelimiters}{\mathchar"4266}{\mathchar"5267} +\Configure{MathDelimiters}{\mathchar"4268}{\mathchar"5269} +\Configure{MathDelimiters}{\mathchar"4300}{\mathchar"5301} +\Configure{MathDelimiters}{\mathchar"4302}{\mathchar"5303} +\Configure{MathDelimiters}{\mathchar"4304}{\mathchar"5305} +\Configure{MathDelimiters}{\mathchar"4306}{\mathchar"5307} +\Configure{MathDelimiters}{\mathchar"4308}{\mathchar"5309} +\Configure{MathDelimiters}{\mathchar"430A}{\mathchar"530B} +>>> + +\begin{verbatim} +\mathcode`\?="503F +\end{verbatim} + + +\subsection{6: Punctuation Marks} + +\begin{verbatim} +\mathchardef\ldotp="613A % ldot as a punctuation mark +\mathchardef\cdotp="6201 % cdot as a punctuation mark +\mathchardef\colon="603A % colon as a punctuation mark +\mathcode`\;="603B +\mathcode`\,="613B +\end{verbatim} + + + +\<plain tex classes\><<< +\Configure{MathClass}{6}{}{}{}{ +\mathchar"613A +\mathchar"6201 +\mathchar"603A +?; , +} +>>> + + +\subsection{Questions} + +\begin{verbatim} +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\end{verbatim} + + +\subsection{Type 4: Math Open} +latex.ltx, fontmath.ltx, plain.tex + + + +\section{fleqn.sty} + +\<configure html-speech-math fleqn\><<< +\Configure{equation} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{equation}><tr><td>}\IgnorePar + + } + {\IgnorePar\HCode{</td><td width="5\%">}} + {\end:TTT\IgnorePar\par} +>>> +\section{emulateapj.clo} + +\<configure html-speech emulateapj\><<< +\Configure{slugcomment} + {\HCode{<div class="slugcomment">}} + {\HCode{</div>}} +\Css{.slugcomment{text-align:center;font-size:85\%; + font-style: italic;}} +\Configure{subtitle}{\HCode{<div class="subtitle">}}{\HCode{</div>}} +\Configure{submitted}{}{\Tg<br\xml:empty>} +\Configure{title}{\HCode{<h1 class="title">}}{\HCode{</h1>}} +\Css{.title{text-align:center;}} +\Configure{author} + {\IgnorePar\EndP\HCode{<div class="author">}}{\HCode{</div>}} +\Css{div.author{text-align:center;}} +\Configure{affil}{\HCode{<div class="affil"><div>}}{\HCode{</div></div>}} +\Css{.affil{text-align:center;}} +\Css{.affil div{text-align:left; + margin-right:15pt;margin-left:15pt;}} +\Configure{keywords} + {\IgnorePar\EndP\HCode{<div class="keywords"><div>}} + {\HCode{</div></div>}} +\Css{.keywords{text-align:center;}} +\Css{.keywords div{text-align:left; margin-right:15pt;margin-left:30pt; + text-indent:-15pt;}} +\Configure{subjectheadings} + {\HCode{<div class="subjectheadings"><div>}}{\HCode{</div></div>}} +\Css{.subjectheadings{text-align:center;}} +\Css{.subjectheadings div{text-align:left; + margin-right:15pt;margin-left:15pt;}} + +\Css{.abstract {margin-right:15pt;margin-left:15pt;}} +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\@seccntformat{section}% + \thesection\HCode{</span>}\fi} +\Configure{section}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="sectionHead"\a:LRdir>} + \TitleMark{. \space}} + {\HCode{</h3>}\IgnoreIndent \par} +\ConfigureEnv{references} + {\IgnorePar\EndP\Tg<div class="references">} + {\IgnorePar\EndP\Tg</div>} {}{} +\Css{.references p { margin: 0.35em; text-indent:-2em;margin-left:2em;}} +>>> + +%%%%%%%%%%%%%%%%% +\section{vanilla} + +\<configure html-speech vanilla\><<< +|<32 amsppt, 32,4 vanilla|> +|<32,4 vanilla|> +|<config vanilla.sty 4.0t|> +>>> + + +\<32,4 vanilla\><<< +\Configure{matrix} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="matrix">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline valign="top">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +\Configure{align} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="align">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline valign="top">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +>>> +\<config vanilla.sty 4.0t\><<< +\Configure{heading} + {}{}{\IgnorePar\EndP\HCode{<h2 class="heading">}}{\HCode{</h2>}} +\ConfigureToc{heading} + {}{\HCode{<span class="heading">}}{}{\HCode{</span><br\xml:empty>}} +\Configure{subheading} + {}{}{\EndP\HCode{<h3 class="subheading">}}{.\HCode{</h3>}} +\ConfigureToc{subheading} + {}{\HCode{<span class="subheading">}}{}{\HCode{</span><br\xml:empty>}} +\Configure{demo} + {\IgnorePar\EndP\HCode{<div class="demo"><span class="demo">}} + {\HCode{</span>}} {\IgnorePar\EndP\HCode{</div>}} +>>> + + +\<config vanilla.sty 4.0t\><<< +\Configure{aligned} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="aligned">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline valign="top">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%% +\section{tugboat} +%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-speech tugboat\><<< +\Configure{head}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="headHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \EndNoFonts \IgnoreIndent \ShowPar \par} +\Configure{subhead}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h4 class="subheadHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h4>}\HtmlParOn \EndNoFonts \IgnoreIndent \ShowPar \par} +\Configure{subsubhead}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h5 class="subsubheadHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h5>}\HtmlParOn \EndNoFonts \IgnoreIndent \ShowPar \par} +>>> + + +\<configure html-speech tugboat\><<< +\Configure{figure} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="figure">}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +>>> + + +\<configure html-speech tugboat\><<< +\Configure{verbatim} + {{\everypar{}\leavevmode}\EndP + \HCode{<div class="verbatim\:ruled">}\par\ShowPar} + {{\everypar{}\leavevmode}\EndP \HCode{</div>}\par\ShowPar} +\Configure{verb} + {\HCode{<span class="verb">}} + {\HCode{</span>}} +\Css{div.verbatim p, div.verbatim-ruled p {margin:0.2em}} +\Css{div.verbatim-ruled { border-top: 1px solid black; + border-bottom: 1px solid black; }} +>>> + + +\<configure html-speech tugboat\><<< +\Configure{display-list} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="list"><!--cols: \the\@cols-->}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + {\HCode{<span class="listitem">}} + {\HCode{</span>}} +\Configure{inline-list} + {\HCode{<span class="list"><!--cols: \the\@cols-->}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}\par} + {\HCode{<span class="listitem">}} + {\HCode{</span>}} +\Css{div.list p span.listitem {text-indent:-3em; margin-right:1em;}} +\Css{div.list { margin-left:3em;}} +>>> + +\<configure html-speech tugboat\><<< +\Configure{rtitle} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<div class="rtitle">}\IgnorePar} + {\HCode{</div>}\ShowPar\par} +\Configure{title} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h2 class="title">}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{address} + {\ifx\@addressstyle\@inlinestyle + \HCode{<span class="address">}% + \else + \ifvmode \IgnorePar \fi \EndP + \HCode{<div class="address">}% + \fi } + {\ifx\@addressstyle\@inlinestyle + \HCode{</span>}% + \else + \ifvmode \IgnorePar \fi \EndP + \HCode{</div>}% + \fi } +\Configure{netaddress} + {\HCode{<span class="netaddress">}} + {\HCode{</span>}} +\Configure{author} + {\HCode{<span class="author">}} + {\HCode{</span>}} +\Configure{authorlist} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<div class="authorlist">}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP + \HCode{</div>}\IgnoreIndent\par\ShowPar} +\Css{div.authorlist {margin-left:2em;}} +|<tugboat cmn|> +>>> + +\<tugboat cmn\><<< +\Configure{signature} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="signature">}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\ShowPar\par} +\Css{div.signature p{ margin-top:0.3em; margin-bottom:0.3em;}} +\Css{div.signature { white-space:nowrap; margin-left:70\%; }} +\Configure{signaturemark} + {\HCode{<span class="signaturemark">} } + {\HCode{</span>}} +\Css{span.signaturemark {margin-top:1.5em;}} +>>> + + + +\<tugboat cmn\><<< +\Configure{issno} + {\hbox{\HCode{<span class="issno">}}} + {\hbox{\HCode{</span>}}} +\Configure{volyr} + {\hbox{\HCode{<span class="volyr">}}} + {\hbox{\HCode{</span>}}} +\Configure{volno} + {\hbox{\HCode{<span class="volno">}}} + {\hbox{\HCode{</span>}}} +>>> + +%%%%%%%%%%%%%%%%%%%%%% +\section{ltug boat/proc} +%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech ltugboat\><<< +|<quote noindent config|> +\ConfigureEnv{verbatim} + {\par}{|<try inline par|>}{}{} +\Configure{author} + {\hbox{\HCode{<span class="author">}}} + {\hbox{\HCode{<br /></span>}}} +\Configure{address} + {\hbox{\HCode{<span class="address">}}} + {\hbox{\HCode{<br /></span>}}} +\Configure{netaddress} + {\hbox{\HCode{<span class="netaddress">}}} + {\hbox{\HCode{<br /></span>}}} +\Configure{PersonalURL} + {\hbox{\HCode{<span class="PersonalURL">}}} + {\hbox{\HCode{<br /></span>}}} +\Configure{signaturemark} + {\hbox{\HCode{<span class="signaturemark">}}} + {\hbox{\HCode{</span> }}} +>>> + + +\<configure html-speech ltugboat\><<< +\Configure{makesignature} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="makesignature">}% + \bgroup \Configure{HtmlPar}{}{}{}{}% + \Configure{rightline}{}{}% + \IgnorePar + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{signature} + {\def\||{\HCode{<br />}}% + \Configure{HtmlPar} + {}{\HCode{<br />}} + {}{\HCode{}}% + } +\Css{.makesignature{margin-left:60\%; white-space: nowrap;}} +>>> + + + + +\<configure html-speech ltugboat\><<< +|<tug boat maketitle|> +\Configure{titlex} + {\HCode{<div class="titlex">}} + {\HCode{</div>}} +\Css{div.titlex p{margin-bottom:1em;}} +|<ltugboat congif|> +>>> + + +\<ltugboat congif\><<< +\Configure{sectitle} + {\ifvmode \IgnorePar\fi + \EndP \HCode{<div class="sectitle">}% + \SaveEndP\bgroup\everypar{}} + {\egroup\RecallEndP \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +>>> + + +\<configure html-speech ltugproc\><<< +|<tug proc maketitle|> +\ConfigureEnv{abstract} + {}{} {}{} +\Configure{abstract} + {\bgroup + \HCode{<div class="abstract">}\IgnoreIndent\par} + {\ifvmode\IgnorePar\fi \EndP\HCode{</div>}\egroup} +\Css{div.abstract {margin-left:1em; margin-right:1em; + text-align:left;}} +\Css{div.maketitle div.centerline {margin-top:1em;}} +>>> + +\<configure html-speech ltugproc\><<< +\Configure{abstractHead} + {\bgroup + \Configure{centerline}{}{} + \NoFonts + \ifvmode \IgnorePar\fi \EndP \HCode{<h3>}% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</h3>}% + \EndNoFonts \egroup} +>>> + + + + +%%%%%%%%%%%%%%%%% +\section{tex4ht} +%%%%%%%%%%%%%%%%% + +\<configure html-speech tex4ht\><<< +|<config tex4ht|> +|<title for hypertext page|> +|<tex4ht doctype|> +>>> + + +\<config tex4ht\><<< +\:CheckOption{NoFonts} \if:Option + \NoFonts +\else + \Log:Note{to ignore CSS font decoration, use the `NoFonts' + command line option} +\fi +>>> + + + +\<config tex4ht\><<< +\Configure{HVerbatim+}{\z@}{\:nbsp} +\:CheckOption{jpg} \if:Option + \Configure{Picture}{.jpg} +\else + \Log:Note{for jpg bitmaps, use the `jpg' + command line option} +\fi +\:CheckOption{gif} \if:Option + \Configure{Picture}{.gif} +\else + \Log:Note{for gif bitmaps, use the `gif' + command line option} +\fi +>>> + + + + + +\<configure html-speech tex4ht\><<< +|<tex4ht HTML|> +>>> + +\<configure html-speech tex4ht\><<< +\newif\ifHCond +|<global HtmlPar|> +\Css{p.noindent { text-indent: 0em }} +\Css{p.nopar { text-indent: 0em; }} +\Css{p.indent{ text-indent: 1.5em }} +\NewConfigure{!P}[1]{\expandafter\concat:config\csname a:!P\endcsname{#1}} +\expandafter\let\csname a:!P\endcsname|=\relax +\Configure{!P}{} +>>> + +\<global HtmlPar\><<< +\Configure{HtmlPar} + {\EndP\HCode{|<show input line no|><p \csname a:!P\endcsname + class="no\ifHCond par\else indent\fi">}} + {\EndP\HCode{|<show input line no|><p \csname a:!P\endcsname + class="\ifdim \parindent=\z@ no\fi indent">}} + {\:xhtml{\Tg</p>}} + {\:xhtml{\Tg</p>}}% +>>> + +\<configure html-speech tex4ht\><<< +\NewConfigure{!BODY}[1]{\expandafter\concat:config + \csname a:!BODY\endcsname{#1}} +\expandafter\let\csname a:!BODY\endcsname|=\relax +\Configure{!BODY}{} +>>> + +\<configure html-speech tex4ht\><<< +\NewConfigure{LRdir}[1]{\concat:config\a:LRdir{#1}} +\let\a:LRdir|=\relax +\Configure{LRdir}{} +>>> + + +\<configure html-speech tex4ht\><<< + +\Css{@media print {div.crosslinks {visibility:hidden;}}} + +\Configure{halignTR} + {\HCode{ valign="baseline"}} +\Configure{halignTBL} +% % {t}{\HCode{ valign="top"}} +% % {b}{\HCode{ valign="baseline"}} +% % {c}{\HCode{ valign="middle"}} + {} + +\Configure{halign} + {\EndP\halignTB{halign}} {\HCode{</table>}} + \R:HA\r:HA\D:HA\d:HA +\Configure{pic-halign}{} +>>> + +The following should be just under LaTeX. + +\<configure html-speech tex4ht\><<< +\Configure{halignTD} {}{} + {<}{\HCode{ style="white-space:nowrap; text-align:left;"}} + {-}{\HCode{ style="white-space:nowrap; text-align:center;"}} + {>}{\HCode{ style="white-space:nowrap; text-align:right;"}} + {^}{\HCode{ valign="top" style="white-space:nowrap;"}} + {=}{\HCode{ valign="baseline" style="white-space:nowrap;"}} + {||}{\HCode{ valign="middle" style="white-space:nowrap;"}} + {_}{\HCode{ valign="bottom" style="white-space:nowrap;"}} + {p}{\HCode{ style="white-space:wrap; text-align:left;"}\Protect\a:HColWidth} + {m}{\HCode{ style="white-space:nowrap; text-align:left;" valign="middle"}} + {b}{\HCode{ style="white-space:nowrap; text-align:left;" valign="baseline"}} + {} +\NewConfigure{HColWidth}{1} +\Configure{HColWidth}{} +>>> + + +The following code allows width specifications of p-columns of tables +through the command line option `p-width'. + +The command line option activates a configuration similar to the +following ones. + + \Configure{HColWidth} + {\HCode{ style="width:\HColWidth"}} + + \Configure{HColWidth} + {\HCode{ style="width: + \ifnum \HCol=1 160\fi + \ifnum \HCol=3 500\fi + "}} + +Try the above examples with the following source under different font +sizes in the browser. + + \begin{tabular}{p{2cm}cp{3cm}} + 1 2 3 1 2 3 & x & 1 2 3 1 2 3 + \end{tabular} + +The configuration provided through the command line option `p-width' +takes to some degree into account the size of fonts in use within the +HTML displays. Yet, not all browsers react properly to the size +changes. + + + + + +\<configure html-speech latex\><<< +\:CheckOption{p-width} \if:Option + |<10 em constant|> + \Configure{HColWidth} + {\tmp:dim=\HColWidth \divide\tmp:dim by \ten:Em\relax + \tmp:dim=10\tmp:dim + \HCode{ style="width:\expandafter\x:Em \the\tmp:dim em;"}} +\else + \Log:Note{for width specifications of tabular p entries, use + the `p-width' command line option or a configuration similar + to \string\Configure{HColWidth}{\string\HCode + { style="width:\string\HColWidth"}}} +\fi +>>> + +\<configure html-speech tex4ht\><<< +|<img src dir|> +\Configure{IMG} + {\ht:special{t4ht=<img\Hnewline src="|<a:imgdir|> }} + {\ht:special{t4ht=" alt="}} + {" } + {\ht:special{t4ht=" }} + {\ht:special{t4ht=\xml:empty>}} +\Css{a img { border-top: 0; border-left: 0; border-right: 0; }} +>>> + + + + +A change from the \verb'-' in the \verb'%' patterns of c to, say \verb'@', +requires a \verb'Font_hyphen: @' in the \verb'.lg' file for a match in the +css output of t4ht. + +\<configure html-speech tex4ht\><<< +\Configure{htf}{0}{+}{<span\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>} +|<img src dir|> +\Configure{htf}{1}{+}{<img\Hnewline + src="|<a:imgdir|> }{" alt="}{" class="}{\%s}{-\%d}{x-x-\%x}{" />} +\Configure{htf}{3}{+}{<img\Hnewline + src="|<a:imgdir|> }{" alt="}{" class="\%s-}{\%s}{-\%d}{x-x-\%x}% + {" align="middle" />} +>>> + + +\<configure html-speech tex4ht\><<< +\Configure{htf}{4}{+}{<span\Hnewline + class="}{}{}{}{}{small-caps">}{</span>} +\Configure{htf}{6}{+}{<u\Hnewline + class="}{}{}{}{}{underline">}{</u>} +>>> + +% \Configure{htf}{4}{+}{<span\Hnewline +% class="}{}{}{}{}{small-caps">}{</span>} +% \Configure{htf}{6}{+}{<span\Hnewline +% class="}{}{}{}{}{underline">}{</span>} + + +\<configure html-speech tex4ht\><<< +\Configure{htf}{8}{+} + {<sup class="htf">}{}{}{}{}{}{</sup>} +\Configure{htf}{10}{+} + {<span class="htf-cmbx">}{}{}{}{}{}{</span>} +\Configure{htf}{12}{+} + {<span\Hnewline class="htf-calligraphy">}{}{}{}{}{}{</span>} +\Configure{htf}{14}{+} + {<span\Hnewline class="htf-italic">}{}{}{}{}{}{</span>} +\Configure{htf}{16}{+} + {<span\Hnewline class="htf-bold">}{}{}{}{}{}{</span>} +\Configure{htf}{18}{+} + {<span\Hnewline class="htf-calligraphy-bold">}{}{}{}{}{}{</span>} +\Configure{htf}{20}{+} + {<span\Hnewline class="htf-flip-hor">}{}{}{}{}{}{</span>} +\Configure{htf}{22}{+} + {<sub class="htf">}{}{}{}{}{}{</sub>} +\Configure{htf}{24}{+}{<span\Hnewline + class="}{}{}{}{}{small-caps">}{</span>} +\Configure{htf-css}{4}{.small-caps{font-variant: small-caps; }} +\Configure{htf-css}{10}{.htf-cmbx {font-weight: bold; font-style:normal;}} +\Configure{htf-css}{12}{.htf-calligraphy {font-family:cursive}} +\Configure{htf-css}{14}{.htf-italic {font-style: italic;}} +\Configure{htf-css}{16}{.htf-bold {font-weight: bold;}} +\Configure{htf-css}{12}{.htf-calligraphy-bold {font-family:cursive ; + font-weight: bold; }} +>>> + + + +\verb'\Configure{htf}{0}{+}{<!--span class="}{\%s}{-\%s}{--\%d}{}{"-->}{<!--/span-->}' caused netscape to +loose spaces between comments. + +\<configure html-speech tex4ht\><<< +\Configure{@Picture}{\:class} +\def\:class#1{ class="#1" + \expandafter\ifx\csname a:@#1\endcsname\relax\else + \csname a:@#1\endcsname\fi} +>>> + + + + + + +\<configure html-speech tex4ht\><<< +\Css{center { margin-top:1em; margin-bottom:1em; }} +\Css{td center { margin-top:0em; margin-bottom:0em; }} +>>> + +\<configure html-speech tex4ht\><<< +\NewConfigure{Canvas}[4]{\ht:special{t4ht"% + *<span\Hnewline class="Canvas">% + *X<span style="position:relative;\Hnewline + width:\%.2f#4;"></span></span>% + **<span\Hnewline style="position:absolute; left:\%.2f#4; + top:\%.2f#4;"\Hnewline class="Canvas-xy"><span\Hnewline + class="Canvas-char">% + *</span></span>% + *<span class="Canvas-HR"\Hnewline style="position:absolute; + left:\%.2f#4;top:\%.2f#4;width:\%.2f#4;" + ><hr\Hnewline style="height:\%.2f#4;"></span>% + *#1*#2*#1*#2*#3}} +\Configure{Canvas}{0.00000290646}{0.0}{0.5}{ex} +\Css{.Canvas { position:relative; }} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Subdirectories for Images} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<a:imgdir\><<< +\a:imgdir >>> + +\<img src dir\><<< +\ifx \a:imgdir\:UnDef + \let\a:imgdir=\empty + \catcode`\:=12 + \expandafter + \def\csname :temp\endcsname#1imgdir:#2,#3|<par del|>{% + \if !#2!\else \expandafter + \def\csname a:imgdir\endcsname{#2}\fi} + \expandafter\csname :temp\expandafter\endcsname + \Preamble ,imgdir:,|<par del|>% + \catcode`\:=11 + \Log:Note{for addressing images in + a subdirectory, use the command line option `imgdir:.../'} +\fi +>>> + +A = instead of \verb+->+ works well on Windows NT but unfortunately + there's a problem with Windows 98. This OS insists on seeing = as a + delimiter and reports an error. + + + +\<configure html-speech tex4ht2\><<< +\ifx \a:imgdir\empty\else + \let\GIF:NAME=\gif:name + \def\gif:name#1{% + \let\:temp=\GIF:NAME + \ifx \gif:nm\cond:imgs + \def\:next{\edef\:tempa{#1}\expandafter\I:images \:tempa/....}% + \else + \def\:next{\GIF:NAME{#1}}% + \fi \:next} + + \def\cond:imgs{\edef\gif:nm} + + \def\I:images#1/#2....{% + \edef\:next{\noexpand\:temp{\:tempa}}% + \if .#2.\else \edef\:next{\noexpand\no:images{\:tempa}}\fi + \:next} + \def\no:images#1{\let\a:imgdir=\empty \:temp{#1}} +\fi +>>> + +Test file: + +\begin{verbatim} +\documentclass{article} +\begin{document} +\Picture{xx.png} +\Picture{http://wwww.foo.goo/xx.png} + +With image: $\left( x_{n}\right) \alpha_m$. + +\end{document} +\end{verbatim} + + + + + + + +%%%%%%%%%%%%%%%% +\section{th4} +%%%%%%%%%%%%%%%% + +\<configure html-speech th4\><<< +|<th4 for non-private use|> +\:CheckOption{th4}\if:Option \else \expandafter\endinput\fi +|<th4 sections|> +|<th4 tocs|> +|<th4 lists|> +|<th4 tables|> +|<th4 verbatim|> +|<th4 columns|> +|<th4 index|> +>>> + + +\<th4 for non-private use\><<< +\:CheckOption{javascript} + \if:Option \else\:CheckOption{th4}\fi +\if:Option + \Configure{JavaScript} + {\HCode{<script type="text/JavaScript" ><!--\Hnewline}} + {\HCode{//-->\Hnewline </script>}} +\fi +>>> + + +\<th4 for non-private use\><<< +\:CheckOption{draw} \if:Option \:CheckOption{th4} \if:Option + \Configure{Fig} + {\ifx \AltFig\empty \Picture*{ \a:@Picture{Fig}}% + \else \Picture*[\AltFig]{ \a:@Picture{Fig}}\fi} + {\EndPicture} +\fi \fi +>>> + + +\<th4 columns\><<< +\Configure{Columns} + {\IgnorePar\EndP + \HCode{<table \Hnewline cellspacing="15"><tr valign="top">}} + {\HCode{</tr></table>}} + {\HCode{<td>}\ColMag{1.03}} + {\IgnorePar\EndP\HCode{</td>}} +>>> + +\<th4 index\><<< +\:CheckOption{index}\if:Option + \Configure{index} + {\bgroup + \Configure{Columns} + {\IgnorePar\EndP + \HCode{<table \Hnewline class="index" width="100\%" + cellspacing="15"><tr valign="top">}} + {\HCode{</tr></table>}} + {\HCode{<td>}\ColMag{1.1}} + {\IgnorePar\EndP\HCode{</td>}} + \Columns{2}\IndexFonts} + {\EndColumns \egroup} + {\bgroup\IgnorePar\EndP + \expandafter\ifx \csname prev:A\endcsname\relax + \else \hfil\break \Tg<br />\par\IgnorePar \fi \IndexSec} + {\egroup~~~~} + {\bgroup\hfil\break\Tg<br />~~~}{\egroup~~~~} + {~}{} + \def\Idx:ch{0} + \def\IndexSec#1{% + \tmp:cnt=`#1\relax + \ifnum \tmp:cnt>`Z\advance\tmp:cnt by -32 \fi + \ifnum \tmp:cnt<`A\else \ifnum \tmp:cnt>`Z \else + \ifnum \Idx:ch<\tmp:cnt + \bgroup + \Configure{centerline} + {\HCode{<div\Hnewline class="IndexSec">}}{\HCode{</div>}} + \leftline{\bf \char\tmp:cnt }% + \global\let\prev:A|=\:UnDef + \xdef\Idx:ch{\the\tmp:cnt}% + \egroup + \fi + \fi \fi #1% + } + \Css{.IndexSec {margin-top:1em; margin-bottom:0.5em;}} +\fi +>>> + + +\<th4 sections\><<< +\Configure{Part}{}{}{% + \html:rightskip + \bgroup + \html:rightskip \ht:everypar{} + \IgnorePar\EndP\HCode{<h1 class="PartHead">}\HtmlParOff} + {\HCode{</h1>}\HtmlParOn\IgnoreIndent \egroup\par\ShowPar \IgnoreIndent} +\Configure{LikeSection}{}{} + {\IgnorePar \EndP\HCode{<h3 class="LikeSectionHead">}} + {\HCode{</h3>}\IgnoreIndent + |<addr for Tag and Ref of Sec|>% + \par \IgnoreIndent + } +\ConfigureMark{Section} + {\theSection} +\Configure{Section} + {}{} + {\IgnorePar\EndP\HCode{<h3 class="SectionHead">}% + \gHAdvance\SectionCounter |by 1 \TitleMark\space + }{\HCode{</h3>}\IgnoreIndent + |<addr for Tag and Ref of Sec|>% + \par \IgnoreIndent + } +\Configure{SubSection} + {}{} + {\par \IgnorePar\EndP\HCode{<h3 class="SubSectionHead">}} + {\HCode{</h3>}\IgnoreIndent \ShowPar} +>>> + + + +\<th4 sections\><<< +\ConfigureMark{Chapter} + {Chapter \theChapterCounter} +\Configure{Chapter} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="ChapterHead"\a:LRdir>}% + \TitleMark{\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\IgnorePar} +\ConfigureMark{Appendix}{Appendix \theChapterCounter} +\Configure{Appendix} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="AppendixHead"\a:LRdir>}% + \TitleMark {\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\IgnorePar} +\Configure{LikeChapter} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="LikeChapterHead"\a:LRdir>}\noindent + \bgroup \def\uppercase##1{##1}} + {\egroup \HCode{</h2>}\IgnoreIndent\IgnorePar } +>>> + +\<th4 sections\><<< +\Configure{+CutAt}{Chapter}{[}{] } +\Configure{+CutAt}{Section}{[}{] } +\Configure{+CutAt}{LikeSection}{[}{] } +\Configure{+CutAt}{SubSection}{[}{] } +>>> + + +\<th4 tocs\><<< +\ConfigureToc{Chapter} + {\HCode{<span class="ChapterToc">}} + {~} + {} + {\HCode{</span><br\xml:empty>}} +\ConfigureToc{Section} + {\HCode{<span class="SectionToc">}~~~} + {~} + {} + {\HCode{</span><br\xml:empty>}} +\ConfigureToc{LikeSection} + {} + {\HCode{<span class="LikeSectionToc">}~~~} + {} + {\HCode{</span><br\xml:empty>}} +\ConfigureToc{SubSection} + {} + {\HCode{<span class="SubSectionToc">}~~~~~~} + {} + {\HCode{</span><br\xml:empty>}} +>>> + + +\<th4 verbatim\><<< +\Configure{Verbatim} + {\ifvmode \IgnorePar\fi + \HAssign\Verb:N = 0 + \EndP\HCode{<div class="Verbatim">}} + {\IgnorePar\HCode{</div>}\par\ShowPar} + {\HAdvance\Verb:N by 1 \ifnum \Verb:N>1 \HCode{<br />}\fi} + {\:nbsp} +\Css{div.Verbatim { font-family: monospace; white-space: nowrap; }} +\Css{body .Verbatim { margin: 1em; }} +>>> + +\<th4 lists\><<< +\Configure{buttonList+} + {\ifnum \ListCounter>1 \IgnorePar\EndP\HCode{<hr\xml:empty>}\fi + \ShowPar\par\IgnoreIndent + } + {. #1\ShowPar} {\IgnorePar\EndP} {\ListCounter} +>>> + +\<th4 lists\><<< +\Configure{UList} + {\IgnorePar\EndP\def\:tempB{disc}% + \ifx\:tempA\:tempB \else \def\:tempB{square}\fi + \ifx\:tempA\:tempB \else \def\:tempB{circle}\fi + \hbox{\IgnorePar\EndP\HCode{<ul + \ifx\:tempA\:tempB type="\:tempA" \fi \:UL:>}}} + {\ht:everypar{}\EndP\HCode{</li></ul>}\ShowPar\par} + {\ifnum \ListCounter>1 \EndP\HCode{</li>}\fi \hfil\break \HCode{<li>}} +\Configure{OList} + {\IgnorePar\EndP\hbox{\HCode{<ol + \ifx \:temp\empty \else type="\:temp" \fi + \:OL:>}}} + {\ht:everypar{}\EndP + \HCode{\ifnum \ListCounter=0<li>\fi </li></ol>}\ShowPar\par} + {\ifnum \ListCounter>1 \EndP\HCode{</li>}\fi \hfil\break \HCode{<li>}} +>>> + + +\<th4 lists\><<< +\Configure{Item}{}{\par}% +\Configure{DList} + {\IgnorePar\EndP\HCode{<dl \:DL:>}} + {\ht:everypar{}\EndP\HCode{\End:dd</dl>}% + \ShowPar\par } + {\IgnorePar\EndP\ifnum \ListCounter>1 \HCode{</dd>}\fi + \HCode{<dt>}} + {\HCode{</dt><dd>}\ShowPar \def\End:dd{</dd>}\hfil\break} +\Configure{buttonList}{}{} + {}{.\ #1 }{\ListCounter} +>>> + + + +\<th4 tables\><<< +\HAssign\TableNo=0 +\Configure{HTable} + {\gHAdvance\TableNo by 1 + \ht:everypar{}\EndP\HCode{<table id="TBL-\TableNo" + \Hnewline\TABLE:\:HTable:>}% + \def\BR{\HCode{<br\xml:empty>}}} + {\HCode{</table>}} + {\HCode{<tr \:TR>}}{\HCode{</tr>}} + {\ht:everypar{}\HCode{<\TD:typ\TD:more\Hnewline>}} + {\ht:everypar{}\HCode{</\TD:typ>}} +\let\:HTable:|=\empty +\Configure{HTable+} + {B}{ cellspacing="0" cellpadding="3pt" frame="border" border="1" } + {<}{ align="left" } + {>}{ align="right" } + {-}{ align="center" } + {^}{ valign="top" } + {||}{ valign="middle" } + {_}{ valign="bottom" } + {=}{ valign="baseline" } + {}{} +>>> + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\section{nicefrac} +%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech nicefrac\><<< +\Configure{nicefrac} + {\HCode{<sup class="nicefrac">}} + {\HCode{</sup>}/\HCode{<sub class="nicefrac">}} + {\HCode{</sub>}} +>>> + + +\<configure html-speech bibtopic\><<< +\ConfigureEnv{btSect} + {\ifvmode \IgnorePar\fi \EndP\HCode{<div class="btSect">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} + {}{} +>>> + + + + + + + + +\section{ntheorem} + +\<configure html-speech ntheorem\><<< +|<32,4 ntheorem|> +>>> + +\<32,4 ntheorem\><<< +\ConfigureEnv{Anmerkung} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Anmerkung">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Beispiel} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Beispiel">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Bemerkung} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Bemerkung">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Beweis} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Beweis">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Corollary} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Corollary">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Definition} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Definition">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Example} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Example">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Korollar} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Korollar">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Lemma} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Lemma">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Proof} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Proof">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Proposition} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Proposition">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Remark} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Remark">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Satz} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Satz">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Theorem} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Theorem">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{anmerkung} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="anmerkung">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{beispiel} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="beispiel">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{bemerkung} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="bemerkung">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{beweis} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="beweis">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{corollary} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="corollary">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{definition} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="definition">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{example} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="example">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{korollar} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="korollar">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{lemma} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="lemma">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{proof} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="proof">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{proposition} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="proposition">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{remark} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="remark">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{satz} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="satz">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{theorem} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="theorem">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +>>> + +\section{hyperref} + +\<config hyperref form 4\><<< +\Configure{Form} + {\IgnorePar\EndP\leavevmode \Tg<form \Hnewline \Attributes>} + {\IgnorePar\EndP\Tg</form>} +>>> + +\<configure html-speech hyperref\><<< +|<config hyperref form 4|> +|<hyperref shared|> +|<hyperref TextField|> +|<hyperref multiline|> +|<hyperref password|> +|<hyperref radio|> +|<hyperref on...|> +\NewConfigure{::action}{1} +\Configure{::action} + {\edef\Attributes{\Attributes\space action="\AttributeVal"}} +\NewConfigure{::method}{1} +\Configure{::method} + {\edef\Attributes{\Attributes\space method="\AttributeVal"}} +\NewConfigure{PushButton::}{1} +\Configure{PushButton::} + {\leavevmode\Tg<input type="button" \Attributes\space/>} +\NewConfigure{Reset::}{1} +\Configure{Reset::} + {\leavevmode\Tg<input type="reset" \Attributes\space/>} +\NewConfigure{Submit::}{1} +\Configure{Submit::} + {\leavevmode\Tg<input type="submit" \Attributes\space/>} +\NewConfigure{CheckBox::}{2} +\Configure{CheckBox::} + {\leavevmode\Tg<input type="checkbox" \Attributes\space/>}{} +\NewConfigure{CheckBox::checked}{2} +\Configure{CheckBox::checked} + {\leavevmode\Tg<input type="checkbox" checked="checked" + \Attributes\space/>}{} +\HAssign\form:id=0 +>>> + +\<hyperref shared\><<< +\NewConfigure{::value}{1} +\Configure{::value} + {\edef\Attributes{\Attributes\space value="\AttributeVal"}} +\NewConfigure{::name}{1} +\Configure{::name} + {\edef\Attributes{\Attributes\space name="\AttributeVal"}} +\NewConfigure{::default}{1} +\Configure{::default} + {\let\::default=\AttributeVal} +\def\get:int#1.#2//{\tmp:cnt=#1 } +>>> + +\<\><<< +\NewConfigure{::borderwidth}{1} +\Configure{::borderwidth} + {\Css{div\#form-\form:id {border-width: \AttributeVal; + border-style:solid;}}} +\NewConfigure{::bordercolor}{1} +\Configure{::bordercolor} + {\expandafter\get:colors\AttributeVal//% + \Css{div\#form-\form:id {border-color:\AttributeVal}}} +\def\get:colors#1 #2 #3//{% + \get:color{#1}\edef\AttributeVal{\the\tmp:cnt\%}% + \get:color{#2}\edef\AttributeVal{\AttributeVal, + \the\tmp:cnt\%}% + \get:color{#3}\edef\AttributeVal{rgb(\AttributeVal, + \the\tmp:cnt\%)}% +} +\def\get:color#1{% + \tmp:dim=#1pt \multiply\tmp:dim by 100 + \expandafter\get:int\the\tmp:dim//} +>>> + + + +\<hyperref on...\><<< +\def\:tempc#1{% + \NewConfigure{::#1}{1}% + \Configure{::#1}% + {\edef\Attributes{\Attributes\space #1="\AttributeVal"}}} +\:tempc{onclick} +\:tempc{onblur} +\:tempc{onchange} +\:tempc{onclick} +\:tempc{ondblclick} +\:tempc{onfocus} +\:tempc{onkeydown} +\:tempc{onkeypress} +\:tempc{onkeyup} +\:tempc{onmousedown} +\:tempc{onmousemove} +\:tempc{onmouseout} +\:tempc{onmouseover} +\:tempc{onmouseup} +\:tempc{onselect} +>>> + +\<hyperref TextField\><<< +\NewConfigure{TextField::}{2} +\Configure{TextField::}{}{ \Tg<input type="text" \Attributes />} +\NewConfigure{TextField::width}{1} +\Configure{TextField::width} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space size="\the\tmp:cnt"}} +\NewConfigure{TextField::default}{1} +\Configure{TextField::default} + {\edef\Attributes{\Attributes\space value="\AttributeVal"}} +>>> +\<hyperref multiline\><<< +\NewConfigure{TextField::multiline}{2} +\Configure{TextField::multiline} + {} + { \Tg<textarea + \Attributes>\expandafter\set:ln\multiline:value,|<par del|>% + \global\let\multiline:value=\empty \Tg</textarea>} + +\let\multiline:value=\empty +\def\set:ln#1,#2|<par del|>{#1% + \def\:temp{#2}\ifx \:temp\empty \else + \hfil\break \def\:temp{\set:ln#2|<par del|>}% + \fi \:temp} + +\NewConfigure{multiline::value}{1} +\Configure{multiline::value} + {\let\multiline:value=\AttributeVal} + +\NewConfigure{multiline::width}{1} +\Configure{multiline::width} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space cols="\the\tmp:cnt"}} + +\NewConfigure{multiline::height}{1} +\Configure{multiline::height} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space rows="\the\tmp:cnt"}} +>>> + +\<hyperref password\><<< +\NewConfigure{TextField::password}{2} +\Configure{TextField::password} + {}{\Tg<input type="password" \Attributes />} +>>> + +\<hyperref shared\><<< +\def\Default:Checked#1{% + \ifx #1\Un:Def \let\:temp=\empty \else + \let\:temp=\relax + \let\:tempa=\relax + \edef\:temp{\def\:temp####1#1#1####2//{\def\:temp{####2}}% + \:temp \AttributeVal #1=#1#1//% + \def\:tempa####1=####2//{\def\noexpand\AttributeVal{####1}}% + \:tempa\AttributeVal=//}% + \:temp + \fi +} +>>> + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::radio}{5} +\Configure{ChoiceMenu::radio} + {\IgnorePar\EndP\leavevmode + \Tg<div id="form-\form:id">\gHAdvance\form:id by 1 } + { }{\IgnorePar\EndP\Tg</div>} + {\Default:Checked\radio::default + \Tg<input\Hnewline type="radio" + \ifx \:temp\empty\else checked="checked" \fi + \Attributes\space />} + {} +\NewConfigure{radio::default}{1} +\Configure{radio::default} + {\let\radio::default=\AttributeVal} +>>> + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::combo}{5} +\Configure{ChoiceMenu::combo} + {} + {~\Tg<select\Hnewline \Attributes \Hnewline size="1">} + {\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} + {\Tg</option>} +\NewConfigure{combo::default}{1} +\Configure{combo::default} + {\let\combo::default=\AttributeVal} +>>> + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::popdown}{5} +\Configure{ChoiceMenu::popdown} + {}{\HCode{\Hnewline <select \Attributes \Hnewline size="1">}} + {\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} {\Tg</option>} +>>> + +The \verb'size="1"' makes the select a popout memnu +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::}{5} +\Configure{ChoiceMenu::} + {}{\HCode{\Hnewline <select\Hnewline \Attributes>}}{\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} {\Tg</option>} +\NewConfigure{::menulength}{1} +\Configure{::menulength} + {\edef\Attributes{\Attributes\space size="\AttributeVal"}} +>>> + + +\<configure html-speech hyperref\><<< +\ifx \@baseurl\@empty \else + \Configure{@HEAD} + {\HCode{<base href="\:baseurl" />}} + \let\:baseurl\@baseurl + \let\@baseurl=\@empty +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{web} +%%%%%%%%%%%%%%%%%%%% + +\<configure html-speech web\><<< +\Configure{webversion} {\\} {} +\Configure{webuniversity} + {\Tg<div class="webuniversity">} {\Tg</div>} +\Css{div div.webuniversity {color : rgb(0\%,0\%,80\%); + margin-bottom: 1em; text-align: center;}} + +\Configure{maketitle} + {\IgnorePar\EndP\par\Tg<div class="maketitle">} + {\IgnorePar\EndP\par\Tg</div>} +\Css{div.maketitle {text-align: center; + margin-left: 3em; margin-right: 3em; }} + +\Configure{HColor}{webgreen}{rgb(0\%,50\%,0\%)} +\Configure{HColor}{webbrown}{rgb(60\%,0\%,0\%)} +\Configure{HColor}{webyellow}{rgb(98\%,92\%,73\%)} +\Configure{HColor}{webgray}{rgb(75.3\%,75.3\%,75.3\%)} +\Configure{HColor}{webblue}{rgb(0\%,0\%,80\%)} +>>> + +\section{exerquiz} + +\<configure html-speech exerquiz\><<< +|<32,4 exerquiz|> +|<4 exerquiz|> +>>> + +\<32,4 exerquiz\><<< +\Configure{Form}{}{} +\Configure{@HEAD}{\input exerqz.4ht } +\Css{.onClick {color:green;}} +\Configure{TextField::}{}{% + \IgnorePar \EndP + \HCode{<form action="." name="form\quiz@total"><input + type="text"\Hnewline \Attributes /></form>}% +} +\Configure{javascript}{JavaScript:} +>>> + +\<32,4 exerquiz\><<< +\ifx \eq@sqrtmsg\:UnDef + \def\eq@sqrtmsg{"Right!"} +\fi +\ifx \eq@sqwgmsg\:UnDef + \def\eq@sqwgmsg{"Wrong!"} +\fi +\Configure{shortquiz} + {(\alph{quizno})} + {alert(\eq@sqrtmsg,3);} + {alert(\eq@sqwgmsg,3);} +\Configure{quiz} + {(\alph{quizno})} + {qthis=this; + ProcessQuestion (\ANS,"\alph{quizno}",\thequestionno, + 1,"\eq@bqlabel",\Quiz:N)} + {InitializeQuiz("\quiz@total", + \ifeq@nocorrections0\else1\fi,\Quiz:N,\LikeRef{ans-\Quiz:N}, + "(",")")} + {QuizEnd("\:bqlabel",\thequestionno,"\quiz@total",\Quiz:N)} + {Corrections("\eq@RC","\eq@AC",\Quiz:N)} +\Configure{quiz*} + {[]} + {qthis=this; + ProcessQuestion (\ANS,"[]",\thequestionno, + 0,"\eq@bqlabel",\Quiz:N)} + {InitializeQuiz("\quiz@total", + \ifeq@nocorrections0\else1\fi,\Quiz:N, + \LikeRef{ans-\Quiz:N},"","")} +>>> + +\<-NOPE\><<< +\Configure{quiz*} + {qthis=this; + ProcessQuestion(\ANS,"\alph{quizno}",\thequestionno, + 0,"\eq@bqlabel",\Quiz:N)} +>>> + + +\<32,4 exerquiz\><<< +\ConfigureEnv{shortquiz} + {\IgnorePar\EndP\leavevmode} {} {}{} +\Configure{ReturnTo}{\begin{flushright}}{\end{flushright}} +>>> + +\<4 exerquiz\><<< +\ConfigureList{questions}% + {\EndP\HCode{<ol type="1" class="questions"\Hnewline + >}|<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</li></ol>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark} + {\HCode{<li class="questions">}\AnchorLabel} +>>> + + + +\<4 exerquiz\><<< +\def\a:temp#1#2{% + \ifOption{#2}{\def\a:charset{#2}}{} + \def\:tempa{#1}\ifx \eqOutOf\:tempa + \def\A:charset{#2}\ifx \A:charset\empty\else + \def\A:charset{#2}% + \fi\fi} +\a:temp{sur}{charset=iso-8859-2} +\a:temp{von}{charset=iso-8859-2} +>>> + + + +\<exerqz\><<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% exerqz.4ht |version % +% Copyright (C) |CopyYear.1999. % +% Donald P. Story & Eitan M. Gurari % +|<TeX4ht copyright|> +|<exerqz's vars|> +|<predefined exerquiz javascript|> +>>> + +\<predefined exerquiz javascript\><<< +\JavaScript-$ +var QuizInitialized; +var EndQuizPushed; +var CurrentQuizNo; +var Responses; +var ResponsesAddr; +var Cor; +var CorAddr; +var qthis; +var prev_notify; +function InitializeQuiz(qtfield,mark,quizN,ansN,lbrc,rbrc) { + Score=0; + QuizInitialized=1; + CurrentQuizNo=quizN; + eval( 'document.form'+qtfield+'.'+qtfield+'.value="$eqScore";' ) + RightWrong=new Array(); + |<hide sol|> + Responses=new Array(); + ResponsesAddr=new Array(); + |<hide cor|> + Cor=new Array(); + CorAddr=new Array(); + EndQuizPushed=0; + for(var i=1; i<=ansN; i++){ + RightWrong[i]=0; + } +} +\EndJavaScript +>>> + +\<show sol\><<< +if( ResponsesAddr[probno] != null ){ + if (notify == 0 ) { + ResponsesAddr[probno].value=Responses[probno]; + } else { + ResponsesAddr[probno].value="("+Responses[probno]+")"; +} } +qthis.value = "#"; ResponsesAddr[probno]=qthis; +>>> + +\<hide sol\><<< +for(var i in Responses){ + if (prev_notify == 0 ) { + ResponsesAddr[i].value=Responses[i]; + } else { + ResponsesAddr[i].value="("+Responses[i]+")"; +} } +>>> + +% if( Responses != null ){ +\<record cor\><<< +var k=Cor.length; +eval('Cor[k]=thisform'+quizN+'.ans'+quizN+'x'+i+'.value'); +eval('CorAddr[k]=thisform'+quizN+'.ans'+quizN+'x'+i); +>>> +\<hide cor\><<< +for(var i in Cor){ + CorAddr[i].value=Cor[i]; +} +>>> + +% if( Cor != null ){ + +\<predefined exerquiz javascript\><<< +\JavaScript +function href(addr) { top.location.href=addr; } +\EndJavaScript +>>> + +% function href(addr) { window.navigate(addr); } + + +\<predefined exerquiz javascript\><<< +\JavaScript +function Corrections(lbl1,lbl2,quizN) { + if ( (EndQuizPushed == 1) && ( CurrentQuizNo == quizN ) ){ + for(var i in RightWrong){ + if( (RightWrong[i]==0) ){ + |<record cor|> + eval('thisform'+quizN+'.ans'+quizN+'x'+i+'.value= "*"'); + } } +} } +\EndJavaScript +>>> + +\<32,4 exerquiz\><<< +\immediate\write16{% +***********************************************************\Hnewline +The `\eq@CA' button fails under Netscape, \Hnewline +due to a code of the following form.\Hnewline +\Hnewline +<html><head><title>?\Hnewline +\space \Hnewline +\space \space \space \Hnewline +\Hnewline +\space \space \Hnewline +\space \space \space \Hnewline +\space \space \space \Hnewline +\space \space \space \Hnewline +\Hnewline + \Hnewline + \Hnewline + \Hnewline +\Hnewline +If you know how to fix the function f() above for Netscape,\Hnewline +without changing the id attribute names, please consider\Hnewline +emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline +***********************************************************} +>>> +\<<< +\JavaScript +function LinkTo(addr) { +} +\EndJavaScript +>>> + +\<<< +\def\eqXInitQuizMsg{\hbox{% + \let\noexpand|=\string + \csname eq@InitQuizMsg\endcsname}} +\expandafter\ifx \csname eq@InitQuizMsg\endcsname\relax + \expandafter\def\csname eq@InitQuizMsg\endcsname{ + "You must initialize the Quiz! Click on "+bqlabel} +\fi +\def\eqXQuizTotalMsg{\hbox{% + \let\noexpand|=\string + \def\thequestionno{"+thequestionno+"}% + \csname eq@QuizTotalMsg\endcsname}} +\expandafter\ifx \csname eq@QuizTotalMsg\endcsname\relax + \expandafter\def\csname eq@QuizTotalMsg\endcsname{"Score: ' + +Score +' out of '+thequestionno+'"} +\fi +\def\eqXMadeChoice{\hbox{% + \let\noexpand|=\string + \csname eq@MadeChoice\endcsname}} +\expandafter\ifx \csname eq@MadeChoice\endcsname\relax + \expandafter\def\csname eq@MadeChoice\endcsname{ + "You have already made a choice. Your choice was (" + +Responses[probno]+")." + +" Do you want to change it?"} +\fi +\expandafter\ifx \csname eqScore\endcsname\relax + \def\eqScore{Score:} +\fi +>>> + +The \verb'Wollen Sie dies \noexpand\344ndern?' is a problem because it +takes the \verb'\344' into \verb'44'. A \verb'\string' will properly +produce \verb'\344'; hence, the above dirty trick. + +\begin{verbatim} +Doesn't IE escape in the way that Acrobat JavaScript does? + +Another possibility is to use String.fromCharCode() + +Convert Octal \344 to decimal 228, then use +String.fromCharCode(228) + + + How to deliver browser specific content using JavaScript + + + + +\end{verbatim} + +\<<< +\JavaScript-$ +function QuizEnd(bqlabel,thequestionno,quiztotal,quizN){ + if ((QuizInitialized !=1) |||| ( CurrentQuizNo!= quizN )){ + alert($eqXInitQuizMsg,3); + } else { + eval( 'document.form'+quiztotal+'.'+quiztotal+ + '.value=$eqXQuizTotalMsg'); + QuizInitialized=-1; + EndQuizPushed=1; +} } +\EndJavaScript + +\JavaScript-$ +function ProcessQuestion + (key,letterresp,probno,notify,bqlabel,quizN) { + if ((QuizInitialized !=1) |||| ( CurrentQuizNo!= quizN )){ + alert($eqXInitQuizMsg,3); + } else { + | + prev_notify = notify; +} } +\EndJavaScript +>>> + +\<<< +if (Responses[probno] == null) { + if (key==1) { + Score++; + RightWrong[probno]=1; + } + else + RightWrong[probno]=0; + | + Responses[probno]=letterresp; +} +else { + if (notify==0) + User=true; + else + User=confirm($eqXMadeChoice); + if (User) { + if (RightWrong[probno]==1) { + if (key==0) { + Score -= 1; + RightWrong[probno]=0; + | + Responses[probno]=letterresp; + } + } + else { + if (key==1) { + Score++; + RightWrong[probno]=1; + | + Responses[probno]=letterresp; + } + else { + RightWrong[probno]=0; + | + Responses[probno]=letterresp; + } + } + } +} +>>> + + + + + + + + + + + +\section{tex4ht} + +\<<< +\Configure{TITLE+}{\HCode{\jobname.\:html}} +>>> + +\<0,32,4 latex\><<< +\ifTag{TITLE+}{\Configure{TITLE+}{\LikeRef{TITLE+}}}{} +>>> + +Was \verb'\ifTag{TITLE+}{\Configure{TITLE+}{\HCode{\LikeRef{TITLE+}}}}{}', +but the \verb'\HCode' leaves \verb'\Protect' in for the latter comamnds which arrive +to the title--the original motivation for the \verb'\HCode' was to +protect the title from undesirable tags. Something like \verb+H\`ello+ can +send it. It now sems to be more trouble than help. + + + + +\<config tex4ht\><<< +|<0,32,4 preambles|> +\ifx \a:FontCss:\:UnDef + \Configure{FontCss}{Font\string_Css##1} + {Font\string_Css\string_Plus\space##1} +\fi +\expandafter\ifx \csname aa:Css\endcsname\relax + \Configure{Css}{Css: ##1} +\fi +\:CheckOption{edit} \if:Option + \Configure{edit}{\HCode{<strong><}}{\HCode{></strong>}} + {<strong><}{></strong>} +\fi +\:CheckOption{hooks++} \if:Option +\else \:CheckOption{hooks+} \if:Option +\else \:CheckOption{hooks} \if:Option +\fi\fi\fi +\if:Option + \Configure{hooks} + {\HCode{<strong class="hooks"><}}{\HCode{></strong>}}{}{} +\fi +\Configure{ExitHPage}{exit}{exit }{} +\Configure{TocLink}{\Link{#2}{#3}#4\ifvmode\IgnorePar\fi\EndLink} +\Configure{MiniHalign}{\hlg:a}{\hlg:b}\hlg:c\hlg:d{\hlg:e}\hlg:f +\:CheckOption{no-halign} \if:Option \else + \Configure{noalign-}{}{} +\fi +\Configure{PictureAlt*+} + {\let\sv:HtmlPar|=\HtmlPar \let\HtmlPar|=\empty + |<postscript for /Picture|>% + |<tex halign and cr/crcr|>% + \NoFonts\csname PauseMathClass\endcsname \SUBOff \SUPOff + \let\HCode|=\:gobble |%\offinterlineskip|% + \let\EndPicture|=\empty} + {\let\HCode|=\:HCode + \let\EndPicture|=\:UnDef \let\HtmlPar|=\sv:HtmlPar \SUBOn \SUPOn + \csname EndPauseMathClass\endcsname \EndNoFonts + |<tex4ht halign and cr/crcr|>% + |<delay postscript|>} +>>> + + +Was \verb+\SUBOff \SUPOff+. Any problems? + +\<postscript for /Picture\><<< +\def\PsCode##1{{\ht:special{\PsCodeSpecial##1}}}% +>>> + +\<tex halign and cr/crcr\><<< +\iffalse{\fi +\let\sv:halign|=\halign +\let\sv:cr|=\cr +\let\sv:crcr|=\crcr +\iffalse}\fi +\RecallTeXcr \let\halign |=\TeXhalign +>>> + +\<tex4ht halign and cr/crcr\><<< +\iffalse{\fi +\let\halign|=\sv:halign +\let\cr|=\sv:cr +\let\crcr|=\sv:crcr +\iffalse}\fi +>>> + +\<delay postscript\><<< +\let\PsCode|=\relax +>>> + +\<config tex4ht\><<< + \Configure{writetoc}{} +>>> + +\<config tex4ht\><<< +\Configure{CutAtTITLE+}{} +\Configure{HPageTITLE+}{} +\Configure{AtBeginDocument} + {\edef\recallcatcodes{% + \catcode`\noexpand\_|=\the\catcode`\_ + \catcode`\noexpand\^|=\the\catcode`\^ }% + \catcode`\_=8\catcode`\^=7} + {\recallcatcodes} +>>> + +\<config tex4ht\><<< + + +\Configure{halignTB}{\HCode{<table }}{\HCode{>}} +\def\R:HA{\HCode{<tr \Hnewline}\halignTR\HCode{>}} +\def\r:HA{\HCode{</tr>}} +\def\D:HA{|<td save EndP|> \HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline>}\ShowPar\par} +\def\d:HA{\ifvmode \IgnorePar \fi \EndP\HCode{</td>}|<td recall EndP|>} +\Configure{HVerbatim+}{\z@}{\:nbsp} +\Configure{CssFile}{\jobname.css} + {/* \aa:CssFile\space from \jobname.tex (TeX4ht) */} +\Configure{Picture+}{}{} +\Configure{Picture*}{}{} +\Configure{Picture-alt}{[Picture]} +\Configure{Needs}{l. + \the\inputlineno\space--- needs --- #1 ---} +\Configure{Needs-}{l. + \the\inputlineno\space--- needs --- #1 ---} +|<yes css|> +>>> + + +\<td save EndP\><<< +\SaveEndP +>>> + +\<td recall EndP\><<< +\RecallEndP +>>> + + + +\<config tex4ht\><<< +\Configure{moveright}{\leavevmode\endgraf } +\Configure{HChar}{x} +>>> + + +\<yes css\><<< + \def\SPAN:#1{\HCode{<span class="#1">}} + \def\EndSPAN:{\HCode{</span>}} + \def\DIV:#1{\HCode{<div class="#1">}} + \def\EndDIV:{\HCode{</div>}} +>>> + + + +\section{Interpretation for the Entries} + + + + +Use \verb'\ ', and not \verb'~', in style files, because some +users redefine the latter macro. + +\<html latex tocs\><<< +\def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +>>> + + +\section{latin1.def} + + +\<configure html-speech latin1\><<< +\def\HTitleText#1{% + \bgroup + \uccode`\~#1% + \uppercase{% + \egroup + \edef~{\string~}% + }% +} +\Configure{@TITLE} + {\DeclareInputText{168}{"}% + \HTitleText{209}% + \HTitleText{194}% + \HTitleText{210}% + \HTitleText{195}% + \HTitleText{211}% + \HTitleText{196}% + \HTitleText{212}% + \HTitleText{197}% + \HTitleText{213}% + \HTitleText{198}% + \HTitleText{214}% + \HTitleText{199}% + \HTitleText{215}% + \HTitleText{200}% + \HTitleText{216}% + \HTitleText{201}% + \HTitleText{217}% + \HTitleText{202}% + \HTitleText{218}% + \HTitleText{203}% + \HTitleText{219}% + \HTitleText{204}% + \HTitleText{220}% + \HTitleText{205}% + \HTitleText{221}% + \HTitleText{206}% + \HTitleText{222}% + \HTitleText{207}% + \HTitleText{223}% + \HTitleText{224}% + \HTitleText{240}% + \HTitleText{225}% + \HTitleText{241}% + \HTitleText{226}% + \HTitleText{242}% + \HTitleText{227}% + \HTitleText{243}% + \HTitleText{228}% + \HTitleText{244}% + \HTitleText{229}% + \HTitleText{245}% + \HTitleText{230}% + \HTitleText{246}% + \HTitleText{231}% + \HTitleText{247}% + \HTitleText{232}% + \HTitleText{248}% + \HTitleText{233}% + \HTitleText{249}% + \HTitleText{234}% + \HTitleText{250}% + \HTitleText{235}% + \HTitleText{251}% + \HTitleText{236}% + \HTitleText{252}% + \HTitleText{237}% + \HTitleText{253}% + \HTitleText{238}% + \HTitleText{254}% + \HTitleText{239}% + \HTitleText{255}% +} + +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{syntax} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-speech syntax\><<< +\ConfigureEnv{grammar} + {\Picture*{}} {\EndPicture} + {}{} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{???????????} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<article,report,book\><<< +|<quotations|> +\Configure{listof}{}{}{}{\HCode{<br\xml:empty>}}{}{} +>>> + +\<quotations\><<< +\ConfigureEnv{quotation} + {}{} + {\IgnorePar\EndP\HCode{<div class="quotation">}} + {\IgnorePar\EndP\HCode{</div>}\ShowPar} +\Css{.quotation {margin-bottom:0.25em; + margin-top:0.25em; margin-left:1em; }} +>>> + + + + + + + + + + + + + + + + +\<PICT dot tabbing\><<< +\:CheckOption{pic-tabbing'} \if:Option + \edef\:temp{\LikeRef{|<tabbing tag|>.}}% + \def\:tempa{.}\ifx \:temp\:tempa + \ConfigureEnv{tabbing}{\Picture*{}}{\EndPicture}{}{} + \fi +\fi +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%% +\section{titlesec} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-speech titlesec\><<< +\ifx \ttl@assign@ii\:Undef + |<pre 2005 titlesec|> +\fi +>>> + + +\<pre 2005 titlesec\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \csname thetitlesection\endcsname\fi} +\Configure{section}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="sectionHead"\a:LRdir>} + \TitleMark\space} + {\HCode{</h3>}\IgnoreIndent\par} +\Configure{likesection}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}} + {\HCode{</h3>}\IgnoreIndent\par} +>>> + + + + + + + +\section{fontmath.ltx} + + +\<configure html-speech-math fontmath\><<< + +|<html-speech-math plain,fontmath|> +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\section{tex4ht} + + +\<configure html-speech-math tex4ht\><<< + +\Css{img.math{vertical-align:middle;}} + +>>> + + +% \Configure{$$} +% {\:xhtml{\IgnorePar\EndP}% +% \HCode{<div class="displaymath">}} +% {\HCode{</div>}|<try env inline par|>} {} +% \Css{div.displaymath{text-align:center;}} + + + + + +\verb'\endgraf' is safer than \verb'\par', because the latter may be redefined. +For instance, see p 262 in texbook. + +\<configure html-speech-math tex4ht\><<< +\let\MathPar|=\empty +\Configure{PicDisplay} + {\edef\MathPar{\ifvmode par-\fi}\IgnorePar\endgraf\EndP + \HCode{<center class="\MathPar math-display" \a:LRdir >}} + {\HCode{</center>}} {} {class="\MathPar math-display" } +>>> + +% \Css{img.mathdisplay, div.displaymath, img.par-mathdisplay, +% div.par-displaymath { margin-top: 1em; +% margin-bottom: 1em; }} +% \Css{center img.mathdisplay, td img.mathdisplay, +% center img.par-mathdisplay, +% td img.par-mathdisplay { margin-top: 0; +% margin-bottom:0 ; }} +% + + + + + + + + +\<xmlns\><<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + + + + + +\subsection{TeX Engine} + + +The \verb'\trap:base' is to catch empty bases of exponents like, e.g., +in \verb'$a^{^b}$'. + + + + +\<?\><<< +\def\MathRow#1{% + \Configure{\expandafter\:gobble\string#1*}{*}% + {<|.mrow\Hnewline + class="\expandafter\:gobble\string#1">}{</|.mrow>}% + {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}% +>>> +\<recall dvimath par\><<< +\sv:ignore +>>> + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +The \verb'\MathRow' requests a \verb'<|.mrow\Hnewline>...</|.mrow>', instead of the contributions +of \verb'\mathop', \verb'\mathrel',...., for the next parameter. + + + + + + +\subsection{latex.ltx} + + + + + +Definitions like \verb'\def\mathbf#1{\a:mathbf#1\b:mathbf}' +can't be done on a global level, because \verb'\mathbf' is just +a name of a font. So, for instance, \verb'\bf' expands to \verb'\mathbf', +and so \verb'$\bf R$' indirectly brings up the latter command. + + + + + +\subsection{Palin + LaTeX} + +The default \verb'\left' and \verb'\right' in their default definition +with tex produce multi-part delimiters, from cmex, on large +subformulas. Hence, the `'.' below is needed. + + + +% \def\:tempa{\{}\ifx \:tempa\:DEL \let\:DEL\lbrc: \else +% \def\:tempa{\}}\ifx \:tempa\:DEL \let\:DEL\rbrc: \else +% \def\:tempa{<}\ifx \:tempa\:DEL \def\:DEL{\string<}\else +% \def\:tempa{>}\ifx \:tempa\:DEL \def\:DEL{\string>}% +% \fi\fi\fi\fi } +% \edef\lbrc:{\string{} \edef\rbrc:{\string}} + +% \HCode{\string#1;}% + +\section{Eqnarray} + +Had `BASELINE' before `MIDDLE', but changed to conform with math +in page 252-- in intro to theory book. + + + +\section{Big, BIG, ....} + +The +\verb'\special{t4ht@[}...\special{t4ht@]}' gobble the enclosed stuff. +The external pair is provided as grouping mechanism for +sub/super-scripts cases like \verb'\bigl(...\bigr)^x' within dvimath +mode. The \verb'{\HCode{}}' is neded for creating content delimiters +\verb'.' delimiters like in \verb'$\bigl. a_b \bigr)$'; without that mathml +gets something wrong there. +\verb+\bigl{.}+ et al produce empty para,etr , hence the \verb+\:EMPTY+ is a ompensation for such cases. + + + + + +\section{Exams} + + + +\<configure html-speech exam\><<< +\ifx \ps@examheadings\:unDef \else + |<Meers' exam|> +\fi +\ifx \@checkqueslevel\:unDef \else + |<Hirschhorns' exam|> +\fi +\ifx \@OneKeyHook\:unDef \else + |<Alexanders' exam|> +\fi +>>> + + +\<Hirschhorns' exam\><<< +\Configure{uplevel} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="uplevel">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +\Configure{fullwidth} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="fullwidth">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +\Css{dl .uplevel, .fullwidth{margin-left:-2.5em;}} +\Css{dl dl .fullwidth {margin-left:-5em;}} +\Css{dl dl dl .fullwidth {margin-left:-7.5em;}} +>>> + +\<Hirschhorns' exam\><<< +\ConfigureEnv{questions} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="questions">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +\ConfigureEnv{parts} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="parts">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +\ConfigureEnv{subparts} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="subparts">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +>>> + + +\<Hirschhorns' exam\><<< +\Configure{setpoints} + {\HCode{<span class="setpoints">}} {\HCode{</span>}} +>>> + + + + +\<Meers' exam\><<< +\ConfigureEnv{exam} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="exam">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +\ConfigureEnv{problem} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="problem">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +\Css{.problem{border-bottom: 1px solid black;}} +\Configure{scorebox} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="scorebox">} + \bgroup\Configure{fbox}{\leavevmode}{}} + {\egroup\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +\Css{.scorebox{margin-left:90\%; border: 1px solid black;}} +>>> + + +\<Alexanders' exam\><<< +\Configure{sectiontitle} + {\ifvmode\IgnorePar\fi + \EndP \HCode{<h4 class="sectiontitle">}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</h4>}} +>>> + +\<Alexanders' exam\><<< +\Configure{answer} + {\HCode{<span class="answer">}} {\HCode{</span>}} +\Css{.answer {text-decoration:underline;}} +\Configure{question} + {\HCode{<span class="question">}} {\HCode{</span>}} +>>> + +\<Alexanders' exam\><<< +\Configure{instructions} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="instructions">}} + {\IgnorePar\EndP \HCode{</div>}} +>>> + + +\<Alexanders' exam\><<< +\ConfigureEnv{examtop} + {\ifvmode \IgnorePar \fi \EndP \HCode{<table class="examtop"><tr><td>}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</td></tr></table>}} + {}{} +\Configure{namedata} + {\ifvmode \IgnorePar \fi \EndP + \Configure{newline}{\HCode{</td><td + class="namedata-rule"><hr /></td></tr><tr><td>}}% + \HCode{</td><td><div class="namedata"><table><tr><td>}} + {\ifvmode \IgnorePar \fi \EndP + \HCode{</td><td + class="namedata-rule"><hr /></td></tr></table></div>}} +\Css{td.namedata-rule {width:10em; vertical-align:bottom; }} +\Css{div.namedata{text-align:right;}} +\Configure{classdata} + {\ifvmode \IgnorePar \fi \EndP \HCode{<h3 class="classdata">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</h3>}} +>>> + + + +\<Alexanders' exam\><<< +\ConfigureEnv{keytop} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="keytop">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +>>> + + +\<Alexanders' exam\><<< +\Configure{frontmatter} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="frontmatter">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +>>> + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Etc} +%%%%%%%%%%%%%%%%%% + + +\<configure html-speech rotating\><<< +\ConfigureEnv{turn} + {\Picture+{}} {\EndPicture} + {}{} +>>> + + +\<configure html-speech manju\><<< +\Configure{@TITLE}{\let\@title=\empty} +>>> + + + + +\<configure html-speech mls\><<< +\Configure{@TITLE}{\let\@title=\empty} +>>> + + + + + + + + + + +\<configure html-speech ulem\><<< +\Configure{uline} + {\HCode{<span class="underline">}} {\HCode{</span>}} +\Configure{uuline} + {\HCode{<span class="underline">}} {\HCode{</span>}} +\Configure{sout} + {\HCode{<span class="sout">}} {\HCode{</span>}} +\Css{span.sout {text-decoration: line-through }} +\Configure{xout} + {\HCode{<span class="xout"><span class="underline">}} + {\HCode{</span></span>}} +\Css{span.xout {text-decoration: line-through }} +\Configure{uwave} + {\HCode{<span class="underline">}} + {\HCode{</span>}} +\Css{span.uwave {text-decoration: line-through }} +>>> + + + +\<configure html-speech go\><<< +\Configure{showdiagram} + {\Picture*[go]{}} {\EndPicture} +>>> + + + + + + +\<configure html-speech pifont\><<< +\ConfigureList{dingautolist} + {\EndP\HCode{<dl \a:LRdir class="dingautolist\expandafter\the + \csname @listdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="dingautolist">}} + {\HCode{</dt><dd\Hnewline class="dingautolist">}} +\ConfigureList{Piautolist} + {\EndP\HCode{<dl \a:LRdir class="Piautolist\expandafter\the + \csname @listdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="Piautolist">}} + {\HCode{</dt><dd\Hnewline class="Piautolist">}} +\ConfigureList{Pilist} + {\EndP\HCode{<dl \a:LRdir class="Pilist\expandafter\the + \csname @listdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="Pilist">}} + {\HCode{</dt><dd\Hnewline class="Pilist">}} +>>> + + +\<configure html-speech paralist\><<< +\ConfigureList{asparaitem}% + {\EndP\HCode{<div class="asparaitem">}\ShowPar\ShowIndent} + {\EndP\HCode{</div>}\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +\ConfigureList{asparaenum}% + {\EndP\HCode{<div class="asparaenum">}\ShowPar\ShowIndent} + {\EndP\HCode{</div>}\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +\ConfigureList{asparadesc}% + {\EndP\HCode{<div class="asparadesc">}\ShowPar\ShowIndent} + {\EndP\HCode{</div>}\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +\ConfigureList{compactdesc}% + {\EndP\HCode{<dl \a:LRdir class="compactdesc">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="compactdesc">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="compactdesc">}} +\ConfigureList{compactitem}% + {\EndP\HCode{<ul>}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</li></ul>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark} + {\HCode{<li class="compactitem">}} +\ConfigureEnv{enumerate} + {}{|<try env inline par|>}{}{} +\ConfigureList{enumerate}% + {\if@plalwaysadjust + \EndP \HCode{<dl \a:LRdir class="enumerate">}% + |<save end:itm|>\global\let\end:itm=\empty + \def\para:enumII{|<recall end:itm|>\EndP + \HCode{</dd></dl>}\ShowPar}% + \def\para:enumIII{\end:itm \global + \def\end:itm{\EndP + \Tg</dd>}\HCode{<dt class="enumerate">}}% + \def\para:enumIV{\EndP + \HCode{</dt><dd\Hnewline class="enumerate">}}% + \else + |<enumerate I|>% + \def\para:enumII{|<enumerate II|>}% + \def\para:enumIII{|<enumerate III|>}% + \def\para:enumIV{|<enumerate IV|>}% + \fi + } + {\para:enumII} {\para:enumIII} {\para:enumIV} +>>> + + + + + +\<configure html-speech alphanum\><<< +\def\:tempc#1#2#3#4{% + \ConfigureMark{toclvl#1} + {\HCode{<span class="titlemark">}\csname thelvl#1\endcsname + \HCode{</span>}}% + \Configure{toclvl#1} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<#4 class="toclvl#1Head"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</#4>}\HtmlParOn \IgnoreIndent \par}% + \ConfigureToc{toclvl#1} + {|<alphanum toc spaces|>\def\:temp{\J@INumberRoot{#2}{\tmp:cnt}}% + \afterassignment\:temp \tmp:cnt} + {#3 \HCode{<span class="toclvl#1">}}{} + {\HCode{</span><br\xml:empty>}}% + \ConfigureToc{liketoclvl#1} + {} {|<alphanum toc spaces|>\HCode{<span class="liketoclvl#1">}}{} + {\HCode{</span><br\xml:empty>}}% +} +\:tempc a1{.}{h3} +\:tempc b2{.}{h4} +\:tempc c3{.}{h5} +\:tempc d4{)}{h5} +\:tempc e5{)}{h5} +\:tempc f6{)}{h5} +\:tempc g7{)}{h5} +\:tempc h8{)}{h5} +\:tempc i9{)}{h5} +\:tempc j{10}{)}{h5} +\:tempc k{11}{)}{h5} +\:tempc l{12}{)}{h5} +>>> + +\<alphanum toc spaces\><<< +\tmp:cnt=0 \loop \advance\tmp:cnt by 1 + \ifnum \tmp:cnt<#2 ~~\repeat +>>> + +\<\><<< +\ConfigureMark{toc} + {\HCode{<span class="titlemark">}\csname thelvl\alph{tiefe}\endcsname + \HCode{</span>}} +\Configure{toc} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h5 class="tocHead"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</h5>}\HtmlParOn \IgnoreIndent \par} +>>> + + + + + + + +\<configure html-speech alphanum\><<< +\bgroup + \let\ifx=\relax + \let\:temp=\relax + \let\:tempa=\expandafter + \let\expandafter=\relax + \let\:TableOfContents=\relax + \let\else=\relax + \let\if=\relax + \let\fi=\relax + \def\Auto:ent#1{\noexpand\Auto:ent{#1,toclvla,liketoclvla,toclvlb,% + liketoclvlb,toclvlc,liketoclvlc,toclvld,liketoclvld,toclvle,% + liketoclvle,toclvlf,liketoclvlf,toclvlg,liketoclvlg,toclvlh,% + liketoclvlh,toclvli,liketoclvli,toclvlj,% + liketoclvlj,toclvlk,liketoclvlk,toclvll,liketoclvll}} + \edef\:TOC{\def\noexpand\:TOC{\:TOC}} + \:tempa +\egroup \:TOC +>>> + + + + + + + + + + + + + + \<configure html-speech gloss\><<< +\ConfigureList{glosslist}{}{}{}{} +\Configure{gloss} {\Link{\gls@b}{}} {\EndLink} +\Configure{glosslist}% + {\IgnorePar\EndP + \HCode{<dl \a:LRdir class="glosslist">}\global\let\end:glitm=\empty} + {\IgnorePar\EndP\HCode{</dd></dl>}\ShowPar} + {\end:glitm\gdef\end:glitm{\EndP\Tg</dd>}\HCode{<dt + class="glosslist">}\Link{}{\GlossLabel}\EndLink } + {\HCode{</dt><dd\Hnewline class="glosslist">}} +\Css{dl.glosslist {margin-left:2em;}} +>>> + + + + + +\<configure html-speech booktabs\><<< +\Configure{toprule} + {|<booktabs rule mag|>% + \Css{tr\#TBL-\TableNo-\ifnum \HRow=0 + 1- td{border-top:|<booktabs rule height|> solid} + \else + \HRow- td{border-bottom:|<booktabs rule height|> solid} + \fi + }} +\Configure{bottomrule} + {|<booktabs rule mag|>% + \Css{tr\#TBL-\TableNo-\HRow- + td{border-bottom:|<booktabs rule height|> solid}}} +\Configure{midrule} + {|<booktabs rule mag|>% + \Css{tr\#TBL-\TableNo-\HRow- + td{border-bottom:|<booktabs rule height|> solid}}} +\Configure{cmidrule} + {|<booktabs rule mag|>% + \Css{tr\#TBL-\TableNo-\HRow- + td{border-bottom:|<booktabs rule height|> solid}}% + \HCode{<!--cmidrule-->}} +>>> + + + +The cmidrule introduces ruler segments at different rows, instead of all of +them in the same row. + +\<booktabs rule height\><<< +\expandafter\x:Em \the\@thisrulewidth em +>>> + +\<booktabs rule mag\><<< +\@thisrulewidth=\csname a:rule-mag\endcsname\@thisrulewidth +>>> + +\<configure html-speech booktabs\><<< +\NewConfigure{rule-mag}{1} +\Configure{rule-mag}{0.14} +{ + \def\x:Em{% + \catcode`\p=12 + \catcode`\t=12 + \gdef\x:Em} + \x:Em#1pt{#1} +} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Endnotes.sty} +%%%%%%%%%%%%%%%%%% + + + + + +\<configure html-speech endnotes\><<< +\Configure{makeenmark} + {\Link{ennote-\endnoteN}{enmark-\endnoteN}} {\EndLink} +\Configure{enoteformat} + {\Link{enmark-\endnoteN}{ennote-\endnoteN}} {\EndLink} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + + \OutputCode[4ht]\<exerqz\> + \OutputCodE\<onmouseover.4ht\> + +\endinput + + + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-html0.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html0.tex new file mode 100644 index 00000000000..dae0cb3296c --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html0.tex @@ -0,0 +1,3863 @@ +% $Id: tex4ht-html0.tex 414 2018-06-12 23:04:41Z karl $ +% latex tex4ht-html0 +% or xhlatex tex4ht-html0 "html,3,sections+" +% +% Copyright 2009-2018 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{html0} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +\def\.{\string\a:mathml:\space} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{The Calling Tree for 4ht Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<0,32,4 tex4ht\><<< +\if:latex |<Hinclude latex|> +\else |<Hinclude plain|> \fi +>>> + + +\<0,32,4 plain\><<< +|<Hinclude plain lib|> +|<Hinclude plain + latex lib|> +>>> + +\<0,32,4 latex\><<< +|<Hinclude latex lib|> +|<Hinclude plain + latex lib|> +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{HTML4 and XHTML} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<0,32,4 preambles\><<< +|<date utility|> +|<cascade style sheets|> +\Configure{Preamble} + {|<default cascade style sheets|>} {} +>>> + + +\<default cascade style sheets\><<< +{\ifdim \lastskip>\z@ \unskip\fi \IgnorePar\parindent\z@ +\leavevmode}% +\writesixteen{--- file \aa:CssFile\space ---}% +\ht:special{t4ht>\aa:CssFile}\ht:special{t4ht=\Hnewline /* css.sty */}% +\ht:special{t4ht<\aa:CssFile}% +>>> + + + + + + + + + +\verb'\special' are like \verb'\hbox', and they so they may introduve empty lines in +vertical mode. That might be a problem if we don't want empty lines at +the start of the files. Hence, in latex we give them special treatment. + + + +\<cascade style sheets\><<< +\ScriptCommand{\CssFile}{% + \writesixteen{--- file \aa:CssFile\space ---}% + \def\FontSize##1##2{\:Context{##1}\ht:special{t4ht;\%##2}\%}% + \def\FontName##1{\:Context{##1}\ht:special{t4ht;=}}% + \def\:Context##1{\ht:special{t4ht>\jobname.tmp}##1\ht:special + {t4ht>\aa:CssFile}}% + \ht:special{t4ht>\jobname.tmp}\ht:special{t4ht>\aa:CssFile}\bb:CssFile + \hfil\break\NoFonts}{\EndNoFonts + \ht:special{t4ht<\aa:CssFile}\ht:special{t4ht<\jobname.tmp}} +\let\Css:File|=\CssFile +\def\CssFile{\futurelet\:temp\Css:Fl} +\def\Css:Fl{\ifx [\:temp \expandafter\Css:fl + \else \expand:after{\Css:File \space}\fi} +\def\Css:fl[#1]{\Css:File\space \css:files #1,,|<par del|>} +\def\css:files#1,#2|<par del|>{\def\:temp{#1}\ifx \:temp\empty + \else \def\:temp{\in:css#1.|<par del|>\css:files#2,,|<par del|>}\fi + \:temp } +\def\in:css#1.#2|<par del|>{\def\:temp{#2}\ifx \:temp\empty \input #1.css + \else \inc:ss#1.#2|<par del|>\fi} +\def\inc:ss#1.|<par del|>{\input #1 } +\NewConfigure{CssFile}[2]{\def\aa:CssFile{#1}\def\bb:CssFile{#2}} +>>> + +\verb'\CssFile[file-name,filename.ext,..]...\EndCssFile'. + +Default file, just in case the user doesn't provide one. If +the user does, the following file will be overwritten. + +Can't use below \verb'\a:CssFile' and \verb'\b:CssFile', because +\verb'\ScriptFile{\CssFile}' also needs them. + + + +\verb'\Css' changes its definition upon reachin \verb'\CssFile'. The +first definition is needed within the sty files, and the info is +sent to the lg file (where else it can be sent?). + + +\<cascade style sheets\><<< +\def\Css#1{{\def\:temp{\Configure{Needs}}% + \expandafter\:temp\expandafter{\aa:Css}\Needs{#1}}} +\let\send:css|=\Css +\ScriptCommand{\Css}{\HCode{<style + type="text/css">\Hnewline\NoFonts}}{\EndNoFonts\HCode{</style>}} +\let\loc:css|=\Css +\def\Css{\futurelet\:temp\:Css} +\def\:Css{\ifx \:temp\bgroup \expandafter\send:css + \else \expandafter\loc:css\fi} +>>> + + + +\<date utility\><<< +\tmp:cnt|=\time \divide\tmp:cnt |by 60 +\edef\:temp{\the\tmp:cnt} +\multiply\tmp:cnt |by -60 \advance\tmp:cnt |by \time +\edef\:today{\the\year-\ifnum \month<10 0\fi + \the\month-\ifnum \day<10 0\fi\the\day + \space\ifnum \:temp<10 0\fi \:temp + :\ifnum \tmp:cnt<10 0\fi\the\tmp:cnt :00} +>>> + + +\<date utility\><<< +\:CheckOption{hooks++} \if:Option + \else \:CheckOption{hooks+} + \if:Option \else \:CheckOption{hooks}\fi + \fi +\if:Option + \Configure{hooks} + {\HCode{<strong class="hooks"><}}{\HCode{></strong>}}{}{} +\fi +>>> + + + +\<xhtml.4ht\><<< +\:CheckOption{0.0}\if:Option +\else \:CheckOption{core} \fi +\if:Option \else \ifx \a:DOCTYPE\relax + \Configure{DOCTYPE}{|<xhtml dtd|>} +\fi\fi +>>> + + +\<xhtml dtd\><<< +\IgnorePar\HCode{\Hnewline + <?xml version="1.1"?>\Hnewline + <!DOCTYPE html SYSTEM "xhtml.dtd">\Hnewline}\Hnewline +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +>>> + + + +The following provides a faster version +than \verb'\LinkCommand\Link{a,href,name,}' for the \verb'\Link' +command + + + + + +\section{article} + + + + +\<configure html0 Preamble\><<< +\Configure{PROLOG}{} +>>> + + + + +\section{latex.ltx} + + + + + + + + + + +\<latex options 1, 2, 3\><<< +|<options for cutoff points|> +\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \:tempd \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax \:tempa \:tempc + \else \:tempa \:tempb \fi +\else\:CheckOption{1} \if:Option + \:tempa +\fi \fi \fi \fi +>>> + + +\<options for cutoff points\><<< +\def\:tempa{ + \CutAt{part} + \CutAt{likepart} + \Configure{tableofcontents*} + {part,likepart,chapter,likechapter,appendix} +} +\def\:tempb{ + \TocAt*{part,/likepart,chapter,likechapter,appendix,% + section,likesection} + \TocAt*{likepart,/part,chapter,likechapter,appendix,% + section,likesection} + \CutAt{chapter,likechapter,appendix,part} + \CutAt{likechapter,appendix,part} + \CutAt{appendix,chapter,likechapter,part} + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,appendix,% + section,likesection\expandafter\ifx \csname @chapter\endcsname\relax + ,subsection,likesubsection\fi + } +} +\def\:tempc{ + \TocAt*{chapter,/likechapter,/appendix,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{likechapter,/appendix,/chapter,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{appendix,/chapter,/likechapter,/part,% + section,likesection,subsection,likesubsection} + \CutAt{section,likesection,chapter,likechapter,appendix,part} + \CutAt{likesection,chapter,likechapter,appendix,part} + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,% + likesection\expandafter\ifx \csname @chapter\endcsname\relax + ,subsection,likesubsection\fi} +} +\def\:tempd{ + \TocAt*{section,/likesection,/chapter,/likechapter,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \TocAt*{likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} + \CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,likesubsection,subsection} +} +>>> + + + + + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltoutenc.dtx + %%%%%%%%%%%%%%%%%%%%%%% + + + +\<0,32,4 plain,latex accents\><<< +\:CheckOption{new-accents} \if:Option + |<new accents|> +\else + |<old accents|> +\fi +\let\^^_|=\v +>>> + + +\<0,32,4 latex\><<< +|<0,32,4 plain,latex accents|> +\let\@acci|=\' \let\@accii|=\` \let\@acciii|=\= +>>> + +\<0,32,4 plain\><<< +|<0,32,4 plain,latex accents|> +>>> + + +\<new accents\><<< +\:CheckOption{accent-} \if:Option + \Configure{HAccent}\acute{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\bar{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\breve{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\check{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\ddot{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\dot{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\grave{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\hat{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\tilde{AOaoNn{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\vec{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widehat{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widetilde{}{\Picture+{}}{\EndPicture} +\fi +\:CheckOption{mathaccent-} \if:Option + \Configure{HAccent}\"{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\'{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\.{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\={}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\H{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\^{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\`{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\b{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\c{Cc{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\d{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\t{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\u{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\v{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\~{AOaoNn{}}{\Picture+{}}{\EndPicture} +\fi +>>> + +\<new accents\><<< +\Configure{accent}{*} + {<!--tex4ht:accent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accent-->} +\Configure{mathaccent}{*} + {<!--tex4ht:mathaccent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end mathaccent-->} +\Configure{accented}{*} + {<!--tex4ht:accented\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accented-->} +\Configure{accenting}{*} + {<!--tex4ht:accenting\Hnewline-->} + {<!--tex4ht:end accenting-->} +>>> + + +\<old accents\><<< +\Configure{accent}\`\grave{A{A}E{E}I{I}O{O}U{U}% + a{a}e{e}i{i}\i{i}o{o}u{u}{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{A{A}E{E}I{I}O{O}U{U}Y% + {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{A{A}E{E}I{I}O{O}U{U}a{a}% + e{e}i{i}\i{i}o{o}u{u}{}{}} + {\a:accents{circ}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{A{A}O{O}a{a}o{o}N{N}n{n}{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{A{A}E{E}I{I}O{O}U{U}Y% + {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + + + + +The following are also placed under accents configuration. + +\<old accents\><<< +\Configure{accent}\c\c{C{C}c{c}{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{{}{}} {}{\b:accents{Huml}{#1}{#2}} +>>> + +The following originally have been defined to be parameter-less. + + + +\<old accents\><<< +\Configure{accent}\.\dot{{}{}} {}{\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{{}{}}{}{\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}}{}{\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\check{{}{}}{}{\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} {}{\b:accents{bar}{#1}{#2}} +>>> + + +% \= macron + +\<old accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {}{\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {}{\b:accents{widehat}{#1}{#2}} +>>> + + +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltfssini.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{tt Font} + +\<0,32,4 latex\><<< +\ifx \ttfamily\:UnDef \else \Configure{tt}{\ttfamily} \fi +>>> + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmath.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Math Setup} + + + + + + + + +\<PIC eqnarray Config\><<< +\ConfigureEnv{eqnarray} + {\IgnorePar\EndP\Tg<div class="pic-eqnarray">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +\Css{div.pic-eqnarray {text-align:center;}} +\ConfigureEnv{eqnarray*} + {\IgnorePar\EndP\Tg<div class="pic-eqnarray-star">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +\Css{div.pic-eqnarray-star {text-align:center;}} +>>> + + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % lttab.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Tabbing, Tabular and Array Environments} + + + + + + + + + + + + +\<vspace body for array/tabular\><<< +\append:def\vspc:s{\h:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\vspc:s{\i:HBorder}% + \expandafter\:tempb + \fi } +\tmp:cnt|=0 \:tempb +\append:def\vspc:s{\j:HBorder}\global\let\vspc:s|=\vspc:s +>>> + + +\<0,32,4 latex\><<< +\Configure{hline}{\ifx \ar:cnt\:UnDef + \else\o:noalign:{|<hline body for array/tabular|>}\fi} +\Configure{//[]}{\ifx \ar:cnt\:UnDef + \else\o:noalign:{|<vspace body for array/tabular|>}\fi} +>>> + + + +\<hline body for array/tabular\><<< +\append:def\hline:s{\a:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\hline:s{\b:HBorder}% + \expandafter\:tempb + \fi } +\tmp:cnt|=0 \:tempb +\append:def\hline:s{\c:HBorder}\global\let\hline:s|=\hline:s +>>> + + + + + +\<configure clear noalign\><<< +\Configure{noalign}{}{} +>>> + +\<configure tabular noalign\><<< +\Configure{noalign}% + {\f:tabular\d:tabular \HCode{<tr><td colspan="\ar:cnt">}} + {\HCode{</td></tr>}\pend:def\TableNo{0}\c:tabular\e:tabular}% +>>> + + + + + + +\verb'\AllColMargins' Return a binary string in which 1 represents +a column, and 0 represents a `@'. \verb'\ColMargins' retrieves the +zeros before the 1's that represent the current and following 1's. + + + + + + + + + + + +\subsection{The option @()} + + + + + + + + +\<configuring @()\><<< +\Configure{@{}}{} +>>> + + + + + + +We force border around the full table whenever a vertical line is +requested, because it makes the tables better looking within the +existing capabilities. + + + +Currently, we either have empty \verb'\VBorder', or one defined to +\verb'\def\VBorder{border="1"}'. + + + +When \verb'\putVBorder' is call in \verb'\VBorder' +we have a sequence of the form +\verb'<COLGROUP><COL ...">...</COLGROUP>...' with the last +tag possibly missing. + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%% to be placed %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{to be placed} +%%%%%%%%%%%%%%%%%%% + + + + +\<0,32,4 plain,latex\><<< +\Configure{ }{\:nbsp} +>>> + + + + + + + + + + + + + + + + +\<0,32,4 latex\><<< +\Configure{framebox} + {\Picture+[]{ \a:@Picture{framebox}}} {\EndPicture} +\Configure{InsertTitle}{\let\label|=\lb:l + \let\ref|=\o:ref \Configure{ref}{}{}{}} +\Configure{AfterTitle}{\let\index|=\:index + \let\ref|=\:ref \let\label|=\lb:l } +\Configure{NoSection} + {\let\sv:index|=\index \let\sv:label|=\label \let\sv:ref|=\ref + \let\sv:newline|=\newline \def\newline{ }% + \let\sv:setfontsize|=\@setfontsize \let\@setfontsize|=\:gobbleIII + \let\index|=\@gobble \let\label|=\@gobble \let\ref|=\@gobble + } + {\let\index|=\sv:index \let\label|=\sv:label \let\ref|=\sv:ref + \let\newline|=\sv:newline \let\@setfontsize|=\sv:setfontsize + } +\Configure{oalign}{\Picture+{ \a:@Picture{oalign}}}{\EndPicture} + +\Configure{TocLink} + {\Link{#2}{#3}{\Configure{ref}{}{}{}\Configure{cite}{}{}{}{}#4}\EndLink} +>>> + + + + + + + + + +\<0,32,4 latex\><<< +\Configure{picture} + {\Picture+[PICT]{}} + {\EndPicture} +>>> + + + +\<config book-report-article 0.0\><<< +\Configure{section}{}{}{\thesection\space}{} +\Configure{likesection}{}{}{}{} +>>> + +\<latex shared div config\><<< +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +>>> + +\<config book-report-article 0.0\><<< +\Configure{subsection}{}{}{\thesubsection\space}{} +\Configure{likesubsection}{}{}{}{} +>>> + + + +\<latex shared div config\><<< +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likpart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likpart} +>>> + +\<latex shared div config\><<< +\Configure{subsubsection}{}{}{\thesubsubsection\space}{} +>>> + +\<latex shared div config\><<< +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +>>> + +\<latex shared div config\><<< +\ConfigureEnv{thebibliography}{\IgnorePar}{\IgnorePar\par}{}{} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi +>>> + + + + + + + + +\<latex shared part config\><<< +\Configure{endpart}{likepart} +\Configure{endlikepart}{endpart} +>>> + + + +\<latex shared part config\><<< +\Configure{part}{}{} + {\IgnorePar \IgnorePar\HCode{<h1 class="partHead">}% + \partname \ \thepart\HCode{<br\xml:empty>}} + {\HCode{</h1>}\IgnoreIndent} +\Configure{likepart}{}{} + {\IgnorePar\IgnorePar\HCode{<h1 class="likepartHead">}} + {\HCode{</h1>}\IgnoreIndent} +\Configure{partTITLE+}{\thepart\space #1} +>>> + + + + + + + + + + + + + + + +It is better to put the LI in the third field to avoid extra space +to the following text. + + + + + + + + + + + + + +\<save configure tableofcontents\><<< +\let\sv:atoc|=\a:tableofcontents +\let\sv:btoc|=\b:tableofcontents +\let\sv:ctoc|=\c:tableofcontents +\let\sv:dtoc|=\d:tableofcontents +\let\sv:etoc|=\e:tableofcontents +>>> + + +\<recall configure tableofcontents\><<< +\let\a:tableofcontents|=\sv:atoc +\let\b:tableofcontents|=\sv:btoc +\let\c:tableofcontents|=\sv:ctoc +\let\d:tableofcontents|=\sv:dtoc +\let\e:tableofcontents|=\sv:etoc +>>> + + + + +Earlier we had +\verb'\:CheckOption{no-halign} \if:Option \else |<pic array|> \fi', +and the same for pic tabular. Why? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +The \verb'<TABLE>' is needed as a grouping mechanism for \verb'<CENTER>'. + + + +\section{Shared} + + + + + +\<0,32,4 article,report,book\><<< +|<latex options 1, 2, 3|> +>>> + + + + + + + +\<description 4\><<< +\ConfigureList{description}% + {\EndP\HCode{<dl class="description">}\let\end:itm=\empty} + {\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="description">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}} +>>> + + + + +\<thebib 4\><<< +\ConfigureList{thebibliography}% + {\:xhtml{\IgnorePar\EndP}\HCode{<div + class="thebibliography">}\let\en:bib=\empty} + {\en:bib\HCode{</div>}} + {\en:bib\def\en:bib{\HCode{</p>}}\HCode{<p class="bibitem">}} {~~~} +\Css{p.bibitem { text-indent: -2em; margin-left: 2em; }} + |<latex config div 4.0t|> +>>> + + + + + + + + + +\<0,32,4 article,report,book\><<< +|<latex shared div config|> +>>> + + + +\<maketitle 4\><<< +\Configure{maketitle} + {|<title for TITLE|>% + \HCode{<div align="center" class="maketitle">}} + {\HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead">}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Configure{thanks author date and}{}{} + {\HCode{<div class="author" align="center">}}{\HCode{</div>}} + {\HCode{<div class="date" align="center">}}{\HCode{</div>}} + {\SPAN:{and}\:nbsp\:nbsp\:nbsp\EndSPAN:} + {\HCode{<br\xml:empty>}} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; }} +>>> + + + +\<maketitle amsart 4\><<< +\Configure{maketitle} + {\HCode{<div class="maketitle">}} + {\HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead">}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{div.maketitle{text-align:center;}} +>>> + +\section{amsart.cls} + + + + + + + + + + + +\section{aa} + + + + + +\subsection{Sizes of Fonts} + + + +pages should honor the base font sizes the +readers choose for their browsers. Hence, under this assumption, all +tex4ht should do is just assure appropriate relative dimensions for +fonts of other sizes. To meet this end, I modified latex.4ht to +automatically include + + \verb'{\Configure{Needs}{Font\string_Size: #1}\Needs{1...}}' + +when options 11pt and 12pt are listed in \verb'\documentclass'. + + + + + +\<ams art,proc,book 32\><<< +|<base font size|> +>>>> + + + +\<base font size\><<< +{\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} +>>> + + + + + + + +\<configure aa 3.2/4.0t\><<< +\Configure{subtitle institute} + {\HCode{<br\xml:empty><span class="subtitle">}}{\HCode{</span>}} + {\HCode{<div class="institute">}}{\HCode{</div>}} + {\Tg<sup>}{\Tg</sup>} + {\HCode{<br\xml:empty>}} + +\Configure{maketitle} + {\HCode{<div align="center" class="maketitle">}} + {\HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="maketitleHead">}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Configure{thanks author date and}{}{} + {\HCode{<div class="author" align="center">}}{\HCode{</div>}} + {\HCode{<div class="date" align="center">}}{\HCode{</div>}} + {\SPAN:{and}and\EndSPAN:} + {\HCode{<br\xml:empty>}} +>>> + + + +\<configure aa 3.2/4.0t\><<< +\ConfigureEnv{abstract} + {\:xhtml{\IgnorePar\EndP}\HCode {<div class="abstract">}} + {\HCode{</div>}}{}{} + +\Css{div.abstract{text-align:center;}} + +\Configure{makeheadbox} + {\HCode{<table class="makeheadbox" + width="100\%"><tr><td><table><tr><td>}} + {\HCode{</td></tr><tr><td>}} + {\HCode{</td></tr><tr><td>}} + {\HCode{</td></tr></table></td><td class="AALogo" width="10\%">}} + {\HCode{</td></tr></table>}} +\Css{.AALogo{font-size:120\%;font-weight: bold; text-align:right;}} +>>> + +\section{plain} + + + + + + + + + + + +\<0,32,4 plain\><<< +\Configure{settabs}[1.5]{}{}{}{}{} +\Configure{line}{\HCode{<br\xml:empty>}} +>>> + + +\<html plain+ 0\><<< + |<plain+ 4.0t|> +>>> + + + + + +\<under/over line css\><<< +\Configure{underline} + {\HCode{<span class="underline">}} {\HCode{</span>}} +\Configure{overline} + {\HCode{<span class="overline">}} {\HCode{</span>}} +\Css{.underline{ text-decoration:underline; }} +\Css{.overline{ text-decoration:overline; }} +>>> + + + + + +\section{babel.sty} + + + + + + + + +\<configure html0 babel\><<< +|<0,32,4 babel|> +>>> + +\<0,32,4 babel.def\><<< +\Configure{quotedblbase}{\HCode{&\#132;}} +\Configure{quotesinglbase}{\HCode{&\#130;}} +>>> + + + + +\<configure html0 tcilatex\><<< +|<0,32,4 tcilatex|> +>>> + + + +\<0,32,4 tcilatex\><<< +\Configure{GRAPHICSPS} + {\Picture+[PICT]{}} {\EndPicture} +\Configure{GRAPHICSHP} + {\Picture+[PICT]{}} {\EndPicture} +>>> + + + + +\<0,32,4 babel\><<< +|<0,32,4 babel.def|> +\ifx \@begindocumenthook\:UnDef\else + \:CheckOption{new-accents} \if:Option \else + \def\:temp{russian}\ifx \languagename\:temp + |<russian|> + \fi +\fi\fi +>>> + +We had also \verb'\append:def\@begindocumenthook{\HLet\"|=\ddot}' in +babel. It gets russian and brazil into infinite loop. Why it was +inserted. + + +\<russian\><<< +\Configure{accent}\"\ddot{A{A}E{E}I{I}O{O}U{U}Y% + {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}å{e}{}{34}} + {\a:accents{uml}{#1}} + {\def\:temp{>}\def\:tempa{#2}\ifx \:temp\:tempa\HCode{»}% + \else \def\:temp{<}\ifx \:temp\:tempa\HCode{«}% + \else \b:accents{uml}{#1}{#2}\fi\fi} +>>> + + + + + +\section{fontmath} + + + + + + + + + + + + + + + + + + +\subsection{1: Large Operators} + +\begin{verbatim} +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 +\end{verbatim} + + + + + + + +\<plain tex classes\><<< +\Configure{MathClass}{1}{}{}{}{ + \mathchar"1360 + \mathchar"1357 + \mathchar"1356 + \mathchar"1355 + \mathchar"1354 + \mathchar"1353 + \mathchar"1352 + \mathchar"1351 + \mathchar"1350 + \mathchar"134E + \mathchar"134C + \mathchar"134A + \mathchar"1348 + \mathchar"1346 + \mathchar"1273 +} +>>> + + +\subsection{2: Binary Operations} + +\begin{verbatim} +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\-="2200 +\end{verbatim} + +\<plain tex classes\><<< +\Configure{MathClass}{2}{}{}{}{ +*-+/ +\mathchar"212F +\mathchar"212E +\mathchar"2234 +\mathchar"2235 +\mathchar"225E +\mathchar"225F +\mathchar"225C +\mathchar"225B +\mathchar"227A +\mathchar"2279 +\mathchar"2275 +\mathchar"2274 +\mathchar"225D +\mathchar"2271 +\mathchar"2205 +\mathchar"220F +\mathchar"226F +\mathchar"2204 +\mathchar"220C +\mathchar"220B +\mathchar"220A +\mathchar"2209 +\mathchar"2208 +\mathchar"2207 +\mathchar"2206 +\mathchar"220E +\mathchar"220D +\mathchar"226E +\mathchar"2201 +\mathchar"2203 +\mathchar"2202 +\mathchar"213F +} +>>> + + +\subsection{3: Relational Operations} + + + + + +The catcode is needed because 303A is \verb':'. + +\<plain tex classes\><<< +\Configure{MathClass}{3}{}{}{}{ + \mathchar"3128 + \mathchar"3129 + \mathchar"312A + \mathchar"312B + \mathchar"315E + \mathchar"315F + \mathchar"3210 + \mathchar"3211 + \mathchar"3212 + \mathchar"3213 + \mathchar"3214 + \mathchar"3215 + \mathchar"3216 + \mathchar"3217 + \mathchar"3218 + \mathchar"3219 + \mathchar"321A + \mathchar"321B + \mathchar"321C + \mathchar"321D + \mathchar"321E + \mathchar"321F + \mathchar"3220 + \mathchar"3221 + \mathchar"3224 + \mathchar"3227 + \mathchar"3232 + \mathchar"3233 + \mathchar"3236 + \mathchar"3237 + \mathchar"323F + :=>< + \mathchar"322F + \mathchar"3276 + \mathchar"3277 + \mathchar"326B + \mathchar"326A + \mathchar"3261 + \mathchar"3260 + \mathchar"3225 + \mathchar"3226 + \mathchar"322D + \mathchar"322E + \mathchar"322C + \mathchar"3228 + \mathchar"3229 +} +>>> + + + + + + + +\begin{verbatim} +\mathcode`\>="313E +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\:="303A +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\set="321A +\mathchardef\supseteq="3213 +\mathchardef\seteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\end{verbatim} + + +\subsection{4/5: Delimiters} + +\begin{verbatim} +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\[="405B +\mathcode`\]="505D +\mathcode`\{="4266 +\mathcode`\}="5267 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\def\lmoustache{\delimiter"437A340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"537B341 } % top from ), bottom from ( +\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips +\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } +\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads +\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert How should these be treated? +\def\vert{\delimiter"26A30C } " " " " " +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\end{verbatim} + +The comamnds \verb'\Configure{MathClass}{4}...' +and \verb'\Configure{MathClass}{5}...' +are for unmatched delimiters, and the comamnd +\verb'\Configure{MathDelimiters}{(}{)}' is for matched ones. + + + + +\<plain tex classes\><<< +\Configure{MathClass}{4}{}{}{}{} +\Configure{MathDelimiters}{(}{)} +\Configure{MathDelimiters}{[}{]} +\Configure{MathDelimiters}{\mathchar"4262}{\mathchar"5263} +\Configure{MathDelimiters}{\mathchar"4264}{\mathchar"5265} +\Configure{MathDelimiters}{\mathchar"4266}{\mathchar"5267} +\Configure{MathDelimiters}{\mathchar"4268}{\mathchar"5269} +\Configure{MathDelimiters}{\mathchar"4300}{\mathchar"5301} +\Configure{MathDelimiters}{\mathchar"4302}{\mathchar"5303} +\Configure{MathDelimiters}{\mathchar"4304}{\mathchar"5305} +\Configure{MathDelimiters}{\mathchar"4306}{\mathchar"5307} +\Configure{MathDelimiters}{\mathchar"4308}{\mathchar"5309} +\Configure{MathDelimiters}{\mathchar"430A}{\mathchar"530B} +>>> + + + +\begin{verbatim} +\mathcode`\?="503F +\end{verbatim} + + + + + + +\subsection{6: Punctuation Marks} + +\begin{verbatim} +\mathchardef\ldotp="613A % ldot as a punctuation mark +\mathchardef\cdotp="6201 % cdot as a punctuation mark +\mathchardef\colon="603A % colon as a punctuation mark +\mathcode`\;="603B +\mathcode`\,="613B +\end{verbatim} + + + + + + + +\<plain tex classes\><<< +\Configure{MathClass}{6}{}{}{}{ +\mathchar"613A +\mathchar"6201 +\mathchar"603A +?; , +} +>>> + + + + +\subsection{Questions} + +\begin{verbatim} + + +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\end{verbatim} + + + + +\section{amsppt.sty} + + + + + + + + + + + + + + + +\<dagger\><<< +\HChar{167}>>> + + + + + +\<32 amsppt, 32,4 vanilla\><<< +\Configure{title} + {\IgnorePar\EndP\HCode{<div class="title">}\begingroup\bf} + {\endgroup\IgnorePar\HCode{</div>}} +\Css{div.title {margin-top: 0.5em;}} +\Configure{author} + {\IgnorePar\EndP\HCode{<br\xml:empty><center>}\IgnorePar\par} + {\IgnorePar\EndP\HCode{</center>}} + +>>> + +\<32 amsppt\><<< +\Configure{affil}{\IgnorePar\HCode{<br\xml:empty><center>}\IgnorePar} + {\IgnorePar\HCode{</center>}} +\Configure{abstract} {\HCode{<br\xml:empty><center>}} {\HCode{</center>}} + {\IgnorePar\HCode{<table cellpadding="15"><tr><td>}\IgnorePar\par} + {\IgnorePar\HCode{</td></tr></table>}\IgnorePar\par} +\Configure{date}{\IgnorePar\HCode{<center>}\IgnorePar} + {\IgnorePar\HCode{</center>}} +|<32 amsppt, 32,4 vanilla|> +>>> + + + + + +\<bib in amsppt.sty\><<< +\Configure{vol}{\HCode{<strong>}}{\HCode{</strong>}} +\Configure{book}{\HCode{<em>}}{\HCode{</em>}} +\Configure{paper}{\HCode{<em>}}{\HCode{</em>}} +\Configure{Refs}{\IgnorePar\EndP\HCode{<table class="Refs">}} + {\HCode{</table>}} +\Configure{ref}{\HCode{<tr valign="top"><td align="right">}} + {\EndP\HCode{</td></tr>}}{} +\Configure{keyformat}{}{\EndP\HCode{</td><td>}} +>>> + + + + + + +\section{amstex.tex} + + +\<amstex.tex m:env\><<< +|<amsmath / amstex1 m:env|> +>>> + + +\<NO\><<< +\def\m:env#1{\:xhtml{\IgnorePar\EndP}\HCode{<center><table class="#1" + border="0" cellpadding="0" cellspacing="15"><tr><td>}} +\def\endm:env{\HCode + {</td></tr></table></center>}\IgnorePar} +>>> + +\<amsmath / amstex1 m:env\><<< +\def\m:env#1{\relax\ifmmode\else\par\fi\:xhtml{\IgnorePar\EndP}% + \HCode{<center class="#1"><table class="#1"\Hnewline + border="0" cellpadding="0" cellspacing="15"><tr><td>}} +\def\endm:env{\:xhtml{\IgnorePar\EndP}% + \HCode{</td></tr></table></center>}\IgnorePar + \ifmmode\else\par\fi} +>>> + + + + + + + + + +\section{tex4ht} + + + +\<title for TITLE\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection |<disable latex fonts|>\more:no \let\thanks|=\:gobble +\let\\|=\empty \def\TeX{TeX}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\Tag{TITLE+}{\@title}} +>>> + + +Old latex files need \verb'\no:fonts', but not new ones.---wrong, as far as writing to toc in 0.0? + + +\<disable latex fonts\><<< +\let\leavevmode|=\empty \let\not@math@alphabet|=\:gobbleII +\def\text@command##1{##1}\let\selectfont|=\empty +\def\check@icl ##1\check@icr{}% +>>> + + + + + + + + + + +\<0,32,4 tex4ht\><<< +\Configure{HVerbatim+}{\z@}{\:nbsp} +\:CheckOption{jpg} \if:Option \Configure{Picture}{.jpg} \fi +\:CheckOption{gif} \if:Option \Configure{Picture}{.gif} \fi +\Configure{Link}{!--}{class=}{id=}{X} +>>> + + + + +\<doc xhtml\><<< +\Configure{DOCTYPE}{\HCode{<?xml version="1.1"?>\Hnewline + <!DOCTYPE html PUBLIC + "-//W3C//DTD XHTML 1.0 Transitional//EN"\Hnewline + \space\space + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + \Hnewline}} +>>> + + + + + + + + + + + + +\verb'\Hnewline' is needed at end of file to avoid loosing the +last line under some applications. + + + + + + +\section{th4} + + +\<0 th4\><<< +\Configure{Chapter} + {}{} {Chapter \theChapterCounter} {} +\Configure{Appendix} + {}{} {Appendix \theChapterCounter} {} +\Configure{LikeChapter} + {}{} {} {} +>>> + + + + + + + + + + + + +\section{epsfig} + + + +\<0,32,4 epsfig\><<< +\Configure{epsfig} {\Picture+[epsfig]{}}{\EndPicture} +>>> + +\section{psfig} + + + +\<0,32,4 psfig\><<< +\Configure{psfig} {\Picture+[psfig]{}}{\EndPicture} +>>> + +\section{graphics} + + + +\<0,32,4 graphics\><<< +\Configure{graphics}{\Picture+[PIC]{}}{\EndPicture} +\Configure{graphics*} + {gif} + {\Picture[pict]{\csname Gin@base\endcsname.gif}} +\Configure{graphics*} + {png} + {\Picture[pict]{\csname Gin@base\endcsname.png}} +\Configure{graphics*} + {jpeg} + {\Picture[pict]{\csname Gin@base\endcsname.jpeg}} +\Configure{graphics*} + {jpg} + {\Picture[pict]{\csname Gin@base\endcsname.jpg}} +>>> + + + + + + +\section{index} + + + +\<configure html0 index\><<< +\Configure{NoSection} + {\let\sv:index|=\p@index \let\sv:label|=\label \let\sv:ref|=\ref + \let\sv:newline|=\newline \def\newline{ }% + \def\p@index[##1]{\@gobble}\let\label|=\@gobble \let\ref|=\@gobble + } + {\let\p@index|=\sv:index \let\label|=\sv:label \let\ref|=\sv:ref + \let\newline|=\sv:newline + } +>>> + + + + +\section{hyperref} + +\<config hyperref form 4\><<< +\Configure{Form} + {\IgnorePar\EndP\leavevmode \Tg<form \Hnewline \Attributes>} + {\IgnorePar\EndP\Tg</form>} +>>> + + + +\<hyperref shared\><<< +\NewConfigure{::value}{1} +\Configure{::value} + {\edef\Attributes{\Attributes\space value="\AttributeVal"}} +\NewConfigure{::name}{1} +\Configure{::name} + {\edef\Attributes{\Attributes\space name="\AttributeVal"}} +\NewConfigure{::default}{1} +\Configure{::default} + {\let\::default=\AttributeVal} +\def\get:int#1.#2//{\tmp:cnt=#1 } +>>> + +\<\><<< +\NewConfigure{::borderwidth}{1} +\Configure{::borderwidth} + {\Css{div\#form-\form:id {border-width: \AttributeVal; + border-style:solid;}}} +\NewConfigure{::bordercolor}{1} +\Configure{::bordercolor} + {\expandafter\get:colors\AttributeVal//% + \Css{div\#form-\form:id {border-color:\AttributeVal}}} +\def\get:colors#1 #2 #3//{% + \get:color{#1}\edef\AttributeVal{\the\tmp:cnt\%}% + \get:color{#2}\edef\AttributeVal{\AttributeVal, + \the\tmp:cnt\%}% + \get:color{#3}\edef\AttributeVal{rgb(\AttributeVal, + \the\tmp:cnt\%)}% +} +\def\get:color#1{% + \tmp:dim=#1pt \multiply\tmp:dim by 100 + \expandafter\get:int\the\tmp:dim//} +>>> + + + + + + + + + +\<hyperref on...\><<< +\def\:tempc#1{% + \NewConfigure{::#1}{1}% + \Configure{::#1}% + {\edef\Attributes{\Attributes\space #1="\AttributeVal"}}} +\:tempc{onclick} +\:tempc{onblur} +\:tempc{onchange} +\:tempc{onclick} +\:tempc{ondblclick} +\:tempc{onfocus} +\:tempc{onkeydown} +\:tempc{onkeypress} +\:tempc{onkeyup} +\:tempc{onmousedown} +\:tempc{onmousemove} +\:tempc{onmouseout} +\:tempc{onmouseover} +\:tempc{onmouseup} +\:tempc{onselect} +>>> + + + +\<hyperref TextField\><<< +\NewConfigure{TextField::}{2} +\Configure{TextField::}{}{ \Tg<input type="text" \Attributes />} +\NewConfigure{TextField::width}{1} +\Configure{TextField::width} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space size="\the\tmp:cnt"}} +\NewConfigure{TextField::default}{1} +\Configure{TextField::default} + {\edef\Attributes{\Attributes\space value="\AttributeVal"}} +>>> + + +\<hyperref multiline\><<< +\NewConfigure{TextField::multiline}{2} +\Configure{TextField::multiline} + {} + { \Tg<textarea + \Attributes>\expandafter\set:ln\multiline:value,|<par del|>% + \global\let\multiline:value=\empty \Tg</textarea>} + +\let\multiline:value=\empty +\def\set:ln#1,#2|<par del|>{#1% + \def\:temp{#2}\ifx \:temp\empty \else + \hfil\break \def\:temp{\set:ln#2|<par del|>}% + \fi \:temp} + +\NewConfigure{multiline::value}{1} +\Configure{multiline::value} + {\let\multiline:value=\AttributeVal} + +\NewConfigure{multiline::width}{1} +\Configure{multiline::width} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space cols="\the\tmp:cnt"}} +>>> + + +\<hyperref password\><<< +\NewConfigure{TextField::password}{2} +\Configure{TextField::password} + {}{\Tg<input type="password" \Attributes />} +>>> + +\<hyperref shared\><<< +\def\Default:Checked#1{% + \let\:temp=\relax + \let\:tempa=\relax + \edef\:temp{\def\:temp####1#1#1####2//{\def\:temp{####2}}% + \:temp \AttributeVal #1=#1#1//% + \def\:tempa####1=####2//{\def\noexpand\AttributeVal{####1}}% + \:tempa\AttributeVal=//}% + \:temp} +>>> + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::radio}{5} +\Configure{ChoiceMenu::radio} + {\IgnorePar\EndP\leavevmode + \Tg<div id="form-\form:id">\gHAdvance\form:id by 1 } + { }{\IgnorePar\EndP\Tg</div>} + {\Default:Checked\radio::default + \Tg<input\Hnewline type="radio" + \ifx \:temp\empty\else checked="checked" \fi + \Attributes\space />} + {} +\NewConfigure{radio::default}{1} +\Configure{radio::default} + {\let\radio::default=\AttributeVal} +>>> + + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::combo}{5} +\Configure{ChoiceMenu::combo} + {} + {~\Tg<select\Hnewline \Attributes \Hnewline size="1">} + {\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} + {\Tg</option>} +\NewConfigure{combo::default}{1} +\Configure{combo::default} + {\let\radio::default=\AttributeVal} +>>> + + + + + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::popdown}{5} +\Configure{ChoiceMenu::popdown} + {}{\HCode{\Hnewline <select \Attributes \Hnewline size="1">}} + {\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} {\Tg</option>} +>>> + +The \verb'size="1"' makes the select a popout memnu + + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::}{5} +\Configure{ChoiceMenu::} + {}{\HCode{\Hnewline <select\Hnewline \Attributes>}}{\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} {\Tg</option>} +\NewConfigure{::menulength}{1} +\Configure{::menulength} + {\edef\Attributes{\Attributes\space size="\AttributeVal"}} +>>> + + + + +\section{exerquiz} + + + + + + + + +\<-NOPE\><<< +\Configure{quiz*} + {qthis=this; + ProcessQuestion(\ANS,"\alph{quizno}",\thequestionno, + 0,"\eq@bqlabel",\Quiz:N)} +>>> + + + + + + + + + + + + + + + + + + +\<exerqz\><<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% exerqz.4ht |version % +% Copyright (C) |CopyYear.1999. % +% Donald P. Story & Eitan M. Gurari % +|<TeX4ht copyright|> +|<exerqz's vars|> +|<predefined exerquiz javascript|> +>>> + + + +\<predefined exerquiz javascript\><<< +\JavaScript-$ +var QuizInitialized; +var EndQuizPushed; +var CurrentQuizNo; +var Responses; +var ResponsesAddr; +var Cor; +var CorAddr; +var qthis; +var prev_notify; +function InitializeQuiz(qtfield,mark,quizN,ansN,lbrc,rbrc) { + Score=0; + QuizInitialized=1; + CurrentQuizNo=quizN; + eval( 'document.form'+qtfield+'.'+qtfield+'.value="$eqScore";' ) + RightWrong=new Array(); + |<hide sol|> + Responses=new Array(); + ResponsesAddr=new Array(); + |<hide cor|> + Cor=new Array(); + CorAddr=new Array(); + EndQuizPushed=0; + for(var i=1; i<=ansN; i++){ + RightWrong[i]=0; + } +} +\EndJavaScript +>>> + + + +\<show sol\><<< +if( ResponsesAddr[probno] != null ){ + if (notify == 0 ) { + ResponsesAddr[probno].value=Responses[probno]; + } else { + ResponsesAddr[probno].value="("+Responses[probno]+")"; +} } +qthis.value = "#"; ResponsesAddr[probno]=qthis; +>>> + +\<hide sol\><<< +for(var i in Responses){ + if (prev_notify == 0 ) { + ResponsesAddr[i].value=Responses[i]; + } else { + ResponsesAddr[i].value="("+Responses[i]+")"; +} } +>>> + +% if( Responses != null ){ + + +\<record cor\><<< +var k=Cor.length; +eval('Cor[k]=thisform'+quizN+'.ans'+quizN+'x'+i+'.value'); +eval('CorAddr[k]=thisform'+quizN+'.ans'+quizN+'x'+i); +>>> + + +\<hide cor\><<< +for(var i in Cor){ + CorAddr[i].value=Cor[i]; +} +>>> + +% if( Cor != null ){ + + + +\<predefined exerquiz javascript\><<< +\JavaScript +function href(addr) { top.location.href=addr; } +\EndJavaScript +>>> + +% function href(addr) { window.navigate(addr); } + + + + +\<predefined exerquiz javascript\><<< +\JavaScript +function Corrections(lbl1,lbl2,quizN) { + if ( (EndQuizPushed == 1) && ( CurrentQuizNo == quizN ) ){ + for(var i in RightWrong){ + if( (RightWrong[i]==0) ){ + |<record cor|> + eval('thisform'+quizN+'.ans'+quizN+'x'+i+'.value= "*"'); + } } +} } +\EndJavaScript +>>> + + + + + + + + +\<predefined exerquiz javascript\><<< +\JavaScript +function LinkTo(addr) { +} +\EndJavaScript +>>> + +\<exerqz's vars\><<< +\def\eqXInitQuizMsg{\hbox{% + \let\noexpand|=\string + \csname eq@InitQuizMsg\endcsname}} +\expandafter\ifx \csname eq@InitQuizMsg\endcsname\relax + \expandafter\def\csname eq@InitQuizMsg\endcsname{ + "You must initialize the Quiz! Click on "+bqlabel} +\fi +\def\eqXQuizTotalMsg{\hbox{% + \let\noexpand|=\string + \def\thequestionno{"+thequestionno+"}% + \csname eq@QuizTotalMsg\endcsname}} +\expandafter\ifx \csname eq@QuizTotalMsg\endcsname\relax + \expandafter\def\csname eq@QuizTotalMsg\endcsname{"Score: ' + +Score +' out of '+thequestionno+'"} +\fi +\def\eqXMadeChoice{\hbox{% + \let\noexpand|=\string + \csname eq@MadeChoice\endcsname}} +\expandafter\ifx \csname eq@MadeChoice\endcsname\relax + \expandafter\def\csname eq@MadeChoice\endcsname{ + "You have already made a choice. Your choice was (" + +Responses[probno]+")." + +" Do you want to change it?"} +\fi +\expandafter\ifx \csname eqScore\endcsname\relax + \def\eqScore{Score:} +\fi +>>> + +The \verb'Wollen Sie dies \noexpand\344ndern?' is a problem because it +takes the \verb'\344' into \verb'44'. A \verb'\string' will properly +produce \verb'\344'; hence, the above dirty trick. + +\begin{verbatim} +Doesn't IE escape in the way that Acrobat JavaScript does? + +Another possibility is to use String.fromCharCode() + +Convert Octal \344 to decimal 228, then use +String.fromCharCode(228) + + + + + How to deliver browser specific content using JavaScript + + +<SCRIPT LANGUAGE="JavaScript"> +<!-- + if( -1 != navigator.userAgent. + indexOf ("AOL") ) + { + // load America Online version + location.href="aol.htm"; + } + else + if( -1 != navigator.userAgent. + indexOf ("MSIE") ) + { + // load Microsoft Internet + // Explorer version + location.href="msie.htm"; + } + else + if( -1 != navigator.userAgent. + indexOf ("Mozilla") ) + { + // load Netscape version + location.href="netscape.htm"; + } + else + { + // load other version + location.href="other.htm"; + } +--> +</SCRIPT> + +\end{verbatim} + + + +\<predefined exerquiz javascript\><<< +\JavaScript-$ +function QuizEnd(bqlabel,thequestionno,quiztotal,quizN){ + if ((QuizInitialized !=1) |||| ( CurrentQuizNo!= quizN )){ + alert($eqXInitQuizMsg,3); + } else { + eval( 'document.form'+quiztotal+'.'+quiztotal+ + '.value=$eqXQuizTotalMsg'); + QuizInitialized=-1; + EndQuizPushed=1; +} } +\EndJavaScript + +\JavaScript-$ +function ProcessQuestion + (key,letterresp,probno,notify,bqlabel,quizN) { + if ((QuizInitialized !=1) |||| ( CurrentQuizNo!= quizN )){ + alert($eqXInitQuizMsg,3); + } else { + |<function ProcUserResp(key,letterresp,probno,notify)|> + prev_notify = notify; +} } +\EndJavaScript +>>> + + + + + +\<function ProcUserResp(key,letterresp,probno,notify)\><<< +if (Responses[probno] == null) { + if (key==1) { + Score++; + RightWrong[probno]=1; + } + else + RightWrong[probno]=0; + |<show sol|> + Responses[probno]=letterresp; +} +else { + if (notify==0) + User=true; + else + User=confirm($eqXMadeChoice); + if (User) { + if (RightWrong[probno]==1) { + if (key==0) { + Score -= 1; + RightWrong[probno]=0; + |<show sol|> + Responses[probno]=letterresp; + } + } + else { + if (key==1) { + Score++; + RightWrong[probno]=1; + |<show sol|> + Responses[probno]=letterresp; + } + else { + RightWrong[probno]=0; + |<show sol|> + Responses[probno]=letterresp; + } + } + } +} +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{html0} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<html0\><<< +% html0.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2016 TeX Users Group +% Copyright (C) |CopyYear.1996. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + + + + + +\section{latex} + + +\<configure html0 latex\><<< +|<0,32,4 latex|> +|<0 latex|> +|<0,32,4 plain,latex|> +|<config latex.ltx 0.0|> +|<0 plain,latex|> +|<0 th4,latex|> +>>> + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltplain.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{obeylines} + +\<0 plain,latex\><<< +\Configure{obeylines}{}{}{} +>>> + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmiscen.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Miscellaneous Environments} + + + +\<config latex.ltx 0.0\><<< +\Configure{verbatim}{}{ } +\Configure{verb}{}{} +>>> + + +\<config latex.ltx 0.0\><<< +\let\env:verb|=\:gobble +>>> + + + +\<config latex.ltx 0.0\><<< +\ConfigureEnv{verbatim}{}{\null}{}{} +\ConfigureEnv{verbatim*}{}{\null}{}{} +>>> + +\<config latex.ltx 0.0\><<< +\ConfigureEnv{center}{}{}{}{} +>>> + + + + +\<config latex.ltx 0.0\><<< +\Configure{centercr}{}{} +>>> + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmath.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Math Setup} + +\<config latex.ltx 0.0\><<< +\:CheckOption{pic-eqnarray} +\if:Option + \ConfigureEnv{eqnarray} {\Picture*{}} {\EndPicture}{}{} + \ConfigureEnv{eqnarray*} {\Picture*{}} {\EndPicture}{}{} +\else + \Configure{eqnarray}{}{}{}{}{}{} +\fi +>>> + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % lttab.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Tabbing, Tabular and Array Environments} + + +\<config latex.ltx 0.0\><<< +\Configure{array} {}{}{}{}{}{} +\Configure{tabular} {}{}{}{}{}{} +>>> + + + + +\<config latex.ltx 0.0\><<< +\:CheckOption{no-array}\if:Option \else + \:ifpackageloaded{array}{\:Optiontrue}{} +\fi +\if:Option \else + |<html latex array/tabular Config tty|> +\fi +>>> + + + + +\<html latex array/tabular Config tty\><<< +\def\:array:{<>} +\def\:tabular:{<>} +\Configure{array}{}{}{}{}{}{} +\Configure{tabular}{}{}{}{}{}{} +\ConfigureEnv{array}{}{}{}{} +\ConfigureEnv{tabular}{}{}{}{} +>>> + + + +\<html latex array/tabular Config tty\><<< +\:ifpackageloaded{array}{\:Optiontrue}{\:Optionfalse} +\if:Option + |<array.sty Configure tty|> +\else + \Configure{VBorder}{}{}{}{} +\fi +>>> + +\<array.sty Configure tty\><<< +\Configure{VBorder}{}{}{}{} +>>> + + + +\<config latex.ltx 0.0\><<< +\:CheckOption{pic-tabbing} \if:Option + \ConfigureEnv{tabbing}{\Picture*{}}{\EndPicture}{}{} +\else + |<TABLE tabbing Config tty|> + \:CheckOption{pic-tabbing'} \if:Option + |<PICT tabbing Config 0.0|> + |<PICT dot tabbing|> + \fi +\fi +>>> + + + +\<TABLE tabbing Config tty\><<< +\Configure{tabbing}[1.5]{} + {} + {} + {} +>>> + +\<PICT tabbing Config 0.0\><<< +\expandafter\def\csname + c:pic-tabbing:\endcsname#1{\def\p:tabbing{#1}} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%% to be placed %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{to be placed} + + + + +\<0 th4,latex\><<< +\Configure{()}{$}{$} +\Configure{[]}{\:xhtml{\IgnorePar\EndP}$$}{$$} +>>> + + + + + +\<config latex.ltx 0.0\><<< +\ConfigureList{trivlist}{}{}{}{} +\ConfigureList{list}{}{}{}{} +\ConfigureList{itemize}{}{}{}{}{}{} +\ConfigureList{enumerate}{}{}{}{}{}{} +>>> + + + + + +\<config latex.ltx 0.0\><<< +\Configure{tableofcontents}{}{}{}{}{} +>>> + +\<config latex.ltx 0.0\><<< +\Configure{TocAt}{}{} +\Configure{TocAt*}{}{} +>>> + + + + + +\<config latex.ltx 0.0\><<< +\ConfigureEnv{minipage}{}{}{}{} +>>> + + +\<config latex.ltx 0.0\><<< +\Configure{float}{}{}{} +>>> + + +\<config latex.ltx 0.0\><<< +\Configure{newline}{} +>>> + + + + +\<0 plain,latex\><<< +\Configure{ }{ } +>>> + + +\<0 plain,latex\><<< +\def\:zbsp#1{cellpadding="0" border="0" cellspacing="0"\Hnewline + class="#1"} +>>> + + +\<0 plain,latex\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accents}{(#1 #2)}{(#1 #3)} + \immediate\write-1{\string\Configure{accents}{found-case}{missing-case}} +\fi +\Configure{centerline}{}{} +\Configure{leftline}{}{} +\Configure{rightline}{}{} +>>> + +\<0 plain,latexNO\><<< +\Configure{choose}{}{} +>>> + + + + + + + +\section{tex4ht} + + + +\<title for hypertext page\><<< +\Configure{TITLE+}{\HCode{\jobname.\:html}} +>>> + +\<0,32,4 latex\><<< +\ifTag{TITLE+} + {\Configure{TITLE+}{\HCode{\LikeRef{TITLE+}}}}{} +>>> + + + + + + +\<configure html0 tex4ht\><<< +|<0,32,4 tex4ht|> +\Configure{HtmlPar}{}{}{}{} +\ifx \a:HTML\:UnDef \Configure{HTML}{}{} \fi +\ifx \a:HEAD\:UnDef \Configure{HEAD}{}{} \fi +\ifx \a:BODY\:UnDef \Configure{BODY}{}{} \fi +\ifx \a:TITLE\:UnDef \Configure{TITLE}{}{} \fi +\Configure{TITLE+}{} +|<no css|> +>>> + + +\<configure html0 tex4ht\><<< +\Configure{crosslinks+}{\IgnorePar}{\par\ShowPar}{\IgnorePar}{} +\Configure{IMG}{}{ }{}{}{} +\Configure{Picture*}{}{} +\Configure{SUB}{}{} +\Configure{SUP}{}{} +\Configure{MkHalign}{}{}{}{}{}{} +\Configure{halignTD} {}{} {}{}{}{}{}{}{}{} +\Configure{halign}{}{}{}{}{}{}{} +\Configure{pic-halign}{} +>>> + + + + + + + + + + + +\<0,32,4 tex4ht\><<< +|<0,32,4 preambles|> +\ifx \a:FontCss:\:UnDef + \Configure{FontCss}{Font\string_Css##1} + {Font\string_Css\string_Plus\space##1} +\fi +\expandafter\ifx \csname aa:Css\endcsname\relax + \Configure{Css}{Css: ##1} +\fi +\:CheckOption{edit} \if:Option + \Configure{edit}{\HCode{<strong><}}{\HCode{></strong>}} + {<strong><}{></strong>} +\fi +\:CheckOption{hooks++} \if:Option +\else \:CheckOption{hooks+} \if:Option +\else \:CheckOption{hooks} \if:Option +\fi\fi\fi +\if:Option + \Configure{hooks} + {\HCode{<strong class="hooks"><}}{\HCode{></strong>}}{}{} +\fi + + +\Configure{ExitHPage}{exit}{exit }{} +\Configure{TocLink}{\Link{#2}{#3}#4\EndLink} +\Configure{MiniHalign}{\hlg:a}{\hlg:b}\hlg:c\hlg:d{\hlg:e}\hlg:f +\:CheckOption{no-halign} \if:Option \else + \Configure{noalign-}{}{} +\fi +\Configure{PictureAlt*+} + {\let\sv:HtmlPar|=\HtmlPar \let\HtmlPar|=\empty + |<postscript for /Picture|>% + |<tex halign and cr/crcr|>% + \NoFonts\csname PauseMathClass\endcsname \SUBOff \SUPOff + \let\HCode|=\:gobble |%\offinterlineskip|% + \let\EndPicture|=\empty} + {\let\HCode|=\:HCode + \let\EndPicture|=\:UnDef \let\HtmlPar|=\sv:HtmlPar \SUBOn \SUPOn + \csname EndPauseMathClass\endcsname \EndNoFonts + |<tex4ht halign and cr/crcr|>% + |<delay postscript|>}% +>>> + +\<postscript for /Picture\><<< +\def\PsCode##1{{\ht:special{\PsCodeSpecial##1}}}% +>>> + +\<tex halign and cr/crcr\><<< +\iffalse{\fi +\let\sv:halign|=\halign +\let\sv:cr|=\cr +\let\sv:crcr|=\crcr +\iffalse}\fi +\RecallTeXcr \let\halign |=\TeXhalign +>>> + + +\<tex4ht halign and cr/crcr\><<< +\iffalse{\fi +\let\halign|=\sv:halign +\let\cr|=\sv:cr +\let\crcr|=\sv:crcr +\iffalse}\fi +>>> + + +\<delay postscript\><<< +\let\PsCode|=\relax +>>> + + + + + +\<0,32,4 tex4ht\><<< +\Configure{CutAtTITLE+}{} +\Configure{HPageTITLE+}{} +\Configure{AtBeginDocument} + {\edef\recallcatcodes{% + \catcode`\noexpand\_|=\the\catcode`\_ + \catcode`\noexpand\^|=\the\catcode`\^ }% + \catcode`\_=8\catcode`\^=7} + {\recallcatcodes} +>>> + +\<0,32,4 tex4ht\><<< +\Configure{crosslinks}{[}{] + }{next}{prev}{prev-|<tail|>}{front}{tail}{up} +\:CheckOption{next} \if:Option + \Configure{next+}{\ShowPar\par\noindent [}{]} +\fi +\Configure{TocAt*}{}{} +\Configure{TocAt}{}{} + +\Configure{halignTB}{\HCode{<table }}{\HCode{>}} +\def\t:HA{\HCode{</table>}} +\def\R:HA{\HCode{<tr \Hnewline valign="baseline">}} +\def\r:HA{\HCode{</tr>}} +\def\D:HA{\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline>}} +\def\d:HA{\HCode{</td>}} +\Configure{HVerbatim+}{\z@}{\:nbsp} +\Configure{CssFile}{\jobname.css} + {/* \aa:CssFile\space from \jobname.tex (TeX4ht) */} +\Configure{Picture+}{}{} +\Configure{Picture*}{}{} +\Configure{Needs}{l. + \the\inputlineno\space--- needs --- #1 ---} +\Configure{Needs-}{l. + \the\inputlineno\space--- needs --- #1 ---} +|<yes css|> +>>> + +\<0,32,4 tex4ht\><<< +\Configure{moveright}{\leavevmode\endgraf } +\Configure{HChar}{x} +>>> + + + + +\<yes css\><<< + \def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} + \def\SPAN:#1{\HCode{<span class="#1">}} + \def\EndSPAN:{\HCode{</span>}} + \def\DIV:#1{\HCode{<div class="#1">}} + \def\EndDIV:{\HCode{</div>}} +>>> + +\<no css\><<< + \def\:SPAN#1#2{#2} + \let\SPAN:|=\:gobble \let\EndSPAN:|=\empty + \let\DIV:|=\:gobble \let\EndDIV:|=\empty +>>> + + + + + +\section{plain} + + +\<configure html0 plain\><<< +|<0,32,4 plain|> +|<0,32,4 plain,latex|> +|<0 plain|> +|<0 plain,latex|> +|<0 plain+|> |%keep last in html mode|% +>>> + +\<0 plain\><<< +\Configure{centerline}{}{} +\Configure{leftline}{}{} +\Configure{rightline}{}{} +\Configure{insert}{}{} +>>> + +\<0 plain\><<< +\:CheckOption{pic-eqalign} \if:Option + \:CheckOption{no-halign} \if:Option \else + \fi +\else |<TABLE eqalign shared Configure tty|> +\fi +>>> + + +\<TABLE eqalign shared Configure tty\><<< +\Configure{eqalign}{}{}{}{}{}{} +>>> + +\<TABLE eqalign shared Configure tty\><<< +\Configure{eqalignno}{}{}{}{}{}{} +>>> + +\<TABLE eqalign shared Configure tty\><<< +\Configure{leqalignno}{}{}{}{}{}{} +>>> + + + + + +\<0 plain\><<< +\Configure{narrower}{}{} +>>> + + +\<0 plain\><<< +\Configure{proclaim}{}{}{} +>>> + + +\<0 plain\><<< +\Configure{line}{} +>>> + + + + + + + + + +\<0 plain+\><<< +|<plain+ 0.0|> +\:CheckOption{plain-} \if:Option \else + |<itemitem 0.0|> +\fi +>>> + +\<plain+ 0.0\><<< +\Configure{item}{}{}{\par\leavevmode}{} +>>> + + + + + +\section{article, book, report} + +\<configure html0 article\><<< + |<config report / article 0.0|> + |<config book-report-article 0.0|> +>>> + + + + + + +\<configure html0 report\><<< + |<config book-report 0.0|> + |<config report / article 0.0|> + |<config book-report-article 0.0|> +>>> + + + + + + +\<configure html0 book\><<< + |<config book-report-article 0.0|> + |<config book-report 0.0|> +>>> + + + +\<config report / article 0.0\><<< +\ConfigureEnv{abstract}{}{}{}{} +>>> + + +\<config book-report-article 0.0\><<< +|<0,32,4 article,report,book|> +|<article,report,book tocs|> + \ConfigureToc{lof}{\empty}{ }{}{} + \ConfigureToc{lot}{\empty}{ }{}{} +\ConfigureEnv{quote}{}{}{}{} +\ConfigureList{description}{}{}{}{}{}{} +\Configure{maketitle}{}{}{}{} +\Configure{thanks author date and} {}{} {}{} {}{} {}{} +\Configure{theindex}{}{}{}{}{}{}{}{}{} +\Configure{paragraph}{}{}{}{} +\Configure{likeparagraph}{}{}{}{} +\Configure{subparagraph}{}{}{\thesubparagraph\space}{} +\Configure{likesubparagraph}{}{}{}{} + + + \ifx \part\:UnDef \else +\Configure{part}{}{} {\partname \ \thepart\space} {} +\Configure{likepart}{}{}{\empty}{} + \fi +>>> + + +\<report,book tocsNO\><<< +\ConfigureToc{appendix} {\empty}{\ }{}{\ } +\ConfigureToc{chapter} {\empty}{\ }{}{\ } +\ConfigureToc{likechapter} {\empty}{\ }{}{\ } +>>> + + +\<article,report,book tocsNO\><<< +\ConfigureToc{likeparagraph} {}{\empty}{}{\ } +\ConfigureToc{likepart} {}{\empty}{}{\ } +\ConfigureToc{likesection} {}{\empty}{}{\ } +\ConfigureToc{likesubparagraph} {}{\empty}{}{\ } +\ConfigureToc{likesubsection} {}{\empty}{}{\ } +\ConfigureToc{likesubsubsection} {}{\empty}{}{\ } +\ConfigureToc{paragraph} {\empty}{\ }{}{\ } +\ConfigureToc{part} {\empty}{\ }{}{\ } +\ConfigureToc{section} {\empty}{\ }{}{\ } +\ConfigureToc{subparagraph} {\empty}{\ }{}{\ } +\ConfigureToc{subsection} {\empty}{\ }{}{\ } +\ConfigureToc{subsubsection} {\empty}{\ }{}{\ } +>>> + + + +\<config book-report 0.0\><<< +|<report,book tocs|> +\Configure{chapter}{}{} {\chaptername \ \thechapter} {} +\Configure{chapterTITLE+}{} +\Configure{likechapter}{}{}{\empty}{} +\Configure{appendix}{}{}{\appendixname \ \thechapter}{} +\Configure{appendixTITLE+}{} +>>> + + + +\section{emulateapj} + + +\<configure html0 emulateapj\><<< +|<config emulateapj.clo 0.0|> +>>> + + + +\<config emulateapj.clo 0.0\><<< +\Configure{slugcomment}{}{} +>>> + +\<config emulateapj.clo 0.0\><<< +\Configure{subtitle}{}{} +>>> + +\<config emulateapj.clo 0.0\><<< +\Configure{submitted}{}{} +>>> + +\<config emulateapj.clo 0.0\><<< +\Configure{title}{}{} +>>> + +\<config emulateapj.clo 0.0\><<< +\Configure{author}{}{} +>>> + +\<config emulateapj.clo 0.0\><<< +\Configure{affil}{}{} +>>> + + +\<config emulateapj.clo 0.0\><<< +\Configure{keywords}{}{} +>>> + +\<config emulateapj.clo 0.0\><<< +\Configure{subjectheadings}{}{} +>>> + + + + + +\section{aa} + + +\<configure html0 aa\><<< +|<configure aa 0.0|> +|<makeketitle config 0.0|> +|<latex shared div config|> +>>> + +\<configure aa 0.0\><<< +\Configure{subtitle institute}{}{}{}{}{}{}{} +\Configure{maketitle}{}{}{}{} +\Configure{thanks author date and}{}{}{}{}{}{}{}{} +>>> + + + + + + + +\section{vanilla} + + +\<configure html0 vanilla\><<< +|<config vanilla.sty 0.0|> +|<config amsppt + vanilla 0.0|> +>>> + + +\<config vanilla.sty 0.0\><<< +\Configure{heading}{}{}{}{} +\ConfigureToc{heading}{}{}{}{} +\Configure{subheading}{}{}{}{} +\ConfigureToc{subheading}{}{}{}{} +\Configure{demo}{}{}{}{} +>>> + + +\<config vanilla.sty 0.0\><<< +\Configure{aligned}{}{}{}{}{}{} +>>> + +\<config vanilla.sty 0.0\><<< +\Configure{align}{}{}{}{}{}{} +>>> + + + + + + + + + + + +\section{amsart, amsproc, amsbook} + + +\<configure html0 amsart\><<< +|<ams art,proc,book 0|> +>>> + + + +\<configure html0 amsproc\><<< +|<ams art,proc,book 0|> +>>> + + + +\<configure html0 amsbook\><<< +|<ams art,proc,book 0|> +>>> + + + + +\section{amstex} + + +\<configure picmath0 amstex\><<< +\:CheckOption{no-matrix} \if:Option \else +\:CheckOption{pic-matrix} \if:Option + |<pic amstex.tex matrix 0.0|> +\else + |<tabular amstex.tex matrix 0.0|> +\fi\fi +\:CheckOption{no-align} \if:Option \else +\:CheckOption{pic-align} \if:Option + |<pic amstex.tex align 0.0|> +\else + |<tabular amstex.tex align 0.0|> +\fi\fi +>>> + + + + + + + + + + +Do we need the following? Don't those of plain.sty are good here? + +\<pic amstex.tex matrix 0.0\><<< +\Configure{matrix}{}{} +>>> + + +\<pic amstex.tex matrix 0.0\><<< +\Configure{pmatrix}{}{} +>>> + + +\<tabular amstex.tex matrix 0.0\><<< +\Configure{matrix}{}{}{}{}{}{} +>>> + +\<tabular amstex.tex matrix 0.0\><<< +\Configure{pmatrix}{}{} +>>> + + + + + + + + +\section{amsppt} + + +\<configure html0 amsppt\><<< + |<config amsppt + vanilla 0.0|> +>>> + + + + +\section{moreverb.sty} + + +\<configure html0 moreverb\><<< +\ConfigureEnv{verbatimtab}{}{}{}{\null} +\ConfigureEnv{verbatimtab*}{}{}{}{\null} +\ConfigureEnv{boxedverbatim}{}{}{}{\null} +\ConfigureEnv{boxedverbatim*}{}{}{}{\null} +>>> + + +\section{url} + + +\<configure html0 url\><<< +\Configure{url}{#1} +>>> + + +\section{array.sty} + + +\<configure html0 array\><<< + \Configure{VBorder}{}{}{}{} + \Configure{array}{}{}{}{}{}{} + \Configure{tabular}{}{}{}{}{}{} +>>> + + +\section{slidesec} + + +\<configure html0 slidesec\><<< + \ConfigureToc{slidesection}{\empty}{ }{}{} +>>> + + + +\section{epsfig} + +\<configure html0 epsfig\><<< +|<0,32,4 epsfig|> +>>> + +\section{psfig} + +\<configure html0 psfig\><<< +|<0,32,4 psfig|> +>>> + +\section{graphics} + +\<configure html0 graphics\><<< +|<0,32,4 graphics|> +>>> + + +\section{th4} + +\<configure html0 th4\><<< +\Configure{Verbatim}{}{}{}{} +|<0 th4,latex|> +|<0 th4|> +>>> + + + + + + + + +\section{Shared in html0} + + + +\<ams art,proc,book 0\><<< +|<makeketitle config 0.0|> +>>> + + +\<config book-report-article 0.0\><<< +|<makeketitle config 0.0|> +>>> + + +\<makeketitle config 0.0\><<< +\Configure{caption}{}{}{}{} +>>> + + +\<itemitem 0.0\><<< +\Configure{itemitem}{}{}{\par\leavevmode}{} +>>> + + +\<config amsppt + vanilla 0.0\><<< +\Configure{title}{}{} +>>> + +\<config amsppt + vanilla 0.0\><<< +\Configure{author}{}{} +>>> + +\section{amsart} + + + + + +\<ams art,proc,book 32\><<< + |<config sections 3.2|> +|<book-report-article caption 3.2|> + |<latex report,... config 3.2|> +|<32,4 ams art,proc,book|> +>>> + + + + + + + + +\section{latex.ltx} + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltplain.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{obeylines} + + + + + + +\<obeylines confg\><<< +\Configure{obeylines} + {} {} {\hbox{\HCode{<br>}}} +>>> + +Typically, \verb'\obeylines' appears in a separate line before the +content. The following option is introduced to avoid an extra leading +empty line. + +\<delayed obeylines confg\><<< +\Configure{obeylines} + {\def\Line:Break{\def\Line:Break{\hbox{\HCode{<br>}}}}} {} + {\Line:Break} +>>> + + + + + +\subsection{Tabbing, Tabular and Array Environments} + + + + + + +\<PICT dot tabbing\><<< +\:CheckOption{pic-tabbing'} \if:Option + \edef\:temp{\LikeRef{|<tabbing tag|>.}}% + \def\:tempa{.}\ifx \:temp\:tempa + \ConfigureEnv{tabbing}{\Picture*{}}{\EndPicture}{}{} + \fi +\fi +>>> + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%% to be placed %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{to be placed} + + +\<32 picmath th4,latex\><<< +\Configure{[]} + {\PicDisplay$$\everymath{}\everydisplay{}} + {$$\EndPicDisplay} +\Configure{()}{\PicMath$}{$\EndPicMath} +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\section{plain} + + + + + + +A `\verb'\begin{multline}...\end{multline}' is not a standard environment +in the sense that the environment as a whole is read in one piece and +then processed, instead of reading it piecewise and process it as it +goes. That is, we have a behavior similar to that in verbatim +environments. The behavior is due to multline being implemented in +terms of \verb'\gather@#1{..}'. Hence, for the picture environment, we +need to change early the catcodes of `\verb'_' and `\verb'^'. + + + + +\<extract amsmath labels\><<< +\def\ExtractHLabel{% + \def\tagform@##1{{\xdef\:HLabel{\noexpand\tagform@{##1}}}}} +\def\PutHLabel{\:HLabel} +>>> + + + + + + + + +\section{tex4ht} + + + + + + + +\<src note\><<< +<!--\FileName\space from \jobname.tex +(TeX4ht)-->% +>>> + + + +\section{tex4ht} + + + + +\<try inline par\><<< +\ShowPar\par{\HCondtrue\noindent}% +>>> + + + + + + + + + + + + + + +\verb'\endgraf' is safer than \verb'\par', because the latter may be redefined. +For instance, see p 262 in texbook. + + + + +\section{latex} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\<0 plain,latex\><<< +\Configure{l} {} +\Configure{L} {} +>>> + + + + + +\<0 latex\><<< +\Configure{mathellipsis} {} +>>> + + +\<0 plain\><<< +\Configure{ldots} {} +>>> + +\<configure html4-math amsmath\><<< +\Configure{@cdots} {} +\Configure{iint} {} +\Configure{iiint} {} +\Configure{iiiint} {} +\Configure{idotsint} {} +\Configure{doteq} {} +>>> + + +\section{amsmath} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\<temp hcode accents\><<< +\HCode{&\expandafter \ifx\csname U#2#1\endcsname\relax + #2#1\else \#x\csname U#2#1\endcsname\fi;}% +>>> + + + + + + + +\<xmlns\><<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + + + + + + + + + + + + + + +\subsection{TeX Engine} + + + + + + + +The \verb'\trap:base' is to catch empty bases of exponents like, e.g., +in \verb'$a^{^b}$'. + + + + + + + + + + + +\<?\><<< +\def\MathRow#1{% + \Configure{\expandafter\:gobble\string#1*}{*}% + {<|.mrow\Hnewline + class="\expandafter\:gobble\string#1">}{</|.mrow>}% + {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}% +>>> + + +\<recall dvimath par\><<< +\sv:ignore +>>> + + + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + + + +The \verb'\MathRow' requests a \verb'<|.mrow\Hnewline>...</|.mrow>', instead of the contributions +of \verb'\mathop', \verb'\mathrel',...., for the next parameter. + + + + + + + + + + + + + + + + + +\subsection{latex.ltx} + + + + + + + + + + + + + + + + + + +Definitions like \verb'\def\mathbf#1{\a:mathbf#1\b:mathbf}' +can't be done on a global level, because \verb'\mathbf' is just +a name of a font. So, for instance, \verb'\bf' expands to \verb'\mathbf', +and so \verb'$\bf R$' indirectly brings up the latter command. + + + + + +\subsection{plain.sty} + + + + + + + +\subsection{Palin + LaTeX} + +The default \verb'\left' and \verb'\right' in their default definition +with tex produce multi-part delimiters, from cmex, on large +subformulas. Hence, the `'.' below is needed. + + + + + + + + + + + + + +% \def\:tempa{\{}\ifx \:tempa\:DEL \let\:DEL\lbrc: \else +% \def\:tempa{\}}\ifx \:tempa\:DEL \let\:DEL\rbrc: \else +% \def\:tempa{<}\ifx \:tempa\:DEL \def\:DEL{\string<}\else +% \def\:tempa{>}\ifx \:tempa\:DEL \def\:DEL{\string>}% +% \fi\fi\fi\fi } +% \edef\lbrc:{\string{} \edef\rbrc:{\string}} + + + + + +% \HCode{\string#1;}% + + + + + + + + + + + + + + + + + + + + + + + + The \verb'\HCode{}' in \verb'\sideset' is for catching superscripts and subscripts + + + + + + +\section{Eqnarray} + + + + + +Had `BASELINE' before `MIDDLE', but changed to conform with math +in page 252-- in intro to theory book. + + + + + + + + + +\section{Big, BIG, ....} + + + +The +\verb'\special{t4ht@[}...\special{t4ht@]}' gobble the enclosed stuff. +The external pair is provided as grouping mechanism for +sub/super-scripts cases like \verb'\bigl(...\bigr)^x' within dvimath +mode. The \verb'{\HCode{}}' is neded for creating content delimiters +\verb'.' delimiters like in \verb'$\bigl. a_b \bigr)$'; without that mathml +gets something wrong there. + + + +\verb+\bigl{.}+ et al produce empty para,etr , hence the \verb+\:EMPTY+ is a ompensation for such cases. + + + + + + + + + + + + + + + + + +\section{Accents through `accents' Configurations} + + + + + +Why originally the accents are defined within a group? (knuth answer +this in the texbook.) + + + + +\section{Underline and Overline} + + + + + + + + + +\section{Space Characters} + + + + + +\subsection{Cases} + + + + +\subsection{matrix} + + + +\subsection{pmatrix} + + +The grouping below is handle the case that the matrix is a base of an exponent. + + + +\section{TeX} + + + + + + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<par del\><<< +!*?: >>> + + +\<tag of Tag\><<< + cw:>>> + +\<tail\><<< +tail>>> + +\<addr for Tag and Ref of Sec\><<< +\xdef\:cursec{|<section html addr|>}% +>>> + + + + + + + +\<redefine Configure\><<< +\let\:tempd|=\Configure +\def\Configure#1#2{% + \:CheckOption{#1}\if:Option \def\:tempc{#2}\fi} +>>> + +\<recall Configure\><<< +\let\Configure|=\:tempd +>>> + + +\<user's configuration files\><<< +\openin15=tex4ht.usr \ifeof15 \else \closein15 + \input tex4ht.usr +\fi +>>> + + + + + + + +\<save catcodes\><<< +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else + \csname :RestoreCatcodes\endcsname \fi + \catcode`\noexpand :|=\the\catcode`:% + \ifnum \the\catcode`\#=6 \else + \catcode`\noexpand \#|=\the\catcode`\#\fi + \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|= + \noexpand\UnDefcS} +\catcode`\:|=11 \catcode`\#|=6 +>>> + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-html32.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html32.tex new file mode 100644 index 00000000000..ec6f767bde6 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html32.tex @@ -0,0 +1,7429 @@ +% $Id: tex4ht-html32.tex 414 2018-06-12 23:04:41Z karl $ +% latex tex4ht-html32 +% or xhlatex tex4ht-html32 "html,3,sections+" +% +% Copyright 2009-2018 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{html32,html32-math} + \def\CONFIG{\jobname} + \def\PREAMBLE{% + \usepackage{url}% + } + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + + + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +\def\.{\string\a:mathml:\space} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{The Calling Tree for 4ht Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<0,32,4 tex4ht\><<< +\if:latex |<Hinclude latex|> +\else |<Hinclude plain|> \fi +>>> + + +\<0,32,4 plain\><<< +|<Hinclude plain lib|> +|<Hinclude plain + latex lib|> +>>> + +\<0,32,4 latex\><<< +|<Hinclude latex lib|> +|<Hinclude plain + latex lib|> +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Structures} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Front} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<book-report-article make title\><<< +\Configure{maketitle} + {|<title for TITLE|>% + \HCode{<div align="center">}}{\HCode{</div>}} + {\IgnorePar\HCode{<h2 class="maketitleHead">}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent} +\Configure{thanks author date and} + {\HCode{<div align="left"><i>}}{\HCode{</i></div>}} + {\HCode{<div align="center">}}{\HCode{</div>}} + {\HCode{<div align="center">}}{\HCode{</div>}} + {\:nbsp\:nbsp\:nbsp}{\HCode{<br\xml:empty>}} +\Configure{thank} + {\HCode{<sup>}\Link{tk-\the\c@footnote}{}} + {\EndLink\HCode{</sup>}} + {\HCode{<br\xml:empty>}\protect\Link{}{tk-\the\c@footnote}\protect + \EndLink\HCode{<sup>}} + {\HCode{</sup>}} {} +>>> + + + + + +\<configure aa 3.2/4.0t\><<< +\Configure{subtitle institute} + {\HCode{<br\xml:empty><span class="subtitle">}}{\HCode{</span>}} + {\HCode{<div class="institute">}}{\HCode{</div>}} + {\Tg<sup>}{\Tg</sup>} + {\HCode{<br\xml:empty>}} + +\Configure{maketitle} + {\HCode{<div align="center" class="maketitle">}} + {\HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="maketitleHead">}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Configure{thanks author date and}{}{} + {\HCode{<div class="author" align="center">}}{\HCode{</div>}} + {\HCode{<div class="date" align="center">}}{\HCode{</div>}} + {\SPAN:{and}and\EndSPAN:} + {\HCode{<br\xml:empty>}} +>>> + + + +\<configure aa 3.2/4.0t\><<< +\ConfigureEnv{abstract} + {\:xhtml{\IgnorePar\EndP}\HCode {<div class="abstract">}} + {\HCode{</div>}}{}{} + +\Css{div.abstract{text-align:center;}} + +\Configure{makeheadbox} + {\HCode{<table class="makeheadbox" + width="100\%"><tr><td><table><tr><td>}} + {\HCode{</td></tr><tr><td>}} + {\HCode{</td></tr><tr><td>}} + {\HCode{</td></tr></table></td><td class="AALogo" width="10\%">}} + {\HCode{</td></tr></table>}} +>>> + +% \Css{.AALogo{font-size:120\%;font-weight: bold; text-align:right;}} + +\<32,4 amsbook\><<< +\Configure{authors}{\HCode{<center>}}{\HCode{</center>}} +\Configure{title} + {\HCode{<center>}\IgnorePar\HCode{<h2 class="titleHead">}} + {\HCode{</h2>}\IgnoreIndent\HCode{</center>}} +\Configure{addresses}{\HCode{<center>}\IgnorePar} + {\IgnorePar\HCode{</center>}} +\Configure{date}{\HCode{<center>}}{\HCode{</center>}} +\Configure{keywords}{\HCode{<center>}}{\HCode{</center>}} +\Configure{abstract}{\HCode{<div><\tbl:XV><tr><td\Hnewline + >}\IgnorePar}{\end:env} +\ConfigureEnv{abstract}{}{}{}{} +\Configure{thanks}{\HCode{<center>}}{\HCode{</center>}} +\Configure{subjclass} + {\ShowPar\par\HCode{<center>}\bgroup + \Configure{HtmlPar}{\HCode{<br\xml:empty>}} + {\HCode{<br\xml:empty>}}{}{}} + {\egroup\HCode{</center>}} +\Configure{translators}{\HCode{<center>}}{\HCode{</center>}} + +>>> + + + + +\<title for TITLE\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection |<disable latex fonts|>\more:no \let\thanks|=\:gobble +\let\\|=\empty \def\TeX{TeX}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\Tag{TITLE+}{\@title}} +>>> + +\<disable latex fonts\><<< +\let\leavevmode|=\empty \let\not@math@alphabet|=\:gobbleII +\def\text@command##1{##1}\let\selectfont|=\empty +\def\check@icl ##1\check@icr{}% +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Plain} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<32,4 plain\><<< +\Configure{vfootnote} + {\HPageButton[fn\FNnum]{\FNmark}} + {\BeginHPage[fn\FNnum]{ }} + {\EndHPage{}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<latex footnotes\><<< +|<footnote mark|> +|<footnote text|> +>>> + + + +\<footnote text\><<< +\Configure{footnotetext} + {|<open footnote page|>% + \leavevmode \Link{}{|<footnote id|>}% + \NoFonts + } + {\EndNoFonts \EndLink} + {|<close footnote page|>} +>>> + +\<footnote mark\><<< +\Configure{footnotemark} + {\leavevmode |<footnotemark link|>\NoFonts + \Tag{|<footnote id|>}{}} + {\EndNoFonts |<end footnotemark link|>} +>>> + + +\<open footnote page\><<< +\ifTag{|<footnote id|>} + {\expandafter\ifx\csname (|<footnote id|>)\endcsname\def + \:warning{Multiple footnote texts for mark \FNnum}% + \else \HPage{}\fi + } + {}% +>>> + +\<close footnote page\><<< +\ifTag{|<footnote id|>} + {\expandafter\ifx\csname (|<footnote id|>)\endcsname\def + \else \EndHPage{}\fi + } + {}% +\expandafter\global\expandafter + \let\csname (|<footnote id|>)\endcsname\def +>>> + +\<footnotemark link\><<< +\ifTag{|<link tag to footnotetext|>|<footnote id|>} + {\Link{|<footnote id|>}{}} + {}% +>>> + +\<end footnotemark link\><<< +\ifTag{|<link tag to footnotetext|>|<footnote id|>} + {\EndLink} + {}% +>>> + + + +\<footnote id\><<< +fn\FNnum x\minipageNum +>>> + +\<link tag to footnotetext\><<< +)Q>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{AMS} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<ams footnotes\><<< +|<ams footnote mark|> +|<ams footnote text|> +>>> + + + +\<ams footnote text\><<< +\Configure{footnotetext} + {|<open footnote page|>% + \HCode{<sup>}\Link{}{|<footnote id|>}% + \NoFonts + } + {\EndNoFonts \EndLink \HCode{</sup>}} + {|<close footnote page|>} +>>> + +\<ams footnote mark\><<< +\Configure{footnotemark} + {\HCode{<sup>}|<footnotemark link|>\NoFonts + \Tag{|<footnote id|>}{}} + {\EndNoFonts |<end footnotemark link|>\HCode{</sup>}} +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Floating} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%% +\section{Wrapfig} +%%%%%%%%%%%%%%%%% + +\<configure html32 wrapfig\><<< +\Configure{wrapfloat} + {\getWFplace + \ifvmode\IgnorePar\EndP + \HCode{<div \WFplace>}% + \def\endWrap{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}\par}% + \else + \HCode{<span \WFplace>}\bgroup + |<config span caption|>% + \def\endWrap{\egroup\HCode{</span>}}% + \fi + } + {\endWrap} +\def\getWFplace{% + \let\:tempa=\empty + \def\:temp##1r##2//{\if !##2!\else + \def\:tempa{align="left"}\fi}% + \expandafter\:temp\WFplace l//% + \def\:temp##1r##2//{\if !##2!\else + \def\:tempa{align="right"}\fi}% + \expandafter\:temp\WFplace r//% + \let\WFplace=\:tempa } +>>> + +\<config span caption\><<< +\Configure{caption} + {\HCode{<br\xml:empty><span class="caption"><b>}} + {\HCode{</b>}: }{}{\HCode{</span><br\xml:empty>}}% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Etc} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +\<0,32,4 preambles\><<< +|<date utility|> +|<cascade style sheets|> +\Configure{Preamble} + {|<default cascade style sheets|>} {} +>>> + + +\<default cascade style sheets\><<< +{\ifdim \lastskip>\z@ \unskip\fi \IgnorePar\parindent\z@ +\leavevmode}% +\writesixteen{--- file \aa:CssFile\space ---}% +\ht:special{t4ht>\aa:CssFile}\ht:special{t4ht=\Hnewline /* css.sty */}% +\ht:special{t4ht<\aa:CssFile}% +>>> + + + + + + + + + +\verb'\special' are like \verb'\hbox', and they so they may introduve empty lines in +vertical mode. That might be a problem if we don't want empty lines at +the start of the files. Hence, in latex we give them special treatment. + + + +\<cascade style sheets\><<< +\ScriptCommand{\CssFile}{% + \writesixteen{--- file \aa:CssFile\space ---}% + \def\FontSize##1##2{\:Context{##1}\ht:special{t4ht;\%##2}\%}% + \def\FontName##1{\:Context{##1}\ht:special{t4ht;=}}% + \def\:Context##1{\ht:special{t4ht>\jobname.tmp}##1\ht:special + {t4ht>\aa:CssFile}}% + \ht:special{t4ht>\jobname.tmp}\ht:special{t4ht>\aa:CssFile}\bb:CssFile + \hfil\break\NoFonts}{\EndNoFonts + \ht:special{t4ht<\aa:CssFile}\ht:special{t4ht<\jobname.tmp}} +\let\Css:File|=\CssFile +\def\CssFile{\futurelet\:temp\Css:Fl} +\def\Css:Fl{\ifx [\:temp \expandafter\Css:fl + \else \expand:after{\Css:File \space}\fi} +\def\Css:fl[#1]{\Css:File\space \css:files #1,,|<par del|>} +\def\css:files#1,#2|<par del|>{\def\:temp{#1}\ifx \:temp\empty + \else \def\:temp{\in:css#1.|<par del|>\css:files#2,,|<par del|>}\fi + \:temp } +\def\in:css#1.#2|<par del|>{\def\:temp{#2}\ifx \:temp\empty \input #1.css + \else \inc:ss#1.#2|<par del|>\fi} +\def\inc:ss#1.|<par del|>{\input #1 } +\NewConfigure{CssFile}[2]{\def\aa:CssFile{#1}\def\bb:CssFile{#2}} +>>> + +\verb'\CssFile[file-name,filename.ext,..]...\EndCssFile'. + +Default file, just in case the user doesn't provide one. If +the user does, the following file will be overwritten. + +Can't use below \verb'\a:CssFile' and \verb'\b:CssFile', because +\verb'\ScriptFile{\CssFile}' also needs them. + + + +\verb'\Css' changes its definition upon reachin \verb'\CssFile'. The +first definition is needed within the sty files, and the info is +sent to the lg file (where else it can be sent?). + + +\<cascade style sheets\><<< +\def\Css#1{{\def\:temp{\Configure{Needs}}% + \expandafter\:temp\expandafter{\aa:Css}\Needs{#1}}} +\let\send:css|=\Css +\ScriptCommand{\Css}{\HCode{<style + type="text/css">\Hnewline}\NoFonts}{\EndNoFonts\HCode{</style>}} +\let\loc:css|=\Css +\def\Css{\futurelet\:temp\:Css} +\def\:Css{\ifx \:temp\bgroup \expandafter\send:css + \else \expandafter\loc:css\fi} +>>> + + + +\<date utility\><<< +\tmp:cnt|=\time \divide\tmp:cnt |by 60 +\edef\:temp{\the\tmp:cnt} +\multiply\tmp:cnt |by -60 \advance\tmp:cnt |by \time +\edef\:today{\the\year-\ifnum \month<10 0\fi + \the\month-\ifnum \day<10 0\fi\the\day + \space\ifnum \:temp<10 0\fi \:temp + :\ifnum \tmp:cnt<10 0\fi\the\tmp:cnt :00} +>>> + + +\<date utility\><<< +\:CheckOption{hooks++} \if:Option + \else \:CheckOption{hooks+} + \if:Option \else \:CheckOption{hooks}\fi + \fi +\if:Option + \Configure{hooks} + {\HCode{<strong class="hooks"><}}{\HCode{></strong>}}{}{} +\fi +>>> + + + + + + +The following provides a faster version +than \verb'\LinkCommand\Link{a,href,name,}' for the \verb'\Link' +command + +\<32,4 tex4ht\><<< +\Configure{Link}{a}{href=}{name=}{} +>>> + + + +\section{article} + +\<config book-report-article 3.2\><<< +|<book-report-article make title|> +|<book-report-article caption 3.2|> +|<latex report,... config 3.2|> +|<latex config div|> +|<latex config like div 3.2|> +>>> + + + +\<32,4 report,book\><<< +\ConfigureEnv{description}{\IgnorePar}{}{}{} + +>>> + + + +\section{alsart} + + + +\<configure html32 elsart\><<< +|<32,4 elsart|> +\Configure{abstract}{\HCode{<\tbl:XV{abstract}><tr><td\Hnewline + >}}{\end:env} +\Configure{keyword}{\HCode{<\tbl:XV{keyword}><tr><td\Hnewline + >}}{\end:env} +\Configure{title} + {\IgnorePar\EndP\Tg<h2 class="title">\NoFonts} + {\EndNoFonts\Tg</h2>} +>>> + + +\<32,4 elsart\><<< +\ConfigureEnv{frontmatter} + {\EndP\IgnorePar + \HCode{<\tbl:XV{frontmatter}><tr><td><div align="center"\Hnewline>}} + {\IgnorePar\EndP\HCode{</div>}\end:TTT\IgnorePar} + {}{} +>>> + +\section{report} + + + +\<32,4 report\><<< +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead">}% + \chaptername \ \thechapter\HCode{<br\xml:empty>}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{chapterTITLE+}{\thechapter\space#1} +>>> + + +\<32,4 report,book\><<< +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead">} + \appendixname \ \thechapter\HCode{<br\xml:empty>}} + {\HCode{</h2>}\IgnoreIndent} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead">}} + {\HCode{</h2>}\IgnoreIndent} + +\Configure{endchapter}{likechapter,appendix,part,likepart} +\Configure{endlikechapter}{chapter,appendix,part,likepart} +\Configure{endappendix}{chapter,likechapter,part,likepart} +>>> + +\section{book} + + + + + + + +\<32,4 book\><<< +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead">} + \if@mainmatter \chaptername \ \thechapter\HCode{<br\xml:empty>}\fi} + {\HCode{</h2>}\IgnoreIndent} +\Configure{chapterTITLE+}{\if@mainmatter\thechapter\space\fi#1} +\renewcommand\thechapter {\if@mainmatter\@arabic\c@chapter\fi} +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\section{latex.ltx} +%%%%%%%%%%%%%%%%%%%% + + +\<latex options 1, 2, 3\><<< +\:CheckOption{7} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<cut toc: subsubsec|> + |<cutat: subsubsection|> + |<cut toc: paragraph|> + |<cutat: paragraph|> + |<cut toc: subparagraph|> + |<cutat: subparagraph|> + |<tocat: part|> + |<tocat: section|> + |<tocat: subsection|> + |<tocat: subsubsection|> + |<tocat: paragraph|> + \else + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: ch|> + |<cutat: chapter|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<cut toc: subsubsec|> + |<cutat: subsubsection|> + |<cut toc: paragraph|> + |<cutat: paragraph|> + |<cut toc: subparagraph|> + |<cutat: subparagraph|> + |<tocat: part|> + |<tocat: ch|> + |<tocat: section|> + |<tocat: subsection|> + |<tocat: subsubsection|> + |<tocat: paragraph|> + \fi +\else\:CheckOption{6} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<cut toc: subsubsec|> + |<cutat: subsubsection|> + |<cut toc: paragraph|> + |<cutat: paragraph|> + |<tocat: part|> + |<tocat: section|> + |<tocat: subsection|> + |<tocat: subsubsection|> + \else + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: ch|> + |<cutat: chapter|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<cut toc: subsubsec|> + |<cutat: subsubsection|> + |<cut toc: paragraph|> + |<cutat: paragraph|> + |<tocat: part|> + |<tocat: ch|> + |<tocat: section|> + |<tocat: subsection|> + |<tocat: subsubsection|> + \fi +\else \:CheckOption{5} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<cut toc: subsubsec|> + |<cutat: subsubsection|> + |<tocat: part|> + |<tocat: section|> + |<tocat: subsection|> + \else + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: ch|> + |<cutat: chapter|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<cut toc: subsubsec|> + |<cutat: subsubsection|> + |<tocat: part|> + |<tocat: ch|> + |<tocat: section|> + |<tocat: subsection|> + \fi +\else\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<tocat: part|> + |<tocat: section|> + \else + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: ch|> + |<cutat: chapter|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<tocat: part|> + |<tocat: ch|> + |<tocat: section|> + \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: sec|> + |<cutat: sec|> + |<cut toc: subsec|> + |<cutat: subsection|> + |<tocat: part|> + |<tocat: section|> + \else + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: ch|> + |<cutat: chapter|> + |<cut toc: sec|> + |<cutat: sec|> + |<tocat: part|> + |<tocat: ch|> + \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: sec|> + |<cutat: sec|> + |<tocat: part|> + \else + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> + |<cut toc: ch|> + |<cutat: chapter|> + |<tocat: part|> + \fi +\else\:CheckOption{1} \if:Option + |<cut toc: part|> |%cut toc before cutat|% + |<cutat: part|> +\else + \Log:Note{for automatic sectioning + pagination, use the command line option + `1', `2', `3', '4', '5', '6', or '7'}% +\fi \fi \fi \fi \fi \fi \fi +>>> + + + + +\<cut toc: part\><<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*} + {part,chapter,appendix} +\else + |<notoc* note|> + \Configure{tableofcontents*} + {part,likepart,chapter,likechapter,appendix} +\fi +>>> + + + +\<cutat: part\><<< +\CutAt{part} +\CutAt{likepart} +>>> + + + + +\<tocat: part\><<< +\:CheckOption{notoc*} \if:Option +\else + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{part,/likepart,chapter,likechapter,appendix,% + section,likesection} + \TocAt*{likepart,/part,chapter,likechapter,appendix,% + section,likesection} + \fi +\fi +>>> + +\<note nominitoc\><<< +\Log:Note{to eliminate mini tables of + contents, use the command line option `nominitoc'} +>>> + + +\<cut toc: ch\><<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section\expandafter\ifx + \csname @chapter\endcsname\relax ,subsection\fi} +\else + |<notoc* note|> + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection\expandafter\ifx + \csname @chapter\endcsname\relax ,subsection,likesubsection\fi} +\fi +>>> + + + + + +\<cutat: chapter\><<< +\CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} +>>> + +\<cut toc: sec\><<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,appendix,section% + \expandafter\ifx \csname @chapter\endcsname\relax + ,subsection\fi} +\else + |<notoc* note|> + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection% + \expandafter\ifx \csname @chapter\endcsname\relax + ,subsection,likesubsection\fi} +\fi +>>> + + +\<tocat: section\><<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{section,/likesection,/chapter,/likechapter,/appendix,/part,% + subsection,subsubsection} + \TocAt*{likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsection,subsubsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{section,/likesection,/chapter,/likechapter,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \TocAt*{likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \fi +\fi +>>> + +\<cutat: sec\><<< +\CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +>>> + +\<tocat: ch\><<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{chapter,/likechapter,/appendix,/part,% + section,subsection} + \TocAt*{likechapter,/appendix,/chapter,/part,% + section,subsection} + \TocAt*{appendix,/chapter,/likechapter,/part,% + section,subsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{chapter,/likechapter,/appendix,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{likechapter,/appendix,/chapter,/part,% + section,likesection,subsection,likesubsection} + \TocAt*{appendix,/chapter,/likechapter,/part,% + section,likesection,subsection,likesubsection} + \fi +\fi +>>> + + +\<cut toc: subsec\><<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection} +\else + |<notoc* note|> + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,likesubsection,subsection} +\fi +>>> + + +\<cutat: subsection\><<< +\CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +>>> + + + +\<tocat: subsection\><<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + subsubsection,paragraph} + \TocAt*{likesubsection,/subsection,/likesection,% + /section,/chapter,/likechapter,/appendix,/part,% + subsubsection,paragraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + subsubsection,likesubsubsection,% + paragraph} + \TocAt*{likesubsection,/subsection,% + /likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsubsection,likesubsubsection,% + paragraph} + \fi +\fi +>>> + + +\<cut toc: subsubsec\><<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection} +\else + |<notoc* note|> + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection} +\fi +>>> + + + + +\<tocat: subsubsection\><<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{subsubsection,/likesubsubsection,/subsection,% + /likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + paragraph,subparagraph} + \TocAt*{likesubsubsection,/subsubsection,/likesubsection,% + /subsection,/likesection,% + /section,/chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{subsubsection,/likesubsubsection,% + /subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \TocAt*{likesubsubsection,/subsubsection,/likesubsection,/subsection,% + /likesection,/section,/chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \fi +\fi +>>> + + + + + + +\<cut toc: paragraph\><<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection,paragraph} +\else + |<notoc* note|> + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection,% + paragraph} +\fi +>>> + + +\<tocat: paragraph\><<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{paragraph,/subsubsection,/likesubsubsection,/subsection,% + /likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + subparagraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + |<note nominitoc|> + \TocAt*{paragraph,/subsubsection,/likesubsubsection,% + /subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + subparagraph} + \fi +\fi +>>> + + + + + + + + +\<cut toc: subparagraph\><<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection,% + paragraph,subparagraph} +\else + |<notoc* note|> + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection,% + paragraph,subparagraph} +\fi +>>> + + +\<cutat: subsubsection\><<< +\CutAt{subsubsection,subsection,likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsubsection,subsection,likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +>>> + +\<cutat: paragraph\><<< +\CutAt{paragraph,subsubsection,likesubsubsection,subsection,likesubsection,% + section,likesection,chapter,likechapter,appendix,part} +>>> + +\<cutat: subparagraph\><<< +\CutAt{subparagraph,paragraph,subsubsection,likesubsubsection,% + subsection,likesubsection,% + section,likesection,chapter,likechapter,appendix,part} +>>> + + + + + + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltplain.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{obeylines} + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltspace.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Spaces} + +\<32,4 latex\><<< +\Configure{hspace}{}{}{\:nbsp} +>>> + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltlogos.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Logos} + + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltoutenc.dtx + %%%%%%%%%%%%%%%%%%%%%%% + + + +\<0,32,4 plain,latex accents\><<< +\:CheckOption{new-accents} \if:Option + |<new accents|> +\else + |<old accents |> + |<old plain,latex accents|> +\fi +\let\^^_|=\v +>>> + + +\<0,32,4 latex\><<< +|<0,32,4 plain,latex accents|> +\let\@acci|=\' \let\@accii|=\` \let\@acciii|=\= +>>> + +\<0,32,4 plain\><<< +|<0,32,4 plain,latex accents|> +>>> + + +\<new accents\><<< +\:CheckOption{accent-} \if:Option + \Configure{HAccent}\acute{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\bar{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\breve{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\check{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\ddot{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\dot{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\grave{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\hat{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\tilde{AOaoNn{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\vec{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widehat{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widetilde{}{\Picture+{}}{\EndPicture} +\fi +\:CheckOption{mathaccent-} \if:Option + \Configure{HAccent}\"{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\'{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\.{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\={}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\H{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\^{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\`{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\b{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\c{Cc{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\d{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\t{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\u{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\v{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\~{AOaoNn{}}{\Picture+{}}{\EndPicture} +\fi +>>> + +\<new accents\><<< +\Configure{accent}{*} + {<!--tex4ht:accent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accent-->} +\Configure{mathaccent}{*} + {<!--tex4ht:mathaccent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end mathaccent-->} +\Configure{accented}{*} + {<!--tex4ht:accented\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accented-->} +\Configure{accenting}{*} + {<!--tex4ht:accenting\Hnewline-->} + {<!--tex4ht:end accenting-->} +>>> + + +\<old accents\><<< +\Configure{accent}\`\grave{A{A}E{E}I{I}O{O}U{U}% + a{a}e{e}i{i}\i{i}o{o}u{u}{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{A{A}E{E}I{I}O{O}U{U}Y% + {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{A{A}E{E}I{I}O{O}U{U}a{a}% + e{e}i{i}\i{i}o{o}u{u}{}{}} + {\a:accents{circ}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{A{A}O{O}a{a}o{o}N{N}n{n}{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{A{A}E{E}I{I}O{O}U{U}Y% + {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + + + + +The following are also placed under accents configuration. + +\<old accents\><<< +\Configure{accent}\c\c{C{C}c{c}{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{{}{}} {}{\b:accents{Huml}{#1}{#2}} +>>> + +The following originally have been defined to be parameter-less. + + + +\<old accents\><<< +\Configure{accent}\.\dot{{}{}} {}{\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{{}{}}{}{\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}}{}{\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\check{{}{}}{}{\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} {}{\b:accents{bar}{#1}{#2}} +>>> + + +% \= macron + +\<old accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {}{\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {}{\b:accents{widehat}{#1}{#2}} +>>> + + +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + + + + +%%%%%%%%%%%%% +\subsection{accents from html4} +%%%%%%%%%%%%% + + + +\<latex accents\><<< +\Configure{add accent}{T1:2} + {}{\ht:special{t4ht@+\string&\#x005E;}x} + {}{} +>>> + + + + +\<babel accents\><<< +|<optional iso-8859-2 accents|> +>>> + + + +\<old plain,latex accents\><<< +|<old iso-8859-1 accents|> +|<OT1 old iso-8859-1 accents|> +|<optional iso-8859-2 accents|> +>>> + + +\<old iso-8859-1 accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {\a:accents{widetilde}{#1}} {\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {\a:accents{widehat}{#1}} {\b:accents{widehat}{#1}{#2}} +>>> + + + +\<configure html32 latex\><<< +\ifOption{charset=iso-8859-7} + {|<T1 greek ldf iso-8859-7|>} + {} +\:CheckOption{new-accents} \if:Option +\else + |<T1 old iso-8859-1 accents|> +\fi +\let\^^_|=\v +>>> + + + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname + \csname T1\string\`\endcsname{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname + \csname T1\string\^\endcsname{|<circumflex codes|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname + \csname T1\string\~\endcsname{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\"\expandafter\endcsname + \csname T1\string\"\endcsname{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\r\endcsname + \mathring{|<ring codes|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\c\endcsname}% + \csname T1\string\c\endcsname{|<cedilla codes|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\t\endcsname}% + \csname T1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\H\endcsname}% + \csname T1\string\H\endcsname{{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\b\endcsname}% + \csname T1\string\b\endcsname{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\d\endcsname}% + \csname T1\string\d\endcsname{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname + \csname T1\string\.\endcsname + {|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname + \csname T1\string\u\endcsname + {|<breve codes|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\vec\expandafter\endcsname + \csname T1\string\vec\endcsname + {|<vec iso-8859-1|>{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname + \csname T1\string\v\endcsname + {|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname + \csname T1\string\=\endcsname + {|<macron codes|>{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname OT1\string\`\endcsname + \grave{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname + \acute{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\^\endcsname + \hat{|<circumflex codes|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\~\endcsname + \tilde{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname + OT1\string\"\expandafter\endcsname + \csname OT1\string\"\endcsname{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\Configure{accent}\ddot\ddot{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\r\endcsname + \mathring{|<ring codes|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\c\endcsname}% + \csname OT1\string\c\endcsname{|<cedilla codes|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\t\endcsname}% + \csname OT1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\H\endcsname}% + \csname OT1\string\H\endcsname{{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\b\endcsname}% + \csname OT1\string\b\endcsname{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\d\endcsname}% + \csname OT1\string\d\endcsname{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname OT1\string\.\endcsname + \dot{|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\u\endcsname + \breve{|<breve codes|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\vec\endcsname + \vec{|<vec iso-8859-1|>{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\v\endcsname + \check{|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\=\endcsname + \bar{|<bar iso-8859-1|>{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + + +\<OT1 old iso-8859-1 accents\><<< +|<ot1enc.def unicode|> +>>> + + + +\<ot1enc.def unicode\><<< +\expandafter\def + \csname OT1\string\l\endcsname{\ht:special{t4ht@+\string&{35}x0142{59}}x} +\expandafter\def + \csname OT1\string\L\endcsname{\ht:special{t4ht@+\string&{35}x0141{59}}x} +>>> + + + + +\<optional iso-8859-2 accents\><<< +\def\:temp{charset=iso-8859-2} +\ifx \a:charset\:UnDef + \ifx \A:charset\:temp \let\:temp=\def \fi +\else \ifx \a:charset\:temp \let\:temp=\def \fi +\fi +\ifx \:temp\def + \:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi \fi +>>> + + +\<old iso-8859-2 accents\><<< +|<T1 old iso-8859-2 accents|> +>>> + + + +\<old iso-8859-2 accents\><<< +\Configure{accent}\`\grave{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{|<circumflex codes|>{}{}} + {\a:accents{hat}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + +\<old iso-8859-2 accents\><<< +\Configure{accent}\c\c{|<cedilla codes|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{|<double acute iso-8859-2|>{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\Configure{accent}\b\b{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\Configure{accent}\d\d{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + +\<old iso-8859-2 accents\><<< +\Configure{accent}\.\.{|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\dot\dot{|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{|<breve codes|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\v{|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\Configure{accent}\check\check{|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + +\<configure html4 romanian\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + + +\<configure html4 croatian\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + + +\<configure html4 slovak\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + + +\<configure html4 slovene\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname + \csname T1\string\`\endcsname{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname + \csname T1\string\^\endcsname{|<circumflex codes|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname + \csname T1\string\~\endcsname{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\"\expandafter\endcsname + \csname T1\string\"\endcsname{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\r\endcsname}% + \csname T1\string\r\endcsname{|<ring codes|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\c\endcsname}% + \csname T1\string\c\endcsname{|<cedilla codes|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\t\endcsname}% + \csname T1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\H\endcsname}% + \csname T1\string\H\endcsname{|<double acute iso-8859-2|>{}{}} + {\a:accents{Huml}{#1}}{\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\b\endcsname}% + \csname T1\string\b\endcsname{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\d\endcsname}% + \csname T1\string\d\endcsname{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname + \csname T1\string\.\endcsname + {|<dot iso-8859-2|>{}{}} + {\a:accents{dot}{#1}}{\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname + \csname T1\string\u\endcsname + {|<breve codes|>{}{}} + {\a:accents{breve}{#1}}{\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\vec\expandafter\endcsname + \csname T1\string\vec\endcsname + {|<vec iso-8859-2|>{}{}} + {\a:accents{vec}{#1}}{\b:accents{vec}{#1}{#2}} +\expandafter\let\csname T1\string\v\endcsname\:UnDef +\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname + \csname T1\string\v\endcsname + {|<caron codes|>{}{}} + {\a:accents{check}{#1}}{\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname + \csname T1\string\=\endcsname + {|<bar iso-8859-2|>{}{}} + {\a:accents{bar}{#1}}{\b:accents{bar}{#1}{#2}} +>>> + + + + + + + +\<grave codes\><<< +A{00C0}E{00C8}I{00CC}N{01F8}O{00D2}U{00D9}W{1E80}% +Y{1EF2}a{00E0}e{00E8}i{00EC}n{01F9}o{00F2}u{00F9}% +w{1E81}y{1EF3}\i{00EC}% +>>> + + +\<acute codes\><<< +A{00C1}C{0106}D{010E}E{00C9}G{01F4}I{00CD}L{0139}N{0143}% +O{00D3}R{0154}S{015A}U{00DA}Y{00DD}Z{0179}a{00E1}c{0107}% +d{010F}e{00E9}g{01F5}i{00ED}l{013A}n{0144}o{00F3}r{0155}% +s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}% +>>> + + + + + +\<circumflex codes\><<< +A{00C2}E{00CA}I{00CE}O{00D4}U{00DB}a{00E2}e{00EA}% +i{00EE}o{00F4}u{00FB}C{0108}c{0109}G{011C}g{011D}% +H{0124}h{0125}J{0134}j{0135}S{015C}s{015D}W{0174}% +w{0175}Y{0176}y{0177}Z{1E90}z{1E91}\i{00EE}\j{0135}% +>>> + + + +\<tilde codes\><<< +A{00C3}N{00D1}O{00D5}a{00E3}n{00F1}o{00F5}I{0128}% +i{0129}U{0168}u{0169}V{1E7C}v{1E7D}E{1EBC}e{1EBD}% +Y{1EF8}y{1EF9}\i{0129}% +>>> + + + + + + +\<diaeresis codes\><<< +H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}% +t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}% +a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}% +Y{0178}\i{00EF}% +>>> + + + + +\<ring codes\><<< +A{00C5}a{00E5}U{016E}u{016F}% +>>> + + + + + + + +\<cedilla codes\><<< +K{0136}k{0137}L{013B}l{013C}N{0145}n{0146}% +R{0156}r{0157}S{015E}s{015F}T{0162}t{0163}% +E{0228}e{0229}D{1E10}d{1E11}H{1E28}h{1E29}% +C{00C7}c{00E7}G{0122}g{0123}% +>>> + + + + + + +\<dot above codes\><<< +C{010A}c{010B}E{0116}e{0117}G{0120}g{0121}% +I{0130}Z{017B}z{017C}A{0226}a{0227}O{022E}% +o{022F}B{1E02}b{1E03}D{1E0A}d{1E0B}F{1E1E}% +f{1E1F}H{1E22}h{1E23}M{1E40}m{1E41}N{1E44}% +n{1E45}P{1E56}p{1E57}R{1E58}r{1E59}S{1E60}% +s{1E61}T{1E6A}t{1E6B}W{1E86}w{1E87}X{1E8A}% +x{1E8B}Y{1E8E}y{1E8F}% +>>> + + + + + + + + + +\<breve codes\><<< +g{011F}I{012C}i{012D}O{014E}o{014F}% +U{016C}u{016D}A{0102}a{0103}E{0114}% +e{0115}G{011E}\i{012D}% +>>> + + + + + +\<vec iso-8859-1\><<< +>>> + +\<bar iso-8859-1\><<< +>>> + + + + +\<caron codes\><<< +C{010C}c{010D}D{010E}d{010F}% +E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}% +S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}% +i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}% +j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}% +>>> + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltfssini.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{tt Font} + +\<0,32,4 latex\><<< +\ifx \ttfamily\:UnDef \else \Configure{tt}{\ttfamily} \fi +>>> + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltxref.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Cross References} + + +\<32,4 latex\><<< +\Configure{ref}{\Link}{\EndLink}{} +>>> + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmiscen.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Miscellaneous Environments} + + +\<32,4 plain,latex\><<< +\def\end:TTT{\EndP\HCode{</td></tr></table>}} +>>> + +\<32 latex\><<< +\ConfigureEnv{center}{\EndP}{\par \ShowPar} + {\EndP\IgnorePar + \HCode{<\tbl:XV{center}><tr><td><div align="center"\Hnewline>}} + {\IgnorePar\EndP\HCode{</div>}\end:TTT\IgnorePar} +\ConfigureEnv{flushleft}{\par\leavevmode\IgnorePar}{\par \ShowPar} + {\start:fenv{left}}{\end:fenv} +\ConfigureEnv{flushright}{\par\leavevmode\IgnorePar}{\par \ShowPar} + {\start:fenv{right}}{\end:fenv} +>>> + + + +\<32,4 latex\><<< +\ConfigureEnv{verbatim}{\env:verb{verbatim}}{\endenv:verb}{}{} +\ConfigureEnv{verbatim*}{\env:verb{verbatim}}{\endenv:verb}{}{} +\def\env:verb#1{\ifvmode \IgnorePar \fi\EndP\HCode{<\tbl:XV{#1}><tr + class="#1"><td\Hnewline + class="#1">}\HCode{<pre class="#1">}\EndNoFonts} +\def\endenv:verb{\NoFonts + \ifvmode \IgnorePar\fi \EndP + \ht:special{t4ht=</pre>}\end:TTT \ShowPar\:xhtml{\par}} +\def\start:fenv#1{\:xhtml{\IgnorePar\EndP}\HCode{<table + \Hnewline width="100\%" + \:zbsp{flush#1}><tr><td><div align="#1"\Hnewline>}} +\def\end:fenv{\IgnorePar\HCode{</div>}\end:TTT\IgnorePar} +>>> + + + + + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmath.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Math Setup} + + + + + +\<configure html32-math latex\><<< +\:CheckOption{pic-eqnarray} \if:Option + |<PIC eqnarray Config|> +\fi +>>> + + +\<PIC eqnarray Config\><<< +\ConfigureEnv{eqnarray} + {\IgnorePar\EndP\Tg<div class="pic-eqnarray">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +\Css{div.pic-eqnarray {text-align:center;}} +\ConfigureEnv{eqnarray*} + {\IgnorePar\EndP\Tg<div class="pic-eqnarray-star">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +\Css{div.pic-eqnarray-star {text-align:center;}} +>>> + + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % lttab.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Tabbing, Tabular and Array Environments} + + + + +\<32,4 picmath latex\><<< +\:CheckOption{pic-array} \if:Option + \ConfigureEnv{array} + {\IgnorePar\EndP\Tg<div class="pic-array">\Picture*{}$$} + {$$\EndPicture\Tg</div>}{}{} + \Css{div.pic-array {text-align:center;}} +\fi +>>> + + +\<32,4 latex\><<< +\:CheckOption{pic-tabular} \if:Option + \ConfigureEnv{tabular} + {\IgnorePar\EndP\Tg<div class="pic-tabular">\Picture*{}} + {\EndPicture\Tg</div>}{}{} + \Css{div.pic-tabular {text-align:center;}} +\fi +>>> + + + + +\<vspace body for array/tabular\><<< +\append:def\vspc:s{\h:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\vspc:s{\i:HBorder}% + \expandafter\:tempb + \fi } +\tmp:cnt|=0 \:tempb +\append:def\vspc:s{\j:HBorder}\global\let\vspc:s|=\vspc:s +>>> + + +\<0,32,4 latex\><<< +\Configure{hline}{\ifx \ar:cnt\:UnDef + \else\o:noalign:{|<hline body for array/tabular|>}\fi} +\Configure{//[]}{\ifx \ar:cnt\:UnDef + \else\o:noalign:{|<vspace body for array/tabular|>}\fi} +>>> + + + +\<hline body for array/tabular\><<< +\append:def\hline:s{\a:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\hline:s{\b:HBorder}% + \expandafter\:tempb + \fi } +\tmp:cnt|=0 \:tempb +\append:def\hline:s{\c:HBorder}\global\let\hline:s|=\hline:s +>>> + + + + + +\<configure clear noalign\><<< +\Configure{noalign}{}{} +>>> + +\<configure tabular noalign\><<< +\Configure{noalign}% + {\f:tabular\d:tabular \HCode{<tr><td colspan="\ar:cnt">}} + {\HCode{</td></tr>}\pend:def\TableNo{0}\c:tabular\e:tabular}% +>>> + + + + + + +\verb'\AllColMargins' Return a binary string in which 1 represents +a column, and 0 represents a `@'. \verb'\ColMargins' retrieves the +zeros before the 1's that represent the current and following 1's. + + + + + + + + + + + +\subsection{The option @()} + + + + + + + + +\<configuring @()\><<< +\Configure{@{}}{} +>>> + + + + + + +We force border around the full table whenever a vertical line is +requested, because it makes the tables better looking within the +existing capabilities. + + + +Currently, we either have empty \verb'\VBorder', or one defined to +\verb'\def\VBorder{border="1"}'. + + + +When \verb'\putVBorder' is call in \verb'\VBorder' +we have a sequence of the form +\verb'<COLGROUP><COL ...">...</COLGROUP>...' with the last +tag possibly missing. + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%% to be placed %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{to be placed} +%%%%%%%%%%%%%%%%%%% + + + + + + + + + + + + + + + + +\<0,32,4 plain,latex\><<< +\Configure{ }{\:nbsp} +>>> + + + + + + + + + + + + + + + + +\<0,32,4 latex\><<< +\Configure{framebox} + {\Picture+[]{ \a:@Picture{framebox}}} {\EndPicture} +\Configure{InsertTitle}{\let\label|=\lb:l + \let\ref|=\o:ref \Configure{ref}{}{}{}} +\Configure{AfterTitle}{\let\index|=\:index + \let\ref|=\:ref \let\label|=\lb:l } +\Configure{NoSection} + {\let\sv:index|=\index \let\sv:label|=\label \let\sv:ref|=\ref + \let\sv:newline|=\newline \def\newline{ }% + \let\sv:setfontsize|=\@setfontsize \let\@setfontsize|=\:gobbleIII + \let\index|=\@gobble \let\label|=\@gobble \let\ref|=\@gobble + } + {\let\index|=\sv:index \let\label|=\sv:label \let\ref|=\sv:ref + \let\newline|=\sv:newline \let\@setfontsize|=\sv:setfontsize + } +\Configure{oalign}{\Picture+{ \a:@Picture{oalign}}}{\EndPicture} + +\Configure{TocLink} + {\Link{#2}{#3}{\Configure{ref}{}{}{}\Configure{cite}{}{}{}{}#4}\EndLink} +>>> + + + + + + + + +\<configure html32-math latex\><<< +\Configure{stackrel}{\Picture+{ class="stackrel"}\mathrel} + {\limits ^}{\EndPicture} +>>> + + + + + + + +Don't put \verb'\:xhtml{\IgnorePar\EndP}' on the following; \verb'\PicDisplay' +should handle it. + + +\<4 picmath th4,latex\><<< +\Configure{[]} + {\PicDisplay $$\everymath{}\everydisplay{}} + {$$\EndPicDisplay |<try inline par|>} +\Configure{()}{\protect\PicMath$}{$\protect\EndPicMath} +>>> + + + +\<0,32,4 latex\><<< +\Configure{picture} + {\Picture+[PICT]{}} + {\EndPicture} +>>> + +\<32,4 latex\><<< +\Configure{cite}{}{}{\Link}{\EndLink} +\Configure{bibitem}{\Link}{\EndLink} +\ConfigureEnv{minipage} + {\IgnorePar\EndP + \HCode{<center class="minipage">}% + {\ifnum 0=`}\fi + } + {\ifnum 0=`{\fi}% + \EndP\HCode{</center>}} + {}{} +\Configure{fbox} + {\leavevmode\Picture+[]{ \a:@Picture{fbox}}} {\EndPicture} +>>> + + + +\<shared sec div config\><<< +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +>>> + + + + + +\<shared subsec div config\><<< +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likpart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likpart} +>>> + + + + + +\<shared sub end div config\><<< +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +>>> + +\<latex shared div config\><<< +\ConfigureEnv{thebibliography}{\IgnorePar}{\IgnorePar\par}{}{} +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi +>>> + + + + + + + + + + + +\<shared part div config\><<< +\Configure{endpart}{likepart} +\Configure{endlikepart}{endpart} +>>> + + + +\<latex shared part config\><<< +\Configure{part}{}{} + {\IgnorePar \IgnorePar\HCode{<h1 class="partHead">}% + \partname \ \thepart\HCode{<br\xml:empty>}} + {\HCode{</h1>}\IgnoreIndent} +\Configure{partTITLE+}{\thepart\space #1} +>>> + + +\<latex shared likepart config\><<< +\Configure{likepart}{}{} + {\IgnorePar\IgnorePar\HCode{<h1 class="likepartHead">}} + {\HCode{</h1>}\IgnoreIndent} +>>> + + + + + + + + + + + + + +It is better to put the LI in the third field to avoid extra space +to the following text. + + + + + + + + + + + + + +\<save configure tableofcontents\><<< +\let\sv:atoc|=\a:tableofcontents +\let\sv:btoc|=\b:tableofcontents +\let\sv:ctoc|=\c:tableofcontents +\let\sv:dtoc|=\d:tableofcontents +\let\sv:etoc|=\e:tableofcontents +>>> + + +\<recall configure tableofcontents\><<< +\let\a:tableofcontents|=\sv:atoc +\let\b:tableofcontents|=\sv:btoc +\let\c:tableofcontents|=\sv:ctoc +\let\d:tableofcontents|=\sv:dtoc +\let\e:tableofcontents|=\sv:etoc +>>> + + + + +Earlier we had +\verb'\:CheckOption{no-halign} \if:Option \else |<pic array|> \fi', +and the same for pic tabular. Why? + + +\<no wrap\><<< +nowrap="nowrap" >>> + + + +\<32 plain,latex\><<< +\Configure{displaylines} + {\HCode{<table \Hnewline border="0" width="100\%">}} + {\HCode{</table>}} + {\HCode{<tr><td\Hnewline valign="bottom" align="center" |<no wrap|> >}} + {\HCode{</td></tr>}} +>>> + + + +\<picmath plain,latex\><<< +\let\A:displaylines|=\a:displaylines +\let\B:displaylines|=\b:displaylines +\let\C:displaylines|=\c:displaylines +\let\D:displaylines|=\d:displaylines +\Configure{displaylines} + {\ifmmode + \def\A:displaylines{\Picture*{}}% + \def\B:displaylines{\EndPicture}% + \fi + \A:displaylines} + {\B:displaylines} {\C:displaylines}{\D:displaylines} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Long Tables} +%%%%%%%%%%%%%%%%%% + +\<configure html32 tex4ht\><<< +\HAssign\TableNo=0 +\newif\ifHCond +>>> + +\<configure html32 longtable\><<< +\:CheckOption{old-longtable}\if:Option + |<config old longtable|> +\else + |<config new longtable|> +\fi +\:CheckOption{pic-longtable} \if:Option + \ConfigureEnv{longtable} + {\IgnorePar\EndP + \Tg<div class="pic-longtable">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +% \Css{div.pic-longtable {text-align:center;}} +\else + \Log:Note{for pictorial longtable, + use the command line option `pic-longtable'} +\fi +>>> + + +\<config new longtable\><<< +\Configure{halignTB<>}{longtable}{\HCode{id="TBL-\TableNo" + class="longtable" cellpadding="5" \VBorder}<>\HAlign} +\Configure{longtable} + {\IgnorePar\EndP + \gHAdvance\TableNo by 1 + \HCode{|<show input line no|><div class="longtable">}% + \halignTB{longtable}% + } + {\HCode{</table></div>}} + {\HCode{<tr \Hnewline}\halignTR\HCode{ id="TBL-\TableNo-\HRow-">}} + {\r:HA} + {\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan" \fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}|<tabular td align|>% + \HCode{">}|<td save EndP|>% + |<start array par box|>\PushStack\Table:Stck\TableNo} + {\PopStack\Table:Stck\TableNo |<end array par box|>\d:HA} +\Configure{longtableparbox}{\IgnorePar\leavevmode\ShowPar\par} +>>> + +\<config old longtable\><<< +\let\a:longtable=\a:tabular +\let\b:longtable=\b:tabular +\let\c:longtable=\c:tabular +\let\d:longtable=\d:tabular +\let\e:longtable=\e:tabular +\let\f:longtable=\f:tabular +>>> + + +\<show input line no\><<< +<!--l. \the\inputlineno-->% +>>> + +\<tabular td align\><<< +\NoFonts + \bgroup + \ifx \ttfamily\:UnDef \else \ttfamily\fi + \ColMargins + \egroup +\EndNoFonts +>>> + +\<td save EndP\><<< +\SaveEndP +>>> + +\<td recall EndP\><<< +\RecallEndP +>>> +\<start array par box\><<< +\par \ShowPar +>>> + +\<end array par box\><<< +\IgnorePar \EndP +>>> + +\<html latex array/tabular Config 3.2\><<<< +\let\AllColMargins|=\empty +\Configure{VBorder}{\global\let\VBorder|=\empty}{\gdef\VBorder{border="1"}}{}{} + + \Configure{HBorder} + {<tr\Hnewline class="hline">} + {<td><hr\xml:empty></td>} {</tr>} + {<tr\Hnewline class="cline">} + {<td></td>} {<td><hr\xml:empty></td>} {</tr>} + {<tr\Hnewline class="vspace" style="font-size:\HBorderspace">} + {<td\Hnewline>\string </td>} {</tr>} +%\Configure{putHBorder}{\HCode{\HBorder}} +\Configure{putHBorder}{\HCode{}} +\HAssign\Next:TableNo|=0 \global\let\TableNo=\Next:TableNo +% \Css{.hline hr, .cline hr{ height : 1px; margin:0px; }} +>>> + + + + + + +\<html latex array/tabular Config 3.2\><<<< +\def\ColMargins{} +\def\nosp:hbr#11#2//{\ifnum \tmp:cnt>1 \advance\tmp:cnt by -1 + \nosp:hbr#2//\else\nosp:gt#11#2//\fi} +\def\nosp:gt#11#21#3//{% + \def\:temp{#1}\ifx \:temp\empty 1\else 0\fi + \def\:temp{#2}\ifx \:temp\empty 1\else 0\fi} +% \Css{div.td00{ margin-left:0pt; margin-right:0pt; }} +% \Css{div.td01{ margin-left:0pt; margin-right:5pt; }} +% \Css{div.td10{ margin-left:5pt; margin-right:0pt; }} +% \Css{div.td11{ margin-left:5pt; margin-right:5pt; }} +>>> + + + + +\<html latex array/tabular Config 3.2\><<<< +\Configure{multicolumn} + {\let\col:Css\empty +% \Configure{VBorder} +% {\let\VBorder|=\empty}{\def\VBorder{border="1"}}{}{} + } + {} + {\ifvmode\IgnorePar\fi + \HCode{<div class="multicolumn" }\HColAlign\HCode{>}% + } + {\ifvmode\IgnorePar\fi \EndP\HCode{</div>}} +>>> + +The \verb'<TABLE>' is needed as a grouping mechanism for \verb'<CENTER>'. + + +%%%%%%%%%%%%%%%%%% +\section{Ams Math} +%%%%%%%%%%%%%%%%%% + + +\<configure html32-math amsmath\><<< +\Configure{overset} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{underset} {\Picture+{ \a:@Picture{}}} {\EndPicture} +>>> + + +\<configure html32-math amsmath\><<< +\Configure{xrightarrow} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{xleftarrow} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{genfrac} + {\Picture+{}\bgroup} {}{}{}{}{\egroup\EndPicture} +>>> + + +%%%%%%%%%%%%%%%%%%%%% +\section{Shared} +%%%%%%%%%%%%%%%%%%% + + + + + +\<0,32,4 article,report,book\><<< +|<html latex tocs|> |%should appear before TocAt|% +|<latex options 1, 2, 3|> +>>> + + + + + + + + + + +\<0,32,4 article,report,book\><<< +|<latex shared div config|> +|<shared sec div config|> +|<shared subsec div config|> +|<shared sub end div config|> +\ifx \part\:UnDef \else + |<shared part div config|> + |<latex shared likepart config|> +\fi +>>> + + + + +\section{aa} + + + + + +\subsection{Sizes of Fonts} + + + +pages should honor the base font sizes the +readers choose for their browsers. Hence, under this assumption, all +tex4ht should do is just assure appropriate relative dimensions for +fonts of other sizes. To meet this end, I modified latex.4ht to +automatically include + + \verb'{\Configure{Needs}{Font\string_Size: #1}\Needs{1...}}' + +when options 11pt and 12pt are listed in \verb'\documentclass'. + + +\<32,4 article,report,book\><<< +|<base font size|> +>>> + + +\<ams art,proc,book\><<< +|<base font size|> +|<ams footnotes|> +>>>> + + + +\<base font size\><<< +{\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} +>>> + + +\section{plain} + + + + + + + +\<picmath plain,latex\><<< +\Configure{$$}{\:xhtml{\EndP}\PicDisplay}{\EndPicDisplay} + {\everymath{}\everydisplay{}} +>>> + + + +\<0,32,4 plain\><<< +\Configure{settabs}[1.5]{}{}{}{}{} +\Configure{line}{\HCode{<br\xml:empty>}} +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\<math plain,fontmathNO\><<< +\Configure{big}{\HCode{<span class="big">}}{\HCode{</span>}}{}{} +\Configure{Big}{\HCode{<span class="bbig">}}{\HCode{</span>}}{}{} +\Configure{bigg}{\HCode{<span class="bigg">}}{\HCode{</span>}}{}{} +\Configure{Bigg}{\HCode{<span class="bbigg">}}{\HCode{</span>}}{}{} +>>> + + + + + + + +\<under/over line css\><<< +\Configure{underline} + {\HCode{<span class="underline">}} {\HCode{</span>}} +\Configure{overline} + {\HCode{<span class="overline">}} {\HCode{</span>}} +\Css{.underline{ text-decoration:underline; }} +\Css{.overline{ text-decoration:overline; }} +>>> + + + + + + + + +The \verb'100%' is to allow centering of stuff on the page. +The table is a grouping mechanism to protect internal stuff +from external centering operations. + + + + +The \verb'special{t4ht=' is superior to \verb'\HCode{' because it can +prevent \verb'<p>'s from entering before \verb'<NOBR>'. + + + + +The hbox is for avoiding the start of a new paragraph, if in vmode. + + +\<configure html32 latex\><<< +\ifOption{charset=iso-8859-7} + {|<T1 greek ldf iso-8859-7|>} + {} +\:CheckOption{new-accents} \if:Option +\else + |<T1 old iso-8859-1 accents|> +\fi +\let\^^_|=\v +>>> + + + +\<32,4 plain,latex\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accents} + {\expandafter\ifx \csname #1-num\endcsname\relax + \ht:special{t4ht@+\string&{35}x#2{59}}x% + \else + \ht:special{t4ht@+\string&\#x#2;}X% + \fi + } + {\Picture+{ \a:@Picture{#1}}#2{#3}\EndPicture} + \expandafter\let\csname ring-num\endcsname=\def +\fi +>>> + + +\<configure html32 plain\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accents} + {\ht:special{t4ht@+\string&{35}x#2{59}}x} + {\Picture+{ \:Picture:{#1}}#2{#3}\EndPicture} +\fi +>>> + + +\<32,4 plain,latexNO\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accents} + {\ht:special{t4ht@+\string#1;}#2} + {\Picture+{ \a:@Picture{#1}}#2{#3}\EndPicture} +\fi +>>> + +\<32,4 latexPRE-CSS\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{textscaccent} + {\Tg<small class="small-caps">}{\Tg</small>} +\fi +>>> + + + + + + + + +\section{amsart} + + + + + + + +\section{amsproc} + + + + +\section{amsbook} + + + + + + + + +\section{babel.sty} + + + + + + +\<configure html32 babel\><<< +|<0,32,4 babel|> +>>> + + + +\<0,32,4 babel.def\><<< +\Configure{quotedblbase}{\leavevmode\special{t4ht@+&{35}8222;}x} +\Configure{quotesinglbase}{\leavevmode\special{t4ht@+&{35}8218;}x} +>>> + + + + + +\<configure html32 frenchb\><<< +\def\A:charset{charset=iso-8859-1} +\Configure{frenchb-thinspace} + {\ht:special{t4ht@?unhskip}} + {} +\Configure{frenchb-nbsp} + {\ht:special{t4ht@?unhskip}}{} +\Configure{system-nbsp} + {\ht:special{t4ht@[unhskip}} + {\ht:special{t4ht@]unhskip}} +\Configure{frenchb-thinspace} + {\ht:special{t4ht@[unhskip}} + {\ht:special{t4ht@]unhskip}} +\Configure{@TITLE}{\Configure{frenchb-thinspace}{}{}} +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Scientific Word} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html32 tcilatex\><<< +\Configure{GRAPHICSPS} + {\Picture+[PICT]{}} {\EndPicture} +\Configure{GRAPHICSHP} + {\Picture+[PICT]{}} {\EndPicture} +>>> + +\<configure html32 seslideb\><<< +\ConfigureEnv{center} + {\IgnorePar \par \EndP \HCode{<div class="center"\Hnewline>}} + {\ifvmode\IgnorePar\fi\EndP\HCode{</div>}} + {} {} +{\Configure{Needs}{Font\string_Size: #1}% + \expandafter\Needs\expandafter{\csname normalsize@fsize\endcsname}} +>>> + +\<configure html32 seslideb\><<< +\ConfigureToc{swSlide} + {} {\relax } {} { } +\:CheckOption{0} + \if:Option \else \:CheckOption{1} \fi +\if:Option + \:CheckOption{1} \if:Option + \CutAt{swSlide} + \Configure{crosslinks}{}{}{}{}{}{}{}{} + \fi + |<seslideb toc|> + |<seslideb page break|> +\else + \Log:Note{pagination may be obtained + through the option `0' or `1', at locations marked with + \noexpand\csname PageBreak\string\endcsname} + |<handle my missing sw fonts|> +\fi +>>> + +\<handle my missing sw fonts\><<< +\Configure{swSlide}{}{}{\bgroup\bf}{\egroup} +>>> + +\<seslideb toc\><<< +\def\:temp{% + \ifOption{1}{\par\IgnorePar\EndP\HCode{<hr />}\par}{} + \HAssign\TocN=1 + \def\swTitle{\gHAdvance\TocN by 1 \TocN}\:TableOfContents[swSlide] + \let\swTitle=\relax + \ifOption{0}{\par\IgnorePar\EndP\HCode{<hr />}\par}{} + \let\swSlide=\o:swSlide: \let\o:swSlide:=\empty \swSlide} +\HLet\swSlide=\:temp +>>> + + +\<seslideb page break\><<< +\Configure{swSlide} + {\gHAdvance\swSlideN by 1 \Link{}{s-\swSlideN}\EndLink } + {\rightline{ + {\HAdvance\swSlideN by -1 \Link{s-\swSlideN}{}\swSlideN\EndLink} + \Link[\jobname.html]{}{}\HCode{<>}\EndLink{} + {\HAdvance\swSlideN by 1 + \ifTag{)Qs-\swSlideN}{\Link{s-\swSlideN}{}\swSlideN\EndLink}{}} + } + \ifOption{0}{\par \IgnorePar\EndP\HCode{<hr />}\par}{} + } + {\IgnorePar\bgroup \bf } + {\egroup \ShowPar\IgnoreIndent\par} +\HAssign\swSlideN=1 +>>> + + + + +%%%%%%%%%%%%%%%%% +\section{Babel} +%%%%%%%%%%%%%%% + +\<0,32,4 babel\><<< +|<0,32,4 babel.def|> +\ifx \@begindocumenthook\:UnDef\else + \:CheckOption{new-accents} \if:Option \else + \def\:temp{russian}\ifx \languagename\:temp + |<russian|> + \fi +\fi\fi +>>> + +We had also \verb'\append:def\@begindocumenthook{\HLet\"|=\ddot}' in +babel. It gets russian and brazil into infinite loop. Why it was +inserted. + + +\<russian\><<< +\Configure{accent}\"\ddot{A{A}E{E}I{I}O{O}U{U}Y% + {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}å{e}{}{34}} + {\a:accents{uml}{#1}} + {\def\:temp{>}\def\:tempa{#2}\ifx \:temp\:tempa\HCode{»}% + \else \def\:temp{<}\ifx \:temp\:tempa\HCode{«}% + \else \b:accents{uml}{#1}{#2}\fi\fi} +>>> + + + + + + +\section{babel.sty} + +\<32,4 tex4ht\><<< +\NewConfigure{charset}[1]{\def\a:charset{#1}} +\def\:temp#1charset=#2,#3|<par del|>{% + \if !#2!\else \Configure{charset}{#2}\fi} +\expandafter\:temp\Preamble charset=,|<par del|> +>>> + + + + + +\<configure html32 CJK\><<< +\Configure{charset}{charset=big5} +>>> + + + + + + + + + + + + +\section{moreverb} + + + + +\<32,4 moreverb\><<< +\ConfigureEnv{verbatimtab}{\env:verb{verbatim}}{\endenv:verb}{}{} +\ConfigureEnv{verbatimtab*}{\env:verb{verbatim}}{\endenv:verb}{}{} +\ConfigureEnv{boxedverbatim} + {\env:verb{boxedverbatim}}{\endenv:verb}{}{} +\ConfigureEnv{boxedverbatim*} + {\env:verb{boxedverbatim}}{\endenv:verb}{}{} +>>> + + + + +\section{color} + + + +\<configure html32 color\><<< +\Configure{HColor}{red}{\#FF0000} +\Configure{HColor}{rgb 1 0 0}{\#FF0000} +\Configure{HColor}{blue}{\#0000FF} +\Configure{HColor}{rgb 0 0 1}{\#0000FF} +\Configure{HColor}{green}{\#00FF00} +\Configure{HColor}{rgb 0 1 0}{\#00FF00} +\Configure{HColor}{white}{\#FFFFFF} +\Configure{HColor}{gray 1}{\#FFFFFF} +\Configure{HColor}{rgb 1 1 1}{\#FFFFFF} +\Configure{HColor}{black}{\#000000} +\Configure{HColor}{gray 0}{\#000000} +\Configure{HColor}{rgb 0 0 0}{\#000000} +\Configure{HColor}{cyan}{\#00FFFF} +\Configure{HColor}{cmyk 1 0 0 0}{\#00FFFF} +\Configure{HColor}{magenta}{\#FF00FF} +\Configure{HColor}{cmyk 0 1 0 0}{\#FF00FF} +\Configure{HColor}{yellow}{\#FFFF00} +\Configure{HColor}{cmyk 0 0 1 0}{\#FFFF00} +\Configure{color}{\:gobble} +>>> + + + + +\<configure html32 color\><<< +\Configure{HColor:gray}{% + \int:of\:tempa{255}{#1}% + \Configure{HColor}{}{rgb(\:tempa,\:tempa,\:tempa)}% +} +\Configure{HColor:rgb}{% + \int:of\:tempa{255}{#1}% + \int:of\:tempb{255}{#2}% + \int:of\:tempc{255}{#3}% + \Configure{HColor}{}{rgb(\:tempa,\:tempb,\:tempc)}% +} +\Configure{HColor:cmyk}{% + \int:of\:Cyan{255}{#1}% + \int:of\:Magenta{255}{#2}% + \int:of\:Yellow{255}{#3}% + \int:of\:Black{255}{#4}% + \:cmyk\:tempa\:Cyan + \:cmyk\:tempb\:Magenta + \:cmyk\:tempc\:Yellow + \Configure{HColor}{}{rgb(\:tempa,\:tempb,\:tempc)}% +} +|<HColor util|> +>>> + + +\<HColor util\><<< +\def\int:of#1#2#3{% + \tmp:dim=#3pt \tmp:dim=#2\tmp:dim + \edef\:temp{\tmp:cnt\the\tmp:dim//}% + \def#1##1//{}\afterassignment#1\:temp + \edef#1{\the\tmp:cnt}% +} +>>> + + +\<HColor util\><<< +\def\:cmyk#1#2{% + \tmp:cnt=255 \advance\tmp:cnt by -\:Black + \multiply\tmp:cnt by#2 \advance\tmp:cnt by \:Black + \advance\tmp:cnt by -255 \tmp:cnt=-\tmp:cnt + \ifnum \tmp:cnt<0 \tmp:cnt=0 \fi + \edef#1{\the\tmp:cnt}% +} +>>> + + + + + + +\<plain tex classes\><<< +\Configure{MathClass}{1}{}{}{}{ + \mathchar"1360 + \mathchar"1357 + \mathchar"1356 + \mathchar"1355 + \mathchar"1354 + \mathchar"1353 + \mathchar"1352 + \mathchar"1351 + \mathchar"1350 + \mathchar"134E + \mathchar"134C + \mathchar"134A + \mathchar"1348 + \mathchar"1346 + \mathchar"1273 +} +>>> + + +\subsection{2: Binary Operations} + +\begin{verbatim} +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\-="2200 +\end{verbatim} + +\<plain tex classes\><<< +\Configure{MathClass}{2}{}{}{}{ +*-+/ +\mathchar"212F +\mathchar"212E +\mathchar"2234 +\mathchar"2235 +\mathchar"225E +\mathchar"225F +\mathchar"225C +\mathchar"225B +\mathchar"227A +\mathchar"2279 +\mathchar"2275 +\mathchar"2274 +\mathchar"225D +\mathchar"2271 +\mathchar"2205 +\mathchar"220F +\mathchar"226F +\mathchar"2204 +\mathchar"220C +\mathchar"220B +\mathchar"220A +\mathchar"2209 +\mathchar"2208 +\mathchar"2207 +\mathchar"2206 +\mathchar"220E +\mathchar"220D +\mathchar"226E +\mathchar"2201 +\mathchar"2203 +\mathchar"2202 +\mathchar"213F +} +>>> + + +\subsection{3: Relational Operations} + + + + + +The catcode is needed because 303A is \verb':'. + +\<plain tex classes\><<< +\Configure{MathClass}{3}{}{}{}{ + \mathchar"3128 + \mathchar"3129 + \mathchar"312A + \mathchar"312B + \mathchar"315E + \mathchar"315F + \mathchar"3210 + \mathchar"3211 + \mathchar"3212 + \mathchar"3213 + \mathchar"3214 + \mathchar"3215 + \mathchar"3216 + \mathchar"3217 + \mathchar"3218 + \mathchar"3219 + \mathchar"321A + \mathchar"321B + \mathchar"321C + \mathchar"321D + \mathchar"321E + \mathchar"321F + \mathchar"3220 + \mathchar"3221 + \mathchar"3224 + \mathchar"3227 + \mathchar"3232 + \mathchar"3233 + \mathchar"3236 + \mathchar"3237 + \mathchar"323F + :=>< + \mathchar"322F + \mathchar"3276 + \mathchar"3277 + \mathchar"326B + \mathchar"326A + \mathchar"3261 + \mathchar"3260 + \mathchar"3225 + \mathchar"3226 + \mathchar"322D + \mathchar"322E + \mathchar"322C + \mathchar"3228 + \mathchar"3229 +} +>>> + + + + + + + +\begin{verbatim} +\mathcode`\>="313E +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\:="303A +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\set="321A +\mathchardef\supseteq="3213 +\mathchardef\seteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\end{verbatim} + + +\subsection{4/5: Delimiters} + +\begin{verbatim} +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\[="405B +\mathcode`\]="505D +\mathcode`\{="4266 +\mathcode`\}="5267 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\def\lmoustache{\delimiter"437A340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"537B341 } % top from ), bottom from ( +\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips +\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } +\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads +\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert How should these be treated? +\def\vert{\delimiter"26A30C } " " " " " +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\end{verbatim} + +The comamnds \verb'\Configure{MathClass}{4}...' +and \verb'\Configure{MathClass}{5}...' +are for unmatched delimiters, and the comamnd +\verb'\Configure{MathDelimiters}{(}{)}' is for matched ones. + + + + +\<plain tex classes\><<< +\Configure{MathClass}{4}{}{}{}{} +\Configure{MathDelimiters}{(}{)} +\Configure{MathDelimiters}{[}{]} +\Configure{MathDelimiters}{\mathchar"4262}{\mathchar"5263} +\Configure{MathDelimiters}{\mathchar"4264}{\mathchar"5265} +\Configure{MathDelimiters}{\mathchar"4266}{\mathchar"5267} +\Configure{MathDelimiters}{\mathchar"4268}{\mathchar"5269} +\Configure{MathDelimiters}{\mathchar"4300}{\mathchar"5301} +\Configure{MathDelimiters}{\mathchar"4302}{\mathchar"5303} +\Configure{MathDelimiters}{\mathchar"4304}{\mathchar"5305} +\Configure{MathDelimiters}{\mathchar"4306}{\mathchar"5307} +\Configure{MathDelimiters}{\mathchar"4308}{\mathchar"5309} +\Configure{MathDelimiters}{\mathchar"430A}{\mathchar"530B} +>>> + + + +\begin{verbatim} +\mathcode`\?="503F +\end{verbatim} + + + + + + +\subsection{6: Punctuation Marks} + +\begin{verbatim} +\mathchardef\ldotp="613A % ldot as a punctuation mark +\mathchardef\cdotp="6201 % cdot as a punctuation mark +\mathchardef\colon="603A % colon as a punctuation mark +\mathcode`\;="603B +\mathcode`\,="613B +\end{verbatim} + + + + + + + +\<plain tex classes\><<< +\Configure{MathClass}{6}{}{}{}{ +\mathchar"613A +\mathchar"6201 +\mathchar"603A +?; , +} +>>> + + + + +\subsection{Questions} + +\begin{verbatim} + + +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\end{verbatim} + + + + + + +\subsection{Type 4: Math Open} + + +latex.ltx, fontmath.ltx, plain.tex + + + + + + + +\section{fleqn.sty} + + + + + +\section{amsppt.sty} + + +\<32 amsppt, 32,4 vanilla\><<< +\Configure{title} + {\IgnorePar\EndP\HCode{<div class="title">}\begingroup\bf} + {\endgroup\IgnorePar\HCode{</div>}} +\Css{div.title {margin-top: 0.5em;}} +\Configure{author} + {\IgnorePar\EndP\HCode{<br\xml:empty><center>}\IgnorePar\par} + {\IgnorePar\EndP\HCode{</center>}} + +>>> + +\<32 amsppt\><<< +\Configure{affil}{\IgnorePar\HCode{<br\xml:empty><center>}\IgnorePar} + {\IgnorePar\HCode{</center>}} +\Configure{abstract} {\HCode{<br\xml:empty><center>}} {\HCode{</center>}} + {\IgnorePar\HCode{<table cellpadding="15"><tr><td>}\IgnorePar\par} + {\IgnorePar\HCode{</td></tr></table>}\IgnorePar\par} +\Configure{date}{\IgnorePar\HCode{<center>}\IgnorePar} + {\IgnorePar\HCode{</center>}} +|<32 amsppt, 32,4 vanilla|> +>>> + + +\<32,4 amsppt\><<< +\Configure{specialhead}{}{} + {\IgnorePar\EndP\HCode{<h1 class="amsspecialheadHead">}} + {\HCode{</h1>}\IgnoreIndent} +\ConfigureToc{specialhead} + {\HCode{<center>}\ignorespaces}{ } + {}{\HCode{</center>}} +\Configure{head}{}{} + {\IgnorePar\EndP\HCode{<h2 class="amsheadHead">}} + {\HCode{</h2>}\IgnoreIndent} +\ConfigureToc{head} + {\ignorespaces}{ }{}{\HCode{<br\xml:empty>}} +\Configure{subhead}{}{} + {\IgnorePar\EndP\HCode{<h3 class="amssubheadHead">}} + {\HCode{</h3>}\IgnoreIndent} +\ConfigureToc{subhead} + {\:nbsp\:nbsp\:nbsp\:nbsp\ignorespaces} { } + {} {\HCode{<br\xml:empty>}} +\Configure{subsubhead}{}{} + {\IgnorePar\EndP\HCode{<h4 class="amssubsubheadHead">}} + {\HCode{</h4>}\IgnoreIndent} +\ConfigureToc{subsubhead} + {\:nbsp\:nbsp\:nbsp\:nbsp\:nbsp% + \:nbsp\:nbsp\:nbsp\ignorespaces} { } {} {\HCode{<br\xml:empty>}} +\Configure{block} + {\IgnorePar\EndP + \HCode{<table cellpadding="15"><tr><td>}\IgnorePar\par} + {\IgnorePar\HCode{</td></tr></table>}\IgnorePar\par} +\Configure{caption} + {\:xhtml{\IgnorePar\EndP}\HCode{<center>}}{}{\HCode{</center>}} +\Configure{roster} + {\IgnorePar\EndP\HCode{<table>}\let\end:item|=\empty} + {\IgnorePar\end:item\HCode{</table>}\IgnorePar\par} + {\IgnorePar\end:item \HCode{<tr valign="top"><td>} + \def\end:item{\EndP\HCode{</td></tr>}}} + {\:nbsp\EndP\HCode{</td><td>}\ShowPar} + {\IgnorePar\EndP\HCode{<table>}\let\end:iitem|=\empty} + {\IgnorePar\end:iitem\HCode{</table>}\IgnorePar\par} + {\IgnorePar\end:iitem\HCode{<tr valign="top"><td>}} + {\HCode{</td><td>} + \def\end:iitem{\EndP\HCode{</td></tr>}}} +|<bib in amsppt.sty|> +>>> + + +\<bib in amsppt.sty\><<< +\Configure{vol}{\HCode{<strong>}}{\HCode{</strong>}} +\Configure{book}{\HCode{<em>}}{\HCode{</em>}} +\Configure{paper}{\HCode{<em>}}{\HCode{</em>}} +\Configure{Refs}{\IgnorePar\EndP\HCode{<table class="Refs">}} + {\HCode{</table>}} +\Configure{ref}{\HCode{<tr valign="top"><td align="right">}} + {\EndP\HCode{</td></tr>}}{} +\Configure{keyformat}{}{\EndP\HCode{</td><td>}} +>>> + + + +\section{amsmath.sty} + + + + + +\<configure html32-math amsmath\><<< +\Configure{equation} + {\Configure{gather} + {\HCode{<\tbl:XV{equation}><tr><td><center>}\IgnorePar} + {\end:TTT\IgnorePar\par} + {}{} + {\ifnum\HCol=2 \IgnorePar\HCode{</center></td><td width="5\%">}\fi} + {} + }{}{} +>>> + + + + + +\<configure html32-math amsmath\><<< +\Configure{equation} + {\NoHtmlEnv \Configure{gather} + {\HCode{<\tbl:XV{equation}><tr><td><center>}\IgnorePar} + {\end:TTT\IgnorePar\par} + {\Configure{$}{\PicMath}{\EndPicMath}{}} + {} + {\ifnum\HCol=2 \IgnorePar\HCode{</center></td><td width="5\%">}\fi} + {} + }{}{} +>>> + + +Equations in amsmath.sty are defined in term of gather, and +gather is a one parameter macro. Unlike laktex where the body is +read within the environment, in gather it is read at the \verb'\begin{equation}' point under the conditions that exist there. + + +\<32,4 pic amsmath\><<< +\Configure{substack}{\Picture+{}}{\EndPicture} +>>> + + + + +\section{amstex.sty (amstex1)} + + + + +\section{amstex.tex} + + +\<amstex.tex m:env\><<< +|<amsmath / amstex1 m:env|> +>>> + + +\<NO\><<< +\def\m:env#1{\:xhtml{\IgnorePar\EndP}\HCode{<center><table class="#1" + border="0" cellpadding="0" cellspacing="15"><tr><td>}} +\def\endm:env{\HCode + {</td></tr></table></center>}\IgnorePar} +>>> + +\<amsmath / amstex1 m:env\><<< +\def\m:env#1{\relax\ifmmode\else\par\fi\:xhtml{\IgnorePar\EndP}% + \HCode{<center class="#1"><table class="#1"\Hnewline + border="0" cellpadding="0" cellspacing="15"><tr><td>}} +\def\endm:env{\:xhtml{\IgnorePar\EndP}% + \HCode{</td></tr></table></center>}\IgnorePar + \ifmmode\else\par\fi} +>>> + + + + + + + + + + + + + +% \Configure{topaligned}{\m:env{topaligned}}{\endm:env} +% \Configure{botaligned}{\m:env{botaligned}}{\endm:env} + + + + + + + +\<32,4 picmath amstex.tex\><<< +\Configure{frac}{\Picture+{}}{\EndPicture} +\Configure{dfrac}{\Picture+{}}{\EndPicture} +\Configure{tfrac}{\Picture+{}}{\EndPicture} +\Configure{binom}{\Picture+{}}{\EndPicture} +\Configure{dbinom}{\Picture+{}}{\EndPicture} +\Configure{tbinom}{\Picture+{}}{\EndPicture} +\Configure{boxed}{\Picture+{}}{\EndPicture} +>>> + + + + + + +\section{vanilla} + + + + + + +\<32,4 vanilla\><<< +\Configure{matrix} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="matrix">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline valign="top">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +\Configure{align} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="align">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline valign="top">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +>>> + + +\section{slidesec} + + + + +\section{ltugboat} + + + + +%%%%%%%%%%%%%%%%%%% +\section{tex4ht} +%%%%%%%%%%%%%%%%%%% + + + + + + + + + +\<0,32,4 tex4ht\><<< +\Configure{HVerbatim+}{\z@}{\:nbsp} +\:CheckOption{jpg} \if:Option + \Configure{Picture}{.jpg} +\else + \Log:Note{for jpg bitmaps of pictures, use the `jpg' + command line option. |<ch bitmaps|>} +\fi +\:CheckOption{gif} \if:Option + \Configure{Picture}{.gif} +\else + \Log:Note{for gif bitmaps of pictures, use the `gif' + command line option. |<ch bitmaps|>} +\fi +>>> + + + +\<ch bitmaps\><<< +(Character bitmaps are controled only by `g' records of tex4ht.env and `-g' +switches of tex4ht.c) +>>> + + + + +\<32,4 th4\><<< +\:CheckOption{javascript} + \if:Option \else\:CheckOption{th4}\fi +\if:Option + \Configure{JavaScript} + {\HCode{<script type="text/JavaScript" ><!--\Hnewline}} + {\HCode{//-->\Hnewline </script>}} +\fi +>>> + + + + + + + +\verb'\Hnewline' is needed at end of file to avoid loosing the +last line under some applications. + + + + + + + + + + + + + + + + + + +\<configure html32 latex\><<< +\Configure{htf}{4}{+}{<small\Hnewline + class="}{}{}{}{}{small-caps">}{</small>} +\Configure{htf}{6}{+}{<u\Hnewline + class="}{}{}{}{}{underline">}{</u>} +\Configure{htf}{8}{+} + {<sup class="htf"><strong>}{}{}{}{}{}{</strong></sup>} +\Configure{htf}{10}{+} + {<tt>}{}{}{}{}{}{</tt>} +\Configure{htf}{14}{+}{<i>}{}{}{}{}{}{</i>} +>>> + +\verb'\Configure{htf}{0}{+}{<!--span class="}{\%s}{-\%s}{--\%d}{}{"-->}{<!--/span-->}' caused netscape to +loose spaces between comments. +\verb'\Configure{htf}{0}{+}{<!--span\Hnewline class="}{\%s}{-\%s}{ - -\%d}{}{"-->}{<!--/span-->}' caused netscape +to misbehave on \verb'<pre>' + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\section{th4} + + +\<0 th4\><<< +\Configure{Chapter} + {}{} {Chapter \theChapterCounter} {} +\Configure{Appendix} + {}{} {Appendix \theChapterCounter} {} +\Configure{LikeChapter} + {}{} {} {} +>>> + +\<32,4 th4\><<< +\Configure{Columns} + {\IgnorePar\EndP + \HCode{<table \Hnewline cellspacing="15"><tr valign="top">}} + {\HCode{</tr></table>}} + {\HCode{<td>}\ColMag{1.03}} + {\IgnorePar\EndP\HCode{</td>}} +>>> + + + +\<32,4 th4\><<< +\:CheckOption{index}\if:Option + \Configure{index} + {\bgroup + \Configure{Columns} + {\IgnorePar\EndP + \HCode{<table \Hnewline class="index" width="100\%" + cellspacing="15"><tr valign="top">}} + {\HCode{</tr></table>}} + {\HCode{<td>}\ColMag{1.1}} + {\IgnorePar\EndP\HCode{</td>}} + \Columns{2}\IndexFonts} + {\EndColumns \egroup} + {\bgroup\IgnorePar\EndP\expandafter\ifx \csname prev:A\endcsname\relax + \else \hfil\break \Tg<br\xml:empty>\par\IgnorePar \fi \IndexSec} + {\egroup~~~~} + {\bgroup\hfil\break\Tg<br\xml:empty>~~~}{\egroup~~~~} + {~}{} + \def\Idx:ch{0} + \def\IndexSec#1{% + \tmp:cnt=`#1\relax + \ifnum \tmp:cnt>`Z\advance\tmp:cnt by -32 \fi + \ifnum \tmp:cnt<`A\else \ifnum \tmp:cnt>`Z \else + \ifnum \Idx:ch<\tmp:cnt + \bgroup + \Configure{centerline} + {\HCode{<div\Hnewline class="IndexSec">}}{\HCode{</div>}} + \leftline{\bf \char\tmp:cnt }% + \global\let\prev:A|=\:UnDef + \xdef\Idx:ch{\the\tmp:cnt}% + \egroup + \fi + \fi \fi #1% + } + \Css{.IndexSec {margin-top:1em; margin-bottom:0.5em;}} +\fi +>>> + +\<32,4 th4\><<< +\Configure{Chapter} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="ChapterHead">}% + Chapter \theChapterCounter \HCode{<br\xml:empty>}} + {\HCode{</h2>}\IgnoreIndent\IgnorePar} +\Configure{Appendix} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="AppendixHead">}% + Appendix \theChapterCounter \HCode{<br\xml:empty>}} + {\HCode{</h2>}\IgnoreIndent\IgnorePar} +\Configure{LikeChapter} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="LikeChapterHead">}\noindent + \bgroup \def\uppercase##1{##1}} + {\egroup \HCode{</h2>}\IgnoreIndent\IgnorePar } +>>> + + + + + + +\<32,4 th4\><<< +\Configure{UList} + {\IgnorePar\EndP\def\:tempB{disc}% + \ifx\:tempA\:tempB \else \def\:tempB{square}\fi + \ifx\:tempA\:tempB \else \def\:tempB{circle}\fi + \hbox{\IgnorePar\EndP\HCode{<ul + \ifx\:tempA\:tempB type="\:tempA" \fi \:UL:>}}} + {\everypar{}\EndP\HCode{</li></ul>}} + {\ifnum \ListCounter>1 \EndP\HCode{</li>}\fi \hfil\break \HCode{<li>}} +\Configure{OList} + {\IgnorePar\EndP\hbox{\HCode{<ol + \ifx \:temp\empty \else type="\:temp" \fi + \:OL:>}}} + {\everypar{}\EndP\HCode{</li></ol>}} + {\ifnum \ListCounter>1 \EndP\HCode{</li>}\fi \hfil\break \HCode{<li>}} +>>> + + + + +\<32,4 th4\><<< +\Configure{HTable} + {\everypar{}\EndP\HCode{<table \Hnewline\TABLE:\:HTable:>}% + \def\BR{\HCode{<br\xml:empty>}}} + {\HCode{</table>}} + {\HCode{<tr \:TR>}}{\HCode{</tr>}} + {\everypar{}\HCode{<\TD:typ\TD:more\Hnewline>}} + {\everypar{}\HCode{</\TD:typ>}} +\let\:HTable:|=\empty +>>> + + + + +\<32,4 th4\><<< +\Configure{Item}{}{\par}% +\Configure{DList} + {\IgnorePar\EndP\HCode{<dl \:DL:>}} + {\everypar{}\EndP\HCode{\End:dd</dl>}} + {\IgnorePar\EndP\ifnum \ListCounter>1 \HCode{</dd>}\fi + \HCode{<dt>}} + {\HCode{</dt><dd>}\ShowPar \def\End:dd{</dd>}\hfil\break} +\Configure{buttonList}{}{} + {}{.\ #1 }{\ListCounter} +>>> + + +\<32,4 th4\><<< +\Configure{Part}{}{}{% + \html:rightskip + \bgroup + \html:rightskip \everypar{} + \IgnorePar\EndP\HCode{<h1 class="PartHead">}} + {\HCode{</h1>}\IgnoreIndent \egroup \IgnoreIndent} +\Configure{LikeSection}{}{} + {\IgnorePar \EndP\HCode{<h3 class="LikeSectionHead">}} + {\HCode{</h3>}\IgnoreIndent + |<addr for Tag and Ref of Sec|>% + \par \IgnoreIndent + } +\ConfigureMark{Section}{\theSection} +\Configure{Section} + {}{} + {\IgnorePar\EndP\HCode{<h3 class="SectionHead">}% + \gHAdvance\SectionCounter |by 1 + \TitleMark\space + }{\HCode{</h3>}\IgnoreIndent + |<addr for Tag and Ref of Sec|>% + \par \IgnoreIndent + } +\Configure{SubSection} + {}{} + {\par \IgnorePar\EndP\HCode{<h3 class="SubSectionHead">}} + {\HCode{</h3>}\IgnoreIndent \ShowPar} +>>> + +\<32,4 th4\><<< +\ConfigureToc{Chapter} + {\HCode{<span class="ChapterToc">}} + {~} + {} + {\HCode{</span><br\xml:empty>}} +\ConfigureToc{Section} + {\HCode{<span class="SectionToc">}~~~} + {~} + {} + {\HCode{</span><br\xml:empty>}} +\ConfigureToc{LikeSection} + {} + {\HCode{<span class="LikeSectionToc">}~~~} + {} + {\HCode{</span><br\xml:empty>}} +\ConfigureToc{SubSection} + {} + {\HCode{<span class="SubSectionToc">}~~~~~~} + {} + {\HCode{</span><br\xml:empty>}} +>>> + + + + + +\section{seminar} + + + + + + +\section{slides} + + + + + + + + +\section{amsthm.sty} + + + + + +\section{colortbl.sty} + + + + + +\section{epsfig} + + + +\<0,32,4 epsfig\><<< +\Configure{epsfig} {\Picture+[epsfig]{}}{\EndPicture} +>>> + +\section{psfig} + + + +\<0,32,4 psfig\><<< +\Configure{psfig} {\Picture+[psfig]{}}{\EndPicture} +>>> + +\section{graphics} + + + +\<0,32,4 graphics\><<< +\Configure{graphics}{\Picture+[PIC]{}}{\EndPicture} +\Configure{graphics*} + {gif} + {\Picture[pict]{\csname Gin@base\endcsname.gif}} +\Configure{graphics*} + {png} + {\Picture[pict]{\csname Gin@base\endcsname.png}} +\Configure{graphics*} + {jpeg} + {\Picture[pict]{\csname Gin@base\endcsname.jpeg}} +\Configure{graphics*} + {jpg} + {\Picture[pict]{\csname Gin@base\endcsname.jpg}} +>>> + + + + + +\section{foils} + + + +\<32,4 foils\><<< +\Configure{foilheads} {}{} + {\IgnorePar\EndP\HCode{<h1 class="foilheadsHead">}} + {\HCode{</h1>}\IgnorePar} +\ConfigureEnv{Theorem}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Lemma}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Corollary}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Corollary*}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Proposition}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Definition}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Proof}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{thebibliography}{\par\leavevmode}{\ShowPar}{}{} +\:CheckOption{1} \if:Option + \CutAt{foilheads} + \ConfigureToc{foilheads}{}{ *\ }{}{} + \Configure{tableofcontents*}{foilheads} +\fi +>>> + +\section{index} + + + +\<configure html32 index\><<< +\Configure{NoSection} + {\let\sv:index|=\p@index \let\sv:label|=\label \let\sv:ref|=\ref + \let\sv:newline|=\newline \def\newline{ }% + \def\p@index[##1]{\@gobble}\let\label|=\@gobble \let\ref|=\@gobble + } + {\let\p@index|=\sv:index \let\label|=\sv:label \let\ref|=\sv:ref + \let\newline|=\sv:newline + } +>>> + + + +\section{} + + + + +\section{ntheorem} + + + +\<32,4 ntheorem\><<< +\ConfigureEnv{Anmerkung} + {\HCode{<div class="Anmerkung">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Beispiel} + {\HCode{<div class="Beispiel">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Bemerkung} + {\HCode{<div class="Bemerkung">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Beweis} + {\HCode{<div class="Beweis">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Corollary} + {\HCode{<div class="Corollary">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Definition} + {\HCode{<div class="Definition">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Example} + {\HCode{<div class="Example">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Korollar} + {\HCode{<div class="Korollar">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Lemma} + {\HCode{<div class="Lemma">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Proof} + {\HCode{<div class="Proof">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Proposition} + {\HCode{<div class="Proposition">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Remark} + {\HCode{<div class="Remark">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Satz} + {\HCode{<div class="Satz">}} {\HCode{</div>}} {}{} +\ConfigureEnv{Theorem} + {\HCode{<div class="Theorem">}} {\HCode{</div>}} {}{} +\ConfigureEnv{anmerkung} + {\HCode{<div class="anmerkung">}} {\HCode{</div>}} {}{} +\ConfigureEnv{beispiel} + {\HCode{<div class="beispiel">}} {\HCode{</div>}} {}{} +\ConfigureEnv{bemerkung} + {\HCode{<div class="bemerkung">}} {\HCode{</div>}} {}{} +\ConfigureEnv{beweis} + {\HCode{<div class="beweis">}} {\HCode{</div>}} {}{} +\ConfigureEnv{corollary} + {\HCode{<div class="corollary">}} {\HCode{</div>}} {}{} +\ConfigureEnv{definition} + {\HCode{<div class="definition">}} {\HCode{</div>}} {}{} +\ConfigureEnv{example} + {\HCode{<div class="example">}} {\HCode{</div>}} {}{} +\ConfigureEnv{korollar} + {\HCode{<div class="korollar">}} {\HCode{</div>}} {}{} +\ConfigureEnv{lemma} + {\HCode{<div class="lemma">}} {\HCode{</div>}} {}{} +\ConfigureEnv{proof} + {\HCode{<div class="proof">}} {\HCode{</div>}} {}{} +\ConfigureEnv{proposition} + {\HCode{<div class="proposition">}} {\HCode{</div>}} {}{} +\ConfigureEnv{remark} + {\HCode{<div class="remark">}} {\HCode{</div>}} {}{} +\ConfigureEnv{satz} + {\HCode{<div class="satz">}} {\HCode{</div>}} {}{} +\ConfigureEnv{theorem} + {\HCode{<div class="theorem">}} {\HCode{</div>}} {}{} +>>> + + + + + +\section{hyperref} + +\<configure html32 hyperref\><<< +\Configure{Form} + {\IgnorePar\EndP\leavevmode \Tg<form \Hnewline \Attributes>} + {\IgnorePar\EndP\Tg</form>} +>>> + +\<configure html32 hyperref\><<< +|<hyperref shared|> +|<hyperref TextField|> +|<hyperref multiline|> +|<hyperref password|> +|<hyperref radio|> +|<hyperref on...|> +\NewConfigure{::action}{1} +\Configure{::action} + {\edef\Attributes{\Attributes\space action="\AttributeVal"}} +\NewConfigure{::method}{1} +\Configure{::method} + {\edef\Attributes{\Attributes\space method="\AttributeVal"}} +\NewConfigure{PushButton::}{1} +\Configure{PushButton::} + {\leavevmode\Tg<input type="button" \Attributes\space/>} +\NewConfigure{Reset::}{1} +\Configure{Reset::} + {\leavevmode\Tg<input type="reset" \Attributes\space/>} +\NewConfigure{Submit::}{1} +\Configure{Submit::} + {\leavevmode\Tg<input type="submit" \Attributes\space/>} +\NewConfigure{CheckBox::}{2} +\Configure{CheckBox::} + {\leavevmode\Tg<input type="checkbox" \Attributes\space/>}{} +\NewConfigure{CheckBox::checked}{2} +\Configure{CheckBox::checked} + {\leavevmode\Tg<input type="checkbox" checked="checked" + \Attributes\space/>}{} +\HAssign\form:id=0 +>>> + + +\<hyperref shared\><<< +\NewConfigure{::value}{1} +\Configure{::value} + {\edef\Attributes{\Attributes\space value="\AttributeVal"}} +\NewConfigure{::name}{1} +\Configure{::name} + {\edef\Attributes{\Attributes\space name="\AttributeVal"}} +\NewConfigure{::default}{1} +\Configure{::default} + {\let\::default=\AttributeVal} +\def\get:int#1.#2//{\tmp:cnt=#1 } +>>> + +\<\><<< +\NewConfigure{::borderwidth}{1} +\Configure{::borderwidth} + {\Css{div\#form-\form:id {border-width: \AttributeVal; + border-style:solid;}}} +\NewConfigure{::bordercolor}{1} +\Configure{::bordercolor} + {\expandafter\get:colors\AttributeVal//% + \Css{div\#form-\form:id {border-color:\AttributeVal}}} +\def\get:colors#1 #2 #3//{% + \get:color{#1}\edef\AttributeVal{\the\tmp:cnt\%}% + \get:color{#2}\edef\AttributeVal{\AttributeVal, + \the\tmp:cnt\%}% + \get:color{#3}\edef\AttributeVal{rgb(\AttributeVal, + \the\tmp:cnt\%)}% +} +\def\get:color#1{% + \tmp:dim=#1pt \multiply\tmp:dim by 100 + \expandafter\get:int\the\tmp:dim//} +>>> + + + + + + + + + +\<hyperref on...\><<< +\def\:tempc#1{% + \NewConfigure{::#1}{1}% + \Configure{::#1}% + {\edef\Attributes{\Attributes\space #1="\AttributeVal"}}} +\:tempc{onclick} +\:tempc{onblur} +\:tempc{onchange} +\:tempc{onclick} +\:tempc{ondblclick} +\:tempc{onfocus} +\:tempc{onkeydown} +\:tempc{onkeypress} +\:tempc{onkeyup} +\:tempc{onmousedown} +\:tempc{onmousemove} +\:tempc{onmouseout} +\:tempc{onmouseover} +\:tempc{onmouseup} +\:tempc{onselect} +>>> + + + +\<hyperref TextField\><<< +\NewConfigure{TextField::}{2} +\Configure{TextField::}{}{ \Tg<input type="text" \Attributes />} +\NewConfigure{TextField::width}{1} +\Configure{TextField::width} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space size="\the\tmp:cnt"}} +\NewConfigure{TextField::default}{1} +\Configure{TextField::default} + {\edef\Attributes{\Attributes\space value="\AttributeVal"}} +>>> + + +\<hyperref multiline\><<< +\NewConfigure{TextField::multiline}{2} +\Configure{TextField::multiline} + {} + { \Tg<textarea + \Attributes>\expandafter\set:ln\multiline:value,|<par del|>% + \global\let\multiline:value=\empty \Tg</textarea>} + +\let\multiline:value=\empty +\def\set:ln#1,#2|<par del|>{#1% + \def\:temp{#2}\ifx \:temp\empty \else + \hfil\break \def\:temp{\set:ln#2|<par del|>}% + \fi \:temp} + +\NewConfigure{multiline::value}{1} +\Configure{multiline::value} + {\let\multiline:value=\AttributeVal} + +\NewConfigure{multiline::width}{1} +\Configure{multiline::width} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space cols="\the\tmp:cnt"}} +>>> + + +\<hyperref password\><<< +\NewConfigure{TextField::password}{2} +\Configure{TextField::password} + {}{\Tg<input type="password" \Attributes />} +>>> + +\<hyperref shared\><<< +\def\Default:Checked#1{% + \let\:temp=\relax + \let\:tempa=\relax + \edef\:temp{\def\:temp####1#1#1####2//{\def\:temp{####2}}% + \:temp \AttributeVal #1=#1#1//% + \def\:tempa####1=####2//{\def\noexpand\AttributeVal{####1}}% + \:tempa\AttributeVal=//}% + \:temp} +>>> + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::radio}{5} +\Configure{ChoiceMenu::radio} + {\IgnorePar\EndP\leavevmode + \Tg<div id="form-\form:id">\gHAdvance\form:id by 1 } + { }{\IgnorePar\EndP\Tg</div>} + {\Default:Checked\radio::default + \Tg<input\Hnewline type="radio" + \ifx \:temp\empty\else checked="checked" \fi + \Attributes\space />} + {} +\NewConfigure{radio::default}{1} +\Configure{radio::default} + {\let\radio::default=\AttributeVal} +>>> + + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::combo}{5} +\Configure{ChoiceMenu::combo} + {} + {~\Tg<select\Hnewline \Attributes \Hnewline size="1">} + {\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} + {\Tg</option>} +\NewConfigure{combo::default}{1} +\Configure{combo::default} + {\let\radio::default=\AttributeVal} +>>> + + + + + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::popdown}{5} +\Configure{ChoiceMenu::popdown} + {}{\HCode{\Hnewline <select \Attributes \Hnewline size="1">}} + {\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} {\Tg</option>} +>>> + +The \verb'size="1"' makes the select a popout memnu + + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::}{5} +\Configure{ChoiceMenu::} + {}{\HCode{\Hnewline <select\Hnewline \Attributes>}}{\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} {\Tg</option>} +\NewConfigure{::menulength}{1} +\Configure{::menulength} + {\edef\Attributes{\Attributes\space size="\AttributeVal"}} +>>> + + + +\section{web} + + + +\section{exerquiz} + + + + +\<32,4 exerquiz\><<< +\Configure{Form}{}{} +\Configure{@HEAD}{\input exerqz.4ht } +\Css{.onClick {color:green;}} +\Configure{TextField::}{}{% + \IgnorePar \EndP + \HCode{<form action="." name="form\quiz@total"><input + type="text"\Hnewline \Attributes /></form>}% +} +\Configure{javascript}{JavaScript:} +>>> + +\<32,4 exerquiz\><<< +\ifx \eq@sqrtmsg\:UnDef + \def\eq@sqrtmsg{"Right!"} +\fi +\ifx \eq@sqwgmsg\:UnDef + \def\eq@sqwgmsg{"Wrong!"} +\fi +\Configure{shortquiz} + {(\alph{quizno})} + {alert(\eq@sqrtmsg,3);} + {alert(\eq@sqwgmsg,3);} +\Configure{quiz} + {(\alph{quizno})} + {qthis=this; + ProcessQuestion (\ANS,"\alph{quizno}",\thequestionno, + 1,"\eq@bqlabel",\Quiz:N)} + {InitializeQuiz("\quiz@total", + \ifeq@nocorrections0\else1\fi,\Quiz:N,\LikeRef{ans-\Quiz:N}, + "(",")")} + {QuizEnd("\:bqlabel",\thequestionno,"\quiz@total",\Quiz:N)} + {Corrections("\eq@RC","\eq@AC",\Quiz:N)} +\Configure{quiz*} + {[]} + {qthis=this; + ProcessQuestion (\ANS,"[]",\thequestionno, + 0,"\eq@bqlabel",\Quiz:N)} + {InitializeQuiz("\quiz@total", + \ifeq@nocorrections0\else1\fi,\Quiz:N, + \LikeRef{ans-\Quiz:N},"","")} +>>> + +\<-NOPE\><<< +\Configure{quiz*} + {qthis=this; + ProcessQuestion(\ANS,"\alph{quizno}",\thequestionno, + 0,"\eq@bqlabel",\Quiz:N)} +>>> + + +\<32,4 exerquiz\><<< +\ConfigureEnv{shortquiz} + {\IgnorePar\EndP\leavevmode} {} {}{} +\Configure{ReturnTo}{\begin{flushright}}{\end{flushright}} +>>> + + + +\<configure html32 exerquiz\><<< +\ConfigureList{questions}% + {\HCode{<ol type="1"\Hnewline>}} + {\HCode{</ol>}\ShowPar} + {\DeleteMark} + {\HCode{<li>}\AnchorLabel} +>>> + + + + + + + +\<exerqz\><<< +% exerqz.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.1999. Eitan M. Gurari & Donald P. Story +|<exerqz's vars|> +|<predefined exerquiz javascript|> +>>> + + + +\<predefined exerquiz javascript\><<< +\JavaScript-$ +var QuizInitialized; +var EndQuizPushed; +var CurrentQuizNo; +var Responses; +var ResponsesAddr; +var Cor; +var CorAddr; +var qthis; +var prev_notify; +function InitializeQuiz(qtfield,mark,quizN,ansN,lbrc,rbrc) { + Score=0; + QuizInitialized=1; + CurrentQuizNo=quizN; + eval( 'document.form'+qtfield+'.'+qtfield+'.value="$eqScore";' ) + RightWrong=new Array(); + |<hide sol|> + Responses=new Array(); + ResponsesAddr=new Array(); + |<hide cor|> + Cor=new Array(); + CorAddr=new Array(); + EndQuizPushed=0; + for(var i=1; i<=ansN; i++){ + RightWrong[i]=0; + } +} +\EndJavaScript +>>> + + + +\<show sol\><<< +if( ResponsesAddr[probno] != null ){ + if (notify == 0 ) { + ResponsesAddr[probno].value=Responses[probno]; + } else { + ResponsesAddr[probno].value="("+Responses[probno]+")"; +} } +qthis.value = "#"; ResponsesAddr[probno]=qthis; +>>> + +\<hide sol\><<< +for(var i in Responses){ + if (prev_notify == 0 ) { + ResponsesAddr[i].value=Responses[i]; + } else { + ResponsesAddr[i].value="("+Responses[i]+")"; +} } +>>> + +% if( Responses != null ){ + + +\<record cor\><<< +var k=Cor.length; +eval('Cor[k]=thisform'+quizN+'.ans'+quizN+'x'+i+'.value'); +eval('CorAddr[k]=thisform'+quizN+'.ans'+quizN+'x'+i); +>>> + + +\<hide cor\><<< +for(var i in Cor){ + CorAddr[i].value=Cor[i]; +} +>>> + +% if( Cor != null ){ + + + +\<predefined exerquiz javascript\><<< +\JavaScript +function href(addr) { top.location.href=addr; } +\EndJavaScript +>>> + +% function href(addr) { window.navigate(addr); } + + + + +\<predefined exerquiz javascript\><<< +\JavaScript +function Corrections(lbl1,lbl2,quizN) { + if ( (EndQuizPushed == 1) && ( CurrentQuizNo == quizN ) ){ + for(var i in RightWrong){ + if( (RightWrong[i]==0) ){ + |<record cor|> + eval('thisform'+quizN+'.ans'+quizN+'x'+i+'.value= "*"'); + } } +} } +\EndJavaScript +>>> + + + + + +\<32,4 exerquiz\><<< +\writesixteen{% +***********************************************************\Hnewline +The `\eq@CA' button fails under Netscape, \Hnewline +due to a code of the following form.\Hnewline +\Hnewline +<html><head><title>?\Hnewline +\space \Hnewline +\space \space \space \Hnewline +\Hnewline +\space \space \Hnewline +\space \space \space \Hnewline +\space \space \space \Hnewline +\space \space \space \Hnewline +\Hnewline + \Hnewline + \Hnewline + \Hnewline +\Hnewline +If you know how to fix the function f() above for Netscape,\Hnewline +without changing the id attribute names, please consider\Hnewline +emailing the fix to tex4ht@tug.org. Thanks\Hnewline +***********************************************************} +>>> + + +\<<< +\JavaScript +function LinkTo(addr) { +} +\EndJavaScript +>>> + +\<<< +\def\eqXInitQuizMsg{\hbox{% + \let\noexpand|=\string + \csname eq@InitQuizMsg\endcsname}} +\expandafter\ifx \csname eq@InitQuizMsg\endcsname\relax + \expandafter\def\csname eq@InitQuizMsg\endcsname{ + "You must initialize the Quiz! Click on "+bqlabel} +\fi +\def\eqXQuizTotalMsg{\hbox{% + \let\noexpand|=\string + \def\thequestionno{"+thequestionno+"}% + \csname eq@QuizTotalMsg\endcsname}} +\expandafter\ifx \csname eq@QuizTotalMsg\endcsname\relax + \expandafter\def\csname eq@QuizTotalMsg\endcsname{"Score: ' + +Score +' out of '+thequestionno+'"} +\fi +\def\eqXMadeChoice{\hbox{% + \let\noexpand|=\string + \csname eq@MadeChoice\endcsname}} +\expandafter\ifx \csname eq@MadeChoice\endcsname\relax + \expandafter\def\csname eq@MadeChoice\endcsname{ + "You have already made a choice. Your choice was (" + +Responses[probno]+")." + +" Do you want to change it?"} +\fi +\expandafter\ifx \csname eqScore\endcsname\relax + \def\eqScore{Score:} +\fi +>>> + +The \verb'Wollen Sie dies \noexpand\344ndern?' is a problem because it +takes the \verb'\344' into \verb'44'. A \verb'\string' will properly +produce \verb'\344'; hence, the above dirty trick. + +\begin{verbatim} +Doesn't IE escape in the way that Acrobat JavaScript does? + +Another possibility is to use String.fromCharCode() + +Convert Octal \344 to decimal 228, then use +String.fromCharCode(228) + + + + + How to deliver browser specific content using JavaScript + + + + +\end{verbatim} + + + +\<<< +\JavaScript-$ +function QuizEnd(bqlabel,thequestionno,quiztotal,quizN){ + if ((QuizInitialized !=1) |||| ( CurrentQuizNo!= quizN )){ + alert($eqXInitQuizMsg,3); + } else { + eval( 'document.form'+quiztotal+'.'+quiztotal+ + '.value=$eqXQuizTotalMsg'); + QuizInitialized=-1; + EndQuizPushed=1; +} } +\EndJavaScript + +\JavaScript-$ +function ProcessQuestion + (key,letterresp,probno,notify,bqlabel,quizN) { + if ((QuizInitialized !=1) |||| ( CurrentQuizNo!= quizN )){ + alert($eqXInitQuizMsg,3); + } else { + | + prev_notify = notify; +} } +\EndJavaScript +>>> + + + + + +\<<< +if (Responses[probno] == null) { + if (key==1) { + Score++; + RightWrong[probno]=1; + } + else + RightWrong[probno]=0; + | + Responses[probno]=letterresp; +} +else { + if (notify==0) + User=true; + else + User=confirm($eqXMadeChoice); + if (User) { + if (RightWrong[probno]==1) { + if (key==0) { + Score -= 1; + RightWrong[probno]=0; + | + Responses[probno]=letterresp; + } + } + else { + if (key==1) { + Score++; + RightWrong[probno]=1; + | + Responses[probno]=letterresp; + } + else { + RightWrong[probno]=0; + | + Responses[probno]=letterresp; + } + } + } +} +>>> + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%% to be placed %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{to be placed} + + + + +\<0 th4,latex\><<< +\Configure{()}{$}{$} +\Configure{[]}{\:xhtml{\IgnorePar\EndP}$$}{$$} +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\section{tex4ht} + + + +\<<< +\Configure{TITLE+}{\HCode{\jobname.\:html}} +>>> + +\<0,32,4 latex\><<< +\ifTag{TITLE+}{\Configure{TITLE+}{\LikeRef{TITLE+}}}{} +>>> + + + + + + + + + + + + + + + + + + + + + +\<0,32,4 tex4ht\><<< +|<0,32,4 preambles|> +\ifx \a:FontCss:\:UnDef + \Configure{FontCss}{Font\string_Css##1} + {Font\string_Css\string_Plus\space##1} +\fi +\expandafter\ifx \csname aa:Css\endcsname\relax + \Configure{Css}{Css: ##1} +\fi +\:CheckOption{edit} \if:Option + \Configure{edit}{\HCode{<strong><}}{\HCode{></strong>}} + {<strong><}{></strong>} +\fi +\:CheckOption{hooks++} \if:Option +\else \:CheckOption{hooks+} \if:Option +\else \:CheckOption{hooks} \if:Option +\fi\fi\fi +\if:Option + \Configure{hooks} + {\HCode{<strong class="hooks"><}}{\HCode{></strong>}}{}{} +\fi + + +\Configure{ExitHPage}{exit}{exit }{} +\Configure{TocLink}{\Link{#2}{#3}#4\EndLink} +\Configure{MiniHalign}{\hlg:a}{\hlg:b}\hlg:c\hlg:d{\hlg:e}\hlg:f +\:CheckOption{no-halign} \if:Option \else + \Configure{noalign-}{}{} +\fi +\Configure{PictureAlt*+} + {\let\sv:HtmlPar|=\HtmlPar \let\HtmlPar|=\empty + |<postscript for /Picture|>% + |<tex halign and cr/crcr|>% + \NoFonts\csname PauseMathClass\endcsname \SUBOff \SUPOff + \let\HCode|=\:gobble |%\offinterlineskip|% + \let\EndPicture|=\empty} + {\let\HCode|=\:HCode + \let\EndPicture|=\:UnDef \let\HtmlPar|=\sv:HtmlPar \SUBOn \SUPOn + \csname EndPauseMathClass\endcsname \EndNoFonts + |<tex4ht halign and cr/crcr|>% + |<delay postscript|>} +>>> + +\<postscript for /Picture\><<< +\def\PsCode##1{{\ht:special{\PsCodeSpecial##1}}}% +>>> + +\<tex halign and cr/crcr\><<< +\iffalse{\fi +\let\sv:halign|=\halign +\let\sv:cr|=\cr +\let\sv:crcr|=\crcr +\iffalse}\fi +\RecallTeXcr \let\halign |=\TeXhalign +>>> + + +\<tex4ht halign and cr/crcr\><<< +\iffalse{\fi +\let\halign|=\sv:halign +\let\cr|=\sv:cr +\let\crcr|=\sv:crcr +\iffalse}\fi +>>> + + +\<delay postscript\><<< +\let\PsCode|=\relax +>>> + + +\<32,4 tex4ht\><<< + \Configure{writetoc}{} +>>> + + +\<0,32,4 tex4ht\><<< +\Configure{CutAtTITLE+}{} +\Configure{HPageTITLE+}{} +\Configure{AtBeginDocument} + {\edef\recallcatcodes{% + \catcode`\noexpand\_|=\the\catcode`\_ + \catcode`\noexpand\^|=\the\catcode`\^ }% + \catcode`\_=8\catcode`\^=7} + {\recallcatcodes} +>>> + + + +\<0,32,4 tex4ht\><<< +\Configure{crosslinks}{[}{] + }{next}{prev}{prev-|<tail|>}{front}{tail}{up} +\:CheckOption{next} \if:Option + \Configure{next+}{\ShowPar\par\noindent [}{]} +\fi +\Configure{TocAt*}{}{} +\Configure{TocAt}{}{} + +\Configure{halignTB}{\HCode{<table }}{\HCode{>}} +\def\t:HA{\HCode{</table>}} +\def\R:HA{\HCode{<tr \Hnewline valign="baseline">}} +\def\r:HA{\HCode{</tr>}} +\def\D:HA{\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan" \fi}% + \halignTD \HCode{\Hnewline>}} +\def\d:HA{\HCode{</td>}} +\Configure{HVerbatim+}{\z@}{\:nbsp} +\Configure{CssFile}{\jobname.css} + {/* \aa:CssFile\space from \jobname.tex (TeX4ht) */} +\Configure{Picture+}{}{} +\Configure{Picture*}{}{} +\Configure{Needs}{l. + \the\inputlineno\space--- needs --- #1 ---} +\Configure{Needs-}{l. + \the\inputlineno\space--- needs --- #1 ---} +|<yes css|> +>>> +\<0,32,4 tex4ht\><<< +\Configure{moveright}{\leavevmode\endgraf } +\Configure{HChar}{x} +>>> + + + + +\<yes css\><<< + \def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} + \def\SPAN:#1{\HCode{<span class="#1">}} + \def\EndSPAN:{\HCode{</span>}} + \def\DIV:#1{\HCode{<div class="#1">}} + \def\EndDIV:{\HCode{</div>}} +>>> + +\<no css\><<< + \def\:SPAN#1#2{#2} + \let\SPAN:|=\:gobble \let\EndSPAN:|=\empty + \let\DIV:|=\:gobble \let\EndDIV:|=\empty +>>> + + + + + +\section{Interpretation for the Entries} + + + + +Use \verb'\ ', and not \verb'~', in style files, because some +users redefine the latter macro. + +\<html latex tocs\><<< +\def\tocpart#1#2#3{\par\toc:SPAN{partToc}{#2}\par}% +\def\toclikepart#1#2#3{\par\toc:SPAN{likepartToc}{#2}\par}% +\expandafter\ifx \csname @chapter\endcsname\relax + \def\tocsection#1#2#3{\par + \toc:SPAN{sectionToc}{\def\:temp{#1}\ifx \:temp\empty\else + #1 \fi #2}\par} + \def\toclikesection#1#2#3{\par\toc:SPAN{likesectionToc}{#2}\par}% + \def\tocsubsection#1#2#3{\par\ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par\ \toc:SPAN{likesubsectionToc}{#2}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \toc:SPAN{likesubsubsectionToc}{#2}\par} + \def\tocparagraph#1#2#3{\par\ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par\ \ \toc:SPAN{likeparagraphToc}{#2}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \toc:SPAN{likesubparagraphToc}{#2}\par} +\else + \def\tocchapter#1#2#3{\par\toc:SPAN{chapterToc}{#1 #2}\par} + \def\toclikechapter#1#2#3{\par\toc:SPAN{likechapterToc}{#2}\par}% + \def\tocappendix#1#2#3{\par\toc:SPAN{appendixToc}{#1 #2}\par} + \def\tocsection#1#2#3{\par\ \toc:num{section}{#1}{#2}\par} + \def\toclikesection#1#2#3{\par\ \toc:SPAN{likesectionToc}{#2}\par} + \def\tocsubsection#1#2#3{\par\ \ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par + \ \ \toc:SPAN{likesubsectionToc}{#2}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \ \toc:SPAN{likesubsubsectionToc}{#2}\par} + \def\tocparagraph#1#2#3{\par\ \ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par + \ \ \ \toc:SPAN{likeparagraphToc}{#2}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \ \toc:SPAN{likesubparagraphToc}{#2}\par} +\fi +\def\toc:num#1#2#3{\def\:temp{#1#2}\toc:SPAN{#1Toc}{\ifx \:temp\empty \else + #2 \fi #3}} +\def\toc:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +>>> + + + + + + + + +\section{amstex} + + +\<configure picmath0 amstex\><<< +\:CheckOption{no-matrix} \if:Option \else +\:CheckOption{pic-matrix} \if:Option + |<pic amstex.tex matrix 0.0|> +\else + |<tabular amstex.tex matrix 0.0|> +\fi\fi +\:CheckOption{no-align} \if:Option \else +\:CheckOption{pic-align} \if:Option + |<pic amstex.tex align 0.0|> +\else + |<tabular amstex.tex align 0.0|> +\fi\fi +>>> + + + + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{HTML3.2} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<html32\><<< +% html32.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2016 TeX Users Group +% Copyright (C) |CopyYear.1997. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + + +\section{article, report, book} + +\<config book-report-article 3.2\><<< +|<32,4 article,report,book|> +|<0,32,4 article,report,book|> +>>> + + + +\<32 latex\><<< +\ConfigureList{description}% + {\EndP\HCode{<dl class="description">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="description">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}} +>>> + + +\<32,4 article,report,book\><<< +|<quotations 32,4|> +\Configure{listof}{}{}{}{\HCode{<br\xml:empty>}}{}{} +>>> + +\<quotations 32,4\><<< +\ConfigureEnv{quotation}{}{}{\start:env{quotation}}{\end:env} +>>> + +\<config book-report-article 3.2\><<< +\ConfigureList{thebibliography}% + {\HCode{<dl class="thebibliography">}} + {\HCode{</dl>}\ShowPar} + {\HCode{<dt class="thebibliography">}\bgroup \bf} + {\egroup\HCode{<dd\Hnewline class="thebibliography">}} +\:CheckOption{/bib} \if:Option \else + \ConfigureList{thebibliography}% + {\HCode{<table border="0" cellpadding="0" + cellspacing="0"><tr><td>}}% + {\HCode{</td></tr></table>}}% + {\HCode{</td></tr><tr valign="top"><td>}}% + {\AnchorLabel \:nbsp\HCode{</td><td>}} +\fi +>>> + +\<config book-report-article 3.2\><<< +\ConfigureEnv{quote}{}{}{\start:env{quote}}{\end:env} +>>> + + +\<config book-report-article 3.2\><<< +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="theindex">}\let\end:theidx|=\empty} + {\end:theidx\HCode{</div>}} + {} {\hfil\break\HCode{<br\xml:empty>}} + {\ \ \ \ } {\hfil\break\HCode{<br\xml:empty>}} + {\ \ \ \ \ \ \ \ } {\hfil\break\HCode{<br\xml:empty>}} + {\hbox{\end:theidx\HCode{<p class="theindex">}}% + \def\end:theidx{\HCode{</p>}}} +>>> + + +\<32,4 report,book\><<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \chapter*{\indexname}\fi} +>>> + +\<configure html32 article\><<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \section*{\indexname}\fi} +>>> + + + + +\<latex config div\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \thesection\fi} +\Configure{section}{}{} + {\ifvmode\IgnorePar\fi \EndP \HCode{<h3 class="sectionHead">}% + \TitleMark\space} + {\HCode{</h3>}\IgnoreIndent \par} +\Configure{sectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesection\space + \fi\fi #1} +>>> + + +\<latex config like div 3.2\><<< +\Configure{likesection}{}{} + {\ifvmode\IgnorePar\fi \EndP \HCode{<h3 class="likesectionHead">}} + {\HCode{</h3>}\IgnoreIndent \ShowPar \par} +\Configure{likesubsection}{}{} + {\bgroup \IgnorePar\HCode{<h4 class="likesubsectionHead">}} + {\HCode{</h4>}\IgnoreIndent\egroup} +\Configure{likesubsubsection}{}{} + {\bgroup\IgnorePar\HCode{<h5 class="likesubsubsectionHead">}} + {\HCode{</h5>}\IgnoreIndent\egroup} +>>> + + +\<latex config div\><<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \thesubsection \fi} +\Configure{subsection}{}{} + {\bgroup \IgnorePar\HCode{<h4 class="subsectionHead">}% + \TitleMark\space} + {\HCode{</h4>}\IgnoreIndent\egroup} +\Configure{subsectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesubsection\space + \fi\fi #1} +>>> + + +\<latex config div\><<< +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \thesubsubsection \fi} +\Configure{subsubsection}{}{} + {\bgroup \IgnorePar\HCode{<h5 class="subsubsectionHead">}% + \TitleMark\space} + {\HCode{</h5>}\IgnoreIndent\egroup} +\Configure{subsubsectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesubsubsection\space + \fi\fi #1} +>>> + + + +\<latex config div\><<< +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<strong class="paragraphHead">}} + {\HCode{</strong>}\IgnorePar} +\Configure{subparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<strong class="subparagraphHead">}} + {\HCode{</strong>}\IgnorePar} +>>> + + + + + + +\<config book-report-article 3.2\><<< +|<config sections 3.2|> +>>> + + + +\section{article} + +\<configure html32 article\><<< +|<config book-report-article 3.2|> +|<config report / article 3.2|> +>>> + + + + +\section{report} + +\<configure html32 report\><<< +|<config book-report-article 3.2|> + |<config report / article 3.2|> +|<32,4 report,book|> +|<32,4 report|> +>>> + + + + +\<config report / article 3.2\><<< +\ConfigureEnv{abstract}{\HCode{<\tbl:XV{abstract}><tr><td\Hnewline + >}}{\end:env}{}{} +>>> + + +\section{book} + +\<configure html32 book\><<< +|<config book-report-article 3.2|> +|<32,4 report,book|> +|<32,4 book|> +>>> + + + +\section{amsart} + + + +\<ams art,proc\><<< +\Configure{endsection} + {part} +\Configure{endsubsection} + {section,part} +\Configure{endsubsubsection} + {subsection,section,part} +\Configure{endparagraph} + {subsubsection,subsection,section,part} +>>> + + +\<configure html32 amsart\><<< +|<config sections 3.2|> +|<book-report-article caption 3.2|> +|<latex report,... config 3.2|> +|<latex shared div config|> +|<ams art,proc,book|> +|<latex config div|> +|<ams art,proc|> +>>> + + +\<ams art,proc,book\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="maketitle">}% + \ConfigureEnv{center} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi}% + |<footnote for ams title|>% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar \EndP + \HCode{<h2>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +>>> + +\<footnote for ams title\><<< +\Configure{footnotetext} + {\HCode{<sup>}\HPage{\FNnum}\HCode{<div>}\NoFonts} + {\EndNoFonts} + {\HCode{</div>}\EndHPage{}\HCode{</sup>}}% +>>> + + + +\<ams art,proc\><<< +\Configure{|<thanks author date and|>} + {\par\IgnorePar\EndP \HCode{<div class="thanks">}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<div class="authors"><span class="author">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</span></div>}} + {\par\IgnorePar\EndP \HCode{<div class="date">}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\lowercase{\HCode{</span><span class="and">}}and~% + \lowercase{\HCode{</span><span>}}} + {\HCode{<br\xml:empty>}} +>>> + + + +\<config book-report-article 3.2\><<< +\Configure{|<thanks author date and|>} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="date" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and" \xml:empty>}} + {\HCode{<br \xml:empty>}} +>>> + +\<thanks author date and\><<< +thanks author date and>>> + + + + + + +\<book-report-article caption 3.2\><<< + |<makeketitle config 3.2|> +>>> + +\<makeketitle config 3.2\><<< +\Configure{caption}{\HCode{\if:nopar \else <br\xml:empty>\fi + <div align="center"><table\Hnewline + ><tr valign="bottom"><td |<no wrap|> ><strong>}} + {} {\HCode{</strong></td><td \Hnewline>}} + {\HCode{</td></tr></table></div>}} +>>> + + + + + + + + +\section{aa} + +\<configure html32 aa\><<< +|<config sections 3.2|> +|<book-report-article caption 3.2|> +|<latex report,... config 3.2|> +|<latex config div|> +|<latex config like div 3.2|> +|<configure aa 3.2/4.0t|> +|<latex shared div config|> +|<shared sec div config|> +|<shared subsec div config|> +|<shared sub end div config|> +\ifx \part\:UnDef \else + |<shared part div config|> + |<latex shared likepart config|> +\fi +>>> + + + + +\<latex report,... config 3.2\><<< +\ConfigureToc{lof} {\empty}{\ }{}{\HCode{<br\xml:empty>}} +\ConfigureToc{lot} {\empty}{\ }{}{\HCode{<br\xml:empty>}} +>>> + + + + + +\section{pictex} + +\<configure html32 pictex\><<< +\Configure{pictex}{\HCode{<div align="center" + >}}{\HCode{</div>}}{+[PICT]} +>>> + +\section{array} + +\<configure html32 array\><<< +|<array.sty Configure 3.2|> +|<html latex array/tabular Config 3.2|> +>>> + + +\<html latex array/tabular Config 3.2\><<< +\Configure{array} + {\halignTB{array}} + \t:HA + \R:HA\r:HA\D:HA\d:HA +\Configure{halignTB<>}{array}{<>\HAlign} +\Configure{tabular} + {\halignTB{tabular}} + \t:HA + \R:HA\r:HA\D:HA\d:HA +\Configure{halignTB<>}{tabular}{\HCode{cellpadding="5" \VBorder}<>\HAlign} +\ConfigureEnv{array}{\IgnorePar\HCode{<div align="center">}} + {\HCode{</div>}\ShowPar}{}{} +\ConfigureEnv{tabular}{\IgnorePar\HCode{<div align="center">}} + {\HCode{</div>}\ShowPar}{}{} +>>> +\<array.sty Configure 3.2\><<< +\Configure{VBorder}{\let\VBorder|=\empty}{\gdef\VBorder{border="1"}}{}{} +>>> + + + +\section{latex.ltx} + +\<configure html32 latex\><<< +|<0,32,4 plain,latex|> +|<32,4 plain,latex|> +|<32 plain,latex|> +|<32 picmath th4,latex|> +|<0,32,4 latex|> +|<32,4 latex|> +|<32 latex|> +|<latex footnotes|> +% \:CheckOption{javahelp} \if:Option +% \input javahelp.4ht +% \else +% \Log:Note{for a JavaHelp output format, +% use the command line option `javahelp'} +% \fi +>>> + + %%%%%%%%%%%%%%%%%%%%%%% + % ltplain.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{obeylines} + + + +\<32 plain,latex\><<< +\:CheckOption{/obeylines} \if:Option + |<delayed obeylines confg|> +\else |<obeylines confg|> \fi +>>> + + +\<obeylines confg\><<< +\Configure{obeylines} + {} {} {\hbox{\HCode{<br\xml:empty>}}} +>>> + +Typically, \verb'\obeylines' appears in a separate line before the +content. The following option is introduced to avoid an extra leading +empty line. + +\<delayed obeylines confg\><<< +\Configure{obeylines} + {\def\Line:Break{\def\Line:Break{\hbox{\HCode{<br\xml:empty>}}}}} {} + {\Line:Break} +>>> + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltlogos.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Logos} + + +If we redefine the following we get LaTeX in hypertext, and protection +within titles. Without this definition we get LATEX. + +\<32 latex\><<< +|</TeX for 3.2|> +\def\:temp{LaTeX} +\HLet\LaTeX|=\:temp +>>> + +\</TeX for 3.2\><<< +\def\:temp{TeX} +\HLet\TeX|=\:temp +>>> + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmisc.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Miscellaneous Environments} + + + + +\<32 latex\><<< +\Configure{centercr}{\ht:special{t4ht=<br\xml:empty>}} + {\everypar{\everypar{\HCode{<p>}}}} +>>> + +\<32 latex\><<< +\def\start:env#1{\IgnorePar\HCode{<\tbl:XV{#1}><tr><td\Hnewline>}} +\def\tbl:XV#1{table \Hnewline border="0" width="100\%"} +\def\end:env{\IgnorePar \end:TTT\ShowPar} +>>> + + cellpadding="0" cellspacing="15" + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmath.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Math Setup} + + +\<32 latex\><<< +\:CheckOption{pic-eqnarray} \if:Option +\else |<TABLE eqnarray Config 3.2|>\fi +>>> + + +\<TABLE eqnarray Config 3.2\><<< +\Configure{eqnarray}{\HCode{<table\Hnewline>}}{\HCode{</table>}} + {\HCode{<tr valign="middle">}}{\HCode{</tr>}} + {\HCode{\ifnum \HCol=4 <td\Hnewline width="10"></td>\fi + <td\Hnewline |<no wrap|> align="\ifcase\HCol \or right\or center\or + left\else right\fi" \Hnewline>}}{\HCode{</td>}} +\ConfigureEnv{eqnarray}{\HCode{<div align="center">}} + {\HCode{</div>}}{}{} +\ConfigureEnv{eqnarray*}{\HCode{<div align="center">}} + {\HCode{</div>}}{}{} +>>> + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % lttab.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Tabbing, Tabular and Array Environments} + + + + + +\<32 latex\><<< +\Configure{VBorder}{\let\VBorder|=\empty}{\def\VBorder{border="1"}}{}{} +|<html latex array/tabular Config 3.2|> +>>> + + + + +\<PICT dot tabbing\><<< +\:CheckOption{pic-tabbing'} \if:Option + \edef\:temp{\LikeRef{|<tabbing tag|>.}}% + \def\:tempa{.}\ifx \:temp\:tempa + \ConfigureEnv{tabbing}{\Picture*{}}{\EndPicture}{}{} + \fi +\fi +>>> + + +\<32 latex\><<< +\:CheckOption{pic-tabbing} \if:Option + \ConfigureEnv{tabbing}{\Picture*{}}{\EndPicture}{}{} +\else + |<TABLE tabbing Config 3.2|> + |<PICT dot tabbing|> +\fi +>>> + + + +\<TABLE tabbing Config 3.2\><<< +\Configure{tabbing}[1.5]{\IgnorePar\leavevmode \ht:special{t4ht=<table + \Hnewline\:zbsp{tabbing}><tr \Hnewline valign="bottom">}} + {\ht:special{t4ht=</tr></table>}} + {\gt:tab \ht:special{t4ht=<td \:tempa\Hnewline>}} + {\ht:special{t4ht=</td>}} +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%% to be placed %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{to be placed} + + +\<32 picmath th4,latex\><<< +\Configure{[]} + {\PicDisplay$$\everymath{}\everydisplay{}} + {$$\EndPicDisplay} +\Configure{()}{\protect\PicMath$}{$\protect\EndPicMath} +>>> + + +\<32 latex\><<< +\ifx\bf\:UnDef + \def\bf{\normalfont\bfseries} +\fi +\ConfigureList{trivlist}% + {\HCode{<dl>}} {\HCode{</dl>}\ShowPar} + {\HCode{<dt>}\bgroup \bf}{\egroup\HCode{<dd\Hnewline>}} +\ConfigureList{list}% + {\HCode{<dl>}} {\HCode{</dl>}\ShowPar} + {\HCode{<dt>}\bgroup \bf}{\egroup\HCode{<dd\Hnewline>}} +>>> + + + + +\<32 latex\><<< +\ConfigureEnv{enumerate} + {}{|<try env inline par|>}{}{} +\ConfigureList{enumerate}% + {|<enumerate I|>} + {|<enumerate II|>} + {|<enumerate III|>} + {|<enumerate IV-|>} +>>> + + +\<enumerate I\><<< +\EndP\HCode{<ol + class="enumerate\expandafter\the\csname @enumdepth\endcsname" + >}|<save end:itm|>\global\let\end:itm=\empty +>>> + +\<enumerate II\><<< +|<recall end:itm|>% +\EndP\HCode{</li></ol>}\ShowPar +>>> + + +\<enumerate III\><<< +\end:itm \gdef\end:itm{\EndP\Tg</li>}\DeleteMark +>>> + +\<enumerate IV-\><<< +\HCode{<li class="enumerate">}\AnchorLabel +>>> + + + + +\<32 latex\><<< +\ConfigureEnv{itemize} + {\ifvmode \IgnorePar\fi \EndP}{|<try env inline par|>} + {}{} +\ConfigureList{itemize}% + {\EndP\HCode{<ul class="itemize\expandafter\the + \csname @itemdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\ifvmode \IgnorePar\fi + \EndP\HCode{</li></ul>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark} + {\HCode{<li class="itemize">}} +>>> + + +\<save end:itm\><<< +\PushMacro\end:itm +>>> + + +\<recall end:itm\><<< +\PopMacro\end:itm \global\let\end:itm \end:itm +>>> + + + +\<try env inline par\><<< +\ShowPar +>>> + + + + +\<32 latex\><<< +\NewConfigure{enumerate}[1]{\c:enu #1|<par del|>} +\def\c:enu#1#2#3#4#5|<par del|>{% + \def\OLStyle{\ifcase \@enumdepth \or + type="#1"\or type="#2"\or type="#3"\or type="#4"\else\fi #5}} +>>> + +\<32 latex\><<< +\Configure{enumerate}{1aiA} +>>> + + +% \Configure{tableofcontents}{}{}{\ShowPar}{\HCode{<br\xml:empty>}}{} + +\<32 latex\><<< +\Configure{tableofcontents} + {\IgnorePar\EndP\HCode{<div class="tableofcontents">}\IgnorePar} + {} + {\IgnorePar\EndP\HCode{</div>}\ShowPar} + {\HCode{<br\xml:empty>}} {} +>>> + +\<32 latex\><<< +\Configure{TocAt} + {|<save configure tableofcontents|>% + \Configure{tableofcontents} + {\IgnorePar\EndP\HCode{<div class="\sec:typ TOCS">}} + {}{\IgnorePar\HCode{</div>}\ShowPar}{\HCode{<br\xml:empty>}}{}% + \ifvmode \IgnorePar\fi \EndP + } + {|<recall configure tableofcontents|>\par\ShowPar} +\Configure{TocAt*} + {|<save configure tableofcontents|>% + \Configure{tableofcontents} + {\IgnorePar\EndP\HCode{<div class="\sec:typ TOCS">}} + {}{\IgnorePar\HCode{</div>}\ShowPar}{\HCode{<br\xml:empty>}}{}% + \ifvmode \IgnorePar\fi \EndP + } + {|<recall configure tableofcontents|>\par\ShowPar} +>>> + + +% \Configure{TocAt} +% {|<save configure tableofcontents|>% +% \Configure{tableofcontents} +% {\IgnorePar}{}{\ShowPar} {\HCode{<br\xml:empty>}}{}} +% {|<recall configure tableofcontents|>} +% \Configure{TocAt*} +% {|<save configure tableofcontents|>% +% \Configure{tableofcontents} +% {\IgnorePar}{}{\ShowPar}{\HCode{<br\xml:empty>}}{}} +% {|<recall configure tableofcontents|>} +% + + + +\<32 latex\><<< +\Configure{newtheorem} + {\HCode{<div class="newtheorem"><b class="head">}} + {\HCode{</b>}} + {\HCode{</div>}} +>>> + +\<32 latex\><<< +\Configure{verbatim}{\:nbsp}{\a:sp} +\Configure{verb}{\HCode{<code>}}{\HCode{</code>}} +>>> + +\<32 latex\><<< +\def\env:verb#1{\ifvmode \IgnorePar \fi\EndP + \HCode{<\tbl:XV{#1}><tr><td\Hnewline + >}\HCode{<pre>}\EndNoFonts} +>>> + + + +\<32 latex\><<< +\Configure{marginpar} + {\HCode{<table \Hnewline align="right"><tr><td \Hnewline><u><small>}} + {\HCode{</small></u></td></tr></table>}} +>>> + +\<32 latex\><<< +\Configure{equation} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{equation}><tr><td><div align="center">}\IgnorePar + \Configure{$$}{\PicDisplay}{\EndPicDisplay} + {\everymath{}\everydisplay{}} + } + {\IgnorePar\HCode{</div></td><td width="5\%">}} + {\end:TTT\IgnorePar\par} +>>> + + +\<32 latex\><<< +\ConfigureEnv{picture} + {\ifvmode \IgnorePar\leavevmode\HCode{<p align="center">}\fi} + {}{}{} +>>> + + +\<32 latex\><<< +\Configure{float}{} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<hr\xml:empty><div align="center"\Hnewline><table><tr><td\Hnewline>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</td></tr></table></div><hr\xml:empty>}\csname par\endcsname} +>>> + + +\<32 latex\><<< +\Configure{newline}{\HCode{<br\xml:empty>}} +>>> + + + + + + +\section{plain latex} + + + +\<32 plain,latex\><<< +\def\:zbsp#1{cellpadding="0" border="0" cellspacing="0"\Hnewline} +>>> + + + + +\<pic plain/latex math 3.2NO\><<< +\Configure{big}{\HCode{<big>}}{\HCode{</big>}} +\Configure{Big}{\HCode{<big><big>}}{\HCode{</big></big>}} +\Configure{bigg}{\HCode{<big><big><big>}} + {\HCode{</big></big></big>}} +\Configure{Bigg}{\HCode{<big><big><big><big>}} + {\HCode{</big></big></big></big>}} +>>> + +\<pic plain math 3.2\><<< +\Contribute{underbrace}{align="middle"} +>>> + + +\<pic plain/latex math 3.2\><<< +\Configure{underline} + {\Tg<u>}{\Tg</u>} +\newbox\tmp:bx +\Configure{overline}{\Picture+{ + \a:@Picture{overline}}\setbox\tmp:bx|=\hbox + \bgroup\everypar{}}{\egroup\o:overline:{\box\tmp:bx}\EndPicture} +>>> + + +\<pic plain/latex math 3.2\><<< +\NewConfigure{@root}{1} +\Configure{@root}{align="middle" } +>>> + + + + + +\section{plain} + +\<configure html32 plain\><<< +|<0,32,4 plain,latex|> +|<32 plain,latex|> +|<0,32,4 plain|> +|<32,4 plain|> +|</TeX for 3.2|> +|<32 plain|> +\:CheckOption{plain-} \if:Option \else + \Configure{item}{}{}{\par\leavevmode}{} +\fi +>>> + + + +\<32 plain,latex\><<< +\Configure{centerline}{\HCode{<div align="center"\Hnewline + class="centerline">}}{\HCode{</div>}} +\Configure{leftline}{\HCode{<p\Hnewline class="leftline">}}{} +\Configure{rightline}{\HCode{<p align="right"\Hnewline + class="rightline">}}{} +>>> + + + + + +\<picmath plain,latex\><<< +\Configure{pmatrix} + {\ifvmode + \def\end:pmatrix{\IgnorePar\HCode{</div>}\end:TTT}% + \:xhtml{\IgnorePar\EndP}\HCode + {<\tbl:XV{pmatrix}><tr><td><div align="center"\Hnewline>}% + \else \HCode{<span class="pmatrix">}% + \def \end:pmatrix{\HCode{</span>}}% + \fi} + {\end:pmatrix} +>>> + + + + + + +\<32 plain\><<< +\:CheckOption{pic-eqalign} \if:Option + \:CheckOption{no-halign} \if:Option \else + \fi +\else |<TABLE eqalign shared Configure 3.2|> +\fi +>>> + + + + + +\<TABLE eqalign shared Configure 3.2\><<< +\Configure{eqalign} + {\HCode{<div align="center"><table>}} + {\HCode{</table></div>}} + {\HCode{<tr \Hnewline + valign="midlle">}}{\IgnorePar\HCode{</tr>}} + {\HCode{\ifnum \HCol=3 <td\Hnewline width="30"></td>\fi + <td align="\ifnum \HCol=2 + left\else right\fi" |<no wrap|> \Hnewline>}} + {\HCode{</td>}} +\def\:eqalign:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} +>>> + + +\<TABLE eqalign shared Configure 3.2\><<< +\Configure{eqalignno} + {\HCode{<div align="center"><table>}} + {\HCode{</table></div>}} + {\HCode{<tr \Hnewline + valign="bottom">}}{\IgnorePar\HCode{</tr>}} + {\HCode{\ifnum \HCol=3 <td\Hnewline width="10"></td>\fi + <td align="\ifnum \HCol=2 + left\else right\fi" |<no wrap|> \Hnewline>}} + {\HCode{</td>}} +\def\:eqalignno:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} +>>> + + + + +\<TABLE eqalign shared Configure 3.2\><<< +\Configure{leqalignno} + {\HCode{<div align="center"><table>}} + {\HCode{</table></div>}} + {\HCode{<tr \Hnewline + valign="middle">}}{\IgnorePar\HCode{</tr>}} + {\HCode{\ifnum \HCol=3 <td\Hnewline width="10"></td>\fi + <td align="\ifnum \HCol=2 + left\else right\fi" |<no wrap|> \Hnewline>}} + {\HCode{</td>}} +\def\:leqalignno:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} +>>> + + + + + + + +\<32 plain\><<< +\Configure{settabs}[1.5]{\IgnorePar\leavevmode \ht:special{t4ht=<table + \Hnewline\:zbsp{settabs}><tr \Hnewline valign="bottom">}} + {\ht:special{t4ht=</tr></table>}} + {\gt:tab \ht:special{t4ht=<td \:tempa\Hnewline>}} + {\ht:special{t4ht=</td>}} +>>> + + + +\<32 plain\><<< +\Configure{narrower}{\ifvmode \IgnorePar\fi + \HCode{<table cellpadding="15" class="narrower"><tr + class="narrower"><td class="narrower">}\ifvmode \IgnorePar\fi} + {\ifvmode \IgnorePar\fi + \HCode{</td></tr></table>}\ifvmode \IgnorePar\fi} +>>> + + + +\<32 plain\><<< +\Configure{proclaim} + {\IgnorePar\HCode{<div class="proclaim"><strong class="proclaim">}} + {\HCode{</strong>}} {\IgnorePar\HCode{</div>}} +\Configure{beginsection} + {}{} + {\ifvmode \IgnorePar\fi + \HCode{<h3 class="beginsection">}} + {\HCode{</h3>}\par\ShowPar} +\ConfigureToc{beginsection} + {} {\relax} {} { } +>>> + + + + + +\<32 plain\><<< +\Configure{TableOfContents} {}{}{\ShowPar}{\HCode{<br\xml:empty>}}{} +>>> + + + +\<32 plain\><<< +\Configure{insert} + {\IgnorePar\HCode{<hr\xml:empty>}\IgnorePar} + {\IgnorePar\HCode{<hr\xml:empty>}\IgnorePar} +>>> + + + + +\section{amsmath} + + + +\<32,4 pic amsmath\><<< +|<amsmath / amstex1 m:env|> +\ConfigureEnv{eqxample}{\m:env{eqxample}}{\endm:env}{}{} +>>> + + + + + + + + +\<configure html32-math amsmath\><<< +\ConfigureEnv{align*}{\m:env{align*}}{\endm:env}{}{} +\ConfigureEnv{align}{\m:env{align}}{\endm:env}{}{} +\ConfigureEnv{alignat*}{\m:env{alignat*}}{\endm:env}{}{} +\ConfigureEnv{alignat}{\m:env{alignat}}{\endm:env}{}{} +\ConfigureEnv{flalign*}{\m:env{flalign*}}{\endm:env}{}{} +\ConfigureEnv{flalign}{\m:env{flalign}}{\endm:env}{}{} +\ConfigureEnv{xalignat*}{\m:env{xalignat*}}{\endm:env}{}{} +\ConfigureEnv{xalignat}{\m:env{xalignat}}{\endm:env}{}{} +\ConfigureEnv{xxalignat}{\m:env{xxalignat}}{\endm:env}{}{} +>>> + + + + +\<32,4 pic amsmath\><<< +\ConfigureEnv{gather*}{\m:env{gather*}}{\endm:env}{}{} +\ConfigureEnv{gathered}{\m:env{gathered}}{\endm:env}{}{} +\ConfigureEnv{matrix}{\m:env{matrix}}{\endm:env}{}{} +\ConfigureEnv{quotation}{\m:env{quotation}}{\endm:env}{}{} +\Configure{equations}{*}{} +>>> + + + + +A `\verb'\begin{multline}...\end{multline}' is not a standard environment +in the sense that the environment as a whole is read in one piece and +then processed, instead of reading it piecewise and process it as it +goes. That is, we have a behavior similar to that in verbatim +environments. The behavior is due to multline being implemented in +terms of \verb'\gather@#1{..}'. Hence, for the picture environment, we +need to change early the catcodes of `\verb'_' and `\verb'^'. + +\<32,4 pic amsmath\><<< +\ConfigureEnv{multline} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{multline}><tr><td>}\Picture*{}\ExtractHLabel + } + {\EndPicture \HCode{</td><td width="5\%">}\PutHLabel\end:TTT} + {}{} {}{} +\ConfigureEnv{multline*} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{multline-star}><tr><td>}\Picture*{}% + } + {\EndPicture \end:TTT} + {}{} +|<extract amsmath labels|> +>>> + + +\<extract amsmath labels\><<< +\def\ExtractHLabel{% + \def\tagform@##1{{\xdef\:HLabel{\noexpand\tagform@{##1}}}}} +\def\PutHLabel{\:HLabel} +>>> + + + + + +\<configure html32-math amsmath\><<< +|<32,4 pic amsmath|> +>>> + +\<32,4 pic amsmath\><<< +\ConfigureEnv{gather} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{gather}><tr><td + class="gather1">}\Picture*{}\ExtractHLabel + } + {\EndPicture \HCode{</td><td width="5\%">}\PutHLabel\end:TTT} + {}{} +\ConfigureEnv{gather*} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<\tbl:XV{gather-star}><tr><td>}\Picture*{}% + } + {\EndPicture \end:TTT} + {}{} +\Css{td.gather-star, td.gather1 {text-align:center; }} +>>> + +\section{amstex.sty} + +\<configure html32 amstex1\><<< +\ConfigureEnv{aligned}{\m:env{aligned}}{\endm:env}{}{} +|<32,4 amstex1|> +>>> + + +\<32,4 amstex1\><<< +|<amsmath / amstex1 m:env|> +\ConfigureEnv{equation*}{\m:env{equation*}}{\endm:env}{}{} +\ConfigureEnv{equation}{\m:env{equation}}{\endm:env}{}{} +\Configure{eqn}{\HCode{</td><td>}} +\ConfigureEnv{align}{\m:env{align}}{\endm:env}{}{} +\ConfigureEnv{align*}{\m:env{align*}}{\endm:env}{}{} +\ConfigureEnv{alignat}{\m:env{alignat}}{\endm:env}{}{} +\ConfigureEnv{alignat*}{\m:env{alignat*}}{\endm:env}{}{} +\ConfigureEnv{xalignat}{\m:env{xalignat}}{\endm:env}{}{} +\ConfigureEnv{xxalignat}{\m:env{xxalignat}}{\endm:env}{}{} +\ConfigureEnv{xalignat*}{\m:env{xalignat*}}{\endm:env}{}{} +\ConfigureEnv{aligned}{\m:env{aligned}}{\endm:env}{}{} +\ConfigureEnv{alignedat}{\m:env{alignedat}}{\endm:env}{}{} +\ConfigureEnv{gather}{\m:env{gather}}{\endm:env}{}{} +\ConfigureEnv{gather*}{\m:env{gather*}}{\endm:env}{}{} +\ConfigureEnv{gathered}{\m:env{gathered}}{\endm:env}{}{} +\ConfigureEnv{matrix}{\m:env{matrix}}{\endm:env}{}{} +\ConfigureEnv{multline}{\m:env{multline}}{\endm:env}{}{} +\ConfigureEnv{multline*}{\m:env{multline*}}{\endm:env}{}{} +\ConfigureEnv{pmatrix}{\m:env{pmatrix}}{\endm:env}{}{} +\ConfigureEnv{bmatrix}{\m:env{bmatrix}}{\endm:env}{}{} +\ConfigureEnv{vmatrix}{\m:env{vmatrix}}{\endm:env}{}{} +\ConfigureEnv{Vmatrix}{\m:env{Vmatrix}}{\endm:env}{}{} +\Configure{gather}{\Picture*{}}{\EndPicture} +>>> + + + +\section{amstex.tex} + +\<configure html32-math amstex\><<< +|<32,4 picmath amstex.tex|> + \:CheckOption{no-matrix} \if:Option \else + \:CheckOption{pic-matrix} \if:Option + |<pic amstex.tex matrix 3.2|> + \else + |<tabular amstex.tex matrix 3.2|> + \fi\fi + \:CheckOption{no-align} \if:Option \else + \:CheckOption{pic-align} \if:Option + |<pic amstex.tex align 3.2|> + \else + |<tabular amstex.tex align 3.2|> + \fi\fi + \:CheckOption{no-cases} \if:Option \else + \:CheckOption{pic-cases} \if:Option + |<pic amstex.tex cases 3.2|> + \else + |<nonpic amstex.tex cases 3.2|> + \fi\fi + +>>> + + +\<pic amstex.tex cases 3.2\><<< +\Configure{cases}{\m:env{cases}}{\endm:env} +>>> + +\<nonpic amstex.tex cases 3.2\><<< +\Configure{cases}{\m:env{cases}}{\endm:env} +>>> + + + +\<pic amstex.tex align 3.2\><<< +\Configure{align}{\m:env{align}}{\endm:env} +>>> + + +\<tabular amstex.tex align 3.2\><<< +\Configure{align} + {\HCode{<table\Hnewline class="align">}} {\HCode{</table>}} + {\HCode{<tr\Hnewline>}} {\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +>>> + + + + + +\<pic amstex.tex matrix 3.2\><<< +\Configure{matrix}{\m:env{matrix}}{\endm:env} +>>> + +\<tabular amstex.tex matrix 3.2\><<< +\Configure{matrix} + {\HCode{<table\Hnewline class="matrix">}} {\HCode{</table>}} + {\HCode{<tr\Hnewline>}} {\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +>>> + + + + +\section{vanilla} + +\<configure html32 vanilla\><<< +|<32,4 vanilla|> +|<32 amsppt, 32,4 vanilla|> +\Configure{heading} + {}{}{\IgnorePar\EndP\HCode{<h2 class="heading">}}{\HCode{</h2>}} +\ConfigureToc{heading} + {}{\HCode{<span class="heading">}}{}{\HCode{</span><br\xml:empty>}} +\Configure{subheading} + {}{}{\EndP\HCode{<h3 class="subheading">}}{.\HCode{</h3>}} +\ConfigureToc{subheading} + {}{\HCode{<span class="subheading">}}{}{\HCode{</span><br\xml:empty>}} +\Configure{demo} + {\IgnorePar\EndP\HCode{<div class="demo"><span class="demo">}} + {\HCode{</span>}} {\IgnorePar\EndP\HCode{</div>}} +\Configure{aligned} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="aligned">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline valign="top">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +>>> + +\section{minitoc} + +\<configure html32 minitoc\><<< +\Configure{minitoc}{\HCode{<div>}}{\HCode{</div>}}{}{} +\Configure{parttoc}{\HCode{<div>}}{\HCode{</div>}}{}{} +\Configure{secttoc}{\HCode{<div>}}{\HCode{</div>}}{}{} +\Configure{minilof}{\HCode{<div>}}{\HCode{</div>}}{}{} +\Configure{partlof}{\HCode{<div>}}{\HCode{</div>}}{}{} +\Configure{sectlof}{\HCode{<div>}}{\HCode{</div>}}{}{} +\Configure{minilot}{\HCode{<div>}}{\HCode{</div>}}{}{} +\Configure{partlot}{\HCode{<div>}}{\HCode{</div>}}{}{} +\Configure{sectlot}{\HCode{<div>}}{\HCode{</div>}}{}{} +>>> + +\section{fancyvrb} + +\<configure html32 fancyvrb\><<< +\Configure{fancyvrb} + {\HCode{<div class="fancyvrb">}} {\HCode{</div>}} + {} {\HCode{<br\xml:empty>}} + {}{} +>>> + + + + + + + + +\section{url} + +\<configure html32 url\><<< +\Configure{url}{\Link[#1]{}{}#1\EndLink} +>>> + + + +\section{amsfonts} + +\<configure html32 amsfonts\><<< +\:CheckOption{fonts} \if:Option + \Configure{mathbb}{\Protect\HCode{<b>}} + {\Protect\HCode{</b>}} + \Configure{mathfrak}{\Protect\HCode{<span class="mathfrak">}} + {\Protect\HCode{</span>}} +\fi +>>> + + + + + +\section{amsppt} + +\<configure html32 amsppt\><<< +|<sectioning in amsppt.sty|> +|<32,4 amsppt|> +|<32 amsppt|> +\ifx \EnditemitemList\:UnDef +\Configure{itemitem}{}{} + {\par\leavevmode\:nbsp\:nbsp\:nbsp}{} +\fi +>>> + +\section{fontmath.ltx} + +\<configure html32-math fontmath\><<< +|<32,4 picmath: plain, fontmath, amsmath, amstex1|> +|<math plain,fontmath|> +>>> + + + + + +\<configure html32 fontmath\><<< +\Configure{mathit}{\Protect\HCode{<i>}}{\Protect\HCode{</i>}} +\Configure{mathbf}{\Protect\HCode{<b>}}{\Protect\HCode{</b>}} +\Configure{mathtt}{\Protect\HCode{<tt>}}{\Protect\HCode{</tt>}} +\Configure{mathsf}{}{} +\Configure{mathrm}{}{} +\Configure{textbf}{\Protect\HCode{<b>}}{\Protect\HCode{</b>}} +\Configure{textit}{\Protect\HCode{<i>}}{\Protect\HCode{</i>}} +\Configure{textrm}{}{} +\Configure{textup}{}{} +\Configure{textsc}{}{} +\Configure{textsf}{}{} +\Configure{textsl}{\Protect\HCode{<i>}}{\Protect\HCode{</i>}} +\Configure{texttt}{\Protect\HCode{<tt>}}{\Protect\HCode{</tt>}} +\Configure{emph}{\Protect\HCode{<em>}}{\Protect\HCode{</em>}} +>>> + +\section{emulateapj} + +\<configure html32 emulateapj\><<< +\Configure{affil}{\HCode{<center>}}{\HCode{</center>}} +\Configure{author}{\HCode{<center>}}{\HCode{</center>}} +\Configure{keywords}{\HCode{<center><div>}}{\HCode{</div></center>}} +\Configure{subjectheadings} + {\HCode{<center><div>}}{\HCode{</div></center>}} +\Configure{slugcomment} + {\HCode{<center><i>}} {\HCode{</i></center>}} +\Configure{subtitle}{}{} +\Configure{submitted}{}{\HCode{<br\xml:empty>}} +\Configure{title} + {\HCode{<h1 class="titleHead">}} + {\HCode{</h1>}} +>>> + + + +\section{slidesec} + +\<configure html32 slidesec\><<< +\ConfigureToc{tocslidesection} {\empty}{\ }{}{\HCode{<br\xml:empty>}} +>>> + + + +\section{seminar} + +\<configure html32 seminar\><<< +\ConfigureEnv{slide} + {\HCode{<hr />}} {\rightline{\the\c@slide}}{}{} +>>> + + +\section{tex4ht} + + +\<configure html32 Preamble\><<< +\Configure{PROLOG}{DOCTYPE} +\:CheckOption{no-DOCTYPE} \if:Option + \Configure{PROLOG}{} +\else + \Log:Note{to remove the DOCTYPE declaration + use the command line option `no-DOCTYPE'} +\fi +>>> + + + +\<dtd lang\><<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi >>> + + +\<configure html32 tex4ht\><<< +|<0,32,4 tex4ht|> +|<32,4 tex4ht|> +|<32 tex4ht|> +|<title for hypertext page|> +\ifx \a:DOCTYPE\relax + \Configure{DOCTYPE}{\IgnorePar\HCode{<!DOCTYPE + html PUBLIC "-//W3C//DTD HTML 3.2//|<dtd lang|>" + \Hnewline\space\space + "http://www.w3.org/pub/WWW/MarkUp/Wilbur/HTML32.dtd">\Hnewline + }} + |<xml html32|> +\fi +\def\:gobbleM#1->{} +\Configure{@HEAD} + {\HCode{<!--\space\expandafter\:gobbleM\meaning + \Preamble\space-->\Hnewline}} +\immediate\write-1{TeX4ht package options: + \expandafter\:gobbleM\meaning\Preamble} +>>> + + +\<xml html32\><<< +\:CheckOption{xmldtd} \if:Option + \Configure{DOCTYPE} + {\HCode{<!DOCTYPE html \xhtml:DOCTYPE> \Hnewline + <!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> + \Hnewline}} + \def\xhtml:DOCTYPE{PUBLIC + "-//W3C//DTD XHTML 1.0 Transitional//|<dtd lang|>"\Hnewline + \space\space + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"} +\fi +>>> + + + +\<configure html32 tex4ht\><<< +\Configure{HtmlPar} + {\EndP\HCode{<!--l. \the\inputlineno-->}\HCode{<p>}} + {\EndP\HCode{<!--l. \the\inputlineno-->}\HCode{<p>}} + {\:xhtml{\Tg</p>}} + {\:xhtml{\Tg</p>}} +\ifx \a:HTML\:UnDef + \Configure{HTML} + {\IgnorePar\HCode{<html \a:@HTML\Hnewline >}} + {\HCode{\Hnewline</html>\Hnewline}} +\fi +\ifx \a:HEAD\:UnDef + \Configure{HEAD} + {\IgnorePar\NoFonts\HCode + {<head>|<src note|>\Hnewline}} + {\HCode{</head>}\EndNoFonts} +\fi +\ifx \a:BODY\:UnDef + \Configure{BODY} + {\IgnorePar\HCode{<body\Hnewline >}\ShowPar} + {\ifvmode\IgnorePar\fi \EndP\HCode{\Hnewline </body>}} +\fi +\ifx \a:TITLE\:UnDef + \Configure{TITLE}{\Protect\IgnorePar + \HCode{<title>}}{\HCode{\Hnewline}} +\fi +| +>>> + + + +\<<< +% +>>> + +\<4 src note\><<< +% +>>> + + + + +\<<< +\Configure{crosslinks+} + {\IgnorePar\EndP\HCode{

      }} + {\HCode{

      }\par\ShowPar} + {\IgnorePar\EndP\HCode{

      }} + {\HCode{

      }\par\ShowPar} +\Configure{MkHalign} + {\halignTB{MkHalign}} + \t:HA + \R:HA\r:HA\D:HA\d:HA +\Configure{halignTD} {}{} + {<}{\HCode{align="left" | }} + {-}{\HCode{align="center" | }} + {>}{\HCode{align="right" | }} + {^}{\HCode{valign="top" | }} + {=}{\HCode{valign="baseline" | }} + {||}{\HCode{valign="middle" | }} + {_}{\HCode{valign="bottom" | }} + {p}{\HCode{align="left"}} + {} +\def\R:HA{\HCode{}} +\Configure{halign} + {\halignTB{halign}} + \t:HA + \R:HA\r:HA\D:HA\d:HA +\Configure{pic-halign}{} +\Configure{IMG} + {\ht:special{t4ht=>> + + + + + + +\<<< +\Configure{htf}{1}{+}{}{}{}{}{}{} +\Configure{htf}{3}{+}{}{}{}{}{}{} +\Configure{htf}{4}{+}{}{}{}{}{}{}{} +\Configure{htf}{6}{+}{}{}{}{}{}{}{} +>>> + + + + + + + + +\section{th4} + +\<<< +\Configure{Verbatim}{\HCode{
      }} {\HCode{
      }} {}{\:nbsp} +|<32,4 th4|> +|<32 th4|> +>>> + + + + + +\section{amsthm.sty} + +\<<< +\ConfigureEnv{proof}{\par\leavevmode}{\par\ShowPar}{}{} +>>> + +\section{foils} + +\<<< +|<32,4 foils|> +>>> + + + + + +\section{epsfig} + +\<<< +|<0,32,4 epsfig|> +>>> + +\section{psfig} + +\<<< +|<0,32,4 psfig|> +>>> + +\section{graphics} + +\<<< +|<0,32,4 graphics|> +>>> + + + + + + +\section{moreverb} + +\<<< +|<32,4 moreverb|> +>>> + + + +\section{xy} + + + +\<<< +|<32,4 xy|> +>>> + +\<32,4 xy\><<< +\Configure{xypic} + {\Picture*{}} {\EndPicture} +>>> + + + + + + +\section{pb-diagram} + + + + +\<<< +\ConfigureEnv{diagram} + {\Picture*{}$} {$\EndPicture} {}{} +>>> + + + + +\section{amscd} + + + + +\<<< +\ConfigureEnv{CD} + {\Picture*{}$} {$\EndPicture} {}{} +>>> + + + + + + + + + + + + + +\section{ntheorem} + +\<<< +|<32,4 ntheorem|> +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Picmath 3.2 \& 4} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% html32-math.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.1999. Eitan M. Gurari +| +>>> + + +\section{tex4ht} + + + + +\<<< +\ShowPar\par{\HCondtrue\noindent}% +>>> + + + + + +\<<< +|<32,4 picmath tex4ht|> +\Configure{PicMath}{}{}{}{} +| +>>> + +\<32,4 picmath tex4ht\><<< +\:CheckOption{no_^} +\if:Option \else \:CheckOption{no_}\fi +\if:Option \else + \Configure{SUB} + {\HCode{}}{\HCode{}} +\fi +\:CheckOption{no_^} +\if:Option \else \:CheckOption{no^}\fi +\if:Option \else + \Configure{SUP} + {\HCode{}}{\HCode{}} +\fi +\:CheckOption{no_^} + \if:Option \else \:CheckOption{no_}\fi + \if:Option \else \:CheckOption{no^}\fi +\if:Option \else + \Configure{SUBSUP} + {\HCode{}}{\HCode{}}{\HCode{}} +\fi +\Configure{left} + {\Picture+{ \a:@Picture{left}}} + {\aftergroup\EndPicture } +\Configure{mathchoice}{\PictureOff}{\PictureOn} +>>> + + + + + + +\verb'\endgraf' is safer than \verb'\par', because the latter may be redefined. +For instance, see p 262 in texbook. + + + + + + + +\<<< +\Configure{PicDisplay}{\HCode{
      }}{\HCode{
      }}{}{} +>>> + + + + + + + + +\section{plain} + + + +\<<< +| +| +| +|<32,4 picmath plain|> +>>> + +\<32,4 picmath plain\><<< +\Configure{sqrt} + {\Picture+{ \a:@Picture{sqrt}}} + {\EndPicture} +|<32,4 picmath: plain, fontmath, amsmath, amstex1|> +>>> + + +\section{latex} + + + + + + + + + + + + +\<<< +| +| +|<32,4 picmath latex|> +|<32 picmath th4,latex|> +>>> + + +\<<< +| +\def\A:root#1\b:root#2\c:root{\o:root:#1\of{#2}\c:root} +\Configure{root} + {\Picture+{ \a:@Picture{root}}\A:root} + {} + {\EndPicture} +\Configure{mathpalette} + {\Picture+{ \a:@Picture{mathpalette}}} {\EndPicture} +>>> + + +\<32,4 picmath latex\><<< +\Configure{pmatrix} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{bordermatrix} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{frac} + {\Picture+{ \a:@Picture{frac}}\bgroup} + {} {} + {\egroup\EndPicture} +>>> + + + + +\<32,4 picmath latex\><<< +\Configure{sqrtsign} + {\Picture+{ \a:@Picture{sqrt}}} + {\EndPicture} +\Configure{matrix} + {\Picture+{ \a:@Picture{matrix}}} {\EndPicture} + {}{}{}{} +>>> + + + + +\<<< +\Configure{L} {\pic:sym{L}} +\Configure{l} {\pic:sym{l}} +\def\pic:sym#1{\Protect\Picture+{ \a:@Picture{#1}}\csname + o:#1:\endcsname\Protect\EndPicture} +>>> + +\<<< +\Configure{Longrightarrow} {\pic:sym{Longrightarrow}} +\Configure{bowtie} {\pic:sym{bowtie}} +\Configure{cong} {\pic:sym{cong}} +\Configure{ddots} {\pic:sym{ddots}} +\Configure{doteq} {\pic:sym{doteq}} +\Configure{hookleftarrow} {\pic:sym{hookleftarrow}} +\Configure{hookrightarrow} {\pic:sym{hookrightarrow}} +\Configure{longmapsto} {\pic:sym{longmapsto}} +\Configure{mapsto} {\pic:sym{mapsto}} +\Configure{models} {\pic:sym{models}} +\Configure{neq} {\pic:sym{neq}} +\Configure{notin} {\pic:sym{notin}} +\Configure{vdots} {\pic:sym{vdots}} +\Configure{angle} {\pic:sym{angle}} +\Configure{rightleftharpoons} {\pic:sym{rightleftharpoons}} +\Configure{leftrightharpoons} {\pic:sym{leftrightharpoons}} +>>> + + +\<<< +\Configure{mathellipsis} {...} +>>> + + +\<<< +\Configure{ldots} {...} +\Configure{cdots} {\pic:sym{cdots}} +>>> + + +\<<< +\Configure{cdots} {\pic:sym{cdots}} +>>> + + +\<<< +\Configure{@cdots} {\pic:sym{@cdots}} +\Configure{iint} {\pic:sym{iint}} +\Configure{iiint} {\pic:sym{iiint}} +\Configure{iiiint} {\pic:sym{iiint}} +\Configure{idotsint} {\pic:sym{tsint}} +\Configure{doteq} {\pic:sym{tsint}} +>>> + + + + + + + +\section{amsmath} + +\<<< +|<32,4 picmath amsmath,amstex1|> +|<32,4 picmath amsmath|> +>>> + + + +\<32,4 picmath amsmath,amstex1\><<< +|<32,4 picmath: plain, fontmath, amsmath, amstex1|> +\Configure{dotsc} {\pic:sym{dotsc}} +\Configure{dotso} {\pic:sym{dotso}} +>>> + + + + +\<32,4 picmath amsmath\><<< +\Configure{overset} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{underset} {\Picture+{ \a:@Picture{}}} {\EndPicture} +>>> + + + + +\<32,4 picmath amsmath\><<< +\Configure{xrightarrow} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{xleftarrow} {\Picture+{ \a:@Picture{}}} {\EndPicture} +>>> + + + +\section{amstex1 (amstex.sty)} + +\<<< +|<32,4 picmath amsmath,amstex1|> +>>> + + + + +\section{th4} + + + + +\<<< +|<32 picmath th4,latex|> +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\<<< +\HCode{&\expandafter \ifx\csname U#2#1\endcsname\relax + #2#1\else \#x\csname U#2#1\endcsname\fi;}% +>>> + + +\<<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + + + + + + + + + + + + + + +\subsection{TeX Engine} + + + + + + + +The \verb'\trap:base' is to catch empty bases of exponents like, e.g., +in \verb'$a^{^b}$'. + + + + + + + + + + + +\<<< +\def\MathRow#1{% + \Configure{\expandafter\:gobble\string#1*}{*}% + {<|.mrow\Hnewline + class="\expandafter\:gobble\string#1">}{}% + {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}% +>>> + + +\<<< +\sv:ignore +>>> + + + +\<<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + + + +The \verb'\MathRow' requests a \verb'<|.mrow\Hnewline>...', instead of the contributions +of \verb'\mathop', \verb'\mathrel',...., for the next parameter. + + + + + + + + + + + + + + + + + +\subsection{latex.ltx} + + + + + + + + + + + + + + + + + + +Definitions like \verb'\def\mathbf#1{\a:mathbf#1\b:mathbf}' +can't be done on a global level, because \verb'\mathbf' is just +a name of a font. So, for instance, \verb'\bf' expands to \verb'\mathbf', +and so \verb'$\bf R$' indirectly brings up the latter command. + + + + + +\subsection{plain.sty} + + + + + + + +\subsection{Palin + LaTeX} + +The default \verb'\left' and \verb'\right' in their default definition +with tex produce multi-part delimiters, from cmex, on large +subformulas. Hence, the `'.' below is needed. + + + + + + + + + + + + + +\subsection{Amsmath} + + + The \verb'\HCode{}' in \verb'\sideset' is for catching superscripts and subscripts + + + + + + +\section{Eqnarray} + + + + + +Had `BASELINE' before `MIDDLE', but changed to conform with math +in page 252-- in intro to theory book. + + + + + + + + + + + + + + + + + + +\section{Accents through `accents' Configurations} + + + + + +Why originally the accents are defined within a group? (knuth answer +this in the texbook.) + + + + + + + +\section{PsTricks} + + + + +\<<< +\Configure{pspicture} + {\ifvmode \ifinner\else \vfill\break\fi + \leavevmode\fi \Picture+{ class="pspicture"}} + {\EndPicture\HCode{}} +>>> + + + + + + + + +\section{Fractions} + + + + + + + + + + + +\<<< +\ConfigureEnv{aligned}{}{}{}{} +\Configure{aligned} + {\HCode{<|.mtable\Hnewline class="aligned">}} + {\HCode{}} + {\HCode{<|.mtr\Hnewline>}} {\HCode{}} + {\HCode{<|.mtd>}} {\HCode{}} +>>> + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Sty Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%% +\section{ProTex} +%%%%%%%%%%%%%%%%%%% + +\<<< +\:CheckProtexOption{[[]]}\if:Option + |
      \ifx \:test\:minus + \else
      \fi}\par\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} +\Configure{ShowCode} + {\HCode{\ifx \:test\:minus \else
      \fi + \html:src
      + >\html:invisible}% + \nobreak + } + {\special{t4ht=\html:src% + \ifx \:test\:minus \else +
      \html:BackTitle\fi}} + {\HCode{\html:invisible}} + {\HCode{}} + {\HCode{}} + {\HCode{\string }} +\Css{div.ShowCode{background:\#EEEEEE; border: 1px white solid;}} +\Css{div.ShowCode div.head{background:\#E0E0E0;}} +\Css{div.ShowCode div.tail{background:\#E0E0E0;}} +>>> + + +\<<< +\ifx \par:end\empty \HCode{

      }\fi +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +!*?: >>> + + +\<<< + cw:>>> + +\<<< +tail>>> + +\<<< +\xdef\:cursec{|
      }% +>>> + + + + + + +\<<< +\let\:tempd|=\Configure +\def\Configure#1#2{% + \:CheckOption{#1}\if:Option \def\:tempc{#2}\fi} +>>> + +\<<< +\let\Configure|=\:tempd +>>> + + +\<<< +\openin15=tex4ht.usr \ifeof15 \else \closein15 + \input tex4ht.usr +\fi +>>> + + + + + + + +\<<< +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else + \csname :RestoreCatcodes\endcsname \fi + \catcode`\noexpand :|=\the\catcode`:% + \ifnum \the\catcode`\#=6 \else + \catcode`\noexpand \#|=\the\catcode`\#\fi + \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|= + \noexpand\UnDefcS} +\catcode`\:|=11 \catcode`\#|=6 +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{thebibliography}{9} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\bibitem{val} +\url{http://htmlhelp.com/tools/validator/index.html.en} +\end{thebibliography} + + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-html4.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html4.tex new file mode 100644 index 00000000000..897d6394956 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html4.tex @@ -0,0 +1,22312 @@ +% $Id: tex4ht-html4.tex 920 2021-04-30 15:45:20Z michal_h21 $ +% Compile 4 times: latex tex4ht-html4 +% Copy html4.4ht into the work directory before all but the last compilation. +% +% Copyright 2009-2021 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{html4,html4-math,html4-uni,html4-l2-url,html4-russian-accents} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \def\OPTIONS{xhtml,3,sections+} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +\def\.{\string\a:mathml:\space} + + +\TocAt{section,subsection,likesubsection} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Needs{"ls -l tex4ht-*.tex > ls-links.log"} +\openin15=ls-links.log +\ifeof15 \else \closein15 +\bgroup + \catcode`\-=13 + \def-#1tex4ht-{\bgroup \catcode`\-=12 + \def-##1.tex{\egroup + [\Link[tex4ht\string-##1.html]{}{}##1\EndLink]} + -} + \input ls\string-links.log +\egroup +\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{The Calling Tree for 4ht Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\if:latex | +\else | \fi +>>> + +\<0,32,4 plain\><<< +| +| +>>> + +\<0,32,4 latex\><<< +| +| +>>> + + + +\<<< +% html4.4ht (|version), generated from |jobname.tex +% Copyright 2009-2021 TeX Users Group +% Copyright |CopyYear.1997. Eitan M. Gurari +| +>>> + + +\<<< +% html4-math.4ht (|version), generated from |jobname.tex +% Copyright 2009-2021 TeX Users Group +% Copyright |CopyYear.1999. Eitan M. Gurari +| +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Front part} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%% +\section{HTML} +%%%%%%%%%%%%%%%% + +\<<< +\ifx \a:HTML\:UnDef + \Configure{HTML} + {\IgnorePar\HCode{\Hnewline}>\Hnewline}} + {\ifvmode\IgnorePar\fi\HCode{\Hnewline}} +\fi +\ifx \a:HEAD\:UnDef + \Configure{HEAD} + {\IgnorePar\NoFonts\HCode {}} + {\HCode{}\EndNoFonts} +\fi +\ifx \a:BODY\:UnDef + \:CheckOption{frames} \if:Option + | + \else + \Log:Note{for content and toc + in 2 frames, use the command line option `frames'} + \Log:Note{for content, toc, and footnotes + in 3 frames, use the command line option `frames-fn'} + | +\fi\fi +\ifx \a:TITLE\:UnDef + \Configure{TITLE}{\Protect\IgnorePar + \HCode{}}{\HCode{\Hnewline}} +\fi +\ifx \a:@HEAD\relax \let\a:@HEAD=\empty\fi +\ifx \a:@HEAD\empty + | + | + | +\fi +\:CheckOption{mouseover} \if:Option + | +\else + \Log:Note{for pop ups on mouse over, + use the command line option `mouseover'} +\fi +>>> + +\<<< +\openin15=\jobname .css +\ifeof15 \:warning{Missing file: \jobname .css }% +\else +\bgroup + \catcode`\{=12 \catcode`\}=12 \catcode`\%=12 \catcode`\#=12 + \HCode{\Hnewline\Hnewline}% +\egroup +\fi +\closein15 +>>> + + +Should we go for + +\begin{verbatim} + +\end{verbatim} +\Link[http://www.hixie.ch/advocacy/xhtml]{}{}http://www.hixie.ch/advocacy/xhtml\EndLink + + + +\<<< +\:CheckOption{uni-html4} \if:Option + \def\A:charset{charset=utf-8} + \def\a:charset{charset=utf-8} +\else + \def\A:charset{charset=iso-8859-1} +\fi +>>> + +\verb'\a:charset' can come from a private configuration file, and from +a poackage option. It takes precedence over \verb'\A:charset'. + + + +%%%%%%%%%%%%%%%% +\section{XML Version} +%%%%%%%%%%%%%%%% + +\<<< +| +\Configure{VERSION} + {\HCode{ ?>\Hnewline}} +>>> + +%%%%%%%%%%%%%%%% +\section{DOCTYPE} +%%%%%%%%%%%%%%%% + +\<<< +\ifx \a:DOCTYPE\relax + \:CheckOption{frames} \if:Option + | + \else + | + | + \fi +\fi +>>> + + +\<<< +\:CheckOption{xhtml} \if:Option + \NewConfigure{@DOCTYPE}[1]{\def\:temp{#1}% + \ifx \:temp\empty \let\a:@DOCTYPE|=\empty + \else \ifx \a:@DOCTYPE\relax \let\a:@DOCTYPE|=\empty\fi + \pend:def\a:@DOCTYPE{#1}\fi} + \let\a:@DOCTYPE|=\relax +\fi +>>> + +\<<< +|
      +\Configure{PROLOG}{VERSION,DOCTYPE,*XML-STYLESHEET}
      +\:CheckOption{mouseover} \if:Option
      +   |
      +\fi
      +\:CheckOption{no-DOCTYPE} \if:Option
      +  \:CheckOption{no-VERSION} \if:Option
      +     \Configure{PROLOG}{*XML-STYLESHEET}
      +  \else
      +     \Configure{PROLOG}{VERSION,*XML-STYLESHEET}
      +     |
      +  \fi   
      +\else
      +  \:CheckOption{no-VERSION} \if:Option
      +     \Configure{PROLOG}{DOCTYPE,*XML-STYLESHEET}
      +  \else
      +     |
      +  \fi
      +  \Log:Note{to remove the DOCTYPE declaration
      +          use the command line option `no-DOCTYPE'}   
      +\fi
      +>>>
      +
      +\<<<
      +\Log:Note{to remove the   processing instruction
      +          use the command line option `no-VERSION'}   
      +>>>
      +   
      +\<<<
      +\:CheckOption{xhtml}  \if:Option
      +   |%
      +   \def\:DTD{xhtml}
      +\else
      +   |%
      +\fi
      +>>>
      +
      +
      +\<<<
      +\csname a:frames-altDOCTYPE\endcsname
      +>>>
      +
      +\<<<
      +\NewConfigure{frames-altDOCTYPE}{1}
      +\Configure{frames-altDOCTYPE}
      +   {|}
      +>>>
      +
      +
      +Don't place the full address
      + \''http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd' 
      +within DOCTYPE. It can stop tools like xt when the server doesn't respond
      +
      +
      +\<<<
      +|%
      +\Configure{DOCTYPE}
      +  {\HCode{            \Hnewline
      +    
      +    \Hnewline}}
      +\def\xhtml:DOCTYPE{PUBLIC
      +    "-//W3C//DTD XHTML 1.0 Transitional//|"\Hnewline
      +    \space\space
      +    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"}
      +>>>
      +
      +
      +\<<<
      +\expandafter
      +\ifx \csname a:dtd-lang\endcsname\relax EN\else
      +  \csname a:dtd-lang\endcsname
      +\fi
      +>>>
      +
      +
      +\<<<
      +\Configure{@DOCTYPE}
      +  {\Hnewline\%xhtml.dtd; \Hnewline}
      +>>>
      +
      +\<<<
      +\Configure{DOCTYPE}{\IgnorePar\HCode
      +   {"
      +    \Hnewline\space\space "http://www.w3.org/TR/html4/loose.dtd">
      +    \Hnewline}}
      +>>>
      +
      +
      + 
      +\<<<
      +\:CheckOption{xhtml} \if:Option  
      +   |%
      +   \Configure{DOCTYPE}
      +   {\HCode{"
      +    \Hnewline
      +     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">\Hnewline}}
      +\else
      +   \Configure{DOCTYPE}
      +   {\HCode{"
      +    \Hnewline "http://www.w3.org/TR/html4/frameset.dtd">\Hnewline}}
      +\fi
      +>>>
      +
      +
      +
      +
      +
      +
      +Xerces reqires the following encoding.
      +
      +\<<<
      +\def\:encoding#1={}
      +>>>
      +
      +\<<<
      +encoding="\expandafter\ifx \csname a:charset\endcsname\relax
      +         \expandafter\:encoding\A:charset
      +   \else \expandafter\:encoding\a:charset\fi"
      +>>>
      +
      +%%%%%%%%%%%%%%%%
      +\section{BODY}
      +%%%%%%%%%%%%%%%%
      +
      +\<<<
      +\:CheckOption{mouseover} \if:Option
      +   \Configure{BODY}
      +      {\:xhtml{\SaveEndP}\IgnorePar\HCode{}|\ShowPar\par}
      +      {\IgnorePar\:xhtml{\EndP}\HCode{\Hnewline
      +        }\:xhtml{\RecallEndP}}%
      +\else
      +   \Configure{BODY}
      +      {\:xhtml{\SaveEndP}\IgnorePar\HCode{}\ShowPar\par }
      +      {\IgnorePar\:xhtml{\EndP}\HCode{\Hnewline
      +        }\:xhtml{\RecallEndP}}%
      +\fi
      +>>>
      +
      +\<<<
      +\def\Frame:Name{menu}
      +|%
      +\Configure{BODY}
      +   {%
      +    \a:frames    \NoFrames    \PushStack\BODY:stack{}
      +    |%
      +    |%
      +    \HPage[tex4ht-p1]{table of contents}%
      +       \par \ShowPar \Link{}{|}\EndLink 
      +       \bgroup
      +         \Configure{Link}{a}{target="|"  href=}{ id=}{}
      +         \b:frames
      +       \egroup   
      +       \def\Frame:Name{main}
      +    \EndHPage{tex4ht-p1} \expandafter\Tg
      + \HPage[tex4ht-p2]{text}\par\ShowPar + \Link{}{|}\EndLink + } + {\EndHPage{tex4ht-p2}} +\NewConfigure{frames}{2} +\Css{body\#| {white-space: nowrap; }} +>>> + + +\<<< +\:CheckOption{mouseover} \if:Option + \Configure{BODY} + {\PushStack\BODY:stack{x}% + \:xhtml{\SaveEndP}\IgnorePar\HCode{}|\ShowPar\par \let\Frame:Name=\empty} + {\IgnorePar\:xhtml{\EndP}\PopStack\BODY:stack\:temp + \ifx \:temp\empty \EndFrames \else + \HCode{\Hnewline }\fi + \:xhtml{\RecallEndP}}% +\else + \Configure{BODY} + {\PushStack\BODY:stack{x}% + \:xhtml{\SaveEndP}\IgnorePar\HCode{}\ShowPar\par \let\Frame:Name\empty} + {\IgnorePar\:xhtml{\EndP}\PopStack\BODY:stack\:temp + \ifx \:temp\empty \EndFrames + \else \HCode{\Hnewline }\fi + \:xhtml{\RecallEndP}}% +\fi +>>> + + + +\<<< +tex4ht-main>>> + + +\<<< +tex4ht-fn>>> + +\<<< +tex4ht-menu>>> + + +%%%%%%%%%%%%%%%% +\section{Meta} +%%%%%%%%%%%%%%%% + + +\<<< +\:CheckOption{xht} \if:Option + \:CheckOption{xhtml}\if:Option \else \:CheckOption{xml}\fi +\fi +\if:Option | +\else |\fi +\def\:gobbleM#1->{} +| +\immediate\write-1{TeX4ht package options: + \expandafter\:gobbleM\meaning\Preamble} +\Configure{@HEAD} + {\HCode{\Hnewline}} +\:CheckOption{timestamp}\if:Option +\Configure{@HEAD} + {\HCode{\Hnewline}} +\else + \Log:Note{To print a timestamp, use the command line option timestamp} +\fi +>>> + + +\<<< +\:CheckOption{mathplayer} \if:Option + \Configure{@HEAD}{\HCode{\Hnewline}} +\else + \Configure{@HEAD}{\HCode{\Hnewline}} +\fi +\Configure{ext}{xht} +>>> + +\<<< +\Log:Note{for file extension name xht, use the command line option `xht'}% +\Configure{@HEAD}{\HCode{\Hnewline}} +>>> + + +\verb'\Hnewline' is needed at end of file to avoid loosing the +last line under some applications. + + + + + +Tex4ht pages published through FrontPage loose the generator metas, +but not the originator-metas. + +% +% 'generator' attribute changed from Eitan's Url to TUG/tex4ht. +% CVR 2010/10/02 +% \item + + +\<<< +\Configure{@HEAD}{\HCode{\Hnewline}} +\Configure{@HEAD}{\HCode{\Hnewline + \Hnewline}} +>>> + + + +%%%%%%%%%%%%%%%% +\section{Frames} +%%%%%%%%%%%%%%%% + +\<<< +tex4ht-toc>>> + +\<<< +tex4ht-body>>> + +\<4 latex\><<< +\:CheckOption{frames} \if:Option + \:CheckOption{frames-fn} \if:Option + \Configure{frames} + {\HorFrames[rows="*"]{*,3*} + \VerFrames[cols="*"]{3*,*} + \Frame[ name="|" + frameborder="0" ]{|} + \Frame[ name="|" + frameborder="0" ]{} + \EndFrames + \Frame[ name="|" + frameborder="0" ]{|}} + {\let\contentsname=\empty \tableofcontents} + \else + \Configure{frames} + {\HorFrames[rows="*"]{*,3*} + \Frame[ name="|" + frameborder="0" ]{|} + \Frame[ name="|" + frameborder="0" ]{|}} + {\let\contentsname=\empty \tableofcontents} + \fi +\fi +>>> + +% frameborder="no" +% border="0" +% framespacing="0" + + +\<<< +\:CheckOption{frames-fn} \if:Option + \edef\Preamble{\Preamble,frames} +\fi +>>> + + + +\<<< +\Configure{frames} + {\VerFrames[ cols="*"]{4*,*} + \Frame[ name="|" + frameborder="1" ]{|} + \Frame[ name="|" + frameborder="1" ]{|}} + {\beamer:bookmarks \tableofcontents} +>>> + +\<<< +\Configure{frames} + {\HorFrames[ rows="*"]{*,3*} + \Frame[ name="|" + frameborder="1" ]{|} + \Frame[ name="|" + frameborder="1" ]{|}} + {\beamer:bookmarks \tableofcontents} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Object Tocs} +%%%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{obj-toc} \if:Option + \Css{object.toc { float: left; + width: 25\%; + height: 100\%; + border: 1px solid \#888888; + margin-left:0em; + margin-top:0em; + margin-bottom:1em; + margin-right:1em; + padding-right:1em; + }} + \Css{body\#jobname-toc{margin:0em;}} + \Css{body\#jobname-toc .tableofcontents{ white-space: nowrap; }} + \Configure{@BODY} + {\edef\:temp{\jobname-toc.\:html} + \edef\:tempa{\FileName} + \edef\:temp{\expandafter\string\csname\:temp\endcsname} + \edef\:tempa{\expandafter\string\csname\:tempa\endcsname} + \ifx\:temp\:tempa\else + \hbox{ + \HCode{} + [\Link[\jobname-toc.\:html]{}{}table of contents\EndLink] + \HCode{}} + \fi + } + {} + \pend:defI\Auto:ent{% + \bgroup + \let\contentsname=\empty + \Configure{!BODY}{ id="jobname-toc"}% + \Configure{Link}{a}{target="\string _top" href=}{id=}{}% + \NextFile{\jobname-toc.\csname :html\endcsname}% + \HPage{}% + } + \append:defI\Auto:ent{% + \EndHPage{}% + \egroup + } +\else + \Log:Note{for frames-like object-based table of contents, + use the command line option `obj-toc'} +\fi +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Structures} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sectioning} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Sub Sections} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}\@seccntformat{subsection}% + \HCode{}\fi } +| +\Configure{subsection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{

      }% + \TitleMark\space \HtmlParOff} + {\HCode{

      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsection}{}{}{\EndP\bgroup + \ifvmode \IgnorePar\fi + \HCode{

      }\HtmlParOff } + {\HCode{

      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsectionTITLE+}{#1} +>>> + + +\<<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}\@seccntformat{section}% + \thesubsection\HCode{}\fi} +\Configure{subsection}{}{} + {\EndP\bgroup \IgnorePar\HCode{

      }% + \TitleMark{. \space}} + {\HCode{

      }\IgnoreIndent\egroup} +>>> + + + + +\
      <<<
      +\ConfigureMark{subsection}
      +   {\ifnum \c:secnumdepth>\c@secnumdepth  \expandafter\:gobble \else
      +    \csname thetitlesubsection\endcsname\fi}
      +\Configure{subsection}{}{}
      +   {\EndP\bgroup \IgnorePar\HCode{

      }% + \TitleMark\space} + {\HCode{

      }\IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsection}{}{} + {\EndP\bgroup \IgnorePar\HCode{

      }} + {\HCode{

      }\IgnoreIndent\egroup\par\ShowPar} +>>> + + +\<<< +\ConfigureMark{subsection} + {\ifHeadingNumbered \HCode{}\mw@seccntformat + \HeadingNumber \HCode{}\fi} +\Configure{subsection}{}{} + {\NoFonts \ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{

      }% + \TitleMark \HtmlParOff} + {\HCode{

      }\HtmlParOn \EndNoFonts \IgnoreIndent\egroup\par\ShowPar} +\Configure{subsectionTITLE+}{\thesubsection \space#1} +>>> + +\<<< +\Configure{likesubsection}{}{}{\EndP\bgroup + \ifvmode \IgnorePar\fi + \HCode{

      }\HtmlParOff } + {\HCode{

      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsectionTITLE+}{#1} +>>> + + +\<<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}% + \@ifundefined{subsectionname}{}{% + \ignorespaces\subsectionname\space}% + \@seccntformat{subsection}% + \HCode{}\fi } +| +>>> + + +\<<< +\Configure{subsection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{

      }% + \TitleMark\space \HtmlParOff} + {\HCode{

      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +>>> + +\<<< +\Configure{subsection}{}{} + {\ShowPar\noindent + \HCode{}\begingroup\bf + \TitleMark\space} + {.\endgroup\HCode{}\IgnorePar} +>>> + + + +\<<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}\thesubsection + \HCode{}\fi } +| +\Configure{subsection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{

      }% + \TitleMark~~\HtmlParOff} + {\HCode{

      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsection}{}{}{\EndP\bgroup + \ifvmode \IgnorePar\fi + \HCode{

      }\HtmlParOff } + {\HCode{

      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsectionTITLE+}{#1} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Sub Sub Sections} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}% + \@ifundefined{subsubsectionname}{}{% + \ignorespaces\subsubsectionname\space}% + \@seccntformat{subsubsection}% + \HCode{}\fi} +| +>>> + + +\<<< +\Configure{subsubsection}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{
      }% + \TitleMark\space \HtmlParOff} + {\HCode{
      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +>>> + +\<<< +\Configure{subsubsection}{}{} + {\ShowPar\noindent + \HCode{}\begingroup\it + \TitleMark\space} + {.\endgroup\HCode{}\IgnorePar} +>>> + + +\<<< +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{}\@seccntformat{subsubsection}% + \HCode{}\fi} +| +\Configure{subsubsection}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{
      }% + \TitleMark\space \HtmlParOff} + {\HCode{
      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsubsection}{}{} + {\ifvmode \IgnorePar\fi \EndP\bgroup\IgnorePar + \HCode{
      }\HtmlParOff} + {\HCode{
      }\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +>>> + + + +\<<< +\ConfigureMark{subsubsection} + {\ifHeadingNumbered \HCode{}\mw@seccntformat + \HeadingNumber \HCode{}\fi} +\Configure{subsubsection}{}{} + {\NoFonts \ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{
      }% + \TitleMark \HtmlParOff} + {\HCode{
      }\HtmlParOn \EndNoFonts \IgnoreIndent\egroup + \par\ShowPar} +\Configure{subsubsectionTITLE+}{\thesubsubsection \space#1} +>>> + + + +\<<< +\Configure{likesubsubsection}{}{} + {\ifvmode \IgnorePar\fi \EndP\bgroup\IgnorePar + \HCode{
      }\HtmlParOff} + {\HCode{
      }\HtmlParOn \IgnoreIndent\egroup \par\ShowPar} +>>> + + + + +\
      <<<
      +\ConfigureMark{subsubsection}
      +   {\ifnum \c:secnumdepth>\c@secnumdepth   \expandafter\:gobble \else
      +    \csname thetitlesubsubsection\endcsname\fi}
      +\Configure{subsubsection}{}{}
      +   {\EndP\bgroup \IgnorePar\HCode{
      }% + \TitleMark\space} + {\HCode{
      }\IgnoreIndent\egroup \par\ShowPar} +\Configure{likesubsubsection}{}{} + {\EndP\bgroup \IgnorePar\HCode{
      }% + \TitleMark\space} + {\HCode{
      }\IgnoreIndent\egroup \par\ShowPar} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sectioning Pagination} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{article,report,book} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +| |%should appear before TocAt|% +| +>>> + + + + + +\<<< +\:CheckOption{7} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + \fi + | +\else\:CheckOption{6} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + \fi + | +\else \:CheckOption{5} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + | + | + | + \fi + | +\else\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + | + | + | + \fi + | +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + | + | + | + \fi + | +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + | |%cut toc before cutat|% + | + | + | + | + \else + | |%cut toc before cutat|% + | + | + | + | + \fi + | +\else\:CheckOption{1} \if:Option + | |%cut toc before cutat|% + | + | +\else + \Log:Note{for automatic sectioning + pagination, use the command line option + `1', `2', `3', '4', '5', '6', or '7'}% +\fi \fi \fi \fi \fi \fi \fi +>>> + +% + +\<<< +\CutAt{part} +\CutAt{likepart} +>>> + + + + +\<<< +\CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} +>>> + + + +\<<< +\CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +>>> + + +\<<< +\CutAt{section,likesection,part} +\CutAt{likesection,part} +>>> + + +\<<< +\CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +>>> + + +\<<< +\CutAt{subsection,section,likesection,part} +\CutAt{likesubsection,section,likesection,part} +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{AMS} +%%%%%%%%%%%%%%%%%%% + + + +\<<< +| +>>> + + + + +%%%%%%%%%%%%% +\subsection{File Naming} +%%%%%%%%%%%%% + +\<<< +\:CheckOption{sec-filename} \if:Option \else + \Log:Note{for files named derived from section + titles, use the command line option `sec-filename'}% +\fi +>>> + + +\<<< +\:CheckOption{7} + \if:Option \else \:CheckOption{6}\fi + \if:Option \else \:CheckOption{5}\fi + \if:Option \else \:CheckOption{4}\fi + \if:Option \else \:CheckOption{3}\fi + \if:Option \else \:CheckOption{2}\fi + \if:Option \else \:CheckOption{1}\fi +\if:Option + \:CheckOption{sec-filename} + \if:Option + |
      + \else + \Log:Note{For section filenames that reflect on + their titles use the command line + option `sec-filename'} + \fi +\fi +>>> + +\
      <<< +\Configure{CutAt-filename}{% + \ifx \:NxtNwFN\:Undef + |% + |% + \tmp:cnt=0 \uniq:fn + \fi +} +\def\uniq:fn{% + \expandafter\ifx + \csname ct:fn\:temp + \ifnum \tmp:cnt>0 \the\tmp:cnt\fi\endcsname\relax + \expandafter\global\expandafter\let + \csname ct:fn\:temp + \ifnum\tmp:cnt>0 \the\tmp:cnt\fi + \endcsname=\def + \ifx \:temp\empty \else + \NextFile{\:temp + \ifnum \tmp:cnt>0 \the\tmp:cnt\fi .\:html}% + \fi + \else + \advance\tmp:cnt by 1 \expandafter\uniq:fn + \fi +} +\NewConfigure{sec-filename*}{1} +>>> + +\<<< +\tmp:toks={#2}% +\immediate\openout15=\jobname .tmp +\immediate\write15{\string\next{\the\tmp:toks}}% +\immediate\closeout15 +\bgroup + \def\next{\csname no:catcodes\endcsname{92}{92}{9}% + \xdef\:temp}% + \csname no:catcodes\endcsname{32}{47}{9}% + \csname no:catcodes\endcsname{58}{64}{9}% + \csname no:catcodes\endcsname{91}{91}{9}% + \csname no:catcodes\endcsname{93}{96}{9}% + \csname no:catcodes\endcsname{126}{126}{9}% + \csname a:sec-filename*\endcsname + \input \jobname .tmp +\egroup +>>> + + + +\<<< +\immediate\openout15=\jobname .tmp +\immediate\write15{\string\next[\:temp]}% +\immediate\closeout15 +\bgroup + \def\next{\xdef\:temp}% + \csname no:catcodes\endcsname{91}{91}{1}% + \csname no:catcodes\endcsname{93}{93}{2}% + \csname no:catcodes\endcsname{123}{123}{9}% + \csname no:catcodes\endcsname{125}{125}{9}% + \input \jobname .tmp +\egroup +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables of Contents: Choice of Entries} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,section,subsection} + \fi + \Configure{tableofcontents*}{part,section} +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,section,likesection,% + subsection,likesubsection} + \fi + | + \Configure{tableofcontents*}{part,likepart,section,likesection} +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,chapter,appendix,section} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,chapter,likechapter,appendix,% + section,likesection} + \fi +\fi +>>> + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*} + {part,chapter,appendix} +\else + | + \Configure{tableofcontents*} + {part,likepart,chapter,likechapter,appendix} +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,chapter,likechapter,appendix,% + section,likesection} + \MiniToc:At{likepart,/part,chapter,likechapter,appendix,% + section,likesection} + \fi +\fi +>>> + + + + +\<<< +\:CheckOption{notoc*} \if:Option +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,chapter,% + section,likesection,subsection,likesubsection} + \MiniToc:At{likepart,/part,% + section,likesection,subsection,likesubsection} + \fi +\fi +>>> + + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section\expandafter\ifx + \csname @chapter\endcsname\relax ,subsection\fi} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection\expandafter\ifx + \csname @chapter\endcsname\relax ,subsection,likesubsection\fi} +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{chapter,/likechapter,/appendix,/part,% + section,subsection} + \MiniToc:At{likechapter,/appendix,/chapter,/part,% + section,subsection} + \MiniToc:At{appendix,/chapter,/likechapter,/part,% + section,subsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{chapter,/likechapter,/appendix,/part,% + section,likesection,subsection,likesubsection} + \MiniToc:At{likechapter,/appendix,/chapter,/part,% + section,likesection,subsection,likesubsection} + \MiniToc:At{appendix,/chapter,/likechapter,/part,% + section,likesection,subsection,likesubsection} + \fi +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,appendix,section% + \expandafter\ifx \csname @chapter\endcsname\relax + ,subsection\fi} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection% + \expandafter\ifx \csname @chapter\endcsname\relax + ,subsection,likesubsection\fi} +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{section,/likesection,/chapter,/likechapter,/appendix,/part,% + subsection,subsubsection} + \MiniToc:At{likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsection,subsubsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{section,/likesection,/chapter,/likechapter,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \MiniToc:At{likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,likesubsection,subsection} +\fi +>>> + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + subsubsection,paragraph} + \MiniToc:At{likesubsection,/subsection,/likesection,% + /section,/chapter,/likechapter,/appendix,/part,% + subsubsection,paragraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + subsubsection,likesubsubsection,% + paragraph} + \MiniToc:At{likesubsection,/subsection,% + /likesection,/section,/chapter,/likechapter,/appendix,/part,% + subsubsection,likesubsubsection,% + paragraph} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection} +\fi +>>> + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{subsubsection,/likesubsubsection,/subsection,% + /likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + paragraph,subparagraph} + \MiniToc:At{likesubsubsection,/subsubsection,/likesubsection,% + /subsection,/likesection,% + /section,/chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{subsubsection,/likesubsubsection,% + /subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \MiniToc:At{likesubsubsection,/subsubsection,/likesubsection,/subsection,% + /likesection,/section,/chapter,/likechapter,/appendix,/part,% + paragraph,subparagraph} + \fi +\fi +>>> + + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection,paragraph} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection,% + paragraph} +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{paragraph,/subsubsection,/likesubsubsection,/subsection,% + /likesubsection,/section,/likesection,% + /chapter,/likechapter,% + /appendix,/part,% + subparagraph} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{paragraph,/subsubsection,/likesubsubsection,% + /subsection,/likesubsection,/section,/likesection,% + /chapter,/likechapter,/appendix,/part,% + subparagraph} + \fi +\fi +>>> + + + + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*}{part,chapter,% + appendix,section,subsection,subsubsection,% + paragraph,subparagraph} +\else + | + \Configure{tableofcontents*}{part,likepart,chapter,likechapter,% + appendix,section,likesection,% + likesubsection,subsection,likesubsubsection,subsubsection,% + paragraph,subparagraph} +\fi +>>> + + +\<<< +\CutAt{subsubsection,subsection,likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsubsection,subsection,likesubsection,section,likesection,% + chapter,likechapter,appendix,part} +>>> + +\<<< +\CutAt{subsubsection,subsection,likesubsection,section,likesection,part} +\CutAt{likesubsubsection,subsection,likesubsection,section,likesection,part} +>>> + + + +\<<< +\CutAt{paragraph,subsubsection,likesubsubsection,subsection,likesubsection,% + section,likesection,chapter,likechapter,appendix,part} +>>> + +\<<< +\CutAt{paragraph,subsubsection,likesubsubsection,subsection,likesubsection,% + section,likesection,part} +>>> + + + +\<<< +\CutAt{subparagraph,paragraph,subsubsection,likesubsubsection,% + subsection,likesubsection,% + section,likesection,chapter,likechapter,appendix,part} +>>> + +\<<< +\CutAt{subparagraph,paragraph,subsubsection,likesubsubsection,% + subsection,likesubsection,% + section,likesection,part} +>>> + + + + + + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,chapter,addchap,appendix,section} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,chapter,likechapter,addchap,appendix,% + section,likesection} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \Configure{tableofcontents*} + {part,chapter,addchap,appendix} +\else + | + \Configure{tableofcontents*} + {part,likepart,chapter,likechapter,addchap,appendix} +\fi +>>> + + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,chapter,addchap,appendix,section} + \MiniToc:At{likepart,/part,chapter,addchap,appendix,section} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{part,/likepart,chapter,likechapter,addchap,appendix,% + section,likesection} + \MiniToc:At{likepart,/part,chapter,likechapter,addchap,appendix,% + section,likesection} + \fi +\fi +>>> + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{chapter,/likechapter,/addchap,/appendix,/part,% + section,subsection} + \MiniToc:At{likechapter,/addchap,/appendix,/chapter,/part,% + section,subsection} + \MiniToc:At{addchap,/likechapter,/appendix,/chapter,/part,% + section,subsection} + \MiniToc:At{appendix,/chapter,/likechapter,/addchap,/part,% + section,subsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{chapter,/likechapter,/addchap,/appendix,/part,% + section,likesection,subsection,likesubsection} + \MiniToc:At{likechapter,/addchap,/appendix,/chapter,/part,% + section,likesection,subsection,likesubsection} + \MiniToc:At{addchap,/likechapter,/appendix,/chapter,/part,% + section,likesection,subsection,likesubsection} + \MiniToc:At{appendix,/chapter,/likechapter,/addchap,/part,% + section,likesection,subsection,likesubsection} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{section,/likesection,/chapter,/likechapter,% + /addchap,/appendix,/part,% + subsection,subsubsection} + \MiniToc:At{likesection,/section,/chapter,/likechapter,% + /addchap,/appendix,/part,% + subsection,subsubsection} + \fi +\else + \:CheckOption{nominitoc} \if:Option + \else + | + \MiniToc:At{section,/likesection,/chapter,/likechapter,% + /addchap,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \MiniToc:At{likesection,/section,/chapter,/likechapter,% + /addchap,/appendix,/part,% + subsection,likesubsection,subsubsection,likesubsubsection} + \fi +\fi +>>> + + +\<<< +\:CheckOption{notoc*} \if:Option + \CutAt{subsection,section,chapter,addchap,appendix,part} + \CutAt{likesubsection,section,chapter,addchap,appendix,part} +\else + \CutAt{subsection,section,likesection,% + chapter,likechapter,addchap,appendix,part} + \CutAt{likesubsection,section,likesection,% + chapter,likechapter,addchap,appendix,part} +\fi +>>> + + + +\<<< +\ConfigureToc{foilhead}{}{ *\ }{}{} +\Configure{tableofcontents*}{foilhead} +\Css{div.tableofcontents{margin-top:2em;}} +>>> + + +The `notoc*' is applicable only to pages that are automatically +decomposed into separate web pages along section divides. It +should be used whe addcontentline instructions are present. + +\begin{verbatim} +\section*{....} +\addcontentsline{toc}{section}{....} +\end{verbatim} + + + +\<<< +\Log:Note{for tocs without * entries, use + command line option `notoc*'} +>>> + + + +\<<< +\:CheckOption{1} \if:Option + \:CheckOption{notoc*} \if:Option + \addcontentsline{toc}{section}{\indexname}% + \fi +\else \:CheckOption{2} \if:Option + \:CheckOption{notoc*} \if:Option + \addcontentsline{toc}{section}{\indexname}% + \fi +\else \:CheckOption{3} \if:Option + \:CheckOption{notoc*} \if:Option + \addcontentsline{toc}{section}{\indexname}% + \fi +\else \:CheckOption{4} \if:Option + \:CheckOption{notoc*} \if:Option + \addcontentsline{toc}{section}{\indexname}% + \fi +\else + \addcontentsline{toc}{section}{\indexname}% +\fi \fi \fi \fi +>>> + + + +\<<< +\Log:Note{to eliminate mini tables of + contents, use the command line option `nominitoc'} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables of Contents: Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{TocAt} + {|% + \Configure{tableofcontents} + {\IgnorePar\EndP\HCode{
      }\IgnorePar} + {}{\IgnorePar\HCode{
      }\ShowPar}{\HCode{
      }}{}% + \ifvmode \IgnorePar\fi \EndP + } + {|\par\ShowPar} +\Configure{TocAt*} + {|% + \Configure{tableofcontents} + {\IgnorePar\EndP\HCode{
      }\IgnorePar} + {}{\IgnorePar\HCode{
      }\ShowPar}{\HCode{
      }}{}% + \ifvmode \IgnorePar\fi \EndP + } + {|\par\ShowPar} +\:CheckOption{minitoc<} \if:Option + \def\MiniToc:At{\TocAt} +\else + \Log:Note{For mini tocs immediately aftter the header use the + command line option `minitoc<'} + \def\MiniToc:At{\TocAt*} +\fi +>>> + + + + +\<<< +\Configure{tableofcontents} + {\IgnorePar\EndP\HCode{
      }\IgnorePar} + {\ifTag{tex4ht-body}{\HCode{
      }\Link{tex4ht-body}{}Home\EndLink}{}} + {\IgnorePar\EndP\HCode{
      }\ShowPar} + {\HCode{
      }} {} +>>> + +\<<< +\let\sv:atoc|=\a:tableofcontents +\let\sv:btoc|=\b:tableofcontents +\let\sv:ctoc|=\c:tableofcontents +\let\sv:dtoc|=\d:tableofcontents +\let\sv:etoc|=\e:tableofcontents +>>> + + +\<<< +\let\a:tableofcontents|=\sv:atoc +\let\b:tableofcontents|=\sv:btoc +\let\c:tableofcontents|=\sv:ctoc +\let\d:tableofcontents|=\sv:dtoc +\let\e:tableofcontents|=\sv:etoc +>>> + + +\<<< +\def\tocpart#1#2#3{\par + \HCode{}\if !#1!\else #1~~\fi #2\HCode{}\par}% +\def\toclikepart#1#2#3{\par + \HCode{}#2\HCode{}\par}% +|% +\expandafter\ifx \csname @chapter\endcsname\relax + \def\tocsection#1#2#3{\par + \HCode{}\def\:temp{#1}\ifx \:temp\empty\else + #1 \fi #2\HCode{}\par} + \def\toclikesection#1#2#3{\par + \HCode{}#2\HCode{}\par}% + \def\tocsubsection#1#2#3{\par\ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par\ + \HCode{}#2\HCode{}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \HCode{}#2\HCode{}\par} + \def\tocparagraph#1#2#3{\par\ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par\ \ + \HCode{}#2\HCode{}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \HCode{}#2\HCode{}\par} +\else + |% + \def\tocchapter#1#2#3{\par + \HCode{}\ifnum \c@secnumdepth >\m@ne + #1 \fi #2\HCode{}\par} + \def\toclikechapter#1#2#3{\par + \HCode{}#2\HCode{}\par}% + \def\tocappendix#1#2#3{\par + \HCode{}#1 #2\HCode{}\par} + \def\tocsection#1#2#3{\par\ \toc:num{section}{#1}{#2}\par} + \def\toclikesection#1#2#3{\par\ \HCode{}#2\HCode{}\par} + \def\tocsubsection#1#2#3{\par\ \ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par + \ \ \HCode{}#2\HCode{}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \ \HCode{}#2\HCode{}\par} + \def\tocparagraph#1#2#3{\par\ \ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par + \ \ \ \HCode{}#2\HCode{}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \ \HCode{}#2\HCode{}\par} +\fi +\def\toc:num#1#2#3{\def\:temp{#1#2}% + \HCode{}\ifx \:temp\empty + \else \def\:temp{#2}\ifx\:temp\empty\else #2 \fi \fi #3\HCode{}} +>>> + + + +\<<< +\def\tocpart#1#2#3{\par + \HCode{}\if !#1!\else + #1~~\fi #2\HCode{}\par}% +\def\toclikepart#1#2#3{\par + \HCode{}#2\HCode{}\par}% +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} + \Css{.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, + .appendixToc a, .appendixToc, .addchapToc a + {line-height: 200\%; font-weight:bold;}} + \def\tocchapter#1#2#3{\par + \HCode{}#1~~#2\HCode{}\par} + \def\toclikechapter#1#2#3{\par + \HCode{}#2\HCode{}\par}% + \def\tocaddchap#1#2#3{\par + \HCode{}#2\HCode{}\par}% + \def\tocappendix#1#2#3{\par + \HCode{}#1~~#2\HCode{}\par} + \def\tocsection#1#2#3{\par\ \toc:num{section}{#1}{#2}\par} + \def\toclikesection#1#2#3{\par\ + \HCode{}#2\HCode{}\par} + \def\tocsubsection#1#2#3{\par\ \ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par + \ \ \HCode{}#2\HCode{}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \ \HCode{}#2\HCode{}\par} + \def\tocparagraph#1#2#3{\par\ \ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par + \ \ \ \HCode{}#2\HCode{}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \ \HCode{}#2\HCode{}\par} +\def\toc:num#1#2#3{\def\:temp{#1#2}% + \HCode{}\ifx \:temp\empty + \else \def\:temp{#2}\ifx\:temp\empty\else #2~~\fi\fi #3\HCode{}} +>>> + + +\<<< +\def\tocpart#1#2#3{\par + \HCode{}\if !#1!\else #1~~\fi #2\HCode{}\par}% +\def\toclikepart#1#2#3{\\HCode{}#2\HCode{}\par}% +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} +% +\expandafter\ifx \csname @chapter\endcsname\relax + \def\tocsection#1#2#3{\par + \HCode{}\def\:temp{#1}\ifx \:temp\empty\else + #1 \fi #2\HCode{}\par} + \def\toclikesection#1#2#3{\par + \HCode{}#2\HCode{}\par}% + \def\tocsubsection#1#2#3{\par\ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par\ + \HCode{}#2\HCode{}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \HCode{}#2\HCode{}\par} + \def\tocparagraph#1#2#3{\par\ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par\ \ + \HCode{}#2\HCode{}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \HCode{}#2\HCode{}\par} +\else + \Css{.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, + .appendixToc a, .appendixToc + {line-height: 200\%; font-weight:bold;}} +% + \def\tocchapter#1#2#3{\par + \HCode{}#1 #2\HCode{}\par} + \def\toclikechapter#1#2#3{\par + \HCode{}#2\HCode{}\par}% + \def\tocappendix#1#2#3{\par + \HCode{}#1 #2\HCode{}\par} + \def\tocsection#1#2#3{\par\ \toc:num{section}{#1}{#2}\par} + \def\toclikesection#1#2#3{\par\ + \HCode{}#2\HCode{}\par} + \def\tocsubsection#1#2#3{\par\ \ \toc:num{subsection}{#1}{#2}\par} + \def\toclikesubsection#1#2#3{\par + \ \ \HCode{}#2\HCode{}\par} + \def\tocsubsubsection#1#2#3{\par + \ \ \ \toc:num{subsubsection}{#1}{#2}\par} + \def\toclikesubsubsection#1#2#3{\par + \ \ \ \HCode{}#2\HCode{}\par} + \def\tocparagraph#1#2#3{\par\ \ \ \toc:num{paragraph}{#1}{#2}\par} + \def\toclikeparagraph#1#2#3{\par + \ \ \ \HCode{}#2\HCode{}\par} + \def\tocsubparagraph#1#2#3{\par + \ \ \ \ \ \toc:num{subparagraph}{#1}{#2}\par} + \def\toclikesubparagraph#1#2#3{\par + \ \ \ \ \ \HCode{}#2\HCode{}\par} +\fi +\def\toc:num#1#2#3{\def\:temp{#1#2}% + \HCode{}\ifx \:temp\empty + \else \def\:temp{#2}\ifx\:temp\empty\else #2 \fi \fi #3\HCode{}} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Tables of Contents} +%%%%%%%%%%%%%%%%%%% + + +\<<< +\ConfigureToc{part} + {\HCode{}\toc:Mark{part}} + {\End:Mark} + {} + {\HCode{
      }} +\ConfigureToc{section} + {\HCode{}\toc:Mark{section}} + {\End:Mark} + {} + {\HCode{
      }} +\ConfigureToc{subsection} + {\HCode{}~~\toc:Mark{subsection}} + {\End:Mark} + {} + {\HCode{
      }} +\ConfigureToc{subsubsection} + {\HCode{}~~~~\toc:Mark{subsubsection}} + {\End:Mark} + {} + {\HCode{
      }} +\def\toc:Mark#1#2\End:Mark{\if !#2!\else + \expandafter\ifx \csname #1name\endcsname\relax\else + \csname #1name\endcsname~\fi #2.~~\fi} +>>> + + +\<<< +\ConfigureToc{likepart} + {\HCode{}} + {\empty} + {} + {\HCode{
      }} +\ConfigureToc{chapter} + {\HCode{}% + \ifx \chaptername\:UnDef\else \chaptername~\fi} + {.~~} + {} + {\HCode{
      }} +\ConfigureToc{likechapter} + {\HCode{}} + {~~} + {} + {\HCode{
      }} +\ConfigureToc{appendix} + {\HCode{}% + \ifx \appendixname\:UnDef\else \appendixname~\fi} + {.~~} + {} + {\HCode{
      }} +>>> + +\<<< +\Css{.chapterToc a, .chapterToc, .appendixToc a, .appendixToc + {line-height: 200\%; font-weight:bold;}} +>>> + + +\<<< +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables and Arrays} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX Tabular and Array} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<32,4 latex\><<< +\:CheckOption{pic-tabular} \if:Option + \ConfigureEnv{tabular} + {\IgnorePar\EndP\Tg
      \Picture*{}} + {\EndPicture\Tg
      }{}{} + \Css{div.pic-tabular {text-align:center;}} +\else + \Log:Note{for pictorial tabular, + use the command line option `pic-tabular'} +\fi +>>> + + + +\<<< +\:CheckOption{pic-array} \if:Option \else + \Log:Note{for pictorial array, + use the command line option `pic-array'} + \ConfigureEnv{array} + {\IgnorePar\EndP\PushStack\Col:Marg\AllColMargins + \HCode{
      }} + {\HCode{
      }\PopStack\Col:Marg\AllColMargins\ShowPar}{}{} + \Css{div.array {text-align:center;}} +\fi +>>> + + +\<<< +\:CheckOption{pic-tabular} \if:Option \else + \ConfigureEnv{tabular} + {|% + \IgnorePar|\EndP\HCode{
      }% + \PushStack\Col:Marg\AllColMargins + } + {\HCode{
      }\PopStack\Col:Marg\AllColMargins\ShowPar + |% + |% + }{}{} + \Css{div.tabular, div.center div.tabular {text-align: center; + margin-top:0.5em; margin-bottom:0.5em; }} + \Css{table.tabular td p{margin-top:0em;}} + \Css{table.tabular {margin-left: auto; + margin-right: auto;}} |% centering |% +\fi +\Css{td p:first-child{ margin-top:0em; }} +\Css{td p:last-child{ margin-bottom:0em; }} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX Tabule} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\ConfigureEnv{table} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }\par\ShowPar} + {}{} +>>> + +%%%%%%%%%%%%% +\subsection{multirow} +%%%%%%%%%%%%% + +\<<< +\Configure{multirow} + {\HCode{
      }} + {\HCode{
      }} +>>> + +%%%%%%%%%%%%% +\subsection{tabularx} +%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{tabularx}{\ifvmode\IgnorePar\fi\EndP}{}{}{} +>>> + +%%%%%%%%%%%%% +\subsection{tabulary} +%%%%%%%%%%%%% + +\<<< +\Configure{halignTD} {}{} + {<}{\HCode{ style="white-space:nowrap; text-align:left;"}} + {-}{\HCode{ style="white-space:nowrap; text-align:center;"}} + {>}{\HCode{ style="white-space:nowrap; text-align:right;"}} + {l}{\HCode{ style="white-space:nowrap; text-align:left;"}} + {c}{\HCode{ style="white-space:nowrap; text-align:center;"}} + {r}{\HCode{ style="white-space:nowrap; text-align:right;"}} + {^}{\HCode{ style="white-space:nowrap; vertical-align:top";}} + {=}{\HCode{ style="vertical-align:baseline; white-space:nowrap;"}} + {||}{\HCode{ style="vertical-align:middle; white-space:nowrap;"}} + {_}{\HCode{ style="vertical-align:bottom; white-space:nowrap;"}} + {p}{\HCode{ style="white-space:normal; text-align:left;"}} + {m}{\HCode{ style="white-space:nowrap; text-align:left; vertical-align:middle;"}} + {b}{\HCode{ style="white-space:normal; text-align:left; vertical-align:baseline;"}} + {L}{\HCode{ style="white-space:normal; text-align:left;"}} + {R}{\HCode{ style="white-space:normal; text-align:right;"}} + {C}{\HCode{ style="white-space:normal; text-align:center;"}} + {J}{\HCode{ style="white-space:normal;"}} + {} +>>> + +\<<< +\ConfigureEnv{tabulary} + {|% + \IgnorePar|\EndP\HCode{
      }% + \PushStack\Col:Marg\AllColMargins + } + {\HCode{
      }\PopStack\Col:Marg\AllColMargins\ShowPar + |% + |% + }{}{} +>>> + + +\<<< + \Configure{tabulary} + {\ifvmode \IgnorePar\fi \EndP \halignTB{tabulary}\putVBorder } + {|\HCode{}} + {\HCode{}} + {\r:HA} + {\HCode{1 colspan="\HMultispan"\fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}|% + \HCode{">}|\PushStack\Table:Stck\TableNo} + {|\PopStack\Table:Stck\TableNo \d:HA} +>>> + + + +\<<< +\NoFonts + \bgroup + \ifx \ttfamily\:UnDef \else \ttfamily\fi + \ColMargins + \egroup +\EndNoFonts +>>> + +\<<< +\Configure{halignTB<>}{tabulary}{\HCode{id="TBL-\TableNo" class="tabulary"\Hnewline + \GROUPS\Hnewline + }<>\HAlign} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +>>> + + +%%%%%%%%%%%%% +\subsection{Mdwtab} +%%%%%%%%%%%%% + +\<<< +\Configure{smarray} + {\ifvmode \IgnorePar\fi \EndP\halignTB{smarray}\putVBorder} + {|\HCode{}} + {\R:HA} + {\r:HA} + {\D:HA\HCode{
      }|\pic:env} + {|\HCode{
      }\d:HA} +\Configure{halignTB<>} + {smarray} + {\HCode{id="TBL-\TableNo" class="smarray"\Hnewline + \GROUPS\Hnewline + }<>\HAlign + } +>>> + +\<<< +\Configure{tabular*} + {\a:tabular} + {\b:tabular} + {\c:tabular} + {\d:tabular} + {\e:tabular} + {\f:tabular} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Bibliography} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Cite} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{cite} + {\HCode{}} + {\HCode{}} + {\Link[ |]} + {\EndLink } +\expandafter\def\csname c:mouseover-cite:\endcsname{% + \def\:tempb{cite}\csname c:mouseover-?:\endcsname} +\Configure{mouseover-cite}{tex4ht.body,FULLHTML} +>>> + + +\<<< +\mo:args{cite}{\@citeb}{\expandafter + \jsHash\expandafter{\expandafter X\@citeb}}% +>>> + +\<<< +\Configure{cite} + {\HCode{}} {\HCode{}} + {\Link} {\EndLink} +>>> + +\<<< +\Configure{cite}{}{}{}{}% +>>> + + +\<<< +\string\Configure{mouseover-vars}{cite}{Author,Title}% +>>> + + +\<<< +\string\Configure {mouseover-cite} + {tex4ht.body,CAPTION,tex4ht.caption+tex4ht.var,FULLHTML}% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Bib Item} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{bibitem}{\Link}{\EndLink} +>>> + +\<<< +\Configure{bibitem} + {\bibitem:link} + {\EndLink|} +\def\bibitem:link#1#2{|\HCode + {}\Link{#1}{#2}} +>>> + + + +\<<< +\Configure{HtmlPar} + {\EndP\HCode{

      }} + {\EndP\HCode{

      }} + {\Tg

      } {\Tg

      }% +>>> + + + +\<<< +\Configure{HtmlPar} + {\EndP\HCode{

      }} + {\EndP\HCode{

      }} + {\Tg

      } {\Tg

      }% +>>> + + + +\<<< +\Configure{HtmlPar} + {\HCode{

      }} + {\HCode{

      }} + {} {}% +>>> + + +\<<< +\Css{p.bibitem { text-indent: -2em; margin-left: 2em; + margin-top:0.6em; margin-bottom:0.6em; }} +\Css{p.bibitem-p { text-indent: 0em; margin-left: 2em; + margin-top:0.6em; margin-bottom:0.6em; }} +>>> + +\<<< + \Configure{bibitem2} + {|\par\ShowPar + \HCode{}% + |% + } + {\EndP} + {\HCode{}~~~\HCode{}} +>>> + + +\<<< +\HCode{}% +|% +>>> + +\<<< +|% +\HCode{} +>>> + +\<<< +.js p.bibitem-p +>>> + +\<<< +js p.bibitem +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The Bibliography} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +The bibliography environment is prooblematic because +it carries a definition that implies an environment similar +to + +\begin{verbatim} + \begin{....} + \section*{...} + ... + \end{....} +\end{verbatim} + +The \verb+\begin{...}+ has a \verb+\SaveEverypar+, and + \verb+\end{...}+ has a \verb+\RecallEverypar+. In the case of +paginations across sectioning commands, we have also the saving and +recalling also at the start and end of each section (each page). In +such a case, we don't have proper nestings of environments. + + + + + +\<<< +\ConfigureEnv{thebibliography}{\IgnorePar}{\ShowPar\par}{}{} +>>> + +\<<< +\ConfigureEnv{thebibliography}{\par\leavevmode}{\ShowPar}{}{} +>>> + + +\<<< +\ConfigureList{thebibliography}% + {\ifvmode\IgnorePar\fi \EndP \HCode{

      }\let\en:bib=\empty} + {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{
      }} + {\en:bib\def\en:bib{|\EndP}% + |\par\ShowPar + \HCode{}|} + {\HCode{}\:nbsp + \:nbsp\:nbsp\HCode{}} +>>> + + + + + + + + + + +\<<< +\ConfigureList{thebibliography}% + {\ifvmode\IgnorePar\fi\EndP |\HCode{
      }\let\en:bib=\empty} + {\en:bib \ifvmode\IgnorePar\fi\EndP \HCode{
      }} + {\en:bib\def\en:bib{|% + \EndP|}|% + |\par\ShowPar + \leavevmode |\HCode{}|} + {\HCode{}\:nbsp + \:nbsp\:nbsp\HCode{}|} +>>> + + +\<<< +\:CheckOption{bibtex2} \if:Option + \Configure{bibliography2} + {~~[} {more} {]} + |% +\fi +>>> + + + + + +\<<< +\:CheckOption{no-bib} \if:Option\else + \:CheckOption{mouseover} \if:Option + | + | + \else + | + | + \fi +\fi +>>> + + +\<<< +\:CheckOption{no-bib} \if:Option\else + \:CheckOption{mouseover} \if:Option + | + \else + | + \fi + | +\fi +>>> + +\<<< +\csname bibliography2\endcsname +>>> + +\<<< +|\csname bibliography2\endcsname +|% +>>> + + + + + +% \HCode{\Hnewline\string\jselement{footnote}% +% \string\jselement{bibitem}\Hnewline}% + + + + + +\<<< +\Configure{vol}{\HCode{}}{\HCode{}} +\Configure{book}{\HCode{}}{\HCode{}} +\Configure{paper}{\HCode{}}{\HCode{}} +\Configure{Refs}{\IgnorePar\EndP\HCode{}} + {\HCode{
      }} +\Configure{ref}{\HCode{}} + {\EndP\HCode{}}{} +\Configure{keyformat}{}{\EndP\HCode{}} +>>> + + + + +\<<< +\HAssign\bibN=0 +\Configure{thebibliography}% + {\ifvmode \IgnorePar\fi \EndP + \EndP\HCode{
      }% + \PushMacro\end:itm + \global\let\end:itm=\empty} + {\ifvmode \IgnorePar\fi \EndP + \PopMacro\end:itm \global\let\end:itm \end:itm + \EndP\HCode{
      }\ShowPar} + {\ifvmode \IgnorePar\fi \EndP + \gHAdvance\bibN by 1 + \end:itm \global\def\end:itm{\EndP\Tg}\HCode{
      }\bgroup \bf} + {\ifvmode \IgnorePar\fi \EndP + \gHAdvance\bibN by 1 + \egroup\HCode{
      }\par\ShowPar} +>>> + + +\<<< +\Configure{printshorthands} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
      }} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
      }} + {\HCode{
      }\par\ShowPar} +\Css{dt.printshorthands{float:left; clear:left; margin-right:1em;}} +>>> + +\<<< +\Configure{finentry} + {\hbox{\HCode{}}} + {\hbox{\HCode{}}} +>>> + +\<<< +\NewConfigure{printfield-annotation}{2} +\NewConfigure{printfield-file}{2} +\Configure{printfield-annotation} + {\HCode{
      }} + {\HCode{}} +\Configure{printfield-file} + {\HCode{
      }} + {\HCode{}} +\Css{div.bibitem br.annotation, + div.bibitem br.file + {margin-bottom:0.5em}} +>>> + + + +\<<< +\NewConfigure{printfield-entrykey}{2} +\Configure{printfield-entrykey} + {\HCode{}} + {\HCode{}} +>>> + + +\<<< +\Configure{entryhead:name} + {\hbox{\HCode{}% + \Css{dd\#bib-\bibN\space p:last-child + {border-bottom:solid black 1px}}% + }} + {\hbox{\HCode{}}} +\Configure{entryhead:full} + {\hbox{\HCode{}% + \Css{dd\#bib-\bibN\space p:last-child + {border-bottom:solid black 1px}}% + }} + {\hbox{\HCode{}}} +>>> + + +\<<< +\Configure{biblatex-style} + {authortitle} + {|} +\Configure{biblatex-style} + {authortitle-comp} + {|} +\Configure{biblatex-style} + {authortitle-tcomp} + {|} +\Configure{biblatex-style} + {authortitle-icomp} + {|} +\Configure{biblatex-style} + {authortitle-ibid} + {|} +\Configure{biblatex-style} + {authoryear} + {|} +\Configure{biblatex-style} + {authoryear-ibid} + {|} +\Configure{biblatex-style} + {authoryear-comp} + {|} +\Configure{biblatex-style} + {verbose} + {|} +\Configure{biblatex-style} + {verbose-ibid} + {|} +\Configure{biblatex-style} + {verbose-note} + {|} +\Configure{biblatex-style} + {alphabetic-verb} + {|
      } +\Configure{biblatex-style} + {alphabetic} + {|
      } +\Configure{biblatex-style} + {numeric} + {|
      } +\Configure{biblatex-style} + {numeric-verb} + {|
      } +\Configure{biblatex-style} + {numeric-comp} + {|
      } +\Configure{biblatex-style} + {draft} + { + \Css{dd.thebibliography {margin-left: 2.5em;}} + \Css{dt.thebibliography {float:left; clear:left; margin-right:1em;}} + } +\Configure{biblatex-style} + {reading} + { + \Css{.entrykey {float:right; margin-top:-1.25em;}} + } +\Configure{biblatex-style}{verbose-trad1}{} +\Configure{biblatex-style}{verbose-trad2}{} +>>> + + + + +\<<< +\Css{dd.thebibliography { text-indent: -2em; margin-left: 2em;}} +\Css{dd.thebibliography p:first-child{ text-indent: -2em; }} +\Css{dt.thebibliography{float:left; clear:left; margin-right:1em;}} +>>> + +\
      <<< +\Css{dd.thebibliography {margin-left: 5em;}} +\Css{dt.thebibliography {float:left; clear:left; margin-right:1em;}} +>>> + + +\
      <<< +\Css{dd.thebibliography {margin-left: 2.5em;}} +\Css{dt.thebibliography {float:left; clear:left; margin-right:1em;}} +>>> + +\<<< +\Css{dd.thebibliography {margin-left: 7em;}} +\Css{dt.thebibliography {float:left; clear:left; margin-right:1em;}} +\Configure{subfieldlabel} + {\HCode{}} + {\HCode{}} +>>> + + + + +%%%%%%%%%%%%%%%% +\subsection{acm-proc-article-sp} +%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{no-bib} \if:Option\else + \:CheckOption{mouseover} \if:Option + | + \else + | + \fi + | +\fi +>>> + + +\<<< +\ConfigureEnv{thebibliography}% + {\ifvmode\IgnorePar\fi \EndP \HCode{
      }\let\en:bib=\empty} + {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{
      }} + {}{} +\ConfigureList{thebibliography}% + {}{} + {\en:bib\def\en:bib{|\EndP}% + |\par\ShowPar + \HCode{}|} + {\HCode{}\:nbsp + \:nbsp\:nbsp\HCode{}} +>>> + + +\<<< +\ConfigureEnv{thebibliography}% + {\ifvmode\IgnorePar\fi\EndP |\HCode{
      }\let\en:bib=\empty} + {\en:bib \ifvmode\IgnorePar\fi\EndP \HCode{
      }} + {}{} +\ConfigureList{thebibliography}% + {}{} + {\en:bib\def\en:bib{|% + \EndP}||% + |\par\ShowPar + \leavevmode |\HCode{}|} + {\HCode{}\:nbsp + \:nbsp\:nbsp\HCode{}|} +>>> + + + +%%%%%%%%%%%%%%%% +\subsection{JS Contributions} +%%%%%%%%%%%%%%%% + + + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex From bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Skip bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Cont bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Set1 bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Set2 bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Addr1 bib }% +>>> + +\<<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Addr2 bib }% +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Lists} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\Css{li p.indent { text-indent: 0em }} +\Css{li p:first-child{ margin-top:0em; }} +\Css{li p:last-child, li div:last-child { margin-bottom:0.5em; }} +\Css{li p\string ~ul:last-child, + li p\string ~ol:last-child{ margin-bottom:0.5em; }} +>>> + +\<<< +\ConfigureEnv{trivlist} + {}{|}{}{} +\ConfigureList{trivlist}% + {\EndP\HCode{
      }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
      }\bgroup \bf} + {\egroup\HCode{
      }} +\ConfigureEnv{list} + {}{|}{}{} +\ConfigureList{list}% + {\EndP\HCode{
      }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
      }\bgroup \bf} + {\egroup\HCode{
      }\par\ShowPar} +\ConfigureEnv{itemize} + {\ifvmode \IgnorePar\fi \EndP}{|} + {}{} +\ConfigureList{itemize}% + {\EndP\HCode{
        }% + \afterGetClass{itemize}% + |\global\let\end:itm=\empty} + {|\ifvmode \IgnorePar\fi + \EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\DeleteMark} + {\HCode{
    2. }\afterGetClass{li}} +\NewConfigure{itemizeClass}{2} +\Configure{itemizeClass}{}{} +\NewConfigure{liClass}{2} +\Configure{liClass}{}{} +>>> + +\<<< +\ConfigureEnv{enumerate} + {}{|}{}{} +\:CheckOption{enumerate-} \if:Option + \ConfigureList{enumerate}% + {|} + {|} + {|} + {|} +\else + \:CheckOption{enumerate+} \if:Option + | + \else + \ConfigureList{enumerate}% + {|} + {|} + {|} + {|} + | + \fi + \Log:Note{for enumerated list elements li's with value attributes, + use the command line option `enumerate-'} +\fi +\:CheckOption{css2} \if:Option + | +\else + \Log:Note{for CSS2 code, use the command line option `css2'} +\fi +>>> + + + +\<<< +| +>>> + + +\<<< +\ConfigureList{enumerate}% + {\EndP\HCode{
      }% + \PushMacro\end:itm + \global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
      }\bgroup \bf} + {\egroup\EndP\HCode{
      }} +\Css{dd.enumerate {margin-left: 2em;}} +\Css{dt.enumerate {float:left; + clear:left; + margin-right:0.5em; + margin-left:0.5em; + text-align:right; }} +>>> + +\<<< +\Log:Note{for enumerated list elements with valued data, + use the command line option `enumerate+'} +>>> + + +\<<< +\bgroup + \def\textbullet{&\#x2219;} + \def\textasteriskcentered{&\#x2217;} + \Css{ul.itemize1 {list-style-type: none;}} + \Css{ul.itemize1 li.itemize:before { display: marker; + marker-offset: 0.5em; + content: "\labelitemi\space" }} + \Css{ul.itemize2 {list-style-type: none;}} + \Css{ul.itemize2 li.itemize:before { display: marker; + marker-offset: 0.5em; + content: "\labelitemii\space" }} + \Css{ul.itemize3 {list-style-type: none;}} + \Css{ul.itemize3 li.itemize:before { display: marker; + marker-offset: 0.5em; + content: "\labelitemiii\space" }} +\egroup +>>> + + + +\<<< +\EndP\HCode{
        }|\global\let\end:itm=\empty +>>> + +\<<< +|% +\EndP\HCode{
      }\ShowPar +>>> + + +\<<< +\end:itm \gdef\end:itm{\EndP\Tg
    3. }\DeleteMark +>>> + +\<<< +\HCode{
    4. }\AnchorLabel +>>> + + + + + +\<<< +{\Configure{Link}{li}{}{ class="enumerate" id=}{}% + \let\EndLink=\empty \AnchorLabel }% +>>> + + +% \HCode{
    5. }\AnchorLabel + + +It is better to put the LI in the third field to avoid extra space +to the following text. + +\<<< +\def\c:enumerate:#1{\c:enu #1|} +\def\c:enu#1#2#3#4#5|{% +\def\a:enumerate:{\ifcase \@enumdepth \or + #1\or #2\or #3\or #4\else\fi #5}} +>>> + +\<<< +\Configure{enumerate}{{}{}{}{}} +\Css{.enumerate1 {list-style-type:decimal;}} +\Css{.enumerate2 {list-style-type:lower-alpha;}} +\Css{.enumerate3 {list-style-type:lower-roman;}} +\Css{.enumerate4 {list-style-type:upper-alpha;}} +>>> + +\<\><<< +\:CheckOption{html+} \if:Option + \Configure{enumerate} + {% + {style="list-style-type:decimal"}% + {style="list-style-type:lower-alpha"}% + {style="list-style-type:lower-roman"}% + {style="list-style-type:upper-alpha"}% + } +\else + \Log:Note{for stricter html code, + use the command line option `html+'} + \Configure{enumerate}{% + {type="\theenumi"}% + {type="\theenumii"}% + {type="\theenumiii"}% + {type="\theenumiv"}} +\fi +>>> + +% \Configure{enumerate}{{type="1"}{type="a"}{type="i"}{type="A"}} + + + +\<<< +\Configure{enumiii} + {\HCode{}} + {\HCode{}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Prosper} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{Itemize} + {\ifvmode \IgnorePar\fi \EndP}{|} + {}{} +\ConfigureList{Itemize}% + {\EndP\HCode{
        }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
      }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg
    6. }\DeleteMark} + {\HCode{
    7. }} +>>> + +\<<< +\ConfigureEnv{itemstep} + {\ifvmode \IgnorePar\fi + \EndP\HCode{
        }% + |\global\let\end:itm=\empty} + {|\ifvmode \IgnorePar\fi\EndP + \HCode{
      }\ShowPar} + {} + {} +\ConfigureList{itemstep} + {} + {} + {\end:itm \global\def\end:itm{\EndP\Tg
    8. }\DeleteMark} + {\HCode{
    9. }} +\Css{li.itemize-hide {visibility:hidden;}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Jeep} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<<< +\ConfigureEnv{outline} + {}{|}{}{} +\ConfigureList{outline}% + {|} + {|} + {|} + {|} +>>> + +\<<< +\EndP\HCode{
        }|\global\let\end:itm=\empty +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Description} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\ConfigureList{description}% + {\EndP\HCode{
        }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
        }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
        }\bgroup \bf} + {\egroup\EndP\HCode{
        }} +>>> + +\<32,4 report,book\><<< +\ConfigureEnv{description}{\IgnorePar}{}{}{} +>>> + +\<<< +\ConfigureEnv{description}{\IgnorePar}{}{}{} +>>> + +\<<< +\ConfigureEnv{description}{\IgnorePar}{}{}{} +>>> + +\<<< +| +\ConfigureEnv{description}{\IgnorePar}{}{}{} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{List Utilities} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +Latex allows groups like the following, so we need global \verb+\end:itm+ + +\begin{verbatim} +\begin{enumerate} +{\item Line 1} +{\item Line 2} +\end{enumerate} +\end{verbatim} + + +\<<< +\PushMacro\end:itm +>>> + + +\<<< +\PopMacro\end:itm \global\let\end:itm \end:itm +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{mdwlist} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{itemize*} + {\ifvmode \IgnorePar\fi \EndP}{|} + {}{} +\ConfigureList{itemize*}% + {\EndP\HCode{
          }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
        }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\DeleteMark} + {\HCode{
      1. }} +\ConfigureEnv{enumerate*} + {}{|}{}{} +\ConfigureList{enumerate*}% + {|} + {|} + {|} + {|} +\ConfigureList{description*}% + {\EndP\HCode{
        }% + |\global\let\end:itm=\empty} + {|\EndP\HCode{
        }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
        }\bgroup \bf} + {\egroup\EndP\HCode{
        }} +\ConfigureList{basedescript} + {\EndP\HCode{
        }% + \PushMacro\end:itm \global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP\HCode{
        }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
        }\bgroup \bf} + {\egroup\EndP\HCode{
        }} +>>> + + +%%%%%%%%%%%%% +\subsection{nomencl} +%%%%%%%%%%%%% + +\<<< +\ConfigureList{thenomenclature}% + {\EndP\HCode{
        }% + \PushMacro\end:itm + \global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP\HCode{
        }\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg}\HCode{
        }\bgroup \bf} + {\egroup\EndP\HCode{
        }} +\Css{dt.thenomenclature{float:left; clear:left;}} +>>> + +\<<< +\:CheckOption{2} \if:Option \else + \:CheckOption{3} \if:Option \else + \:CheckOption{4} \if:Option \else + \:CheckOption{5} \if:Option \else + \:CheckOption{6} \if:Option \else + \:CheckOption{7} + \fi + \fi + \fi + \fi +\fi +\if:Option + \pend:def\thenomenclature{% + \if@intoc + |% + \fi + |% + } +\fi +>>> + +\<<< +\expandafter\let\csname if:intoc\expandafter\endcsname\csname if@intoc\endcsname +\expandafter\edef\csname if@intoc\endcsname{% + \expandafter\noexpand\csname iftrue\endcsname + \let\expandafter\noexpand \csname if@intoc\endcsname + \expandafter\noexpand \csname if:intoc\endcsname + \expandafter\noexpand\csname else\endcsname}% +>>> + + +\<<< +\def\:temp{thenomenclature}\ifx\:temp\@currenvir + \RecallEverypar +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Index} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +| +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Scr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<32,4 report,book\><<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \chapter*{\indexname}\fi} +>>> + +\<<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \section*{\indexname}\fi} +>>> + + +\<<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \chapter*{\indexname}\fi} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{multiind} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\Configure{@begin}{theindex} + {\ifx \indexname\empty \else|\fi} +>>> + + +% \ifx \indexname\empty \else +% \ifx\chapter\:Undef \section*{\indexname}\else +% \chapter*{\indexname}\fi +% \let\indexname=\empty +% \fi +% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Index} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{NoSection} + {\let\sv:index|=\p@index \let\sv:label|=\label + \let\sv:newline|=\newline \def\newline{ }% + \def\p@index[##1]{\@gobble}\let\label|=\@gobble + |% + } + {\let\p@index|=\sv:index \let\label|=\sv:label + |% + \let\newline|=\sv:newline + } +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{texinfo} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{index} + {\IgnorePar\leavevmode\EndP\Tg
        } + {\IgnorePar\EndP\Tg
        } + {\leavevmode\Tg} + {\Tg\expandafter\Tg
        \IgnorePar} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{ConTeXt} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<<< +\catcode`\!=11 +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +\catcode`\!=12 +>>> + +\<<< +\Configure{-@@fm} + {\ifvmode + \IgnorePar\EndP\HCode{
        }% + \def\end:margp{\ifvmode \IgnorePar\fi \EndP \HCode{
        }}% + \par + \else + \SaveEndP + \HCode{}% + \bgroup + \Configure{HtmlPar}{\HCode{
        }}{\HCode{
        }}{}{}% + \def\end:margp{\egroup\HCode{
        }\RecallEndP}% + \fi + } + {\end:margp} +\Css{.formula-no {width:5\%; float:right; text-align:right; + margin-right:auto; }} +>>> + + + + +\<<< +\Configure{mtable} + {\ifvmode \IgnorePar\fi \EndP + \HCode{}} + {\HCode{
        }} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} +\Configure{mathalignment} + {\ifvmode \IgnorePar\fi \EndP + \Css{table.\currentmathalignment { margin-left:5\%; }}% + \Css{td.\currentmathalignment { text-align:left; }}% + \HCode{}} + {\HCode{
        }} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} +\NewConfigure{align}{6} +\Configure{align} + {\ifvmode \IgnorePar\fi \EndP + \HCode{}} + {\HCode{
        }} + {\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} +\Css{table.align { margin-left:5\%; }} +\Css{td.align { text-align:left; }} +>>> + +\<<< +\Configure{intertext} + {\f:mtable\d:mtable\c:mtable\HCode{}} + {\f:mtable\d:mtable\c:mtable\e:mtable} +\Css{.intertext {text-align:left;}} +>>> + +\<<< +\Configure{frac} + {\Picture+{ class="frac"}\bgroup} + {}{} + {\egroup\EndPicture} +\Css{.frac {vertical-align:middle;}} +>>> + +\<<< +\Configure{MPcode} + {\Picture*[pic]{}} + {\EndPicture} +>>> + + + + + + +\<<< +\def\:temp{LaTeX} +\HLet\LaTeX\:temp +>>> + + + + +\<<< +{ + \def\:tempc{% + \catcode`\.=12 + \gdef\:tempc} + \:tempc#1.#2.{#1} +} +{\Configure{Needs}{Font\string_Size: #1}% + \Needs{\expandafter\:tempc\the\bodyfontsize .}} +>>> + + + +\<<< +\Configure{crlf}{\HCode{
        }} +>>> + + +\<<< +\Configure{externaldocument}{\Link}{\EndLink} +\Configure{-@@ur} + {\HCode{}} + {\HCode{}} +>>> + + + + + + +\<<< +\Configure{framed} + {\ifvmode + \def\end:framed{\ifvmode \IgnorePar\fi\EndP\HCode{}}% + \IgnorePar \EndP + \HCode{
        >}% + \else + \def\end:framed{\HCode{}}% + \HCode{>}% + \fi + } + {\end:framed} +\Css{.framed-border{border: solid black 1px; }} +\Css{.framed-background{background-color: \#CCCCCC; }} +>>> + + +\<<< +class="framed-\ifdim\ruledlinewidth>0em + border% + \else + background% + \fi +" +>>> + + + +% \hshow{x-\framedparameter\c!framecolor}% +% \hshow{x-\the\ruledlinewidth}% +% \hshow{x-\framedparameter\c!bottomframe}% +% \hshow{x-\framedparameter\c!topframe}% +% \hshow{x-\framedparameter\c!leftframe}% +% \hshow{x-\framedparameter\c!rightframe}% +% \hshow{x-\framedparameter\c!backgroundcolor}% +% \hshow{x-\framedparameter\c!foregroundcolor} +% \hshow{\framedparameter\c!backgroundcolor} + + + + + + + + + + + + + + +\<<< +\NewConfigure{-@@ly}{2} +>>> + + + +\<<< +\v!chapter +>>> + +\<<< +\v!section +>>> + +\<<< +\v!subsection +>>> + +\<<< +\v!subsubsection +>>> + +\<<< +\v!subsubsubsection +>>> + +\<<< +\v!subsubsubsubsection +>>> + + + + + + + +\<<< +\v!hoofdstuk +>>> + +\<<< +\v!paragraaf +>>> + +\<<< +\v!sub \v!paragraaf +>>> + +\<<< +\v!sub \v!sub \v!paragraaf +>>> + +\<<< +\v!sub \v!sub \v!sub \v!paragraaf +>>> + +\<<< +\v!sub \v!sub \v!sub \v!sub \v!paragraaf +>>> + + + +\<<< +\Configure{sectie} + {\gHAdvance \sec:Level by 1\relax + \ifnum \sec:Level=1 + \ifvmode \IgnorePar\fi \EndP + \HCode{
        }% + \else + \ifvmode \IgnorePar\fi + \HCode{}% + \fi + } + {\ifnum \sec:Level=1 + \ifvmode \IgnorePar\fi \EndP + \HCode{
        }% + \else + \ifvmode \IgnorePar\fi + \HCode{
        }% + \fi + \gHAdvance \sec:Level by -1\relax + } +\HAssign\sec:Level=0 +>>> + + + + +\<<< +\def\:tmp#1#2{% + \ConfigureMark{#1} + {\HCode{}\finalsectionnumber + \HCode{}} + \Configure{#1}% + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<#2 class="#1Head"\a:LRdir>}\NoFonts + \TitleMark\space\HtmlParOff + \bgroup + \let\setstrut=\empty + \let\begstrut=\empty + \let\endstrut=\empty + } + {\egroup + \EndNoFonts \HCode{}\HtmlParOn + \IgnoreIndent \par \ShowPar} + \Configure{#1TITLE+}{\finalsectionnumber\space##1} + \ifx \end:secs\empty \else + \edef\:temp{\noexpand\Configure{end#1}{\end:secs}}\:temp + \fi + \edef\end:secs{\end:secs,#1}% + \NewConfigure{#1-ko}{2} +} +\def\end:secs{} +\def\:tempd#1{\edef\:temp{\noexpand\:tmp{#1}}\:temp} + + \:tempd{|}{h1} + \:tempd{|}{h2} + \:tempd{|}{h3} + \:tempd{|}{h4} + \:tempd{|}{h5} + \:tempd{|}{h5} +>>> + + + + +\<<< +\Configure{placecontent} + {\ifvmode \IgnorePar\fi \EndP + \def\toc:br{\def\toc:br{\HCode{
        }}}% + \HCode{
        }\IgnorePar} + {} + {\IgnorePar\EndP\HCode{
        }\ShowPar} + {} {} +\Configure{contenthead} + {\ifvmode \IgnorePar\fi \EndP \HCode{

        }\NoFonts} + {\ifvmode \IgnorePar\fi \EndNoFonts \HCode{

        }\par} +>>> + + + +\<<< +\ConfigureToc{part} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + + + +\<<< +\ConfigureToc{chapter} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{section} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{subsection} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{subsubsection} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{subsubsubsection} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + +\<<< +\ConfigureToc{subsubsubsubsection} + {\toc:br + \HCode{}} + {\HCode{}~} + {} + {\HCode{}} +>>> + + + +\<<< +\Configure{narrower} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} +\Css{div.narrower {margin-left:2em; margin-right:2em;}} +>>> + + + +\<<< +\Configure{midaligned} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }\par} +\Configure{leftaligned} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }\par} +\Configure{rightaligned} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }\par} +\Css{div.midaligned {text-align:center;}} +\Css{div.leftaligned {text-align:left;}} +\Css{div.rightaligned {text-align:right;}} +>>> + + +\<<< +\Configure{startstop} + {\ifvmode \IgnorePar \EndP + \HCode{
        }\par + \def\end:startstop{\ifvmode \IgnorePar \EndP \fi + \HCode{
        }\par}% + \else + \HCode{}% + \def\end:startstop{\ifvmode \IgnorePar \HCode{}\par + \else \HCode{}\fi}% + \fi} + {\end:startstop} +>>> + + +\<<< +\Configure{description-item} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        +
        }\everypar{}} + {\HCode{
        }\everypar{\HtmlPar}\par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} +>>> + +\<<< +\Configure{description-word} + {\HCode{}} + {\ifvmode \IgnorePar \HCode{}\par + \else \HCode{}\fi} +>>> + + + + + +\<<< +\Configure{dolist} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} +>>> + +\<<< +\Configure{itemgroup} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
        }\let\end:dd=\empty} + {\ifvmode\IgnorePar\fi \EndP \end:dd \HCode{
        }} +\Configure{head-listitem} + {\ifvmode\IgnorePar\fi \EndP + \end:dd \HCode{
        }} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
        }\def\end:dd{\HCode{
        }}} +\Configure{symbol-listitem} + {\ifvmode\IgnorePar\fi \EndP + \end:dd \HCode{
        }} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
        }\def\end:dd{\HCode{
        }}} +\Configure{other-listitem} + {\ifvmode\IgnorePar\fi \EndP + \end:dd \HCode{
        }} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
        }\def\end:dd{\HCode{
        }}} +>>> + + + + +\<<< +\Configure{itemize-group} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }\global\let\end:dd=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} +\Configure{itemize-other-item} + {\ifvmode \IgnorePar\fi \EndP + \HCode{\ifx\end:dd\empty\else \fi
        }\global\let\end:dd=\relax} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }\par} +\Css{dd p{margin-top:-1.2em; margin-bottom:1.7em;}} +>>> + + +\<<< +\HAssign\fn:c=0 +\Configure{footnote} + {\HPage{}} + {\EndHPage{}} + {\HCode{}\Link{}{fnc-\fn:c}} + {\EndLink\HCode{}} +\Configure{footnotemark} + {\HCode{}\gHAdvance\fn:c by 1 \Link{fnc-\fn:c}{}} + {\ifvmode\IgnorePar\fi \EndLink\HCode{}} +>>> + + +\<<< +\Configure{typing} + {\ifvmode \IgnorePar\fi \EndP \par \ShowPar + \def\verb:par{% + \HCode{|
        }% + \gdef\verb:par{\HCode{
        }}}% + } + {\ifvmode \IgnorePar\fi \HCode{
        }\par} + {\verb:par} + {\HCode{\string&}\HChar{-35}\HCode{x00A0;}} +\Css{div.typing + {font-family: monospace,monospace; white-space: nowrap; }} +>>> + + +\<<< +\Configure{plaatsblok} + {\ifvmode \IgnorePar\fi \EndP\HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP\HCode{
        }} +\Configure{caption} + {\HCode{}} {\HCode{}} + {\HCode{}} {\HCode{}} +>>> + +Q. Where placefigure is declared? + +\<<< +\NewConfigure{figure}{2} +\Configure{figure} + {\ifvmode \IgnorePar\fi \EndP\HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP\HCode{
        }} +\Css{div.figure {border-top:solid black 1px; border-bottom:solid black 1px;}} +>>> + + +\<<< +\Configure{externalfigure}{\Picture[fig]} +\Configure{placefloat} + {\ifvmode\IgnorePar\fi \EndP + \HCode{
        }\IgnorePar } + {\ifvmode\IgnorePar\fi \EndP\HCode{
        }} +\Css{.place-float .framed-border{ border:0px;}} +\Css{.place-float .framed-border .framed-border{ border:1px solid black;}} +\Css{.place-float { border-top:1px black solid; + border-bottom:1px black solid; + margin: 1em; + padding-top: 5px; + padding-bottom: 5px; + }} +>>> + +\<<< +\Configure{figure-li} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }\par\IgnorePar} + {\HCode{}} + {\HCode{
        }} +>>> + +% \Configure{-@@kjfigure} +% {\HCode{}} +% {\HCode{}} + + + +\<<< +\Configure{title-ko} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }% + \def\end:ko{\ifvmode \IgnorePar\fi \EndP \HCode{
        }}\bgroup + \aftergroup\end:ko + \Configure{title-ko}{\bgroup}{\egroup}% + } + {\egroup } +>>> + + + +%%%%%%%%%%%%% +\subsection{Tables} +%%%%%%%%%%%%% + + + + +\<<< +\Configure{\v!tabulate} + {\ifvmode \IgnorePar\fi + \EndP \HCode{}} + {\ifvmode\IgnorePar\fi\HCode{
        }\par} + {\HCode{}} + {\ifvmode \IgnorePar\fi \HCode{}} + {\HCode{}} + {\HCode{}} +\Css{table.tabulate td {padding-left:0.4em; padding-right:0.4em;}} +>>> + + +\<<< +\Configure{bTABLE} + {\ifvmode \IgnorePar \fi \EndP + \PushStack\Table:Stck\TableNo + \gHAdvance\Next:TableNo by 1 + \global\let\TableNo=\Next:TableNo + \HCode{}} + {\ifvmode \IgnorePar \fi + \HCode{
        }\PopStack\Table:Stck\TableNo } + {\ifvmode \IgnorePar \fi \HCode{}} + {\ifvmode \IgnorePar \fi \HCode{}} + {\expandafter\ifx \csname bTBL\rowTBL,\colTBL\endcsname\relax + \let\need:endTD\relax + \ifvmode \IgnorePar \fi \HCode{}% + \Configure{framed} + {\Css{td\#TBL-\TableNo-\rowTBL-\colTBL{ + padding-left:5pt; padding-right:5pt; border:solid black 1px; + }}}% + {}% + \fi + } + {\ifvmode \IgnorePar \fi \EndP + \ifx \need:endTD\def + \HCode{} + \else + \HCode{-->} + \fi + } +\def\bTBL:sty#1#2{% + \ifnum #1>1 \space rowspan="#1"\fi + \ifnum #2>1 \space colspan="#2" style="text-align:center;"\fi +} +\Css{table.bTABLE p{margin-top:0em; margin-bottom:0em;}} +\Css{table.bTABLE{margin-left:10\%; margin-right:10\%; + margin-top:1em; margin-bottom:1em; + }} +\Css{table.bTABLE {border-spacing:0px; + border-top: solid black 1px; + border-bottom: solid black 1px; }} + +>>> + + +\<\><<< +\Configure{bTABLE} + {\ifvmode \IgnorePar \fi \EndP + \PushStack\Table:Stck\TableNo + \gHAdvance\Next:TableNo by 1 + \global\let\TableNo=\Next:TableNo + \HCode{}} + {\ifvmode \IgnorePar \fi + \HCode{
        }\PopStack\Table:Stck\TableNo } + {\ifvmode \IgnorePar \fi \HCode{}} + {\ifvmode \IgnorePar \fi \HCode{}} + {\ifTag{cell-\TableNo-\rowTBL-\colTBL}% + {\tmp:cnt=\LikeRef{cell-\TableNo-\rowTBL-\colTBL}}{\tmp:cnt=1}% + \HCode{1 + colspan="\the\tmp:cnt" + style="text-align:center;" + \fi>}% + \let\col:TBL\colTBL + \Configure{framed} + {\Css{td\#TBL-\TableNo-\rowTBL-\colTBL{ + padding-left:5pt; padding-right:5pt; border:solid black 1px; + }}}% + {}% + } + {\tmp:cnt=\colTBL + \advance\tmp:cnt by - \col:TBL + \ifnum \tmp:cnt>1 + \Tag{cell-\TableNo-\rowTBL-\col:TBL}{\the\tmp:cnt}% + \fi + \ifvmode \IgnorePar \fi \EndP + \HCode{}} +\Css{table.bTABLE {border-spacing:0px; + border-top: solid black 1px; + border-bottom: solid black 1px; }} +>>> + + + + + + +\<<< +\Configure{table} + {\PushStack\Table:Stck\TableNo + \PushStack\Row:Stck\HRow \HAssign\HRow=0\relax + \PushStack\Col:Stck\Prev:Col + \gHAdvance\Table:No by 1\relax + \HAssign\TableNo=\Table:No\relax + \ifvmode \IgnorePar\fi \EndP\halignTB{table}\putVBorder +} + {\HCode{}% + \PopStack\Table:Stck\TableNo + \PopStack\Row:Stck\HRow + \PopStack\Col:Stck\Prev:Col + } + {\gHAdvance\HRow by 1 + \HCode{}% + \currentTABLEcolumn=0 \gHAssign\Prev:Col=0 } + {\HCode{}} + {\HAssign\HCol=\the\currentTABLEcolumn\relax + \HAssign\HMultispan=\HCol\relax + \HAdvance\HMultispan by -\Prev:Col\relax + \gHAssign\Prev:Col=\HCol\relax + \HAdvance\HCol by 1\relax + \ifnum \HMultispan>1 \HAdvance\HCol by 1 + \HAdvance\HCol by -\HMultispan\relax \fi + \HCode{\Hnewline1 colspan="\HMultispan" \fi >}% +\gdef\dd:table{% + \gdef\dd:table{}% + \x:tableCell + \d:table}% +\def\x:tableCell{\e:tableCell \global\let\x:tableCell=\empty}% +} + {\HCode{}} + +\HAssign\Table:No=0 +\HAssign\TableNo=0 +\HAssign\Prev:Col=0 +\HAssign\HRow=0 +>>> + + +\<<< +\Configure{tableCell} + {\e:table\HCode{
        }\ShowPar\par} + {\e:table\HCode{
        }\ShowPar\par} + {\e:table\HCode{
        }\ShowPar\par} + {\e:table\HCode{
        }\ShowPar\par} + {\ifvmode \IgnorePar\fi \EndP\HCode{
        }\f:table} +>>> + + +\<<< +\let\VBorder\empty \let\AllColMargins\empty +\Configure{VBorder} + {\let\VBorder\empty + \let\AllColMargins\empty + \global\let\GROUPS\empty + \HAssign\NewGroup = 0 + } + {% + \let\:temp\TableNo \let\TableNo=\relax + \edef\VBorder{\VBorder\ifnum \NewGroup> 0 \fi}% + \let\TableNo\:temp + \HAssign\NewGroup = 0 + \gdef\GROUPS{rules="groups"}% + } + {\Advance:\NewGroup by 1 + \let\:temp\TableNo \let\TableNo=\relax + \ifnum \NewGroup=1 \edef\VBorder{\VBorder}\fi + \edef\VBorder{\VBorder}\xdef\AllColMargins{\AllColMargins1}% + \let\TableNo\:temp + } + {% + \let\:temp\TableNo \let\TableNo=\relax + \edef\AllColMargins{\AllColMargins 0}% + \let\TableNo\:temp + } +\Css{table.table td {vertical-align:top;}} +>>> + +\<<< +\Css{table.table td { padding-left:3pt; padding-right:3pt; }} + +\Configure{halignTB}{\HCode{}} +\Configure{halignTB<>}{table}{\HCode{id="TBL-\TableNo" class="table"\Hnewline + \GROUPS\Hnewline + }<>\HAlign} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +>>> + +\<<< +\Configure{TABLElongrule}{\HCode{
        }} +\Configure{TableHL} + {\TABLEnoalign{% + \HCode{
        }% +\tmp:cnt=\maxTABLEcolumn +\advance\tmp:cnt by 2 +\HCode{}% + \HCode{}}% +} +>>> + + +\<<< +\Configure{halignTD} {}{} + {<}{\HCode{ style="white-space:nowrap; text-align:left;"}} + {-}{\HCode{ style="white-space:nowrap; text-align:center;"}} + {>}{\HCode{ style="white-space:nowrap; text-align:right;"}} + {l}{\HCode{ style="white-space:nowrap; text-align:left;"}} + {c}{\HCode{ style="white-space:nowrap; text-align:center;"}} + {r}{\HCode{ style="white-space:nowrap; text-align:right;"}} + {^}{\HCode{ style="vertical-align:top; white-space:nowrap;"}} + {=}{\HCode{ style="vertical-align:baseline; white-space:nowrap;"}} + {||}{\HCode{ style="vertical-align:middle; white-space:nowrap;"}} + {_}{\HCode{ style="vertical-align:bottom; white-space:nowrap;"}} + {p}{\HCode{ style="white-space:normal; text-align:left;"}% + \Protect\a:HColWidth} + {m}{\HCode{ style="white-space:nowrap; + text-align:left; vertical-align:middle;"}} + {b}{\HCode{ style="white-space:nowrap; text-align:left; + vertical-align:baseline;"}} + {} +>>> + + +\<<< +\Configure{index} + {\Link{}{in-\nextinternalreference}\EndLink} +\Configure{indexpage}{% + \gHAdvance\Idx:No by 1 #1% + {#2}% + {#3}% + {#4}% + {\Link{in-#3}{}\Idx:No\EndLink}} +\HAssign\Idx:No = 0 +>>> + +\<<< +\Configure{indexchar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} + {\HCode{
        }\par} +\Css{div.indexchar{margin-top:0.2em; margin-bottom:0.1pt;}} +>>> + +\<<< +\Configure{index-env} + {\ifvmode \IgnorePar\fi \EndP\HCode{
        }\par} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }\par} +\Css{div.index-env p{margin-top:0em; margin-bottom:0em;}} +\NewConfigure{-@@idindex}{2} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{letters} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{g-brief} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }% + \let\sv:@imakebox\@imakebox + \let\sv:br=\\ \def\\{\HCode{
        }}% + \let\:clearpage\clearpage + \def\clearpage{\let\clearpage\:clearpage + \ifvmode \IgnorePar\fi \EndP + \HCode{

        }% + \IgnorePar + }% + \let\brf:par\par + \def\@imakebox[##1][##2]##3{% + \HCode{}% + \def\par{\let\par\brf:par + \ifvmode \IgnorePar\fi \EndP + \HCode{
        }% + \bgroup \let\\=\sv:br \let\@imakebox\sv:@imakebox + \let\par\sv:par + ##3% + \egroup + \HCode{
        }}% + }% + } + {\let\\=\sv:br \let\@imakebox\sv:@imakebox + \ifvmode \IgnorePar\fi \EndP \HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} +\Css{table.date {width:100\%; margin-top:2em;}} +\Css{table.date td{white-space: nowrap;}} +>>> + +\<<< +\Configure{letterfoot} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} + {} + {\HCode{
        }} +\Configure{letterhead} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} + {\HCode{}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} + {\HCode{
        }} +\Css{.letterfoot .tabular {text-align: left; margin-top:4em; }} +\Css{table.from {width:100\%; margin-bottom:2em;}} +\Css{table.from .address table {width:100\%;}} +\Css{.makebox-r {text-align:right;}} +>>> + +\<<< +\Configure{datumtext} + {\HCode{}} + {\HCode{}} +\Configure{datum} + {\HCode{}} + {\HCode{}\IgnorePar} +\Configure{anrede} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} + {\HCode{
        }} +\Configure{betreff} + {\ifvmode \IgnorePar\fi \EndP\HCode{
        }} + {\HCode{
        }} +\Css{.betreff{margin-top:2em; margin-bottom:1em;}} +\Configure{gruss} + {\HCode{}} + {\HCode{}} +\Configure{unterschrift} + {\HCode{}} + {\HCode{}} +\Configure{anlagen} + {\HCode{}} + {\HCode{}} +\Configure{verteiler} + {\HCode{}} + {\HCode{}} +\Configure{sprache} + {\HCode{}} + {\HCode{}} +\Configure{telefontex} + {\HCode{}} + {\HCode{}} +\Configure{telefaxtext} + {\HCode{}} + {\HCode{}} +\Configure{telextext} + {\HCode{}} + {\HCode{}} +\Configure{emailtext} + {\HCode{}} + {\HCode{}} +\Configure{httptext} + {\HCode{}} + {\HCode{}} +\Configure{banktext} + {\HCode{}} + {\HCode{}} +\Configure{blztext} + {\HCode{}} + {\HCode{}} +\Configure{betrefftext} + {\HCode{}} + {\HCode{}} +\Configure{ihrzeichentext} + {\HCode{}} + {\HCode{}} +\Configure{ihrschreibentext} + {\HCode{}} + {\HCode{}} +\Configure{meinzeichentext} + {\HCode{}} + {\HCode{}} +\Configure{unserzeichentext} + {\HCode{}} + {\HCode{}} +\Configure{anlagen} + {\HCode{}} + {\HCode{}} +\Configure{adresse} + {\HCode{}} + {\HCode{}} +\Configure{bank} + {\HCode{}} + {\HCode{}} +\Configure{blz} + {\HCode{}} + {\HCode{}} +\Configure{email} + {\HCode{}} +\Configure{gruss} + {\HCode{}} + {\HCode{}} +\Configure{grussskip} + {\HCode{}} + {\HCode{}} +\Configure{http} + {\HCode{}} + {\HCode{}} +\Configure{ihrschreiben} + {\HCode{}} + {\HCode{}} +\Configure{ihrzeichen} + {\HCode{}} + {\HCode{}} +\Configure{konto} + {\HCode{}} + {\HCode{}} +\Configure{land} + {\HCode{}} + {\HCode{}} +\Configure{meinzeichen} + {\HCode{}} + {\HCode{}} +\Configure{name} + {\HCode{}} + {\HCode{}} +\Configure{ort} + {\HCode{}} + {\HCode{}} +\Configure{postvermerk} + {\HCode{}} + {\HCode{}} +\Configure{retouradresse} + {\HCode{}} + {\HCode{}} +\Css{div.retouradresse { margin-bottom:2em; }} +\Configure{strasse} + {\HCode{}} + {\HCode{}} +\Configure{telefax} + {\HCode{}} + {\HCode{}} +\Configure{telefon} + {\HCode{}} + {\HCode{}} +\Configure{telex} + {\HCode{}} + {\HCode{}} +\Configure{unterschrift} + {\HCode{}} + {\HCode{}} +\Configure{verteiler} + {\HCode{}} + {\HCode{}} +\Configure{zusatz} + {\HCode{}} + {\HCode{}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{mwcls} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{@begin}{theindex}{\section*{\indexname}} +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }\let\end:theidx\empty} + {\end:theidx\HCode{
        }} + {} {\HCode{
        }\hfil\break} + {\ \ \ \ } {\HCode{
        }\hfil\break} + {\ \ \ \ \ \ \ \ } {\HCode{
        }\hfil\break} + {\hbox{\end:theidx\HCode{

        }}% + \def\end:theidx{\HCode{

        }}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Into Columns} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\def\:temp#1index=#2,#3|{% + \ifnum #2>1 |\fi + \def\:temp{#2}% +} +\expandafter\:temp\Preamble,index=0,| +\ifnum \:temp<2 + | +\else + | +\fi +>>> + + +The \verb=\Configure{IndexColumns}= instruction is to allow documents +that have more than one index to employ different number of columns. +The `index=i' provides the initial setting. + + +\<<< +\Log:Note{for i-columns index, + use the command line option `index=i' (e.g., index=2)} +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }\let\end:theidx|=\empty} + {\end:theidx\HCode{
        }} + {\hbox\bgroup\HCode{}} + {\HCode{
        }\egroup\hfill\break} + {\hbox\bgroup\HCode{}\ \ \ \ } + {\HCode{
        }\egroup\hfill\break} + {\hbox\bgroup\HCode{}\ \ \ \ \ \ \ \ } + {\HCode{
        }\egroup\hfill\break} + {\hbox{\end:theidx\HCode{

        }}% + \def\end:theidx{\HCode{

        }}} +\Css{.index-item, .index-subitem, .index-subsubitem {display:block}} +>>> + + + +\<<< +\Log:Note{for i-columns index, + use the command line option `index=i' (e.g., index=2)} +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }\let\end:theidx|=\empty} + {\end:theidx\HCode{
        }} + {} {\hfil\break\HCode{
        }} + {\ \ \ \ } {\hfil\break\HCode{
        }} + {\ \ \ \ \ \ \ \ } {\hfil\break\HCode{
        }} + {\hbox{\end:theidx\HCode{

        }}% + \def\end:theidx{\HCode{

        }}} +>>> + +\<<< +\NewConfigure{IndexColumns}{1} +\Configure{IndexColumns}{#2} +>>> + + +\<<< +\Log:Note{the number of columns + requested by the option `index=\a:IndexColumns' can + be modified through the command \string\Configure{IndexColumns}{i}} +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }% + |\let\end:theidx|=\empty} + {\end:theidx + |\HCode{
        }} + {\hbox\bgroup\HCode{}} + {\HCode{
        }\egroup\hfill\break} + {\hbox\bgroup\HCode{}\ \ \ \ } + {\HCode{
        }\egroup\hfill\break} + {\hbox\bgroup\HCode{}\ \ \ \ \ \ \ \ } + {\HCode{
        }\egroup\hfill\break} + {%\ifvmode \EndP\fi + % \hbox{\end:theidx\HCode{

        }}% + % \def\end:theidx{\HCode{

        }} + \parindent=0pt + }% +\Css{.index-item, .index-subitem, .index-subsubitem {display:block}} +\Css{br.index-segment:first-child {display:none}} +\Css{.index-item br, + .index-subitem br, + .index-subsubitem br {display:none}} +>>> + + + + + +\<<< +\Log:Note{the number of columns + requested by the option `index=\a:IndexColumns' can + be modified through the command \string\Configure{IndexColumns}{i}} +\Configure{theindex} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }% + |\let\end:theidx|=\empty} + {\end:theidx + |\HCode{
        }} + {} {\hfil\break\HCode{
        }} + {\ \ \ \ } {\hfil\break\HCode{
        }} + {\ \ \ \ \ \ \ \ } {\hfil\break\HCode{
        }} + {%\ifvmode \EndP\fi + % \hbox{\end:theidx\HCode{

        }}% + % \def\end:theidx{\HCode{

        }} + \parindent=0pt + }% +>>> + + +\<<< +\Configure{HColumns} + {\IgnorePar\EndP + \HCode{}} + {\HCode{
        }} + {\HCode{}\ColMag{1.1}} + {\IgnorePar\EndP\HCode{}} + \HColumns{\a:IndexColumns}% + \everypar{\HtmlPar}% + \Configure{HtmlPar}{}{\HCode{
        }}{}{}% + \par\ShowPar +>>> + +\<<< +\ifvmode\IgnorePar\fi \EndP\EndHColumns +>>> + +\<<< +\def\add:col{\Advance:\:cols -1 \HAdvance\HCol 1\relax + \ifnum \:cols>0 + \c:Cols \vsplit0 to \tmp:dim \d:Cols \expandafter\add:col + \fi} +\NewConfigure{HColumns}{4} +\def\c:Cols{\edef\sv:dim{\the\tmp:dim}\c:HColumns} +\def\d:Cols{\d:HColumns \tmp:dim\sv:dim } +\def\ColMag#1{\tmp:dim #1\tmp:dim} +\def\HColumns#1{% + \a:HColumns + \HAssign\:cols#1 \setbox0=\vbox\bgroup + \divide\hsize #1 } +\def\EndHColumns{\egroup \HAssign\HCol0 + \tmp:dim\ht0 \advance\tmp:dim \dp0 \divide\tmp:dim \:cols + \add:col \c:Cols \box0 \d:Cols \b:HColumns} +>>> + + + +%%%%%%%%%%%%% +\section{Glossary} +%%%%%%%%%%%%% + +\<<< +\Configure{gloskip}{list}{\item[]\HCode{

        }} +\Configure{gloskip}{altlist}{\item[]\HCode{

        }} +\Configure{gloskip}{super}{\cr\HCode{

        }} +\Configure{gloskip}{long}{\cr\HCode{

        }} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Captions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{caption}{\HCode{\if:nopar \else
        \fi} + \:xhtml{\IgnorePar\EndP}\HCode{
        }} + {: } {\HCode{}} + {\HCode{
        }\HCode{}% +} +\Css{div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; + text-align:left;}} +\Css{div.caption span.id{font-weight: bold; white-space: nowrap; }} +>>> + +\<\><<< +\Configure{caption}{\HCode{\if:nopar \else
        \fi} + \:xhtml{\IgnorePar\EndP}\HCode{
        }} + {: } {\HCode{}} + {\HCode{
        }|} +\Css{.caption td.id{font-weight: bold; white-space: nowrap; }} +\Css{table.caption {text-align:center;}} +>>> + + +\<<< +\Configure{caption}{\HCode{\if:nopar \else
        \fi} + \:xhtml{\IgnorePar\EndP}\HCode{
        }} + { } {\HCode{}} + {\HCode{
        }|} +\Css{table.caption {text-align:left;}} +>>> + +\<<< +\Configure{caption}{\HCode{\if:nopar \else
        \fi} + \:xhtml{\IgnorePar\EndP}\HCode{
        }} + {: } {\HCode{}} + {\HCode{
        }|% +} +\Css{.caption td.id{font-weight: bold; white-space: nowrap; }} +\Css{div.caption {text-align:center;}} +>>> + +\<<< +\Configure{caption} + {\:xhtml{\IgnorePar\EndP}\HCode{
        }}{}{\HCode{
        }} +\Css{div.caption {text-align:center;}} +>>> + +\<<< +\Configure{caption} + {\HCode{
        }} + {\HCode{}: }{}{\HCode{
        }}% +>>> + + +\<<< +\HCode{}% +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Originating Packages} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +| +\:CheckOption{fn-in}\if:Option + | +\else + \Log:Note{for inline footnotes use + command line option `fn-in'} + | +\fi +>>> + + + + + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + \Log:Note{for inline footnotes, use + the command line option `fn-in'} + | +\fi +>>> + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + + + + + +%%%%%%%%%%%%%%%% +\subsection{In-Line LaTeX} +%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{mouseover} \if:Option + | + | + | + | +\else + | + | + | +\fi +>>> + + +\<<< +\Configure{footnotetext} + {|% + ||% + \NoFonts + \Tag{|-bk}{}% + \special{t4ht@(}% + } + {\special{t4ht@)}\EndNoFonts + ||} + {\expandafter\global\expandafter + \let\csname (|)\endcsname\def + |} +>>> + +\<<< +\Configure{footnotemark} + {||% + \NoFonts + \Tag{|}{}} + {\EndNoFonts + ||% + \expandafter\global\expandafter + \let\csname (|-bk)\endcsname\def} +>>> + + + + +\<<< +\Configure{footnotetext} + {|% + |% + ||% + \NoFonts \Tag{|-bk}{}% + } + {\EndNoFonts ||} + {\expandafter\global\expandafter + \let\csname (|)\endcsname\def + |% + |} +>>> + +\<<< +\Configure{footnotemark} + {||% + \NoFonts + \Tag{|}{}} + {\EndNoFonts + ||% + \expandafter\global\expandafter + \let\csname (|-bk)\endcsname\def} +>>> + + + + + + + + + + + + + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \Link{|-bk}{}% + \else + \Link{|-bk}{|}% + \fi + } + {\expandafter\ifx\csname (|)\endcsname\def + \else \Link{}{|}\fi + }% +>>> + +\<<< +\ifTag{|} + {\EndLink} + {\expandafter\ifx\csname (|)\endcsname\def + \else \EndLink\fi + }% +>>> + + + +\<<< +|% +\ifTag{|-bk} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \Link[ |\Hnewline + ]{|}{}% + \else + \Link[ |\Hnewline + ]{|}{|-bk}% + \fi + } + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else \Link[ |\Hnewline + ]{}{|-bk}\fi + }% +>>> + + + + + + + +\<<< +\ifTag{|-bk} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \Link{|}{}% + \else + \Link{|}{|-bk}% + \fi + } + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else \Link{}{|-bk}\fi + }% +>>> + +\<<< +\ifTag{|-bk} + {\EndLink} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else \EndLink\fi + }% +>>> + + + + +\<<< +\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi +>>> + +\<<< +\EndP\egroup\RecallEndP +>>> + + +\<<< +\ifvoid \fn:box \else + \expandafter \ifx \csname fn:box\body:level\endcsname\relax + \csname newbox\expandafter\endcsname + \csname fn:box\body:level\endcsname + \fi + \global\expandafter\setbox\csname fn:box\body:level\endcsname= + \vbox{\csname unvbox\endcsname\fn:box}% +\fi +\gHAdvance\body:level by 1 +>>> + +\<<< +\gHAdvance\body:level by -1 +\expandafter \ifx \csname fn:box\body:level\endcsname\relax \else + \global\setbox\fn:box= + \vbox{\expandafter\ifvoid \csname fn:box\body:level\endcsname \else + \csname unvbox\expandafter\endcsname + \csname fn:box\body:level\endcsname\fi}% +\fi +>>> + +\<<< +\ifvmode \IgnorePar\fi\EndP +\ifvoid \fn:box\else + \HCode{
        }\box\fn:box\HCode{
        } + \IgnorePar\EndP +\fi +>>> + + +\<<< +(L >>> + +\<<< +)Q>>> + + + +\<<< +\Configure{BODY} + {|\:xhtml{\SaveEndP}\IgnorePar + \HCode{}|\ShowPar\par} + {|% + \relax \ifnum \FileNumber=1 + |% + \fi + \HCode{\Hnewline + }\:xhtml{\RecallEndP}|}% +>>> + +\<<< +\Configure{BODY} + {|\:xhtml{\SaveEndP}\IgnorePar + \HCode{}\ShowPar\par} + {|\HCode{\Hnewline + }\:xhtml{\RecallEndP}|}% +>>> + + +\<<< +\Configure{crosslinks+} + {\IgnorePar\EndP\HCode{|% + }\par\ShowPar} + {|% + \ifvmode \IgnorePar\fi \EndP + \HCode{|% + }\par\ShowPar} +>>> + +\<<< +\Css{div.footnotes{border-top:solid 1px black; + border-bottom:solid 1px black; + padding-bottom:1ex; + padding-top:0.5ex; + margin-right:15\%; margin-top:2ex; + font-style:italic; font-size:85\%;}} +\Css{div.footnotes p{margin-top:0; margin-bottom:0; text-indent:0;}} +\ifx \fn:box\:UnDef \csname newbox\endcsname\fn:box \fi +\HAssign\body:level=0 +>>> + + + + +%%%%%%%%%%%%%%%% +\subsection{Off-Line in latex} +%%%%%%%%%%%%%%%% + + +\<<< +\:CheckOption{mouseover} \if:Option + | + | + | + \AtEndDocument{|} +\else \:CheckOption{frames-fn} \if:Option + | + | + \else + | + | +\fi \fi +>>> + +\<<< +\Configure{footnotetext} + {|% + |\Link{}{|}% + \NoFonts + } + {\EndNoFonts \EndLink|} + {|} +>>> + +\<<< +\Configure{footnotemark} + {||\NoFonts + \Tag{|}{}} + {\EndNoFonts ||} +>>> + +\<<< +\Configure{footnotetext} + {|% + |\Link{}{|}% + \NoFonts + } + {\EndNoFonts \EndLink|} + {|} +>>> + + +\<<< +\Configure{footnotemark} + {||\NoFonts + \Tag{|}{}} + {\EndNoFonts + ||} +>>> + + + +\<<< +\Configure{footnotetext} + {|% + |\Link{}{|}\NoFonts + } + {\EndNoFonts\EndLink|} + {|} +>>> + +\<<< +\Configure{footnotemark} + {||\NoFonts + \Tag{|}{}} + {\EndNoFonts + ||} +>>> + + + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \:warning{Multiple footnote texts for mark \FNnum}% + \else \csname a:footnote-text\endcsname\fi + } + {}% +>>> + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \else \csname b:footnote-text\endcsname\fi + } + {}% +\expandafter\global\expandafter + \let\csname (|)\endcsname\def +>>> + + + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \:warning{Multiple footnote texts for mark \FNnum}% + \else \csname a:footnote-text\endcsname\fi + } + {}% +>>> + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \else \csname b:footnote-text\endcsname\fi + } + {}% +\expandafter\global\expandafter + \let\csname (|)\endcsname\def +>>> + + +\<<< +\ifTag{||} + {\Link{|}{}} + {}% +>>> + +\<<< +\ifTag{||} + {\EndLink} + {}% +>>> + + +\<<< +\ifTag{||} + {|% + \leavevmode \Link[ |% + \Hnewline]{|}{}} + {}% +>>> + +\<<< +\ifTag{||} + {\EndLink} + {}% +>>> + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \:warning{Multiple footnote texts for mark \FNnum}% + \else + \Configure{!BODY}{id="|" }% + \BeginHPage[|]{ }% + \Configure{!BODY}{}% + \fi + } + {}% +>>> + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \else + \close:fn\EndHPage{} + \fi + } + {}% +\expandafter\global\expandafter + \let\csname (|)\endcsname\def +>>> + + +\<<< +\def\close:fn{\HPage{}\Link{}{hide-fn}\EndLink\EndHPage{}% + \gdef\close:fn{\rightline{\Link{hide-fn}{}@\EndLink}}\close:fn} +>>> + +% \Css{body\#|{font-size:80\%;}}% + + +\<<< +\ifTag{||} + {\Link[\RefFile{|} + target="|"]{}{}} + {}% +>>> + +\<<< +\ifTag{||} + {\EndLink} + {}% +>>> + + + + + + + +\<<< +fn\FNnum x\minipageNum +>>> + + + +\<<< +\csname a:footnote-mark\endcsname +>>> + +\<<< +\csname b:footnote-mark\endcsname +>>> + +\<<< +\csname a:thank-mark\endcsname +>>> + +\<<< +\csname b:thank-mark\endcsname +>>> + +\<<< +\NewConfigure{footnote-mark}{2} +\NewConfigure{thank-mark}{2} +\Configure{footnote-mark} + {\HCode{}} + {\HCode{}} +\Configure{thank-mark} + {\HCode{}} + {\HCode{}} +\Css{span.thank-mark{ vertical-align: super }} +>>> + + + +\<<< +\NewConfigure{footnote-text}{2} +>>> + +\<<< +\Configure{footnote-text} + {\HPage{}\HCode{
        }\par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }\EndHPage{}} +>>> + +\<<< +\Configure{footnote-text} + {\HPage{}\HCode{
        }|} + {\ifvmode \IgnorePar\fi \EndP + |\HCode{
        }\EndHPage{}} +>>> + +\<<< +% \Css{span.footnote-mark{ vertical-align: super }} +\Css{span.footnote-mark sup.textsuperscript, + span.footnote-mark a sup.textsuperscript{ font-size:80\%; }} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{AMS} +%%%%%%%%%%%%%%%% + + +\<<< +\:CheckOption{fn-in}\if:Option + \:CheckOption{mouseover}\if:Option + |% + \else + |% + \fi +\else + \:CheckOption{mouseover}\if:Option + |% + \else \:CheckOption{frames-fn}\if:Option + |% + \else + |% + \fi \fi +\fi +>>> + +\<<< +\Configure{footnotetext} + {|\HPage{\FNnum}\HCode{
        }\NoFonts} + {\EndNoFonts} + {\HCode{
        }\EndHPage{}|}% +>>> + + +\<<< +|% +>>> + +\<<< +|% +>>> + +\<<< +|% +>>> + +\<<< +|% +>>> + +\<<< +\Css{span.footnote-mark{ vertical-align: super; font-size:80\%; }} +% \Css{span.footnote-mark sup.textsuperscript, +% span.footnote-mark a sup.textsuperscript{ font-size:80\%; }} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{SCR *} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + + +\<<< +\:CheckOption{fn-in}\if:Option + | +\else + | +\fi +>>> + + + +\<<< +% \Css{span.footnote-mark{ vertical-align: super }} +\Css{span.footnote-mark sup.textsuperscript, + span.footnote-mark a sup.textsuperscript{ font-size:80\%; }} +>>> + + + +%%%%%%%%%%%%%%%% +\subsection{Plain} +%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{vfootnote} + {|} + {|} + {|} +>>> + + + + +\<<< +\HCode{}\Link{fn\FNnum}{fn\FNnum-bk}% + \ifx \FNmark\empty +\else \FNmark\fi\EndLink +\HCode{}% +>>> + +\<<< +|% +\HCode{}\Link{fn\FNnum-bk}{fn\FNnum}% +\ifx \FNmark\empty +\else \FNmark\fi +\EndLink\space\HCode{}% +>>> + +\<<< +| +>>> + + + +\<<< +\Configure{vfootnote} + {\HPageButton[fn\FNnum]{\FNmark}} + {\BeginHPage[fn\FNnum]{ }} + {\EndHPage{}} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{On Mouse Over} +%%%%%%%%%%%%%%%% + + +\<<< +\expandafter\def\csname c:mouseover-footnote:\endcsname{% + \def\:tempb{footnote}\csname c:mouseover-?:\endcsname} +\Configure{mouseover-footnote} {tex4ht.body,FULLHTML} +>>> + + + + +\<<< +|\let\sv:link=\Link +\def\Link[##1]{\let\Link=\sv:link + \Link[##1 |\Hnewline]}% +>>> + + +\<<< +\mo:args{footnote}{\FNnum}{|}% +>>> + + +\<<< +|% +\HCode{}% +|% +>>> + +\<<< +|% +\HCode{}% +>>> + + + + + + +An alternative css-based approach: + +\begin{verbatim} +\Configure{tableofcontents} + {\IgnorePar\EndP\HCode{
        }\IgnorePar} + {} + {\IgnorePar\EndP\HCode{
        }\ShowPar} + {\HCode{
        }} {} + +\ConfigureToc{section} + {\HCode{
        }} + { \HCode{}} + {} + {\HCode{
        }} +\ConfigureToc{subsection} + {\HCode{
        }} + { \HCode{}} + {} + {\HCode{
        }} +\ConfigureToc{subsubsection} + {\HCode{
        }} + { \HCode{}} + {} + {\HCode{
        }} + +\ConfigureToc{likesection} + {} + {\HCode{
        }} + {} + {\HCode{
        }} +\ConfigureToc{likesubsection} + {} + {\HCode{
        }} + {} + {\HCode{
        }} +\ConfigureToc{likesubsubsection} + {} + {\HCode{
        }} + {} + {\HCode{
        }} + + + +\Css{div.sectionToc { margin-left: 1em; text-indent: -1em; }} +\Css{div.sectionToc span.mark { text-align:right; width: 1em; + padding-right:0.25em; }} + +\Css{div.subsectionToc { margin-left:2.5em; text-indent: -2.5em; }} +\Css{div.subsectionToc span.mark { text-align:right; width: 2.5em; + padding-right:0.25em; }} +\Css{div.likesubsectionToc { margin-left: 2.5em; text-indent: -1.5em; }} + +\Css{div.subsubsectionToc { margin-left: 4.5em; text-indent: -4.5em; }} +\Css{div.subsubsectionToc span.mark { text-align:right; width: 4.5em; + padding-right:0.25em; }} +\Css{div.likesubsubsectionToc { margin-left: 4.5em; text-indent: -2em; }} +\end{verbatim} + +%%%%%%%%%%%%% +\subsection{Other} +%%%%%%%%%%%%% + + +\<<< +\Configure{textsuperscript} + {\HCode{}\bgroup \small} + {\egroup \HCode{}} + +\Configure{textsubscript} + {\HCode{}\bgroup\small} + {\egroup \HCode{}} +>>> + +\<<< +\Configure{textsubscript} + {\HCode{}\bgroup\small} + {\egroup \HCode{}} +>>> + +%%%%%%%%%%%%%%%% +\section{Floats} +%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{subfigure} +%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{subfigure} + {\ifvmode \IgnorePar \fi \EndP + \HCode{
        }} + {\ifvmode \IgnorePar \fi \EndP \HCode{
        }} +\Configure{subfigurecaption} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} + {}{} + {\ifvmode \IgnorePar\fi \EndP \HCode{
        }} +\Css{.subfigcaption {margin-top:1em; + margin-left:1em; text-align:center;}} +\Css{div.subfigure {text-align:center;display:inline-block;}} +>>> + +\subsection{subcaption} + +\<<< +\Configure{subfigure} +{\ifvmode\IgnorePar\fi\EndP% +\HCode{
        }\par\ShowPar% +\Configure{caption}{\ifvmode\IgnorePar\fi\EndP\HCode{
        }}% + {:} {\HCode{}}% + {\HCode{
        }}% +}% +{\ifvmode\IgnorePar\fi\EndP\HCode{
        }}% +\Css{div.subfigure {text-align:center;display:inline-block; max-width:45\%;}} +>>> + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Wrapfig} +%%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item + r R - the right side of the text +\item + l L - the left side of the text +\item + i I - the inside edge--near the binding (if ``[twoside]'' document) +\item + o O - the outside edge--far from the binding +\end{itemize} + + +\<<< +\Configure{wrapfloat} + {\ifvmode\IgnorePar\EndP + \HCode{
        }% + \def\endWrap{\ifvmode\IgnorePar\fi\EndP\HCode{
        }\par}% + \else + \HCode{}\bgroup + |% + \def\endWrap{\egroup\HCode{}}% + \fi + } + {\endWrap} +\Css{.caption span.id{font-weight: bold;}} +\Css{ + .wrapfig-r, + .wrapfig-ri, + .wrapfig-ir, + .wrapfig-ro, + .wrapfig-or + {float:right; text-align:left; + margin-left:auto; margin-top:0.5em;} +} +\Css{ + .wrapfig-l, + .wrapfig-li, + .wrapfig-il, + .wrapfig-lo, + .wrapfig-ol + {float:left; text-align:left; + margin-right:auto; margin-top:0.5em;} +} +\Css{.wrapfig-r .caption td.content, + .wrapfig-ri .caption td.content, + .wrapfig-ir .caption td.content, + .wrapfig-ro .caption td.content, + .wrapfig-or .caption td.content, + .wrapfig-l .caption td.content, + .wrapfig-li .caption td.content, + .wrapfig-il .caption td.content, + .wrapfig-lo .caption td.content, + .wrapfig-ol .caption td.content + {white-space: normal; }} +\Css{.wrapfig-r .caption, + .wrapfig-ri .caption, + .wrapfig-ir .caption, + .wrapfig-ro .caption, + .wrapfig-or .caption, + .wrapfig-l .caption, + .wrapfig-li .caption, + .wrapfig-il .caption, + .wrapfig-lo .caption, + .wrapfig-ol .caption + {width:30\%; }} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%% +\subsection{endfloat} +%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{figure}{}{}{}{} +>>> + +\<<< +\Configure{floatingfigure} + {\HCode{}% + \bgroup \Configure{HtmlPar}{}{}{}{}% + \ConfigureEnv{minipage}{\IgnorePar}{}{\IgnorePar}{}% + |% + } + {\egroup \HCode{}} +\Css{.floatingfigure-r { float:right; text-align:left; + margin-top:0.5em; margin-bottom:0.5em; margin-left:0em;}} +\Css{.floatingfigure-l { float:left; text-align:left; + margin-top:0.5em; margin-bottom:0.5em; margin-right:0em; }} +\Css{.caption span.id{font-weight: bold;}} +>>> + + + +%%%%%%%%%%%%%%%% +\section{Make Title} +%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{book-report-article} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +thanks author date and>>> + +\<<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{div.maketitle {text-align:center;}} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; }} +|<maketitle footnote|> +>>> + + + +\<config thanks author date and\><<< +\Configure{|<thanks author date and|>} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="date" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +\Css{div.author{white-space: nowrap;}} +>>> + +\<thank for thanks\><<< +\Configure{thank} + {|<thank mark sup|>\Link{tk-\the\c@footnote}{}} + {\EndLink |<thank mark end sup|>} + {\HCode{<br />}\protect\Link{}{tk-\the\c@footnote}\protect + \EndLink |<thank mark sup|>} + {|<thank mark end sup|>} {} +>>> + +\<thanks for thanks p\><<< +\Configure{thank} + {|<thank mark sup|>\Link{tk-\the\c@footnote}{\ifx + \footnote\thanks kt-\the\c@footnote\fi}} + {\EndLink |<thank mark end sup|>} + {\HCode{<p>}\protect\Link{\ifx \footnote\thanks kt-\the\c@footnote + \fi}{tk-\the\c@footnote}|<thank mark sup|>} + {|<thank mark end sup|>\protect\EndLink} + {\HCode{</p>}} +>>> + +\<thanks for thanks EndP\><<< +\Configure{thank} + {\HCode{<sup>}\Link{tk-\the\c@footnote}{\ifx + \footnote\thanks kt-\the\c@footnote\fi}} + {\EndLink\HCode{</sup>}} + {\protect\Link{\ifx \footnote\thanks kt-\the\c@footnote + \fi}{tk-\the\c@footnote}\HCode{<sup>}} + {\HCode{</sup>}\protect\EndLink} + {\ifvmode\IgnorePar\fi\EndP} +>>> + + +\<end-thanks author date and\><<< +\Configure{|<thanks author date and|>} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{RevTeX} +%%%%%%%%%%%%%%%%%%%% + +\<revtex title page\><<< +\ConfigureEnv{abstract}{\:xhtml{\IgnorePar\EndP}\HCode + {<table\Hnewline class="abstract"><tr><td\Hnewline>}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</td></tr></table>}}{}{} +\Css{.abstract p {margin-left:5\%; margin-right:5\%;}} +\Css{table.abstrac {width:100\%;}} + + +|<revtex maketitle footnote|> +\Configure{address} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="address">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} +>>> + + + + + +\<revtex end-thanks author date and\><<< +\Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<br class="and" \a:LRdir/>}} + {\HCode{<br />}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + +\<revtex config thanks author date and\><<< +\Configure{thanks author date and} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +\Css{div.author{white-space: nowrap;}} +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{TUG LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<tug proc maketitle\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + |<global HtmlPar|>% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\EndP + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +>>> + + +\<tug boat maketitle\><<< +\@ifclassloaded{ltugproc}{}{% + \@ifpackageloaded{ltugproc}{}{\Configure{@BODY}{\rtitlex}} +} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP + \def\textSMC##1{##1}% + |<title for TITLE|>% + |<global HtmlPar|>% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\EndP + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +>>> + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{lncse} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 lncse\><<< +\Configure{institute}{}{}{\HCode{<br />}} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:left;}} +\:CheckOption{fn-in}\if:Option + \Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<brclass="and" />}} + {\HCode{<br />}} +\else + \Configure{thanks author date and} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +\fi + +>>> + +%%%%%%%%%%%%%%%%%%%% +\subsection{Prosper} +%%%%%%%%%%%%%%%%%%%% + + +\<prosper maketitle\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP + {\def\@title{\@Title}|<title for TITLE|>}% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + {\NoFonts\IgnorePar \EndP + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +>>> + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{AMS} +%%%%%%%%%%%%%%%%%%% + + + +\<ams art,proc,book\><<< +\Configure{translators} + {\par\IgnorePar\EndP \HCode{<div class="translators">}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP \HCode{</div>}} + {\HCode{<span class="translator">}} + {\HCode{</span>}} +>>> + +\<ams art,proc\><<< +\Css{div.translators {text-align:right; margin-bottom:0.7em;}} +>>> + + + +\<ams art,proc,book\><<< +\Configure{keywords} + {\par\IgnorePar\EndP \HCode{<div class="keywords">}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP\HCode{</div>}} +\Configure{subjclass} + {\par\IgnorePar\HCode{<div class="subjclass">}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP\HCode{</div>}} +\Configure{@maketitle} + {\ifvmode \IgnorePar\fi \EndP + \Tg<div class="submaketitle">\IgnoreIndent} + {\ifvmode \IgnorePar \fi\EndP\Tg</div>} +\Css{div.submaketitle{ text-align:left; margin-top:2em; + border-top: 1px solid black; + border-bottom: 1px solid black; + margin-left:5\%; margin-right:5\%; + font-size:85\%; line-height: 95\%;}} +\Css{div.submaketitle div {margin-top:0.5em; margin-bottom:0.5em; }} +\Css{div.submaketitle p { margin-top:0em; margin-bottom:0em; }} +>>> + +\<ams art,proc,book\><<< +\ConfigureEnv{abstract} + {\ifvmode \IgnorePar\fi \EndP} + {\ifvmode \IgnorePar\fi \EndP} + {}{} +\ConfigureList{abstract} + {\ifvmode \IgnorePar\fi \EndP \Tg<div class="abstract">\ShowPar} + {\ifvmode \IgnorePar\fi \EndP\Tg</div>} + {\ShowPar\par\HCode{<span class="title">}} + {\HCode{</span>}} +\Configure{setabstract} + {\ifvmode \IgnorePar \fi \EndP} + {\ifvmode \IgnorePar \fi \EndP} +\Css{div.abstract{ margin-top: 2em; text-align:left; + margin-right:15pt; margin-left:15pt; }} +>>> + +\<ams art,proc,book\><<< +\Configure{addresses} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="addresses">}\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{address} + {\HCode{<span class="address-title">}} + {\ifvmode \IgnorePar\fi \HCode{</span><span class="address">}} + {\HCode{</span>}} +\Configure{curraddr} + {\HCode{<span class="curraddr-title">}} + {\ifvmode \IgnorePar\fi \HCode{</span><span class="curraddr">}} + {\HCode{</span>}} +\Configure{email} + {\HCode{<span class="email-title">}} + {\ifvmode \IgnorePar\fi \HCode{</span><span class="email">}} + {\HCode{</span>}} +\Configure{urladdr} + {\HCode{<span class="urladdr-title">}} + {\ifvmode \IgnorePar\fi \HCode{</span><span class="urladdr">}} + {\HCode{</span>}} +\Css{div.addresses p {margin-top:0em; margin-bottom:0em; }} +>>> + + +\<ams art,proc,book\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<ams title for TITLE|>% + \HCode{<div class="maketitle">}% + \ConfigureEnv{center} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi}% + |<footnote for ams title|>% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar \EndP + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar + \bgroup \Configure{HtmlPar}{}{}{}{}} + {\egroup \HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +>>> + + + + +\<ams art,proc\><<< +\Configure{|<thanks author date and|>} + {\par\IgnorePar\EndP \HCode{<div class="thanks" \a:LRdir>}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<div class="authors"><span class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</span></div>}} + {\par\IgnorePar\EndP \HCode{<div class="date" \a:LRdir>}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\lowercase{\HCode{</span><span class="and">}}and~% + \lowercase{\HCode{</span><span>}}} + {\HCode{<br />}} +>>> + +\<ams book\><<< +\Configure{|<thanks author date and|>} + {\par\IgnorePar\EndP \HCode{<div class="thanks" \a:LRdir>}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<div class="authors"><div class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div></div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="date" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\lowercase{\HCode{</div><div>}}} + {\HCode{<br />}} +\Css{div.addresses{ margin-top:0.5em; }} +>>> + +\<amsdtx maketitle\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="maketitle">}} + {\HCode{</div>}} + {\NoFonts\HCode{<h2 class="titleHead"\a:LRdir>}} + {\HCode{</h2>}\EndNoFonts} +\Css{div.maketitle {text-align:center;}} +>>> + +%%%%%%%%%%%%%%%% +\subsection{llncs} +%%%%%%%%%%%%%%%% + +\<configure html4 llncs\><<< +\Configure{email} + {\HCode{<span class="email">}} + {\HCode{</span>}} +\Configure{institute} + {\HCode{<div class="institute">}} + {\HCode{</div>}} +>>> + + + +%%%%%%%%%%%%%%%% +\subsection{aa} +%%%%%%%%%%%%%%%% + +\<configure aa 3.2/4.0t\><<< +\Configure{subtitle institute} + {\HCode{<br /><span class="subtitle">}}{\HCode{</span>}} + {\HCode{<div class="institute">}}{\HCode{</div>}} + {\Tg<sup>}{\Tg</sup>} + {\HCode{<br />}} + +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div style="text-align:center;" >}} + {\HCode{</div>}} + {\NoFonts\IgnorePar \HCode{<h2 class="maketitleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Configure{|<thanks author date and|>} {}{} + {\HCode{<div class="author" style="text-align:center;" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" style="text-align:center;" \a:LRdir>}}{\HCode{</div>}} + {\SPAN:{and}and\EndSPAN:} + {\HCode{<br />}} +\Css{div.maketitle {text-align:center;}} +>>> + +\<configure aa 3.2/4.0t\><<< +\ConfigureEnv{abstract} + {\:xhtml{\IgnorePar\EndP}\HCode {<div class="abstract">}} + {\HCode{</div>}}{}{} + +\Css{div.abstract{text-align:center;}} + +\Configure{makeheadbox} + {\HCode{<table class="makeheadbox" + width="100\%"><tr><td><table><tr><td>}} + {\HCode{</td></tr><tr><td>}} + {\HCode{</td></tr><tr><td>}} + {\HCode{</td></tr></table></td><td class="AALogo" width="10\%">}} + {\HCode{</td></tr></table>}} +\Css{.AALogo{font-size:120\%;font-weight: bold; text-align:right;}} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{MWC} +%%%%%%%%%%%%%%%% + +\<mwcls configs\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE 2|>% + \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{div.maketitle {text-align:center;}} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; }} +\:CheckOption{fn-in}\if:Option + \Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} + +\else + \Configure{thanks author date and} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="date" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +\Css{div.author{white-space: nowrap;}} + +\fi +>>> + + +%%%%%%%%%%%%%%%% +\subsection{scr} +%%%%%%%%%%%%%%%% + +\<configure html4 scrbook\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE 3|>% + \HCode{<div class="maketitle">}} + {\HCode{</div>}} + {\IgnorePar \EndP + \NoFonts\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +|<maketitle footnote|> +|<scr title page|> +>>> + + +\<configure html4 scrreprt\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE 3|>%% + \HCode{<div class="maketitle">}} + {\HCode{</div>}} + {\IgnorePar \EndP + \NoFonts\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +|<scrreprt maketitle footnote|> +|<scr title page|> +>>> + + +\<scr title page\><<< +\ConfigureEnv{titlepage} + {\bgroup + \ifvmode \IgnorePar\fi \EndP + \HCode{<div class="titlepage">}% + \ConfigureEnv{center}{}{}{}{}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}% + \egroup} + {} {} +\Configure{dedication} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="dedication" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} +\Css{div.dedication {text-align:center;}} +>>> + + +%%%%%%%%%%%%%%%% +\subsection{ACM} +%%%%%%%%%%%%%%%% + + +\<configure html4 acm-proc-article-sp\><<< +\Configure{toappear} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="toappear">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +\Configure{boilerplate} + {\HCode{<div class="boilerplate">}} {\HCode{</div>}} +\Configure{conf} + {\HCode{<div class="conf">}} {\HCode{</div>}} +\Configure{confinfo} + {\HCode{<div class="confinfo">}} {\HCode{</div>}} +\Configure{copyrightetc} + {\HCode{<div class="copyrightetc">}} {\HCode{</div>}} +>>> + +\<configure html4 acm-proc-article-sp\><<< +\Configure{thanks} + {\IgnorePar\HCode{<div class="thanks">}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}\IgnoreIndent} +\Css{div.thanks{text-align:left; margin-top:1em; margin-bottom:1em;}} +\Configure{subtitle} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h4 class="subtitleHead"\a:LRdir>}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</h4>}\IgnoreIndent} +\Css{.subtitleHead{text-align:center;}} +\Configure{title} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h3 class="titleHead"\a:LRdir>}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</h3>}\IgnoreIndent} +\Css{.titleHead{text-align:center;}} +\Configure{email}{\HCode{<span class="email">}\IgnorePar\o:email:{#1}\HCode{</span>}} +\Configure{@TITLE}{\let\titlenote=\:gobble} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>} + {} +\Configure{author} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<div class="author">}\ShowPar\par} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}\IgnoreIndent} +\Css{div.author{text-align:center; margin-top:1em; margin-bottom:1em;}} +>>> + + + +\begin{verbatim} +\documentclass{sig-alternate} +\begin{document} +\title{My Title} +\numberofauthors{1} +\author{\alignauthor Alice Smith and Robert Lu\\ + \email{"Alice Smith" <alice@somewhere.com>}\\ + \email{\{alice, bob\}@somewhere.com}\\ + \email{alice@somewhere.com, bob@somewhere.com} +} +\maketitle +\end{document} +\end{verbatim} + +%%%%%%%%%%%%%%%% +\subsection{APA} +%%%%%%%%%%%%%%%% + +\<apa maketitle\><<< +\Configure{affil} + {\HCode{<div class="affil">}\bgroup + |<apa maketitle br cr|>% + } + {\egroup \HCode{</div>}} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="maketitle">}\bgroup + |<apa maketitle no-br cr|>% + } + {\egroup\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\apa:title} {\apa:endtitle} +\def\apa:title{\NoFonts\IgnorePar + \HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar + \global\let\apa:title=\empty } +\def\apa:endtitle{\HCode{</h2>}\IgnoreIndent\EndNoFonts + \global\let\apa:endtitle=\empty } +>>> + + +\<apa maketitle br cr\><<< +\Configure{centercr} + {\ht:special{t4ht=<br />}} + {\ht:everypar{\ht:everypar{\HtmlPar}}} +>>> + +\<apa maketitle no-br cr\><<< +\Configure{centercr} + {} {\ht:everypar{\ht:everypar{\HtmlPar}}}% +>>> + + +%%%%%%%%%%%%%%%% +\subsection{Shared} +%%%%%%%%%%%%%%%% + + + +\<title for TITLE\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection |<disable latex fonts|>\let\thanks|=\:gobble +\def\TeX{TeX}% +\def\mbox{\hbox}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\def\footnotemark[##1]{}% +\Tag{TITLE+}{\@title}} +>>> + + +Removed \@\let\\\space@ from the above due to cases like the following one. + +\begin{verbatim} +\documentclass{article} +\begin{document} +\title{a\\[3ex]b} +\maketitle +\end{document} +\end{verbatim} + + +Old latex files need \verb'\no:fonts', but not new ones.---wrong, as far as writing to toc in 0.0? + +\<ams title for TITLE\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection |<disable latex fonts|>\let\thanks|=\:gobble +\let\\|=\space \def\TeX{TeX}% +\def\mbox{\hbox}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\def\footnotemark[##1]{}% +\Tag{TITLE+}{\shorttitle}} +>>> + + + +\<disable latex fonts\><<< +\let\leavevmode|=\empty \let\not@math@alphabet|=\:gobbleII +\def\text@command##1{##1}\let\selectfont|=\empty +\def\check@icl ##1\check@icr{}% +>>> + +\<title for TITLE 2\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection \let\leavevmode\empty \let\not@math@alphabet\:gobbleII +\def\text@command##1{##1}\let\selectfont\empty +\def\check@icl ##1\check@icr{}% +\let\thanks\:gobble +\def\mbox{\hbox}% +\let\\\space \def\TeX{TeX}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\def\footnotemark[##1]{}% +\def\a:ttl##1##2//{##1//}% +\let\large=\empty +\let \bf=\empty +\let \centering=\empty +\def \ignorespaces##1\vskip##2//{##1}% +\Tag{TITLE+}{\@title//}% +}% +>>> + +\<title for TITLE 3\><<< +{\Configure{maketitle}{}{}{}{}% +\a:NoSection \let\leavevmode\empty \let\not@math@alphabet\:gobbleII +\def\text@command##1{##1}\let\selectfont\empty +\def\check@icl ##1\check@icr{}% +\let\thanks\:gobble +\def\mbox{\hbox}% +\let\\\space \def\TeX{TeX}% +\def\gobble:font##1##2{##2}\:TITLE: \no:fonts +\Tag{TITLE+}{\@title}}% +>>> + + + +%%%%%%%%%%%%%%%% +\section{Abstracts} +%%%%%%%%%%%%%%%% + +\<apa abstract\><<< +\Configure{abstract} + {\HCode{<div class="abstract">}\bgroup + |<apa maketitle br cr|>% + } + {\egroup \HCode{</div>}} +\Css{div.abstract{text-align:left; margin-left:10\%; margin-top:1em; }} +>>> + + + + + +%%%%%%%%%%%%%%%% +\section{Math} +%%%%%%%%%%%%%%%% + + + + +Don't put \verb'\:xhtml{\IgnorePar\EndP}' on the following; \verb'\PicDisplay' +should handle it. + + + +\<configure html4-math latex\><<< +\Configure{[]} + {\bgroup + \protect\nested:math + \PicDisplay + $$\everymath{}\everydisplay{}} + {$$\EndPicDisplay \egroup |<try inline par|>} +\Configure{()}{\bgroup + \protect\nested:math + \protect\PicMath + $} + {$ \protect\EndPicMath \egroup} +\def\nested:math{|<nested pic math|>} +>>> + +The above should be sensitive to cases like the following one. + +\begin{verbatim} +\[ \parbox[t]{2in} { \[.\] }\] +\end{verbatim} + + +\<nested pic math\><<< +\def\[{\bgroup \def\]{$$\egroup}$$}% +\def\({\bgroup \def\){$\egroup}$}% +>>> + + + + +\<configure html4-math latex\><<< +\Configure{@TITLE}{\Configure{()}{$}{$}} +>>> + +\<configure html4-math th4\><<< +\:CheckOption{th4}\if:Option + \Configure{[]} + {\PicDisplay $$\everymath{}\everydisplay{}} + {$$\EndPicDisplay |<try inline par|>} + \Configure{()}{\PicMath$}{$\EndPicMath} +\fi +>>> + + + + +\<picmath plain,latex\><<< +\Configure{$$}{\:xhtml{\EndP}\PicDisplay}{\EndPicDisplay} + {\everymath{}\everydisplay{}} +|<pic math formulas|> +|<pic math + tex formulas|> +>>> + +\<pic math formulas\><<< +\:CheckOption{pic-m} \if:Option + \Configure{$}{\PicMath}{\EndPicMath}{} +\else + \Log:Note{for pictorial $...$ environments, + use the command line option `pic-m' (not recommended!!)} +\fi +>>> + +\<pic math + tex formulas\><<< +\:CheckOption{pic-m+} \if:Option + \def\Alt:Math#1${\tmp:toks{$#1$}% + \Picture*[|<pic math alt|>]{ style="text-align:middle"}$#1$\EndPicture$} + \def\Alt:Display#1$${\tmp:toks{$$#1$$}% + \Picture*[|<pic math alt|>]{}$$#1$$\EndPicture$$} + \def\Alt:lMath#1\){\tmp:toks{\(#1\)}% + \Picture*[|<pic math alt|>]{ style="text-align:middle"}$#1$\EndPicture} + \def\Alt:lDisplay#1\]{\tmp:toks{\[#1\]}% + \Picture*[|<pic math alt|>]{}$$#1$$\EndPicture} + \Configure{$}{}{}{\expandafter\Alt:Math} + \Configure{$$}{}{}{\expandafter\Alt:Display} +% \Configure{()}{\Alt:lMath}{} +% \Configure{[]}{\Alt:lDisplay}{} +\else + \Log:Note{for pictorial $...$ and + $$...$$ environments with latex alt, + use the command line option `pic-m+' (not safe!!)} +\fi +>>> + + +\<configure html4 latex\><<< +\def\PictureAltex{\afterassignment\set:Img\tmp:toks} +\def\set:Img{\Picture*[|<pic math alt|>]{}\the\tmp:toks\EndPicture} +>>> + +\<pic math alt\><<< +\special{t4ht*=&&}% +\special{t4ht*=""}% +\special{t4ht*=<<}% +\special{t4ht*=>>}% + \HCode{\the\tmp:toks}% +\special{t4ht*=}% +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Cross References} +%%%%%%%%%%%%%%%%%% + +\<configure html4 latex\><<< +\Configure{pageref} + {\HCode{<span class="pageref">}} + {\HCode{</span>}} + {\S} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Theorems} +%%%%%%%%%%%%%%%%%% + + +\<configure html4 latex\><<< +\Configure{newtheorem} + {\ifvmode\IgnorePar\fi\EndP + \HCode{<div class="newtheorem">}\par\noindent\HCode{<span + class="head">}} + {\HCode{</span>}} + {\ifvmode\IgnorePar\fi\EndP\HCode{</div>}\par\indent\ShowPar} +\Css{div.newtheorem { margin-bottom: 2em; margin-top: 2em;}} +>>> + +\<acm proof\><<< +\Configure{proof} + {\ifvmode\IgnorePar\fi\EndP + \HCode{<div class="proof">}\par\noindent\HCode{<span + class="head">}} + {\HCode{</span>}} + {\:xhtml{\EndP}\IgnorePar\HCode{</div>}\ShowPar\par} +\Css{div.proof { margin-bottom: 2em; margin-top: 2em;}} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Features} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%% +\section{Javascript: Pop-ups On Mouse Over} +%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%% +\subsection{Background} +%%%%%%%%%%%%%%%% + + +There are 6 supporting dvi variations of the +`CopyTo to-file op group' + dvi command: + +\begin{description} +\item[From] Start copying (at current address) +\item[Until] End copying (at current address) +\item[Skip] Start skipping (from current address) +\item[Cont] End skipping (at current-address) +\item[Addr integer-label] Associate current + address with the integer-label of the given group +\item[Set integer-label] + Replace the `current address' in the following Skip/Cont (and + From/Until ?) commands with the address associated to the + integer-label of the given group by an Addr command +\end{description} + +The code +\begin{verbatim} +B0 + \ht:special {t4ht@DCopyTo: \jobname-js.tex From bib } +B1 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Skip bib } +B2 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Addr1 bib } +B3 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Addr2 bib } +B4 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Set1 bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Cont bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Set2 bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Skip bib } +B5 +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until bib } +B6 +\end{verbatim} + +produces the string ` B1 B3 '. + + +%%%%%%%%%%%%%%%% +\subsection{End Points of the Jobname-js.tex File} +%%%%%%%%%%%%%%%% + + + +\<start js\><<< +\js:on +>>> + + + +\<onmouseover utilities\><<< +\def\js:on{% + \global\let\js:on=\relax + \HCode{<!--}% + |<js From js|>% + \HCode{\string\def\string\jstoday{\:today} }% + \HCode{\string\input\space onmouseover.4ht }% + \:CheckOption{trace-onmo} \if:Option + \HCode{<js trace="on">}% + \else + \Log:Note{for mouseover tracing of + compilation, use the command line option `trace-onmo'} + \HCode{<js>}% + \fi + |<js Until js|>% + \HCode{-->}% + |<end js|>} +>>> + + +\<end js\><<< +\csname a:mouseover-Needs\endcsname +\Css{.js {text-indent:0; background-color:aqua; color:black; + border:solid 1px black; margin:2pt; width:99\%;}} +\Css{.js p, .|<js p.bibitem css|>, |<js p.bibitem-p css|> {text-indent:0; + background-color:aqua; color:black; margin:2pt;}} +\AtEndDocument{{\HCode{<!--}% + |<js From js|>% + \HCode{</js>}% + |<js Until js|>% + \HCode{-->}}}% +>>> + + +Was \verb'\Css{.js p {margin:0; text-indent:0;}}' but javascript under +netscape had problems dealing with 0 left margins. + + + + +\<js From js\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex From js }% +>>> + +\<js Until js\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until js }% +>>> + + + + + +%%%%%%%%%%%%%%%% +\subsection{Configuration Commands} +%%%%%%%%%%%%%%%% + + + + +\<onmouseover utilities\><<< +\HAssign\MO:script = 0 +\NewConfigure{mouseover-script}[1]{\bgroup + \gHAdvance\MO:script by 1 + \expandafter\NextFile \expandafter{\jobname\MO:script.tmp}% + \HPage{}\IgnorePar |<js From var|>% + \HCode{<\if !#1!\else mouseover-script\fi>#1\if !#1!\else =\fi}% + \everyvbox{\IgnorePar\everyvbox{}\aftergroup\end:movar}% + \def\end:movar{\everyvbox{}\HCode + {</\if !#1!\else mouseover-script\fi>}% + |<js Until var|>\EndHPage{}% + \egroup}% + \vbox} +>>> + +\<ol-hauto mouseover-script\><<< +\Configure {mouseover-script}{}{\HCode{ol\string_hauto = 1;}}% +>>> + + +\<js From var\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex From var }% +>>> + +\<js Until var\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until var }% +>>> + + + + +\<onmouseover utilities\><<< +\expandafter\def\csname c:mouseover-vars:\endcsname#1#2{% + \expandafter\def\csname mouseover-#1-init\endcsname##1{}% + \def\:tempc##1{\expandafter\append:defI\csname + mouseover-#1-init\endcsname{tex4ht.##1=tex4ht.\expandafter\jsHash + \expandafter{\expandafter v####1.##1};}}% + \Mo:vars#2,<>} +\def\Mo:vars#1,#2<>{% + \if !#1!\else + \expandafter\def\csname mo#1\endcsname##1{% + \HCode{<!--}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex From #1 }% + \HCode{<#1-var>\jsHash{v##1.#1}=}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Skip #1 }% + \HCode{-->}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Cont #1 }% + }% + \expandafter\def\csname endmo#1\endcsname{% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Skip #1 }% + \HCode{<!--}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Cont #1 }% + \HCode{</#1-var>}% + \ht:special{t4ht@DCopyTo: \jobname-js.tex Until #1 }% + \HCode{-->}% + }% + \:tempc{#1}% + \fi + \if !#2!\else \expand:after{\Mo:vars#2<>}\fi +} +>>> + + + + +%%%%%%%%%%%%%%%% +\subsection{Footnotes Contributions} +%%%%%%%%%%%%%%%% + + + + +\<js From fn\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex From fn }% +>>> + +\<js Skip fn\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Skip fn }% +>>> + +\<js Cont fn\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Cont fn }% +>>> + +\<js Until fn\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until fn }% +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Overlib} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\Link[http://www.egroups.com/group/overlib]{}{}egroup for overlib\EndLink, +\Link[http://www.bosrup.com/web/overlib/]{}{}home over overlib\EndLink + + +\<overDiv\><<< +\HCode{<div id="overDiv" + style="position:absolute; + visibility:hidden; z-index:1000;"></div> +}% +>>> + + +\<onmouseover @HEAD\><<< +\Configure{@HEAD} + {\HCode{%|% natural place for <overlib src>, but netscape 4.7...|% + <script type="text/javascript" + src="\jobname-js.js"></script>\Hnewline + |<overlib src|>}} +|<onmouseover utilities|> +\:CheckOption{info} \if:Option + |<overlib info|> +\fi +>>> + + +\<overlib info\><<< +\Log:Note{Option `mouseover' is powered + by the overlib.js utility of Erik Bosrup + (http://www.bosrup.com/web/overlib/).} +\immediate\write-1{} +\immediate\write-1{The option requires two compilations of + the source file.} +\immediate\write-1{} +\immediate\write-1{Use \string\Configure + {mouseover-XXX}{...} to introduce extra arguments into the overlib + function call `return overlib(...)'. XXX stands for + `cite', `footnote', or 'gloss'. The default body is at tex4ht.body, + and the default caption at tex4ht.caption. An empty parameter + requests no sensitivity of the mouse for the + specified type of entries.} +\immediate\write-1{} +\immediate\write-1{The variant \string\Configure + {mouseover-XXX}[labels]{...} of the above command restricts the + outcome just to the listed labels (i.e., the values listed + in tex4ht.caption).} +\immediate\write-1{} +\immediate\write-1{The \string\Configure{mouseover-script}{variable-name} + {javascript-code} command may be used to introduce code into the + javascript file, as a content of a global variable when a name is + given and as a bare code when the name is not given. To be referenced, + the name must be prefixed by ``tex4ht.'.} +\immediate\write-1{} +\immediate\write-1{The \string\Configure{mouseover-vars}{XXX} + {variable-list} command introduces local variables, to be referenced + with the prefix ``tex4ht.' on their names. In addition, for each + variable YYY it introduces a construct \string\moYYY + {label}...\string\endmoYYY\space for selecting a value for the variable + at the specified label.} +\immediate\write-1{} +\immediate\write-1{Example:} +\immediate\write-1{ + \string\Configure{mouseover-script}{var}{\HCode{<hr />}}} +\immediate\write-1{|<mouseover cite config|>} +\immediate\write-1{|<mouseover cite css|>.} +\immediate\write-1{ + \string\moAuthor{bb}A name\string\endmoAuthor } +\immediate\write-1{} +\immediate\write-1{The compilation indirectly invokes the + command 'xhtex \string\jobname-js'. An alternative format for + the command can be requested within a configuration of + the form \string\Configure{mouseover-Needs}{\string\Needs{"..."}}. + The default setting is due to + \string\Configure{mouseover-Needs}{\string\Needs{"xhtex + \string\jobname-js"}}} +\immediate\write-1{In case \string\Configure{mouseover-Needs} is + undefined, introduce the instruction + \string\NewConfigure{mouseover-Needs}{1} before that command. +} +>>> + +\<onmouseover utilities\><<< +\expandafter\ifx \csname mouseover-Needs\endcsname\relax + \NewConfigure{mouseover-Needs}{1} + \Configure{mouseover-Needs}{\Needs{"mk4ht xhtex \jobname-js"}} +\fi +\def\mo:args#1#2#3{\expandafter + \ifx \csname a:mouseover-#1-#2\endcsname\empty\else + \expandafter \ifx \csname a:mouseover-#1-#2\endcsname\relax + |<global mouseover-type|>\else + |<private mouseover-type|>\fi\fi} +>>> + +\<global mouseover-type\><<< +\expandafter \ifx \csname a:mouseover-#1\endcsname\empty + \else + \Hnewline + onmouseover="tex4ht.body=tex4ht.#3; tex4ht.caption='#2'; + |<init mouseover vars|>% + return overlib(\csname a:mouseover-#1\endcsname);" + \Hnewline onmouseout="nd();"\Hnewline\fi +>>> + +\<private mouseover-type\><<< +\Hnewline + onmouseover="tex4ht.body=tex4ht.#3; tex4ht.caption='#2'; + |<init mouseover vars|>% + return overlib(\csname a:mouseover-#1-#2\endcsname);" +\Hnewline onmouseout="nd();"\Hnewline +>>> + +\<init mouseover vars\><<< +\expandafter\ifx \csname mouseover-#1-init\endcsname\relax + \else \csname mouseover-#1-init\endcsname{#2}\fi +>>> + + + +%%%%%%%%%%%%%%%% +\subsection{Boundary Cases for mouseover} +%%%%%%%%%%%%%%%% + + + + +\<DOCTYPE in PROLOG under mouseover\><<< +\:CheckOption{xhtml} \if:Option \else + \:CheckOption{DOCTYPE} \if:Option + \Log:Note{to request a DOCTYPE declaration + use the command line option `DOCTYPE'} + \else + \edef\Preamble{\Preamble,no-DOCTYPE} + \fi +\fi +>>> + + + + + +\<overlib src\><<< +<script type="text/javascript" src="overlib.js"><!-- overLIB (c) Erik Bosrup --></script> +<!--https://github.com/overlib/overlib-->% +>>> + + + +% <script language="JavaScript" src="overlib.js" +% type="text/javascript" ></script>\Hnewline + + +\begin{itemize} +\item +\begin{verbatim} +THE DOCUMENT DECLARATION GIVES TROUBLE IN CONNECTION WITH OVERLIB. It +would be hardly noticeable in small pages, requiring no scrolling - +the only symptom then is that the browser suddenly warns about errors +- those ones in overlib, and as a matter of fact, apparently in the +part of the script that ensures compatibility with Netscape. However, +in a large page, the pop-ups seem to disappear - making them STICKY +and scrolling up, one can find them in the upper right corner. One +has only to remove <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 +Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> however, to +put an end to the browser complaints and get back the pop-ups into +their proper places. \end{verbatim} + +\item +\begin{verbatim} + I +have just found a reference to the trouble, together with a very easy +way to go round it: it is enough to add <?xml version="1.1"?> BEFORE +the Document declaration. I have checked it, and it is all right - +both for Explorer6 and Netscape 4.7 and 6. + +By the way: for the Mouseover option to work under Netscape4.x, the call to +<script type="text/JavaScript" src="overlib.js"></script> +<!--http://www.bosrup.com/web/overlib/ (Erik Bosrup)--> +MUST appear in the <BODY> section, NOT in the <HEAD>: absurd, but true (it +is reported in Overlib's page). +\end{verbatim} + +\end{itemize} + + +%%%%%%%%%%%%%%%% +\subsection{The Configuration File onmouseover.4ht} +%%%%%%%%%%%%%%%% + + + + +\<onmouseover.4ht\><<< +\ifnum\the\catcode`\%=14\else\expandafter\edef\csname + \string:RestoreCatcodes\endcsname{\catcode`\%|=\the + \catcode`\%}\catcode`\%|=14\fi +% onmouseover.4ht (|version), generated from |jobname.tex +% Copyright 2009-2015 TeX Users Group +% Copyright |CopyYear.2001. Eitan M. Gurari +|<TeX4ht copywrite|> + +\hbadness=10000 \vbadness=10000 \hfuzz=99in \vfuzz=\hfuzz +\overfullrule=0pt \let\makefootline\empty +\special{t4ht.js} + +\newcount\CodeNumber +\def\NoSpecials#1#2#3{\edef\temp{\the\CodeNumber}% + \global\CodeNumber=#3 + \def\next{\catcode\CodeNumber=#1 + \ifnum \CodeNumber=#2 \let\next=\relax \fi + \global\advance\CodeNumber by -1 \next}\next + \global\CodeNumber=\temp }% + +\expandafter\def\csname js js\endcsname{\egroup \special{t4ht@@}% + tex4ht=new Array() ; //\jstoday} +\expandafter\def\csname js js trace="on"\endcsname{\global + \let\TagTrace=\empty \csname js js\endcsname} +\expandafter\def\csname js /js\endcsname{\egroup \special{t4ht@@}% + \csname bye\endcsname\endinput} + +|<hash for onmouseover.4ht|> +|<escape backslashes|> +\catcode`\<=13 +\def\jselement#1{\expandafter\def\csname js #1\endcsname##1=##2</#1>{% + \hfill\break tex4ht.\jsHash{##1}=\hbox{"##2";}\egroup}} +|<escape double quotes|> +\expandafter\def\csname js \endcsname#1</>{% + \hfill\break \hbox{#1}\egroup} + +\def<#1>{\bgroup + \expandafter \ifx \csname js #1\endcsname \relax \jselement{#1}\fi + \def<##1>{\TagTrace{\def\x{##1}\def\y####1:->{}% + \writesixteen{...\string<\expandafter\y\meaning\x>}}% + \string<\scan ##1"<>>}% + \NoSpecials{12}{0}{255}\NoSpecials{11}{65}{90}\NoSpecials{11}{97}{122}% + \catcode`\ =10 \catcode`\^^M=10 \catcode`\^^I=10 \catcode`\<=13 + \catcode`\\=13 + \tt \csname js #1\endcsname} +\def\TagTrace#1{} +\catcode`\&=12 \catcode`\#=12 +\endinput +>>> + +\<escape double quotes\><<< +\def\scan#1"#2<>{#1\if !#2!\expandafter\done\else + \string\"\expandafter\scan +\fi#2<>} +\def\done#1>{} +>>> + +\<escape backslashes\><<< +\catcode`/=0 \catcode`\\=13 +/def\{/string\/string\} +/catcode`/\=0 \catcode`\/=12 +>>> + + + +\<onmouseover utilities\><<< +\def\jsHash#1{\jsHash:a #1<>} +\def\jsHash:a#1#2<>{% + \ifnum `#1<`0 JjV\else + \ifnum `#1>`z jJv\else + \ifnum `#1>`9 + \ifnum `#1<`A jJV\else + \ifnum `#1>`Z + \ifnum `#1<`a jVV\else #1\fi + \else #1\fi\fi + \else #1\fi\fi\fi + \if !#2!\expandafter\done:hash + \else\expandafter\jsHash:a\fi#2<>} +\def\done:hash#1>{} +>>> + +\<hash for onmouseover.4ht\><<< +\def\jsHash#1{\jsHasha #1<>} +\def\jsHasha#1#2<>{% + \ifnum `#1<`0 JjV\else + \ifnum `#1>`z jJv\else + \ifnum `#1>`9 + \ifnum `#1<`A jJV\else + \ifnum `#1>`Z + \ifnum `#1<`a jVV\else #1\fi + \else #1\fi\fi + \else #1\fi\fi\fi + \if !#2!\expandafter\done + \else\expandafter\jsHasha\fi#2<>} +>>> + + + +\<onmouseover utilities\><<< +\expandafter\Odef\csname c:mouseover-?:\endcsname[#1]#2{% + \def\:temp{#2}% + \if !#1!\expandafter\let\csname a:mouseover-\:tempb\endcsname=\:temp + \else \om:type#1,|<par del|>\fi} +\def\om:type#1,#2|<par del|>{% + \if !#1!\else\expandafter + \let\csname a:mouseover-\:tempb-#1\endcsname=\:temp\fi + \ifx !#2!\else \def\:tempa{\om:type#2|<par del|>}\expandafter\:tempa \fi +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Formats} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%% +\section{latex.ltx} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 latex\><<< +|<0,32,4 plain,latex|> +|<32,4 plain,latex|> +|<config plain,latex|> +|<32,4 latex|> +|<4 latex|> +|<0,32,4 latex|> +|<latex ltsec|> +|<latex lttab|> +|<latex ltbibl|> +|<latex ltoutenc|> +|<latex ltfloat (footnotes)|> +% \:CheckOption{javahelp} \if:Option +% \input javahelp.4ht +% \else +% \Log:Note{for a JavaHelp output format, +% use the command line option `javahelp'} +% \fi +>>> + +\<latex lttab\><<< +\Configure{extracolsep} + {~\tmp:dim=#1\relax\ifdim \tmp:dim>1em ~\fi} +>>> + + + +\<configure html4-math amsmath\><<< +\Configure{tmspace} + {\ifdim \textspace>0.2em + \HCode{<span style="margin-left:\textspace" class="tmspace">}% + \else \HCode{<span style="margin-left:0.3em" class="thinspace">}\fi + \HCode{</span>}% + } +>>> + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltplain.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{obeylines} + +\<config plain,latex\><<< +\Configure{obeylines} + {\ifvmode \:xhtml{\IgnorePar\EndP}\IgnoreIndent + \HCode{<div class="obeylines-v">}% + \gdef\ob:ln{\ht:special{t4ht=</div>}}% + \else + \SaveEndP \HCode{<span class="obeylines-h">}% + \gdef\ob:ln{\ht:special{t4ht=</span>}\RecallEndP}% + \fi + } + {\EndP\ob:ln\ShowPar} + {\hbox{\HCode{<br />}}} +\Css{.obeylines-h,.obeylines-v {white-space: nowrap; }} +\Css{div.obeylines-v p { margin-top:0; margin-bottom:0; }} +>>> + %%%%%%%%%%%%%%%%%%%%%%% + % ltspace.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Spaces} + +\<32,4 latex\><<< +\Configure{hspace}{}{}{\:nbsp} +>>> + + %%%%%%%%%%%%%%%%%%%%%%% + % ltlogos.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Logos} +\<config plain\><<< +|</TeX for 4.0t|> +>>> + + +\</TeX for 4.0t\><<< +\:CheckOption{fancylogo}\if:Option +\def\TeX{\HCode{<span class="TEX">}T\HCode{<span\Hnewline + class="E">}E\HCode{</span>}X\HCode{</span>}} +\Css{span.TEX {letter-spacing: -0.125em; margin-right:0.125em;}} +\Css{span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}} +\Css{a span.TEX span.E {text-decoration: none; }} +\else +\def\TeX{TeX} +\fi +>>> + +\verb'\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}' + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltfssini.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{tt Font} + +\<0,32,4 latex\><<< +\ifx \ttfamily\:UnDef \else \Configure{tt}{\ttfamily} \fi +>>> + + %%%%%%%%%%%%%%%%%%%%%%% + % ltxref.dtx + %%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Cross References} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<32,4 latex\><<< +\Configure{ref} + {\Link} + {\ifx \RefArg\:UnDef\else + \Tg<!--tex4ht:ref: \RefArg\space-->\fi\EndLink} + {} +>>> + +The comments lets us relate the automatically created label with that +offered by the user. The space is needed for cases that the label ends with a dash. + + +\begin{itemize} +\item + LaTeX allows labels almost everywhere. +\item +Different labels may be associated to a common object in LaTex. +\item + There are almost no restrictions on the kind of characters + allowed within the labels of LaTeX. +\end{itemize} + + + + + + + + %%%%%%%%%%%%%%%%%%%%%%% + % ltmiscen.dtx + %%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Miscellaneous Environments} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<32,4 plain,latex\><<< +\def\end:TTT{\ifvmode\IgnorePar\fi \EndP\HCode{</td></tr></table>}} +>>> + +\<4 latex\><<< +\append:def\center{\par} +\ConfigureEnv{center} + {\ifvmode \IgnorePar\fi \EndP}{|<try env inline par|>} + {\EndP\IgnorePar + \HCode{<div class="\getClass{center}"\Hnewline>}\ShowPar\endgraf + \afterGetClass{center}} + {\IgnorePar\EndP\HCode{</div>}} +\ConfigureEnv{flushleft} + {\ifvmode \IgnorePar\fi \EndP}{|<try env inline par|>} + {\EndP\IgnorePar + \HCode{<div class="flushleft"\Hnewline>}\ShowPar\endgraf} + {\IgnorePar\EndP\HCode{</div>}} +\ConfigureEnv{flushright} + {\ifvmode \IgnorePar\fi \EndP}{|<try env inline par|>} + {\EndP\IgnorePar + \HCode{<div class="flushright"\Hnewline>}\ShowPar\endgraf} + {\IgnorePar\EndP\HCode{</div>}} +\Css{div.center, + div.center div.center {text-align: center; + margin-left:1em; margin-right:1em;}} +\NewConfigure{centerClass}{2} +\Configure{centerClass}{center}{} +\Css{div.center div {text-align: left;}} +\Css{div.flushright, + div.flushright div.flushright {text-align: right;}} +\Css{div.flushright div {text-align: left;}} +\Css{div.flushleft {text-align: left;}} +>>> + + + + +\<32,4 latex\><<< +\ConfigureEnv{verbatim}{\env:verb{verbatim}}{\endenv:verb}{}{} +\ConfigureEnv{verbatim*}{\env:verb{verbatim}}{\endenv:verb}{}{} +\HAssign\verbatimN 0 +\def\env:verb#1{\ifinner\else \vfill\break\fi + \IgnorePar\EndP \HAssign\Verb:N=0 + \gHAdvance\verbatimN by 1 + \HCode{<pre class="#1" id="verbatim-\verbatimN"\a:LRdir>}\EndNoFonts} +\def\endenv:verb{\NoFonts + \EndP \ht:special{t4ht=</pre>}|<try inline par|>} +\HAssign\Verb:N=0 +\Css{pre.verbatim {font-family: monospace,monospace; + text-align:left; + clear:both; + }} +>>> + + + + + +\<configure html4 latex\><<< +\Configure{verbatim} + {\HCode{}} + {\a:sp} +\Configure{verb} + {\HCode{<span class="verb"\a:LRdir>}} + {\HCode{</span>}} +>>> + + + +The \verb+\:nbsp+ above is because lynx collapses +consecutive \verb+<br />+ tags. + + + + +\<configure html4 latex\><<< +\Configure{centercr}{\ht:special{t4ht=<br />}} + {\ht:everypar{\ht:everypar{\HtmlPar}}} +>>> + + + % ltmath.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Math Setup} + +\<configure html4-math latex\><<< +\:CheckOption{pic-equation}\if:Option + \Configure{equation} + {\:xhtml{\ifvmode \IgnorePar\fi\EndP}% + \HCode{<table\Hnewline class="equation"><tr><td>}\IgnorePar + \Configure{$$}{\PicDisplay}{\EndPicDisplay} + {\everymath{}\everydisplay{}} + } + {\ifvmode \IgnorePar\fi\HCode{</td><td class="equation-label">}} + {\end:TTT |<try inline par|>} |% was: \IgnorePar\par|% +\else + \Configure{equation} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<table\Hnewline class="equation"><tr><td>}\IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP\HCode{</td><td class="equation-label">}} + {\end:TTT\ifmmode\else |<try inline par|>\fi} +\fi +\Css{table.equation {width:100\%;}} +\Css{.equation td{text-align:center; }} +\Css{td.equation { margin-top:1em; margin-bottom:1em; } } +\Css{td.equation-label { width:5\%; text-align:center; }} +>>> + +\<configure html4-math latex\><<< +|<pic plain/latex math 4.0t|> +\:CheckOption{pic-eqnarray} \if:Option + |<PIC eqnarray Config|> +\else |<TABLE eqnarray Config 4.0t|>\fi +>>> + + +\<PIC eqnarray Config\><<< +\ConfigureEnv{eqnarray} + {\IgnorePar\EndP\Tg<div class="pic-eqnarray">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +\Css{div.pic-eqnarray {text-align:center;}} +\ConfigureEnv{eqnarray*} + {\IgnorePar\EndP\Tg<div class="pic-eqnarray-star">\Picture*{}} + {\EndPicture\Tg</div>}{}{} +\Css{div.pic-eqnarray-star {text-align:center;}} +>>> + +\<TABLE eqnarray Config 4.0t\><<< +\Log:Note{for pictorial eqnarray, + use the command line option `pic-eqnarray'} + +\Configure{eqnarray}{\HCode{<table\Hnewline + class="eqnarray\ifx \@seqncr\@eqncr\else-star\fi ">}} + {\HCode{</table>}} + {\HCode{<tr style="vertical-align:middle;" + class="eqnarray\ifx \@seqncr\@eqncr\else-star\fi">}} + {\HCode{</tr>}} + {\HCode{\ifnum \HCol=4 <td\Hnewline width="10" + class="eqnarray4"></td>\fi + <td\Hnewline style="text-align:\ifcase\HCol \or right\or center\or + left\else right\fi ; white-space:nowrap;"\Hnewline + class="eqnarray\HCol">}} + {\EndP\HCode{</td>}} +\Css{td.eqnarray4 { width:5\%; white-space: normal; }} +\Css{td.eqnarray2 { width:5\%; }} +\Css{table.eqnarray-star, table.eqnarray {width:100\%;}} +>>> + +\<TABLE eqnarray Config 4.0t\><<< +\ConfigureEnv{eqnarray} + {\ifvmode\IgnorePar\fi\EndP\HCode{<div class="eqnarray">}} + {\ifvmode\IgnorePar\fi\EndP\HCode{</div>}\par}{}{} +\ConfigureEnv{eqnarray*} + {\ifvmode\IgnorePar\fi\EndP\HCode{<div class="eqnarray">}} + {\ifvmode\IgnorePar\fi\EndP\HCode{</div>}\par}{}{} + +\Css{div.eqnarray{text-align:center;}} +>>> + %%%%%%%%%%%%%%%%%%%%%%% + % lttab.dtx + %%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Tabbing, Tabular and Array Environments} + +\<configure html4 latex\><<< +\:CheckOption{no-array}\if:Option \else + |<html latex array/tabular Config 4.0t|> +\fi +>>> + + +\<configure html4-math latex\><<< +\:CheckOption{no-array}\if:Option \else + |<math html latex array/tabular|> +\fi +>>> + +\<32,4 picmath latex\><<< +\:CheckOption{pic-array} \if:Option + \ConfigureEnv{array} + {\IgnorePar\EndP\Tg<div class="pic-array">\Picture*{}$$} + {$$\EndPicture\Tg</div>}{}{} + \Css{div.pic-array {text-align:center;}} +\else + \Log:Note{for pictorial array, + use the command line option `pic-array'} +\fi +>>> + + +\<vspace body for array/tabular\><<< +\append:def\vspc:s{\h:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\vspc:s{\i:HBorder}% + \expandafter\:tempb + \fi } +\tmp:cnt|=0 \:tempb +\append:def\vspc:s{\j:HBorder}\global\let\vspc:s|=\vspc:s +>>> + +\<0,32,4 latex\><<< +\Configure{hline}{\ifx \ar:cnt\:UnDef\else + \o:noalign:{|<hline body for array/tabular|>}% + \expandafter\ignoreEndTr + \fi} +\Configure{//[]}{\ifx \ar:cnt\:UnDef + \else\o:noalign:{|<vspace body for array/tabular|>}\fi} +>>> + + + +\<hline body for array/tabular\><<< +\append:def\hline:s{\a:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\hline:s{\b:HBorder}% + \expandafter\:tempb + \fi }% +\tmp:cnt|=0 \:tempb +\append:def\hline:s{\c:HBorder}\global\let\hline:s|=\hline:s +>>> + +\<inline comment\><<< +\ifvmode\else\HCode{<!--tex4ht:inline-->}\fi +>>> + +\<html latex array/tabular Config 4.0t\><<< +\Configure{multicolumn} + {\let\col:Css\empty + \Configure{VBorder} + {} + {\edef\col:Css{\col:Css + border-\ifnum \ar:cnt=0 left\else right\fi + :solid black 0.4pt;}% + }{}{}% + } + {\ifx \col:Css\empty \else + \Css{td\#TBL-\TableNo-\HRow-\HCol{\col:Css}}% + \fi + } + {\ifvmode\IgnorePar\fi + \HCode{<div class="multicolumn" }\HColAlign\HCode{>}% + \ifx \col:Css\empty \else + \Css{td\#TBL-\TableNo-\HRow-\HCol{\col:Css}}% + \fi + } + {\ifvmode\IgnorePar\fi \EndP\HCode{</div>}} +>>> + +\<configure clear noalign\><<< +\Configure{noalign}{}{}% +>>> + +\<configure tabular noalign\><<< +\Configure{noalign}% + {\f:tabular\d:tabular \HCode{<tr><td colspan="\ar:cnt">}} + {\HCode{</td></tr>}\pend:def\TableNo{0}\c:tabular\e:tabular}% +>>> + +\<html latex array/tabular Config 4.0t\><<< +\def\pic:env{% + \def\begin##1{\bgroup + \def\end####1{\o:end:{####1}\EndPicture\egroup}% + \ifx \EndPicture\:UnDef + \Picture+{ class="##1" style="text-align:middle"}% + \else \let\EndPicture|=\empty\fi + \o:begin:{##1}}% +} +>>> + +\verb'\AllColMargins' Return a binary string in which 1 represents +a column, and 0 represents a `@'. \verb'\ColMargins' retrieves the +zeros before the 1's that represent the current and following 1's. + +\<html latex array/tabular Config 4.0t\><<< +\def\ColMargins{% + \ifx \AllColMargins\empty + \:warning{Empty \string\AllColMargins}% + \else + \tmp:cnt|=\HCol\relax + \expandafter\nosp:hbr\AllColMargins 1//% + \fi } +\def\nosp:hbr#11#2//{\ifnum \tmp:cnt>1 \advance\tmp:cnt by -1 + \nosp:hbr#2//\else\nosp:gt#11#2//\fi} +\def\nosp:gt#11#21#3//{% + \def\:temp{#1}\ifx \:temp\empty 1\else 0\fi + \def\:temp{#2}\ifx \:temp\empty 1\else 0\fi} +\Css{div.td00{ margin-left:0pt; margin-right:0pt; }} +\Css{div.td01{ margin-left:0pt; margin-right:5pt; }} +\Css{div.td10{ margin-left:5pt; margin-right:0pt; }} +\Css{div.td11{ margin-left:5pt; margin-right:5pt; }} +>>> + + +\<html latex array/tabular Config 4.0t\><<< +\Configure{halignTB<>}{tabular}{\HCode{id="TBL-\TableNo" + class="tabular"\Hnewline + \GROUPS\Hnewline + }<>\HAlign} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +\:CheckOption{pic-tabular} \if:Option \else + \Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP \halignTB{tabular}\putVBorder } + {|<insert Clr|>\HCode{</table>}} + {\HCode{<tr \Hnewline}\halignTR + \HCode{ id="TBL-\TableNo-\HRow-">}} + {\r:HA} + {\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}|<tabular td align|>% + \HCode{">}|<td save EndP|>% + |<start array par box|>\PushStack\Table:Stck\TableNo} + {|<end array par box|>\PopStack\Table:Stck\TableNo \d:HA} +\fi +|<configuring @()|> +\Css{td.td00{ padding-left:0pt; padding-right:0pt; }} +\Css{td.td01{ padding-left:0pt; padding-right:5pt; }} +\Css{td.td10{ padding-left:5pt; padding-right:0pt; }} +\Css{td.td11{ padding-left:5pt; padding-right:5pt; }} +>>> + +\<insert ClrNO\><<< +\expandafter\tmp:toks\expandafter{\Clr}% +\HCode{<!--"\the\tmp:toks"-->}% +>>> + +The quotes above hide \verb+>+ from IE within the comment. Otherwise, the +browser inappropriately get confused. + +On the other hand, the above doesn't work, for instance on +`\verb+|r||r@{--}l|p{1.25in}|+' due to the extra \verb+--+. + + +\subsection{The option @()} + + +\<configuring @()\><<< +\Configure{@{}}{} +>>> + + +\<html latex array/tabular Config 4.0t\><<< +\Configure{halignTB<>}{array}{\HCode{id="TBL-\TableNo" class="array"\Hnewline + \GROUPS\Hnewline + }<>\HAlign} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +\:CheckOption{pic-array} \if:Option \else + \Configure{array} + {\ifvmode \IgnorePar\fi \EndP\halignTB{array}\putVBorder} + {|<insert Clr|>\HCode{</table>}} + {\R:HA} + {\r:HA} + {\D:HA\HCode{<div class="td}|<tabular td align|>% + \HCode{">}|<start array par box|>\pic:env} + {|<end array par box|>\HCode{</div>}\d:HA} + \Configure{arrayparbox}{\ShowPar} +\fi +>>> + +\verb|\par| is empty if not in par box. + +\<start array par box\><<< +\par \ShowPar +>>> + +\<end array par box\><<< +\IgnorePar \EndP +>>> + + +We force border around the full table whenever a vertical line is +requested, because it makes the tables better looking within the +existing capabilities. + +Currently, we either have empty \verb'\VBorder', or one defined to +\verb'\def\VBorder{border="1"}'. + +\<html latex array/tabular Config 4.0t\><<< +\let\VBorder|=\empty \let\AllColMargins|=\empty +\Configure{VBorder} + {\let\VBorder|=\empty \let\AllColMargins|=\empty + \global\let\GROUPS|=\empty \HAssign\NewGroup = 0 + \gHAdvance\Next:TableNo by 1 \global\let\TableNo=\Next:TableNo } + {\xdef\VBorder{\VBorder\ifnum \NewGroup> 0 </colgroup>\fi} + \HAssign\NewGroup = 0 % \gdef\GROUPS{rules="groups"}} + \Css{\#TBL-\TableNo\space colgroup{border-left: 1px solid black;border-right:1px solid black;}} + \Css{\#TBL-\TableNo{border-collapse:collapse;}}} + {\Advance:\NewGroup by 1 + \ifnum \NewGroup=1 \xdef\VBorder{\VBorder<colgroup + id="TBL-\TableNo-\ar:cnt g">}\fi + \xdef\VBorder{\VBorder<col\Hnewline id="TBL-\TableNo + -\ar:cnt"\xml:empty>}\xdef\AllColMargins{\AllColMargins1}} + {\xdef\AllColMargins{\AllColMargins 0}} +\Configure{HBorder} + {<tr\Hnewline class="hline">} {<td><hr\xml:empty></td>} {</tr>} + {<tr\Hnewline class="cline">} + {<td></td>} {<td><hr\xml:empty></td>} {</tr>} + {<tr\Hnewline class="vspace" style="font-size:\HBorderspace">} + {<td\Hnewline>\string </td>} + {</tr>} +\Configure{putHBorder}{\HCode{\HBorder}} +\HAssign\Next:TableNo|=0 \global\let\TableNo=\Next:TableNo +\Css{.hline hr, .cline hr{ height : 0px; margin:0px; }} +\Css{.hline td, .cline td{ padding: 0; }} +\Css{.hline hr, .cline hr{border:none;border-top:1px solid black;}} +>>> + +When \verb'\putVBorder' is call in \verb'\VBorder' +we have a sequence of the form +\verb'<COLGROUP><COL ...">...</COLGROUP>...' with the last +tag possibly missing. + +\<html latex array/tabular Config 4.0t\><<< +\def\putVBorder{\expandafter\put:VBorder\VBorder</>|<par del|>} +\def\put:VBorder#1</#2>#3|<par del|>{\def\:temp{#2}\ifx\:temp\empty + \HCode{\VBorder}% + \def\:temp{#1}\ifx\:temp\empty \else\HCode{</colgroup>}\fi + \else \def\:temp{\put:VBorder#3|<par del|>}\expandafter\:temp\fi +} +>>> + +\<configure html4 latex\><<< +\:CheckOption{pic-tabbing} \if:Option + \ConfigureEnv{tabbing}{\Picture*{}}{\EndPicture}{}{} +\else + |<TABLE tabbing Config 4.0t|> + \:CheckOption{pic-tabbing'} \if:Option + |<PICT dot tabbing|> + \fi +\fi +>>> + +\<TABLE tabbing Config 4.0t\><<< +\Configure{tabbing}[1.5]{% + \ifvmode \IgnorePar\fi\EndP \leavevmode\ht:special{t4ht=<table + \Hnewline\:zbsp{tabbing}><tr \Hnewline style="vertical-align:baseline;" + class="tabbing">}} + {\ht:special{t4ht=</tr></table>}\ShowPar \csname par\endcsname + |<global HtmlPar|>% + } + {\ht:special{t4ht=<td \ifx \TabWidth\empty \else + style="width:\TabWidth;"\fi \Hnewline + class="tabbing\ifx \`\TabType -right\fi">}} + {\ht:special{t4ht=</td>}} +\ConfigureEnv{tabbing}{\IgnorePar\EndP}{}{}{} +\Css{.tabbing-right {text-align:right;}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%% to be placed %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{to be placed} +%%%%%%%%%%%%%%%%%%% + + + +\<4 latex\><<< +\Configure{underline} + {\HCode{<span class="underline">}\:gobble} + {\HCode{</span>}} +\Css{.underline{ text-decoration:underline; }} +\Css{.underline img{ border-bottom: 1px solid black; + margin-bottom:1pt; }} +>>> + +\<config plain\><<< +\Configure{underline} + {\HCode{<span class="underline">}\hbox\bgroup \:gobble} + {\egroup \HCode{</span>}} +\Css{.underline{ text-decoration:underline; }} +\Css{.underline img{ border-bottom: 1px solid black; + margin-bottom:1pt; }} +>>> + + + +\<config plain,latex\><<< +\Configure{overline} + {\HCode{<span class="overline">}} + {\HCode{</span>}} +\Css{.overline{ text-decoration:overline; }} +\Css{.overline img{ border-top: 1px solid black; }} +>>> + +\<0,32,4 plain,latex\><<< +\Configure{ }{\:nbsp} +>>> + + + + + + +\<0,32,4 latex\><<< +\:CheckOption{pic-framebox} \if:Option + \Configure{framebox} + {\Picture+[]{ \a:@Picture{framebox}}} {\EndPicture} +\else + \Log:Note{for bitmap framebox'es, use + the command line option `pic-framebox'} + \Configure{framebox} + {\HCode{<span class="framebox-\frameboxAlign"\Hnewline + style="width:\frameboxWidth;">}} + {\HCode{</span>}} + |<shared framebox style|> +\fi +>>> + +% \bgroup +% \fboxrule=0pt \fboxsep=0pt +% \HAssign\frameboxN=0 +% \gHAdvance\frameboxN by 1 +% id="framebox-\frameboxN" + + +\<shared framebox style\><<< +\Css{.framebox-c, .framebox-l, .framebox-r { + padding-left:\the\fboxsep; + padding-right:\the\fboxsep; + text-indent:0pt; + border:solid black \the\fboxrule; +}} +\Css{.framebox-c {text-align:center;}} +\Css{.framebox-l {text-align:left;}} +\Css{.framebox-r {text-align:right;}} +>>> + +\<32,4 latex\><<< +\:CheckOption{pic-fbox} \if:Option + \Configure{fbox} + {\leavevmode\Picture+[]{ \a:@Picture{fbox}}} {\EndPicture} +\else + \Log:Note{for bitmap fbox'es, use + the command line option `pic-fbox'} + \Configure{fbox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="fbox">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="fbox">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.fbox {padding-left:\the\fboxsep; + padding-right:\the\fboxsep; + text-indent:0pt; + border:solid black \the\fboxrule; + }} + \Css{div.fbox {display:table}} + \Css{div.center div.fbox {text-align:center; clear:both; + padding-left:3.0pt; padding-right:3.0pt; + text-indent:0pt; border:solid black 0.4pt; }} +\fi +>>> + +The property 'display:table' is introduced so borders will be tight on +the content instead of expanding to the surrounding box size. + + + +\<latex ltsec\><<< +\Configure{InsertTitle}{\let\label|=\lb:l + \let\ref|=\o:ref \Configure{ref}{}{}{}} +\Configure{AfterTitle}{\let\index|=\:index + \let\ref|=\:ref \let\label|=\lb:l } +\Configure{NoSection} + {\let\sv:index|=\index \let\sv:label|=\label + \let\sv:newline|=\newline \def\newline{ }% + \let\sv:setfontsize|=\@setfontsize \let\@setfontsize|=\:gobbleIII + \let\index|=\@gobble \let\label|=\@gobble + |<nolink ref|>% + } + {\let\index|=\sv:index \let\label|=\sv:label + |<restore ref|>% + \let\newline|=\sv:newline \let\@setfontsize|=\sv:setfontsize + } +>>> + +\<nolink ref\><<< +\let\sva:rEfLiNK|=\a:rEfLiNK +\let\svb:rEfLiNK|=\b:rEfLiNK +\let\svc:rEfLiNK|=\c:rEfLiNK +\expandafter\let\expandafter\svC:rEfLiNK\c:rEfLiNK +\Configure{ref}{}{}{}% \let\sv:ref|=\ref \let\ref|=\@gobble +>>> + +\<restore ref\><<< +\let\a:rEfLiNK|=\sva:rEfLiNK +\let\b:rEfLiNK|=\svb:rEfLiNK +\let\c:rEfLiNK|=\svc:rEfLiNK +\expandafter\let\c:rEfLiNK\svC:rEfLiNK % \let\ref\sv:ref +>>> + +\<0,32,4 latex\><<< +\Configure{oalign}{\Picture+{ \a:@Picture{oalign}}}{\EndPicture} +\Configure{TocLink} + {\expandafter\ifx \csname #3-def\endcsname\relax + \global\expandafter\let \csname #3-def\endcsname\def + \Link{#2}{#3}% + \else + \Link{#2}{}% + \fi + {|<config TocLink anchor|>#4}\ifvmode\IgnorePar\fi\EndLink} +>>> + + + +\<config TocLink anchor\><<< +\Configure{ref}{}{}{}% +\let\EndLink=\empty +\let\H:Tag:attr\:gobbleII +\let\:::HRef\empty +\def\::hRef[##1]##2{}% +\def\::hRefTag[##1]##2##3{}% +\def\:::HRefTag##1##2{}% +|<cite in TocLink|>% +>>> + +\<configure html4-math latex\><<< +\Configure{stackrel}{\Picture+{ class="stackrel"}\mathrel} + {\limits ^}{\EndPicture} +>>> + + +\<0,32,4 latex\><<< +\Configure{picture} + {\Picture+[PICT]{}} + {\EndPicture} +>>> + + +\<32,4 latex\><<< +\ConfigureEnv{minipage} + {\IgnorePar\EndP + \HCode{<div class="minipage">}% + {\ifnum 0=`}\fi + } + {\ifnum 0=`{\fi}% + \EndP\HCode{</div>}} + {}{} +\Css{div.minipage{width:100\%;}} +>>> + +The extra braces in the minipage configurations are to allow the +compilation of cases similar to the following one. + +\begin{verbatim} +\documentclass{article} +\begin{document} +\begin{tabular}{c} +\begin{minipage}{4in} +\begin{eqnarray} +x & = & y +\end{eqnarray} +\end{minipage} +\end{tabular} +\end{document} +\end{verbatim} + +Tried the following for minipage +\begin{verbatim} +\ConfigureEnv{minipage} + {\IgnorePar\EndP\HCode{<div class="minipage">}} + {\EndP\HCode{</div>}} + {\IgnoreIndent\HtmlEnv}{} +\end{verbatim} +but was not able to find an appropriate css code for centered pages +\begin{verbatim} +Es ist ganz einfach: + +\begin{center} + \raisebox{0cm}{\begin{minipage}{10cm}\sc Jesus Christus\\ +erbarme dich meiner!\end{minipage}} +\end{center} + +Varianten sind: +\end{verbatim} + + + + +\<latex shared section config\><<< +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +>>> + +\<latex shared subsection config\><<< +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +>>> + +\<latex shared subsubsection config\><<< +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +>>> + + + + +\<latex shared div config\><<< +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +>>> + +\<latex shared paragraph config\><<< +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +>>> + + + +\<latex shared part config\><<< +\Configure{endpart}{likepart} +\Configure{endlikepart}{endpart} +>>> + + +\<latex shared part config\><<< +\Configure{part}{}{} + {\IgnorePar \EndP\HCode{<h1 class="partHead"\a:LRdir>}% + \HCode{<span class="titlemark">}\partname \ \thepart + \HCode{<br /></span>}} + {\HCode{</h1>}\IgnoreIndent\par} +\Configure{likepart}{}{} + {\IgnorePar\EndP\HCode{<h1 class="likepartHead"\a:LRdir>}} + {\HCode{</h1>}\IgnoreIndent\par} +\Configure{partTITLE+}{\thepart\space #1} +\Configure{likepartTITLE+}{#1} +\Css{h1.partHead{text-align: center}} +>>> + + + +\<configure html4 latex\><<< +\ifx\bf\:UnDef + \def\bf{\normalfont\bfseries} +\fi +>>> +Earlier we had +\verb'\:CheckOption{no-halign} \if:Option \else |<pic array|> \fi', +and the same for pic tabular. Why? + + + +\<config plain,latex\><<< +\Configure{displaylines} + {\IgnorePar \EndP + \HCode{<table \Hnewline border="0" width="100\%" + class="displaylines">}\IgnorePar} + {\HCode{</table>}} + {\HCode{<tr class="displaylines"><td \Hnewline + style="vertical-align:baseline;" class="displaylines" + >}}{\HCode{</td></tr>}} +\Css{td.displaylines {text-align:center; white-space:nowrap;}} +>>> + +\<picmath plain,latex\><<< +\let\A:displaylines|=\a:displaylines +\let\B:displaylines|=\b:displaylines +\let\C:displaylines|=\c:displaylines +\let\D:displaylines|=\d:displaylines +\Configure{displaylines} + {\ifmmode + \def\A:displaylines{\Picture*{}}% + \def\B:displaylines{\EndPicture}% + \fi + \A:displaylines} + {\B:displaylines} {\C:displaylines}{\D:displaylines} +>>> + + +\<show input line no\><<< +<!--l. \the\inputlineno-->% +>>> + + + + + + + + + + + +\<configure html4 latex\><<< +|</TeX for 4.0t|> +\:CheckOption{fancylogo}\if:Option +\def\:temp{\HCode{<span class="LATEX">}L\HCode{<span + class="A">}A\HCode{</span>}\TeX\HCode{</span>}} +\HLet\LaTeX|=\:temp +\def\:temp{\mbox{% + \if b\expandafter\@car\f@series\@nil\boldmath\fi + \LaTeX2$_{\textstyle\varepsilon}$}} +\expandafter\HLet\csname LaTeXe\endcsname|=\:temp +\Css{span.LATEX span.A{ position:relative; top:-0.5ex; + left:-0.4em; font-size:85\%;}} +\Css{span.LATEX span.TEX{ position:relative; margin-left: -0.4em; margin-right:0.125em; }} +\else +\def\LaTeX{LaTeX} +\def\LaTeXe{LaTeX2e} +\fi +\Configure{@TITLE}{\def\LaTeX{LaTeX}\let\fontencoding|=\:gobble + \let\fontfamily|=\:gobble \let\fontseries|=\:gobble + \let\fontshape|=\:gobble \let\usefont|=\:gobbleIV } +>>> + + + + + +\<configure html4 latex\><<< +\Configure{newline}{\HCode{<br\Hnewline class="newline" />}} +>>> + + + + +\<configure html4 supertabular\><<< +\Configure{SpBorder} + {<tr\Hnewline class="vspace"><!--\SpBorder-->} + {<td>\string </td>} + {</tr>} +\ConfigureEnv{supertabular} + {\par \IgnorePar \EndP \HCode{<div class="supertabular">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}\par} + {} {} +\Css{.supertabular {text-align:center}} +>>> + +\<configure html4 longtable\><<< +\:CheckOption{old-longtable}\if:Option + |<config old longtable|> +\else + |<config new longtable|> +\fi +>>> + + +\<configure html4 longtable\><<< +\:CheckOption{pic-longtable} \if:Option + \ConfigureEnv{longtable} + {\IgnorePar\EndP\Tg<div class="pic-longtable">\Picture*{}} + {\EndPicture\Tg</div>}{}{} + \Css{div.pic-longtable {text-align:center;}} +\else + \Log:Note{for pictorial longtable, + use the command line option `pic-longtable'} +\fi +>>> + + + +\<config new longtable\><<< +\Configure{halignTB<>}{longtable}{\HCode{id="TBL-\TableNo" class="longtable"\Hnewline + \GROUPS\Hnewline + }<>\HAlign} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +\Configure{longtable} + {\IgnorePar\EndP + \HCode{|<show input line no|><div class="longtable">}% + \halignTB{longtable}\putVBorder } + {|<insert Clr|>\HCode{</table></div>}} + {\HCode{<tr \Hnewline}\halignTR\HCode{ id="TBL-\TableNo-\HRow-">}} + {\r:HA} + {\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}|<tabular td align|>% + \HCode{">}|<td save EndP|>% + |<start array par box|>\PushStack\Table:Stck\TableNo} + {\PopStack\Table:Stck\TableNo |<end array par box|>\d:HA} +\Css{div.longtable{text-align:center;}} +\Css{table.longtable{margin-left:auto; margin-right: auto;}} +\Configure{longtableparbox}{\IgnorePar\leavevmode\ShowPar\par} +>>> + + +\<config old longtable\><<< +\let\a:longtable=\a:tabular +\let\b:longtable=\b:tabular +\let\c:longtable=\c:tabular +\let\d:longtable=\d:tabular +\let\e:longtable=\e:tabular +\let\f:longtable=\f:tabular +>>> + +\<configure html4 latex\><<< +\Configure{float} + {\ifOption{refcaption}{}{\csname par\endcsname\ShowPar \leavevmode}} + {\:xhtml{\IgnorePar\EndP}\HCode{<hr class="float"\xml:empty><div + class="float"\Hnewline>}} + {\ifvmode \IgnorePar \fi\EndP + \HCode{</div><hr + class="endfloat" />}\csname par\endcsname\ShowPar} +\ConfigureEnv{figure} + {\:xhtml{\IgnorePar\EndP}\HCode{<hr class="figure"\xml:empty><div + class="figure"\Hnewline>}% + \bgroup \Configure{float}{\ShowPar}{}{}% + } + {\egroup + \:xhtml{\IgnorePar\EndP}\HCode{</div><hr + class="endfigure"\xml:empty>}|<try env inline par|>\par} + {}{} +\Css{div.float, div.figure {margin-left: auto; margin-right: auto;}} +\Css{div.float img {text-align:center;}} +\Css{div.figure img {text-align:center;}} +>>> +The \verb'<TABLE>' is needed as a grouping mechanism for \verb'<CENTER>'. + + + + +%%%%%%%%%%%%%%%%%%%%%% +\section{Plain} +%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{General} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 plain\><<< +|<config plain,latex|> +|<0,32,4 plain|> +|<0,32,4 plain,latex|> +|<32,4 plain,latex|> +|<32,4 plain|> +|<config plain|> +|<plain items|> |%keep last in html mode?|% +>>> + + +\<config plain\><<< +\def\plain:indent{\ShowIndent \global\let\plain:indent\empty} +\Configure{@BODY}{\plain:indent} +>>> + + + +\<plain items\><<< +\Configure{item} + {}{} + {\par\Configure{items}{\item:class}\HCode{<span class="item">}} + {\HCode{</span>}\Configure{items}{}} +\Configure{itemitem} + {}{} + {\par\Configure{items}{\itemitem:class}\HCode{<span class="itemitem">}} + {\HCode{</span>}\Configure{items}{}} +\Css{p.item {text-indent:-2em; margin-left:2em;}} +\Css{p.itemitem {text-indent:-2em; margin-left:4em;}} +\Css{span.item, span.itemitem {width:2em; margin-right:0.4em;}} +\Configure{!P}{\a:items} +\NewConfigure{items}{1} +\Configure{items}{} +\def\item:class#1class#2"#3"{#1class="item"} +\def\itemitem:class#1class#2"#3"{#1class="itemitem"} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Math} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 plain\><<< +|<TABLE eqalign shared Configure 4.0t|> +>>> +\<TABLE eqalign shared Configure 4.0t\><<< +\Configure{eqalign} + {\:xhtml{\IgnorePar\EndP}\HCode + {<div class="eqalign"><table class="eqalign">}} + {\HCode{</table></div>}} + {\HCode{<tr \Hnewline class="eqalign" + style="vertical-align:middle;">}}{\IgnorePar\HCode{</tr>}} + {\HCode{<td style="white-space:nowrap;text-align:\ifnum \HCol=2 + left\else right\fi"\Hnewline class="eqalign\HCol" + >}} + {\HCode{</td>}} +\def\:eqalign:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} +\Css{td.eqalign3 { text-align:right; margin-left:10em;}} +\Css{.eqalign td { white-space: nowrap; }} +\Css{div.eqalign {text-align:center;}} +>>> + + + + + +\<TABLE eqalign shared Configure 4.0t\><<< +\Configure{eqalignno} + {\:xhtml{\IgnorePar\EndP}\HCode{<table class="eqalignno">}} + {\HCode{</table>}} + {\HCode{<tr\Hnewline class="eqalignno">}}{\IgnorePar\HCode{</tr>}} + {\HCode{\ifnum \HCol=3 <td\Hnewline width="10" + class="eqalignno-sp"></td>\fi + <td style="text-align:\ifnum \HCol=2 left\else right\fi"\Hnewline + class="eqalignno\HCol">}} + {\HCode{</td>}} +\def\:eqalignno:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} +\Css{td.eqalignno3, td.leqalignno3 + { text-align:right; margin-left:10em;}} +\Css{.leqalignno td, .eqalignno td + { white-space: nowrap; }} +\Css{.leqalignno td.noalign, .eqalignno td.noalign + { width:5\%; white-space: normal; }} +\Css{table.leqalignno, table.eqalignno {width:100\%;}} +>>> + +\<TABLE eqalign shared Configure 4.0t\><<< +\Configure{leqalignno} + {\:xhtml{\IgnorePar\EndP}\HCode{<table class="leqalignno">}} + {\HCode{</table>}} + {\HCode{<tr \Hnewline + class="leqalignno">}}{\IgnorePar\HCode{</tr>}} + {\HCode{\ifnum \HCol=3 <td\Hnewline width="30" + class="eqalignno-sp"></td>\fi + <td style="text-align:\ifnum \HCol=2 left\else right\fi"\Hnewline + class="leqalignno\HCol">}} + {\HCode{</td>}} +\def\:leqalignno:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} +>>> + + + + +\<shared plain/latex pmatrix 4.0t\><<< +\Configure{pmatrix} + {\ifvmode + \def\end:pmatrix{\IgnorePar\HCode{</div>}\end:TTT}% + \:xhtml{\IgnorePar\EndP}\HCode + {<table\Hnewline class="pmatrix"><tr><td><div + class="pmatrix"\Hnewline>}% + \else \HCode{<span class="pmatrix">}% + \def \end:pmatrix{\HCode{</span>}}% + \fi} + {\end:pmatrix} +\Css{span.pmatrix img{vertical-align:middle;}} +\Css{div.pmatrix {text-align:center;}} +\Css{table.pmatrix {width:100\%;}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Environments} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<config plain\><<< +\Configure{settabs}[1.5]{\IgnorePar\EndP\leavevmode + \ht:special{t4ht=<table + \Hnewline\:zbsp{settabs}><tr \Hnewline style="vertical-align:baseline;" + class="settabs">}} + {\ht:special{t4ht=</tr></table>}} + {\ht:special{t4ht=<td \ifx \TabWidth\empty \else + width="\TabWidth"\fi \Hnewline class="settabs">}} + {\ht:special{t4ht=</td>}} +>>> + +\<config plain\><<< +\Configure{narrower}{\ifvmode \IgnorePar\fi \EndP% + \HCode{<table cellpadding="15" class="narrower"><tr + class="narrower"><td class="narrower">}\ifvmode \IgnorePar\fi} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</td></tr></table>}\ifvmode \IgnorePar\fi} +>>> + + + +\<0,32,4 plain\><<< +\Configure{settabs}[1.5]{}{}{}{}{} +\Configure{line}{\HCode{<br />}} +>>> + +\<config plain\><<< +\Configure{proclaim} + {\IgnorePar\EndP\HCode{<div class="proclaim"><span class="proclaim">}} + {\HCode{</span>}} {\IgnorePar\EndP\HCode{</div>}} +\Css{div.proclaim { margin-top: 1em; margin-bottom: 1em; }} +>>> + +\<config plain\><<< +\Configure{beginsection} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="beginsection">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{<h3 class="beginsection">}} + {\HCode{</h3>}\par\ShowPar} +\ConfigureToc{beginsection} + {} {\relax} {} { } +>>> + +% \Css{div.beginsection { margin-top: 1em; margin-bottom: 1em; }} + + + + +\<config plain\><<< +\Configure{TableOfContents} + {\IgnorePar\EndP \HCode{<div class="TableOfContents"\a:LRdir>}}{} + {\ifvmode \IgnorePar\fi\EndP + \HCode{</div>}\ShowPar}{\HCode{<br />}}{} +>>> + +\<config plain\><<< +\:CheckOption{1} \if:Option + \CutAt{beginsection} + \Configure{beginsectionTITLE+}{#1} + \ConfigureToc{beginsection} + {\HCode{<span class="beginsectionToc" \a:LRdir>}} + {\empty} + {} + {\HCode{</span><br />}} + \let\au:StartSec\:StartSec + \def\:StartSec{\TableOfContents[beginsection]% + \global\let\:StartSec\au:StartSec + \:StartSec}% +\else + \Log:Note{for automatic sectioning + pagination, use the command line option `1'}% +\fi +>>> + + + +\<config plain\><<< +\Configure{insert} + {\IgnorePar\EndP\HCode{<hr class="insert"\xml:empty>}\IgnorePar} + {\IgnorePar\EndP\HCode{<hr class="endinsert"\xml:empty>}\IgnorePar} +>>> + +\<pic plain/latex math 4.0t\><<< +\NewConfigure{@root}{1} +\Configure{@root}{align="middle" } +>>> + +\<html4-math plain,fontmath\><<< +\Configure{big}{\HCode{<span class="big">}}{\HCode{</span>}}{}{} +\Configure{Big}{\HCode{<span class="bbig">}}{\HCode{</span>}}{}{} +\Configure{bigg}{\HCode{<span class="bigg">}}{\HCode{</span>}}{}{} +\Configure{Bigg}{\HCode{<span class="bbigg">}}{\HCode{</span>}}{}{} +>>> + +\<pic plain math 4.0t\><<< +\Configure{@underbrace}{align="middle"} +>>> + +\<config plain,latex\><<< +\def\:zbsp#1{cellpadding="0" border="0" \Hnewline + class="#1"} +>>> + +\<config plain,latex\><<< +\Configure{centerline}{\ifvmode \IgnorePar + \fi \EndP\HCode{<div \Hnewline + class="centerline">}}{\EndP\HCode{</div>}\ShowPar} +\Configure{leftline}{\ifvmode \IgnorePar + \fi \EndP \HCode{<p\Hnewline class="leftline">}} + {\HCode{</p>}\ShowPar} +\Configure{rightline} + {\IgnorePar\EndP\HCode{<p class="rightline">}} + {\HCode{</p>}\ShowPar} +\Css{.centerline {text-align:center;}} +\Css{.rightline {text-align:right;}} +>>> + +% \<config plain,latex\><<< +% \def\tbl:XV#1{table width="100\%"\Hnewline class="#1"} +% >>> + + +The \verb'100%' is to allow centering of stuff on the page. +The table is a grouping mechanism to protect internal stuff +from external centering operations. + + +The \verb'special{t4ht=' is superior to \verb'\HCode{' because it can +prevent \verb'<p>'s from entering before \verb'<NOBR>'. + + +The hbox is for avoiding the start of a new paragraph, if in vmode. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Latex Math} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4-math latex\><<< +|<picmath plain,latex|> +|<picmath latex|> +|<32,4 picmath latex|> +|<shared plain/latex pmatrix 4.0t|> +|<mathjax|> +>>> + + + + + +\<picmath plain,latex\><<< +|<pic plain/latex math 3.2|> +\def\A:root#1\b:root#2\c:root{\o:root:#1\of{#2}\c:root} +\Configure{root} + {\Picture+{ \a:@Picture{root}}\A:root} + {} + {\EndPicture} +\Configure{mathpalette} + {\Picture+{ \a:@Picture{mathpalette}}} {\EndPicture} +>>> + +\<\><<< +\Configure{choose}{}{} +>>> + + +\<32,4 picmath latex\><<< +\Configure{pmatrix} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{bordermatrix} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{frac} + {\Picture+{ \a:@Picture{frac}}\bgroup} + {} {} + {\egroup\EndPicture} +>>> + + +\<32,4 picmath latex\><<< +\Configure{sqrtsign} + {\Picture+{ \a:@Picture{sqrt}}} + {\EndPicture} +\Configure{matrix} + {\Picture+{ \a:@Picture{matrix}}} {\EndPicture} + {}{}{}{} +>>> + + +\<picmath plain,latex\><<< +% \Configure{L} {\pic:sym{L}} +% \Configure{l} {\pic:sym{l}} +\def\pic:sym#1{\Protect\Picture+{ \a:@Picture{#1}}\csname + o:#1:\endcsname\Protect\EndPicture} +>>> + +\<picmath plain,fontmath\><<< +\Configure{Longrightarrow} {\pic:sym{Longrightarrow}} +\Configure{bowtie} {\pic:sym{bowtie}} +\Configure{cong} {\pic:sym{cong}} +\Configure{ddots} {\pic:sym{ddots}} +\Configure{doteq} {\pic:sym{doteq}} +\Configure{hookleftarrow} {\pic:sym{hookleftarrow}} +\Configure{hookrightarrow} {\pic:sym{hookrightarrow}} +\Configure{longmapsto} {\pic:sym{longmapsto}} +\Configure{mapsto} {\pic:sym{mapsto}} +\Configure{models} {\pic:sym{models}} +\Configure{neq} {\ht:special{t4ht@+\string&{35}x2260{59}}x} +\Configure{notin} {\pic:sym{notin}} +\Configure{vdots} {\pic:sym{vdots}} +\Configure{angle} {\pic:sym{angle}} +\Configure{rightleftharpoons} {\pic:sym{rightleftharpoons}} +\Configure{leftrightharpoons} {\pic:sym{leftrightharpoons}} +\Configure{mid} {\ht:special{t4ht@+\string&{35}x2223{59}}||} +>>> + +% + +\<picmath latex\><<< +\Configure{mathellipsis} {\ht:special{t4ht@+\string&{35}x2026{59}}x} +\Configure{hbar} {\ht:special{t4ht@+\string&{35}x210F{59}}x} +>>> + +\<configure html4 latex\><<< +\Configure{textellipsis} {\ht:special{t4ht@+\string&{35}x2026{59}}x} +>>> + + +\<picmath plain\><<< +\Configure{ldots} {\ht:special{t4ht@+\string&{35}x2026{59}}x} +>>> + + +\<configure html4-math fontmath\><<< +\Configure{cdots} {\pic:sym{cdots}} +\Css{img.cdots{vertical-align:middle;}} +>>> + +\<configure html4-math plain\><<< +\Configure{cdots} {\pic:sym{cdots}} +\Css{img.cdots{vertical-align:middle;}} +>>> + + + +\<configure html4-math amsmath\><<< +\Configure{@cdots} {\pic:sym{@cdots}} +\Configure{iint} {\pic:sym{iint}} +\Configure{iiint} {\pic:sym{iiint}} +\Configure{iiiint} {\pic:sym{iiint}} +\Configure{idotsint} {\pic:sym{tsint}} +\Configure{doteq} {\pic:sym{tsint}} +>>> + +% \Configure{overrightarrow} {\Picture+{}}{\EndPicture} +% \Configure{overleftarrow} {\Picture+{}}{\EndPicture} + +\<32,4 picmath: plain, fontmath, amsmath, amstex1\><<< +\Configure{overbrace} {}{\Picture+{}}{\EndPicture} +\Configure{underbrace} {}{\Picture+{}}{\EndPicture} +>>> + +\<mathjax\><<< +\:CheckOption{mathjax}\if:Option +\input{mathjax-latex-4ht.4ht} +\ifx\a:MathJaxConfig\relax +\Configure{MathJaxConfig}{{ + tex: { + tags: "ams", + }, +}; +} +\fi +\Configure{@HEAD}{\HCode{<script>window.MathJax = \a:MathJaxConfig</script>\Hnewline}} +\Configure{MathjaxSource}{https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js} +\Configure{@HEAD}{\HCode{ <script type="text/javascript" async="async" id="MathJax-script" src="\a:MathjaxSource"></script> \Hnewline}} +\edef\:RestoreMathjaxCatcodes{\catcode`\noexpand \&=\the\catcode`\&} +\def\:HandleMathjaxCatcodes{\edef\:RestoreMathjaxCatcodes{\catcode`\noexpand \&=\the\catcode`\&}\catcode`\&=11} +\Configure{$}{\:HandleMathjaxCatcodes}{\:RestoreMathjaxCatcodes}{\expandafter\AltMathOne} +% for some reason, it is necessary to specify the catcode change directly in the configuration +\Configure{()}{\:HandleMathjaxCatcodes\catcode`\&=11\AltlMath}{\:RestoreMathjaxCatcodes} +\Configure{[]}{\:HandleMathjaxCatcodes\catcode`\&=11\AltlDisplay}{\:RestoreMathjaxCatcodes} +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Shared plain latex Math} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<picmath plain,latex\><<< +\Configure{pmatrix} + {\ifvmode + \def\end:pmatrix{\IgnorePar\HCode{</div>}\end:TTT}% + \:xhtml{\IgnorePar\EndP}\HCode + {<table\Hnewline class="pmatrix"><tr><td><div + class="pmatrix"\Hnewline>}% + \else \HCode{<span class="pmatrix">}% + \def \end:pmatrix{\HCode{</span>}}% + \fi} + {\end:pmatrix} +\Css{div.pmatrix {text-align:center;}} +\Css{table.pmatrix {width:100\%;}} +>>> + + + + +\<configure html4-math plain\><<< +|<picmath plain,latex|> +|<picmath plain,fontmath|> +|<picmath plain|> +|<pic plain/latex math 4.0t|> +|<32,4 picmath plain|> +|<pic plain math 4.0t|> +|<html4-math plain,fontmath|> +>>> + +\<32,4 picmath plain\><<< +\Configure{sqrt} + {\Picture+{ \a:@Picture{sqrt}}} + {\EndPicture} +|<32,4 picmath: plain, fontmath, amsmath, amstex1|> +>>> + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Classes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%% +\section{article} +%%%%%%%%%%%%%%%%% + +\<configure html4 article\><<< +|<article,report,book options 1, 2, 3|> +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +|<config book-report-article|> +|<config report / article 4.0t|> +\:CheckOption{1} \if:Option +\else + \:CheckOption{2} \if:Option \else + \:CheckOption{3} \if:Option \else + \:CheckOption{4} \if:Option \else + \:CheckOption{5} \if:Option \else + \:CheckOption{6} \if:Option \else + \:CheckOption{7} \if:Option \else + \fi + \fi + \fi + \fi + \fi + \fi + \if:Option + \Css{.subsectionToc, .likesubsectionToc {margin-left:2em;}} + \Css{.subsubsectionToc, .likesubsubsectionToc {margin-left:4em;}} + \fi +\fi +>>> + + +\<config report / article 4.0t\><<< +|<abstract|> +>>> + + +\<abstract\><<< +\ConfigureEnv{abstract} + {\IgnorePar\EndP + \HCode{<div\Hnewline class="abstract"\Hnewline>}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}\par}{}{} + + +\Configure{abstracttitle}{\ifvmode\IgnorePar\fi\EndP\HCode{<h3 class="abstracttitle">}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn} + +\Css{div.abstract p {margin-left:5\%; margin-right:5\%;}} +\Css{div.abstract {width:100\%;}} +\Css{.abstracttitle{text-align:center;margin-bottom:1em;}} +>>> + + + +%%%%%%%%%%%%%%%% +\section{report} +%%%%%%%%%%%%%%%%% + +\<configure html4 report\><<< +|<article,report,book options 1, 2, 3|> +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +|<config book-report-article|> +|<latex shared part config|> +|<config book-report 4.0t|> +|<config report / article 4.0t|> +|<32,4 report,book|> +|<32,4 report|> +>>> + +\<32,4 report\><<< +\ConfigureMark{chapter} + {\HCode{<span class="titlemark">}\chaptername + \ \thechapter\HCode{</span>}} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}% + \TitleMark{\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{chapterTITLE+}{\thechapter\space#1} +\Configure{likechapterTITLE+}{#1} +>>> + + +\<32,4 report\><<< +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}% + \TitleMark{\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent\par} +>>> + +\<32,4 report,book\><<< +\ConfigureMark{appendix}{\HCode{<span class="titlemark">}% + \appendixname \ \thechapter\HCode{</span>}} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapterTITLE+}{#1} +>>> + +\<32,4 report,book\><<< +\Configure{endchapter}{likechapter,appendix,part,likepart} +\Configure{endlikechapter}{chapter,appendix,part,likepart} +\Configure{endappendix}{chapter,likechapter,part,likepart} +>>> + + +%%%%%%%%%%%%%% +\section{book} +%%%%%%%%%%%%%% + +\<configure html4 book\><<< +|<article,report,book options 1, 2, 3|> +\:CheckOption{1} \if:Option + |<toc book options 1|> +\fi +|<config book-report-article|> +|<latex shared part config|> +|<config book-report 4.0t|> +|<32,4 report,book|> +|<32,4 book|> +% \:CheckOption{2} \if:Option +% \else +% \:CheckOption{3} \if:Option \else +% \:CheckOption{4} \if:Option \else +% \:CheckOption{5} \if:Option \else +% \:CheckOption{6} \if:Option \else +% \:CheckOption{7} \if:Option \else +% \fi +% \fi +% \fi +% \fi +% \fi +% \if:Option +% \Css{.sectionToc, .likesectionToc {margin-left:2em;}} +% \Css{.subsectionToc, .likesubsectionToc {margin-left:4em;}} +% \Css{.subsubsectionToc, .likesubsubsectionToc {margin-left:6em;}} +% \fi +% \fi +|<book: css|> +>>> + + +\<book: css\><<< +\Css{ +.chapterToc, +.likechapterToc + {margin-left:0em;}} +\Css{ +.chapterToc \string~ .likesectionToc, +.chapterToc \string~ .sectionToc, +.likechapterToc \string~ .likesectionToc, +.likechapterToc \string~ .sectionToc + {margin-left:2em;}} +\Css{ +.chapterToc \string~ .likesectionToc \string~ .likesubsectionToc, +.chapterToc \string~ .likesectionToc \string~ .subsectionToc, +.chapterToc \string~ .sectionToc \string~ .likesubsectionToc, +.chapterToc \string~ .sectionToc \string~ .subsectionToc, +.likechapterToc \string~ .likesectionToc \string~ .likesubsectionToc, +.likechapterToc \string~ .likesectionToc \string~ .subsectionToc, +.likechapterToc \string~ .sectionToc \string~ .likesubsectionToc, +.likechapterToc \string~ .sectionToc \string~ .subsectionToc + {margin-left:4em;}} +\Css{.chapterToc \string~ .likesectionToc \string~ .likesubsectionToc \string~ .likesubsubsectionToc, +.chapterToc \string~ .likesectionToc \string~ .likesubsectionToc \string~ .subsubsectionToc, +.chapterToc \string~ .likesectionToc \string~ .subsectionToc \string~ .likesubsubsectionToc, +.chapterToc \string~ .likesectionToc \string~ .subsectionToc \string~ .subsubsectionToc, +.chapterToc \string~ .sectionToc \string~ .likesubsectionToc \string~ .likesubsubsectionToc, +.chapterToc \string~ .sectionToc \string~ .likesubsectionToc \string~ .subsubsectionToc, +.chapterToc \string~ .sectionToc \string~ .subsectionToc \string~ .likesubsubsectionToc, +.chapterToc \string~ .sectionToc \string~ .subsectionToc \string~ .subsubsectionToc, +.likechapterToc \string~ .likesectionToc \string~ .likesubsectionToc \string~ .likesubsubsectionToc, +.likechapterToc \string~ .likesectionToc \string~ .likesubsectionToc \string~ .subsubsectionToc, +.likechapterToc \string~ .likesectionToc \string~ .subsectionToc \string~ .likesubsubsectionToc, +.likechapterToc \string~ .likesectionToc \string~ .subsectionToc \string~ .subsubsectionToc, +.likechapterToc \string~ .sectionToc \string~ .likesubsectionToc \string~ .likesubsubsectionToc, +.likechapterToc \string~ .sectionToc \string~ .likesubsectionToc \string~ .subsubsectionToc, +.likechapterToc \string~ .sectionToc \string~ .subsectionToc \string~ .likesubsubsectionToc +.likechapterToc \string~ .sectionToc \string~ .subsectionToc \string~ .subsubsectionToc + {margin-left:6em;}} + +\Css{ +.likesectionToc , +.sectionToc + {margin-left:0em;}} +\Css{ +.likesectionToc \string~ .likesubsectionToc, +.likesectionToc \string~ .subsectionToc, +.sectionToc \string~ .likesubsectionToc, +.sectionToc \string~ .subsectionToc + {margin-left:2em;}} +\Css{.likesectionToc \string~ .likesubsectionToc \string~ .likesubsubsectionToc, +.likesectionToc \string~ .likesubsectionToc \string~ .subsubsectionToc, +.likesectionToc \string~ .subsectionToc \string~ .likesubsubsectionToc, +.likesectionToc \string~ .subsectionToc \string~ .subsubsectionToc, +.sectionToc \string~ .likesubsectionToc \string~ .likesubsubsectionToc, +.sectionToc \string~ .likesubsectionToc \string~ .subsubsectionToc, +.sectionToc \string~ .subsectionToc \string~ .likesubsubsectionToc, +.sectionToc \string~ .subsectionToc \string~ .subsubsectionToc + {margin-left:4em;}} +\Css{ +.likesubsectionToc, +.subsectionToc + {margin-left:0em;}} +\Css{ +.likesubsectionToc \string~ .subsubsectionToc, +.subsectionToc \string~ .subsubsectionToc + {margin-left:2em;}} +>>> + + +\<32,4 book\><<< +\ConfigureMark{chapter} + {\if@mainmatter \ifnum \c@secnumdepth >\m@ne + \HCode{<span class="titlemark">}\chaptername + \ \thechapter\HCode{</span>}\fi \fi} +\Configure{chapterTITLE+}{\if@mainmatter\thechapter\space\fi#1} +\renewcommand\thechapter {\if@mainmatter\@arabic\c@chapter\fi} +>>> + +\<32,4 book\><<< +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}% + \if@mainmatter \TitleMark{\HCode{<br />}}\fi } + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}% + \if@mainmatter \TitleMark{\HCode{<br />}}\fi } + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent\par} +>>> + + +\<chapter toc css\><<< +\Css{.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, + .appendixToc a, .appendixToc + {line-height: 200\%; font-weight:bold;}} +>>> + + +\<part toc css\><<< +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{letter} +%%%%%%%%%%%%%%%%%% + + +\<configure html4 letter\><<< +|<quote config|> +|<quotations|> +|<description 4|> +|<roman enumeiii|> +|<base font size|> +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>\par\ShowPar} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} +>>> + + + + +\<configure html4 letter\><<< +\Configure{opening} + {\bgroup + \ConfigureEnv{tabular}{}{}{}{}% + \Configure{tabular} + {\EndP\ifvmode \IgnorePar \fi + \HCode{<div class="opening"\a:LRdir>}} + {\HCode{</div><p class="clear-both" />}} + {} + {\HCode{<br />}} + {}{}% + \Configure{HBorder} + {<br class="hline" />} {}{} + {<br class="cline" />} {}{} {} + {<br class="vspace" />} {}{}% + } + {\egroup} +\Configure{closing} + {\EndP\ifvmode \IgnorePar\fi + \HCode{<div class="closing">}} + {\EndP\ifvmode \IgnorePar\fi + \HCode{</div><p class="clear-both" />}} +\longindentation=0pt +\Css{div.opening{float:right;}} +\Css{div.closing {float:right; margin-right:2em;}} +\Css{p.clear-both{clear:both;}} +>>> + +\<configure html4 letter\><<< +\Configure{address} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="address">}} + {\HCode{</span>}} +\Configure{toaddress} + {\HCode{<div class="toaddress">}} + {\HCode{</div>}} +\Configure{toname} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="toname">}} + {\HCode{</div>}} +\Configure{date} + {\HCode{<span class="date" \a:LRdir>}} + {\HCode{</span>}} +\Configure{dear} + {\HCode{<span class="dear">}} + {\HCode{</span>}} +\Configure{sincerely} + {\HCode{<span class="sincerely">}} + {\HCode{</span>}} +\Configure{signature} + {\HCode{<span class="signature">}} + {\HCode{</span>}} +\Configure{cc} + {\HCode{<div class="cc">}\IgnorePar} + {\ifvmode\IgnorePar\fi\HCode{</div>}} +\Configure{encl} + {\HCode{<div class="encl">}\IgnorePar} + {\ifvmode\IgnorePar\fi\HCode{</div>}} +>>> + + +%%%%%%%%%%%%%%%%% +\section{AMS Art, Proc, Book} +%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%% +\subsection{amsart} +%%%%%%%%%%%%%%%% + + + +\<configure html4 amsart\><<< +|<ams art,proc,book|> +|<ams art,proc|> +|<ams art|> +>>> + + + + +\<ams art,proc,book\><<< +|<ams maketitle|> +|<makeketitle config 4.0t|> +|<thebib config|> +>>> + +\<makeketitle config 4.0t\><<< +|<config captions|> +>>> + + + + + + + +\<ams art,proc,book\><<< +\ifx \deferred@thm@head\:UnDef\else + |<shared ams thm/cls|> + |<ams 2000 art + book + proc|> +\fi +>>> + +\<ams 2000 art + book + proc\><<< +\Configure{qed} + {\HCode{<span class="qed">}} {\HCode{</span>}} +\Css{.qed {width:2ex; float:right; text-align:right;}} +>>> + +\<shared ams thm/cls\><<< +\Configure{proof} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<div class="proof">}\par\ShowPar + \HCode{<span class="head">}\IgnorePar} + {\HCode{</span>}\ShowPar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}\par} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{amsproc} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 amsproc\><<< +|<ams art,proc,book|> +|<ams proc,book|> +|<ams art,proc|> +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{amsdtx} +%%%%%%%%%%%%%%%%%%% + + +\<configure html4 amsdtx\><<< +|<amsdtx maketitle|> +>>> + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{amsbook} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 amsbook\><<< +|<ams art,proc,book|> +|<ams proc,book|> +|<ams book|> +>>> + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Divisions} +%%%%%%%%%%%%%%%%%%% + + +\<ams art,proc,book\><<< +|<ams art,proc,book div|> +|<ams art,proc,book toc|> |%should appear before TocAt|% +|<ams options 1, 2, 3|> +>>> + + +\<ams art,proc,book div\><<< +\ConfigureMark{part} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\@ifundefined{partname}{}{% + \ignorespaces\partname\space}% + \@seccntformat{part}% + \HCode{</span>}\fi } +\Configure{part}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h1 class="partHead"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</h1>}\HtmlParOn \IgnoreIndent \par} +\Configure{partTITLE+}{\thepart\space#1} +>>> + + +\<ams book\><<< +\Configure{likepart}{}{} + {\IgnorePar\EndP\HCode{<h1 class="likepartHead"\a:LRdir>}} + {\HCode{</h1>}\IgnoreIndent\par} +\Configure{likepartTITLE+}{#1} +>>> + + + + +\<ams art,proc,book div\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\@ifundefined{sectionname}{}{% + \ignorespaces\sectionname\space}% + \@seccntformat{section}% + \HCode{</span>}\fi } +|<section TITLE+|> +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \ShowPar\par} +>>> + +\<section TITLE+\><<< +\Configure{sectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesection\space + \fi\fi #1} +>>> + + +\<subsection TITLE+\><<< +\Configure{subsectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesubsection\space + \fi\fi #1} +>>> + +\<subsubsection TITLE+\><<< +\Configure{subsubsectionTITLE+}{\ifnum \c:secnumdepth>\c@secnumdepth + \ifnum \c@secnumdepth > 0 + \thesubsubsection\space + \fi\fi #1} +>>> + + +\<ams art\><<< +\Css{.sectionHead{text-align:center;}} +>>> + + + + +\<ams proc,book\><<< +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\ConfigureMark{subparagraph}{\thesubparagraph} +\Css{.paragraphHead { margin-top:2em; font-weight: bold;}} +>>> + + + + +\<ams art\><<< +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}} + {.\HCode{</span>}\IgnorePar} +\ConfigureMark{subparagraph}{} +>>> + + +\<ams proc,book\><<< +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead { font-weight: bold;}} +>>> + +\<ams art\><<< +\Configure{subparagraph}{}{} + {\ShowPar\noindent\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup + \TitleMark\space} + {.\endgroup\HCode{</span>}\IgnorePar} +>>>> + + + +\<ams book\><<< +\ConfigureMark{chapter} + {\HCode{<span class="titlemark">}\chaptername + \ \thechapter\HCode{</span>}} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}% + \TitleMark{\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{chapterTITLE+}{\thechapter\space#1} +>>> + +\<ams book\><<< +\ConfigureMark{appendix}{\HCode{<span class="titlemark">}% + \appendixname \ \thechapter\HCode{</span>}} +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}% + \TitleMark{\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{likechapterTITLE+}{#1} +>>> + + +\<ams art,proc\><<< +\Configure{endsection} + {part} +\Configure{endsubsection} + {section,part} +\Configure{endsubsubsection} + {subsection,section,part} +\Configure{endparagraph} + {subsubsection,subsection,section,part} +>>> + + + +\<ams book\><<< +\Configure{endpart}{likepart} +\Configure{endlikepart}{endpart} +\Configure{endchapter}{likechapter,appendix,part,likepart} +\Configure{endlikechapter}{chapter,appendix,part,likepart} +\Configure{endappendix}{chapter,likechapter,part,likepart} +\Configure{endsection} + {chapter,likechapter,appendix,part,likepart} +\Configure{endsubsection} + {section,chapter,likechapter,appendix,part,likepart} +\Configure{endsubsubsection} + {subsection,section,chapter,likechapter,appendix,part,likepart} +\Configure{endparagraph} + {subsubsection,subsection,section,chapter,likechapter,% + appendix,part,likepart} +>>> + + + + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Tocs at Cut Points} +%%%%%%%%%%%%%%%%%%% + + +\<ams art,proc\><<< +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +>>> + +\<ams book\><<< +\:CheckOption{1} \if:Option + |<toc book options 1|> +\fi +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%% +\section{amsppt.sty} +%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure html4 amsppt\><<< +\ifx \EnditemitemList\:UnDef + \Configure{itemitem} + {}{} + {\par{\Configure{HtmlPar}{\Tg<p class="itemitem" \a:LRdir>} + {\Tg<p class="itemitem" \a:LRdir>} {}{}% + \:xhtml{\Configure{HtmlPar}{\EndP\Tg<div class="itemitem" \a:LRdir>} + {\EndP\Tg<div class="itemitem" \a:LRdir>} + {\Tg</div>}{\Tg</div>}}% + \noindent}} + {} + \Css{.itemitem {margin-left: 5em; text-indent: -2em; + margin-top: 0.5em; margin-bottom: 0.5em;}} +\fi +|<32,4 amsppt|> +|<4 amsppt|> +>>> + + + + + +\<4 amsppt\><<< +\Configure{title} + {\IgnorePar\par\HCode{<div\Hnewline class="title">}} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar} +\Css{div.title {margin-top: 0.5em; + font-weight: bold; text-align:center;}} + +\Configure{author} + {\IgnorePar\par\HCode{<div\Hnewline class="author">}} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar} +\Css{div.author {text-align:center}} + +\Configure{affil} + {\IgnorePar\par\HCode{<div\Hnewline class="affil">}} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar} +\Css{.affil {text-align:center}} + +\Configure{date} + {\IgnorePar\par\HCode{<div\Hnewline class="date" \a:LRdir>}} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar + \append:def\c:footnote{ }% + } +\Css{.date {text-align:center}} + +\Configure{abstract} + {\IgnorePar\par + \HCode{<div\Hnewline class="abstract">}\ShowPar\IgnoreIndent\par} + {} + {} + {\IgnorePar\EndP\HCode{</div>}\IgnorePar} +\Css{.abstract, .subjclass, .thanks, .keywords + {margin-left:5\%; margin-right:5\%;}} + +\Configure{subjclass} + {\ifx \m:top\:Undef + \let\m:top|=\relax \Css{.subjclass {margin-top:1em; }}% + \fi \Tg<div class="subjclass">} + {\Tg</div>} +\Configure{thanks} + {\ifx \m:top\:Undef + \let\m:top|=\relax \Css{.thanks {margin-top:1em; }}% + \fi \Tg<div class="thanks">} + {\Tg</div>} +\Configure{keywords} + {\ifx \m:top\:Undef + \let\m:top|=\relax \Css{.keywords {margin-top:1em; }}% + \fi \ifvmode \IgnorePar\fi\EndP\Tg<div class="keywords">} + {\ifvmode \IgnorePar\fi \EndP\Tg</div>} +>>> + +\<32 amsppt, 32,4 vanilla\><<< +\Configure{title} + {\IgnorePar\EndP\HCode{<div class="title">}\begingroup\bf} + {\endgroup\IgnorePar\HCode{</div>}} +\Css{div.title {margin-top: 0.5em;}} +\Configure{author} + {\IgnorePar\EndP\HCode{<br /><div class="author">}\IgnorePar\par} + {\IgnorePar\EndP\HCode{</div>}} + \Css{div.author{text-align:center;}} +>>> + +\<32,4 amsppt\><<< +\Configure{specialhead}{}{} + {\IgnorePar\EndP\HCode{<h1 class="amsspecialheadHead"\a:LRdir>}} + {\HCode{</h1>}\IgnoreIndent} +\ConfigureToc{specialhead} + {\HCode{<div class="center">}\ignorespaces}{ } + {}{\HCode{</div>}} +\Configure{head}{}{} + {\IgnorePar\EndP\HCode{<h2 class="amsheadHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent} +\ConfigureToc{head} + {\ignorespaces}{ }{}{\HCode{<br />}} +\Configure{subhead}{}{} + {\IgnorePar\EndP\HCode{<h3 class="amssubheadHead"\a:LRdir>}} + {\HCode{</h3>}\IgnoreIndent} +\ConfigureToc{subhead} + {\:nbsp\:nbsp\:nbsp\:nbsp\ignorespaces} { } + {} {\HCode{<br />}} +\Configure{subsubhead}{}{} + {\IgnorePar\EndP\HCode{<h4 class="amssubsubheadHead"\a:LRdir>}} + {\HCode{</h4>}\IgnoreIndent} +\ConfigureToc{subsubhead} + {\:nbsp\:nbsp\:nbsp\:nbsp\:nbsp% + \:nbsp\:nbsp\:nbsp\ignorespaces} { } {} {\HCode{<br />}} +\Configure{block} + {\IgnorePar\EndP + \HCode{<table cellpadding="15"><tr><td>}\IgnorePar\par} + {\IgnorePar\HCode{</td></tr></table>}\IgnorePar\par} +|<amsppt captions|> +\Configure{roster} + {\IgnorePar\EndP\HCode{<table>}\let\end:item|=\empty} + {\IgnorePar\end:item\HCode{</table>}\IgnorePar\par} + {\IgnorePar\end:item \HCode{<tr style="vertical-align:top;"><td>} + \def\end:item{\EndP\HCode{</td></tr>}}} + {\:nbsp\EndP\HCode{</td><td>}\ShowPar} + {\IgnorePar\EndP\HCode{<table>}\let\end:iitem|=\empty} + {\IgnorePar\end:iitem\HCode{</table>}\IgnorePar\par} + {\IgnorePar\end:iitem\HCode{<tr style="vertical-align:top;"><td>}} + {\HCode{</td><td>} + \def\end:iitem{\EndP\HCode{</td></tr>}}} +|<bib in amsppt.sty|> +>>> + +%%%%%%%%%%%%%%%%%%%%%%%% +\section{amstex.tex} +%%%%%%%%%%%%%%%%%%%%%%%% + +\<amstex.tex m:env\><<< +|<amsmath / amstex1 m:env|> +>>> + +\<NO\><<< +\def\m:env#1{\:xhtml{\IgnorePar\EndP}\HCode{<div class="center"><table class="#1" + border="0" cellpadding="0" cellspacing="15"><tr><td>}} +\def\endm:env{\HCode + {</td></tr></table></center>}\IgnorePar} + \Css{div.center{text-align:center;}} +>>> + +\<amsmath / amstex1 m:env\><<< +\def\m:env#1{\relax\ifmmode\else\par\fi\:xhtml{\IgnorePar\EndP}% + \HCode{<div class="center-#1"><table class="#1"\Hnewline + border="0" cellpadding="0" cellspacing="15"><tr><td>} + \Css{div.center-#1{text-align: center;}} + } +\def\endm:env{\:xhtml{\IgnorePar\EndP}% + \HCode{</td></tr></table></center>}\IgnorePar + \ifmmode\else\par\fi} +>>> + + +\<shared amstex.tex matrix 4.0t\><<< +\Configure{linebreak}{\HCode{<br />}} +|<amstex.tex m:env|> +>>> + +\<configure html4-math amstex\><<< +\Configure{pmatrix} + {\bgroup\m:env{pmatrix}} + {\endm:env\egroup} +\Configure{smallmatrix} + {\bgroup\m:env{smallmatrix}\Picture+{}} + {\EndPicture\endm:env\egroup} + {}{} {}{} +\Configure{bmatrix} + {\bgroup\m:env{bmatrix}} + {\endm:env\egroup} +\Configure{vmatrix}{\bgroup\m:env{vmatrix}}{\endm:env\egroup} +\Configure{Vmatrix}{\bgroup\m:env{Vmatrix}}{\endm:env\egroup} +\Configure{aligned} + {\bgroup\m:env{aligned}\Picture+{}} + {\EndPicture\endm:env\egroup} + {}{}{}{} +\Configure{xalignat} + {\bgroup\m:env{xalignat}} + {\endm:env\egroup} + {}{}{}{} +\Configure{xxalignat} + {\bgroup\m:env{xxalignat}} + {\endm:env\egroup} + {}{}{}{} +\Configure{multline} + {\bgroup\m:env{multline}\Picture+{}\vtop\bgroup$$} + {$$\egroup\EndPicture\endm:env\egroup} + {}{} +\Configure{alignedat} + {\bgroup\m:env{alignedat}\Picture+{}} + {\EndPicture\endm:env\egroup} + {}{}{}{} +\Configure{gathered} + {\bgroup\m:env{gathered}\Picture+{}} + {\EndPicture\endm:env\egroup} + {}{}{}{} +>>> + +% \Configure{topaligned}{\m:env{topaligned}}{\endm:env} +% \Configure{botaligned}{\m:env{botaligned}}{\endm:env} + +\<configure html4-math amstex\><<< +|<shared amstex.tex matrix 4.0t|> +|<tabular amstex.tex matrix 4.0t|> +|<tabular amstex.tex align 4.0t|> +|<nonpic amstex.tex cases 4.0t|> +\:CheckOption{pic-matrix} \if:Option + \Configure{matrix} + {\m:env{matrix}\Picture+{}} {\EndPicture\endm:env} + {}{} {}{} +\else + \Log:Note{for pictorial matrix, + use the command line option `pic-matrix'} +\fi +\:CheckOption{pic-align} \if:Option + \Configure{align} + {\m:env{align}\Picture+{}} \EndPicture{\endm:env} + {} {} {} {} +\else + \Log:Note{for pictorial align, + use the command line option `pic-align'} + \Configure{align} + {\HCode{<table\Hnewline class="align">}} {\HCode{</table>}} + {\HCode{<tr\Hnewline>}} {\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +\fi +\:CheckOption{pic-cases} \if:Option + \Configure{cases} + {\m:env{cases}\Picture+{}}{\EndPicture\endm:env} +\else + \Log:Note{for pictorial cases, + use the command line option `pic-cases'} +\fi +\Configure{alignat} + {\bgroup\m:env{alignat}\Picture+{}} + {\EndPicture\endm:env \egroup} + {}{} {}{} +\Configure{gather} + {\bgroup\m:env{gather}\Picture+{}} + {\EndPicture\endm:env\egroup} + {}{} {}{} +|<32,4 picmath amstex.tex|> +>>> + +\<32,4 picmath amstex.tex\><<< +\Configure{frac}{\Picture+{ style="text-align:middle"}}{\EndPicture} +\Configure{dfrac}{\Picture+{ style="text-align:middle"}}{\EndPicture} +\Configure{tfrac}{\Picture+{ style="text-align:middle"}}{\EndPicture} +\Configure{binom}{\Picture+{ style="text-align:middle"}}{\EndPicture} +\Configure{dbinom}{\Picture+{ style="text-align:middle"}}{\EndPicture} +\Configure{tbinom}{\Picture+{ style="text-align:middle"}}{\EndPicture} +\Configure{boxed}{\Picture+{ style="text-align:middle"}}{\EndPicture} +>>> + +\<tabular amstex.tex matrix 4.0t\><<< +\Configure{matrix} + {\HCode{<table\Hnewline class="matrix">}} {\HCode{</table>}} + {\HCode{<tr\Hnewline>}} {\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +\Configure{cases}{\m:env{cases}}{\endm:env} +>>> + + + +\section{amsthm.sty} + +\<configure html4 amsthm\><<< +\ConfigureEnv{proof}{\par\leavevmode}{\par\ShowPar}{}{} +|<shared ams thm/cls|> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{amsmath} +%%%%%%%%%%%%%%%%%%%% + +AmsMath redefines display math to equation*. We should follow it, but not in the MathJax mode. + +\<configure html4-math amsmath\><<< +\ifOption{mathjax}{}{% +\DeclareRobustCommand\[{% +\bgroup% + \mathdisplay@push% + \st@rredtrue \global\@eqnswfalse% + \mathdisplay{equation*}% +\csname st:Math\endcsname +} + +\DeclareRobustCommand\]{% +\csname ed:Math\endcsname + \endmathdisplay{equation*}% + \mathdisplay@pop% + \ignorespacesafterend% +\egroup +} +\Configure{[]}{\protect\nested:math}{} +}% +>>> + +\<configure html4-math amsmath\><<< +\Configure{equation} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<table\Hnewline class="equation"><tr><td>}\IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP\HCode{</td><td class="equation-label">}} + {\end:TTT\ifmmode\else |<try inline par|>\fi} +\Configure{equation*} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<table\Hnewline class="equation-star"><tr><td>}\IgnorePar + } + {\end:TTT\ifmmode\else |<try inline par|>\fi} +\Css{.equation td{text-align:center; }} +\Css{.equation-star td{text-align:center; }} +\Css{table.equation-star { width:100\%; }} +\Css{table.equation { width:100\%; }} +>>> + +\<configure html4-math amsmath\><<< +\Configure{equation*} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<table\Hnewline class="equation-star"><tr><td>}\IgnorePar + } + {\end:TTT\ifmmode\else |<try inline par|>\fi} +>>> + + +Equations in amsmath.sty are defined in term of gather, and +gather is a one parameter macro. Unlike laktex where the body is +read within the environment, in gather it is read at the \verb'\begin{equation}' point under the conditions that exist there. + +\<configure html4-math amsmath\><<< +\Configure{substack}{\Picture+{}}{\EndPicture} +>>> + + + +\<configure html4-math amsmath\><<< +|<amsmath / amstex1 m:env|> +>>> + +\<configure html4-math amsmath\><<< +\:CheckOption{pic-align} \if:Option + |<amsmath pic-align css|> +\else + |<amsmath align css|> +\fi +\:tempc{align}{align} +\:tempc{alignat}{alignat} +\:tempc{xalignat}{xalignat} +\:tempc{xxalignat}{xxalignat} +\:tempc{flalign}{flalign} +\:tempc{align*}{align-star} +\:tempc{alignat*}{alignat-star} +\:tempc{xalignat*}{xalignat-star} +\:tempc{flalign*}{flalign-star} +>>> + +\<amsmath align css\><<< +\def\:tempc#1#2{% + \Configure{#1} + {\IgnorePar\EndP \HCode{<table\Hnewline class="#2">}} + {\HCode{</table>}} {\HCode{<tr>}} {\HCode{</tr>}} + {\HCode{<td\Hnewline + class="align-\ifnum \HCol>\maxfields@ label\else + \ifodd\HCol\space odd\else even\fi + \fi">}} + {\HCode{</td>}} + \ConfigureEnv{#1}{}{\par}{}{} + } +\Css{table.align, table.alignat, table.xalignat, table.xxalignat, + table.flalign + {width:95\%; margin-left:5\%; white-space: nowrap;}} +\Css{table.align-star, table.alignat-star, + table.xalignat-star, table.flalign-star + {margin-left:auto; margin-right:auto; white-space: nowrap;}} +\Css{td.align-label { width:5\%; text-align:center; }} +\Css{td.align-odd { text-align:right; padding-right:0.3em;}} +\Css{td.align-even { text-align:left; padding-right:0.6em;}} +>>> + +\<amsmath pic-align css\><<< +\def\:tempc#1#2{% + \ConfigureEnv{#1} + {\par\IgnorePar\EndP\HCode{<div class="align">}\Picture*[pict]{}} + {\EndPicture\EndP\HCode{</div>}\par} + {} {}} +\Css{div.align {text-align: center;}} +>>> + +\<configure html4-math amsmath\><<< +\Configure{split} + {\HCode{<table\Hnewline class="split"><tr><td>}} + {\ifvmode \IgnorePar\fi \HCode{</td></tr></table>}} + {\HCode{<br\Hnewline class="split-tr" />}} {} + {\HCode{<br\Hnewline class="split-td" />}} {} +\Configure{smallmatrix} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<table\Hnewline class="smallmatrix">}} {\HCode{</table>}} + {\HCode{<tr>}} {\HCode{</tr>}} + {\HCode{<td\Hnewline>}} {\HCode{</td>}} +>>> + + + +\<configure html4-math amsmath\><<< +\ConfigureEnv{gather*}{\m:env{gather*}}{\endm:env}{}{} +\ConfigureEnv{gathered}{\m:env{gathered}}{\endm:env}{}{} +\ConfigureEnv{matrix}{\m:env{matrix}}{\endm:env}{}{} +\ConfigureEnv{quotation}{\m:env{quotation}}{\endm:env}{}{} +\Configure{equations}{*}{} +>>> + + +A `\verb'\begin{multline}...\end{multline}' is not a standard environment +in the sense that the environment as a whole is read in one piece and +then processed, instead of reading it piecewise and process it as it +goes. That is, we have a behavior similar to that in verbatim +environments. The behavior is due to multline being implemented in +terms of \verb'\gather@#1{..}'. Hence, for the picture environment, we +need to change early the catcodes of `\verb'_' and `\verb'^'. + +\<configure html4-math amsmath\><<< +\ConfigureEnv{multline} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<table\Hnewline class="multline"><tr><td>}\Picture*{}\ExtractHLabel + } + {\EndPicture |<put HLabel|>\end:TTT} + {}{} + {}{} +\ConfigureEnv{multline*} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<table\Hnewline class="multline-star"><tr><td>}\Picture*{}% + } + {\EndPicture \end:TTT} + {}{} +|<extract amsmath labels|> +\Css{table.multline, table.multline-star {width:100\%;}} +>>> + +\<extract amsmath labels\><<< +\def\ExtractHLabel{% + \def\tagform@##1{{% + \ifx \:HLabel\:UnDef \let\:HLabel=\empty \fi + \def\tagform@####1{\expandafter\let\csname ####1\endcsname\def}% + \:HLabel + \expandafter\ifx\csname ##1\endcsname\relax + \let\tagform@=\relax + \let\HCode=\relax + \edef\:temp{\noexpand\append:def\noexpand + \:HLabel{\HCode{<br />}\tagform@{##1}\HCode{<br />}}}% + \:temp + \global\let\:HLabel=\:HLabel + \fi + }}} +\def\PutHLabel{\:HLabel} +>>> + +\<put HLabel\><<< +\ifx \:HLabel\:Undef \else + \HCode{</td><td class="equation-label">}\PutHLabel + \global\let\:HLabel\:Undef +\fi +>>> + + + + +\<configure html4-math amsmath\><<< +\ConfigureEnv{gather} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<table\Hnewline class="gather"><tr><td + class="gather1">}\Picture*{}\ExtractHLabel + } + {\EndPicture |<put HLabel|>\end:TTT} + {}{} +\Css{td.gather {text-align:center; }} +\Css{table.gather {width:100\%;}} +\ConfigureEnv{gather*} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<div\Hnewline class="gather-star">}\Picture*{}% + } + {\EndPicture \HCode{</div>}} + {}{} +\Css{div.gather-star {text-align:center;}} +>>> + + + + + +\<mathml: plain, amsmath, amstex1\><<< +\def\underarrow@#1#2#3{% + \Tg<|.munder>\Tg<|.mrow\Hnewline>#1\Tg</|.mrow>% + \Tg<|.mrow\Hnewline>#2\Tg</|.mrow>% + \Tg</|.munder>}% + +\def\overarrow@#1#2#3{% + \Tg<|.mover>\Tg<|.mrow + class="fill">#1\Tg</|.mrow>% + \Tg<|.mrow\Hnewline>{#2#3}\Tg</|.mrow>% + \Tg</|.mover>}% +>>> + +\<mathml: plain, fontmath, amsmath, amstex1\><<< +\def\overrightarrow{\mathpalette{\overarrow@\rightarrow}} +\def\overleftarrow{\mathpalette{\overarrow@\leftarrow}} +\def\overleftrightarrow{\mathpalette{\overarrow@\leftrightarrow}} + +\def\underrightarrow{\mathpalette{\underarrow@\rightarrow}} +\def\underleftarrow{\mathpalette{\underarrow@\leftarrow}} +\def\underleftrightarrow{\mathpalette{\underarrow@\leftrightarrow}} +>>> + + +\<mathml: plain, fontmath, amsmath, amstex1NO\><<< +\def\overrightarrow{\mathpalette{\overarrow@\rightarrow}} +\def\overleftarrow{\mathpalette{\overarrow@\leftarrow}} +\def\overleftrightarrow{\mathpalette{\overarrow@\leftrightarrow}} + +\def\underrightarrow{\mathpalette{\underarrow@\rightarrow}} +\def\underleftarrow{\mathpalette{\underarrow@\leftarrow}} +\def\underleftrightarrow{\mathpalette{\underarrow@\leftrightarrow}} +>>> + + The \verb'\HCode{}' in \verb'\sideset' is for catching superscripts and subscripts + + +\<32,4 picmath amsmath,amstex1\><<< +|<32,4 picmath: plain, fontmath, amsmath, amstex1|> +>>> + +\<configure html4-math amsmath\><<< +|<32,4 picmath amsmath,amstex1|> +>>> + +\<configure html4-math amsmath\><<< +\Configure{overset} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{underset} {\Picture+{ \a:@Picture{}}} {\EndPicture} +>>> + + +\<configure html4-math amsmath\><<< +\Configure{xrightarrow} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{xleftarrow} {\Picture+{ \a:@Picture{}}} {\EndPicture} +\Configure{genfrac} + {\Picture+{}\bgroup} {}{}{}{}{\egroup\EndPicture} +>>> + +\section{amstex.sty (amstex1)} + +\<configure html4 amstex1\><<< +\ConfigureEnv{aligned}{\m:env{aligned}}{\endm:env}{}{} +|<amsmath / amstex1 m:env|> +>>> + + +\<configure html4-math amstex1\><<< +|<32,4 picmath amsmath,amstex1|> +\ConfigureEnv{equation*}{\m:env{equation*}}{\endm:env}{}{} +\ConfigureEnv{equation}{\m:env{equation}}{\endm:env}{}{} +\Configure{eqn}{\HCode{</td><td>}} +\ConfigureEnv{align}{\m:env{align}}{\endm:env}{}{} +\ConfigureEnv{align*}{\m:env{align*}}{\endm:env}{}{} +\ConfigureEnv{alignat}{\m:env{alignat}}{\endm:env}{}{} +\ConfigureEnv{alignat*}{\m:env{alignat*}}{\endm:env}{}{} +\ConfigureEnv{xalignat}{\m:env{xalignat}}{\endm:env}{}{} +\ConfigureEnv{xxalignat}{\m:env{xxalignat}}{\endm:env}{}{} +\ConfigureEnv{xalignat*}{\m:env{xalignat*}}{\endm:env}{}{} +\ConfigureEnv{aligned}{\m:env{aligned}}{\endm:env}{}{} +\ConfigureEnv{alignedat}{\m:env{alignedat}}{\endm:env}{}{} +\ConfigureEnv{gather}{\m:env{gather}}{\endm:env}{}{} +\ConfigureEnv{gather*}{\m:env{gather*}}{\endm:env}{}{} +\ConfigureEnv{gathered}{\m:env{gathered}}{\endm:env}{}{} +\ConfigureEnv{matrix}{\m:env{matrix}}{\endm:env}{}{} +\ConfigureEnv{multline}{\m:env{multline}}{\endm:env}{}{} +\ConfigureEnv{multline*}{\m:env{multline*}}{\endm:env}{}{} +\ConfigureEnv{pmatrix}{\m:env{pmatrix}}{\endm:env}{}{} +\ConfigureEnv{bmatrix}{\m:env{bmatrix}}{\endm:env}{}{} +\ConfigureEnv{vmatrix}{\m:env{vmatrix}}{\endm:env}{}{} +\ConfigureEnv{Vmatrix}{\m:env{Vmatrix}}{\endm:env}{}{} +\Configure{gather}{\Picture*{}}{\EndPicture} +>>> + + + + + +\<config amstex1 pic-math utilities\><<< +\Configure{aligned} + {\Picture*{}}{\EndPicture} {}{}{}{} +>>> + +\<configure html4-math amstex1\><<< +\Configure{dotsc} {\pic:sym{dotsc}} +\Configure{dotso} {\pic:sym{dotso}} +>>> + + + +\<configure html4-math amsmath\><<< +\Configure{intertext} + {\IgnorePar \ifinalign@ + \HCode{\ifnum \HRow>0 </td></tr>\fi<tr><td + colspan="\ifnum \HRow>0 \HCol\else 15\fi" + class="intertext">}% + \else \ifingather@ + \HCode{<tr><td colspan="\HCol" class="intertext">}% + \fi\fi + } + {\ifvmode \IgnorePar \fi \EndP\ifinalign@ + \HCode{</td></tr>\ifnum \HRow>0 <tr><td>\fi}% + \else \ifingather@ + \HCode{</td></tr>}% + \fi\fi + } +>>> + + + +\<configure html4-math amsmath\><<< +\Configure{@begin} + {split} + {\ifx \EndPicture \:UnDef \else \let\tagform@=\:gobble \fi} +>>> + + + + + +%%%%%%%%%%%%%%%%% +\section{amscd} +%%%%%%%%%%%%%%%%%% + +\<configure html4 amscd\><<< +\ConfigureEnv{CD} + {\Picture*{ class="CD"}$} {$\EndPicture} {}{} +\Css{.CD {text-align:center}} +>>> + + + + + + + +%%%%%%%%%%%%%%%% +\section{Memoir} +%%%%%%%%%%%%%%%%% + +\<configure html4 memoir\><<< +\Configure{poemline} + {\HCode{<span class="poemline">}} {\HCode{</span>}} +\Css{.poemline {text-align:right; width:6em;}} + +\Configure{legend}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="legend">}}{\HCode{</div>}} + +\Configure{book} +{\ifvmode\IgnorePar\fi\EndP\HCode{<h2 class="bookHead"><span class="booknumber">}% +\bookname\refstepcounter{book}\space\thebook\HtmlParOff\HCode{</span><span class="booktitle">}} +{\HCode{</span></h2>}\HtmlParOn}{}{} +\Css{.booknumber{display:block;}} +\Configure{toToc}{book}{part} + +|<abstract|> +>>> + + +%%%%%%%%%%%%%%%% +\section{Elsvier Articles (elsart)} +%%%%%%%%%%%%%%%%% + +\<configure html4 elsart\><<< +\Configure{abstract} + {\HCode{<div\Hnewline class="abstract">}\par\ShowPar} + {} + {\ifvmode\IgnorePar\fi \EndP\HCode{</div>}} +\Configure{keyword} + {\HCode{<div\Hnewline class="keyword">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} +\ConfigureEnv{abstract} + {\ifvmode \IgnorePar\fi \EndP} + {\ifvmode \IgnorePar\fi \EndP} + {}{} +\ConfigureEnv{keyword} + {\ifvmode \IgnorePar\fi \EndP} + {\ifvmode \IgnorePar\fi \EndP} + {}{} +\Css{div.abstract, div.abstract p, div.keyword {width:100\%; + text-align:left; margin-left:0em; margin-right:0em; +}} +\Css{div.abstract { border-top: 1px solid black; }} +\Css{div.keyword{ border-bottom: 1px solid black;}} +>>> + +\<configure html4 elsart\><<< +\ConfigureEnv{frontmatter} + {\EndP\IgnorePar + \HCode{<div class="frontmatter"\Hnewline>}} + {\ifvmode\IgnorePar\fi \EndP\HCode{</div>}\IgnorePar} + {}{} +\Css{div.frontmatter {text-align:center; width:100\%;}} +>>> + +\<configure html4 elsart\><<< +\Configure{address} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div\Hnewline class="address">}} + {\ifvmode\IgnorePar\fi \EndP + \HCode{</div>}\ShowPar} +>>> + + +%%%%%%%%%%%%%%%%%%%%% +\section{American Psychological Association (APA)} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 apa\><<< +|<apa maketitle|> +|<apa abstract|> +|<apa captions|> +|<apa lists|> +\Configure{note} + {\HCode{<div class="note">}\bgroup + |<apa maketitle br cr|>% + } + {\egroup \HCode{</div>}} +\Css{div.note{text-align:left; margin-top:1em; }} +>>> + + +\<apa lists\><<< +\ConfigureList{enumerate}% + {|<enumerate I|>} + {|<enumerate II|>} + {|<enumerate III|>} + {|<enumerate IV|>} +\ConfigureList{APAenumerate}% + {|<enumerate I|>} + {|<enumerate II|>} + {|<enumerate III|>} + {|<enumerate IV|>} +\Configure{seriate} + {\HCode{<span class="seriate">}\let\end:seriate=\empty} + {\end:seriate\HCode{</span>}} + {\end:seriate \def\end:seriate{\HCode{</span>}}% + \HCode{<span class="seriate-item">}\HCode{<span class="seriate-label">}} + {\HCode{</span>}} +\ConfigureList{APAitemize}% + {\EndP\HCode{<ul class="itemize" \a:LRdir >}\PushMacro\end:itm + \global\let\end:itm=\empty + } + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP\HCode{</li></ul>}\ShowPar + } + {\end:itm \gdef\end:itm{\EndP\Tg</li>}\DeleteMark} + {\HCode{<li class="itemize">}\AnchorLabel } +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{JHEP} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 JHEP\><<< +|<latex shared part config|> +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<acm paragraph config|> +\Css{.sectionHead, .partHead{text-transform:uppercase}} +\Css{.subsubsectionHead, .likesubsubsectionHead {font-style: italic;}} +>>> + +\<configure html4 JHEP\><<< +\Configure{abstract} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="abstract">}\IgnoreIndent} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{accepted} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="accepted">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{author} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="author">}\par \ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{conference} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="conference">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{dedicated} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="dedicated">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{keywords} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="keywords">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{preprint} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="preprint">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{received} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="received">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{title} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="title">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{.abstract{margin-top:1em; margin-bottom:1em;}} +\Css{.accepted{margin-top:1em; margin-bottom:1em; text-align:right;}} +\Css{div.author{margin-top:1em; margin-bottom:1em; margin-left:2em;}} +\Css{.conference{margin-top:1em; margin-bottom:1em;}} +\Css{.dedicated{margin-top:1em; margin-bottom:1em;}} +\Css{.keywords{margin-top:1em; margin-bottom:1em;}} +\Css{.preprint{margin-top:1em; margin-bottom:1em;}} +\Css{.received{margin-top:1em; margin-bottom:1em; text-align:right;}} +\Css{.title{margin-top:1em; margin-bottom:1em;}} +>>> + +\<configure html4 JHEP\><<< +|<config bibitem|> +|<thebib config|> +|<JHEP maketitle footnote|> +>>> + +\<JHEP thanks author date and\><<< +\Configure{thanks} + {\HCode{<div class="thanks">}}{\HCode{</div>}} +|<thank for thanks|> +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + + +\<JHEP end-thanks author date and\><<< +\Configure{thanks} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\ifvmode\IgnorePar\fi\EndP\egroup\RecallEndP } +|<thanks for thanks EndP|> +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{acm-proc-article-sp} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html4 acm-proc-article-sp\><<< +|<config bibitem|> +|<acm-proc-article-sp thebib config|> +|<config captions|> +|<acm proof|> +>>> + + + +\<configure html4 acm-proc-article-sp\><<< +\Configure{qed} + {\Picture+[Q.E.D.]{}\o:qed:\EndPicture + \SavePicture\qed:sym[Q.E.D.]} +>>> + +\<configure html4 acm-proc-article-sp\><<< +|<latex shared part config|> +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<acm paragraph config|> +\Css{.sectionHead, .partHead{text-transform:uppercase}} +\Css{.subsubsectionHead, .likesubsubsectionHead {font-style: italic;}} +>>> + +\<acm paragraph config\><<< +\ConfigureMark{paragraph} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\theparagraph\space + \HCode{</span>}\fi} +\Configure{paragraph}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{<h5 class="paragraphHead"\a:LRdir>}% + \TitleMark\space \HtmlParOff} + {\HCode{</h5>}\HtmlParOn \IgnoreIndent\egroup} +\Configure{likeparagraph}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{<h5 class="likeparagraphHead"\a:LRdir>}% + \HtmlParOff} + {\HCode{</h5>}\HtmlParOn \IgnoreIndent\egroup} +\Css{.paragraphHead, .likeparagraphHead { font-style:italic; }} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{scrbook} +%%%%%%%%%%%%%%%%%%%% + +\<configure html4 scrbook\><<< +|<scr article,report,book|> +|<scr report,book|> +|<shared bib env|> +|<thebib config|> +|<description 4|> +%\def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +\def\:tempa{ + \CutAt{part} + \CutAt{likepart} + |<cut toc scr: part|>% +} +\def\:tempb{ + |<tocat scr: part|> + \CutAt{chapter,likechapter,addchap,appendix,part} + \CutAt{likechapter,addchap,appendix,part} + \CutAt{addchap,chapter,likechapter,appendix,part} + \CutAt{appendix,chapter,likechapter,addchap,part} + |<tocat: ch|>% +} +\def\:tempc{ + |<tocat scr: ch|>% + \CutAt{section,likesection,chapter,likechapter,addchap,appendix,part} + \CutAt{likesection,chapter,likechapter,addchap,appendix,part} + |<cut toc: sec|>% +} +\def\:tempd{ + |<tocat scr: section|>% + |<tocat scr: subsection|>% + |<cut toc: subsec|>% +} + +\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \:tempd \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax \:tempa \:tempc + \else \:tempa \:tempb \fi +\else\:CheckOption{1} \if:Option + \:tempa +\else + \Log:Note{for sectioning pagination, + use the command line option `1', `2', or `3'}% +\fi \fi \fi \fi + +\:CheckOption{1} \if:Option + |<toc scrbook options 1|> +\fi + +|<scrbook end units|> +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi + +|<config lists of figures and tables|> + +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}} +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} + +\ConfigureMark{subparagraph}{\thesubparagraph} +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likesubparagraph}{}{} + {\ShowPar\HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +\ConfigureEnv{picture} + {\bgroup\ifvmode \Configure{HtmlPar} + {\EndP\HCode{<!--l. \the\inputlineno-->% +}\HCode{<p + class="center" \a:LRdir>}}% + {\EndP\HCode{<!--l. \the\inputlineno-->% +}\HCode{<p + class="center" \a:LRdir>}}% + {\:xhtml{\Tg</p>}}{\:xhtml{\Tg</p>}} \ShowPar\leavevmode + \fi} + {\egroup}{}{} +|<quote config|> +|<book-report-article index|> +|<scr reprt/book captions|> +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>\par\ShowPar} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} +|<base font size|> +|<quotations|> +\Configure{listof}{}{}{}{\HCode{<br />}}{}{ } +|<latex shared part config|> +>>> + +\<scrbook end-thanks author date and\><<< +\Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<br class="and" \a:LRdir/>}} + {\HCode{<br />}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + + + +\<scrbook thanks author date and\><<< +\Configure{thanks author date and} + {\HCode{<div class="thanks" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="author" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} + +>>> + + +\<scr report,book\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\thesection\HCode{</span>}\fi } +|<section TITLE+|> +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark~~\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \ShowPar \par} +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \ShowPar\par} +\Configure{likesectionTITLE+}{#1} +>>> + + + + +\<scr report,book\><<< +|<shared h5 subsubsection|> +\ConfigureMark{appendix}{\HCode{<span class="titlemark">}% + \thechapter\HCode{</span>}} +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}\TitleMark{}.~~} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{likechapterTITLE+}{#1} +\Configure{addchap}{}{} + {\IgnorePar\EndP\HCode{<h2 class="addchapHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent\par} +>>> + +\<configure html4 scrbook\><<< +\ConfigureMark{chapter} + {\if@mainmatter + \HCode{<span class="titlemark">}\thechapter\HCode{</span>}~~\fi} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}\TitleMark{}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{chapterTITLE+}{\if@mainmatter\thechapter\space\fi#1} +\renewcommand\thechapter {\if@mainmatter\@arabic\c@chapter\fi} +>>> + +\<configure html4 scrreprt\><<< +\ConfigureMark{chapter} + {\HCode{<span class="titlemark">}\thechapter\HCode{</span>}~~} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}\TitleMark{}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{chapterTITLE+}{\thechapter\space#1} +>>> + +\<scr article,report,book\><<< +\ConfigureMark{minisec}{} +\Configure{minisec}{}{} + {\ifvmode \IgnorePar \fi \EndP + \bgroup \IgnorePar\HCode{<h5 class="minisecHead"\a:LRdir>}% + \TitleMark\space \HtmlParOff} + {\HCode{</h5>}\HtmlParOn \IgnoreIndent\egroup\par\ShowPar} +>>> + +\<scrbook end units\><<< +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsection} + {likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endchapter}{likechapter,addchap,appendix,part,likepart} +\Configure{endlikechapter}{chapter,appendix,part,likeparaddchap,addchap} +\Configure{endaddchap}{chapter,likechapter,appendix,part,likepart} +\Configure{endappendix}{chapter,likechapter,addchap,part,likepart} +>>> + + +%%%%%%%%%%%%%%%%%%% +\section{scrreprt} +%%%%%%%%%%%%%%%%%%% + + + + +\<configure html4 scrreprt\><<< +%\def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} + +|<shared bib env|> +|<thebib config|> + +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi + +|<config lists of figures and tables|> +\ConfigureEnv{picture} + {\bgroup\ifvmode \Configure{HtmlPar} + {\EndP\HCode{<!--l. \the\inputlineno-->% +}\HCode{<p + class="center" \a:LRdir>}}% + {\EndP\HCode{<!--l. \the\inputlineno-->% +}\HCode{<p + class="center" \a:LRdir>}}% + {\:xhtml{\Tg</p>}}{\:xhtml{\Tg</p>}} \ShowPar\leavevmode + \fi} + {\egroup}{}{} + +|<quote config|> +|<book-report-article index|> +|<scr reprt/book captions|> + +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>\par\ShowPar} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} +|<base font size|> +|<quotations|> + +\Configure{listof}{}{}{}{\HCode{<br />}}{}{ } + + +|<latex shared part config|> + +\ConfigureEnv{abstract}{\:xhtml{\IgnorePar\EndP}\HCode + {<table\Hnewline class="abstract"><tr><td\Hnewline>}} + {\EndP\HCode{</td></tr></table>}}{}{} +\Css{.abstract p {margin-left:5\%; margin-right:5\%;}} +\Css{table.abstract {width:100\%;}} + +\def\:tempa{ + \CutAt{part} + \CutAt{likepart} + |<cut toc scr: part|>% +} +\def\:tempb{ + |<tocat scr: part|>% + \CutAt{chapter,likechapter,addchap,appendix,part} + \CutAt{likechapter,addchap,appendix,part} + \CutAt{addchap,chapter,likechapter,appendix,part} + \CutAt{appendix,chapter,likechapter,addchap,part} + |<tocat: ch|>% +} +\def\:tempc{ + |<tocat scr: ch|>% + \CutAt{section,likesection,chapter,likechapter,addchap,appendix,part} + \CutAt{likesection,chapter,likechapter,addchap,appendix,part} + |<cut toc: sec|>% +} +\def\:tempd{ + |<tocat scr: section|>% + |<tocat scr: subsection|>% + |<cut toc: subsec|>% +} + +\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \:tempd \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \:tempa \:tempc \:tempd + \else \:tempa \:tempb \:tempc \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax \:tempa \:tempc + \else \:tempa \:tempb \fi +\else\:CheckOption{1} \if:Option + \:tempa +\else + \Log:Note{for sectioning pagination, + use the command line option `1', `2', or `3'}% +\fi \fi \fi \fi + +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +|<scrreprt end units|> +\Configure{addchapTITLE+}{#1} +\def\tocaddchap#1#2#3{\par + \HCode{<span class="addchapToc" \a:LRdir>}#2\HCode{</span>}\par}% +>>> + + +\<scrreprt end-thanks author date and\><<< +\Configure{thanks author date and} + {\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi} + {\EndP\egroup\RecallEndP } + {\HCode{<div class="author" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<br class="and" \a:LRdir/>}} + {\HCode{<br />}} +|<thanks for thanks p|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + +\<scrreprt thanks author date and\><<< +\Configure{thanks author date and} + {\HCode{<div class="thanks" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="author" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<div class="date" \a:LRdir>}}{\HCode{</div>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +|<thank for thanks|> +\Css{div.author, div.date {text-align:center;}} +\Css{div.thanks{text-align:left; margin-left:10\%; font-size:85\%; + font-style:italic; }} +>>> + +\<configure html4 scrartcl\><<< +|<scr article,report,book|> +>>> + +\<configure html4 scrreprt\><<< +|<scr article,report,book|> +|<scr report,book|> +|<description 4|> +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}} +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} + +\ConfigureMark{subparagraph}{\thesubparagraph} +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likesubparagraph}{}{} + {\ShowPar\HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +>>> + +\<scrreprt end units\><<< +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} + +\Configure{endsection} + {likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,addchap,appendix,part,likepart} + +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} + +\Configure{endaddchap}{likechapter,appendix,part,likepart,chapter} +\Configure{endchapter}{likechapter,appendix,part,likepart,addchap} +\Configure{endlikechapter}{chapter,appendix,part,likepart,addchap} +\Configure{endappendix}{chapter,likechapter,part,likepart,addchap} +>>> + + +%%%%%%%%%%%%%% +\section{Europe CV} +%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{General} +%%%%%%%%%%%%% + +The following configuration is for the main page which is typeset as a +longtable + +\<configure html4 europecv\><<< +\Css{table.longtable[rules] {border-left:0pt; border-right:0pt; }} +\Css{table.longtable td.td00{ padding-left:5pt; padding-right:5pt; }} +>>> + +\<configure html4 europecv\><<< +\Configure{telephone} + {\HCode{<span class="phone">}} + {\HCode{</span>}} + {\HCode{<span class="mobile">}} + {\HCode{</span>}} +\Css{span.phone{margin-right:2em;}} +>>> + + +%%%%%%%%%%%%% +\subsection{Language} +%%%%%%%%%%%%% + + + +\<configure html4 europecv\><<< +\Configure{languageheader} + {\hbox{\HCode{<div class="languageheader">}}% + \Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP \HCode{<table>}} + {\HCode{</table>}} + {\HCode{<tr class="languageheader-tr-\HRow">}} + {\HCode{</tr>}} + {\HCode{<td class="languageheader-\HCol" + \ifnum \HMultispan>1 colspan="\HMultispan"\fi>}% + \Configure{HtmlPar}{}{}{}{}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td>}}% + } + {\hbox{\HCode{</div>}}} +\Css{.languageheader-tr-1 .languageheader-1 td, + .languageheader-tr-1 .languageheader-3 td + { width:40\%; text-align:center; }} +\Css{.languageheader-tr-1 .languageheader-5 td + { width:20\%; text-align:center; }} +\Css{.languageheader-tr-2 td + { width:20\%; text-align:center; + white-space:normal; }} +\Css{.languageheader {border-top:solid black 2pt; + border-bottom:solid black 1pt; }} +>>> + + +\<configure html4 europecv\><<< +\Configure{ecvCEF} + {\hbox{\HCode{<div class="language-cell">}}% + \Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP \HCode{<table>}} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td class="language-cell-\HCol" + \ifnum \HMultispan>1 colspan="\HMultispan"\fi >}% + \Configure{HtmlPar}{}{}{}{}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td>}}% + } + {\hbox{\HCode{</div>}}} +>>> + + +\<configure html4 europecv\><<< +\Configure{language} + {\hbox{\HCode{<div class="language">}}% + \Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP \HCode{<table>}} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td class="language-\HCol" + \ifnum \HMultispan>1 colspan="\HMultispan"\fi >}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td>}}% + } + {\hbox{\HCode{</div>}}} +>>> + + +\<configure html4 europecv\><<< +\Configure{lastlanguage} + {\hbox{\HCode{<div class="lastlanguage">}}% + \Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP \HCode{<table>}} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td class="lastlanguage-\HCol" + \ifnum \HMultispan>1 colspan="\HMultispan"\fi >}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td>}}% + } + {\hbox{\HCode{</div>}}} +>>> + + +\<configure html4 europecv\><<< +\Css{.lastlanguage-1, .lastlanguage-2, .lastlanguage-3, + .lastlanguage-4, .lastlanguage-5, + .language-1, .language-2, .language-3, .language-4, .language-5 + { width: 20\%; white-space:normal; }} +\Css{div.language {border-bottom:solid black 1pt;} } +\Css{div.lastlanguage {border-bottom:solid black 2pt;} } +\Css{.language td{ padding-top:0pt; padding-bottom:0pt; } } +\Css{div.languageheader table, + div.lastlanguage table, + div.language table { width:100\%; }} +\Css{div.language-cell td { text-align:center; }} +\Css{div.language-cell td.language-cell-1 { width:3em; }} +>>> + + + + + + + + +%%%%%%%%%%%%%% +\section{Res} +%%%%%%%%%%%%%% + +\<configure html4 res\><<< +\ConfigureEnv{resume} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="resume">}\let\endHR=\empty} + {\ifvmode \IgnorePar\fi \EndP + \HCode{\endHR</div>}} + {} {} +\def\c:secnumdepth{-1} + +\Configure{overlapped-section} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar } + {\ifvmode \IgnorePar\fi \EndP\IgnorePar \HCode{</div>}} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h4 class="sectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h4>}% + \HCode{<div class="section">}% + \HtmlParOn \ShowPar \IgnoreIndent \csname par\endcsname} + +\ConfigureEnv{tabbing} + {\ifvmode \IgnorePar\fi \EndP \HCode{<table class="tabbing">}} + {\ifvmode \IgnorePar\fi \HCode{</table>}\par\ShowPar} + {} {} + +\Configure{tabbing} + {\ifvmode \IgnorePar\fi \HCode{<tr>}} + {\HCode{</tr>}} + {\ifvmode \IgnorePar\fi \HCode{<td class="tabbing">}} + {\ifvmode \IgnorePar\fi \HCode{</td>}} + +\Css{table.tabbing {width:100\%; margin-top:1em;}} +\Css{td.tabbing {width:33\%;}} +\Css{div.section {margin-left:3em;}} +>>> + + +\<configure html4 res\><<< +\Configure{centeraddresses} + {} {} + {\HCode{<table class="center-addresses"><tr><td class="first-address">}} + {\HCode{</td><td class="second-address">}} + {\HCode{</td></tr></table>}} +\Css{.center-addresses {width:100\%}} +>>> + +\<configure html4 res\><<< +\Configure{linename} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="linename">}} + {\HCode{</div><hr />}\par} +\Configure{lineaddress} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="line-address">}} + {\HCode{<br />}} + {\HCode{</div>}} +\Css{.line-address {text-align:right;}} +>>> + +\<configure html4 res\><<< +\Configure{boxed-section} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="section"><tr><td class="section">}\par + } + {\ifvmode \IgnorePar\fi \EndP + \HCode{</td></tr></table>}\par} + {\ifvmode \IgnorePar\fi \HtmlParOff} + {\HCode{</td><td class="section-body">}\HtmlParOn\par\ShowPar} +\Css{table.section td{ vertical-align:top;}} +\Css{td.section {padding-right:2em; width:20\%;}} +\Css{table.section {margin-top:1em;}} +>>> + +\<configure html4 res\><<< +\ConfigureEnv{position} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="position">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {}{} +\Css{.position table {width:100\%;}} +>>> + +%%%%%%%%%%%%%% +\section{aa} +%%%%%%%%%%%%%% + +\<configure html4 aa\><<< + |<makeketitle config 4.0t|> + |<configure aa 3.2/4.0t|> +|<latex shared part config|> +|<latex config div 4.0t|> +|<latex shared div config|> +|<shared bib env|> +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi +>>> + +\subsection{Sizes of Fonts} + +pages should honor the base font sizes the +readers choose for their browsers. Hence, under this assumption, all +tex4ht should do is just assure appropriate relative dimensions for +fonts of other sizes. To meet this end, I modified latex.4ht to +automatically include + + \verb'{\Configure{Needs}{Font\string_Size: #1}\Needs{1...}}' + +when options 11pt and 12pt are listed in \verb'\documentclass'. +\<article,report,book\><<< +|<base font size|> +>>> +> + +\<base font size\><<< +{\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} +>>> + + +\<ams art,proc,book\><<< +|<base font size|> +>>> + + + + + + + +\<latex config div 4.0t\><<< +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<latex shared paragraph config|> +>>> + + + +% \Css{.titlemark{margin-right:0.7em;}} abuses NS 4.7 + +\<latex shared section config\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\@seccntformat{section}% + \HCode{</span>}\fi } +|<section TITLE+|> +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</h3>}\HtmlParOn\ShowPar \IgnoreIndent \par} +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \ShowPar \par} +\Configure{likesectionTITLE+}{#1} +>>> +% \def\HCode{<#1>}{\HCode{<#1>}} + + + +The \verb=\ShowPar= is required for examples like below. + +\begin{verbatim} +\documentclass{book} + \usepackage{titlesec} +\begin{document} + +\section*{foobar} +a \par b +\end{document} +\end{verbatim} + + + + + +\<latex shared subsection config\><<< +|<shared h5 subsubsection|> +|<shared h4 subsection|> +>>> + + +\<latex shared paragraph config\><<< +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\par\IgnorePar} +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}\par\IgnorePar} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} +>>> + +\<latex config div 4.0t\><<< +\ConfigureMark{subparagraph}{} +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likesubparagraph}{}{} + {\ShowPar\HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +>>> + +\<32,4 latex\><<< +\ConfigureEnv{picture} + {\bgroup\ifvmode \Configure{HtmlPar} + {\EndP\HCode{|<show input line no|>}\HCode{<p + class="center" \a:LRdir>}}% + {\EndP\HCode{|<show input line no|>}\HCode{<p + class="center" \a:LRdir>}}% + {\:xhtml{\Tg</p>}}{\:xhtml{\Tg</p>}} \ShowPar\leavevmode + \fi} + {\egroup}{}{} +>>> + +%%%%%%%%%%%%%%%%%%%%%% +\subsection{ltxguide} +%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 ltxguide\><<< +\Configure{m} + {\HCode{\string&\#x2329;}} + {\HCode{\string&\#x232A;}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Polish: mwart.cls, mwrep.cls, mwbk.cls} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 mwart\><<< +|<mwcls divs|> +|<mwcls tocs|> +|<mwart tocs|> +|<cut and toc at for options 1, 2, 3|> |%should be after mw ... tocs|% +|<mwcls configs|> +>>> + + +\<configure html4 mwrep\><<< +|<mwcls divs|> +|<mw rep/bk divs|> +|<mwcls tocs|> +|<mw rep/bk tocs|> +|<cut and toc at for options 1, 2, 3|> |%should be after mw ... tocs|% +|<mwcls configs|> +>>> + +\<configure html4 mwbk\><<< +|<mwcls divs|> +|<mw rep/bk divs|> +|<mwcls tocs|> +|<mw rep/bk tocs|> +|<cut and toc at for options 1, 2, 3|> |%should be after mw ... tocs|% +|<mwcls configs|> +>>> + +\<mwcls configs\><<< +|<mwcls index|> +|<config captions|> +|<shared bib env|> +|<thebib config|> +%\def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +|<config lists of figures and tables|> +\ConfigureList{description}% + {\EndP\HCode{<dl \a:LRdir class="description">}% + \PushMacro\end:itm +\global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm +\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="description">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}} + +|<quote config|> +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>\par\ShowPar} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} + +{\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} + +|<quotations|> +\Configure{listof}{}{}{}{\HCode{<br />}}{}{ } + +\ConfigureEnv{abstract} + {\IgnorePar\EndP + \HCode{<table\Hnewline class="abstract"><tr><td\Hnewline>}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP\HCode{</td></tr></table>}}{}{} +\Css{.abstract p {margin-left:5\%; margin-right:5\%;}} +\Css{table.abstract {width:100\%;}} +>>> + + +\<mwcls divs\><<< +\ConfigureMark{part} + {\ifHeadingNumbered \HCode{<span class="titlemark">}\partname + \space \HeadingNumber \HCode{</span>}\fi} +\Configure{part}{}{} + {\NoFonts\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h1 class="partHead"\a:LRdir>}\TitleMark + \HCode{<br />}\HtmlParOff} + {\HCode{</h1>}\HtmlParOn \EndNoFonts \IgnoreIndent \par} +\Configure{partTITLE+}{\thepart\space #1} +\Css{h1.partHead{text-align: left}} +>>> + +\<mwcls divs\><<< +\Configure{likepart}{}{} + {\IgnorePar\EndP\HCode{<h1 class="likepartHead"\a:LRdir>}} + {\HCode{</h1>}\IgnoreIndent\par} +\Configure{likepartTITLE+}{#1} +>>> + +\<mw rep/bk divs\><<< +\ConfigureMark{chapter} + {\ifHeadingNumbered \HCode{<span class="titlemark">}\mw@seccntformat + \HeadingNumber \HCode{</span>}\fi} +\Configure{chapter}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h2 class="chapterHead"\a:LRdir>}\TitleMark\HtmlParOff} + {\HCode{</h2>}\HtmlParOn \EndNoFonts \IgnoreIndent \par} +\Configure{chapterTITLE+}{\thesection\space#1} +>>> + +\<mw rep/bk divs\><<< +\Configure{likechapter}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h2 class="likechapterHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h2>}\HtmlParOn \IgnoreIndent \par} +\Configure{likechapterTITLE+}{#1} +>>> + +\<mwcls divs\><<< +\ConfigureMark{section} + {\ifHeadingNumbered \HCode{<span class="titlemark">}\mw@seccntformat + \HeadingNumber \HCode{</span>}\fi} +\Configure{section}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \EndNoFonts \ShowPar \IgnoreIndent \par} +\Configure{sectionTITLE+}{\thesection\space#1} +>>> + +\<mwcls divs\><<< +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \par} +\Configure{likesectionTITLE+}{#1} +>>> + + +\<mwcls divs\><<< +\Configure{paragraph}{}{} + {\par\ShowPar\IgnoreIndent\HCode{<span + class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} +>>> + +\<mwcls divs\><<< +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}\IgnorePar} +>>> + +\<mwcls divs\><<< +\ConfigureMark{subparagraph}{} +\Configure{subparagraph}{}{} + {\par\ShowPar\IgnoreIndent + \HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +>>> + +\<mwcls divs\><<< +\Configure{likesubparagraph}{}{} + {\par\ShowPar\IgnoreIndent + \HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +>>> + +\<mwcls divs\><<< +\Configure{endpart}{likepart} +\Configure{endlikepart}{endpart} +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +>>> + + + + + +\<mwcls tocs\><<< +\ConfigureToc{part} + {\HCode{<div class="partToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likepart} + {\HCode{<div class="likepartToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{section} + {\HCode{<div class="sectionToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likesection} + {\HCode{<div class="likesectionToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{subsection} + {\HCode{<div class="subsectionToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likesubsection} + {\HCode{<div class="likesubsectionToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{subsubsection} + {\HCode{<div class="subsubsectionToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likesubsubsection} + {\HCode{<div class="likesubsubsectionToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{paragraph} + {\HCode{<div class="paragraphToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likeparagraph} + {\HCode{<div class="likeparagraphToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +\ConfigureToc{subparagraph} + {\HCode{<div class="subparagraphToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likesubparagraph} + {\HCode{<div class="likesubparagraphToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +>>> + +\<mw rep/bk tocs\><<< +\ConfigureToc{chapter} + {\HCode{<div class="chapterToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}. } + {} + {\HCode{</div>}} +\ConfigureToc{likechapter} + {\HCode{<div class="likechapterToc" \a:LRdir><span class="mark">}} + {\HCode{</span>}} + {} + {\HCode{</div>}} +>>> + + +\<mwcls tocs\><<< +\Css{.partToc a, .partToc, .likepartToc a, .likepartToc + {line-height: 200\%; font-weight:bold; font-size:110\%;}} +\Css{.partToc, .likepartToc{text-align:center;margin-bottom:0.25em; + margin-top:0.25em;}} +>>> + +\<mwart tocs\><<< +\Css{.sectionToc, .likesectionToc {white-space: nowrap;}} +\Css{.subsectionToc, .likesubsectionToc + {margin-left:1em; white-space: nowrap;}} +\Css{.subsubsectionToc, .likesubsubsectionToc + {margin-left:2em; white-space: nowrap;}} +\Css{.paragraphToc, .likeparagraphToc + {margin-left:3em; white-space: nowrap;}} +\Css{.subparagraphToc, .likesubparagraphToc + {margin-left:4em; white-space: nowrap;}} +>>> + +\<mw rep/bk tocs\><<< +\Css{.chapterToc, .likechapterToc {white-space: nowrap;}} +\Css{.sectionToc, .likesectionToc + {margin-left:1em; white-space: nowrap;}} +\Css{.subsectionToc, .likesubsectionToc + {margin-left:2em; white-space: nowrap;}} +\Css{.subsubsectionToc, .likesubsubsectionToc + {margin-left:3em; white-space: nowrap;}} +\Css{.paragraphToc, .likeparagraphToc + {margin-left:4em; white-space: nowrap;}} +\Css{.subparagraphToc, .likesubparagraphToc + {margin-left:5em; white-space: nowrap;}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%% +\section{texinfo} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure html4 texinfo\><<< +\Configure{group} + {\IgnorePar\EndP\HCode{<div class="group">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} +\Css{div.obeylines-v div.group p { margin-top:0; margin-bottom:0; }} +\Configure{multitable} + {\IgnorePar \EndP\HCode{<table\Hnewline class="multitable">}\IgnorePar} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td \Hnewline class="multitabl\the\colcount">}} + {\IgnorePar \EndP\HCode{</td>}} +\Css{.multitable td{padding-left:1em; padding-right:1em;}} +>>> + + +\<configure html4 texinfo\><<< +\Configure{example} + {\IgnorePar\EndP\HCode{<div class="example">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} +\Css{div.example { margin-left:2em; }} +\Configure{smallexample} + {\IgnorePar\EndP\HCode{<div class="smallexample">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} +\Css{div.smallexample { margin-left:2em; }} +>>> + + +\<configure html4 texinfo\><<< +\ConfigureMark{chapter}{\the\chapno} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h2>}\IgnoreIndent\par} +\ConfigureMark{appendix}{\appendixletter} +\Configure{appendix}{}{} + {\IgnorePar\EndP + \HCode{<h2 class="appendixHead"\a:LRdir>}Appendix \TitleMark\space} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{unnumbered}{}{} + {\IgnorePar\EndP\HCode{<h2 class="unnumberedHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent\par} +\ConfigureMark{numberedsec}{\the\chapno.\the\secno} +\Configure{numberedsec}{}{} + {\IgnorePar\EndP\HCode{<h3 + class="numberedsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h3>}\IgnoreIndent\par} +\ConfigureMark{appendixsec}{\appendixletter.\the\secno} +\Configure{appendixsec}{}{} + {\IgnorePar\EndP\HCode{<h3 + class="appendixsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h3>}\IgnoreIndent\par} +\Configure{unnumberedsec}{}{} + {\IgnorePar\EndP\HCode{<h3 class="unnumberedsecHead"\a:LRdir>}} + {\HCode{</h3>}\IgnoreIndent\par} +\ConfigureMark{numberedsubsec}{\the\chapno.\the\secno .\the\subsecno} +\Configure{numberedsubsec}{}{} + {\IgnorePar\EndP\HCode{<h4 + class="numberedsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h4>}\IgnoreIndent\par} +\ConfigureMark{appendixsubsec}{\appendixletter .\the\secno.\the\subsecno} +\Configure{appendixsubsec}{}{} + {\IgnorePar\EndP\HCode{<h4 + class="appendixsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h4>}\IgnoreIndent\par} +\ConfigureMark{appendixsubsec}{\appendixletter.\the\secno + .\the\subsecno} +\Configure{appendixsubsec}{}{} + {\IgnorePar\EndP\HCode{<h4 + class="appendixsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h4>}\IgnoreIndent\par} +\Configure{unnumberedsubsec}{}{} + {\IgnorePar\EndP\HCode{<h4 class="unnumberedsubsecHead"\a:LRdir>}} + {\HCode{</h4>}\IgnoreIndent\par} +\ConfigureMark{numberedsubsubsec}{\the\chapno.\the\secno + .\the\subsecno.\the\subsubsecno} +\Configure{numberedsubsubsec}{}{} + {\IgnorePar\EndP\HCode{<h5 + class="numberedsubsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h5>}\IgnoreIndent\par} +\ConfigureMark{appendixsubsubsec}{\appendixletter + .\the\secno.\the\subsecno.\the\subsubsecno} +\Configure{appendixsubsubsec}{}{} + {\IgnorePar\EndP\HCode{<h5 + class="appendixsubsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h5>}\IgnoreIndent\par} +\ConfigureMark{appendixsubsubsec}{\appendixletter.\the\secno + .\the\subsecno.\the\subsubsecno} +\Configure{appendixsubsubsec}{}{} + {\IgnorePar\EndP\HCode{<h5 + class="appendixsubsubsecHead"\a:LRdir>}\TitleMark\space} + {\HCode{</h5>}\IgnoreIndent\par} +\Configure{unnumberedsubsubsec}{}{} + {\IgnorePar\EndP\HCode{<h5 class="unnumberedsubsubsecHead"\a:LRdir>}} + {\HCode{</h5>}\IgnoreIndent\par} +>>> + +\<configure html4 texinfo\><<< +\ConfigureToc{chapter} + {\Tg<span class="chapterToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{appendix} + {\Tg<span class="appendixToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{unnumbered} + {\Tg<span class="unnumberedToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{numberedsec} + {\Tg<span class="numberedsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{appendixsec} + {\Tg<span class="appendixsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{unnumberedsec} + {\Tg<span class="unnumberedsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{numberedsubsec} + {\Tg<span class="numberedsubsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{appendixsubsec} + {\Tg<span class="appendixsubsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{appendixsubsec} + {\Tg<span class="appendixsubsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{unnumberedsubsec} + {\Tg<span class="unnumberedsubsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{numberedsubsubsec} + {\Tg<span class="numberedsubsubsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{appendixsubsubsec} + {\Tg<span class="appendixsubsubsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{appendixsubsubsec} + {\Tg<span class="appendixsubsubsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +\ConfigureToc{unnumberedsubsubsec} + {\Tg<span class="unnumberedsubsubsecToc" \a:LRdir>}{ }{}{\Tg</span>\expandafter\Tg<br />} +>>> + + + +\<configure html4 texinfo\><<< +\Configure{enumerate} + {\IgnorePar\EndP\HCode{<ol\space class="enumerate"\Hnewline>}} + {\IgnorePar\EndP\HCode{</li></ol>}\ShowPar} + {\IgnorePar\EndP\ifnum \itemno>1 \Tg</li>\fi\DeleteMark} + {\HCode{<li class="enumerate">}} +\Configure{itemize} + {\IgnorePar\EndP\HCode{<ul\space\a:LRdir class="itemize"\Hnewline>}} + {\IgnorePar\EndP\HCode{</li></ul>}\ShowPar} + {\IgnorePar\EndP\ifnum \itemno>1 \Tg</li>\fi\DeleteMark} + {\HCode{<li class="itemize">}} +\Configure{table}% + {\IgnorePar\EndP\HCode{<dl \a:LRdir class="description">}% + |<save end:itm|>\global\let\end:itm|=\empty} + {|<recall end:itm|>\IgnorePar\EndP\HCode{</dd></dl>}} + {\IgnorePar\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="description">}\bgroup \bf} + {\egroup\IgnorePar\EndP\HCode{</dt><dd\Hnewline class="description">}} +>>> + +\<configure html4 texinfo\><<< +\Configure{titlepage} + {\IgnorePar\EndP\HCode{<div class="titlepage">}} + {\IgnorePar\EndP\HCode{</div>}} +\Configure{title} + {\IgnorePar\EndP\HCode{<div class="title">}} + {\IgnorePar\EndP\HCode{</div>}} +\Configure{subtitle} + {\IgnorePar\EndP\HCode{<div class="subtitle">}} + {\IgnorePar\EndP\HCode{</div>}} +\Configure{author} + {\IgnorePar\EndP\HCode{<div class="author">}} + {\IgnorePar\EndP\HCode{</div>}} +>>> + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Accents, encodings, and Languages} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\Link[http://lycos.basistech.com/info/standards/ISO-8859.txt]{}{}iso + text\EndLink, +\Link[http://titus.uni-frankfurt.de/unicode/iso8859/iso8859.htm]{}{}titus glyphs\EndLink, +satto glyphs: +\Link[http://www.satto.co.yu/podrska/iso/iso8859-1.htm]{}{}1\EndLink{} +\Link[http://www.satto.co.yu/podrska/iso/iso8859-2.htm]{}{}2\EndLink{} ..., +microsoft glyphs: +\Link[http://www.microsoft.com/globaldev/reference/iso/28591.htm]{}{}1\EndLink{} +\Link[http://www.microsoft.com/globaldev/reference/iso/28592.htm]{}{}2\EndLink{} ... + + + +\<configure html4 latex\><<< +\ifOption{charset=iso-8859-7} + {|<T1 greek ldf iso-8859-7|>} + {} +\:CheckOption{new-accents} \if:Option +\else + |<T1 old iso-8859-1 accents|> +\fi +\let\^^_|=\v +>>> + + +\<old plain,latex accents\><<< +|<old iso-8859-1 accents|> +|<OT1 old iso-8859-1 accents|> +|<optional iso-8859-2 accents|> +>>> + +\<babel accents\><<< +|<optional iso-8859-2 accents|> +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Group Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{8859-1} +%%%%%%%%%%%%%%%%%%%% + +\<acute codes\><<< +A{00C1}C{0106}D{010E}E{00C9}G{01F4}I{00CD}L{0139}N{0143}% +O{00D3}R{0154}S{015A}U{00DA}Y{00DD}Z{0179}a{00E1}c{0107}% +d{010F}e{00E9}g{01F5}i{00ED}l{013A}n{0144}o{00F3}r{0155}% +s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}% +>>> + +\<add acute codes\><<< + {A}{\add:acc{00C1}} + {C}{\add:acc{0106}} + {D}{\add:acc{010E}} + {E}{\add:acc{00C9}} + {G}{\add:acc{01F4}} + {I}{\add:acc{00CD}} + {L}{\add:acc{0139}} + {N}{\add:acc{0143}} + {O}{\add:acc{00D3}} + {R}{\add:acc{0154}} + {S}{\add:acc{015A}} + {U}{\add:acc{00DA}} + {Y}{\add:acc{00DD}} + {Z}{\add:acc{0179}} + {a}{\add:acc{00E1}} + {c}{\add:acc{0107}} + {d}{\add:acc{010F}} + {e}{\add:acc{00E9}} + {g}{\add:acc{01F5}} + {i}{\add:acc{00ED}} + {l}{\add:acc{013A}} + {n}{\add:acc{0144}} + {o}{\add:acc{00F3}} + {r}{\add:acc{0155}} + {s}{\add:acc{015B}} + {u}{\add:acc{00FA}} + {y}{\add:acc{00FD}} + {z}{\add:acc{017A}} + {j}{\add:acc{FFFD}} + {J}{\add:acc{FFDD}} + {\i}{\add:acc{00ED}} + {\j}{\add:acc{FFFD}} +>>> + + + + +\<double acute code\><<< +o{0151}O{0150}U{0170}u{0171}% +>>> + +\<add double acute code\><<< + {o}{\add:acc{0151}} + {O}{\add:acc{0150}} + {U}{\add:acc{0170}} + {u}{\add:acc{0171}} +>>> + + + + + + +\<cedilla codes\><<< +K{0136}k{0137}L{013B}l{013C}N{0145}n{0146}% +R{0156}r{0157}S{015E}s{015F}T{0162}t{0163}% +E{0228}e{0229}D{1E10}d{1E11}H{1E28}h{1E29}% +C{00C7}c{00E7}G{0122}g{0123}% +>>> + +\<add cedilla codes\><<< + {K}{\add:acc{0136}} + {k}{\add:acc{0137}} + {L}{\add:acc{013B}} + {l}{\add:acc{013C}} + {N}{\add:acc{0145}} + {n}{\add:acc{0146}} + {R}{\add:acc{0156}} + {r}{\add:acc{0157}} + {S}{\add:acc{015E}} + {s}{\add:acc{015F}} + {T}{\add:acc{0162}} + {t}{\add:acc{0163}} + {E}{\add:acc{0228}} + {e}{\add:acc{0229}} + {D}{\add:acc{1E10}} + {d}{\add:acc{1E11}} + {H}{\add:acc{1E28}} + {h}{\add:acc{1E29}} + {C}{\add:acc{00C7}} + {c}{\add:acc{00E7}} + {G}{\add:acc{0122}} + {g}{\add:acc{0123}} +>>> + + + + + + +\<dot above codes\><<< +C{010A}c{010B}E{0116}e{0117}G{0120}g{0121}% +I{0130}Z{017B}z{017C}A{0226}a{0227}O{022E}% +o{022F}B{1E02}b{1E03}D{1E0A}d{1E0B}F{1E1E}% +f{1E1F}H{1E22}h{1E23}M{1E40}m{1E41}N{1E44}% +n{1E45}P{1E56}p{1E57}R{1E58}r{1E59}S{1E60}% +s{1E61}T{1E6A}t{1E6B}W{1E86}w{1E87}X{1E8A}% +x{1E8B}Y{1E8E}y{1E8F}% +>>> + +\<add dot above codes\><<< + {C}{\add:acc{010A}} + {c}{\add:acc{010B}} + {E}{\add:acc{0116}} + {e}{\add:acc{0117}} + {G}{\add:acc{0120}} + {g}{\add:acc{0121}} + {I}{\add:acc{0130}} + {Z}{\add:acc{017B}} + {z}{\add:acc{017C}} + {A}{\add:acc{0226}} + {a}{\add:acc{0227}} + {O}{\add:acc{022E}} + {o}{\add:acc{022F}} + {B}{\add:acc{1E02}} + {b}{\add:acc{1E03}} + {D}{\add:acc{1E0A}} + {d}{\add:acc{1E0B}} + {F}{\add:acc{1E1E}} + {f}{\add:acc{1E1F}} + {H}{\add:acc{1E22}} + {h}{\add:acc{1E23}} + {M}{\add:acc{1E40}} + {m}{\add:acc{1E41}} + {N}{\add:acc{1E44}} + {n}{\add:acc{1E45}} + {P}{\add:acc{1E56}} + {p}{\add:acc{1E57}} + {R}{\add:acc{1E58}} + {r}{\add:acc{1E59}} + {S}{\add:acc{1E60}} + {s}{\add:acc{1E61}} + {T}{\add:acc{1E6A}} + {t}{\add:acc{1E6B}} + {W}{\add:acc{1E86}} + {w}{\add:acc{1E87}} + {X}{\add:acc{1E8A}} + {x}{\add:acc{1E8B}} + {Y}{\add:acc{1E8E}} + {y}{\add:acc{1E8F}} +>>> + + + + + + +\<breve codes\><<< +g{011F}I{012C}i{012D}O{014E}o{014F}% +U{016C}u{016D}A{0102}a{0103}E{0114}% +e{0115}G{011E}\i{012D}% +>>> + +\<add breve codes\><<< + {g}{\add:acc{011F}} + {I}{\add:acc{012C}} + {i}{\add:acc{012D}} + {O}{\add:acc{014E}} + {o}{\add:acc{014F}} + {U}{\add:acc{016C}} + {u}{\add:acc{016D}} + {A}{\add:acc{0102}} + {a}{\add:acc{0103}} + {E}{\add:acc{0114}} + {e}{\add:acc{0115}} + {G}{\add:acc{011E}} + {\i}{\add:acc{012D}} + {y}{y\add:acc{0306}} +>>> + + + + + + + + + +\<caron codes\><<< +C{010C}c{010D}D{010E}d{010F}% +E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}% +S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}% +i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}% +j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}% +>>> + +\<add caron codes\><<< + {C}{\add:acc{010C}} + {c}{\add:acc{010D}} + {D}{\add:acc{010E}} + {d}{\add:acc{010F}} + {E}{\add:acc{011A}} + {e}{\add:acc{011B}} + {L}{\add:acc{013D}} + {l}{\add:acc{013E}} + {N}{\add:acc{0147}} + {n}{\add:acc{0148}} + {R}{\add:acc{0158}} + {r}{\add:acc{0159}} + {S}{\add:acc{0160}} + {s}{\add:acc{0161}} + {T}{\add:acc{0164}} + {t}{\add:acc{0165}} + {Z}{\add:acc{017D}} + {z}{\add:acc{017E}} + {A}{\add:acc{01CD}} + {a}{\add:acc{01CE}} + {I}{\add:acc{01CF}} + {i}{\add:acc{01D0}} + {O}{\add:acc{01D1}} + {o}{\add:acc{01D2}} + {U}{\add:acc{01D3}} + {u}{\add:acc{01D4}} + {G}{\add:acc{01E6}} + {g}{\add:acc{01E7}} + {K}{\add:acc{01E8}} + {k}{\add:acc{01E9}} + {j}{\add:acc{01F0}} + {H}{\add:acc{021E}} + {h}{\add:acc{021F}} + {\i}{\add:acc{01D0}} + {\j}{\add:acc{01F0}} +>>> +% + + + + + +\<ring codes\><<< +A{00C5}a{00E5}U{016E}u{016F}% +>>> + +\<add ring codes\><<< + {A}{\add:acc{00C5}} + {a}{\add:acc{00E5}} + {U}{\add:acc{016E}} + {u}{\add:acc{016F}} +>>> + + + + + + + + + + + + + + + +\<diaeresis codes\><<< +H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}% +t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}% +a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}% +Y{0178}\i{00EF}% +>>> + +\<add diaeresis codes\><<< + {H}{\add:acc{1E26}} + {h}{\add:acc{1E27}} + {W}{\add:acc{1E84}} + {w}{\add:acc{1E85}} + {X}{\add:acc{1E8C}} + {x}{\add:acc{1E8D}} + {t}{\add:acc{1E97}} + {A}{\add:acc{00C4}} + {E}{\add:acc{00CB}} + {I}{\add:acc{00CF}} + {O}{\add:acc{00D6}} + {U}{\add:acc{00DC}} + {a}{\add:acc{00E4}} + {e}{\add:acc{00EB}} + {i}{\add:acc{00EF}} + {o}{\add:acc{00F6}} + {u}{\add:acc{00FC}} + {y}{\add:acc{00FF}} + {Y}{\add:acc{0178}} + {\i}{\add:acc{00EF}} + {m}{m\add:acc{0308}} +>>> + + + + + + + + + + +\<circumflex codes\><<< +A{00C2}E{00CA}I{00CE}O{00D4}U{00DB}a{00E2}e{00EA}% +i{00EE}o{00F4}u{00FB}C{0108}c{0109}G{011C}g{011D}% +H{0124}h{0125}J{0134}j{0135}S{015C}s{015D}W{0174}% +w{0175}Y{0176}y{0177}Z{1E90}z{1E91}\i{00EE}\j{0135}% +>>> + +\<add circumflex codes\><<< + {A}{\add:acc{00C2}} + {E}{\add:acc{00CA}} + {I}{\add:acc{00CE}} + {O}{\add:acc{00D4}} + {U}{\add:acc{00DB}} + {a}{\add:acc{00E2}} + {e}{\add:acc{00EA}} + {i}{\add:acc{00EE}} + {o}{\add:acc{00F4}} + {u}{\add:acc{00FB}} + {C}{\add:acc{0108}} + {c}{\add:acc{0109}} + {G}{\add:acc{011C}} + {g}{\add:acc{011D}} + {H}{\add:acc{0124}} + {h}{\add:acc{0125}} + {J}{\add:acc{0134}} + {j}{\add:acc{0135}} + {S}{\add:acc{015C}} + {s}{\add:acc{015D}} + {W}{\add:acc{0174}} + {w}{\add:acc{0175}} + {Y}{\add:acc{0176}} + {y}{\add:acc{0177}} + {Z}{\add:acc{1E90}} + {z}{\add:acc{1E91}} + {\i}{\add:acc{00EE}} + {\j}{\add:acc{0135}} +>>> + + + + + + +\<grave codes\><<< +A{00C0}E{00C8}I{00CC}N{01F8}O{00D2}U{00D9}W{1E80}% +Y{1EF2}a{00E0}e{00E8}i{00EC}n{01F9}o{00F2}u{00F9}% +w{1E81}y{1EF3}\i{00EC}% +>>> + + +\<add grave codes\><<< +{A}{\add:acc{00C0}} + {E}{\add:acc{00C8}} + {I}{\add:acc{00CC}} + {N}{\add:acc{01F8}} + {O}{\add:acc{00D2}} + {U}{\add:acc{00D9}} + {W}{\add:acc{1E80}} + {Y}{\add:acc{1EF2}} + {a}{\add:acc{00E0}} + {e}{\add:acc{00E8}} + {i}{\add:acc{00EC}} + {n}{\add:acc{01F9}} + {o}{\add:acc{00F2}} + {u}{\add:acc{00F9}} + {w}{\add:acc{1E81}} + {y}{\add:acc{1EF3}} + {\i}{\add:acc{00EC}} +>>> + + + +\<tilde codes\><<< +A{00C3}N{00D1}O{00D5}a{00E3}n{00F1}o{00F5}I{0128}% +i{0129}U{0168}u{0169}V{1E7C}v{1E7D}E{1EBC}e{1EBD}% +Y{1EF8}y{1EF9}\i{0129}% +>>> + +\<add tilde codes\><<< + {A}{\add:acc{00C3}} + {N}{\add:acc{00D1}} + {O}{\add:acc{00D5}} + {a}{\add:acc{00E3}} + {n}{\add:acc{00F1}} + {o}{\add:acc{00F5}} + {I}{\add:acc{0128}} + {i}{\add:acc{0129}} + {U}{\add:acc{0168}} + {u}{\add:acc{0169}} + {V}{\add:acc{1E7C}} + {v}{\add:acc{1E7D}} + {E}{\add:acc{1EBC}} + {e}{\add:acc{1EBD}} + {Y}{\add:acc{1EF8}} + {y}{\add:acc{1EF9}} + {\i}{\add:acc{0129}} +>>> + + + +\<vec iso-8859-1\><<< +>>> + + + +\<old iso-8859-1 accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {\a:accents{widetilde}{#1}} {\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {\a:accents{widehat}{#1}} {\b:accents{widehat}{#1}{#2}} +>>> + +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + + + + + + + + + + + + + + + +It wasn't used, but why? + +\<bar below codes\><<< +B{1E06}b{1E07}% +D{1E0E}d{1E0F}K{1E34}k{1E35}L{1E3A}l{1E3B}N{1E48}n{1E49}% +R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}% +>>> + + + + +\<dot below codes\><<< +A{1EA0}a{1Ea1}B{1E04}b{1E05}D{1E0C}d{1E0D}% +E{1EB8}e{1EB9}H{1E24}h{1E25}I{1ECA}i{1ECB}% +K{1E32}k{1E33}L{1E36}l{1E37}M{1E42}m{1E43}% +N{1E46}n{1E47}O{1ECC}o{1ECD}R{1E5A}r{1E5B}% +S{1E62}s{1E63}T{1E6C}t{1E6D}U{1EE4}u{1EE5}% +V{1E7E}v{1E7F}W{1E88}w{1E89}Y{1EF4}y{1EF5}% +>>> + + + +\<macron codes \><<< +A{0100}a{0101}E{0112}% +e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}% +y{0233}G{1E20}g{1E21}% +>>> + +\<hungarian umlaut codes\><<< +O{0150}o{0151}U{0170}u{0171}% +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{T1 8859-1} +%%%%%%%%%%%%%%%%%%%% + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname + \csname T1\string\`\endcsname{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname + \csname T1\string\^\endcsname{|<circumflex codes|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname + \csname T1\string\~\endcsname{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\"\expandafter\endcsname + \csname T1\string\"\endcsname{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\r\endcsname + \mathring{|<ring codes|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\c\endcsname}% + \csname T1\string\c\endcsname{|<cedilla codes|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\t\endcsname}% + \csname T1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\H\endcsname}% + \csname T1\string\H\endcsname{|<double acute code|>{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\b\endcsname}% + \csname T1\string\b\endcsname{|<bar below codes|>{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\d\endcsname}% + \csname T1\string\d\endcsname{|<dot below codes|>{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname + \csname T1\string\.\endcsname + {|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname + \csname T1\string\u\endcsname + {|<breve codes|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\vec\expandafter\endcsname + \csname T1\string\vec\endcsname + {|<vec iso-8859-1|>{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname + \csname T1\string\v\endcsname + {|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname + \csname T1\string\=\endcsname + {|<macron codes|>{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{T1 on Empty Base} +%%%%%%%%%%%%%%%%%%%% + +\<latex accents\><<< +\Configure{add accent}{T1:2} + {}{\ht:special{t4ht@+\string&\#x005E;}x} + {}{} +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{OT1 8859-1} +%%%%%%%%%%%%%%%%%%%% + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname OT1\string\`\endcsname + \grave{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname + \acute{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\^\endcsname + \hat{|<circumflex codes|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\~\endcsname + \tilde{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname + OT1\string\"\expandafter\endcsname + \csname OT1\string\"\endcsname{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\Configure{accent}\ddot\ddot{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\r\endcsname + \mathring{|<ring codes|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + + + + + + +The following are also placed under accents configuration. + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\c\endcsname}% + \csname OT1\string\c\endcsname{|<cedilla codes|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\t\endcsname}% + \csname OT1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\H\endcsname}% + \csname OT1\string\H\endcsname{|<double acute code|>{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\b\endcsname}% + \csname OT1\string\b\endcsname{|<bar below codes|>{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\d\endcsname}% + \csname OT1\string\d\endcsname{|<dot below codes|>{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +The following originally have been defined to be parameter-less. + +\<OT1 old iso-8859-1 accents\><<< +\expand:after{\Configure{accent}}\csname OT1\string\.\endcsname + \dot{|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\u\endcsname + \breve{|<breve codes|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\vec\endcsname + \vec{|<vec iso-8859-1|>{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\v\endcsname + \check{|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\=\endcsname + \bar{|<macron codes|>{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + +\<OT1 old iso-8859-1 accents\><<< +|<ot1enc.def unicode|> +>>> + +\<ot1enc.def unicode\><<< +\expandafter\def + \csname OT1\string\l\endcsname{\ht:special{t4ht@+\string&{35}x0142{59}}x} +\expandafter\def + \csname OT1\string\L\endcsname{\ht:special{t4ht@+\string&{35}x0141{59}}x} +>>> + + +\<configure html4 plain\><<< +\Configure{l}{\ht:special{t4ht@+\string&{35}x0142{59}}x} +\Configure{L}{\ht:special{t4ht@+\string&{35}x0141{59}}x} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{8859-2} +%%%%%%%%%%%%%%%%%%%% + + + +\<optional iso-8859-2 accents\><<< +\def\:temp{charset=iso-8859-2} +\ifx \a:charset\:UnDef + \ifx \A:charset\:temp \let\:temp=\def \fi +\else \ifx \a:charset\:temp \let\:temp=\def \fi +\fi +\ifx \:temp\def + \:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi \fi +>>> + +\<old iso-8859-2 accents\><<< +|<T1 old iso-8859-2 accents|> +>>> + + + + + + + + + + + +% d{239} + + + + + + + + + + + + + + + + + + + + + + + + +\<old iso-8859-2 accents\><<< +\Configure{accent}\`\grave{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{|<circumflex codes|>{}{}} + {\a:accents{hat}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + + + + +The following are also placed under accents configuration. + +\<old iso-8859-2 accents\><<< +\Configure{accent}\c\c{|<cedilla codes|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{|<double acute code|>{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\Configure{accent}\b\b{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\Configure{accent}\d\d{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + +The following originally have been defined to be parameter-less. + +\<old iso-8859-2 accents\><<< +\Configure{accent}\.\.{|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\dot\dot{|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{|<breve codes|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\v{|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\Configure{accent}\check\check{|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + +\<old 8859-2 accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {\a:accents{widetilde}{#1}} {\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {\a:accents{widehat}{#1}} {\b:accents{widehat}{#1}{#2}} +>>> + +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + +%%%%%%%%%%%%%%%%%%%% +\section{T1 8859-2} +%%%%%%%%%%%%%%%%%%%% + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname + \csname T1\string\`\endcsname{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname + \csname T1\string\^\endcsname{|<circumflex codes|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname + \csname T1\string\~\endcsname{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\"\expandafter\endcsname + \csname T1\string\"\endcsname{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\r\endcsname + \mathring{|<ring codes|>{}{}} + {\a:accents{ring}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\c\endcsname}% + \csname T1\string\c\endcsname{|<cedilla codes|>{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\t\endcsname}% + \csname T1\string\t\endcsname{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\H\endcsname}% + \csname T1\string\H\endcsname{|<double acute code|>{}{}} + {\a:accents{Huml}{#1}}{\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\b\endcsname}% + \csname T1\string\b\endcsname{|<bar below codes|>{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\d\endcsname}% + \csname T1\string\d\endcsname{|<dot below codes|>{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname + \csname T1\string\.\endcsname + {|<dot iso-8859-2|>{}{}} + {\a:accents{dot}{#1}}{\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname + \csname T1\string\u\endcsname + {|<breve codes|>{}{}} + {\a:accents{breve}{#1}}{\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\vec\expandafter\endcsname + \csname T1\string\vec\endcsname + {|<vec iso-8859-2|>{}{}} + {\a:accents{vec}{#1}}{\b:accents{vec}{#1}{#2}} +\expandafter\let\csname T1\string\v\endcsname\:UnDef +\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname + \csname T1\string\v\endcsname + {|<caron codes|>{}{}} + {\a:accents{check}{#1}}{\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname + \csname T1\string\=\endcsname + {|<bar iso-8859-2|>{}{}} + {\a:accents{bar}{#1}}{\b:accents{bar}{#1}{#2}} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{T1, OT1 8859-7} +%%%%%%%%%%%%%%%%%%%% + + + +\<T1 greek ldf iso-8859-7\><<< +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname + {|<acute iso-8859-7|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +>>> + +\<greek ldf iso-8859-7\><<< +\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname + \acute{|<acute iso-8859-7|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +>>> + +\<acute iso-8859-7\><<< +A{\ht:special{t4ht@+\string&{35}x00C1{59}}A}% +E{\ht:special{t4ht@+\string&{35}x00C9{59}}E}% +I{\ht:special{t4ht@+\string&{35}x00CD{59}}I}% +O{\ht:special{t4ht@+\string&{35}x00D3{59}}O}% +U{\ht:special{t4ht@+\string&{35}x00DA{59}}U}% +Y{\ht:special{t4ht@+\string&{35}x00DD{59}}Y}% +a{\ht:special{t4ht@+\string&{35}x00E1{59}}a}% +e{\ht:special{t4ht@+\string&{35}x00E9{59}}e}% +i{\ht:special{t4ht@+\string&{35}x00ED{59}}i}% +\i{\ht:special{t4ht@+\string&{35}x00ED{59}}i}% +o{\ht:special{t4ht@+\string&{35}x00F3{59}}o}% +u{\ht:special{t4ht@+\string&{35}x00FA{59}}u}% +y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}% +{\@use@text@encoding \@curr@enc a}{\ht:special{t4ht@220}a}% +{\@use@text@encoding \@curr@enc e}{\ht:special{t4ht@221}e}% +{\@use@text@encoding \@curr@enc h}{\ht:special{t4ht@222}h}% +{\@use@text@encoding \@curr@enc i}{\ht:special{t4ht@223}i}% +{\@use@text@encoding \@curr@enc o}{\ht:special{t4ht@252}o}% +{\@use@text@encoding \@curr@enc u}{\ht:special{t4ht@253}u}% +{\@use@text@encoding \@curr@enc w}{\ht:special{t4ht@254}w}% +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\section{LaTeX Encodings} +%%%%%%%%%%%%%%%%%%%%%%% + + + +\<32,4 plain,latex\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accents} + {\expandafter\ifx \csname #1-num\endcsname\relax + \ht:special{t4ht@+\string&{35}x#2{59}}x% + \else + \ht:special{t4ht@+\string&\#x#2;}X% + \fi + } + {\expandafter\ifx \csname a:#1-css\endcsname\relax + \Picture+{ \a:@Picture{#1}}#2{#3}\EndPicture + \else + \csname a:#1-css\endcsname #3\csname b:#1-css\endcsname + \fi + } + \expandafter\let\csname ring-num\endcsname=\def +\fi +>>> + +\<configure html4-math latex\><<< +\NewConfigure{bar-css}{2} +\Configure{bar-css} + {\HCode{<span class="bar-css">}} + {\HCode{</span>}} +\Css{span.bar-css {text-decoration:overline;}} +>>> + + +\<32,4 latexPRE-CSS\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{textscaccent} + {\Tg<small class="small-caps">}{\Tg</small>} +\fi +>>> + +\<latex ltoutenc\><<< +\Configure{textcircled} + {\@use@text@encoding \@curr@enc c} + {\leavevmode \special{t4ht@+\string&\#x00A9;}c} + {\@use@text@encoding \@curr@enc \scshape r} + {\leavevmode \special{t4ht@+\string&\#x00AE;}r} + {} +>>> + +\<latex accents\><<< +\:CheckOption{new-accents} \if:Option + |<new accents|> +\else + |<old plain,latex accents|> +\fi +\let\^^_|=\v +>>> + +\<latex accents\><<< +\Configure{@TITLE}{|<env for titles|>} +>>> + +\<env for titles\><<< +\let\"=\:same \let\~=\:same \let\^=\:same +\let\v=\:same \let\'=\:same \let\r=\:same +\PictureOff +>>> + + + + +\<0,32,4 latex\><<< +|<latex accents|> +\let\@acci|=\' \let\@accii|=\` \let\@acciii|=\= +>>> + +\<new accents\><<< +\:CheckOption{accent-} \if:Option + \Configure{HAccent}\acute{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\bar{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\breve{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\check{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\ddot{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\dot{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\grave{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\hat{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\tilde{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\vec{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widehat{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widetilde{}{\Picture+{}}{\EndPicture} +\fi +\:CheckOption{mathaccent-} \if:Option + \Configure{HAccent}\"{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\'{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\.{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\={}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\H{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\^{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\`{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\b{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\c{Cc{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\d{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\t{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\u{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\v{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\~{}{\Picture+{}}{\EndPicture} +\fi +>>> + +\<new accents\><<< +\Configure{accent}{*} + {<!--tex4ht:accent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accent-->} +\Configure{mathaccent}{*} + {<!--tex4ht:mathaccent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end mathaccent-->} +\Configure{accented}{*} + {<!--tex4ht:accented\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accented-->} +\Configure{accenting}{*} + {<!--tex4ht:accenting\Hnewline-->} + {<!--tex4ht:end accenting-->} +>>> + + + + + + + +\<0,32,4 plain\><<< +\:CheckOption{new-accents} \if:Option + |<new plain accents|> +\else + |<old plain accents|> + \Configure{accents} + {\ht:special{t4ht@+\string&{35}x#2{59}}x} + {\Picture+{ \:Picture:{#1}}#2{#3}\EndPicture} +\fi +\let\^^_|=\v +>>> + + + +\<new plain accents\><<< +\:CheckOption{accent-} \if:Option + \Configure{HAccent}\acute{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\bar{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\breve{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\check{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\ddot{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\dot{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\grave{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\hat{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\tilde{AOaoNn{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\vec{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widehat{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widetilde{}{\Picture+{}}{\EndPicture} +\fi +\:CheckOption{mathaccent-} \if:Option + \Configure{HAccent}\"{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\'{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\.{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\={}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\H{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\^{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\`{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\b{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\c{Cc{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\d{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\t{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\u{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\v{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\~{AOaoNn{}}{\Picture+{}}{\EndPicture} +\fi +>>> + +\<new plain accents\><<< +\Configure{accent}{*} + {<!--tex4ht:accent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accent-->} +\Configure{mathaccent}{*} + {<!--tex4ht:mathaccent\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end mathaccent-->} +\Configure{accented}{*} + {<!--tex4ht:accented\Hnewline font="}{" char="}{" type="}{"-->} + {<!--tex4ht:end accented-->} +\Configure{accenting}{*} + {<!--tex4ht:accenting\Hnewline-->} + {<!--tex4ht:end accenting-->} +>>> + + + + + +\<old plain accents\><<< +\Configure{accent}\`\grave{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{|<circumflex codes|>{}{}} + {\a:accents{circ}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + +The following are also placed under accents configuration. + +\<old plain accents\><<< +\Configure{accent}\c\c{C{C}c{c}{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{O{0150}o{0151}U{0170}u{0171}Y{04F2}y{04F3}{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\Configure{accent}\b\b{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\Configure{accent}\d\d{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +>>> + +The following originally have been defined to be parameter-less. + +\<old plain accents\><<< +\Configure{accent}\.\.{{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\dot\dot{{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{{}{}}{\a:accents{breve}{#1}} + {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}}{\a:accents{vec}{#1}} + {\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\v{{}{}}{\a:accents{check}{#1}} + {\b:accents{check}{#1}{#2}} +\Configure{accent}\check\check{{}{}}{\a:accents{check}{#1}} + {\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +>>> +% \= macron + +\<old plain accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {\a:accents{widetilde}{#1}} {\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {\a:accents{widehat}{#1}} {\b:accents{widehat}{#1}{#2}} +>>> +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + +%%%%%%%%%%%%%%%%%%% +\section{AMS Encodings} +%%%%%%%%%%%%%%%%%%% + + + + +\<ams 2000 art + book + proc\><<< +\def\:tempc#1#2#3#4#5{% + \expandafter\ifx \csname #1mathaccentV\endcsname\relax + \o:mathaccentV:{#1}{#2}{#3}{#4}{#5}% + \else \csname #1mathaccentV\endcsname{#5}\fi} +\HLet\mathaccentV\:tempc +\:CheckOption{new-accents} \if:Option \else + |<ams 2000 iso-8859-1 accents|> +\fi +\def\:temp{charset=iso-8859-2} +\ifx \a:charset\:UnDef + \ifx \A:charset\:temp \let\:temp=\def \fi +\else \ifx \a:charset\:temp \let\:temp=\def \fi +\fi +\ifx \:temp\def + \:CheckOption{new-accents} \if:Option \else + |<old ams 2000 iso-8859-2 accents|> +\fi \fi +>>> + + +\<ams 2000 iso-8859-1 accents\><<< +\HRestore\grave +\expandafter\let\csname gravemathaccentV\endcsname=\grave +\expandafter\let\csname GRAVEmathaccentV\endcsname=\grave +\expand:after{\Configure{accent}}\csname + gravemathaccentV\expandafter\endcsname + \csname GRAVEmathaccentV\endcsname{|<grave codes|>{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\HRestore\acute +\expandafter\let\csname acutemathaccentV\endcsname=\acute +\expandafter\let\csname ACUTEmathaccentV\endcsname=\acute +\expand:after{\Configure{accent}}\csname + acutemathaccentV\expandafter\endcsname + \csname ACUTEmathaccentV\endcsname{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\HRestore\hat +\expandafter\let\csname hatmathaccentV\endcsname=\hat +\expandafter\let\csname HATmathaccentV\endcsname=\hat +\expand:after{\Configure{accent}}\csname + hatmathaccentV\expandafter\endcsname + \csname HATmathaccentV\endcsname{|<hat iso-8859-1|>{}{}} + {\a:accents{hat}{#1}} {\b:accents{hat}{#1}{#2}} +\HRestore\tilde +\expandafter\let\csname tildemathaccentV\endcsname=\tilde +\expandafter\let\csname TILDEmathaccentV\endcsname=\tilde +\expand:after{\Configure{accent}}\csname + tildemathaccentV\expandafter\endcsname + \csname TILDEmathaccentV\endcsname{|<tilde codes|>{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\HRestore\ddot +\expandafter\let\csname DDOTmathaccentV\endcsname=\ddot +\expand:after{\Configure{accent}}\csname + DDOTmathaccentV\expandafter\endcsname + \csname DDOTmathaccentV\endcsname{|<ddot iso-8859-1|>{}{}} + {\a:accents{ddot}{#1}} {\b:accents{ddot}{#1}{#2}} +\expandafter\let\csname ddotmathaccentV\endcsname=\ddot +\expand:after{\Configure{accent}}\csname + ddotmathaccentV\expandafter\endcsname + \csname ddotmathaccentv\endcsname{|<ddot iso-8859-1|>{}{}} + {\a:accents{ddot}{#1}} {\b:accents{ddot}{#1}{#2}} +\HRestore\check +\expandafter\let\csname checkmathaccentV\endcsname=\check +\expandafter\let\csname CHECKmathaccentV\endcsname=\check +\expand:after{\Configure{accent}}\csname + checkmathaccentV\expandafter\endcsname + \csname CHECKmathaccentV\endcsname{|<caron codes|>{}{}} + {\a:accents{check}{#1}} {\b:accents{check}{#1}{#2}} +\HRestore\dot +\expandafter\let\csname dotmathaccentV\endcsname=\dot +\expandafter\let\csname DOTmathaccentV\endcsname=\dot +\expand:after{\Configure{accent}}\csname + dotmathaccentV\expandafter\endcsname + \csname DOTmathaccentV\endcsname{|<dot above codes|>{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\HRestore\breve +\expandafter\let\csname brevemathaccentV\endcsname=\breve +\expandafter\let\csname BREVEmathaccentV\endcsname=\breve +\expand:after{\Configure{accent}}\csname + brevemathaccentV\expandafter\endcsname + \csname BREVEmathaccentV\endcsname{|<breve codes|>{}{}} + {\a:accents{breve}{#1}} {\b:accents{breve}{#1}{#2}} +\HRestore\bar +\expandafter\let\csname barmathaccentV\endcsname=\bar +\expandafter\let\csname BARmathaccentV\endcsname=\bar +\expand:after{\Configure{accent}}\csname + barmathaccentV\expandafter\endcsname + \csname BARmathaccentV\endcsname{|<macron codes|>{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +\HRestore\vec +\expandafter\let\csname vecmathaccentV\endcsname=\vec +\expandafter\let\csname VECmathaccentV\endcsname=\vec +\expand:after{\Configure{accent}}\csname + vecmathaccentV\expandafter\endcsname + \csname VECmathaccentV\endcsname{|<vec iso-8859-1|>{}{}} + {\a:accents{vec}{#1}} {\b:accents{vec}{#1}{#2}} +>>> + +\<old ams 2000 iso-8859-2 accents\><<< +\HRestore\acute +\expandafter\let\csname acutemathaccentV\endcsname=\acute +\expandafter\let\csname ACUTEmathaccentV\endcsname=\acute +\expand:after{\Configure{accent}}\csname + acutemathaccentV\expandafter\endcsname + \csname ACUTEmathaccentV\endcsname{|<acute codes|>{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +>>> + +The upper case is needed for cases like + +\begin{verbatim} +\documentclass[12pt]{amsart} +\begin{document} +\title{BUDOWA J''ADER ATOM{O}W PIERWIASTK{O}W} +\author{Rafa''l ``Raba--P{o}''lg''l{o}wek\'o$\acute{o}$} +\def\datename{Wersja z} +\date{\today} +\maketitle +\end{document} +\end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\section{ot4enc} +%%%%%%%%%%%%%%%%%% + +\<configure html4 ot4enc\><<< +\def\add:acc#1{\ht:special{t4ht@+\string&\#x#1;}x} +\Configure{add accent}{OT4:18} %\` + |<add grave codes|> {}{} +\Configure{add accent}{OT4:127} %\" + |<add diaeresis codes|> {}{} +\Configure{add accent}{OT4:19} %\' + |<add acute codes|> {}{} +\Configure{add accent}{OT4:95} %\. + |<add dot above codes|> {}{} +\Configure{add accent}{OT4:22} %\= + {}{} +\Configure{add accent}{OT4:94} %\^ + |<add circumflex codes|> {}{} +\Configure{add accent}{OT4:126} %\~ + |<add tilde codes|> {}{} +\Configure{add accent}{OT4:125} %\H + |<add double acute code|> {}{} +\Configure{add accent}{OT4:21} %\u + |<add breve codes|> {}{} +\Configure{add accent}{OT4:20} %\v + |<add caron codes|> {}{} +\Configure{add accent}{OT4:23} %\r + |<add ring codes|> {}{} +\Configure{add accent}{OT4:24} %\c + |<add cedilla codes|> {}{} +>>> + +%%%%%%%%%%%%%%%%%% +\section{pd1enc} +%%%%%%%%%%%%%%%%%% + +\<configure html4 pd1enc\><<< +\def\add:acc#1{\ht:special{t4ht@+\string&\#x#1;}x} +\Configure{add accent}{PD1:96} %\` + |<add grave codes|> {}{} +\Configure{add accent}{PD1:168} %\" + |<add diaeresis codes|> {}{} +\Configure{add accent}{PD1:180} %\' + |<add acute codes|> {}{} +\Configure{add accent}{PD1:27} %\. + |<add dot above codes|> {}{} +\Configure{add accent}{PD1:26} %\^ + |<add circumflex codes|> {}{} +\Configure{add accent}{PD1:31} %\~ + |<add tilde codes|> {}{} +\Configure{add accent}{PD1:24} %\u + |<add breve codes|> {}{} +\Configure{add accent}{PD1:20} %\v + |<add caron codes|> {}{} +\Configure{add accent}{PD1:21} %\r + |<add ring codes|> {}{} +\Configure{add accent}{PD1:184} %\c + |<add cedilla codes|> {}{} +>>> + +% \Configure{add accent}{PD1:22} %\= {}{} + +% \Configure{add accent}{PD1:125} %\H +% |<add double acute code|> {}{} + + +%%%%%%%%%%%%%%%%%%% +\section{Languages} +%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%% +\subsection{Babel} +%%%%%%%%%%%%%%%%%%% + + +\<babel.def\><<< +|<quotedblbase|> +>>> + + +\<babel macros\><<< +|<babel.def|> +>>> + + + + +\<config tex4ht\><<< +\NewConfigure{charset}[1]{\def\a:charset{#1}} +\def\:temp#1charset=#2,#3|<par del|>{% + \if !#2!% + \Log:Note{for alternative charset, use + the command line option `charset=...'} + \else \Configure{charset}{charset=#2}\fi} +\expandafter\:temp\Preamble ,charset=,|<par del|> +>>> + + + + +\<configure html4 CJK\><<< +\def\A:charset{charset=utf-8} +|<simplified chinese (mainland)|> +|<traditional chinese (taiwanese)|> +|<japanese charset|> +|<korean charset|> +\Configure{CJKbold}{\HCode{<b>}}{\HCode{</b>}} +>>> + + + +The following are from CJK.enc +\begin{verbatim} +% CEF: CEFX C80 +% CEFY C81 +\end{verbatim} + + +\<traditional chinese (taiwanese)\><<< +\Configure{CJK.enc}{Bg5}{\def\A:charset{charset=big5}} +\Configure{CJK.enc}{Bg5pmC}{\def\A:charset{charset=big5}} +\Configure{CJK.enc}{Bg5+}{\def\A:charset{charset=big5}} +>>> + + +GB2312 (1980) has been superceded by GBK (circa 1993?) and GB18030 (2000). + +\<simplified chinese (mainland)\><<< +\Configure{CJK.enc}{GBpmC}{\def\A:charset{charset=gbk}} +\Configure{CJK.enc}{GBK}{\def\A:charset{charset=gbk}} +\Configure{CJK.enc}{GBt}{\def\A:charset{charset=gbk}} +\Configure{CJK.enc}{GBtpmC}{\def\A:charset{charset=gbk}} +\Configure{CJK.enc}{CNS1-7}{\def\A:charset{charset=gbk}} +>>> + + +\<japanese charset\><<< +\Configure{CJK.enc}{JIS}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JISpmC}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JISdnp}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JISwn}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JIS2}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{JIS2dnp}{\def\A:charset{charset=iso-2022-jp}} +\Configure{CJK.enc}{SJIS}{\def\A:charset{charset=iso-2022-jp}} +>>> + +\<korean charset\><<< +\Configure{CJK.enc}{KS}{\def\A:charset{charset=iso-2022-kr}} +\Configure{CJK.enc}{KSpmC}{\def\A:charset{charset=iso-2022-kr}} +\Configure{CJK.enc}{KSHL}{\def\A:charset{charset=iso-2022-kr}} +>>> + + + + + +\<configure html4 hebtex\><<< +\def\A:charset{charset=iso-8859-8} +\Configure{arabtext} + {\ifhmode \let\end:arabtex=\empty \IgnorePar + \else + \HCode{<div style="text-align:right"><table class="arabtex"><tr><td\Hnewline + style="white-space:nowrap; text-align:right">}% + \def\end:arabtex{\HCode{</td></tr></table></div>}}% + \fi + \global\let\start:arab=\relax} + {\end:arabtex} + {\ifx \start:arab\relax \global\let\start:arab=\empty + \else \expandafter\Tg<br />\fi} + {} +\:CheckOption{nikud} \if:Option + \Configure{chireq}{\char5 } + \Configure{cholem}{\char3 } + \Configure{chpatach}{\char1\char7 } + \Configure{chqames}{\char2\char7 } + \Configure{chsegol}{\char3\char7 } + \Configure{dagesh}{\char46 } + \Configure{meteg}{\char44 } + \Configure{patachf}{\char1 } + \Configure{patach}{\char1 } + \Configure{qameschat}{\char6\char7 } + \Configure{qames}{\char6 } + \Configure{qibbus}{\HCode{<!--qibbus-->}} + \Configure{rdot}{\HCode{<!--rdot-->}} + \Configure{segol}{\char3 } + \Configure{sere}{\char9 } + \Configure{shindot}{\HCode{<!--shindot-->}} + \Configure{shwa}{\char7 } + \Configure{sindot}{\HCode{<!--sindot-->}} +\else + \Log:Note{for hebrew vowels, use + the command line option `nikud'} + \Configure{chireq}{\HCode{<!--chireq-->}} + \Configure{cholem}{\HCode{<!--cholem-->}} + \Configure{chpatach}{\HCode{<!--chpatach-->}} + \Configure{chqames}{\HCode{<!--chqames-->}} + \Configure{chsegol}{\HCode{<!--chsegol-->}} + \Configure{dagesh}{\HCode{<!--dagesh-->}} + \Configure{meteg}{\HCode{<!--meteg-->}} + \Configure{patachf}{\HCode{<!--patachf-->}} + \Configure{patach}{\HCode{<!--patach-->}} + \Configure{qameschat}{\HCode{<!--qameschat-->}} + \Configure{qames}{\HCode{<!--qames-->}} + \Configure{qibbus}{\HCode{<!--qibbus-->}} + \Configure{rdot}{\HCode{<!--rdot-->}} + \Configure{segol}{\HCode{<!--segol-->}} + \Configure{sere}{\HCode{<!--sere-->}} + \Configure{shindot}{\HCode{<!--shindot-->}} + \Configure{shwa}{\HCode{<!--shwa-->}} + \Configure{sindot}{\HCode{<!--sindot-->}} +\fi +>>> + + +\<configure html4 abidir\><<< +\:CheckOption{pic-RL}\if:Option + \Configure{RL} + {\ifvmode \IgnorePar\EndP \def\RL:tag{div}\else \def\RL:tag{span}\fi + \HCode{<\RL:tag\space class="pic-RL">}\Picture*{}} + {\EndPicture\HCode{</\RL:tag>}} + {} {} {} {} + \Css{div.pic-RL{text-align:right;}} +\else + \Log:Note{for pictorial RL, use + the command line option `pic-RL'} + \Configure{RL} + {\HCode{<span class="RL">}} {\HCode{</span>}} + {} {\HCode{<br />}} {} {} + +\fi +>>> + +% \:CheckOption{RL2LR}\if:Option +% \Configure{RL} +% {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="RL" +% dir="rtl" >}} +% {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +% {} {} {} {} +% \else +% \Configure{RL} +% {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="RL" +% dir="rtl" >}} +% {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +% {} {\HCode{<br />}} {} {} +% \fi + + + + + + + + + + + +\<configure html4 romanian\><<< +\def\A:charset{charset=iso-8859-2} +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + +%%%%%%%%%%%%%%%%%%% +\subsection{Umlaut} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 german\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accent}\grmn@OTumlaut + \grmn@OTumlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\fi +>>> + + +\<configure html4 ngerman\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accent}\grmn@OTumlaut + \grmn@OTumlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\fi +>>> + +\<babel.def\><<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accent}\lower@umlaut\lower@umlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\fi +>>> + + + +\<u mlaut\><<< +\:CheckOption{new-accents} \if:Option \else +\Configure{accent}\bbl@umlauta + \bbl@umlaute{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\fi +>>> + +%%%%%%%%%%%%%%%%%%% +\subsection{Russian and Cyrillic} +%%%%%%%%%%%%%%%%%%% + + + +\<configure html4 t2benc\><<< +\def\:temp{charset=koi8-r}\ifx \A:charset\:temp \else + \def\A:charset{charset=iso-8859-5} +\fi +>>> + + + +\<configure html4 koi8-r\><<< +\def\A:charset{charset=koi8-r} +>>> + + + +\<set babel charset\><<< +\def\:temp{charset=koi8-r}\ifx \A:charset\:temp \else + \a:temp{russian}{iso-8859-5}{ru} +\fi +>>> + + + + +\<configure html4 russianb\><<< +\NewConfigure{dtd-lang}{1} \Configure{dtd-lang}{RU} +\def\:temp{charset=koi8-r}\ifx \A:charset\:temp \else + \def\A:charset{charset=iso-8859-5} +\fi +\ifx \@begindocumenthook\:UnDef\else + \:CheckOption{new-accents} \if:Option \else +% \def\:temp{russian}\ifx \languagename\:temp + |<russian|> +% \fi +\fi\fi +>>> + + +We had also \verb'\append:def\@begindocumenthook{\HLet\"|=\ddot}' in +babel. It gets russian and brazil into infinite loop. Why it was +inserted. + +ERROR: The non ascii characters might translate wrongly in the 4ht +file (e.g., \verb'^^e5' for 00EB below). They also not show in the +documentation since a cmtt10 font is in use and it doesn't covet those +symbols. The problem will probably vanish once the new accent approach +will kick in. + +We definitely don't want to use it with XeLaTeX and LuaLaTeX. + + +\<russian\><<< +\ifdefined\XeTeXrevision\else +\ifdefined\luatexversion\else +\input{html4-russian-accents.4ht} +\fi\fi +>>> + +\<html4-russian-accents\><<< +% html4-russian-accents.4ht (|version), generated from |jobname.tex +% Copyright 2009-2015 TeX Users Group +% Copyright |CopyYear.1999. Eitan M. Gurari +% +% Extracted to a separate file so the main file has a consistent +% (and UTF-8 compatible) encoding. +|<TeX4ht copywrite|> +\Configure{accent}\"\ddot{|<diaeresis codes|>å{00EB}% + {\@use@text@encoding \@curr@enc A}{00C4}% + {\@use@text@encoding \@curr@enc E}{00CB}% + {\@use@text@encoding \@curr@enc I}{00CF}% + {\@use@text@encoding \@curr@enc O}{00D6}% + {\@use@text@encoding \@curr@enc U}{00DC}% + {\@use@text@encoding \@curr@enc Y}{0178}% + {\@use@text@encoding \@curr@enc a}{00E4}% + {\@use@text@encoding \@curr@enc e}{00EB}% + {\@use@text@encoding \@curr@enc i}{00EF}% + {\@use@text@encoding \@curr@enc \i}{00EF}% + {\@use@text@encoding \@curr@enc o}{00F6}% + {\@use@text@encoding \@curr@enc u}{00FC}% + {\@use@text@encoding \@curr@enc y}{00FF}% + {\@use@text@encoding \@curr@enc å}{00EB}% + {}{34}} + {\a:accents{uml}{#1}} + {\def\:temp{>}\def\:tempa{#2}\ifx \:temp\:tempa\HCode{»}% + \else \def\:temp{<}\ifx \:temp\:tempa\HCode{«}% + \else \b:accents{uml}{#1}{#2}\fi\fi} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Accents Style} +%%%%%%%%%%%%%%%%%% + +\<configure html4-math accents\><<< +\Configure{accentset} + {\HCode{<span class="accentset">}} + {\HCode{<span class="accent">}} + {\HCode{</span></span>}} +\Configure{underaccent} + {\HCode{<span class="underaccent">}} + {\HCode{<span class="accent">}} + {\HCode{</span></span>}} +\Css{span.accentset span.accent{font-size:80\%; + position:relative; top:-1.7ex; left:-0.6em;}} +\Css{span.underaccent span.accent{font-size:80\%; + position:relative; top:1.6ex; left:-0.6em;}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Features} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Margin Comments} +%%%%%%%%%%%%%%%%%% + + +We need to consider cases like + \verb+\marginpar{ Consider: \par *one \par *two}+ +for margin pars. + + + +\<configure html4 latex\><<< +\Configure{marginpar} + {% + \def\marginpar:class{marginpar}% + \if@reversemargin\def\marginpar:class{reversemarginpar}\fi% + \ifvmode\IgnorePar\EndP\HCode{<div class="\marginpar:class">}% + \def\end:margp{\ifvmode \IgnorePar\fi \EndP \HCode{</div>}}% + \par + \else + \SaveEndP + \HCode{<span class="\marginpar:class">}% + \bgroup + \Configure{HtmlPar}{\HCode{<br />}}{\HCode{<br />}}{}{}% + \def\end:margp{\egroup\HCode{</span>}\RecallEndP}% + \fi + } + {\end:margp} +\Css{.marginpar,.reversemarginpar {width:20\%; float:right; text-align:left; + margin-left:auto; margin-top:0.5em; font-size:85\%; + text-decoration:underline;}} +\Css{.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;}} +\Css{.reversemarginpar{float:left;}} +>>> + +\verb'margin-left:auto' instead of \verb'margin-left:1em' +-- this makes margin paragraphs float correctly in Netscape 4.06 + browser + + +%%%%%%%%%%%%%%%%%% +\section{Pictures in Margins} +%%%%%%%%%%%%%%%%%% + +\<configure html4 picins\><<< +\Configure{parpic} + {\IgnorePar\EndP\HCode{<div class="picins-\parpicOpt">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +>>> + +\<configure html4 picins\><<< +\Css{.picins-dr, .picins-rd { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + border: 1px dashed black; + }} +\Css{.picins-dl, .picins-ld, .picins-d { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + border: 1px dashed black; + }} +\Css{.picins-fr, .picins-rf { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + border: 1px dashed black; + }} +\Css{.picins-fl, .picins-lf, .picins-f { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + border: 1px solid black; + }} +\Css{.picins-sr, .picins-rs { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 4px solid black; + border-bottom: 4px solid black; + }} +\Css{.picins-sl, .picins-ls, .picins-s { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 4px solid black; + border-bottom: 4px solid black; + }} +\Css{.picins-xr, .picins-rx { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 1px solid black; + border-bottom: 1px solid black; + }} +\Css{.picins-xl, .picins-lx, .picins-x { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 1px solid black; + border-bottom: 1px solid black; + }} +\Css{.picins-r { float:right; + padding: 2px; margin-left:5px; margin-bottom:3px; + }} +\Css{.picins-l, .picins- { float:left; + padding: 2px; margin-right:5px; margin-bottom:3px; + }} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Style Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%% +\subsection{subequations} +%%%%%%%%%%%%% + + +\<configure html4 amsmath\><<< +\ConfigureEnv{subequations} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="subequations">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + {}{} +>>> + + + +%%%%%%%%%%%%% +\subsection{subeqnarray} +%%%%%%%%%%%%% + + +\<configure html4 subeqnarray\><<< +\ConfigureEnv{subeqnarray} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="subeqnarray">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par\ShowPar} + {}{} +>>> + +%%%%%%%%%%%%% +\subsection{Ushort} +%%%%%%%%%%%%% + + +\<configure html4-math ushort\><<< +\Configure{ushort} + {\HCode{<span class="underline">}\hbox\bgroup \:gobble} + {\egroup \HCode{</span>}} +\Configure{ushortw} + {\HCode{<span class="underline">}\hbox\bgroup \:gobble} + {\egroup \HCode{</span>}} +\Configure{ushortd} + {\HCode{<span class="underline-d">}\hbox\bgroup \:gobble} + {\egroup \HCode{</span>}} +\Configure{ushortdw} + {\HCode{<span class="underline-d">}\hbox\bgroup \:gobble} + {\egroup \HCode{</span>}} +\Configure{ushortdline} + {\HCode{<span class="underline-d">}\hbox\bgroup \:gobble} + {\egroup \HCode{</span>}} +\Css{.underline-d{ border-bottom: 3px double black; + margin-bottom:1pt; }} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\subsection{MeX} +%%%%%%%%%%%%%%%%%% + + +\<configure html4 mex\><<< +\def\MeX{\HCode{<span class="MeX">}MeX\HCode{</span>}} +>>> + +%%%%%%%%%%%%%%%%%% +\subsection{eplain} +%%%%%%%%%%%%%%%%%% + + +\<configure html4 eplain\><<< +\Configure{columns} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="columns"><!--cols=\NumColumns-->}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.columns { margin-left:2em; margin-right:2em; }} +>>> + + +\<configure html4 eplain\><<< +\Configure{bibliography} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="bibliography">}\par} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +>>> + + + +\<configure html4 eplain\><<< +\Configure{makecolumns} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="makecolumns"><tr><td>}% + \gdef\make:col{\gdef\make:col{\HCode{<br />}}}} + {\HCode{</td></tr></table>}} + {\HCode{</td><td>}% + \gdef\make:col{\gdef\make:col{\HCode{<br />}}}} + {\make:col} + {} +\Css{table.makecolumns{width:100\%;}} +\Css{table.makecolumns td {vertical-align:top;}} +>>> + + +\<configure html4 eplain\><<< +\Configure{flushleft} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="flushleft">}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}} + {\HCode{<br />}} +\Configure{flushright} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="flushright">}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}} + {\HCode{<br />}} +\Configure{center} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="center">}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}} + {\HCode{<br />}} +\Css{div.center {text-align:center;}} +\Css{div.flushright {text-align:right;}} +\Css{div.flushleft {text-align:left;}} +>>> + + + +\<configure html4 eplain\><<< +|<eplain dates|> +\Configure{numberedlist} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<ol>}\let\end:itm=\empty} + {\ifvmode \IgnorePar\fi \end:itm \HCode{</ol>}} + {\end:itm \def\end:itm{\EndP\Tg</li>}\HCode{<li>}\special{t4ht@[}\IgnorePar} + {\special{t4ht@]}} +\Configure{orderedlist} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<ol>}\let\end:itm=\empty} + {\ifvmode \IgnorePar\fi \end:itm \HCode{</ol>}} + {\end:itm \def\end:itm{\EndP\Tg</li>}\HCode{<li>}\special{t4ht@[}\IgnorePar} + {\special{t4ht@]}} +\Configure{unorderedlist} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<ul>}\let\end:itm=\empty} + {\ifvmode \IgnorePar\fi \end:itm \HCode{</ul>}} + {\ifvmode \IgnorePar\fi \EndP + \end:itm \def\end:itm{\EndP\Tg</li>}% + \HCode{<li>}\special{t4ht@[}\IgnorePar} + {\special{t4ht@]}} +>>> + +\<configure html4 eplain\><<< +\Configure{listing} + {\IgnorePar\EndP \HCode{<div class="listing">}\par + \Configure{HtmlPar} + {\EndP} + {\EndP} + {~\HCode{<br />}} + {~\HCode{<br />}} + } + {\HCode{</div>}\par} +>>> + + +\<configure html4-math eplain\><<< +\Configure{PicDisplay} + {\edef\MathPar{\ifvmode par-\fi}\IgnorePar\endgraf\EndP + \HCode{<div class="\if@leftdisplays leftdisplay\else centereddisplay\fi">}} + {\HCode{</div>}} {} {class="\MathPar math-display" } +\Css{div.lsftdisplay {text-align:left;}} +\Css{div.centereddisplay {text-align:center;}} +>>> + + +\<configure html4-math eplain\><<< +\Configure{contents} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="contents">}} + {\HCode{</div>}} +\Configure{tocchapterentry} + {\HCode{<span class="tocchapterentry">}} + {\HCode{</span><span class="toc-num">}} + {\HCode{</span>}} +\Configure{tocsectionentry} + {\HCode{<span class="tocsectionentry">}} + {\HCode{</span><span class="toc-num">}} + {\HCode{</span>}} +\Configure{tocsubsectionentry} + {\HCode{<span class="tocsubsectionentry">}} + {\HCode{</span><span class="toc-num">}} + {\HCode{</span>}} +\Css{span.tocchapterentry{width:30em}} +\Css{span.tocsectionentry{width:30em; padding-left:1.5em}} +\Css{span.tocsectionentry{width:30em; padding-left:3em}} +\Css{span.toc-num{width:6em; padding-left:2em}} +>>> + + + +\<eplain dates\><<< +\Configure{monthname} + {\HCode{<span class="month">}} + {\HCode{</span>}} +\Configure{timestring} + {\HCode{<span class="time">}} + {\HCode{</span>}} +\Configure{timestamp} + {\HCode{<span class="timestamp">}} + {\HCode{</span>}} +\Configure{today} + {\HCode{<span class="today">}} + {\HCode{</span>}} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\section{Drawing Utilitis} +%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Diagrams} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 epsf\><<< +\Configure{epsfsetgraph} + {\Picture+[\PicName]{}} + {\EndPicture} +>>> + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Diagrams} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 diagrams\><<< +\ConfigureEnv{diagram} + {\ifvmode \IgnorePar \EndP + \Tg<div class="diagrams">\def\End:Diagrams{\Tg</div>}% + \else \let\End:Diagrams\empty + \fi } + {\End:Diagrams} + {}{} +\Configure{diagram} + {\Picture*{}$} {$\EndPicture} +\Css{.diagrams {text-align: center;}} +>>> + +%%%%%%%%%%%%%%%%%%% +\subsection{dratex} +%%%%%%%%%%%%%%%%%%% + + \<configure html4 dratex\><<< +\Css{div.Draw{text-align:center}} +>>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{pgf} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 pgf\><<< +\ConfigureEnv{pgfpicture} + {\hbox\bgroup\Picture+[picture]{}} + {\EndPicture\egroup} + {}{} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{pgf} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 overpic\><<< +\ConfigureEnv{overpic} + {\Picture*[pic]{}} + {\EndPicture} + {}{} +>>> + + + + +%%%%%%%%%%%%%% +\subsection{psfig} +%%%%%%%%%%%%%% + +\<configure html4 psfig\><<< +|<0,32,4 psfig|> +>>> + +\<0,32,4 psfig\><<< +\Configure{psfig} {\Picture+[psfig]{}}{\EndPicture} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{graphics} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 graphics\><<< +\:CheckOption{graphics-} \if:Option + \Configure{graphics} + {\bgroup + \let\E:IMG=\e:IMG \let\e:IMG=\empty + \Picture+[\a:GraphicsAlt]{ class="graphics"}} + {\EndPicture + \E:IMG\HCode{<!--tex4ht:graphics + \Hnewline name="\PictureFile" src="\Gin@base\Gin@ext" + \Hnewline -->}% + \egroup} +\else + |<graphics quality|> + \Configure{graphics} + {\bgroup + \let\E:IMG=\e:IMG \let\e:IMG=\empty + \Picture+[\a:GraphicsAlt]{ class="graphics"}} + {\EndPicture \ifx\noBoundingBox\UnDefined + |<pixels graphics width/height|>\fi + \E:IMG\HCode{<!--tex4ht:graphics + \Hnewline name="\PictureFile" src="\Gin@base\Gin@ext" + \Hnewline -->}% + \egroup} +\fi +\Configure{graphics*} + {gif} + {{\Configure{Needs}{File: \Gin@base.gif}\Needs{}}% + \Picture[\a:GraphicsAlt]{{\Gin@base.gif} |<graphics dim|>}} +\Configure{graphics*} + {png} + {{\Configure{Needs}{File: \Gin@base.png}\Needs{}}% + \Picture[\a:GraphicsAlt]{{\Gin@base.png} |<graphics dim|>}} +\Configure{graphics*} + {jpg} + {{\Configure{Needs}{File: \Gin@base.jpg}\Needs{}}% + \Picture[\a:GraphicsAlt]{{\Gin@base.jpg} |<graphics dim|>}} +\Configure{graphics*} + {jpeg} + {{\Configure{Needs}{File: \Gin@base.jpeg}\Needs{}}% + \Picture[\a:GraphicsAlt]{{\Gin@base.jpeg} |<graphics dim|>}} +\Configure{graphics*} + {svg} + {{\Configure{Needs}{File: \Gin@base.svg}\Needs{}}% + \Picture[\a:GraphicsAlt]{{\Gin@base.svg} |<graphics dim|>}} +\Configure{graphics*} + {eps} + {\openin15=\csname Gin@base\endcsname\PictExt\relax% + \ifeof15% + \Needs{\a:EpsConvert}% + \fi% + \closein15% + {\Configure{Needs}{File: \Gin@base\PictExt}\Needs{}}% + \Picture[\a:GraphicsAlt]{{\Gin@base\PictExt} |<graphics dim|>}} + +|<graphics default extensions|> + +\edef\svg:ext{.svg} + +\NewConfigure{ImageMagick}{1} +\NewConfigure{Ghostscript}{1} + +\Configure{ImageMagick}{convert} +\Configure{Ghostscript}{rungs} + +\ifx\gr:density\empty +\gdef\gr:density{300} +\fi + +\NewConfigure{EpsConvert}{1} +\NewConfigure{PdfConvert}{2} + +% test the picture output format +\ifx\PictExt\svg:ext +\Configure{PdfConvert}{svg}{"pdf2svg "\Gin@base.pdf" "\Gin@base-\Gin@page.\a:PdfConvert" \Gin@page"} +% the quality of conversion using ImageMagick is quite bad, it rasterizes the vectors and +% the resulting SVG is basically PNG encapsulated in SVG +% \Configure{EpsConvert}{"\a:ImageMagick\space '\Gin@base.eps' '\Gin@base.svg'"} +% it is better to use the following command. pdf2svg must be installed separately. +\Configure{EpsConvert}{"epstopdf "\Gin@base.eps" && pdf2svg "\Gin@base.pdf" "\Gin@base.svg""} +\else +\Configure{PdfConvert}{png}{"\a:Ghostscript\space -q -dNOPAUSE -dBATCH -dusecropbox -sDEVICE=pngalpha -r\gr:density\space \ifx\Gin@page\@empty\else -dFirstPage="\Gin@page" -dLastPage="\Gin@page"\fi\space -sOutputFile="\Gin@base-\Gin@page.\a:PdfConvert" "\Gin@base.pdf" "} +\Configure{EpsConvert}{"\a:Ghostscript\space -dSAFER -dBATCH -dNOPAUSE -dEPSCrop -r\gr:density\space -sDEVICE=pngalpha -sOutputFile="\Gin@base.png" "\Gin@base.eps" "} +\fi +\Configure{graphics*} + {pdf} + {\ifdefined\Gin@page\else\def\Gin@page{1}\fi% + \edef\svg:filename{\Gin@base-\Gin@page.\a:PdfConvert}% + % test for existence of the converted file + \openin15=\svg:filename\relax + \ifeof15 + \Needs{\b:PdfConvert}% + \fi + \closein15 + { \Configure{Needs}{File: \svg:filename}\Needs{}}% + \Picture[\a:GraphicsAlt]{{\svg:filename} |<graphics dim|>}} + +\NewConfigure{GraphicsAlt}{1} +\Configure{GraphicsAlt}{PIC} +|<includegraphics dim|> +>>> + +\<graphics quality\><<< +\def\:temp#1graphics-#2,#3|<par del|>{\def\gr:density{#2}} +\expandafter\:temp\Preamble,graphics-,|<par del|> +\ifx \gr:density\empty + \Log:Note{if included graphics are + of degraded quality, try the command line options + `graphics-num' or `graphics-'. The `num' should provide + the density of pixels in the bitmaps (e.g., 110). + } +\fi +\def\int:pt#1.#2|<par del|>{#1} +>>> + + + +\<graphics dim\><<< +\csname a:Gin-dim\endcsname +>>> + + +\<includegraphics dim\><<< +\NewConfigure{Gin-dim}{1} +\:CheckOption{Gin-dim} \if:Option + \Configure{Gin-dim} + {\ifx\noBoundingBox\UnDefined + |<graphics width/height|>% + \else + |<graphicx width/height|>% + \fi + class="includegraphics" + } +\else \:CheckOption{Gin-dim+} \if:Option + \Configure{Gin-dim} + {\ifx \Gin:ewidth\Gin@exclamation + \ifx \Gin:eheight\Gin@exclamation + \ifx\noBoundingBox\UnDefined + |<graphics width/height|>% + \fi + \else + height="\expandafter\int:pt\Gin:eheight|<par del|>" + \fi + \else + width="\expandafter\int:pt\Gin:ewidth|<par del|>" + \ifx \Gin:eheight\Gin@exclamation \else + height="\expandafter\int:pt\Gin:eheight|<par del|>" + \fi + \fi + class="includegraphics" + } +\else + \Log:Note{for key dimensions try the option + `Gin-dim'; for key dimensions when bounding box is unavailable + try `Gin-dim+'; neither is recommended} + \Configure{Gin-dim} + {\if:boundingbox{|<graphics width/height|>}{}} +\fi \fi +>>> + +\<pixels graphics width/height\><<< +\ifx \gr:density\empty + \HCode{ + width="\expandafter\int:pt\the\Gin@req@width|<par del|>" + height="\expandafter\int:pt\the\Gin@req@height|<par del|>" + }% +\else + \bgroup + \divide\Gin@req@width by 72 + \multiply\Gin@req@width by \gr:density \relax + \divide\Gin@req@height by 72 + \multiply\Gin@req@height by \gr:density \relax + \HCode{ + width="\expandafter\int:pt\the\Gin@req@width|<par del|>" + height="\expandafter\int:pt\the\Gin@req@height|<par del|>" + }% + \egroup +\fi +>>> + + +\<graphics width/height\><<< +width="\expandafter\int:pt\the\Gin@req@width|<par del|>" +height="\expandafter\int:pt\the\Gin@req@height|<par del|>" +>>> + +\<graphicx width/height\><<< +\ifx \Gin:ewidth\Gin@exclamation \else + width="\expandafter\int:pt\Gin:ewidth|<par del|>" +\fi +\ifx \Gin:eheight\Gin@exclamation \else + height="\expandafter\int:pt\Gin:eheight|<par del|>" +\fi +>>> + +Declare default graphics extensions supported in HTML or converted to these +supported formats by tex4ht. + +\<graphics default extensions\><<< +\DeclareGraphicsExtensions{.png,.svg,.jpg,.eps,.pdf} +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{graphicx} + +\<configure html4 graphicx\><<< +\Configure{rotatebox}{\HCode{<span class="rotatebox" style="transform: rotate(-\Grot@angle deg);">}}{\HCode{</span>}} +\Css{.rotatebox{display: inline-block;}} +>>> + +%%%%%%%%%%%%%%%%%% +\subsection{xy} +%%%%%%%%%%%%%%%%%% + +\<configure html4 xy\><<< +|<32,4 xy|> +>>> + +\<32,4 xy\><<< +\Configure{xypic} + {\Picture*{}} {\EndPicture} +\def\:tempc{\HCode{<span class="Xy">}X\HCode{<span + class="Y">}Y\HCode{</span>}} +\HLet\Xy\:tempc +\Css{span.Xy span.Y{ position:relative; top:0.35ex;left:-0.25em;}} +>>> + + + +%%%%%%%%%%%%%%%%%% +\subsection{pstricks} +%%%%%%%%%%%%%%%%%% + + +\<configure html4 pst-all\><<< +\ConfigureEnv{psmatrix} + {\Picture*{}} + {\EndPicture} + {}{} +>>> + +\<configure html4 pstricks\><<< +\Configure{pspicture} + {\ifvmode \ifinner\else \vfill\break\fi + \leavevmode\fi + \bgroup + \ifdim \pst@dimh<\z@ \pst@dimh=-\pst@dimh \fi + \HCode{<!--width="\ifdim \wd\pst@hbox=\z@ \the\pst@dimg + \else\the\wd\pst@hbox\fi" + height="\ifdim \ht\pst@hbox=\z@ \the\pst@dimh + \else \the\ht\pst@hbox\fi"-->}% + \egroup + \Picture+[\a:pspictureAlt]{ class="pspicture"}} + {\EndPicture} +\NewConfigure{pspictureAlt}{1} +\Configure{pspictureAlt}{PIC} +>>> + +%%%%%%%%%%%%%%%%%% +\subsection{pb-diagram} +%%%%%%%%%%%%%%%%%% + +\<configure html4 pb-diagram\><<< +\ConfigureEnv{diagram} + {\Picture*{ class="pb-diagram"}$} {$\EndPicture} {}{} +\Css{.pb-diagram {align:center}} +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{pictex} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 pictex\><<< +\Configure{pictex} + {\:xhtml{\IgnorePar\EndP}\HCode{<div + class="pictex">}}{\HCode{</div>}}{+[PICT]} +\Css{div.pictex {text-align:center;}} +>>> + + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{mfpic} +%%%%%%%%%%%%%%%%%%%% + +\<configure html4 mfpic\><<< +\expandafter \ifx\csname if@mfp@latexe\endcsname\relax + |<non 2005 latex mpic|> +\else + |<2005 latex mpic|> +\fi +>>> + +\<non 2005 latex mpic\><<< +\Configure{mfpic} {\Picture+{}} {\EndPicture} +>>> + +\<2005 latex mpic\><<< +\ConfigureEnv{mfpic} {\Picture+{}} {\EndPicture}{}{} +>>> + + + + + +%%%%%%%%%%%%%%%%%%% +\section{Slides} +%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%% +\subsection{powerdot} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 powerdot\><<< +|<powerdot fields|> +\Configure{@HEAD} + {\HCode{\Hnewline<!-- + http://www.w3.org/Talks/Tools/Slidy/slidy.js -->\Hnewline + <script src="Slidy/slidy.js" + type="text/javascript"><![CDATA[ \Hnewline + ]]></script>\Hnewline}} +\Log:Note{Requires the slidy.js and *.css files from + http://www.w3.org/Talks/Tools/Slidy/slidy.zip + in subdirectory Slidy} +>>> + +\<configure html4 powerdot\><<< +\def\:temp#1font=#2,#3|<par del|>{% + \if !#2!% + \Log:Note{for adjusted font size, use + the command line option `font=...' (e.g., font=-2)} + \else + \Configure{@HEAD} + {\HCode{<meta name="font-size-adjustment" + content="#2" />}\Hnewline} + \fi} +\expandafter\:temp\Preamble ,font=,|<par del|> +>>> + + + +\<configure html4 powerdot\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="slide cover"><div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div></div>}} + {\NoFonts\IgnorePar\HCode{<h1 class="slideTitle"\a:LRdir>}\IgnorePar} + {\HCode{</h1>}\IgnoreIndent\EndNoFonts} +\Css{div.slide.cover{width:100\%;}} +>>> + +\<configure html4 powerdot\><<< +\ConfigureEnv{titleslide}{}{}{}{} +\ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="slide">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +\ConfigureEnv{sectionslide} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="slide">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +>>> + +\<configure html4 powerdot\><<< +\Configure{slidetitle} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<h1 class="slideTitle">}\IgnorePar\bgroup + \ConfigureEnv{minipage}{}{}{}{}} + {\egroup\ifvmode \IgnorePar\fi \EndP \HCode{</h1>}\ShowPar\par} +>>> + +\<configure html4 powerdot\><<< +\Css{div.toolbar { + position: fixed; z-index: 200; + top: auto; bottom: 0; left: 0; right: 0; + height: 1.2em; text-align: right; + padding-left: 1em; + padding-right: 1em; + font-size: 60\%; + color: \#FF0000; background: \#EEEEEE; +} } +>>> + + +\<configure html4 powerdot\><<< +\ConfigureList{itemize}% + {|<start pause region|>% + \EndP\HCode{<ul \a:LRdir + class="|<cond incremental|>itemize\expandafter\the + \csname @itemdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\ifvmode \IgnorePar\fi + \EndP\HCode{</li></ul>}\ShowPar + |<end pause region|>} + {\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark} + {\HCode{<li class="itemize">}} +>>> + +\<configure html4 powerdot\><<< + \ConfigureList{enumerate}% + {|<start pause region|>|<powerdot enumerate I|>} + {|<enumerate II|>} + {|<enumerate III|>} + {|<enumerate IV-|>|<end pause region|>} +>>> + +\<powerdot enumerate I\><<< +\EndP\HCode{<ol \a:enumerate:\space + class="|<cond incremental|>enumerate\expandafter + \the\csname @enumdepth\endcsname" + \a:LRdir + >}|<save end:itm|>\global\let\end:itm=\empty +>>> + + +\<configure html4 powerdot\><<< +\ConfigureList{description}% + {|<start pause region|>\EndP\HCode{<dl \a:LRdir + class="|<cond incremental|>description">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar + |<end pause region|>} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="description">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}} +>>> + + + +\<configure html4 powerdot\><<< +\def\pause{\hbox{\expandafter\global\expandafter\let\csname + pi-\pauseId\endcsname=\def}} +\let\pd:item\pd@item +\def\pd@item[#1]<#2>{\pd:item[#1]<>\pause} +>>> + + +\<cond incremental\><<< +\ifTag{pi-\pauseId}{incremental }% +>>> + +\<powerdot fields\><<< +\HAssign\PauseId = 0 +\HAssign\pauseId = 0 +>>> + + +\<start pause region\><<< +\PushStack\Table:Stck\pauseId +\gHAdvance\PauseId by 1 +\global\let\pauseId=\PauseId +>>> + +\<end pause region\><<< +\expandafter\ifx\csname pi-\pauseId\endcsname\relax \else + \expandafter\global\expandafter\let\csname + pi-\pauseId\endcsname=\:UnDef + \Tag{pi-\pauseId}{}% +\fi +\PopStack\Table:Stck\pauseId +\global\let\pauseId=\pauseId +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Beamer} +%%%%%%%%%%%%%%%%%%% + + + + +\<configure html4 beamer\><<< +|<beamer slides|> +|<beamer environments|> +\ifx \beamer@version\:UnDef + |<beamer toc 0.8 and 0.3|> +\fi +>>> + +\<beamer environments\><<< +\let\block:Name=\empty +\ConfigureEnv{block} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{block}\fi + \HCode{<div class="\block:Name">}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +\ConfigureEnv{alertblock} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{alertblock}\fi + \HCode{<div class="\block:Name">}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +\ConfigureEnv{Problem} + {\def\block:Name{Problem}} {} {} {} +\ConfigureEnv{Loesung} + {\def\block:Name{Loesung}} {} {} {} +\ConfigureEnv{Definition} + {\def\block:Name{Definition}} {} {} {} +\ConfigureEnv{Satz} + {\def\block:Name{Satz}} {} {} {} +\ConfigureEnv{Beweis} + {\def\block:Name{Beweis}} {} {} {} +\ConfigureEnv{Folgerung} + {\def\block:Name{Folgerung}} {} {} {} +\ConfigureEnv{Lemma} + {\def\block:Name{Lemma}} {} {} {} +\ConfigureEnv{Fakt} + {\def\block:Name{Fakt}} {} {} {} +\ConfigureEnv{Theorem} + {\def\block:Name{Theorem}} {} {} {} +\ConfigureEnv{Proof} + {\def\block:Name{Proof}} {} {} {} +\ConfigureEnv{Corollary} + {\def\block:Name{Corollary}} {} {} {} +\ConfigureEnv{Fact} + {\def\block:Name{Fact}} {} {} {} +\ConfigureEnv{definition} + {\def\block:Name{definition}} {} {} {} +\ConfigureEnv{definitions} + {\def\block:Name{definitions}} {} {} {} +\ConfigureEnv{theorem} + {\def\block:Name{theorem}} {} {} {} +\ConfigureEnv{proof} + {\def\block:Name{proof}} {} {} {} +\ConfigureEnv{corollary} + {\def\block:Name{corollary}} {} {} {} +\ConfigureEnv{fact} + {\def\block:Name{fact}} {} {} {} +>>> + +\<beamer toc 0.8 and 0.3\><<< +\ConfigureEnv{exampleblock} + {\par\IgnorePar\EndP + \ifx \block:Name\empty \def\block:Name{exampleblock}\fi + \HCode{<div class="\block:Name">}\global\let\block:Name=\empty} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +>>> + + +\<beamer environments\><<< +\ConfigureEnv{Beispiel} + {\def\block:Name{Beispiel}} {} {} {} +\ConfigureEnv{Beispiele} + {\def\block:Name{Beispiele}} {} {} {} +\ConfigureEnv{Example} + {\def\block:Name{Example}} {} {} {} +\ConfigureEnv{Examples} + {\def\block:Name{Examples}} {} {} {} +\ConfigureEnv{example} + {\def\block:Name{example}} {} {} {} +\ConfigureEnv{examples} + {\def\block:Name{examples}} {} {} {} +\Css{div.Example, div.examplblock, div.Beispiele, + div.Beispiel, div.Examples, div.example, div.examples{color:green;}} +>>> + +\<beamer slides\><<< +\:CheckOption{1} \if:Option + \ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP + \ifnum \Slide:cnt>0 \HPage{}\fi + \ifvmode \IgnorePar\fi \EndP + |<beamer header|>% + \HCode{<div class="slide">}\par + } + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}\ifnum \Slide:cnt>1\relax \EndHPage{}\fi} + {} {} + \Css{div.slide {border-top:solid black 0.4pt;}} +\else + \Log:Note{for pagination of slides, + use the command line option `1'} + \ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<hr class="hidden" />}% + |<beamer header|>% + \HCode{<div class="slide">}\par + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} + \Css{div.slide {border:solid black 0.4pt;}} +\fi +>>> + +This is code for the moder Beamer + +\<beamer slides\><<< + +\Configure{frame}{\ifvmode\IgnorePar\fi\EndP + \HCode{<div class="slide">} +}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}} +\Configure{frametitle}{\ifvmode\IgnorePar\fi\EndP\HCode{<h2>}\NoFonts}{\EndNoFonts\ifvmode\IgnorePar\fi\EndP\HCode{</h2>}\par\ShowPar} +\Css{div.slide {border:solid black 0.4pt;margin-bottom:1em;}} + +>>> + + + + + +\<beamer toc 0.8 and 0.3\><<< +\Configure{frametitle} + {\ifvmode \IgnorePar\fi \EndP \HCode{<h2 class="frametitle">}\bgroup + \Configure{HtmlPar}{ }{ }{}{}% + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</h2>}} +>>> + +\<configure html4 beamer\><<< +\Css{h1, h2, span.inst sup{font-size:100\%;}} + +\ConfigureEnv{overlayarea} + {\bgroup + \ConfigureEnv{minipage} + {\bgroup \IgnorePar\EndP + \ConfigureEnv{minipage} + {\bgroup \IgnorePar\EndP + \HCode{<table class="minipage"><tr><td>}} + {\EndP\HCode{</td></tr></table>}\egroup } + {}{}% + } + {\EndP\egroup } + {}{} + } + {\egroup} {}{} +>>> + + +\<configure html4 beamer\><<< +\Configure{sec@slide} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="hidden">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par + |<beamer cross links|>\par} +\Css{.hidden {visibility:hidden;}} + +\Css{table.columns {width:100\%;}} +\Css{td.column {vertical-align:top;}} +>>> + + +\<configure html4 beamer\><<< +\Configure{inst} + {\HCode{<span class="inst">}} + {\HCode{</span>}} + +\Configure{titlepage} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="titlepage">}% + \gHAdvance\Slide:cnt by 1 + \Link{}{sl1}\EndLink + |<beamer cross links|>% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{title} + {\ifvmode \IgnorePar\fi \EndP \HCode{<h1 class="title">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</h1>}} +\Configure{author} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="author">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{institute} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="institute">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{date} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="date" \a:LRdir>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{andtitle}{\HCode{<br />}} +\Css{div.titlepage {text-align:center;}} +\Css{div.institute { margin-bottom: 1em; margin-top: 1em;}} +>>> + + +\<configure html4 beamer\><<< +\ConfigureEnv{columns} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="columns"><tr>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</tr></table>}} + {}{} + +\ConfigureEnv{column} + {\bgroup + \ConfigureEnv{minipage} + {\bgroup \IgnorePar\EndP + \ConfigureEnv{minipage} + {\bgroup \IgnorePar\EndP + \HCode{<table class="minipage"><tr><td>}} + {\EndP\HCode{</td></tr></table>}\egroup } + {}{}% + } + {\EndP\egroup } + {}{}% + \HCode{<td class="column">}% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</td>}\egroup} + {}{} +>>> + + +\<configure html4 beamer\><<< +\ifx \beamer@version\:UnDef + |<shared conf beamer 0.8 and 0.3|> + \ifx \insertinstituteshort\:UnDef + |<conf beamer 0.8|> + \else + |<conf beamer 0.3|> + \fi +\else + |<conf beamer 3.01|> +\fi +>>> + +\<shared conf beamer 0.8 and 0.3\><<< +\Configure{sectionshadedintoc} + {\HCode{<div class="sectionshadedintoc">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} +\Configure{sectionintoc} + {\HCode{<div class="sectionintoc">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} +\Configure{subsectionshadedintoc} + {\HCode{<div class="subsectionshadedintoc">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} +\Configure{subsectionintoc} + {\HCode{<div class="subsectionintoc">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} +\Css{div.sectionintoc, div.sectionshadedintoc{ margin-top:1em; }} +\Css{div.tableofcontents + { padding-left:1em; padding-right:1em; padding-bottom:1em; }} +\Css{.tableofcontents div.subsectionintoc, + .tableofcontents div.subsectionshadedintoc{ margin-left:1em; }} +>>> + +\<configure html4 beamer\><<< +\ConfigureToc{toc} + {} + {\Configure{TocLink} + {\def\hyperlink########1########2{\Link{####2}{}########2\EndLink}####4}% + \leavevmode} + {}{\par} +\Configure{tableofcontents} + {\IgnorePar\EndP \HCode{<div class="TableOfContents"\a:LRdir>}}{} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\ShowPar} + {}{} +>>> + + +\<beamer cross links\><<< +\slides:toc +>>> + +\<beamer header\><<< +\gHAdvance\Slide:cnt by 1 +\ifx \sec:name\empty + \HCode{<div class="hidden">}\Link{}{sl\Slide:cnt}\EndLink + \HCode{</div>}% +\else + \HCode{<div class="header">}\Link{}{sl\Slide:cnt}\EndLink + \sec:name + \ifx \subsec:name\empty \else \HCode{<br />}\subsec:name\fi + \HCode{</div>}% +\fi +>>> + +\<configure html4 beamer\><<< +\let\beamer:section=\@section +\def\@section[#1]#2{\beamer:section[#1]{#2}% + \gHAdvance\:bookmarkN by 1 + \def\sec:name{#2}\let\subsec:name=\empty} +\append:defI\subsection{% + \gHAdvance\:bookmarkN by 1 + \def\subsec:name{#1}} +\HAssign\:bookmarkN=0 +\let\sec:name=\empty +\let\subsec:name=\empty +\Css{div.header{ margin:0; text-align:right; font-size:70\%; }} +>>> + + + + + +\<configure html4 beamer\><<< +\gHAssign\Slide:cnt=0 +\def\slides:toc{% + |<beamer bookmarks|>% + |<beamer toc frames|>% + \gdef\slides:toc{\ifvmode \IgnorePar\fi \EndP + \HCode{<p class="links">}|<set beamer cross links|>% + \HCode{</p>}\par}% + \slides:toc +} +\Css{p.links{ margin:0; float:right; text-align:right; + font-size:70\%; }} +>>> + + +\<set beamer cross links\><<< +\bgroup + \HAdvance\Slide:cnt by 1\relax + \ifTag{)Qsl\Slide:cnt}{\Link{sl\Slide:cnt}{}next\EndLink\HCode{<br />}}{}% +\egroup +\ifnum \Slide:cnt>1 + \bgroup + \HAdvance\Slide:cnt by -1 + \Link{sl\Slide:cnt}{}prev\EndLink\HCode{<br />}% + \ifnum \:bookmarkN>0\relax + \Link[ target="|<tex4ht-menu|>" + ]{tc-\:bookmarkN}{}toc\EndLink\HCode{<br />}% + \fi + \Link{sl1}{}top\EndLink\HCode{<br />}% + {\HAdvance\Slide:cnt by 1\relax \Slide:cnt}% + \egroup +\else + \Link[ target="|<tex4ht-menu|>"]{bookmark}{}toc\EndLink +\fi +>>> + + + + + + + +\<beamer bookmarks\><<< +\:CheckOption{frames}\if:Option\else + \bgroup + \HPage{}{\beamer:bookmarks\tableofcontents}\EndHPage{}% + \egroup +\fi +>>> + + +\<configure html4 beamer\><<< +\:CheckOption{frames}\if:Option + \:CheckOption{ver}\if:Option + |<beamer ver frames|> + \else + \Log:Note{for vertically stacked frames, + use the command line options `frames' and `ver'} + |<beamer hor frames|> + \fi + \Css{body\#tex4ht-menu{ background-color:\#EEEEEE; }} +\fi +\def\beamer:bookmarks{% + \Link{}{bookmark}\EndLink + \HAssign\:bookmarkN=0 + |<beamer bookmark config|>% + \Configure{tableofcontents} + {\IgnorePar\EndP \HCode{<div class="bookmarks">}}{} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\ShowPar} + {}{} + \let\std:tableofcontents\tableofcontents + \def\tableofcontents{\std:tableofcontents[section,subsection]}% + } +>>> + + +\<beamer bookmark config\><<< +\:CheckOption{frames}\if:Option + \Configure{TocLink} + {\HAdvance\:bookmarkN by 1\relax + \Link{##2}{tc-\:bookmarkN}##4\ifvmode + \IgnorePar\fi \EndLink} +\else + \Configure{TocLink} + {\HAdvance\:bookmarkN by 1\relax + \Link[ target="|<tex4ht-main|>"]{##2}{tc-\:bookmarkN}##4\ifvmode + \IgnorePar\fi \EndLink} +\fi +>>> + + + +\<configure html4 beamer\><<< +\ConfigureToc{section} + {}{\HCode{<div class="sectionintoc">}} {\HCode{</div>}} {}{} +\ConfigureToc{subsection} + {} + {\HCode{<div class="subsectionintoc">}} + {\HCode{</div>}} {}{} +\Css{div.bookmarks {white-space: nowrap;}} +\Css{div.bookmarks div.subsectionintoc a { text-decoration: none; + font-size:85\%;}} +>>> + + +\<configure html4 beamer\><<< +\Configure{alert} + {\HCode{<span class="alert">}} + {\HCode{</span>}} +\Css{span.alert {color:\#FF0000;}} +\Hinclude{% + \Configure{HColor}{alert}{rgb(100\%,0\%,0\%)}% + \Configure{HColor}{blockstructure}{rgb(20\%,20\%,70\%)}% + \Configure{HColor}{darkgreen}{rgb(15\%,60\%,15\%)}% + \Configure{HColor}{lightgray}{rgb(90\%,90\%,90\%)}% + \Configure{HColor}{shaded}{rgb(60\%,60\%,60\%)}% + \Configure{HColor}{structuremedium}{rgb(30\%,30\%,30\%)}% + \Configure{HColor}{structureshaded}{rgb(75\%,75\%,75\%)}% + \Configure{HColor}{structure}{rgb(0\%,0\%,0\%)}% +}{color} +>>> + +The following is problematic when used on titles. + +\begin{verbatim} +\Configure{structure} + {\HCode{<span class="structure">}} + {\HCode{</span>}} +\Css{span.structure {color:\#000000;}} +\end{verbatim} + + + +%%%%%%%%%%%%%%% +\subsection{foils} +%%%%%%%%%%%%%%% + +\<configure html4 foils\><<< +\Configure{foilhead} {}{} + {\IgnorePar\EndP\HCode{<h2 class="foilheadHead" \a:LRdir>}} + {\HCode{</h2>}\par\ShowPar} +\ConfigureEnv{Theorem}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Lemma}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Corollary}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Corollary*}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Proposition}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Definition}{\par\leavevmode}{\ShowPar}{}{} +\ConfigureEnv{Proof}{\par\leavevmode}{\ShowPar}{}{} +|<foils bib|> +\:CheckOption{1} \if:Option + \CutAt{foilhead} + |<foils toc 1|>% +\else + \Log:Note{for pagination of slides, + use the command line option `1'} +\fi +{\Configure{Needs}{Font\string_Size: #1}\Needs{\@ptsize}} +\Css{h2.foilheadHead{text-align:center;}} +>>> + + + +\<configure html4 foils\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<div class="maketitle">}% + \bgroup + \Configure{tabular}{}{}{}{}{\ifnum \HRow>1 \HCode{<br />}\fi}{}% + \ConfigureEnv{tabular}{}{}{}{}% + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts + \IgnorePar \EndP + \HCode{<h1 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h1>}\IgnoreIndent\EndNoFonts} +\Configure{author date} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="date" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} +\Configure{thank} + {|<thank mark sup|>\Link{tk-\the\c@footnote}{}} + {\EndLink |<thank mark end sup|>} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="thank">}% + \IgnorePar + \protect\Link{}{tk-\the\c@footnote}\protect + \EndLink |<thank mark sup|>} + {|<thank mark end sup|>} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} +\Css{h1.titleHead{text-align:center;}} +\Css{div.author{margin-top:3em;text-align:center;}} +\Css{div.date{margin-top:2em;text-align:center;}} +\Css{div.thank{margin-top:3em;}} +\Css{div.thank + div.thank{margin-top:0em;}} +>>> + +\<configure html4 foils\><<< +\Configure{crosslinks+} + {\IgnorePar\EndP \NoFonts + \HCode{|<show input line no|>% + <div class="crosslinks"><p class="noindent">}} + {\HCode{</p></div>}\par\ShowPar \EndNoFonts} + {|<insert inline footnotes |>% + \ifvmode \IgnorePar\fi \EndP + \HCode{|<show input line no|>% + <div class="crosslinks"><p class="noindent">}\NoFonts } + {\EndNoFonts\HCode{</p></div>}\par\ShowPar} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%% +\section{epigraph.sty} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 epigraph\><<< +\Configure{epigraphhead} + {\IgnorePar\EndP\HCode{<div class="epigraphhead">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} + +\Configure{epigraph} + {\IgnorePar\EndP\HCode{<div class="epigraph">}} + {\IgnorePar\EndP\HCode{<div class="episource">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div></div>}} + + +\ConfigureEnv{epigraphs} + {\IgnorePar\EndP\HCode{<div class="epigraphs">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} {}{} + +\Configure{qitem} + {\IgnorePar\EndP\HCode{<div class="qitem">}} + {\IgnorePar\EndP\HCode{<div class="episource">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div></div>}} + +\Css{.epigraph, .epigraphhead, epigraphs {margin-left:60\%}} +\Css{.epigraphhead .epigraph {margin-left:0\%}} + +\Css{.episource {text-align:right}} +\Configure{epirule} {\ifvmode \IgnorePar\fi \EndP\Tg<hr />\par} + +\Css{.epigraphs table { width:40\% ;}} +\Css{.epigraphs table div .episource { text-align:right; width:100\%;}} +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{slides} +%%%%%%%%%%%%%%%%%% + +\<configure html4 slides\><<< +\:CheckOption{1} \if:Option + |<multi slides|> +\else + \Log:Note{for pagination of slides, + use the command line option `1'} + \ConfigureEnv{slide} + {\ifnum \c@slide=0 + \IgnorePar\EndP\HCode{<hr />}\fi} + {\rightline{\a:slidename}% + \IgnorePar\EndP\par\HCode{<hr />}} + {}{} +\fi +>>> + +\<multi slides\><<< +\ConfigureEnv{slide} + {\ifnum \c@slide=0 \EndP\ShowPar\else\IgnorePar\fi} + {} + {}{} +\CutAt{slide} +\Configure{crosslinks}{[}{] }{next}{prev}{}{}{}{up} +\Configure{crosslinks+} + {}{} + {\IgnorePar\EndP \HCode{<div + class="crosslinks"><p class="noindent">}% + {\advance\c@slide by -1 \the\c@slide}: } + {\HCode{</p></div>}\par} +\Css{.crosslinks{text-align:right;font-size:85\%;}} +>>> + +\<configure html4 slides\><<< +|<quote config|> +|<quotations|> +|<description 4|> +|<roman enumeiii|> +\ConfigureEnv{verse} + {\Tg<div class="verse">} + {\Tg</div>} + {}{} +\ConfigureEnv{note} + {\Tg<div class="note">} + {\Tg</div>} + {}{} +\ConfigureEnv{titlepage} + {\Tg<div class="titlepage">} + {\Tg</div>} + {}{} +>>> + + +\<configure html4 slides\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \vtop\bgroup \IgnorePar \EndP \HCode{<div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\egroup} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em; text-align:center; }} +\Configure{author date} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="date" \a:LRdir>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.author, div.date {text-align:center;}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Prosper} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<configure html4 prosper\><<< +|<prosper maketitle|> +|<prosper lists|> +>>> + + + +\<configure html4 prosper\><<< +\Configure{slidetitle} + {\NoFonts \ifvmode \IgnorePar\fi \EndP + \HCode{<h2 class="slidetitle">} } + {\ifvmode \IgnorePar\fi \EndP \HCode{</h2>}\EndNoFonts} +\Css{h2.slidetitle {text-align:center;}} +>>> + +\<configure html4 prosper\><<< +\Configure{Subtitle} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="Subtitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{email} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="email">}\Link[mailto:\@email]{}{}} + {\EndLink \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{institution} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="institution">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.email, div.institution {text-align:center;}} +>>> + + +\<configure html4 prosper\><<< +\:CheckOption{1} \if:Option + |<paginated prosper|> +\else + \Log:Note{for pagination of slides, + use the command line option `1'} + |<non paginated prosper|> +\fi +\:CheckOption{nolayers} \if:Option + \def\itemstep{\itemize} + \def\enditemstep{\enditemize} + \let\overlays=\:gobble +\else + \Log:Note{to remove overlays of slides, + use the command line option `nolayers'} +\fi +>>> + + +\<non paginated prosper\><<< +\ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP\HCode{<hr />}\par} + {\rightline{\bgroup + \ifx \slide\SlideNormal \advance\c@slide by -1 \fi + \ifnum \c@slide>0 + \the\c@slide + \ifx \slide\SlideOverlay .\the\c@overlaysCount\fi + \fi + \egroup + }}{}{} +>>> + + +\<paginated prosper\><<< +\HAssign\Slide:cnt=0 +\ConfigureEnv{slide} + {\ifnum \Slide:cnt>0 + \ifnum \Slide:cnt>1 + \ifvmode\IgnorePar\fi + \fi |<start prosper page|>% + } + {\ifnum \Slide:cnt=1 + \else |<end prosper page|>\fi + } + {}{} +>>> + + + +\<start prosper page\><<< +\ifnum \Slide:cnt=1 + \IgnorePar \par\EndP \HCode{<hr />}\par +\fi +\noindent +\HPage{\the\c@slide + \ifx \slide\SlideOverlay .\the\c@overlaysCount\fi + }\fi +\gHAdvance\Slide:cnt by 1 +\Tag{f-\Slide:cnt}{\FileName}% +>>> + + +\<end prosper page\><<< +\rightline{|<foot paginated prosper|>}% +\EndHPage{}~~ +>>> + + +\<foot paginated prosper\><<< +\bgroup + \ifx \slide\SlideNormal \advance\c@slide by -1 \fi + \the\c@slide +\egroup +\ifx \slide\SlideOverlay .\the\c@overlaysCount\fi, +\bgroup + \HAdvance\Slide:cnt by 1 + \ifTag{f-\Slide:cnt}{\Link + [\LikeRef{f-\Slide:cnt}]{}{}next\EndLink, }{}% +\egroup +\bgroup +\ifnum \Slide:cnt>1 + \HAdvance\Slide:cnt by -1 + \Link[\LikeRef{f-\Slide:cnt}]{}{}prev\EndLink, +\fi +\egroup +\Link[\LikeRef{f-1}]{}{}up\EndLink% +\ifTag{prosperTOC}{% + \edef\:temp{\FileName}\edef\:tempa{\LikeRef{prosperTOC}}% + \ifx \:temp\:tempa \else, + \Link[\LikeRef{prosperTOC}]{}{}toc\EndLink}{}\fi +>>> + +\<paginated prosper\><<< +\Configure{tableofcontents} + {\ifx \prosperTOCtag\:UnDef + \global\let\prosperTOCtag\def + \Tag{prosperTOC}{\FileName}% + \fi + \IgnorePar\EndP + \HCode{<div class="tableofcontents"\a:LRdir>}\IgnorePar} + {} + {\IgnorePar\EndP\HCode{</div>}\ShowPar} + {\HCode{<br />}} {} +>>> + +FROM MANUAL: +When translated into PDF files, \texttt{prosper} slides benefit from +additional possibilities such as transition effects between slides and +incremental display of a slide with several animation effects. The +currently supported transitions are: +\begin{itemize} +\item {Split}: two lines sweep across the screen revealing the + new slide; +\item {Blinds}: multiple lines, evenly distributed across the + screen, appear and synchronously sweep in the same direction to + reveal the new slide; +\item {Box}: a box sweeps from the center, revealing the new slide; +\item {Wipe}: a single line sweeps across the screen from one + edge to the other, revealing the new slide; +\item {Dissolve}: the old page image dissolves to reveal the new slide; +\item {Glitter}: similar to \texttt{Dissolve}, except the + effect sweeps across the image in a wide band moving from one side + of the screen to the other; +\item {Replace}: the effect is simply to replace the old page + with the new page. +\end{itemize} + + + +%%%%%%%%%%%%%%%%%% +\subsection{seminar} +%%%%%%%%%%%%%%%%%% + + + + + + +\<configure html4 seminar\><<< +\ConfigureEnv{slide} + {\ifvmode \IgnorePar\fi \EndP\HCode{<hr />}\par} + {\rightline{\the\c@slide}}{}{} +>>> +%%%%%%%%%%%%%%%%%%% +\subsection{slidesec} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 slidesec\><<< + \ConfigureToc{slidesection} + {\HCode{<span class="tocslidesection">}}{\ }{}{\HCode + {</span><br />}} +>>> + +%%%%%%%%%%%%%%%%%%% +\section{Lit Prog and Verbatim} +%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%% +\subsection{ProTex} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 ProTex\><<< +\def\NAME:{ id=} +\:CheckProtexOption{[[]]}\if:Option + |<frame protex code|> +\fi +>>> + +\<frame protex code\><<< +\HAssign\ShowCodeN = 0 +\Configure{FrameCode} + {\ifvmode \IgnorePar\fi \EndP + \gHAdvance\ShowCodeN by 1 + |<lynx separator|>% + \HCode{<div class="ShowCode" + id="ShowCode-\ShowCodeN">\ifx \:test\:minus + \else<div class="head">\fi}\par\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div></div>}} +\Configure{ShowCode} + {\HCode{\ifx \:test\:minus \else </div>\fi + \html:src<div class="body"><span class="ShowCode" + style="font-family:monospace,monospace;white-space:nowrap;" + >\html:invisible}% + \nobreak + } + {\special{t4ht=\html:src</span>% + \ifx \:test\:minus \else + </div><div class="tail">\html:BackTitle\fi}} + {\HCode{<br />\html:invisible}} + {\HCode{<i>}} + {\HCode{</i>}} + {|<nbsp|>} +\Css{div.ShowCode{background-color:\#EEEEEE; border: 1px white solid;}} +\Css{div.ShowCode div.head{background-color:\#E0E0E0;}} +\Css{div.ShowCode div.tail{background-color:\#E0E0E0;}} +>>> + +\<nbsp\><<< +\:nbsp% +>>> + +There used to be this code: + +\verb|\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x| + +The \verb|\:nbsp| is universal non breaking spacing macro for TeX4ht. It +handles cases when it is used inside pictures, so it should be used instead of +explicit specials. + +The `59' stands for semicolon. Explicit character might be problematic +for languages (e.g., French) where the cahacter is active and may be +imported from aux or another file. + + +\<lynx separator\><<< +\ifx \par:end\empty \HCode{<p></p>}\fi +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{moreverb} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 moreverb\><<< +|<moreverb.sty config 4.0t|> +>>> + +\<moreverb.sty config 4.0t\><<< +\ConfigureEnv{verbatimtab} + {\env:verb{verbatim}} + {\endenv:verb}{}{} +\Configure{verbatimtab} + {\HAdvance\Verb:N by 1 \ifnum \Verb:N>1 \:nbsp \HCode{<br />}\fi} + {\a:sp} +\ConfigureEnv{boxedverbatim} + {\env:verb{boxedverbatim}}{\endenv:verb}{}{} +\ConfigureEnv{boxedverbatim*} + {\env:verb{boxedverbatim}}{\endenv:verb}{}{} +\Css{table.boxedverbatim {width:100\%;}} +>>> + +\<moreverb.sty config 4.0t\><<< +\ConfigureEnv{boxedverbatim} + {\env:verB{boxedverbatim}}{\endenv:verb}{}{} +\ConfigureEnv{boxedverbatim*} + {\env:verB{boxedverbatim}}{\endenv:verb}{}{} +\def\env:verB#1{\IgnorePar\HCode{<table \Hnewline + class="#1"><tr class="#1"><td \Hnewline + class="#1"><pre class="#1">}\EndNoFonts} +\Css{ pre.boxedverbatim{border:solid 1px; padding-right:1em;} } +\Css{table.boxedverbatim {text-align:center;}} +>>> + + +\<moreverb.sty config 4.0t\><<< +\Configure{listinginput} + {\HCode{<div class="listinginput">}} + {\IgnorePar\HCode{</div>}} +\Css{.listinginput p{ margin-bottom:0em; margin-top:0em; }} +>>> + + +\<moreverb.sty config 4.0t\><<< +\Configure{verbatimtabinput} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="verbatimtabinput"\a:LRdir>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{fancyvrb} +%%%%%%%%%%%%%%%%%%% + + +\<configure html4 fancyvrb\><<< +\HAssign\fancyvrbNo|=0 +\Configure{fancyvrb} + {\IgnorePar \EndP \gHAdvance\fancyvrbNo by 1 + \gHAssign\fancyvrb:cnt0 + \HCode{<pre class="fancyvrb" id="fancyvrb\fancyvrbNo">}} + {\EndP\HCode{</pre>}} + {\gHAdvance\fancyvrb:cnt by 1 + \ifnum \fancyvrb:cnt>1 + \HCode{\Hnewline}\fi} {} + {}{} +\Css{pre.fancyvrb {white-space: pre-wrap; margin:0em;font-family:monospace,monospace;}} +>>> + + + +The following is harmful at the start of section 1.1 in +listings.dtx. + +\begin{verbatim} +\ConfigureEnv{verbatim}{\HAssign\Verb:N=0\relax}{\empty}{}{} +\ConfigureEnv{verbatim*}{\HAssign\Verb:N=0\relax}{\empty}{}{} +\end{verbatim} + + + + + +\<configure html4 fancyvrb\><<< +\Configure{fancyvrbcolor} + {\Css{pre\#fancyvrb\fancyvrbNo { color: \HColor; }}} + {\Css{pre\#fancyvrb\fancyvrbNo { background-color: \HColor;}}} + {\Css{pre\#fancyvrb\fancyvrbNo { border-color: \HColor;}}} +>>> + +\<configure html4 fancyvrb\><<< +\Configure{fancyvrbframe} + {\Css{pre\#fancyvrb\fancyvrbNo { border-top: solid \HSize; }}} + {\Css{pre\#fancyvrb\fancyvrbNo { border-left: solid \HSize; }}} + {\Css{pre\#fancyvrb\fancyvrbNo { border-bottom: solid \HSize; }}} + {\Css{pre\#fancyvrb\fancyvrbNo { border-right: solid \HSize; }}} + {\Css{pre\#fancyvrb\fancyvrbNo {border-width:\HSize;}}} + {\Css{pre\#fancyvrb\fancyvrbNo {padding:\HSize;}}} +>>> + +\<configure html4 fancyvrb\><<< +\Configure{BVerbatimInput} + {\ifvmode \IgnorePar \fi \EndP + \gHAssign\HRow=0 + \HCode{<div class="BVerbatimInput">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {\gHAdvance\HRow by 1 \ifnum \HRow>1 \HCode{<br />}\fi}{} +>>> + +%%%%%%%%%%%%%%%%%%%% +\subsection{minted} +%%%%%%%%%%%%%%%%%%%% + +Configuration for the inline code +\<configure html4 minted\><<< +\Configure{InlineCode}{\HCode{<code>}}{\HCode{</code>}} +>>> + +Configuration for listings with colored backgrounds +\<configure html4 minted\><<< +\Configure{MintedColorbg} + {\ifvmode\IgnorePar\fi\EndP\HCode{<div class="minted-color-box" style="background-color:\#\minted:bgcolor">}} + {\ifvmode\IgnorePar\fi\EndP\HCode{</div>}} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{pythontex} +%%%%%%%%%%%%%%%%%%%% + +Configuration for the inline code +\<configure html4 pythontex\><<< +\Configure{InlineCode}{\HCode{<code>}}{\HCode{</code>}} +>>> + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Listings} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 listings\><<< +\Configure{lstinline} + {\HCode{<span class="lstinline">}} + {\HCode{</span>}} +>>> + +\<configure html4 listings\><<< +\Log:Note{to ensure proper alignments use + fixed size fonts (see listings.dtx)} +>>> + +\<configure html4 listings\><<< +\HAssign\listings:Depth = 0 +\Configure{listings} + {\ifvmode \IgnorePar\fi \EndP + {\everypar{}\leavevmode}\HCode{<!--l. \the\inputlineno-->}% + \ifnum \listings:Depth=0 \HCode{<pre class="listings">}\else + \HCode{<span class="listings-nested">}\fi + \gHAdvance\listings:Depth by 1 + } + {\gHAdvance\listings:Depth by -1 + \ifnum \listings:Depth=0 \HCode{</pre>}\else + \HCode{</span>}\fi + } + {|<nbsp|>\HCode{<br /><span class="label">}} + {\HCode{</span>}}% +>>> + +\<configure html4 listings\><<< +\Configure{listings-init}{\ttfamily\special{t4ht@(}}{\special{t4ht@)}} +>>> + + +% \start:LstLn <---added +% \bgroup +% \Configure{listings} +% {{\everypar{}\leavevmode}} +% {{\everypar{}\leavevmode}} +% %{\start:LstLn \HCode{<span class=''label''>}} <---- removed +% {\HCode{<br /><span class=''label''>}} <---- added +% {\HCode{</span>}}% +% } +% +% +% \bgroup +% \Configure{listings} +% {{\everypar{}\leavevmode}} +% {{\everypar{}\leavevmode}} +% {\start:LstLn \HCode{<span class=''label''>}} <---- removed +% {\HCode{</span>}}% +% } + + + +\<configure html4 listings\><<< +\HAssign\listingN=0 +\ConfigureEnv{lstlisting} + {\ifvmode \IgnorePar\fi \EndP + \gHAdvance\listingN by 1 + \HCode{<!--l. \the\inputlineno-->}% + \gdef\start:LstLn{% + \HCode{<div class="lstlisting" id="listing-\listingN">}% + \gdef\start:LstLn{|<nbsp|>\HCode{<br />\Hnewline}}} + \bgroup + \Configure{listings} + {{\everypar{}\leavevmode}} + {{\everypar{}\leavevmode}} + {\start:LstLn \HCode{<span class="label">}} + {\HCode{</span>}}% + } + {\egroup + \ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + {} {} +\Css{.lstlisting .label{margin-right:0.5em; }} +\Css{div.lstlisting{font-family: monospace,monospace; white-space: nowrap; + margin-top:0.5em; margin-bottom:0.5em; + }} +>>> + +\<configure html4 listings\><<< +\Configure{lstinputlisting} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno-->}% + \HCode{<div class="lstinputlisting">}% + \bgroup \tt %\special{t4ht@(}% + \Configure{listings} + {{\everypar{}\leavevmode}} + {{\everypar{}\leavevmode}} + {|<nbsp|>% + \HCode{<br /><span class="label">}} + {\HCode{</span>}}% + } + {%\special{t4ht@)} + \egroup + \ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Css{div.lstinputlisting{ + font-family: monospace,monospace; + white-space: nowrap; +}} +\Css{.lstinputlisting .label{margin-right:0.5em;}} +>>> + + +% \Configure{lstinputlisting} +% {\ifvmode \IgnorePar\fi \EndP +% \HCode{<!--l. \the\inputlineno-->}% +% \HCode{<div class="lstinputlisting">}% +% \bgroup \tt \special{t4ht@(}% +% \Configure{listings} +% {{\everypar{}\leavevmode}} +% {{\everypar{}\leavevmode}} +% {|<nbsp|>\HCode{<br /><span class="label">}} +% {\HCode{</span>}}% +% } +% {\special{t4ht@)}\egroup +% \ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Verbatim} +%%%%%%%%%%%%%%%%%%%%% + + + + + +\<configure html4 verbatim\><<< +\Configure{verbatiminput} + {\HAssign\Verb:N=0 \ifvmode \IgnorePar\fi \EndP + \HCode{<div class="verbatiminput"\a:LRdir>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.verbatiminput + {font-family: monospace,monospace; white-space: nowrap; }} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{mdwlist} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 sverb\><<< +\HAssign\demoN=0 +\Configure{demo} + {\HAdvance\demoN by 1 + \ifvmode \IgnorePar \fi \EndP + \ifnum \demoN=1 + \HCode{<table class="demo"><tr>}% + \fi + \HCode{<td>}% + } + {\ifvmode \IgnorePar \fi \EndP + \HCode{</td>} + \ifnum \demoN=2 + \HAssign\demoN=0 + \HCode{</tr></table>}% + \fi + } +>>> + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{verbatimlisting} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure html4 verbatimlisting\><<< +\Configure{verbatimlisting} + {\ifvmode \EndP\fi \EndP\HCode{<div class="verbatimlisting"\a:LRdir>}} + {\HCode{</div>}} + {\ifnum \c@lineno > 1 \HCode{<br />}\fi + \ifnum \c@lineno<10 ~\fi + \ifnum \c@lineno<100 ~\fi + \ifnum \c@lineno<1000 ~\fi + } + {} +>>> + + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{doc} +%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 doc\><<< +\ConfigureEnv{macrocode} + {\ifvmode \IgnorePar\fi\EndP\HCode{<pre class="macrocode">}} + {\ifvmode \IgnorePar \HCode{</pre>}\par\else \HCode{</pre>}\fi} + {}{} +>>> + + +%%%%%%%%%%%%%%%%%%% +\section{Boxes and Multiple columns} +%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%% +\subsection{fancybox} +%%%%%%%%%%%%%%%%%%% + + + + + + + + + + + +\<configure html4 fancybox\><<< + \Configure{ovalbox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="ovalbox">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="ovalbox">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.ovalbox { + padding-left:3pt; + padding-right:3pt; + border:solid thin; + }} +>>> + +\<configure html4 fancybox\><<< + \Configure{Ovalbox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="Ovalbox-thick">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="Ovalbox-thick">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.Ovalbox-thick { + padding-left:3pt; + padding-right:3pt; + border:solid thick; + }} +>>> + + +IE doesn't distinguish between upper and lower case characters in css + + + +\<configure html4 fancybox\><<< + \Configure{shadowbox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="shadowbox">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="shadowbox">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.shadowbox { + padding-left:3pt; + padding-right:3pt; + border:solid thin; + border-right:solid thick; + border-bottom:solid thick; + }} +>>> + + + + +\<configure html4 fancybox\><<< + \Configure{doublebox} + {\ifvmode \IgnorePar\EndP + \HCode{<div class="doublebox">}% + \def\end:bx{\HCode{</div>}\par}% + \else + \HCode{<span class="doublebox">}% + \def\end:bx{\HCode{</span>}}% + \fi} + {\end:bx} + \Css{.doublebox { + padding-left:3pt; + padding-right:3pt; + border-style:double; + border:solid thick; + }} +>>> + +\<configure html4 fancybox\><<< +\Configure{Btrivlist} + {\ifvmode \IgnorePar\fi \EndP \HCode{<table>}} + {\HCode{</table>}} + {\HCode{<tr><td \csname Btrivlist-dir\endcsname>}} + {\HCode{</td></tr>}} +\Configure{Btrivlist-dir} + {l}{style="white-space:normal; text-align:left;" } + {c}{style="white-space:normal; text-align:center;" } + {r}{style="white-space:normal; text-align:right;" } + {} +\Configure{Blist} + {\ifvmode \IgnorePar\fi \EndP \HCode{<table>}} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +>>> + +%%%%%%%%%%%%%%%%%% +\subsection{adjustbox} +%%%%%%%%%%%%%%%%%% + +\<configure html4 adjustbox\><<< +% add support for vertical alignment of table rows +\Configure{halignTR}{} +\Configure{AdjustboxValignTop}{\Css{\#TBL-\TableNo-\HRow-{vertical-align:top;}}} +\Configure{AdjustboxValignMiddle}{\Css{\#TBL-\TableNo-\HRow-{vertical-align:middle;}}} +\Configure{AdjustboxValignCenter}{\Css{\#TBL-\TableNo-\HRow-{vertical-align:middle;}}} +\Configure{AdjustboxValignBottom}{\Css{\#TBL-\TableNo-\HRow-{vertical-align:bottom;}}} +% convert size in pt to em, based on the current font size +\def\pt:to:em#1{\strip@pt\dimexpr#1/\f@size em} +\Configure{Adjustbox} +{\IgnorePar\EndP\IgnorePar\HCode{<div class="adjustbox" id="\AdjustboxId">}} +{\Css{\#\AdjustboxId{border: \pt:to:em{\fboxrule} solid black;padding: \pt:to:em{\fboxsep};}}% +\ifvmode\IgnorePar\fi\EndP\HCode{</div>}} +>>> + +%%%%%%%%%%%%%%%%% +\subsection{awesomebox} +%%%%%%%%%%%%%%%%% +\<configure html4 awesomebox\><<< +\Configure{awesomebox}{% + \Css{\#\awesomebox@id\space .icon{border-right:4px solid \#\awesomebox@rule@color;}} + \ifvmode\IgnorePar\fi\EndP% + \HCode{<div class="awesomebox" id="\awesomebox@id"><div class="icon">}% + \Picture+{}% +}{\EndPicture% + \HCode{</div><div class="boxcontent">}% + \par% +}{% + \ifvmode\IgnorePar\fi\EndP% + \HCode{</div></div>}% +} + +\Css{.awesomebox{display:grid; grid-template-columns: 90px auto;margin-top:1rem;margin-bottom:1rem;}} +\Css{.awesomebox .icon{padding-right:0.5rem;margin-right:0.5rem;text-align:center;}} +\Css{.awesomebox .boxcontent{vertical-align:top;}} +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{boxedminipage} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 boxedminipage\><<< +\ConfigureEnv{boxedminipage} + {\ifvmode \IgnorePar \EndP + \def\after:bmp{\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par\ShowPar}% + \HCode{<div class="boxedminipage">}% + \expandafter\everymath\expandafter{\expandafter + \everymath\expandafter{\the\everymath}}% + \else \def\after:bmp{\HCode{</span>}}% + \HCode{<span class="boxedminipage">}% + \fi + \bgroup \fboxrule=\z@} + {\egroup \after:bmp} + {}{} +\Css{div.boxedminipage{border : 1px solid; + margin-top:1pt; margin-bottom:1pt;}} +>>> + +%%%%%%%%%%%%%%%%%%% +\subsection{Multicol} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 multicol\><<< +\HAssign\MultiCols=0 +\ConfigureEnv{multicols}{}{}{}{} +% {\par\IgnorePar\EndP +% \gHAdvance\MultiCols by 1\relax +% \HCode{<table class="multicols" +% id="multicols-\MultiCols"><tr><td class="multicol-1">}% +% \let\sv:HCol=\HCol +% \bgroup \gHAssign\HCol=1\relax +% } +% {\egroup +% \global\let\HCol=\sv:HCol +% \ifvmode\IgnorePar\fi\EndP +% \HCode{</td></tr></table>}\par +% } +% {}{} +% \Configure{columnbreak} +% {\gHAdvance\HCol by 1\relax +% \par \IgnorePar \EndP +% \HCode{</td><td class="multicol-\HCol">}} +% \Css{table.multicols { +% width:100\%; margin-left:1em; margin-top:1em; margin-bottom:1em; +% }} +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{gmatrix.sty} +%%%%%%%%%%%%%%%%%% + +\<configure html4-math gauss\><<< +\ConfigureEnv{gmatrix} + {\IgnorePar\EndP + \Tg<div class="gmatix">\Picture*{}$$} + {$$\EndPicture\Tg</div>}{}{} +\Css{div.gmatrix {text-align:center;}} +>>> + +%%%%%%%%%%%%%%%% +\section{array.sty} +%%%%%%%%%%%%%%%% + +\<configure html4 array\><<< +|<html latex array/tabular Config 4.0t|> +>>> + + +\<configure html4-math array\><<< +|<math html latex array/tabular|> +>>> + + + +%%%%%%%%%%%%%%%%%%% +\section{algorithmic} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 algorithmic\><<< +\ConfigureEnv{algorithmic} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="algorithmic">}% + \bgroup + \Configure{HtmlPar}{}{}{}{}} + {\egroup \ifvmode \IgnorePar\fi \HCode{</div>}} + {}{} +\Configure{ALCitem} + {\NoFonts\HCode{\ifnum \c@ALC@line>1 <br />\fi <span class="ALCitem">}} + {\HCode{</span><span class="ALIndent" style="width:\the\ALC@tlm ;"> </span>}\EndNoFonts} +\Css{.ALCitem {width:2em; text-align:right;display:inline-block;font-size:0.8em;}} +\Css{.ALIndent{display:inline-block;}} + +>>> + + +\<configure html4 algorithmic\><<< +\ConfigureEnv{ALC@for} + {\HCode{<span class="for-body">}} + {\HCode{</span>}} + {}{} +\ConfigureEnv{ALC@whl} + {\HCode{<span class="while-body">}} + {\HCode{</span>}} + {}{} +\ConfigureEnv{ALC@loop} + {\HCode{<span class="loop-body">}} + {\HCode{</span>}} + {}{} +\ConfigureEnv{ALC@rpt} + {\HCode{<span class="repeat-body">}} + {\HCode{</span>}} + {}{} +\Configure{ALCif} + {\HCode{<span class="if-body">}} + {\HCode{</span>}} + {\HCode{<span class="else-body">}} + {\HCode{</span>}} +\Configure{algorithmiccomment} + {\HCode{<span class="ALC-comment">}} + {\HCode{</span>}} + {}{} +>>> + + + + +%%%%%%%%%%%%%%%%%%% +\section{algorithmicx} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 algorithmicx\><<< +\ConfigureEnv{algorithmic} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div \a:LRdir class="algorithmic">}% + \bgroup + \Configure{HtmlPar} + {\EndP} + {\EndP} + {} + {}% + } + {\egroup + \HCode{</div>}\par\ShowPar + } + {}{} +>>> + +\<configure html4 algorithmicx\><<< +\ConfigureList{algorithmic}% + {\EndP + \PushMacro\end:itm + \global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP + \special{t4ht@.}% + \HCode{</span>}% + } + {\end:itm + \HCode{\ifx \end:itm\empty\else <br class="algorithmic"/>\fi + <span class="label-\the\labelwidth">}% + \global\def\end:itm{\EndP\special{t4ht@,}\Tg</span>}% + \ifnum \c@ALG@line=10 + \Css{.algorithmic span.label{width:3em; text-align:right;}}\fi + } + {\HCode{</span>&\#xA0;<span\Hnewline class="algorithmic">}~% + \special{t4ht@. }} +\Css{div.algorithmic span.algorithmic{white-space:pre}} +>>> + +%%%%%%%%%%%%%%%%%%% +\section{algorithm} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 algorithm\><<< +\ConfigureEnv{algorithm} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div \a:LRdir class="algorithm">}% + \par\ShowPar + } + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}\par\ShowPar + } + {}{} +\Css{div.algorithm table.caption { + border-bottom: 1px solid black; margin-bottom:1pt; }} +>>> + +%%%%%%%%%%%%%%%%%% +\section{scrjura} +%%%%%%%%%%%%%%%%%% + +\<configure html4 scrjura\><<< +\ConfigureEnv{contract} +{\ifvmode\IgnorePar\fi\EndP\HCode{<div class=\:qtchr contract\:qtchr>}} +{\ifvmode\IgnorePar\fi\end:prevpara\HCode{</div>}} +{}{} + +\Configure{contract@paragraph@font} + {\ifvmode\IgnorePar\fi\end:prevpara\HCode{<div class=\:qtchr paragraph\:qtchr>}} + {\Tg</div>} + +\Configure{parformat} +{\EndP\HCode{<p class=\:qtchr para\:qtchr>\Hnewline +<span class=\:qtchr sentence\:qtchr>}} + {\Tg</span>}{\Tg</p>} +>>> + +%%%%%%%%%%%%%%%%%%% +\section{Bibliography} +%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%% +\subsection{jurabib} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 jurabib\><<< +\HAssign\jbancorDepth=0 +\Configure{jblink} + {\HAdvance\jbancorDepth by 1 \Link} + {\EndLink \HAdvance\jbancorDepth by -1 } +\Configure{jbanchor} + {\bgroup + \ifnum \jbancorDepth=0 + \Configure{Link}{a}{href=}{id=}{}% + \else + \Configure{Link}{span}{}{id=}{}% + \fi + \Link} + {\EndLink \egroup} +>>> + +The code \verb+\Configure{jbanchor}{\Link}{\EndLink}+ doen't work +because anchors can in jurabib reside within links. + + + + +\begin{verbatim} +Definition of \@citex +--------------------- + \hyper@jblinkstart{\@citeb} + \jb@firstcitefull + \hyper@jblinkend + +Definiton of \jb@firstcitefull +------------------------------ + \hyper@jbanchorstart{look@\@citeb:\jb@reset@look@label@for}\hyper@jbanchorend + + \jbincollcrossref + +Definition of \jbincollcrossref +------------------------------- + \hyper@jblinkstart{#1}% + + \hyper@jblinkend +\end{verbatim} + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Harvard} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 harvard\><<< +\Configure{harvardyear} + {\HCode{<span class="bib-year">}} + {\HCode{</span>}} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Text Decoration} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%% +\subsection{color} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 color\><<< +\Configure{HColor}{red}{\#FF0000} +\Configure{HColor}{rgb 1 0 0}{\#FF0000} +\Configure{HColor}{blue}{\#0000FF} +\Configure{HColor}{rgb 0 0 1}{\#0000FF} +\Configure{HColor}{green}{\#00FF00} +\Configure{HColor}{rgb 0 1 0}{\#00FF00} +\Configure{HColor}{white}{\#FFFFFF} +\Configure{HColor}{gray 1}{\#FFFFFF} +\Configure{HColor}{rgb 1 1 1}{\#FFFFFF} +\Configure{HColor}{black}{\#000000} +\Configure{HColor}{gray 0}{\#000000} +\Configure{HColor}{rgb 0 0 0}{\#000000} +\Configure{HColor}{cyan}{\#00FFFF} +\Configure{HColor}{cmyk 1 0 0 0}{\#00FFFF} +\Configure{HColor}{magenta}{\#FF00FF} +\Configure{HColor}{cmyk 0 1 0 0}{\#FF00FF} +\Configure{HColor}{yellow}{\#FFFF00} +\Configure{HColor}{cmyk 0 0 1 0}{\#FFFF00} +\Configure{color}{\:gobble} +|<color.sty config 4.0t|> +>>> + + + + + +% \Configure{pagecolor} +% {\Configure{color} +% {\Configure{SetHColor}{\Css{body {background-color:\HColor}}}}} + +Configurations for saving colors to CSS. When the color declaration specified +by the user contains spaces, the parameter for the last color is empty and +we may get compilation errors. This is why it is necessary to test the +argument for content. If it is empty, then the next argument contains the +actual color. + +\<configure html4 color\><<< +\Configure{HColor:gray}{% + \if :#1:% + \int:of\:tempa{255}{#2}% + \else% + \int:of\:tempa{255}{#1}% + \fi% + \Configure{HColor}{}{rgb(\:tempa,\:tempa,\:tempa)}% +} +\Configure{HColor:rgb}{% + \int:of\:tempa{255}{#1}% + \int:of\:tempb{255}{#2}% + \if :#3: + \int:of\:tempc{255}{#4}% + \else% + \int:of\:tempc{255}{#3}% + \fi% + \Configure{HColor}{}{rgb(\:tempa,\:tempb,\:tempc)}% +} +\Configure{HColor:cmyk}{% + \int:of\:Cyan{255}{#1}% + \int:of\:Magenta{255}{#2}% + \int:of\:Yellow{255}{#3}% + \if :#4:% + \int:of\:Black{255}{#5}% + \else% + \int:of\:Black{255}{#4}% + \fi% + \:cmyk\:tempa\:Cyan + \:cmyk\:tempb\:Magenta + \:cmyk\:tempc\:Yellow + \Configure{HColor}{}{rgb(\:tempa,\:tempb,\:tempc)}% +} +|<HColor util|> +>>> + + +\<HColor util\><<< +\def\int:of#1#2#3{% + \tmp:dim=#3pt \tmp:dim=#2\tmp:dim + \edef\:temp{\tmp:cnt\the\tmp:dim//}% + \def#1##1//{}\afterassignment#1\:temp + \edef#1{\the\tmp:cnt}% +} +>>> + + +\begin{verbatim} +cmyk -> gray +(1 - 0.299c - 0.587m - 0.114y)(1 - k) + +cmyk -> rgb +Red = 1-minimum(1,Cyan *(1-Black)+Black) +Green = 1-minimum(1,Magenta*(1-Black)+Black) +Blue = 1-minimum(1,Yellow *(1-Black)+Black) +\end{verbatim} + + + +\<HColor util\><<< +\def\:cmyk#1#2{% + \tmp:cnt=255 \advance\tmp:cnt by -\:Black + \multiply\tmp:cnt by#2 \advance\tmp:cnt by \:Black + \advance\tmp:cnt by -255 \tmp:cnt=-\tmp:cnt + \ifnum \tmp:cnt<0 \tmp:cnt=0 \fi + \edef#1{\the\tmp:cnt}% +} +>>> + + + + +\<color.sty config 4.0t\><<< +\HAssign\textcolorN=0 +\Configure{textcolor} + {\gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor} + {\Css{span\#textcolor\textcolorN{color:\HColor}}}}% + \HCode{<span id="textcolor\textcolorN">}}% + {\HCode{</span>}} +>>> + +\<color.sty config 4.0t\><<< +\Configure{colorbox} + {\bgroup + \gHAdvance\textcolorN by 1 + \ifvmode \let\v:colorbox\def \IgnorePar \EndP + \else \let\v:colorbox=\relax \fi + |<colorbox background|>% + \HCode{<\ifx \v:colorbox\def div\else span\fi \Hnewline + class="colorbox" id="colorbox\textcolorN">}}% + {\ifx \v:colorbox\def \EndP\HCode{</div>}\par + \else \HCode{</span>}\fi + \egroup + } +>>> + + +\<colorbox background\><<< +\let\A:color=\a:color +\Configure{color}% + {\let\a:color=\A:color + \Configure{SetHColor} + {\Css{\ifx \v:colorbox\def div\else span\fi + \#colorbox\textcolorN{background-color:\HColor;}}}}% +>>> + + +\<\><<< +\Configure{fcolorbox} + {\gHAdvance\textcolorN by 1 + \let\A:color=\a:color + \Configure{color}% + {\Configure{SetHColor}{\Css{\#colorbox\textcolorN{border: + solid 1px \HColor;}}}}% + \Configure{fbox}{\leavevmode + \gHAdvance\textcolorN by -1 \let\a:color=\A:color}{}} + {} +>>> + + +\<color.sty config 4.0t\><<< +\Configure{fcolorbox} + {\bgroup\gHAdvance\textcolorN by 1 + \ifvmode \let\v:colorbox\def \IgnorePar \EndP + \else \let\v:colorbox=\relax \fi + \HCode{<\ifx \v:colorbox\def div\else span\fi \Hnewline + class="colorbox" id="colorbox\textcolorN">}% + |<fcolorbox border|>% + \Configure{fbox}{\leavevmode }{}% +} +{\ifx \v:colorbox\def \EndP\HCode{</div>}\par + \else \HCode{</span>}\fi \egroup} +>>> + +\<fcolorbox border\><<< +\let\A:color=\a:color +\Configure{color}% + {|<fcolor background|>% + \Configure{SetHColor}{% + \Css{\#colorbox\textcolorN{border: solid 1px \HColor;}}}% + }% +>>> + +\<fcolor background\><<< +\Configure{color}% + {\let\a:color=\A:color + \Configure{SetHColor}{% + \Css{\#colorbox\textcolorN{background-color: \HColor;}}% + }}% +>>> + + +%%%%%%%%%%%%%%%%%%% +\subsection{xcolor} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 xcolor\><<< +\Configure{rowcolors} + {\Configure{SetHColor}{% + \expandafter\ifx \csname HColor\endcsname\relax \else + \Css{tr\#TBL-\TableNo-\the\rownum-{background-color:\HColor}}% + \fi + }} +>>> + +\<configure html4 xcolor\><<< +\Configure{HColor!gray}{% + \XC@c@lcD\rangeGray{}{#1}\@@tmp + \int:of\:tempa{255}{\@@tmp}% + \Configure{HColor}{}{rgb(\:tempa,\:tempa,\:tempa)}% +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%% +\subsection{colortbl.sty} +%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 colortbl\><<< +\Configure{@classz} + {\let\begin:current@color|=\relax + \let\end:current@color|=\relax } + {% + \ifx \CT@column@color\relax \else + \ifx \CT@column@color\empty \else{% + \def\CT@color{\@ifnextchar[\color:ii\color:i}% + \CT@column@color|<par del|>% + \edef\:temp{\noexpand\add:color + {background-color}{\:temp}{\ar:cnt}}\:temp + }\fi \fi + } + {\begin:current@color} + {\end:current@color} +\Configure{rowcolor}{\row:clr} +\def\row:clr#1{{% + \HAdvance\HRow by 1 + \add:color{background-color}{#1}{\HRow- td}}} +\Configure{text-colortbl} + {\add:color{color}{\current@color}{\HRow-\HCol}} +\Configure{cell-colortbl} + {\add:color{background-color}{\current@color}{\HRow-\HCol}} +\def\add:color#1#2#3{% + \Configure{SetHColor}{\Css{ \#TBL-\TableNo-#3{ #1:\HColor }}}{#2}} +>>> + +[\HPage{test file} +\begin{verbatim} +\documentclass{article} +\usepackage{colortbl} +\usepackage{color} + +\definecolor {tablehead}{rgb}{0.4,0.569,0.929} +\definecolor {aliceblue}{rgb}{0.94,0.97,1} + +\begin{document} + +\begin{tabular}{p{2cm}|p{2.25cm}} +\rowcolor{tablehead} + \color{white}\textbf{A} & + \color{white}\textbf{B}\\ +\hline +\rowcolor{aliceblue} + C & + D\\ +\end{tabular} + +\end{document} +\end{verbatim} +\EndHPage{}] +%%%%%%%%%%%%% +\subsection{Soul} +%%%%%%%%%%%%% + +\<configure html4 soul\><<< +\Configure{textcaps} + {\HCode{<span class="textcaps">}} + {\HCode{</span>}} +\Configure{texthl} + {\HCode{<span class="texthl">}\bgroup + \ifx\sethlcolor\:gobble\else |<soul color|>\fi} + {\egroup \HCode{</span>}} +\Configure{textso} + {\HCode{<span class="textso">}} + {\HCode{</span>}} +\Configure{textst} + {\HCode{<span class="textst">}\bgroup + \ifx\setstcolor\:gobble\else |<soul color|>\fi} + {\egroup \HCode{</span>}} +\Configure{textul} + {\HCode{<span class="textul">}\bgroup + \ifx\setulcolor\:gobble\else |<soul color|>\fi} + {\egroup \HCode{</span>}} +\Css{span.textso{letter-spacing: 0.3em; word-spacing: 0.3em}} +\Css{span.textul{text-decoration:underline}} +\Css{span.textst{text-decoration:line-through}} +\Css{span.textcaps{font-variant:small-caps}} +>>> + +\<soul color\><<< +\Configure{textcolor} + {\gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor} + {\Css{span\#textcolor\textcolorN{background-color:\HColor}}}}% + \HCode{<span id="textcolor\textcolorN">}}% + {\HCode{</span>}}% +>>> + +%%%%%%%%%%%%%%%% +\section{framed} + +\<configure html4 framed\><<< +\newcount\framed:cnt +\Configure{makeframed}{\advance\framed:cnt by 1\relax\def\framed@id{\@currenvir-\the\framed:cnt}\ifvmode\IgnorePar\fi\EndP\HCode{<div class="framedenv" id="\framed@id">}\par} +{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}} +\Css{.framedenv{border: 1px solid black;}} + +>>> + +%%%%%%%%%%%%%%%% +\section{mdframed} +%%%%%%%%%%%%%%%% + + +\<configure html4 mdframed\><<< +\Configure{mdframed}{% + \ifvmode\IgnorePar\fi\EndP\HCode{<div class="mdframed" id="\mdf:id">}\par +}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}\par} + +\Css{.mdframed{margin-top:1em;margin-bottom:1em;}} + +% use fallback macro when xcolor package haven't been loaded +\ifdefined\get:xcolorcss\else\def\get:xcolorcss#1#2{\def#2{#1}}\fi + +\Configure{mdframedstyle}{% + \get:xcolorcss{\mdf@backgroundcolor}\mdf:bgcolor + \get:xcolorcss{\mdf@linecolor}\mdf:bordercolor + \get:xcolorcss{\mdf@fontcolor}\mdf:fontcolor + \def\mdf:border{\ifdefined\mdfl@linewidth\mdfl@linewidth\else 1px\fi\space solid \mdf:bordercolor} + \Css{\#\mdf:id{border:\mdf:border; background-color: \mdf:bgcolor; color:\mdf:fontcolor;}} + \global\let\mdfl@linewidth\relax +} +>>> + +%%%%%%%%%%%%%%%%% +\section{tcolorbox} +%%%%%%%%%%%%%%%%% + + + +\<configure html4 tcolorbox\><<< +\Configure{tcolorbox} +{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="tcolorbox \@currenvir" id="\:tcbcolid">} + % \tcbcolid and colors are defined in tcolorbox.4ht + \Css{\#\:tcbcolid\space .tcolorbox-title{color: \:tcbcoltitle; background-color: \:tcbcolframe;}} + \Css{\#\:tcbcolid\space .tcolorbox-content{color: \:tcbcolupper; background-color: \:tcbcolback; border: 1px solid \:tcbcolframe;}} +} +{\HCode{\Hnewline<div class="tcolorbox-title">}\par} +{\ifvmode\IgnorePar\fi\EndP\HCode{</div>\Hnewline<div class="tcolorbox-content">}} +{\ifvmode\IgnorePar\fi\EndP\HCode{\Hnewline</div>\Hnewline</div>}\par} + +\Css{.tcolorbox{margin-top:0.5em;margin-bottom: 0.5em;}} + +\Configure{tcolorlowerbox}{\ifvmode\IgnorePar\fi\EndP\HCode{\Hnewline<div class="lowerbox">} + \Css{\#\:tcbcolid\space .lowerbox{border-top: 1px dashed \:tcbcolframe;}} +} +{\ifvmode\IgnorePar\fi\EndP\HCode{\Hnewline</div>}} + +% there is rule p + div elsewhere in TeX4ht. we want to nullify it. +\Css{.tcolorbox .lowerbox{margin-top:0pt;}} +>>> + +%%%%%%%%%%%%%%%% +\section{verse} +%%%%%%%%%%%%%%%%% + +\<configure html4 verse\><<< +\Configure{poemtitle} + {\par\IgnorePar\EndP + \HCode{<div class="poemtitle"><span class="poemtitlemark">}} + {\HCode{</span>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Configure{likepoemtitle} + {\par\IgnorePar\EndP \HCode{<div class="likepoemtitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Css{.poemtitle, likepoemtitle {margin-left:2em; margin-bottom:0.5em;}} +>>> + + + +\<configure html4 verse\><<< +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<div class="verse">}% + \bgroup + \Configure{hspace} + {\HCode{<span style="margin-right:\the\tmp:dim">}\:nbsp} + {\HCode{</span>}} {} + \let\end:verseln\empty + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par\ShowPar} + {}{} + +\ConfigureList{verse} + {} {\ifvmode \IgnorePar\fi \EndP \end:verseln} + {\parindent=\z@} {} + +\Configure{verseline} + {\ifvmode \IgnorePar\fi \EndP \end:verseln + \HCode{<div class="verseline">}\def\end:verseln{\HCode{</div>}}} + {\ifvmode \IgnorePar\fi \EndP \end:verseln + \HCode{<div class="skip-verseline">}% + \def\end:verseln{\HCode{</div>}}} + +\Configure{flagverse} + {\HCode{<span class="flagverse">}\bgroup \setlength{\vleftskip}{0em}} + {\egroup \HCode{</span>}\ignorespaces} + +\Css{.skip-verseline {margin-top: 1em;}} +\Css{.skip-verseline, .verseline {white-space: nowrap;}} +\Css{.flagverse {float:right; font-size:85\%; + text-decoration:underline;}} +\Css{.verse p{margin-bottom:0;}} +>>> + + +%%%%%%%%%%%%%%%% +\section{OpenOffice writer} +%%%%%%%%%%%%%%%% + +\<configure html4 writer\><<< +\Configure{WriterEnv} + {% + \ConfigureEnv{#1} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="#1">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {}{}% + } + {% + \tmp:dim=\parindent + \divide\tmp:dim by \ten:Em\relax + \tmp:dim=10\tmp:dim + \Css{div.#1 {text-indent:\expandafter\x:Em \the\tmp:dim em;}}% + \tmp:dim=\leftskip + \divide\tmp:dim by \ten:Em\relax + \tmp:dim=10\tmp:dim + \Css{div.#1 {margin-left:\expandafter\x:Em \the\tmp:dim em;}}% + \tmp:dim=\rightskip + \divide\tmp:dim by \ten:Em\relax + \tmp:dim=10\tmp:dim + \Css{div.#1 {margin-right:\expandafter\x:Em \the\tmp:dim em;}}% + \Css{div.#1 {margin-top:0.75em; + margin-bottom:0.75em; + }}% +} +|<10 em constant|> +>>> + +\<10 em constant\><<< +{ + \def\x:Em{% + \catcode`\p=12 + \catcode`\t=12 + \gdef\x:Em} + \x:Em#1pt{#1} +} +\tmp:dim=10em +\edef\ten:Em#1.#2//{#1} +\edef\ten:Em{\expandafter\ten:Em \the\tmp:dim//} +>>> + +%%%%%%%%%%%%%%%%%% +\section{manmac} +%%%%%%%%%%%%%%%%%% + +\<configure html4 manmac\><<< +\Configure{chapter} + {\IgnorePar\EndP + \HCode{<!--l. \the\inputlineno--><div class="chapter">}\IgnorePar } + {\IgnorePar\EndP\HCode{</div><!--end chapter-->}\par\ShowPar} + {\HCode{<div class="chapterTitle">}\par \ShowPar \noindent + \let\sv:rightline=\rightline \let\rightline=\hbox } + {\IgnorePar\EndP \let\rightline=\sv:rightline + \HCode{</div><!--end chapter title-->}\par\ShowPar} +\Configure{titlepage} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<!--l. \the\inputlineno--><div class="titlepage">}\par} + {\IgnorePar\EndP\HCode{</div><!--end titlepage-->}\par\ShowPar} +>>> + +\<configure html4 manmac\><<< +\Configure{mathdemo} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="mathdemo">}} + {\HCode{</table>}\par\ShowPar} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +\Css{table.mathdemo{margin-left:2em}} +\Configure{longdisplaymathdemo} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="longdisplaymathdemo">}} + {\HCode{</table>}\par\ShowPar} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +\Css{table.longdisplaymathdemo{margin-left:2em}} +\Configure{longmathdemo} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="longmathdemo">}} + {\HCode{</table>}\par\ShowPar} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +\Css{table.longmathdemo{margin-left:2em}} +\Configure{displaymathdemo} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><table class="displaymathdemo">}} + {\HCode{</table>}\par\ShowPar} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +\Css{table.displaymathdemo{margin-left:2em}} +>>> + + +\<configure html4 manmac\><<< +\Configure{exercise} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno--><h5 class="exercise">}% + \bgroup \Configure{HtmlPar}{}{}{}{}} + {\egroup\HCode{</h5>}\IgnoreIndent\par} + +\Configure{manmac-display} + {\ifvmode \IgnorePar\fi \EndP + \HCode{|<show input line no|><table class="manmac-display">}} + {\HCode{</table>}\IgnoreIndent\par} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</td>}} + +\Configure{ttenv} + {\ifvmode \IgnorePar\fi \EndP + \HCode{|<show input line no|><div class="ttenv">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par\noindent} +>>> + + + +\<configure html4 manmac\><<< +\Configure{sampleglue} + {\HCode{<table class="sampleglue">}} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>}} + {\HCode{<td>}} + {\HCode{</td>}} +>>> + +\<configure html4 manmac\><<< +\Configure{danger} + {\HCode{|<show input line no|><!--danger-->}} + {\HCode{<!--end danger-->}} +\Configure{ddanger} + {\HCode{|<show input line no|><!--ddanger-->}} + {\HCode{<!--end ddanger-->}} +>>> + + +%%%%%%%%%%%%%%%% +\section{Small Packages} +%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{vowel} +%%%%%%%%%%%%% + +\<configure html4 vowel\><<< +\ConfigureEnv{vowel} + {\Picture*[vowel]{}} + {\EndPicture} + {}{} +>>> + +%%%%%%%%%%%%% +\subsection{enumitem} +%%%%%%%%%%%%% + +\<configure html4 enumitem\><<< +\ConfigureList{enumerate}% + {\EndP\HCode{<dl \a:LRdir class="enumerate-enumitem">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="enumerate-enumitem">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="enumerate-enumitem">}} +\Css{dt.enumerate-enumitem{float:left; clear:left; + margin-left:1em; margin-right:1em;}} +>>> + + +%%%%%%%%%%%%% +\subsection{IEEEtran} +%%%%%%%%%%%%% + +\<configure html4 IEEEtran\><<< +|<default thebibliography|> +|<bibitem css|> +>>> + +%%%%%%%%%%%%% +\subsection{Linguisics} +%%%%%%%%%%%%% + +\<configure html4 linguex\><<< +\Configure{ex} + {\ifvmode\IgnorePar\fi \EndP \HCode{<div class="ex">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} +\Configure{a.list} + {\ConfigureList{list}% + {\EndP\HCode{<dl \a:LRdir class="alist\expandafter\the + \csname @listdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="alist">}\bgroup \bf} + {\egroup\HCode{</dt><dd\Hnewline class="alist">}\par\ShowPar}% + } +\Css{div.ex dt, dt.alist{float:left;clear:left}} +>>> + +\<configure html4 cgloss4e\><<< +\Configure{tsent} + {\HCode{<span class="tsent">}} + {\HCode{</span>}} + {\HCode{<br />}} +\Css{.tsent {display:table-cell; + display:inline-block; + padding-right:0.2em; + padding-top:0em; + padding-bottom:0em; + padding-left:0em; + margin:0em; }} +>>> + +\<configure html4 cgloss4e\><<< +\Configure{gll} + {\ifvmode \IgnorePar\fi \EndP + \bgroup + \ConfigureEnv{flushleft} + {\ifvmode \IgnorePar\fi \EndP} + {\ShowPar} + {\EndP\IgnorePar + \HCode{<div class="gll"\Hnewline>}\IgnorePar} + {\IgnorePar\EndP\HCode{</div>}}% + \Configure{HtmlPar}{}{}{}{}% + } + {} + {\egroup} +\Css{dd.alist p{margin-top:0.2em}} +>>> + +\<configure html4 covington\><<< +|<configure html4 cgloss4e|> +>>> + +\<configure html4 covington\><<< +\ConfigureEnv{exercise} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Exercise">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureList{reflist}% + {\EndP\HCode{<dl \a:LRdir class="reflist">}% + \PushMacro\end:itm +\global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm +\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="reflist">}\bgroup \bf} + {\egroup\HCode{</dt><dd\Hnewline class="reflist">}\par\ShowPar} +\Css{dd.reflist p.indent { text-indent: -2em; }} +>>> + + +\<configure html4 covington\><<< +\Configure{sentence} + {\bgroup + \ConfigureEnv{flushleft} + {\ifvmode \IgnorePar\fi \EndP}{|<try env inline par|>} + {\EndP\IgnorePar + \HCode{<div class="sentence"\Hnewline>}\ShowPar\endgraf} + {\IgnorePar\EndP\HCode{</div>}}% + } + {\egroup} +\Css{div.sentence {text-align:left;}} +>>> + +\<configure html4 covington\><<< +\Configure{glt}{\newline} +>>> + +%%%%%%%%%%%%% +\subsection{diagram (chess)} +%%%%%%%%%%%%% + +\<configure html4 diagram\><<< +\let\:EndIgnore\relax +\def\:Ignore{\bgroup + \catcode`\\=12 + \long\def\:temp##1:EndIgnore{\egroup}\:temp +} +\ifx \setboardwidth\:UnDef \expandafter\:Ignore\fi + |<config diagram 08|> +\:EndIgnore +\ifx \setboardwidth\:UnDef \else \expandafter\:Ignore\fi + |<config diagram 95|> +\:EndIgnore +>>> + + +\<config diagram 95\><<< +\Configure{diagram} + {\gHAdvance\chessNo by 1\relax + \ifvmode \IgnorePar\fi \EndP + \HCode{<table class="chess" id="chess-\chessNo">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</table>}} + {\HCode{<tr class="chess-\chessNo-\HRow">}} + {\HCode{</tr>}} + {\tmp:cnt=\HCol + \advance \tmp:cnt by \HRow \relax + \HCode{<td id="chess-\chessNo-\HRow-\HCol" + class="\ifodd \tmp:cnt white\else + \ifnum \count\help@b=144 ch-\fi + black\fi -square">}} + {\HCode{</td>}} +>>> + +\<config diagram 08\><<< +\Configure{diagram} + {\gHAdvance\chessNo by 1\relax + \ifvmode \IgnorePar\fi \EndP + \HCode{<table class="chess" id="chess-\chessNo">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</table>}} + {\HCode{<tr class="chess-\chessNo-\HRow">}} + {\HCode{</tr>}} + {\tmp:cnt=\HCol + \advance \tmp:cnt by \HRow \relax + \HCode{<td id="chess-\chessNo-\HRow-\HCol" + class="\ifodd \tmp:cnt white\else + \ifnum + 144=\csname cpd@square@\roman{cpd@current@square@index}\endcsname + ch-\fi + black\fi -square">}} + {\HCode{</td>}} +>>> + + + +\<configure html4 diagram\><<< +\HAssign\chessNo=0 + +\Css{td.black-square{background-color:\#B0B0B0; +% width:12.5\%; + width:1.5em; height:1.5em; +}} +\Css{td.ch-black-square{background-color:\#B0B0B0; + color:\#B0B0B0; +% width:12.5\%; + width:1.5em; height:1.5em; +}} +\Css{td.white-square{background-color:\#FFFFFF; +% width:12.5\%; + width:1.5em; height:1.5em; +}} + +\Css{table.chess{% margin-left: 0em; margin-right: 0em; + margin-left: auto; margin-right: auto; + border: solid black 1px; +% width:100\%; + text-align:center;}} +\Configure{stipulation} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="stipulation">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<span class="stipulation">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}} +\Configure{piececounter} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="piececounter">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.piececounter{ float:right; clear:left; margin-top:1em;}} +\Configure{authors} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="authors">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{condition} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="condition">}\bgroup + \Configure{newline}{}} + {\egroup\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}} +\Configure{solution} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="solution">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{award} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="award">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{dedic} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="dedic">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + +\Configure{twins} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="twins">}\bgroup + \Configure{newline}{}} + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.twins{text-align:left;width:100\%;}} +\Configure{remark} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="remark">}\bgroup + \Configure{newline}{}} + {\egroup\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{above} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="above">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div><!--end above-->}} +\Css{div.above{margin-bottom:0.3em;}} +\Configure{below} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="below">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{div.below{text-align:center;margin-top:1em;}} + + +\ConfigureEnv{diagram} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="diagram">}\bgroup + \Configure{HtmlPar}{}{}{}{}% + } + {\egroup\ifvmode \IgnorePar\fi \EndP + \HCode{</div><!--end diagram-->}} + {}{} + +\Css{div.diagram{width:12em; + display: inline-block; + margin-right:0.5em; + margin-left:0.5em; + vertical-align:top; +}} +\Configure{correction} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="correction">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{showlabel} + {\ifvmode \IgnorePar\fi \EndP \HCode{<sup class="showlabel">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</sup>}} +\Configure{judgement} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="judgement">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}} + + + + \HAssign\solNum= 0 + +\Configure{number} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="number">}% + \gHAdvance\solNum by 1\relax + \Link{sol-\solNum}{prob-\solNum}} + {\EndLink\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{sol-number} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="sol-number">}% + \gHAdvance\solNum by 1\relax + \Link{prob-\solNum}{sol-\solNum}} + {\EndLink\ifvmode \IgnorePar\fi \EndP \HCode{</span>}} +\Configure{sol-author} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="sol-author">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}} +\Configure{sol-title} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="sol-title">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{source} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="source">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{source} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="source">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}} +\Configure{date} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="date">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}} +\Configure{issue} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="issue">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}} +\Configure{pages} + {\ifvmode \IgnorePar\fi \EndP \HCode{<span class="pages">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}} + +\Css{div.condition{text-align:left;width:100\%;}} + +\Css{div.stipulation{ + text-align:justify; text-align-last:justify; width:100\%; +}} +\Css{span.stipulation{ margin-right:1em; }} +>>> + +%%%%%%%%%%%%% +\subsection{eurosym} +%%%%%%%%%%%%% + +\<configure html4 eurosym\><<< +\Configure{geneuro}{\ht:special{t4ht@+\string&{35}x20AC{59}}x} +\Configure{geneuronarrow}{\ht:special{t4ht@+\string&{35}x20AC{59}}x} +\Configure{geneurowide}{\ht:special{t4ht@+\string&{35}x20AC{59}}x} +>>> + + +%%%%%%%%%%%%% +\subsection{Sistyle} +%%%%%%%%%%%%% + + +\<configure html4 sistyle\><<< +\Configure{thousandsep} + {\HCode{<span class="thousandsep">\string&\#x00A0;</span>}} +\Css{span.thousandsep{font-size:80\%}} +>>> + +\<configure html4 sistyle\><<< +\Configure{degC}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}xC} +\Configure{degF}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}xF} +\Configure{arcdeg}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x} +\Configure{arcmin}{\leavevmode\ht:special{t4ht@+&{35}x2032;}x} +\Configure{arcsec}{\leavevmode\ht:special{t4ht@+&{35}x2033;}x} +\Configure{ohm}{\leavevmode\ht:special{t4ht@+&{35}x2126;}x} +\Configure{micro}{\leavevmode\ht:special{t4ht@+&{35}x00B5;}x} +\Configure{angstrom}{\leavevmode\ht:special{t4ht@+&{35}x212B;}x} +>>> + + + +%%%%%%%%%%%%% +\subsection{chapterbib} +%%%%%%%%%%%%% + +\<configure html4 chapterbib\><<< +\:CheckOption{2} +\if:Option\else \:CheckOption{3} \fi +\if:Option\else \:CheckOption{4} \fi +\if:Option\else \:CheckOption{5} \fi +\if:Option + \AtBeginDocument{% + \let\cb:sectionbib=\cb@sectionbib + \def\cb@sectionbib{% + \let\addcontentsline\:gobbleIII + \cb:sectionbib}} +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{lineno.sty} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 lineno\><<< +\:warning{The line numbers are commented out. To reintroduce them, use + the \string\Configure{lineno}{...}{...} command} +\Configure{lineno} + {\bgroup \let\LineNumber=\empty} + {\egroup} +>>> + + + + +%%%%%%%%%%%%%% +\subsection{revtex (aps)} +%%%%%%%%%%%%%% + + +\<configure html4 revtex4\><<< +|<preprint revtex4|> +|<default revtex4|> +>>> + +\<preprint revtex4\><<< +\ConfigureSec{section} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h3 class="sectionHead"\a:LRdir>}\IgnorePar} + {\lowercase{\HCode{</h3>}}} + {}{} +>>> + + +% {\HCode{<span class="sectionmark"\a:LRdir>}} +% {\lowercase{\HCode{</span>}}} + + + +\<preprint revtex4\><<< +\ConfigureSec{subsection} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h4 class="subsectionHead"\a:LRdir>}\IgnorePar} + {\lowercase{\HCode{</h4>}}} + {}{} +>>> + +\<preprint revtex4\><<< +\ConfigureSec{subsubsection} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h5 class="subsubsectionHead"\a:LRdir>}\IgnorePar} + {\lowercase{\HCode{</h5>}}} + {}{} +>>> + + +\<preprint revtex4\><<< +\ConfigureSec{paragraph} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h5 class="paragraphHead"\a:LRdir>}\IgnorePar} + {\lowercase{\HCode{</h5>}}} + {}{} +>>> + + +\<preprint revtex4\><<< +\ConfigureSec{subparagraph} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h5 class="subparagraphHead"\a:LRdir>}\IgnorePar} + {\lowercase{\HCode{</h5>}}} + {}{} +>>> + + + +\<default revtex4\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE 2|>% + \HCode{<div class="maketitle">}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\NoFonts\IgnorePar\HCode{<h2 class="titleHead"\a:LRdir>}\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</h2>}\IgnoreIndent\EndNoFonts} +\Css{h2.titleHead{text-align:center;}} +\Css{div.maketitle{ margin-bottom: 2em;}} +>>> + +\<default revtex4\><<< +\Configure{|<thanks author date and|>} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="thanks" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{<div class="author" \a:LRdir>}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</div>}} + {\lowercase{\HCode{<span class="date" \a:LRdir>}}} + {\HCode{</span>}} + {\HCode{<br class="and" />}} + {\HCode{<br />}} +\Configure{doauthor} + {\HCode{<span class="author" \a:LRdir>}} + {\HCode{</span>}} +\Css{div.author{margin-top:2em;text-align:center;}} + +\Configure{affil} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div\Hnewline class="affil">}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</div>}\IgnorePar} +\Css{.affil {text-align:center}} +>>> + +\<default revtex4\><<< +\Configure{RRAPformat} + {\ifvmode\IgnorePar\fi \EndP \HCode{<div class="RRAP">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} +\Configure{received} + {\lowercase{\HCode{<span class="received" \a:LRdir>}}} + {\HCode{</span>}} +\Configure{revised} + {\lowercase{\HCode{<span class="revised" \a:LRdir>}}} + {\HCode{</span>}} +\Configure{accepted} + {\lowercase{\HCode{<span class="accepted" \a:LRdir>}}} + {\HCode{</span>}} +\Configure{published} + {\lowercase{\HCode{<span class="published" \a:LRdir>}}} + {\HCode{</span>}} +\Css{div.RRAP{margin-top:1em;margin-bottom:1em;text-align:center;}} +>>> + +\<default revtex4\><<< +\Configure{abstract} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="abstract">}\par \ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{.abstract{margin:1em;}} +>>> + +\<default revtex4\><<< +\Configure{pacs} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="pacs">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{.pacs{margin-left:1em;}} +\Configure{keywords} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="keywords">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Css{.keywords{margin-left:1em;}} +>>> + + +\<default revtex4\><<< +\ConfigureEnv{thebibliography}{\par\leavevmode}{\ShowPar}{}{} +|<default thebibliography|> +\Configure{endnote} + {\HCode{<span class="endnote">}} + {\HCode{</span>}} +>>> + +\<default revtex4\><<< +\Configure{footnotebody} + {\HCode{<span class="footnote-body" \a:LRdir>}} + {\HCode{</span>}} +\Configure{frontpagefootnote} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="frontpagefootnotes">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\HCode{<div class="frontpagefootnote">}} + {\HCode{</div>}} +\Css{.frontpagefootnote{margin-left:1em;}} +>>> + +\<default revtex4\><<< +|<latex shared part config|> +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<latex shared paragraph config|> +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead { font-weight: bold;}} +>>> + +\<default revtex4\><<< +\ConfigureEnv{widetext} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="widetext">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + {}{} +>>> + +\<default revtex4\><<< +\ConfigureEnv{ruledtabular} + {\ifvmode \IgnorePar\fi \HCode{<div class="ruledtabular">}} + {\ifvmode \IgnorePar\fi \HCode{</div>}} + {}{} +\Css{div.ruledtabular table { + border-top: black 1px double; + border-bottom: black 1px double}} +|<config captions|> +>>> + +\<default revtex4\><<< +\Configure{abstractheading} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="abstractheading">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Css{div.abstractheading{text-align:center}} +>>> + +\<default revtex4\><<< +\Configure{preprint} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="preprint">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Css{div.preprint{text-align:right}} +>>> + + +%\<configure html4 aps\><<< +% >>> + + +\<revtex3 aps.sty\><<< +|<revtex sections|> +|<revtex title page|> +|<shared bib env|> +|<thebib config|> +>>> + + +\<revtex sections\><<< +% \def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +>>> + + + + +\<revtex sections\><<< +\:CheckOption{4} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +|<cut toc: sec|>% + \CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} + |<cut toc: subsec|>% + |<tocat: part|>% + |<tocat: section|>% + \else + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} +|<tocat: ch|>% + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +|<cut toc: sec|>% + \CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} + |<cut toc: subsec|>% + |<tocat: part|>% + |<tocat: ch|>% + |<tocat: section|>% + \fi +\else\:CheckOption{3} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} +|<cut toc: sec|>% + \CutAt{subsection,section,likesection,% + chapter,likechapter,appendix,part} +\CutAt{likesubsection,section,likesection,% + chapter,likechapter,appendix,part} + |<cut toc: subsec|>% + |<tocat: part|>% + |<tocat: section|>% + \else + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} +|<tocat: ch|>% + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} + |<cut toc: sec|>% + |<tocat: part|>% + |<tocat: ch|>% + \fi +\else\:CheckOption{2} \if:Option + \expandafter\ifx \csname @chapter\endcsname\relax + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{section,likesection,chapter,likechapter,appendix,part} +\CutAt{likesection,chapter,likechapter,appendix,part} + |<cut toc: sec|>% + |<tocat: part|>% + \else + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + + \CutAt{chapter,likechapter,appendix,part} +\CutAt{likechapter,appendix,part} +\CutAt{appendix,chapter,likechapter,part} + |<tocat: ch|>% + |<tocat: part|>% + \fi +\else\:CheckOption{1} \if:Option + \CutAt{part} +\CutAt{likepart} +|<cut toc: part|> + +\else + \Log:Note{for automatic sectioning pagination, + use the command line option `1', `2', or `3'}% +\fi \fi \fi \fi + +\:CheckOption{1} \if:Option + |<toc article,report options 1|> +\fi +|<shared h5 subsubsection|> +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} + +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi + +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\thesection\HCode{</span>}\fi } +|<section TITLE+|> +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir>}\TitleMark.\space\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \ShowPar\par} +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \IgnoreIndent \ShowPar\par} +\Configure{likesectionTITLE+}{#1} + +\Css{h3.sectionHead, h3.likesectionHead {text-align:center;}} + +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likepart} +|<shared h4 subsection|> + +\Css{h4.subsectionHead {text-align:center;}} + +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} + +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likepart} +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likeparagraph}{}{} + {\ShowPar\IgnoreIndent\HCode{<span class="likeparagraphHead"\a:LRdir>}} + {\HCode{</span>}\IgnorePar} +\Css{.paragraphHead, .likeparagraphHead + { margin-top:2em; font-weight: bold;}} + +\ConfigureMark{subparagraph}{} +\Configure{subparagraph}{}{} + {\ShowPar\HCode{<span class="subparagraphHead"\a:LRdir>}\begingroup\bf + \TitleMark\space} + {\endgroup\HCode{</span>}\IgnorePar} +\Configure{likesubparagraph}{}{} + {\ShowPar\HCode{<span class="likesubparagraphHead"\a:LRdir>}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} +\Css{.subparagraphHead, .likesubparagraphHead + { font-weight: bold;}} +>>> + + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Spatial Math} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 longdiv\><<< +\Configure{longdiv} + {\Configure{halign} + {\HCode{<table class="longdiv">}} + {\HCode{</table>}} + {\HCode{<tr>}} + {\HCode{</tr>\Hnewline}} + {\tmp:cnt=\HRow \divide\tmp:cnt by 2 \multiply\tmp:cnt by 2 + \advance\tmp:cnt by -\HRow + \HCode{<td \ifnum\HCol=2 \ifnum\HRow=2 class="longdiv"\fi \fi>% + <span \ifnum \tmp:cnt=-1 + \ifnum \HRow>2 class="longdiv"\fi\fi >}% + } + {\HCode{</span></td>}}% + } + {} +\Css{table.longdiv {text-align: right;}} +\Css{td.longdiv {border-top:solid 1px black; + border-left:solid 1px black;}} +\Css{span.longdiv {text-decoration:underline;}} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{lncse} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 lncse\><<< +|<lncse chapter|> +\Configure{paragraph}{}{} + {\ShowPar\IgnoreIndent + \HCode{<span class="paragraphHead"\a:LRdir>}\begingroup\it} + {\endgroup\HCode{</span>}\IgnorePar} +>>> + + +\<lncse chapter\><<< +\ConfigureMark{chapter} + {\if@mainmatter + \HCode{<span class="titlemark">}\chaptername + \ \thechapter\HCode{</span>}\fi} +\Configure{chapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="chapterHead"\a:LRdir>}% + \TitleMark{\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{chapterTITLE+}{\if@mainmatter\thechapter\space\fi#1} +\renewcommand\thechapter {\if@mainmatter\@arabic\c@chapter\fi} + +\ConfigureMark{appendix}{\HCode{<span class="titlemark">}% + \appendixname \ \thechapter\HCode{</span>}} +\Configure{appendix}{}{} + {\IgnorePar\EndP\HCode{<h2 class="appendixHead"\a:LRdir>}% + \TitleMark{\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{appendixTITLE+}{\thechapter\space#1} +\Configure{likechapter}{}{} + {\IgnorePar\EndP\HCode{<h2 class="likechapterHead"\a:LRdir>}} + {\HCode{</h2>}\IgnoreIndent\par} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Resume} +%%%%%%%%%%%%%%%%%% + +\<configure html4 resume\><<< +\Css{body{margin:4em;}} +\Css{td{vertical-align:top;}} + +\Configure{name} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="name">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +\Css{div.name{text-align:center;}} +>>> + +\<configure html4 resume\><<< +\Configure{addresses} + {\ifvmode \IgnorePar\fi \EndP + \bgroup + \Configure{tabular} + {\HCode{<div>}} {\HCode{</div>}} + {}{} + {\ifnum \HRow>1 \HCode{<br />}\fi} {}% + \HCode{<table class="addresses"><tr><td class="addresses-left">}% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</td><td class="addresses-right">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td></tr></table>}\par + \egroup} +\Css{table.addresses{width:100\%;}} +\Css{td.addresses-left{float:left;}} +\Css{td.addresses-right{float:right;}} +\Css{table.addresses div{text-align:left;}} +>>> + + +\<configure html4 resume\><<< +\ConfigureList{llist} + {\HAssign\HRow=0 \ifvmode \IgnorePar\fi \EndP + \HCode{<table class="llist">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td></tr></table>}} + {\ifvmode \IgnorePar\fi \EndP \HAdvance\HRow by 1 + \HCode{\ifnum \HRow>1 </td></tr>\fi + <tr><td class="llist-title">}\par} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td><td class="llist-body">}\par} +>>> + +\<configure html4 resume\><<< +\Configure{location} + {\HCode{<span class="location">}} + {\HCode{</span><br />}} +\Css{span.location{margin-left:2em;}} +>>> + +\<configure html4 resume\><<< +\ConfigureList{items} + {\ifvmode \IgnorePar\fi \EndP \HAssign\HRow=0 + \HCode{<table class="items">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td></tr></table>}} + {\ifvmode \IgnorePar\fi \EndP \HAdvance\HRow by 1 + \HCode{\ifnum \HRow>1 </td></tr>\fi <tr><td>&\#x2022;}\DeleteMark} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td><td class="items">}} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Curve} +%%%%%%%%%%%%%%%%%% + +\<configure html4 curve\><<< +\Configure{key} + {\HCode{<span class="key">}} + {\HCode{</span>}} +\Configure{key} + {\HCode{<span class="prefix">}} + {\HCode{</span>}} +\ConfigureEnv{rubric} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="rubric">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {} {} +\Configure{rubrichead} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="rubrichead">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{subrubric} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="subrubric">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="maketitle">}\bgroup + \ConfigureEnv{center}{}{}{}{}% + } + {\egroup\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="title">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="subtitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{makeheaders} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="makeheaders"><tr><td class="leftheader">}} + {\HCode{</td><td class="rightheader">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</td></tr></table>}} +\Css{td.leftheader {text-align:left}} +\Css{td.rightheader {text-align:right}} +\Css{table.makeheaders {width:100\%}} +\Css{div.maketitle {text-align:center;}} +\Css{div.rubrichead {margin-top:1em; margin-bottom:1em;}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{CSS} +%%%%%%%%%%%%%%%%%% + + + + +\<import css\><<< +\:CheckOption{-css} \if:Option \else + \Log:Note{to ignore CSS code, use the command line option `-css} + \:CheckOption{css-in} \if:Option + \Log:Note{the inline CSS code is extracted from the input of the + previous compilation, so an extra compilation might be needed} + \Configure{@HEAD}{|<css inline|>} + \else + \Log:Note{for inline CSS code, use the command line option `css-in'} + \Configure{@HEAD}{\HCode{<link + rel="stylesheet" type="text/css" + href="\aa:CssFile"\xml:empty>\Hnewline}} + \fi +\fi +>>> + + + +\<0,32,4 preambles\><<< +|<hook utility|> +\:CheckOption{-css} \if:Option + \def\Css#1{} + \NewConfigure{CssFile}{2} +\else + |<cascade style sheets|> + \Configure{Preamble} + {|<default cascade style sheets|>} {} +\fi +>>> + +\<default cascade style sheets\><<< +{\ifdim \lastskip>\z@ \unskip\fi \IgnorePar\parindent\z@ +\leavevmode}% +\immediate\write-1{--- file \aa:CssFile\space ---}% +\ht:special{t4ht>\aa:CssFile}\ht:special{t4ht=\Hnewline /* css.sty */}% +\ht:special{t4ht<\aa:CssFile}% +>>> + + + +\verb'\special' are like \verb'\hbox', and they so they may introduve empty lines in +vertical mode. That might be a problem if we don't want empty lines at +the start of the files. Hence, in latex we give them special treatment. + +\<cascade style sheets\><<< +\ScriptCommand{\CssFile}{% + \immediate\write-1{--- file \aa:CssFile\space ---}% + \def\FontSize##1##2{\:Context{##1}\ht:special{t4ht;\%##2}\%}% + \def\FontName##1{\:Context{##1}\ht:special{t4ht;=}}% + \def\:Context##1{\ht:special{t4ht>\jobname.tmp}##1\ht:special + {t4ht>\aa:CssFile}}% + \ht:special{t4ht>\jobname.tmp}\ht:special{t4ht>\aa:CssFile}% + \bgroup \everypar{}\NoFonts \bb:CssFile \hfil\break} + {\egroup \EndNoFonts + \ht:special{t4ht<\aa:CssFile}\ht:special{t4ht<\jobname.tmp}} +\let\Css:File|=\CssFile +\def\CssFile{\futurelet\:temp\Css:Fl} +\def\Css:Fl{\ifx [\:temp \expandafter\Css:fl + \else \expand:after{\Css:File \space}\fi} +\def\Css:fl[#1]{\Css:File\space \css:files #1,,|<par del|>} +\def\css:files#1,#2|<par del|>{\def\:temp{#1}\ifx \:temp\empty + \else \def\:temp{\in:css#1.|<par del|>\css:files#2,,|<par del|>}\fi + \:temp } +\def\in:css#1.#2|<par del|>{\def\:temp{#2}\ifx \:temp\empty + \inc:ss#1.css|<par del|> + \else \inc:ss#1.#2|<par del|>\fi} +\def\inc:ss#1.|<par del|>{|<input css file|> } +\NewConfigure{CssFile}[2]{\def\aa:CssFile{#1}\def\bb:CssFile{#2}} +>>> + + +\<input css file\><<< + \immediate\openin15=#1 + \ifeof15 \immediate\closein15 + \:warning{Missing file: #1}% + \else \immediate\closein15 \input #1 \fi +>>> + + +\verb'\CssFile[file-name,filename.ext,..]...\EndCssFile'. + +Default file, just in case the user doesn't provide one. If +the user does, the following file will be overwritten. + +Can't use below \verb'\a:CssFile' and \verb'\b:CssFile', because +\verb'\ScriptFile{\CssFile}' also needs them. + +\verb'\Css' changes its definition upon reachin \verb'\CssFile'. The +first definition is needed within the sty files, and the info is +sent to the lg file (where else it can be sent?). + + +\<cascade style sheets\><<< +\def\Css#1{{\def\:temp{\Configure{Needs}}% + \expandafter\:temp\expandafter{\aa:Css}\Needs{#1}}} +>>> + +\section{External scripts and styles} + +\<external scripts and styles\><<< + +\NewConfigure{AddCss}[1]{% + {\Configure{Needs}{File: #1}\Needs{}} + \Configure{@HEAD}{\HCode{<link rel="stylesheet" type="text/css" href="#1" />\Hnewline}} +} + +\NewConfigure{AddJs}[1]{% + {\Configure{Needs}{File: #1}\Needs{}} + \Configure{@HEAD}{\HCode{\Hnewline<script type="text/javascript" src="#1"></script>\Hnewline}} +} +>>> + +\section{Web fonts support} + +These commands declare new font family in the CSS file + + +The default font family name which should be used in the Css +\textit{font-family} command for a declared font is \textit{rmfamily}. +It use the Latin Modern font installed on the viewer's system. +The Css font family and the local font name can be changed using +\verb|\Configure{FontFamily}{cssfamilyname}{LocalFontName}| command. + +\begin{verbatim} +\Configure{FontFamily}{rmfamily}{Latin Modern} +\end{verbatim} + +The font shapes can be configure using \verb|\Configure{NormalFont}|, +\verb|\Configure{ItalicFont}|, \verb|\Configure{BoldItalicFont}| and +\verb|Configure{BoldFont}|. The argument should be font file in the format +supported by browsers, such as \textit{woff} or \textit{otf}. + +\begin{verbatim} +\Configure{NormalFont}{normal-font-file.otf} +\Configure{BoldFont}{bold-font-file.otf} +\Configure{BoldItalicFont}{bold-italic-font-file.otf} +\Configure{ItalicFont}{italic-font-file.otf} +% Add another font family +\Configure{FontFamily}{hello}{Linux Libertine O} +\Configure{NormalFont}{hello-font-file.otf} +\Css{body{font-family: rmfamily, "AnotherFontFamilyName", serif;}} +\Css{span.hello{font-family: hello, sans-serif;}} +\end{verbatim} + +\<external web fonts\><<< + +% \newcommand\AddFontFace[4]{% +\def\AddFontFace#1#2#3#4{% +\Css{@font-face { + font-family: #1; + src: local("#2"), + url('#3'); + #4 + }} + {\Configure{Needs}{File: #3}\Needs{}} +} + + +% If more font families are used, they need to have different names +\NewConfigure{FontFamily}{2} + +\Configure{FontFamily}{rmfamily}{Latin Modern} + +% Declarations for common font styles, just local family name and font file name are needed to be provided +\NewConfigure{NormalFont}[1]{\AddFontFace{\a:FontFamily}{\b:FontFamily}{#1}{font-weight: normal;font-style: normal;}} +\NewConfigure{BoldFont}[1]{\AddFontFace{\a:FontFamily}{\b:FontFamily}{#1}{font-weight: bold;font-style: normal;}} +\NewConfigure{ItalicFont}[1]{\AddFontFace{\a:FontFamily}{\b:FontFamily}{#1}{font-weight: normal;font-style: italic;}} +\NewConfigure{BoldItalicFont}[1]{\AddFontFace{\a:FontFamily}{\b:FontFamily}{#1}{font-weight: bold;font-style: italic;}} +>>> + + +%%%%%%%%%%%%%%%% +\section{?????} +%%%%%%%%%%%%%%%% + + +\<hook utility\><<< +\:CheckOption{hooks++} \if:Option + \else \:CheckOption{hooks+} + \if:Option \else \:CheckOption{hooks}\fi + \fi +\if:Option + \Configure{hooks} + {\HCode{<strong class="hooks"><}}{\HCode{></strong>}}{}{} +\fi +>>> + + + + +The following provides a faster version +than \verb'\LinkCommand\Link{a,href,name,}' for the \verb'\Link' +command + +\<config tex4ht\><<< +\Configure{Link}{a}{href=}{id=}{} +>>> + + +\section{Shared} +%%%%%%%%%%%%%%%%%% + + +\<config book-report-article\><<< +|<makeketitle config 4.0t|> +>>> + + + +\<config book-report-article\><<< +|<latex shared div config|> +|<shared bib env|> +\ifx \part\:UnDef \else + |<latex shared part config|> +\fi +|<config lists of figures and tables|> +|<description 4|> +|<roman enumeiii|> +>>> + + +\<config lists of figures and tables\><<< +\ConfigureToc{lof} + {\HCode{<span class="lofToc" \a:LRdir>}}{\ }{}{\HCode{</span><br />}} +\ConfigureToc{lot} + {\HCode{<span class="lotToc" \a:LRdir>}}{\ }{}{\HCode{</span><br />}} +>>> + +\<config book-report-article\><<< +|<thebib config|> +|<latex config div 4.0t|> +>>> + + +\<32,4 latex\><<< +|<config bibitem|> +>>> + + + + + + +\<config book-report-article\><<< +|<quote config|> +>>> + +\<quote config\><<< +\ConfigureEnv{quote} + {}{} + {\IgnorePar\EndP + \HCode{<blockquote class="\getClass{quote}">}\afterGetClass{quote}} + {\IgnorePar\EndP\HCode{</blockquote>}\ShowPar\ShowIndent} +\NewConfigure{quoteClass}{2} +\Configure{quoteClass}{quote}{} +>>> +% let browser handle quotation formatting +% \Css{.quote {margin-bottom:0.25em; margin-top:0.25em; +% margin-left:1em; margin-right:1em; text-align:justify;}} + +\<configure html4 tex4ht\><<< +\def\getClass#1{\expandafter + \ifx \csname a:#1Class\endcsname\relax\else + \csname a:#1Class\endcsname + \fi} +\def\afterGetClass#1{\csname b:#1Class\endcsname} +>>> + + +\<quote noindent config\><<< +\ConfigureEnv{quote} + {}{} + {\IgnorePar\EndP\HCode{<blockquote class="quote">}\IgnoreIndent} + {\IgnorePar\EndP\HCode{</blockquote>}\ShowPar\ShowIndent} +>>> +% maybe we should let browsers to use the default formatting for quotes +% \Css{.quote {margin-bottom:0.25em; margin-top:0.25em; +% margin-left:1em; margin-right:1em; text-align:justify;}} + + +\<config book-report-article\><<< +\ConfigureEnv{verse} + {\ifvmode \IgnorePar\fi\EndP\Tg<div class="verse">} + {\ifvmode \IgnorePar\fi\EndP\Tg</div>\par\ShowPar} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\Css{.verse{white-space:nowrap; margin-left:2em}} +>>> + + +\<config book-report-article\><<< +|<maketitle 4|> +>>> + + + +\<config book-report-article\><<< +|<article,report,book|> + +>>> + + + + + + +%%%%%%%%%%%%%%%%%%% +\section{babel.sty} +%%%%%%%%%%%%%%%%%%% + + + + + +\<configure html4 babel\><<< +|<babel macros|> +|<babel char set|> +|<babel accents|> +|<u mlaut|> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Character Set} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<babel char set\><<< +\def\a:temp#1#2#3{% + \ifOption{charset=#2}{\def\a:charset{charset=#2}}{}% + \def\:tempa{#1}\ifx \languagename\:tempa + \ifx\A:charset\empty% + \def\A:charset{#2}\ifx \A:charset\empty\else% + \def\A:charset{charset=#2}%% + \fi\fi% + \if !#3!\else + \Configure{@HTML}{% + \iflanguage{#1}{xml:lang="#3" }{}% + } + \fi + \fi} +\a:temp{afrikaans}{iso-8859-1}{af} +\a:temp{arabic}{iso-8859-6}{ar} +\a:temp{austrian}{iso-8859-1}{ge} +\a:temp{brazilian}{iso-8859-1}{pt} +\a:temp{brazil}{iso-8859-1}{pt} +\a:temp{catalan}{iso-8859-1}{ca} +\a:temp{croatian}{iso-8859-2}{hr} +\a:temp{czech}{iso-8859-2}{cs} +\a:temp{danish}{iso-8859-1}{da} +\a:temp{dutch}{iso-8859-1}{nl} +\a:temp{esperanto}{iso-8859-3}{eo} +\a:temp{estonian}{iso-8859-5}{et} +\a:temp{finnish}{iso-8859-1}{fi} +\a:temp{francais}{iso-8859-1}{fr} +\a:temp{frenchb}{iso-8859-1}{fr} +\a:temp{french}{iso-8859-1}{fr} +\a:temp{galician}{iso-8859-1}{gl} +\a:temp{germanb}{iso-8859-1}{de} +\a:temp{german}{iso-8859-1}{de} +\a:temp{greek}{iso-8859-7}{el} +\a:temp{hebrew}{iso-8859-8}{he} +\a:temp{hungarian}{iso-8859-2}{hu} +\a:temp{ngerman}{iso-8859-1}{de} +\a:temp{norsk}{iso-8859-1}{no} +\a:temp{nynorsk}{iso-8859-1}{no} +\a:temp{polish}{iso-8859-2}{pl} +\a:temp{polski}{iso-8859-2}{pl} +\a:temp{polutonikogreek}{iso-8859-7}{el} +\a:temp{portuges}{iso-8859-1}{pt} +\a:temp{portuguese}{iso-8859-1}{pt} +\a:temp{romanian}{iso-8859-2}{ro} +\a:temp{scottish}{iso-8859-1}{gd} +\a:temp{slovak}{iso-8859-2}{sk} +\a:temp{slovene}{iso-8859-2}{sl} +\a:temp{spanish}{iso-8859-1}{es} +\a:temp{swedish}{iso-8859-1}{sv} +\a:temp{turkish}{iso-8859-9}{tr} +\a:temp{ukrainian}{iso-8859-5}{uk} +\a:temp{uppersorbian}{iso-8859-2}{} +\a:temp{welsh}{iso-8859-1}{cy} +|<set babel charset|> +>>> + + + + + + + +\<configure html4 german\><<< +|<quotedblbase|> +>>> + +\<configure html4 ngerman\><<< +|<quotedblbase|> +>>> + + + + + +\<quotedblbase\><<< +\Configure{quotedblbase}{\leavevmode\ht:special{t4ht@+&{35}x201E;}x} +\Configure{quotesinglbase}{\leavevmode\ht:special{t4ht@+&{35}x201A;}x} +>>> + + + +\<configure html4 austrian\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> +\<configure html4 catalan\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> + +\<configure html4 croatian\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-2} +\fi +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + + +\<configure html4 latin2\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-2} +\fi +>>> + + + + +\<configure html4 czech\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-2} +\fi +>>> +\<configure html4 danish\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> +\<configure html4 dutch\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> +\<configure html4 english\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> +\<configure html4 esperant\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-3} +\fi +>>> +\<configure html4 estonian\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-5} +\fi +>>> +\<configure html4 finnish\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> + +\<configure html4 francais\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> + + +\<configure html4 frenchb\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +\Configure{@TITLE}{\Configure{frenchb-thinspace}{}{}} +>>> + + + +\<configure html4 frenchb\><<< +\Configure{system-nbsp} + {\ht:special{t4ht@[unhskip}} + {\ht:special{t4ht@]unhskip}} +>>> + +Patch submitted by Michal Hoftich: + +html entity \verb= = is inserted before colon. This causes validation +error in some xml environments, where this entity is not defined, for +example in epub3. macro \verb=\:nbsp= should be used instead. Patch for the +file tex4ht-html4.tex is provided in the attachment. + +\<configure html4 frenchb\><<< +\ifx \tmp:bx\:UnDef \csname newbox\endcsname \tmp:bx \fi +\Configure{frenchb-nbsp} + {\ht:special{t4ht@?unhskip}\HCode{<span class="frenchb-nbsp">}% + \:nbsp\setbox\tmp:bx=\hbox\bgroup} + {\egroup \HCode{</span>}} +\Css{.frenchb-nbsp{font-size:75\%;}} +>>> + + +\<configure html4 frenchb\><<< +\Configure{frenchb-thinspace} + {\ht:special{t4ht@?unhskip}\HCode{<span class="frenchb-thinspace">}% + \:nbsp\setbox\tmp:bx=\hbox\bgroup} + {\egroup \HCode{</span>}} +\Css{.frenchb-thinspace{font-size:75\%;}} +>>> + +french babel provides some macros which put some text to the +superscript. standard macros for superscripts aren't used, so these +superscripts doesn't show in the html output. + +\<configure html4 frenchb\><<< +\NewConfigure{frenchup}{2} +\Configure{frenchup}{\HCode{<sup class="french">}}{\HCode{</sup>}} +\Css{sup.french{ +vertical-align:super; +font-size:70\%; +}} +\renewcommand\fup[1]{\a:frenchup#1\b:frenchup} +>>> + + + + +\<configure html4 galician\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> +\<configure html4 germanb\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> + +\<configure html4 greek\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-7} +\fi +\ifOption{charset=iso-8859-7} + {|<greek ldf iso-8859-7|>} + {\Log:Note{for iso-8859-7 accents + use the command line option `charset=iso-8859-7'}} +\ifOption{sgreek} + {\:CheckOption{new-accents} \if:Option \else + |<greek ldf sgreek|> + \fi} + {\Log:Note{for Sgreek font + use the command line option `sgreek'}} +\ifOption{oldgreek} + {\:CheckOption{new-accents} \if:Option \else + |<greek ldf Greek Old Face|> + \fi} + {\Log:Note{for Greek Old Face font + use the command line option `oldgreek'}} +>>> + + + +\<greek ldf sgreek\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +\Configure{htf}{254}{+}{<font \Hnewline + face="}{}{}{}{}{Sgreek">}{</font>} +\Configure{htf}{252}{+}{<font \Hnewline + face="}{}{}{}{}{Sgreek" class="small-caps">}{</font>} +\Configure{htf-css}{252}{.small-caps{font-variant: small-caps; }} +\Configure{accents} + {\ht:special{t4ht@+\string&{35}x#2{59}}x} + {\expandafter \ifx \csname \@curr@enc :#1\endcsname\relax + \Picture+{ \a:@Picture{#1}}#2{#3}\EndPicture + \else + \csname \@curr@enc :#1\endcsname {#3}% + \fi + } +\def\LGR:acute#1{% + \LGR:gobble\ifx #1\i \HChar{237}% + \else #1\HCode{<font face="Sgreek">/</font>}\fi } +\def\LGR:grave#1{% + \LGR:gobble\ifx #1\i \HChar{236}% + \else #1\HCode{<font face="Sgreek">\string\</font>}\fi} +\def\LGR:circ#1{% + \LGR:gobble\ifx #1\i \HChar{238}% + \else #1\HCode{<font face="Sgreek">=</font>}\fi} +\def\LGR:tilde#1{#1\HCode{<font face="Sgreek">@</font>}} +\def\LGR:uml#1{% + \LGR:gobble\ifx #1\i \HChar{239}% + \else #1\HCode{<font face="Sgreek">+</font>}\fi} +\def\LGR:gobble#1#2#3{#1} +>>> + + +The accented \''\i' arrives in the form of \''\@use@text@encoding +\@curr@enc \i'. + + + +\<greek ldf Greek Old Face\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +\Configure{htf}{254}{+}{<font \Hnewline + face="}{}{}{}{}{Greek Old Face">}{</font>} +\Configure{htf}{252}{+}{<font \Hnewline + face="}{}{}{}{}{Greek Old Face" class="small-caps">}{</font>} +\Configure{htf-css}{252}{.small-caps{font-variant: small-caps; }} +\Configure{accents} + {\ht:special{t4ht@+\string&{35}x#2{59}}x} + {\expandafter \ifx \csname \@curr@enc :#1\endcsname\relax + \Picture+{ \a:@Picture{#1}}#2{#3}\EndPicture + \else + \csname \@curr@enc :#1\endcsname {#3}% + \fi + } +\def\LGR:acute#1{% + \LGR:gobble\ifx #1\i \HChar{237}% + \else + \edef\:temp{\:gobbleII#1\empty\empty}% + \LGR:ch{i}{133}\LGR:ch{w}{232}\LGR:ch{u}{218}\LGR:ch{o}{210}% + \LGR:ch{h}{187}\LGR:ch{a}{163}\LGR:ch{e}{154}% + \ifx \:temp\empty\else #1\HChar{-180}\fi + \fi } +\def\LGR:grave#1{% + \LGR:gobble\ifx #1\i \HChar{236}% + \else + \edef\:temp{\:gobbleII#1\empty\empty}% + \LGR:ch{i}{136}\LGR:ch{235}{232}\LGR:ch{u}{221}\LGR:ch{o}{213}% + \LGR:ch{h}{190}\LGR:ch{a}{166}\LGR:ch{e}{157}% + \ifx \:temp\empty\else #1`\fi + \fi } +\def\LGR:circ#1{% + \LGR:gobble\ifx #1\i \HChar{238}% + \else + \edef\:temp{\:gobbleII#1\empty\empty}% + \LGR:ch{i}{139}\LGR:ch{w}{238}\LGR:ch{u}{224}\LGR:ch{o}{253}% + \LGR:ch{h}{193}\LGR:ch{a}{169}\LGR:ch{e}{252}% + \ifx \:temp\empty\else #1\string^\fi + \fi} +\def\LGR:tilde#1{#1} +\def\LGR:uml#1{% + \LGR:gobble\ifx #1\i \HChar{239}% + \else + \edef\:temp{\:gobbleII#1\empty\empty}% + \LGR:ch{u}{227}\LGR:ch{i}{142}% + \ifx \:temp\empty\else #1\HChar{168}\fi + \fi} +\def\LGR:gobble#1#2#3{#1} +\def\LGR:ch#1#2{\def\:tempa{#1}\ifx \:temp\:tempa + \HCode{<font face="Greek Old Face">}\HChar{#2}\HCode{</font>}% + \let\:temp=\empty \fi } +>>> + + + + + + + + + +\<configure html4 hebrew\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-8} +\fi +>>> + +\<configure html4 ngermanb\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> +\<configure html4 norsk\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> +\<configure html4 polish\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-2} +\fi +>>> +\<configure html4 polski\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-2} +\fi +>>> +\<configure html4 portuges\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> + + + +\<configure html4 scottish\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> + +\<configure html4 slovak\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-2} +\fi +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + + +\<configure html4 slovene\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-2} +\fi +\:CheckOption{new-accents} \if:Option \else + |<old iso-8859-2 accents|> +\fi +>>> + +\<configure html4 spanish\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +\Configure{es@accents}{\es:accents}{} +\def\es:accents#1\b:es@accents{\HCode{&\#x#1;}} +|<spanish configs|> +>>> + + +\<spanish configs\><<< +\Configure{guillemotleft}{\HCode{&\#x00AB;}} +\Configure{guillemotright}{\HCode{&\#x00BB;}} +>>> + +\<spanish configs\><<< +\Configure{spanish"a}{\HCode{<span ="underline">&\#x00AA;</span>}} +\Configure{spanish"o}{\HCode{<span ="underline">&\#x00BA;</span>}} +\Configure{spanish"e}{\HCode{<sup class="underline">e</sup>}} +\Configure{spanish"A}{\HCode{<sup class="underline">A</sup>}} +\Configure{spanish"O}{\HCode{<sup class="underline">O</sup>}} +\Configure{spanish"E}{\HCode{<sup class="underline">E</sup>}} +\Configure{spanish'i}{\HCode{&\#x00ED;}} +>>> + + + + +\<spanish configs\><<< +\Configure{es@accent} + {\string\OT1\string\'} + {|<acute codes|>} +>>> + + +\<spanish configs\><<< +\Configure{es@accent} + {\string\OT1\string\"} + {|<diaeresis codes|>{}{34}} +>>> + +\<spanish configs\><<< +\Configure{es@accent} + {\string\OT1\string\~} + {|<tilde codes|>} +>>> + + + +\<configure html4 swedish\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> +\<configure html4 turkish\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-9} +\fi +>>> +\<configure html4 ukraineb\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-5} +\fi +>>> +\<configure html4 usorbian\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-2} +\fi +>>> +\<configure html4 welsh\><<< +\ifx\A:charset\empty +\def\A:charset{charset=iso-8859-1} +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{right to left babel} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +tex4ht.sty indert Rregion and Lregion end hooks within +\verb+\beginL/R+ and \verb+\endL/R+, mainly to void the +inverse produced by the elatex compiler. + +\<configure html4 rlbabel\><<< +|<shared rlbabel, arabicore|> +\Configure{!P}{\a:LRdir} +\Configure{!BODY}{\a:LRdir} +>>> + + +\<shared rlbabel, arabicore\><<< +\Configure{LRdir}{ |<dir ltr/rtl|> } +\Configure{Rregion} {\beginL} {\endL} +\Configure{TITLE+}{\HCode{\jobname}} +>>> + + +\<dir ltr/rtl\><<< +dir="\if@rl rtl\else ltr\fi" +>>> + + +\<configure html4 rlbabel\><<< +\Configure{moreL} + {\ifvmode \let\end:moreRL=\empty + \else\HCode{<span dir="ltr" >}\def\end:moreRL{\HCode{</span>}}\fi} + {\end:moreRL} +\Configure{moreR} + {\ifvmode \let\end:moreRL=\empty + \else\HCode{<span dir="rtl" >}\def\end:moreRL{\HCode{</span>}}\fi} + {\end:moreRL} +>>> + + +\<configure html4-math rlbabel\><<< +\:CheckOption{pic-m} \if:Option +\else + \Configure{$} + {\HCode{<span |<dir ltr/rtl|>>}} + {\HCode{</span>}}{} +\fi +>>> + + + +% \def\HCode{<#1>}{\HCode{<#1 |<dir ltr/rtl|>>}} + +\<configure html4-math rlbabel\><<< +\Configure{[]} + {\bgroup + \protect\nested:math + \PicDisplay + $$\everymath{}\everydisplay{}} + {$$\EndPicDisplay \egroup + |<try inline par|>\if@rl \beginL\fi \beginR } +>>> + + + + + +%%%%%%%%%%%%% +\subsection{Arabi} +%%%%%%%%%%%%% + + +% \<configure html4 Arabicore\><<< +% |<configure html4 arabicore|> +% >>> + + +\<configure html4 arabicore\><<< +|<shared rlbabel, arabicore|> +\NewConfigure{dtd-lang}{1} +\Configure{dtd-lang}{AR} +\def\A:charset{charset=utf-8} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{csquotes} +%%%%%%%%%%%%%%%%%%%%%%%%% + +Csquotes provides quoting environment with a citation support + +\<configure html4 csquotes\><<< +\Configure{displayquote} +{\ifvmode\IgnorePar\fi\EndP\HCode{<blockquote>}} +{\ifvmode\IgnorePar\fi\EndP\HCode{<footer>}} +{\EndP\HCode{</footer>}} +{\ifvmode\IgnorePar\fi\EndP\HCode{</blockquote>}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Scientific Word} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +% When \verb+\BOXEDSPECIAL+ is defined we don't want the +% following configuration, because the frame may enclose +% a graphics-like file that we might not want to translate. +% +% \<configure html4 tcilatex\><<< +% \ifx \BOXEDSPECIAL\:UnDef +% \Configure{BOXTHEFRAME} +% {\Picture+[PICT]{}} {\EndPicture} +% \fi +% >>> + +\<configure html4 tcilatex\><<< +\Configure{GRAPHICSPS} + {\Picture+[PICT]{}} {\EndPicture} +\Configure{GRAPHICSHP} + {\Picture+[PICT]{}} {\EndPicture} +\Configure{DFRAME} + {\EndP \IgnorePar\HCode{<div class="FRAME">}} + {\HCode{</div>}\par\ShowPar} +\Configure{FFRAME} + {\EndP \IgnorePar\HCode{<div class="FRAME">}} + {\HCode{</div>}\par\ShowPar} +\Configure{IFRAME} + {\ifvmode \IgnorePar \fi} {} +\Css{div.FRAME {text-align:center;}} +\expandafter\ifx \csname @TCItagstar\endcsname\relax + |<tcilatex 2.5|> +\else + |<tcilatex 3.5|> +\fi +>>> + + + +\<configure html4-math tcilatex\><<< +\expandafter\ifx \csname @TCItagstar\endcsname\relax + |<tcilatex 2.5 math|> +\else + |<tcilatex 3.5 math|> + \ifx \@msidraft\:Undef + |<tcilatex 3.5 not 4.0 math|> +\fi \fi +>>> + +\<tcilatex 3.5 not 4.0 math\><<< +\Configure{dfrac} + {\Picture+{ style="text-align:middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{tfrac} + {\Picture+{ style="text-align:middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{binom} + {\Picture+{ style="text-align:middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{tbinom} + {\Picture+{ style="text-align:middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{dbinom} + {\Picture+{ style="text-align:middle"}\bgroup} {} + {} {\egroup\EndPicture} +>>> + +\<tcilatex 3.5 math\><<< +\Configure{QATOP} + {\Picture+{ style="text-align:middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{QDATOP} + {\Picture+{ style="text-align:middle"}\bgroup} {} + {} {\egroup\EndPicture} +\Configure{QTATOP} + {\Picture+{ style="text-align:middle"}\bgroup} {} + {} {\egroup\EndPicture} +>>> + + + + + + + +\<configure html4 seslideb\><<< +\ConfigureEnv{center} + {\IgnorePar \par \EndP \HCode{<div class="center"\Hnewline>}} + {\ifvmode\IgnorePar\fi\EndP\HCode{</div>}} + {} {} +{\Configure{Needs}{Font\string_Size: #1}% + \expandafter\Needs\expandafter{\csname normalsize@fsize\endcsname}} +>>> + +\<configure html4 seslideb\><<< +\ConfigureToc{swSlide} + {} {\relax } {} { } +\:CheckOption{0} + \if:Option \else \:CheckOption{1} \fi +\if:Option + \:CheckOption{1} \if:Option + \CutAt{swSlide} + \Configure{crosslinks}{}{}{}{}{}{}{}{} + \fi + |<seslideb toc|> + |<seslideb page break|> +\else + |<handle my missing sw fonts|> + \Log:Note{pagination may be obtained + through the option `0' or `1', at locations marked with + \noexpand\csname PageBreak\string\endcsname} +\fi +>>> + +\<handle my missing sw fonts\><<< +\Configure{swSlide}{}{}{\bgroup\bf}{\egroup} +>>> + + + +\<seslideb toc\><<< +\def\:temp{% + \ifOption{1}{\par\IgnorePar\EndP\HCode{<hr />}\par}{} + \HAssign\TocN=1 + \def\swTitle{\gHAdvance\TocN by 1 \TocN}\:TableOfContents[swSlide] + \let\swTitle=\relax + \ifOption{0}{\par\IgnorePar\EndP\HCode{<hr />}\par}{} + \let\swSlide=\o:swSlide: \let\o:swSlide:=\empty \swSlide} +\HLet\swSlide=\:temp +>>> + + +\<seslideb page break\><<< +\Configure{swSlide} + {\gHAdvance\swSlideN by 1 \Link{}{s-\swSlideN}\EndLink } + {\rightline{ + {\HAdvance\swSlideN by -1 \Link{s-\swSlideN}{}\swSlideN\EndLink} + \Link[\jobname.html]{}{}\HCode{<>}\EndLink{} + {\HAdvance\swSlideN by 1 + \ifTag{)Qs-\swSlideN}{\Link{s-\swSlideN}{}\swSlideN\EndLink}{}} + } + \ifOption{0}{\par \IgnorePar\EndP\HCode{<hr />}\par}{} + } + {\IgnorePar\bgroup \bf } + {\egroup \ShowPar\IgnoreIndent\par} +\HAssign\swSlideN=1 +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{minitoc} +%%%%%%%%%%%%%%%%%% + +\<configure html4 minitoc\><<< + |<minitoc.sty Configure 4.0t|> +>>> + +\<minitoc.sty Configure 4.0t\><<< +\Configure{minitoc} + {\Configure{tableofcontents} + {\HCode{<div class="minitoc"><hr\xml:empty>}\IgnorePar}{} + {\IgnorePar\HCode{<hr\xml:empty></div>}\ShowPar} + {\HCode{<br />}}{}} {} + {\HCode{<div class="minitoc-\TocOption">}} {\HCode{</div>}} +\Configure{minilof} + {\Configure{tableofcontents} + {\HCode{<div class="minilof"><hr\xml:empty>}\IgnorePar}{} + {\IgnorePar\HCode{<hr\xml:empty></div>}\ShowPar} + {\HCode{<br />}}{}} {} + {\HCode{<div class="minilof-\TocOption">}} {\HCode{</div>}} +\Configure{minilot} + {\Configure{tableofcontents} + {\HCode{<div class="minilot"><hr\xml:empty>}\IgnorePar}{} + {\IgnorePar\HCode{<hr\xml:empty></div>}\ShowPar} + {\HCode{<br />}}{}} {} + {\HCode{<div class="minilot-\TocOption">}} {\HCode{</div>}} +\Css{.minitoc-l,.minilot-l,.minilof-l + {text-align:left;margin-left:3em;}} +\Css{.minitoc-c,.minilot-c,.minilof-c + {text-align:center;margin-left:3em;}} +\Css{.minitoc-r,.minilot-r,.minilof-r + {text-align:right;margin-left:3em;}} +\Css{DIV.minitoc,DIV.minilot,DIV.minilof{margin-left:3em;}} +\Css{.minitoc .sectionToc { font-weight:bold;} } +>>> + +Only one of the following is needed for a given document!!! + +\<minitoc.sty Configure 4.0t\><<< +\Configure{parttoc}{}{} + {\HCode{<div class="parttoc-\TocOption">}} {\HCode{</div>}} +\Configure{partlof}{}{} + {\HCode{<div class="partlof-\TocOption">}} {\HCode{</div>}} +\Configure{partlot}{}{} + {\HCode{<div class="partlot-\TocOption">}} {\HCode{</div>}} +\Css{.parttoc-l,.partlof-l,.partlot-l{text-align:left;}} +\Css{.parttoc-c,.partlof-c,.partlot-c{text-align:center;}} +\Css{.parttoc-r,.partlof-r,.partlot-r{text-align:right;}} +>>> + +\<minitoc.sty Configure 4.0t\><<< +\Configure{secttoc}{}{} + {\HCode{<div class="secttoc-\TocOption">}} {\HCode{</div>}} +\Configure{sectlof}{}{} + {\HCode{<div class="sectlof-\TocOption">}} {\HCode{</div>}} +\Configure{sectlot}{}{} + {\HCode{<div class="sectlot-\TocOption">}} {\HCode{</div>}} +\Css{.secttoc-l,.sectlof-l,.sectlot-l{text-align:left;}} +\Css{.secttoc-c,.sectlof-c,.sectlot-c{text-align:center;}} +\Css{.secttoc-r,.sectlof-r,.sectlot-r{text-align:right;}} +>>> + +\<minitoc.sty Configure 4.0t\><<< +\:CheckOption{3} \if:Option + \let\minitoc=\empty +\fi +\Configure{minitoc@} + {\ifx \mtc@rule\relax \else \par \IgnorePar \HCode{<hr/>}\par\fi + \bgroup \let\mtc@rule\relax + } + {\egroup + \ifx \mtc@rule\relax \else \par \IgnorePar \HCode{<hr/>}\par\fi + } +>>> + + + +%%%%%%%%%%%%%%%%%%% +\section{alltt.sty} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 alltt\><<< +\ConfigureEnv{alltt} + {\IgnorePar\EndP\HCode{<div class="alltt">}} + {\IgnorePar\EndP\HCode{</div>}} {}{} +\Css{.alltt P { margin-bottom : 0em; margin-top : 0em; }} +\Css{.alltt { margin-bottom : 1em; margin-top : 1em; font-family:monospace,monospace; }} +>>> + +%%%%%%%%%%%%%%%%%%% +\section{url.sty} +%%%%%%%%%%%%%%%%%%% + +\<configure html4 url\><<< +\:CheckOption{url-il2-pl} \if:Option +\else \:CheckOption{url-enc} \fi +\if:Option + \Configure{string-encoder}{url-encoder} +% \:CheckOption{url-il2-pl} \if:Option + |<il2-pl.tcx url encoder|> +% \else + |<default url encoder WAIT|> +% \Log:Note{for il2-pl url encoding, +% use the command line option 'url-il2-pl'} +% \fi + \Configure{url}% + {|<:temp = url encoded string|>% + \Link[\noexpand\the\tmp:toks \space + class="url"]{}{}{\let\UrlBigBreaks\empty + \let\UrlBreaks\empty #1}\EndLink} + |<url encoded string utilities|> +\else + \Log:Note{for URL encoding within href + use the command line option `url-enc'} + \Configure{url}% + {\tmp:toks{#1}\Link[\noexpand\the\tmp:toks\space + class="url"]{}{}{\let\UrlBigBreaks\empty + \let\UrlBreaks\empty #1}\EndLink} +\fi +|<path config|> +>>> + +\<:temp = url encoded string\><<< +\tmp:toks={}\set:spaces#1|<par del|>% +\edef\:temp{\tmp:toks{\csname url-encoder\expandafter\endcsname + \the\tmp:toks |<par del|>}}\:temp +>>> + +\<url encoded string utilities\><<< +\def\set:spaces{\futurelet\:temp\set:spacesoo} +\def\set:spacesoo{% + \expandafter\ifx \space\:temp + \tmp:toks\expandafter{\the\tmp:toks{ }}% + \fi + \set:spaceso +} +\def\set:spaceso#1#2|<par del|>{% + \tmp:toks\expandafter{\the\tmp:toks #1}% + \if !#2!\else \set:spaces#2|<par del|>\fi +} +>>> + +\<default url encoder\><<< +\Configure{url-encoder} + {%}{%25} + {&}{%26} + {'}{%27} + {<}{%3C} + {>}{%3E} + {_}{_} + {^}{^} + {}{} +\Log:Note{current url encoding setting: \string\Configure{url-encoder}% + {\%}{\%25}% + {&}{\%26}% + {'}{\%27}% + {<}{\%3C}% + {>}{\%3E}% + {\string _}{\string _}% + {\string ^}{\string ^}% + {}{}} +>>> + + + + +\<il2-pl.tcx url encoder\><<< +\input{html4-l2-url.4ht} +>>> + +\<html4-l2-url\><<< +% html4-l2-url.4ht (|version), generated from |jobname.tex +% Copyright 2009-2015 TeX Users Group +% Copyright |CopyYear.1999. Eitan M. Gurari +% +% Extracted to a separate file so the main file has a consistent +% (and UTF-8 compatible) encoding. +|<TeX4ht copywrite|> +\Configure{url-encoder} + {%}{%25} + {&}{%26} + {'}{%27} + {<}{%3C} + {>}{%3E} + {_}{_} + {^}{^} + {±}{ą} + {æ}{ć} + {ê}{ę} + {³}{ł} + {ó}{ó} + {ñ}{ń} + {¶}{ś} + {¼}{ź} + {¿}{ż} + {¡}{Ą} + {Æ}{Ć} + {Ê}{Ę} + {£}{Ł} + {Ó}{Ó} + {Ñ}{Ń} + {¦}{Ś} + {¬}{Ź} + {¯}{Ż} + { }{+} + {}{} +>>> + + +\Link[http://www.faqs.org/rfcs/rfc2396.html]{}{}http://www.faqs.org/rfcs/rfc2396.html\EndLink + +See issues in: + +\begin{verbatim} +\documentclass{article} + \usepackage{url} +\begin{document} + +\url{a%b c&d} + +\url{a%25b+c&d} + +\end{document} +\end{verbatim} + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Path.sty} +%%%%%%%%%%%%%%%%%% + +\<path config\><<< +\Configure{path} + {\HCode{<span class="path">}\bgroup + \Configure{obeylines}{}{}{}% + } + {\egroup\HCode{</span>}} +>>> + +\<configure html4 path\><<< +|<path config|> +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%% +\section{fontmath} +%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure html4 latex\><<< +\:CheckOption{fonts} \if:Option + \Configure{textbf}{\Protect\HCode{<span class="textbf">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Configure{textit}{\Protect\HCode{<span class="textit">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Configure{textrm}{\Protect\HCode{<span class="textrm">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Configure{textup}{\Protect\HCode{<span class="textup">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Configure{textsc}{\Protect\HCode{<span class="textsc">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Configure{textsf}{\Protect\HCode{<span class="textsf">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Configure{textsl}{\Protect\HCode{<span class="textsl">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Configure{texttt}{\Protect\HCode{<span class="texttt">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Configure{emph}{\Protect\HCode{<span class="emph">}\NoFonts} + {\EndNoFonts\Protect\HCode{</span>}} + \Css{span.textbf { font-weight: bold; }} + \Css{span.textit { font-style: italic; }} + \Css{span.textrm { font-family: serif; }} + \Css{span.textsc { font-variant: small-caps; }} + \Css{span.textsf { font-family: sans-serif; }} + \Css{span.texttt { font-family: monospace,monospace; }} + \Css{span.emph { font-style: italic;}} + \Css{span.emph span.emph {font-style: normal;}} +\else + \Log:Note{for tracing of latex font commands, + use the command line option `fonts'} +\fi +>>> + +\<configure html4-math fontmath\><<< +\:CheckOption{fonts} \if:Option + \Configure{mathit}{\Protect\HCode{<span class="mathit">}} + {\Protect\HCode{</span>}} + \Configure{mathbf}{\Protect\HCode{<span class="mathbf">}} + {\Protect\HCode{</span>}} + \Configure{mathtt}{\Protect\HCode{<span class="mathtt">}} + {\Protect\HCode{</span>}} + \Configure{mathsf}{\Protect\HCode{<span class="mathsf">}} + {\Protect\HCode{</span>}} + \Configure{mathrm}{\Protect\HCode{<span class="mathrm">}} + {\Protect\HCode{</span>}} +\fi +>>> + + + + + + + + + +\<configure html4-math amsfonts\><<< +\:CheckOption{fonts} \if:Option + \Configure{mathbb}{\Protect\HCode{<span class="mathbb">}} + {\Protect\HCode{</span>}} + \Configure{mathfrak}{\Protect\HCode{<span class="mathfrak">}} + {\Protect\HCode{</span>}} +\fi +>>> + + + + + + +\subsection{1: Large Operators} + +\begin{verbatim} +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 +\end{verbatim} + + + +\<plain tex classes\><<< +\Configure{MathClass}{1}{}{}{}{ + \mathchar"1360 + \mathchar"1357 + \mathchar"1356 + \mathchar"1355 + \mathchar"1354 + \mathchar"1353 + \mathchar"1352 + \mathchar"1351 + \mathchar"1350 + \mathchar"134E + \mathchar"134C + \mathchar"134A + \mathchar"1348 + \mathchar"1346 + \mathchar"1273 +} +>>> +\subsection{2: Binary Operations} + +\begin{verbatim} +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\-="2200 +\end{verbatim} + +\<plain tex classes\><<< +\Configure{MathClass}{2}{}{}{}{ +*-+/ +\mathchar"212F +\mathchar"212E +\mathchar"2234 +\mathchar"2235 +\mathchar"225E +\mathchar"225F +\mathchar"225C +\mathchar"225B +\mathchar"227A +\mathchar"2279 +\mathchar"2275 +\mathchar"2274 +\mathchar"225D +\mathchar"2271 +\mathchar"2205 +\mathchar"220F +\mathchar"226F +\mathchar"2204 +\mathchar"220C +\mathchar"220B +\mathchar"220A +\mathchar"2209 +\mathchar"2208 +\mathchar"2207 +\mathchar"2206 +\mathchar"220E +\mathchar"220D +\mathchar"226E +\mathchar"2201 +\mathchar"2203 +\mathchar"2202 +\mathchar"213F +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{3: Relational Operations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The catcode is needed because 303A is \verb':'. + +\<plain tex classes\><<< +\Configure{MathClass}{3}{}{}{}{ + \mathchar"3128 + \mathchar"3129 + \mathchar"312A + \mathchar"312B + \mathchar"315E + \mathchar"315F + \mathchar"3210 + \mathchar"3211 + \mathchar"3212 + \mathchar"3213 + \mathchar"3214 + \mathchar"3215 + \mathchar"3216 + \mathchar"3217 + \mathchar"3218 + \mathchar"3219 + \mathchar"321A + \mathchar"321B + \mathchar"321C + \mathchar"321D + \mathchar"321E + \mathchar"321F + \mathchar"3220 + \mathchar"3221 + \mathchar"3224 + \mathchar"3227 + \mathchar"3232 + \mathchar"3233 + \mathchar"3236 + \mathchar"3237 + \mathchar"323F + :=>< + \mathchar"322F + \mathchar"3276 + \mathchar"3277 + \mathchar"326B + \mathchar"326A + \mathchar"3261 + \mathchar"3260 + \mathchar"3225 + \mathchar"3226 + \mathchar"322D + \mathchar"322E + \mathchar"322C + \mathchar"3228 + \mathchar"3229 +} +>>> + + + +\begin{verbatim} +\mathcode`\>="313E +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\:="303A +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\set="321A +\mathchardef\supseteq="3213 +\mathchardef\seteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\end{verbatim} +\subsection{4/5: Delimiters} + +\begin{verbatim} +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\[="405B +\mathcode`\]="505D +\mathcode`\{="4266 +\mathcode`\}="5267 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\def\lmoustache{\delimiter"437A340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"537B341 } % top from ), bottom from ( +\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips +\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } +\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads +\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert How should these be treated? +\def\vert{\delimiter"26A30C } " " " " " +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\end{verbatim} + +The comamnds \verb'\Configure{MathClass}{4}...' +and \verb'\Configure{MathClass}{5}...' +are for unmatched delimiters, and the comamnd +\verb'\Configure{MathDelimiters}{(}{)}' is for matched ones. + + +\<plain tex classes\><<< +\Configure{MathClass}{4}{}{}{}{} +\Configure{MathDelimiters}{(}{)} +\Configure{MathDelimiters}{[}{]} +\Configure{MathDelimiters}{\mathchar"4262}{\mathchar"5263} +\Configure{MathDelimiters}{\mathchar"4264}{\mathchar"5265} +\Configure{MathDelimiters}{\mathchar"4266}{\mathchar"5267} +\Configure{MathDelimiters}{\mathchar"4268}{\mathchar"5269} +\Configure{MathDelimiters}{\mathchar"4300}{\mathchar"5301} +\Configure{MathDelimiters}{\mathchar"4302}{\mathchar"5303} +\Configure{MathDelimiters}{\mathchar"4304}{\mathchar"5305} +\Configure{MathDelimiters}{\mathchar"4306}{\mathchar"5307} +\Configure{MathDelimiters}{\mathchar"4308}{\mathchar"5309} +\Configure{MathDelimiters}{\mathchar"430A}{\mathchar"530B} +>>> + +\begin{verbatim} +\mathcode`\?="503F +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{6: Punctuation Marks} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{verbatim} +\mathchardef\ldotp="613A % ldot as a punctuation mark +\mathchardef\cdotp="6201 % cdot as a punctuation mark +\mathchardef\colon="603A % colon as a punctuation mark +\mathcode`\;="603B +\mathcode`\,="613B +\end{verbatim} + + + +\<plain tex classes\><<< +\Configure{MathClass}{6}{}{}{}{ +\mathchar"613A +\mathchar"6201 +\mathchar"603A +?; , +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Questions} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{verbatim} +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Type 4: Math Open} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +latex.ltx, fontmath.ltx, plain.tex + + + +%%%%%%%%%%%%% +\subsection{Over and Under} +%%%%%%%%%%%%% + +\<configure html4-math fontmath\><<< +\Configure{overrightarrow} + {\leavevmode\IgnorePar} + {} +\Configure{overleftarrow} + {\leavevmode\IgnorePar} + {} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{fleqn.sty} +%%%%%%%%%%%%%%%%%%%% + +\<configure html4-math fleqn\><<< +\Configure{equation} + {\:xhtml{\IgnorePar\EndP}% + \HCode{<table\Hnewline class="equation"><tr><td>}\IgnorePar + \Configure{$}{\PicMath}{\EndPicMath}{}% + } + {\IgnorePar\HCode{</td><td class="equation-label">}} + {\end:TTT\IgnorePar\par} +>>> +\section{emulateapj.clo} + +\<configure html4 emulateapj\><<< +\Configure{slugcomment} + {\HCode{<div class="slugcomment">}} + {\HCode{</div>}} +\Css{.slugcomment{text-align:center;font-size:85\%; + font-style: italic;}} +\Configure{subtitle}{\HCode{<div class="subtitle">}}{\HCode{</div>}} +\Configure{submitted}{}{\expandafter\Tg<br />} +\Configure{title}{\HCode{<h1 class="title">}}{\HCode{</h1>}} +\Css{.title{text-align:center;}} +\Configure{author} + {\IgnorePar\EndP\HCode{<div class="author">}}{\HCode{</div>}} +\Css{div.author{text-align:center;}} +\Configure{affil}{\HCode{<div class="affil"><div>}}{\HCode{</div></div>}} +\Css{.affil{text-align:center;}} +\Css{.affil div{text-align:left; + margin-right:15pt;margin-left:15pt;}} +\Configure{keywords} + {\IgnorePar\EndP\HCode{<div class="keywords"><div>}} + {\HCode{</div></div>}} +\Css{.keywords{text-align:center;}} +\Css{.keywords div{text-align:left; margin-right:15pt;margin-left:30pt; + text-indent:-15pt;}} +\Configure{subjectheadings} + {\HCode{<div class="subjectheadings"><div>}}{\HCode{</div></div>}} +\Css{.subjectheadings{text-align:center;}} +\Css{.subjectheadings div{text-align:left; + margin-right:15pt;margin-left:15pt;}} + +\Css{.abstract {margin-right:15pt;margin-left:15pt;}} +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">}\@seccntformat{section}% + \thesection\HCode{</span>}\fi} +\Configure{section}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="sectionHead"\a:LRdir>} + \TitleMark{. \space}} + {\HCode{</h3>}\IgnoreIndent \ShowPar \par} +\ConfigureEnv{references} + {\IgnorePar\EndP\Tg<div class="references">} + {\IgnorePar\EndP\Tg</div>} {}{} +\Css{.references p { margin: 0.35em; text-indent:-2em;margin-left:2em;}} +>>> + +%%%%%%%%%%%%%%%%% +\section{parallel} + +\<configure html4 parallel\><<< +\Configure{ParallelLText}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="ltext">}\par}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}\par} +\Configure{ParallelRText}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="rtext">}\par}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}\par} +\ConfigureEnv{Parallel}{\ifvmode\IgnorePar\fi\EndP\HCode{<section class="parallel">}}{\ifvmode\IgnorePar\fi\EndP\HCode{</section>}\par}{}{} + +\Css{.parallel .ltext{ + width: 48\%; + float:left; +}} +\Css{.parallel .rtext{ + width: 48\%; + margin-left: 52\%; +}} +>>> + +%%%%%%%%%%%%%%%%% +\section{skak} + +\<configure html4 skak\><<< +\Configure{SkakBoard}{\Picture+{}}{\EndPicture} +>>> + +%%%%%%%%%%%%%%%%% +\section{vanilla} + +\<configure html4 vanilla\><<< +|<32 amsppt, 32,4 vanilla|> +|<32,4 vanilla|> +|<config vanilla.sty 4.0t|> +>>> + + +\<32,4 vanilla\><<< +\Configure{matrix} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="matrix">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline style="vertical-align:top;">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +\Configure{align} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="align">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline style="vertical-align:top;">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +>>> +\<config vanilla.sty 4.0t\><<< +\Configure{heading} + {}{}{\IgnorePar\EndP\HCode{<h2 class="heading">}}{\HCode{</h2>}} +\ConfigureToc{heading} + {}{\HCode{<span class="heading">}}{}{\HCode{</span><br />}} +\Configure{subheading} + {}{}{\EndP\HCode{<h3 class="subheading">}}{.\HCode{</h3>}} +\ConfigureToc{subheading} + {}{\HCode{<span class="subheading">}}{}{\HCode{</span><br />}} +\Configure{demo} + {\IgnorePar\EndP\HCode{<div class="demo"><span class="demo">}} + {\HCode{</span>}} {\IgnorePar\EndP\HCode{</div>}} +>>> + + +\<config vanilla.sty 4.0t\><<< +\Configure{aligned} + {\EndP\HCode{<center><table\Hnewline + border="0" cellpadding="0" cellspacing="15" class="aligned">}} + {\HCode{</table></center>}\IgnorePar} + {\HCode{<tr\Hnewline style="vertical-align:top;">}}{\HCode{</tr>}} + {\HCode{<td>}} {\HCode{</td>}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%% +\section{tugboat} +%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html4 tugboat\><<< +\Configure{head}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="headHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h3>}\HtmlParOn \EndNoFonts \IgnoreIndent \ShowPar \par} +\Configure{subhead}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h4 class="subheadHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h4>}\HtmlParOn \EndNoFonts \IgnoreIndent \ShowPar \par} +\Configure{subsubhead}{}{} + {\NoFonts \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h5 class="subsubheadHead"\a:LRdir>}\HtmlParOff} + {\HCode{</h5>}\HtmlParOn \EndNoFonts \IgnoreIndent \ShowPar \par} +>>> + + +\<configure html4 tugboat\><<< +\Configure{figure} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="figure">}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} +>>> + + +\<configure html4 tugboat\><<< +\Configure{verbatim} + {{\everypar{}\leavevmode}\EndP + \HCode{<div class="verbatim\:ruled">}\par\ShowPar} + {{\everypar{}\leavevmode}\EndP \HCode{</div>}\par\ShowPar} +\Configure{verb} + {\HCode{<span class="verb">}} + {\HCode{</span>}} +\Css{div.verbatim p, div.verbatim-ruled p {margin:0.2em}} +\Css{div.verbatim-ruled { border-top: 1px solid black; + border-bottom: 1px solid black; }} +>>> + + +\<configure html4 tugboat\><<< +\Configure{display-list} + {\ifvmode \IgnorePar\fi \EndP \HCode{<div class="list"><!--cols: \the\@cols-->}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par} + {\HCode{<span class="listitem">}} + {\HCode{</span>}} +\Configure{inline-list} + {\HCode{<span class="list"><!--cols: \the\@cols-->}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</span>}\par} + {\HCode{<span class="listitem">}} + {\HCode{</span>}} +\Css{div.list p span.listitem {text-indent:-3em; margin-right:1em;}} +\Css{div.list { margin-left:3em;}} +>>> + +\<configure html4 tugboat\><<< +\Configure{rtitle} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<div class="rtitle">}\IgnorePar} + {\HCode{</div>}\ShowPar\par} +\Configure{title} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<h2 class="title">}\IgnorePar} + {\HCode{</h2>}\IgnoreIndent\par} +\Configure{address} + {\ifx\@addressstyle\@inlinestyle + \HCode{<span class="address">}% + \else + \ifvmode \IgnorePar \fi \EndP + \HCode{<div class="address">}% + \fi } + {\ifx\@addressstyle\@inlinestyle + \HCode{</span>}% + \else + \ifvmode \IgnorePar \fi \EndP + \HCode{</div>}% + \fi } +\Configure{netaddress} + {\HCode{<span class="netaddress">}} + {\HCode{</span>}} +\Configure{author} + {\HCode{<span class="author">}} + {\HCode{</span>}} +\Configure{authorlist} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<div class="authorlist">}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP + \HCode{</div>}\IgnoreIndent\par\ShowPar} +\Css{div.authorlist {margin-left:2em;}} +|<tugboat cmn|> +>>> + +\<tugboat cmn\><<< +\Configure{signature} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="signature">}\par\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</div>}\ShowPar\par} +\Css{div.signature p{ margin-top:0.3em; margin-bottom:0.3em;}} +\Css{div.signature { white-space:nowrap; margin-left:70\%; }} +\Configure{signaturemark} + {\HCode{<span class="signaturemark">} } + {\HCode{</span>}} +\Css{span.signaturemark {margin-top:1.5em;}} +>>> + + + +\<tugboat cmn\><<< +\Configure{issno} + {\hbox{\HCode{<span class="issno">}}} + {\hbox{\HCode{</span>}}} +\Configure{volyr} + {\hbox{\HCode{<span class="volyr">}}} + {\hbox{\HCode{</span>}}} +\Configure{volno} + {\hbox{\HCode{<span class="volno">}}} + {\hbox{\HCode{</span>}}} +>>> + +%%%%%%%%%%%%%%%%%%%%%% +\section{ltug boat/proc} +%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 ltugboat\><<< +|<quote noindent config|> +\ConfigureEnv{verbatim} + {\par}{|<try inline par|>}{}{} +\Configure{author} + {\hbox{\HCode{<span class="author">}}} + {\hbox{\HCode{<br /></span>}}} +\Configure{address} + {\hbox{\HCode{<span class="address">}}} + {\hbox{\HCode{<br /></span>}}} +\Configure{netaddress} + {\hbox{\HCode{<span class="netaddress">}}} + {\hbox{\HCode{<br /></span>}}} +\Configure{PersonalURL} + {\hbox{\HCode{<span class="PersonalURL">}}} + {\hbox{\HCode{<br /></span>}}} +\Configure{signaturemark} + {\hbox{\HCode{<span class="signaturemark">}}} + {\hbox{\HCode{</span> }}} +>>> + + +\<configure html4 ltugboat\><<< +\Configure{makesignature} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<div class="makesignature">}% + \bgroup \Configure{HtmlPar}{}{}{}{}% + \Configure{rightline}{}{}% + \IgnorePar + } + {\egroup \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +\Configure{signature} + {\def\||{\HCode{<br />}}% + \Configure{HtmlPar} + {}{\HCode{}} + {}{\HCode{}}% + } +\Css{.makesignature{margin-left:4em;}} +\Css{.signaturemark{display:block-inline;margin-left:-1.33em;}} +>>> + + + + +\<configure html4 ltugboat\><<< +|<tug boat maketitle|> +\Configure{titlex} + {\HCode{<div class="titlex">}} + {\HCode{</div>}} +\Css{div.titlex p{margin-bottom:1em;}} +|<ltugboat congif|> +>>> + + +\<ltugboat congif\><<< +\Configure{sectitle} + {\ifvmode \IgnorePar\fi + \EndP \HCode{<div class="sectitle">}% + \SaveEndP\bgroup\everypar{}} + {\egroup\RecallEndP \ifvmode \IgnorePar\fi \EndP \HCode{</div>}} +>>> + + +\<configure html4 ltugproc\><<< +|<tug proc maketitle|> +\ConfigureEnv{abstract} + {}{} {}{} +\Configure{abstract} + {\bgroup + \HCode{<div class="abstract">}\IgnoreIndent\par} + {\ifvmode\IgnorePar\fi \EndP\HCode{</div>}\egroup} +\Css{div.abstract {margin-left:1em; margin-right:1em; + text-align:left;}} +\Css{div.maketitle div.centerline {margin-top:1em;}} +>>> + +\<configure html4 ltugproc\><<< +\Configure{abstractHead} + {\bgroup + \Configure{centerline}{}{} + \NoFonts + \ifvmode \IgnorePar\fi \EndP \HCode{<h3>}% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{</h3>}% + \EndNoFonts \egroup} +>>> + + + + +%%%%%%%%%%%%%%%%% +\section{tex4ht} +%%%%%%%%%%%%%%%%% + +\<configure html4 tex4ht\><<< +|<config tex4ht|> +|<title for hypertext page|> +|<tex4ht doctype|> +>>> + + +\<config tex4ht\><<< +\:CheckOption{NoFonts} \if:Option + \NoFonts +\else + \Log:Note{to ignore CSS font decoration, use the `NoFonts' + command line option} +\fi +>>> + + + +\<config tex4ht\><<< +\Configure{HVerbatim+}{\z@}{\:nbsp} +\:CheckOption{jpg} \if:Option + \Configure{Picture}{.jpg} +\else + \Log:Note{for jpg bitmaps of pictures, use the `jpg' + command line option. |<ch bitmaps|>} +\fi +\:CheckOption{gif} \if:Option + \Configure{Picture}{.gif} +\else + \Log:Note{for gif bitmaps of pictures, use the `gif' + command line option. |<ch bitmaps|>} +\fi +>>> + +\<ch bitmaps\><<< +(Character bitmaps are controled only by `g' records of tex4ht.env and `-g' +switches of tex4ht.c) +>>> + + + +\<configure html4 tex4ht\><<< +|<tex4ht HTML|> +>>> + +\<configure html4 tex4ht\><<< +\newif\ifHCond +|<global HtmlPar|> +\NewConfigure{!P}[1]{\expandafter\concat:config\csname a:!P\endcsname{#1}} +\expandafter\let\csname a:!P\endcsname|=\relax +\Configure{!P}{} + + +\ifOption{p-indent}{% +\Css{p.noindent { text-indent: 0em }} +\Css{td p.noindent { text-indent: 0em; margin-top:0em; }} +\Css{p.nopar { text-indent: 0em; }} +\Css{p.indent{ text-indent: 1.5em }} +\Css{p{margin-top:0;margin-bottom:0}} +\Css{p.noindent + p.noindent{margin-top:1em;}} +}{% +\Css{p{margin-top:0;margin-bottom:0}} +\Css{p.indent{text-indent:0;}} +\Css{p + p{margin-top:1em;}} +\Css{p + div, p + pre {margin-top:1em;}} +\Css{div + p, pre + p {margin-top:1em;}} +} +>>> + +Enable linebreaking in long URLs + +\<configure html4 tex4ht\><<< +\Css{a { + overflow-wrap: break-word; + word-wrap: break-word; + word-break: break-word; + hyphens: auto; +}} +>>> + +\<global HtmlPar\><<< +\Configure{HtmlPar} + {\EndP\HCode{|<show input line no|><p \csname a:!P\endcsname + class="no\ifHCond par\else indent\fi" \a:LRdir>}} + {\EndP\HCode{|<show input line no|><p \csname a:!P\endcsname + class="\ifdim \parindent=\z@ no\fi indent" \a:LRdir>}} + {\:xhtml{\Tg</p>}} + {\:xhtml{\Tg</p>}}% +>>> + +\<configure html4 tex4ht\><<< +\NewConfigure{!BODY}[1]{\expandafter\concat:config + \csname a:!BODY\endcsname{#1}} +\expandafter\let\csname a:!BODY\endcsname|=\relax +\Configure{!BODY}{} +>>> + +\<configure html4 tex4ht\><<< +\NewConfigure{LRdir}[1]{\concat:config\a:LRdir{#1}} +\let\a:LRdir|=\relax +\Configure{LRdir}{} +>>> + + +\<configure html4 tex4ht\><<< +\Configure{crosslinks+} + {\IgnorePar\EndP\HCode{|<show input line no|>% + <div class="crosslinks"><p class="noindent">}} + {\HCode{</p></div>}\par\ShowPar} + {\IgnorePar\EndP\HCode{|<show input line no|>% + <div class="crosslinks"><p class="noindent">}} + {\HCode{</p></div>}\par\ShowPar} +\Css{@media print {div.crosslinks {visibility:hidden;}}} + +\Configure{halignTR} + {\HCode{ style="vertical-align:baseline;"}} +\Configure{halignTBL} +% % {t}{\HCode{ valign="top"}} +% % {b}{\HCode{ valign="baseline"}} +% % {c}{\HCode{ valign="middle"}} + {} + +\Configure{halign} + {\EndP + \PushStack\Table:Stck\TableNo + \gHAdvance\Next:TableNo by 1 + \global\let\TableNo=\Next:TableNo + \halignTB{halign}} + {\HCode{</table>}\PopStack\Table:Stck\TableNo} + {\HCode{<tr \Hnewline}\halignTR\HCode{ id="TBL-\TableNo-\HRow-">}} + {\HCode{</tr>}} + {|<td save EndP|> \HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline id="TBL-\TableNo-\HRow-\HCol">}\ShowPar\par} + {\ifvmode \IgnorePar \fi \EndP\HCode{</td>}|<td recall EndP|>} +\Configure{pic-halign}{} +\Configure{halignTB<>}{halign}{\HCode{id="TBL-\TableNo" class="halign"\Hnewline }<>} +\HAssign\Next:TableNo|=0 \global\let\TableNo=\Next:TableNo +>>> + +The following should be just under LaTeX. + +\<configure html4 tex4ht\><<< +\Configure{halignTD} {}{} + {<}{\HCode{ style="white-space:nowrap; text-align:left;"}} + {-}{\HCode{ style="white-space:nowrap; text-align:center;"}} + {>}{\HCode{ style="white-space:nowrap; text-align:right;"}} + {^}{\HCode{ style="vertical-align:top; white-space:nowrap;"}} + {=}{\HCode{ style="vertical-align:baseline; white-space:nowrap;"}} + {||}{\HCode{ style="vertical-align:middle; white-space:nowrap;"}} + {_}{\HCode{ style="vertical-align:bottom; white-space:nowrap;"}} + {p}{\HCode{ style="white-space:normal; text-align:left;"}\Protect\a:HColWidth} + {m}{\HCode{ style="white-space:nowrap; text-align:left; vertical-align:middle;"}} + {b}{\HCode{ style="white-space:nowrap; text-align:left; vertical-align:baseline;"}} + {} +\NewConfigure{HColWidth}{1} +\Configure{HColWidth}{} +>>> + + +The following code allows width specifications of p-columns of tables +through the command line option `p-width'. + +The command line option activates a configuration similar to the +following ones. + + \Configure{HColWidth} + {\HCode{ style="width:\HColWidth"}} + + \Configure{HColWidth} + {\HCode{ style="width: + \ifnum \HCol=1 160\fi + \ifnum \HCol=3 500\fi + "}} + +Try the above examples with the following source under different font +sizes in the browser. + + \begin{tabular}{p{2cm}cp{3cm}} + 1 2 3 1 2 3 & x & 1 2 3 1 2 3 + \end{tabular} + +The configuration provided through the command line option `p-width' +takes to some degree into account the size of fonts in use within the +HTML displays. Yet, not all browsers react properly to the size +changes. + + + + + +\<configure html4 latex\><<< +\:CheckOption{p-width} \if:Option + |<10 em constant|> + \Configure{HColWidth} + {\tmp:dim=\HColWidth \divide\tmp:dim by \ten:Em\relax + \tmp:dim=10\tmp:dim + \Css{\#TBL-\TableNo-\HRow-\HCol + {width:\expandafter\x:Em \the\tmp:dim em;}}} +\else + \Log:Note{for width specifications of tabular p entries, use + the `p-width' command line option or a configuration similar + to \string\Configure{HColWidth}{\string\HCode + { style="width:\string\HColWidth"}}} +\fi +>>> + +\<configure html4 tex4ht\><<< +|<img src dir|> +\Configure{IMG} + {\ht:special{t4ht=<img\Hnewline src="|<a:imgdir|> }} + {\ht:special{t4ht=" alt="}} + {" } + {\ht:special{t4ht=" }} + {\ht:special{t4ht=\xml:empty>}} +\Css{a img { border-top: 0; border-left: 0; border-right: 0; }} +>>> + + + + +A change from the \verb'-' in the \verb'%' patterns of c to, say \verb'@', +requires a \verb'Font_hyphen: @' in the \verb'.lg' file for a match in the +css output of t4ht. + +\<configure html4 tex4ht\><<< +\Configure{htf}{0}{+}{<span\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>} +|<img src dir|> +\Configure{htf}{1}{+}{<img\Hnewline + src="|<a:imgdir|> }{" alt="}{" class="}{\%s}{-\%d}{x-x-\%x}{" />} +\Configure{htf}{3}{+}{<img\Hnewline + src="|<a:imgdir|> }{" alt="}{" class="\%s-}{\%s}{-\%d}{x-x-\%x}% + {" style="text-align:middle" />} +>>> + + +\<configure html4 tex4ht\><<< +\Configure{htf}{4}{+}{<span\Hnewline + class="}{}{}{}{}{small-caps">}{</span>} +\Configure{htf}{6}{+}{<u\Hnewline + class="}{}{}{}{}{underline">}{</u>} +>>> + +% \Configure{htf}{4}{+}{<span\Hnewline +% class="}{}{}{}{}{small-caps">}{</span>} +% \Configure{htf}{6}{+}{<span\Hnewline +% class="}{}{}{}{}{underline">}{</span>} + + +\<configure html4 tex4ht\><<< +\Configure{htf}{8}{+} + {<sup class="htf">}{}{}{}{}{}{</sup>} +\Configure{htf}{10}{+} + {<span class="htf-cmbx">}{}{}{}{}{}{</span>} +\Configure{htf}{12}{+} + {<span\Hnewline class="htf-calligraphy">}{}{}{}{}{}{</span>} +\Configure{htf}{14}{+} + {<span\Hnewline class="htf-italic">}{}{}{}{}{}{</span>} +\Configure{htf}{16}{+} + {<span\Hnewline class="htf-bold">}{}{}{}{}{}{</span>} +\Configure{htf}{18}{+} + {<span\Hnewline class="htf-calligraphy-bold">}{}{}{}{}{}{</span>} +\Configure{htf}{20}{+} + {<span\Hnewline class="htf-flip-hor">}{}{}{}{}{}{</span>} +\Configure{htf}{22}{+} + {<sub class="htf">}{}{}{}{}{}{</sub>} +\Configure{htf}{24}{+}{<span\Hnewline + class="}{}{}{}{}{small-caps">}{</span>} +\Configure{htf-css}{4}{.small-caps{font-variant: small-caps; }} +\Configure{htf-css}{10}{.htf-cmbx {font-weight: bold; font-style:normal;}} +\Configure{htf-css}{12}{.htf-calligraphy {font-family:cursive}} +\Configure{htf-css}{14}{.htf-italic {font-style: italic;}} +\Configure{htf-css}{16}{.htf-bold {font-weight: bold;}} +\Configure{htf-css}{12}{.htf-calligraphy-bold {font-family:cursive ; + font-weight: bold; }} +>>> + + + +\verb'\Configure{htf}{0}{+}{<!--span class="}{\%s}{-\%s}{--\%d}{}{"-->}{<!--/span-->}' caused netscape to +loose spaces between comments. + +\<configure html4 tex4ht\><<< +\Configure{@Picture}{\:class} +\def\:class#1{ class="#1" + \expandafter\ifx\csname a:@#1\endcsname\relax\else + \csname a:@#1\endcsname\fi} +>>> + +\<contribute to picmath of 4.0t\><<< +\NewConfigure{@buildrelover}{1} +\Configure{@buildrelover}{align="middle"} +\NewConfigure{@doteq}{1} +\Configure{@doteq}{align="middle"} +\NewConfigure{@underbrace}{1} +\NewConfigure{@frac}{1} +\Configure{@frac}{align="middle"} +\NewConfigure{@left}{1} +\Configure{@left}{align="middle"} +>>> + + + + + +\<configure html4 tex4ht\><<< +\Css{center { margin-top:1em; margin-bottom:1em; }} +\Css{td center { margin-top:0em; margin-bottom:0em; }} +>>> + +\<configure html4 tex4ht\><<< +\NewConfigure{Canvas}[4]{\ht:special{t4ht"% + *<span\Hnewline class="Canvas">% + *X<span style="position:relative;\Hnewline + width:\%.2f#4;"></span></span>% + **<span\Hnewline style="position:absolute; left:\%.2f#4; + top:\%.2f#4;"\Hnewline class="Canvas-xy"><span\Hnewline + class="Canvas-char">% + *</span></span>% + *<span class="Canvas-HR"\Hnewline style="position:absolute; + left:\%.2f#4;top:\%.2f#4;width:\%.2f#4;" + ><hr\Hnewline style="height:\%.2f#4;"></span>% + *#1*#2*#1*#2*#3}} +\Configure{Canvas}{0.00000290646}{0.0}{0.5}{ex} +\Css{.Canvas { position:relative; }} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Subdirectories for Images} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<a:imgdir\><<< +\a:imgdir >>> + +\<img src dir\><<< +\ifx \a:imgdir\:UnDef + \let\a:imgdir=\empty + \catcode`\:=12 + \expandafter + \def\csname :temp\endcsname#1imgdir:#2,#3|<par del|>{% + \if !#2!\else \expandafter + \def\csname a:imgdir\endcsname{#2}\fi} + \expandafter\csname :temp\expandafter\endcsname + \Preamble ,imgdir:,|<par del|>% + \catcode`\:=11 + \Log:Note{for addressing images in + a subdirectory, use the command line option `imgdir:.../'} +\fi +>>> + +A = instead of \verb+->+ works well on Windows NT but unfortunately + there's a problem with Windows 98. This OS insists on seeing = as a + delimiter and reports an error. + + + +\<configure html4 tex4ht2\><<< +\ifx \a:imgdir\empty\else + \let\GIF:NAME=\gif:name + \def\gif:name#1{% + \let\:temp=\GIF:NAME + \ifx \gif:nm\cond:imgs + \def\:next{\edef\:tempa{#1}\expandafter\I:images \:tempa/....}% + \else + \def\:next{\GIF:NAME{#1}}% + \fi \:next} + + \def\cond:imgs{\edef\gif:nm} + + \def\I:images#1/#2....{% + \edef\:next{\noexpand\:temp{\:tempa}}% + \if .#2.\else \edef\:next{\noexpand\no:images{\:tempa}}\fi + \:next} + \def\no:images#1{\let\a:imgdir=\empty \:temp{#1}} +\fi +>>> + +Test file: + +\begin{verbatim} +\documentclass{article} +\begin{document} +\Picture{xx.png} +\Picture{http://wwww.foo.goo/xx.png} + +With image: $\left( x_{n}\right) \alpha_m$. + +\end{document} +\end{verbatim} + + + + + + + +%%%%%%%%%%%%%%%% +\section{th4} +%%%%%%%%%%%%%%%% + +\<configure html4 th4\><<< +|<th4 for non-private use|> +\:CheckOption{th4}\if:Option \else \expandafter\endinput\fi +|<th4 sections|> +|<th4 tocs|> +|<th4 lists|> +|<th4 tables|> +|<th4 verbatim|> +|<th4 columns|> +|<th4 index|> +>>> + + +\<th4 for non-private use\><<< +\:CheckOption{javascript} + \if:Option \else\:CheckOption{th4}\fi +\if:Option + \Configure{JavaScript} + {\HCode{<script type="text/JavaScript" ><!--\Hnewline}} + {\HCode{//-->\Hnewline </script>}} +\fi +>>> + +Should we go for + +\begin{verbatim} +<script type="text/javascript"><!--//--><![CDATA[//><!-- + ... +//--><!]]></script> +\end{verbatim} +\Link[http://www.hixie.ch/advocacy/xhtml]{}{}http://www.hixie.ch/advocacy/xhtml\EndLink + +\<th4 for non-private use\><<< +\:CheckOption{draw} \if:Option \:CheckOption{th4} \if:Option + \Configure{Fig} + {\ifx \AltFig\empty \Picture*{ \a:@Picture{Fig}}% + \else \Picture*[\AltFig]{ \a:@Picture{Fig}}\fi} + {\EndPicture} +\fi \fi +>>> + + +\<th4 columns\><<< +\Configure{Columns} + {\IgnorePar\EndP + \HCode{<table \Hnewline cellspacing="15"><tr style="vertical-align:top;">}} + {\HCode{</tr></table>}} + {\HCode{<td>}\ColMag{1.03}} + {\IgnorePar\EndP\HCode{</td>}} +>>> + +\<th4 index\><<< +\:CheckOption{index}\if:Option + \Configure{index} + {\bgroup + \Configure{Columns} + {\IgnorePar\EndP + \HCode{<table \Hnewline class="index" width="100\%" + cellspacing="15"><tr style="vertical-align:top;">}} + {\HCode{</tr></table>}} + {\HCode{<td>}\ColMag{1.1}} + {\IgnorePar\EndP\HCode{</td>}} + \Columns{2}\IndexFonts} + {\EndColumns \egroup} + {\bgroup\IgnorePar\EndP + \expandafter\ifx \csname prev:A\endcsname\relax + \else \hfil\break \expandafter\Tg<br />\par\IgnorePar \fi \IndexSec} + {\egroup~~~~} + {\bgroup\hfil\break\expandafter\Tg<br />~~~}{\egroup~~~~} + {~}{} + \def\Idx:ch{0} + \def\IndexSec#1{% + \tmp:cnt=`#1\relax + \ifnum \tmp:cnt>`Z\advance\tmp:cnt by -32 \fi + \ifnum \tmp:cnt<`A\else \ifnum \tmp:cnt>`Z \else + \ifnum \Idx:ch<\tmp:cnt + \bgroup + \Configure{centerline} + {\HCode{<div\Hnewline class="IndexSec">}}{\HCode{</div>}} + \leftline{\bf \char\tmp:cnt }% + \global\let\prev:A|=\:UnDef + \xdef\Idx:ch{\the\tmp:cnt}% + \egroup + \fi + \fi \fi #1% + } + \Css{.IndexSec {margin-top:1em; margin-bottom:0.5em;}} +\fi +>>> + + +\<th4 sections\><<< +\Configure{Part}{}{}{% + \html:rightskip + \bgroup + \html:rightskip \ht:everypar{} + \IgnorePar\EndP\HCode{<h1 class="PartHead">}\HtmlParOff} + {\HCode{</h1>}\HtmlParOn\IgnoreIndent \egroup\par\ShowPar \IgnoreIndent} +\Configure{LikeSection}{}{} + {\IgnorePar \EndP\HCode{<h3 class="LikeSectionHead">}} + {\HCode{</h3>}\IgnoreIndent + |<addr for Tag and Ref of Sec|>% + \par \IgnoreIndent + } +\ConfigureMark{Section} + {\theSection} +\Configure{Section} + {}{} + {\IgnorePar\EndP\HCode{<h3 class="SectionHead">}% + \gHAdvance\SectionCounter |by 1 \TitleMark\space + }{\HCode{</h3>}\IgnoreIndent + |<addr for Tag and Ref of Sec|>% + \par \IgnoreIndent + } +\Configure{SubSection} + {}{} + {\par \IgnorePar\EndP\HCode{<h3 class="SubSectionHead">}} + {\HCode{</h3>}\IgnoreIndent \ShowPar} +>>> + + + +\<th4 sections\><<< +\ConfigureMark{Chapter} + {Chapter \theChapterCounter} +\Configure{Chapter} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="ChapterHead"\a:LRdir>}% + \TitleMark{\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\IgnorePar} +\ConfigureMark{Appendix}{Appendix \theChapterCounter} +\Configure{Appendix} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="AppendixHead"\a:LRdir>}% + \TitleMark {\HCode{<br />}}} + {\HCode{</h2>}\IgnoreIndent\IgnorePar} +\Configure{LikeChapter} + {}{} + {\IgnorePar\EndP\HCode{<h2 class="LikeChapterHead"\a:LRdir>}\noindent + \bgroup \def\uppercase##1{##1}} + {\egroup \HCode{</h2>}\IgnoreIndent\IgnorePar } +>>> + +\<th4 sections\><<< +\Configure{+CutAt}{Chapter}{[}{] } +\Configure{+CutAt}{Section}{[}{] } +\Configure{+CutAt}{LikeSection}{[}{] } +\Configure{+CutAt}{SubSection}{[}{] } +>>> + + +\<th4 tocs\><<< +\ConfigureToc{Chapter} + {\HCode{<span class="ChapterToc" \a:LRdir>}} + {~} + {} + {\HCode{</span><br />}} +\ConfigureToc{Section} + {\HCode{<span class="SectionToc" \a:LRdir>}~~~} + {~} + {} + {\HCode{</span><br />}} +\ConfigureToc{LikeSection} + {} + {\HCode{<span class="LikeSectionToc" \a:LRdir>}~~~} + {} + {\HCode{</span><br />}} +\ConfigureToc{SubSection} + {} + {\HCode{<span class="SubSectionToc" \a:LRdir>}~~~~~~} + {} + {\HCode{</span><br />}} +>>> + + +\<th4 verbatim\><<< +\Configure{Verbatim} + {\ifvmode \IgnorePar\fi + \HAssign\Verb:N = 0 + \EndP\HCode{<div class="Verbatim">}} + {\IgnorePar\HCode{</div>}\par\ShowPar} + {\HAdvance\Verb:N by 1 \ifnum \Verb:N>1 \HCode{<br />}\fi} + {\:nbsp} +\Css{div.Verbatim { font-family: monospace,monospace; white-space: nowrap; }} +\Css{body .Verbatim { margin: 1em; }} +>>> + +\<th4 lists\><<< +\Configure{buttonList+} + {\ifnum \ListCounter>1 \IgnorePar\EndP\HCode{<hr\xml:empty>}\fi + \ShowPar\par\IgnoreIndent + } + {. #1\ShowPar} {\IgnorePar\EndP} {\ListCounter} +>>> + +\<th4 lists\><<< +\Configure{UList} + {\IgnorePar\EndP\def\:tempB{disc}% + \ifx\:tempA\:tempB \else \def\:tempB{square}\fi + \ifx\:tempA\:tempB \else \def\:tempB{circle}\fi + \hbox{\IgnorePar\EndP\HCode{<ul + \ifx\:tempA\:tempB type="\:tempA" \fi \:UL:>}}} + {\ht:everypar{}\EndP\HCode{</li></ul>}\ShowPar\par} + {\ifnum \ListCounter>1 \EndP\HCode{</li>}\fi \hfil\break \HCode{<li>}} +\Configure{OList} + {\IgnorePar\EndP\hbox{\HCode{<ol + \ifx \:temp\empty \else type="\:temp" \fi + \:OL:>}}} + {\ht:everypar{}\EndP + \HCode{\ifnum \ListCounter=0<li>\fi </li></ol>}\ShowPar\par} + {\ifnum \ListCounter>1 \EndP\HCode{</li>}\fi \hfil\break \HCode{<li>}} +>>> + + +\<th4 lists\><<< +\Configure{Item}{}{\par}% +\Configure{DList} + {\IgnorePar\EndP\HCode{<dl \:DL:>}} + {\ht:everypar{}\EndP\HCode{\End:dd</dl>}% + \ShowPar\par } + {\IgnorePar\EndP\ifnum \ListCounter>1 \HCode{</dd>}\fi + \HCode{<dt>}} + {\HCode{</dt><dd>}\ShowPar \def\End:dd{</dd>}\hfil\break} +\Configure{buttonList}{}{} + {}{.\ #1 }{\ListCounter} +>>> + + + +\<th4 tables\><<< +\HAssign\TableNo=0 +\Configure{HTable} + {\gHAdvance\TableNo by 1 + \ht:everypar{}\EndP\HCode{<table id="TBL-\TableNo" + \Hnewline\TABLE:\:HTable:>}% + \def\BR{\HCode{<br />}}} + {\HCode{</table>}} + {\HCode{<tr \:TR>}}{\HCode{</tr>}} + {\ht:everypar{}\HCode{<\TD:typ\TD:more\Hnewline>}} + {\EndP\ht:everypar{}\HCode{</\TD:typ>}} +\let\:HTable:|=\empty +\Configure{HTable+} + {B}{ cellspacing="0" cellpadding="3pt" frame="border" } + {<}{ style="text-align:left;" } + {>}{ style="text-align:right;" } + {-}{ style="text-align:center;" } + {^}{ style="vertical-align:top;" } + {||}{ style="vertical-align:middle;" } + {_}{ style="vertical-align:bottom;" } + {=}{ style="vertical-align:baseline;" } + {}{} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +>>> + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\section{nicefrac} +%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 nicefrac\><<< +\Configure{nicefrac} + {\HCode{<sup class="nicefrac">}} + {\HCode{</sup>}/\HCode{<sub class="nicefrac">}} + {\HCode{</sub>}} +>>> + + +\<configure html4 bibtopic\><<< +\ConfigureEnv{btSect} + {\ifvmode \IgnorePar\fi \EndP\HCode{<div class="btSect">}} + {\ifvmode \IgnorePar\fi \EndP\HCode{</div>}} + {}{} +>>> + + + + + + + + +\section{ntheorem} + +\<configure html4 ntheorem\><<< +|<32,4 ntheorem|> +>>> + +\<32,4 ntheorem\><<< +\ConfigureEnv{Anmerkung} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Anmerkung">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Beispiel} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Beispiel">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Bemerkung} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Bemerkung">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Beweis} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Beweis">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Corollary} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Corollary">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Definition} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Definition">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Example} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Example">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Korollar} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Korollar">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Lemma} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Lemma">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Proof} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Proof">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Proposition} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Proposition">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Remark} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Remark">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Satz} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Satz">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{Theorem} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="Theorem">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{anmerkung} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="anmerkung">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{beispiel} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="beispiel">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{bemerkung} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="bemerkung">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{beweis} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="beweis">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{corollary} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="corollary">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{definition} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="definition">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{example} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="example">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{korollar} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="korollar">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{lemma} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="lemma">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{proof} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="proof">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{proposition} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="proposition">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{remark} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="remark">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{satz} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="satz">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +\ConfigureEnv{theorem} + {\ifvmode\IgnorePar\fi \EndP + \HCode{<div class="theorem">}} + {\ifvmode\IgnorePar\fi \EndP \HCode{</div>}} {}{} +>>> + +\section{bussproofs} + +\<configure html4 bussproofs\><<< +\Configure{DisplayProof}{\Picture*{}}{\EndPicture} +>>> + +\section{proof} + +\<configure html4 proof\><<< +\Configure{infer}{\Picture*{}}{\EndPicture} +>>> + +\section{hyperref} + +\<config hyperref form 4\><<< +\Configure{Form} + {\IgnorePar\EndP\leavevmode \Tg<form \Hnewline \Attributes>} + {\IgnorePar\EndP\Tg</form>} +>>> + +\<configure html4 hyperref\><<< +|<config hyperref form 4|> +|<hyperref shared|> +|<hyperref TextField|> +|<hyperref multiline|> +|<hyperref password|> +|<hyperref radio|> +|<hyperref on...|> +\NewConfigure{::action}{1} +\Configure{::action} + {\edef\Attributes{\Attributes\space action="\AttributeVal"}} +\NewConfigure{::method}{1} +\Configure{::method} + {\edef\Attributes{\Attributes\space method="\AttributeVal"}} +\NewConfigure{PushButton::}{1} +\Configure{PushButton::} + {\leavevmode\Tg<input type="button" \Attributes\space/>} +\NewConfigure{Reset::}{1} +\Configure{Reset::} + {\leavevmode\Tg<input type="reset" \Attributes\space/>} +\NewConfigure{Submit::}{1} +\Configure{Submit::} + {\leavevmode\Tg<input type="submit" \Attributes\space/>} +\NewConfigure{CheckBox::}{2} +\Configure{CheckBox::} + {\leavevmode\Tg<input type="checkbox" \Attributes\space/>}{} +\NewConfigure{CheckBox::checked}{2} +\Configure{CheckBox::checked} + {\leavevmode\Tg<input type="checkbox" checked="checked" + \Attributes\space/>}{} +\HAssign\form:id=0 +>>> + +\<hyperref shared\><<< +\NewConfigure{::value}{1} +\Configure{::value} + {\edef\Attributes{\Attributes\space value="\AttributeVal"}} +\NewConfigure{::name}{1} +\Configure{::name} + {\edef\Attributes{\Attributes\space name="\AttributeVal"}} +\NewConfigure{::default}{1} +\Configure{::default} + {\let\::default=\AttributeVal} +\def\get:int#1.#2//{\tmp:cnt=#1 } +>>> + +\<\><<< +\NewConfigure{::borderwidth}{1} +\Configure{::borderwidth} + {\Css{div\#form-\form:id {border-width: \AttributeVal; + border-style:solid;}}} +\NewConfigure{::bordercolor}{1} +\Configure{::bordercolor} + {\expandafter\get:colors\AttributeVal//% + \Css{div\#form-\form:id {border-color:\AttributeVal}}} +\def\get:colors#1 #2 #3//{% + \get:color{#1}\edef\AttributeVal{\the\tmp:cnt\%}% + \get:color{#2}\edef\AttributeVal{\AttributeVal, + \the\tmp:cnt\%}% + \get:color{#3}\edef\AttributeVal{rgb(\AttributeVal, + \the\tmp:cnt\%)}% +} +\def\get:color#1{% + \tmp:dim=#1pt \multiply\tmp:dim by 100 + \expandafter\get:int\the\tmp:dim//} +>>> + + + +\<hyperref on...\><<< +\def\:tempc#1{% + \NewConfigure{::#1}{1}% + \Configure{::#1}% + {\edef\Attributes{\Attributes\space #1="\AttributeVal"}}} +\:tempc{onclick} +\:tempc{onblur} +\:tempc{onchange} +\:tempc{onclick} +\:tempc{ondblclick} +\:tempc{onfocus} +\:tempc{onkeydown} +\:tempc{onkeypress} +\:tempc{onkeyup} +\:tempc{onmousedown} +\:tempc{onmousemove} +\:tempc{onmouseout} +\:tempc{onmouseover} +\:tempc{onmouseup} +\:tempc{onselect} +>>> + +\<hyperref TextField\><<< +\NewConfigure{TextField::}{2} +\Configure{TextField::}{}{ \Tg<input type="text" \Attributes />} +\NewConfigure{TextField::width}{1} +\Configure{TextField::width} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space size="\the\tmp:cnt"}} +\NewConfigure{TextField::default}{1} +\Configure{TextField::default} + {\edef\Attributes{\Attributes\space value="\AttributeVal"}} +>>> +\<hyperref multiline\><<< +\NewConfigure{TextField::multiline}{2} +\Configure{TextField::multiline} + {} + { \Tg<textarea + \Attributes>\expandafter\set:ln\multiline:value,|<par del|>% + \global\let\multiline:value=\empty \Tg</textarea>} + +\let\multiline:value=\empty +\def\set:ln#1,#2|<par del|>{#1% + \def\:temp{#2}\ifx \:temp\empty \else + \hfil\break \def\:temp{\set:ln#2|<par del|>}% + \fi \:temp} + +\NewConfigure{multiline::value}{1} +\Configure{multiline::value} + {\let\multiline:value=\AttributeVal} + +\NewConfigure{multiline::width}{1} +\Configure{multiline::width} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space cols="\the\tmp:cnt"}} + +\NewConfigure{multiline::height}{1} +\Configure{multiline::height} + {\tmp:dim=\AttributeVal \divide\tmp:dim by 6 + \expandafter\get:int\the\tmp:dim//% + \edef\Attributes{\Attributes\space rows="\the\tmp:cnt"}} +>>> + +\<hyperref password\><<< +\NewConfigure{TextField::password}{2} +\Configure{TextField::password} + {}{\Tg<input type="password" \Attributes />} +>>> + +\<hyperref shared\><<< +\def\Default:Checked#1{% + \ifx #1\Un:Def \let\:temp=\empty \else + \let\:temp=\relax + \let\:tempa=\relax + \edef\:temp{\def\:temp####1#1#1####2//{\def\:temp{####2}}% + \:temp \AttributeVal #1=#1#1//% + \def\:tempa####1=####2//{\def\noexpand\AttributeVal{####1}}% + \:tempa\AttributeVal=//}% + \:temp + \fi +} +>>> + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::radio}{5} +\Configure{ChoiceMenu::radio} + {\IgnorePar\EndP\leavevmode + \Tg<div id="form-\form:id">\gHAdvance\form:id by 1 } + { }{\IgnorePar\EndP\Tg</div>} + {\Default:Checked\radio::default + \Tg<input\Hnewline type="radio" + \ifx \:temp\empty\else checked="checked" \fi + \Attributes\space />} + {} +\NewConfigure{radio::default}{1} +\Configure{radio::default} + {\let\radio::default=\AttributeVal} +>>> + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::combo}{5} +\Configure{ChoiceMenu::combo} + {} + {~\Tg<select\Hnewline \Attributes \Hnewline size="1">} + {\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} + {\Tg</option>} +\NewConfigure{combo::default}{1} +\Configure{combo::default} + {\let\combo::default=\AttributeVal} +>>> + +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::popdown}{5} +\Configure{ChoiceMenu::popdown} + {}{\HCode{\Hnewline <select \Attributes \Hnewline size="1">}} + {\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} {\Tg</option>} +>>> + +The \verb'size="1"' makes the select a popout memnu +\<hyperref radio\><<< +\NewConfigure{ChoiceMenu::}{5} +\Configure{ChoiceMenu::} + {}{\HCode{\Hnewline <select\Hnewline \Attributes>}}{\Tg</select>} + {\Tg<option \ifx\::default\AttributeVal selected="selected"\fi + \Hnewline>} {\Tg</option>} +\NewConfigure{::menulength}{1} +\Configure{::menulength} + {\edef\Attributes{\Attributes\space size="\AttributeVal"}} +>>> + + +\<configure html4 hyperref\><<< +\ifx \@baseurl\@empty \else + \Configure{@HEAD} + {\HCode{<base href="\:baseurl" />}} + \let\:baseurl\@baseurl + \let\@baseurl=\@empty +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{web} +%%%%%%%%%%%%%%%%%%%% + +\<configure html4 web\><<< +\Configure{webversion} {\\} {} +\Configure{webuniversity} + {\Tg<div class="webuniversity">} {\Tg</div>} +\Css{div div.webuniversity {color : rgb(0\%,0\%,80\%); + margin-bottom: 1em; text-align: center;}} + +\Configure{maketitle} + {\IgnorePar\EndP\par\Tg<div class="maketitle">} + {\IgnorePar\EndP\par\Tg</div>} +\Css{div.maketitle {text-align: center; + margin-left: 3em; margin-right: 3em; }} + +\Configure{HColor}{webgreen}{rgb(0\%,50\%,0\%)} +\Configure{HColor}{webbrown}{rgb(60\%,0\%,0\%)} +\Configure{HColor}{webyellow}{rgb(98\%,92\%,73\%)} +\Configure{HColor}{webgray}{rgb(75.3\%,75.3\%,75.3\%)} +\Configure{HColor}{webblue}{rgb(0\%,0\%,80\%)} +>>> + +\section{exerquiz} + +\<configure html4 exerquiz\><<< +|<32,4 exerquiz|> +|<4 exerquiz|> +>>> + +% Edit 2021: The JavaScript stuff defined in exerqz.4ht +% respective it's HTML configuration below doesn't work +% at all. It even results in fatal compilatio error. +% I've removed the following line that introduces +% this JavaScript code. + +%\Configure{@HEAD}{\input exerqz.4ht } + +\<32,4 exerquiz\><<< +\Configure{Form}{}{} +\Css{.onClick {color:green;}} +\Configure{TextField::}{}{% + \IgnorePar \EndP + \HCode{<form action="." name="form\quiz@total"><input + type="text"\Hnewline \Attributes /></form>}% +} +\Configure{javascript}{JavaScript:} +>>> + +\<32,4 exerquiz\><<< +\ifx \eq@sqrtmsg\:UnDef + \def\eq@sqrtmsg{"Right!"} +\fi +\ifx \eq@sqwgmsg\:UnDef + \def\eq@sqwgmsg{"Wrong!"} +\fi +\Configure{shortquiz} + {(\alph{quizno})} + {alert(\eq@sqrtmsg,3);} + {alert(\eq@sqwgmsg,3);} +\Configure{quiz} + {(\alph{quizno})} + {qthis=this; + ProcessQuestion (\ANS,"\alph{quizno}",\thequestionno, + 1,"\eq@bqlabel",\Quiz:N)} + {InitializeQuiz("\quiz@total", + \ifeq@nocorrections0\else1\fi,\Quiz:N,\LikeRef{ans-\Quiz:N}, + "(",")")} + {QuizEnd("\:bqlabel",\thequestionno,"\quiz@total",\Quiz:N)} + {Corrections("\eq@RC","\eq@AC",\Quiz:N)} +\Configure{quiz*} + {[]} + {qthis=this; + ProcessQuestion (\ANS,"[]",\thequestionno, + 0,"\eq@bqlabel",\Quiz:N)} + {InitializeQuiz("\quiz@total", + \ifeq@nocorrections0\else1\fi,\Quiz:N, + \LikeRef{ans-\Quiz:N},"","")} +>>> + +\<-NOPE\><<< +\Configure{quiz*} + {qthis=this; + ProcessQuestion(\ANS,"\alph{quizno}",\thequestionno, + 0,"\eq@bqlabel",\Quiz:N)} +>>> + + +\<32,4 exerquiz\><<< +\ConfigureEnv{shortquiz} + {\IgnorePar\EndP\leavevmode} {} {}{} +\Configure{ReturnTo}{\begin{flushright}}{\end{flushright}} +>>> + +\<4 exerquiz\><<< +\ConfigureList{questions}% + {\EndP\HCode{<ol type="1" class="questions"\Hnewline + >}|<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</li></ol>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark} + {\HCode{<li class="questions">}\AnchorLabel} +>>> + + + +\<4 exerquiz\><<< +\def\a:temp#1#2{% + \ifOption{#2}{\def\a:charset{#2}}{} + \def\:tempa{#1}\ifx \eqOutOf\:tempa + \def\A:charset{#2}\ifx \A:charset\empty\else + \def\A:charset{#2}% + \fi\fi} +\a:temp{sur}{charset=iso-8859-2} +\a:temp{von}{charset=iso-8859-2} +>>> + + + +\<exerqz\><<< +% exerqz.4ht (|version), generated from |jobname.tex +% Copyright 2009-2015 TeX Users Group +% Copyright |CopyYear.1999. Eitan M. Gurari, Donald P. Story +|<TeX4ht copywrite|> +|<exerqz's vars|> +|<predefined exerquiz javascript|> +>>> + +\<predefined exerquiz javascript\><<< +\JavaScript-$ +var QuizInitialized; +var EndQuizPushed; +var CurrentQuizNo; +var Responses; +var ResponsesAddr; +var Cor; +var CorAddr; +var qthis; +var prev_notify; +function InitializeQuiz(qtfield,mark,quizN,ansN,lbrc,rbrc) { + Score=0; + QuizInitialized=1; + CurrentQuizNo=quizN; + eval( 'document.form'+qtfield+'.'+qtfield+'.value="$eqScore";' ) + RightWrong=new Array(); + |<hide sol|> + Responses=new Array(); + ResponsesAddr=new Array(); + |<hide cor|> + Cor=new Array(); + CorAddr=new Array(); + EndQuizPushed=0; + for(var i=1; i<=ansN; i++){ + RightWrong[i]=0; + } +} +\EndJavaScript +>>> + +\<show sol\><<< +if( ResponsesAddr[probno] != null ){ + if (notify == 0 ) { + ResponsesAddr[probno].value=Responses[probno]; + } else { + ResponsesAddr[probno].value="("+Responses[probno]+")"; +} } +qthis.value = "#"; ResponsesAddr[probno]=qthis; +>>> + +\<hide sol\><<< +for(var i in Responses){ + if (prev_notify == 0 ) { + ResponsesAddr[i].value=Responses[i]; + } else { + ResponsesAddr[i].value="("+Responses[i]+")"; +} } +>>> + +% if( Responses != null ){ +\<record cor\><<< +var k=Cor.length; +eval('Cor[k]=thisform'+quizN+'.ans'+quizN+'x'+i+'.value'); +eval('CorAddr[k]=thisform'+quizN+'.ans'+quizN+'x'+i); +>>> +\<hide cor\><<< +for(var i in Cor){ + CorAddr[i].value=Cor[i]; +} +>>> + +% if( Cor != null ){ + +\<predefined exerquiz javascript\><<< +\JavaScript +function href(addr) { top.location.href=addr; } +\EndJavaScript +>>> + +% function href(addr) { window.navigate(addr); } + + +\<predefined exerquiz javascript\><<< +\JavaScript +function Corrections(lbl1,lbl2,quizN) { + if ( (EndQuizPushed == 1) && ( CurrentQuizNo == quizN ) ){ + for(var i in RightWrong){ + if( (RightWrong[i]==0) ){ + |<record cor|> + eval('thisform'+quizN+'.ans'+quizN+'x'+i+'.value= "*"'); + } } +} } +\EndJavaScript +>>> + +\<32,4 exerquiz\><<< +\writesixteen{% +***********************************************************\Hnewline +The `\eq@CA' button fails under Netscape, \Hnewline +due to a code of the following form.\Hnewline +\Hnewline +<html><head><title>?\Hnewline +\space \Hnewline +\space \space \space \Hnewline +\Hnewline +\space \space \Hnewline +\space \space \space \Hnewline +\space \space \space \Hnewline +\space \space \space \Hnewline +\Hnewline + \Hnewline + \Hnewline + \Hnewline +\Hnewline +If you know how to fix the function f() above for Netscape,\Hnewline +without changing the id attribute names, please consider\Hnewline +emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline +***********************************************************} +>>> +\<<< +\JavaScript +function LinkTo(addr) { +} +\EndJavaScript +>>> + +\<<< +\def\eqXInitQuizMsg{\hbox{% + \let\noexpand|=\string + \csname eq@InitQuizMsg\endcsname}} +\expandafter\ifx \csname eq@InitQuizMsg\endcsname\relax + \expandafter\def\csname eq@InitQuizMsg\endcsname{ + "You must initialize the Quiz! Click on "+bqlabel} +\fi +\def\eqXQuizTotalMsg{\hbox{% + \let\noexpand|=\string + \def\thequestionno{"+thequestionno+"}% + \csname eq@QuizTotalMsg\endcsname}} +\expandafter\ifx \csname eq@QuizTotalMsg\endcsname\relax + \expandafter\def\csname eq@QuizTotalMsg\endcsname{"Score: ' + +Score +' out of '+thequestionno+'"} +\fi +\def\eqXMadeChoice{\hbox{% + \let\noexpand|=\string + \csname eq@MadeChoice\endcsname}} +\expandafter\ifx \csname eq@MadeChoice\endcsname\relax + \expandafter\def\csname eq@MadeChoice\endcsname{ + "You have already made a choice. Your choice was (" + +Responses[probno]+")." + +" Do you want to change it?"} +\fi +\expandafter\ifx \csname eqScore\endcsname\relax + \def\eqScore{Score:} +\fi +>>> + +The \verb'Wollen Sie dies \noexpand\344ndern?' is a problem because it +takes the \verb'\344' into \verb'44'. A \verb'\string' will properly +produce \verb'\344'; hence, the above dirty trick. + +\begin{verbatim} +Doesn't IE escape in the way that Acrobat JavaScript does? + +Another possibility is to use String.fromCharCode() + +Convert Octal \344 to decimal 228, then use +String.fromCharCode(228) + + + How to deliver browser specific content using JavaScript + + + + +\end{verbatim} + +\<<< +\JavaScript-$ +function QuizEnd(bqlabel,thequestionno,quiztotal,quizN){ + if ((QuizInitialized !=1) |||| ( CurrentQuizNo!= quizN )){ + alert($eqXInitQuizMsg,3); + } else { + eval( 'document.form'+quiztotal+'.'+quiztotal+ + '.value=$eqXQuizTotalMsg'); + QuizInitialized=-1; + EndQuizPushed=1; +} } +\EndJavaScript + +\JavaScript-$ +function ProcessQuestion + (key,letterresp,probno,notify,bqlabel,quizN) { + if ((QuizInitialized !=1) |||| ( CurrentQuizNo!= quizN )){ + alert($eqXInitQuizMsg,3); + } else { + | + prev_notify = notify; +} } +\EndJavaScript +>>> + +\<<< +if (Responses[probno] == null) { + if (key==1) { + Score++; + RightWrong[probno]=1; + } + else + RightWrong[probno]=0; + | + Responses[probno]=letterresp; +} +else { + if (notify==0) + User=true; + else + User=confirm($eqXMadeChoice); + if (User) { + if (RightWrong[probno]==1) { + if (key==0) { + Score -= 1; + RightWrong[probno]=0; + | + Responses[probno]=letterresp; + } + } + else { + if (key==1) { + Score++; + RightWrong[probno]=1; + | + Responses[probno]=letterresp; + } + else { + RightWrong[probno]=0; + | + Responses[probno]=letterresp; + } + } + } +} +>>> + + + + + + + + + + + +\section{tex4ht} + +\<<< +\Configure{TITLE+}{\HCode{\jobname.\:html}} +>>> + +\<0,32,4 latex\><<< +\ifTag{TITLE+}{\Configure{TITLE+}{\LikeRef{TITLE+}}}{} +>>> + +Was \verb'\ifTag{TITLE+}{\Configure{TITLE+}{\HCode{\LikeRef{TITLE+}}}}{}', +but the \verb'\HCode' leaves \verb'\Protect' in for the latter comamnds which arrive +to the title--the original motivation for the \verb'\HCode' was to +protect the title from undesirable tags. Something like \verb+H\`ello+ can +send it. It now sems to be more trouble than help. + + + + +\<config tex4ht\><<< +|<0,32,4 preambles|> +\ifx \a:FontCss:\:UnDef + \Configure{FontCss}{Font\string_Css##1} + {Font\string_Css\string_Plus\space##1} +\fi +\expandafter\ifx \csname aa:Css\endcsname\relax + \Configure{Css}{Css: ##1} +\fi +\:CheckOption{edit} \if:Option + \Configure{edit}{\HCode{<strong><}}{\HCode{></strong>}} + {<strong><}{></strong>} +\fi +\:CheckOption{hooks++} \if:Option +\else \:CheckOption{hooks+} \if:Option +\else \:CheckOption{hooks} \if:Option +\fi\fi\fi +\if:Option + \Configure{hooks} + {\HCode{<strong class="hooks"><}}{\HCode{></strong>}}{}{} +\fi +\Configure{ExitHPage}{exit}{exit }{} +\Configure{TocLink}{\Link{#2}{#3}#4\ifvmode\IgnorePar\fi\EndLink} +\Configure{MiniHalign}{\hlg:a}{\hlg:b}\hlg:c\hlg:d{\hlg:e}\hlg:f +\:CheckOption{no-halign} \if:Option \else + \Configure{noalign-}{}{} +\fi +\Configure{PictureAlt*+} + {\let\sv:HtmlPar|=\HtmlPar \let\HtmlPar|=\empty + |<postscript for /Picture|>% + |<tex halign and cr/crcr|>% + \NoFonts\csname PauseMathClass\endcsname \SUBOff \SUPOff + \let\HCode|=\:gobble |%\offinterlineskip|% + \let\EndPicture|=\empty} + {\let\HCode|=\:HCode + \let\EndPicture|=\:UnDef \let\HtmlPar|=\sv:HtmlPar \SUBOn \SUPOn + \csname EndPauseMathClass\endcsname \EndNoFonts + |<tex4ht halign and cr/crcr|>% + |<delay postscript|>} + +|<external scripts and styles|> +|<external web fonts|> +>>> + + +Was \verb+\SUBOff \SUPOff+. Any problems? + +\<postscript for /Picture\><<< +\def\PsCode##1{{\ht:special{\PsCodeSpecial##1}}}% +>>> + +\<tex halign and cr/crcr\><<< +\iffalse{\fi +\let\sv:halign|=\halign +\let\sv:cr|=\cr +\let\sv:crcr|=\crcr +\iffalse}\fi +\RecallTeXcr \let\halign |=\TeXhalign +>>> + +\<tex4ht halign and cr/crcr\><<< +\iffalse{\fi +\let\halign|=\sv:halign +\let\cr|=\sv:cr +\let\crcr|=\sv:crcr +\iffalse}\fi +>>> + +\<delay postscript\><<< +\let\PsCode|=\relax +>>> + +\<config tex4ht\><<< + \Configure{writetoc}{} +>>> + +\<config tex4ht\><<< +\Configure{CutAtTITLE+}{} +\Configure{HPageTITLE+}{} +\Configure{AtBeginDocument} + {\edef\recallcatcodes{% + \catcode`\noexpand\_|=\the\catcode`\_ + \catcode`\noexpand\^|=\the\catcode`\^ }% + \catcode`\_=8\catcode`\^=7} + {\recallcatcodes} +>>> + +\<config tex4ht\><<< +\Configure{crosslinks}{[}{] + }{next}{prev}{prev-|<tail|>}{front}{tail}{up} +\:CheckOption{next} \if:Option + \Configure{next+} + {\ShowPar\par\noindent \HCode{<span class="next">}[} + {]\HCode{</span>}} + \Css{@media print {span.next {visibility:hidden;}}} +\fi + +\Configure{halignTB}{\HCode{<table }}{\HCode{>}} +\def\R:HA{\HCode{<tr \Hnewline}\halignTR\HCode{>}} +\def\r:HA{\HCode{</tr>}} +\def\D:HA{|<td save EndP|> \HCode{<td + \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline>}\ShowPar\par} +\def\d:HA{\ifvmode \IgnorePar \fi \EndP\HCode{</td>}|<td recall EndP|>} +\Configure{HVerbatim+}{\z@}{\:nbsp} +\Configure{CssFile}{\jobname.css} + {/* \aa:CssFile\space from \jobname.tex (TeX4ht) */} +\Configure{Picture+}{}{} +\Configure{Picture*}{}{} +\Configure{Picture-alt}{[Picture]} +\Configure{Needs}{l. + \the\inputlineno\space--- needs --- #1 ---} +\Configure{Needs-}{l. + \the\inputlineno\space--- needs --- #1 ---} +|<yes css|> +>>> + + +\<td save EndP\><<< +\SaveEndP +>>> + +\<td recall EndP\><<< +\RecallEndP +>>> + + + +\<config tex4ht\><<< +\Configure{moveright}{\leavevmode\endgraf } +% print x only outside \Picture+ +\Configure{HChar}{\ifx\EndPicture\:UnDef x\fi} +>>> + + +\<yes css\><<< + \def\SPAN:#1{\HCode{<span class="#1">}} + \def\EndSPAN:{\HCode{</span>}} + \def\DIV:#1{\HCode{<div class="#1">}} + \def\EndDIV:{\HCode{</div>}} +>>> + + + +\section{Interpretation for the Entries} + + + + +Use \verb'\ ', and not \verb'~', in style files, because some +users redefine the latter macro. + +\<html latex tocs\><<< +%\def\:SPAN#1#2{\HCode{<span class="#1">}#2\HCode{</span>}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{latin1.def} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html4 SIunits\><<< +\Configure{degree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + +\<configure html4 cp852\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<configure html4 cp850\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<configure html4 cp862\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<configure html4 cp1250\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<configure html4 cp1252\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + + + +\<configure html4 cp437\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + + +\<configure html4 cp437de\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<configure html4 cp1256\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<configure html4 cp865\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + +\<configure html4 8859-6\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<configure html4 latin1\><<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +\def\HTitleText#1{% + \bgroup + \uccode`\~#1% + \uppercase{% + \egroup + \edef~{\string~}% + }% +} +\Configure{@TITLE} + {\DeclareInputText{168}{"}% + \HTitleText{209}% + \HTitleText{194}% + \HTitleText{210}% + \HTitleText{195}% + \HTitleText{211}% + \HTitleText{196}% + \HTitleText{212}% + \HTitleText{197}% + \HTitleText{213}% + \HTitleText{198}% + \HTitleText{214}% + \HTitleText{199}% + \HTitleText{215}% + \HTitleText{200}% + \HTitleText{216}% + \HTitleText{201}% + \HTitleText{217}% + \HTitleText{202}% + \HTitleText{218}% + \HTitleText{203}% + \HTitleText{219}% + \HTitleText{204}% + \HTitleText{220}% + \HTitleText{205}% + \HTitleText{221}% + \HTitleText{206}% + \HTitleText{222}% + \HTitleText{207}% + \HTitleText{223}% + \HTitleText{224}% + \HTitleText{240}% + \HTitleText{225}% + \HTitleText{241}% + \HTitleText{226}% + \HTitleText{242}% + \HTitleText{227}% + \HTitleText{243}% + \HTitleText{228}% + \HTitleText{244}% + \HTitleText{229}% + \HTitleText{245}% + \HTitleText{230}% + \HTitleText{246}% + \HTitleText{231}% + \HTitleText{247}% + \HTitleText{232}% + \HTitleText{248}% + \HTitleText{233}% + \HTitleText{249}% + \HTitleText{234}% + \HTitleText{250}% + \HTitleText{235}% + \HTitleText{251}% + \HTitleText{236}% + \HTitleText{252}% + \HTitleText{237}% + \HTitleText{253}% + \HTitleText{238}% + \HTitleText{254}% + \HTitleText{239}% + \HTitleText{255}% +} +>>> + +\<configure html4 latex\><<< +\def\:tempc{\special{t4ht@+\string&{35}xAE{59}}x} +\HLet\textregistered\:tempc +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{syntax} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html4 syntax\><<< +\ConfigureEnv{grammar} + {\Picture*{}} {\EndPicture} + {}{} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{???????????} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<article,report,book\><<< +|<quotations|> +\Configure{listof}{}{}{}{\HCode{<br />}}{}{ } +>>> + +\<quotations\><<< +\ConfigureEnv{quotation} + {}{} + {\IgnorePar\EndP\HCode{<blockquote class="quotation">}} + {\IgnorePar\EndP\HCode{</blockquote>}\ShowPar} +>>> +% Browsers can handle quotation better +% \Css{.quotation {margin-bottom:0.25em; +% margin-top:0.25em; margin-left:1em; }} + + + + + + + + + + + + + + + + +\<PICT dot tabbing\><<< +\:CheckOption{pic-tabbing'} \if:Option + \edef\:temp{\LikeRef{|<tabbing tag|>.}}% + \def\:tempa{.}\ifx \:temp\:tempa + \ConfigureEnv{tabbing}{\Picture*{}}{\EndPicture}{}{} + \fi +\fi +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%% +\section{titlesec} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure html4 titlesec\><<< +\ifx \ttl@assign@ii\:Undef + |<pre 2005 titlesec|> +\fi +>>> + + +\<pre 2005 titlesec\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \csname thetitlesection\endcsname\fi} +\Configure{section}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="sectionHead"\a:LRdir>} + \TitleMark\space} + {\HCode{</h3>}\IgnoreIndent\par \ShowPar} +\Configure{likesection}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="likesectionHead"\a:LRdir>}} + {\HCode{</h3>}\IgnoreIndent\par \ShowPar} +>>> + + + + + + + +\section{fontmath.ltx} + + +\<configure html4-math fontmath\><<< +|<32,4 picmath: plain, fontmath, amsmath, amstex1|> +|<picmath plain,fontmath|> +|<html4-math plain,fontmath|> +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\section{tex4ht} +%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html4-math tex4ht\><<< +|<32,4 picmath tex4ht|> +\Configure{PicMath}{}{}{}{ class="math" } +\Css{img.math{vertical-align:middle;}} +|<contribute to picmath of 4.0t|> +>>> + + +% \Configure{$$} +% {\:xhtml{\IgnorePar\EndP}% +% \HCode{<div class="displaymath">}} +% {\HCode{</div>}|<try env inline par|>} {} +% \Css{div.displaymath{text-align:center;}} + + + + +\<try env inline par\><<< +\ShowPar +>>> + +\<try inline par\><<< +\ShowPar \par{\HCondtrue\noindent}% +>>> + + + +\<32,4 picmath tex4ht\><<< +\:CheckOption{no_^} +\if:Option \else \:CheckOption{no_}\fi +\if:Option \else + \Configure{SUB} + {\HCode{<sub>}}{\HCode{</sub>}} +\fi +\:CheckOption{no_^} +\if:Option \else \:CheckOption{no^}\fi +\if:Option \else + \Configure{SUP} + {\HCode{<sup>}}{\HCode{</sup>}} +\fi +\:CheckOption{no_^} + \if:Option \else \:CheckOption{no_}\fi + \if:Option \else \:CheckOption{no^}\fi +\if:Option \else + \Configure{SUBSUP} + {\HCode{<sub>}}{\HCode{</sub><sup>}}{\HCode{</sup>}} +\fi +\Configure{left} + {\Picture+{ \a:@Picture{left}}} + {\aftergroup\EndPicture } +\Configure{mathchoice}{\PictureOff}{\PictureOn} +>>> + + +\verb'\endgraf' is safer than \verb'\par', because the latter may be redefined. +For instance, see p 262 in texbook. + +\<configure html4-math tex4ht\><<< +\let\MathPar|=\empty +\Configure{PicDisplay} + {\edef\MathPar{\ifvmode par-\fi}\IgnorePar\endgraf\EndP + \HCode{<div class="\MathPar math-display" \a:LRdir >}} + {\HCode{</div>}\par\ShowPar} {} {class="\MathPar math-display" } +\Css{div.par-math-display, div.math-display{text-align:center;}} +>>> + +% \Css{img.mathdisplay, div.displaymath, img.par-mathdisplay, +% div.par-displaymath { margin-top: 1em; +% margin-bottom: 1em; }} +% \Css{center img.mathdisplay, td img.mathdisplay, +% center img.par-mathdisplay, +% td img.par-mathdisplay { margin-top: 0; +% margin-bottom:0 ; }} +% + + + + + + + + +\<temp hcode accents\><<< +\HCode{&\expandafter \ifx\csname U#2#1\endcsname\relax + #2#1\else \#x\csname U#2#1\endcsname\fi;}% +>>> + + + +\<xmlns\><<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + + + + + +\subsection{TeX Engine} + + +The \verb'\trap:base' is to catch empty bases of exponents like, e.g., +in \verb'$a^{^b}$'. + + + + +\<?\><<< +\def\MathRow#1{% + \Configure{\expandafter\:gobble\string#1*}{*}% + {<|.mrow\Hnewline + class="\expandafter\:gobble\string#1">}{</|.mrow>}% + {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}% +>>> +\<recall dvimath par\><<< +\sv:ignore +>>> + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +The \verb'\MathRow' requests a \verb'<|.mrow\Hnewline>...</|.mrow>', instead of the contributions +of \verb'\mathop', \verb'\mathrel',...., for the next parameter. + + + + + + +\subsection{latex.ltx} + + + + + +Definitions like \verb'\def\mathbf#1{\a:mathbf#1\b:mathbf}' +can't be done on a global level, because \verb'\mathbf' is just +a name of a font. So, for instance, \verb'\bf' expands to \verb'\mathbf', +and so \verb'$\bf R$' indirectly brings up the latter command. + + + + + +\subsection{Palin + LaTeX} + +The default \verb'\left' and \verb'\right' in their default definition +with tex produce multi-part delimiters, from cmex, on large +subformulas. Hence, the `'.' below is needed. + + + +% \def\:tempa{\{}\ifx \:tempa\:DEL \let\:DEL\lbrc: \else +% \def\:tempa{\}}\ifx \:tempa\:DEL \let\:DEL\rbrc: \else +% \def\:tempa{<}\ifx \:tempa\:DEL \def\:DEL{\string<}\else +% \def\:tempa{>}\ifx \:tempa\:DEL \def\:DEL{\string>}% +% \fi\fi\fi\fi } +% \edef\lbrc:{\string{} \edef\rbrc:{\string}} + +% \HCode{\string#1;}% + +\section{Eqnarray} + +Had `BASELINE' before `MIDDLE', but changed to conform with math +in page 252-- in intro to theory book. + + + +\section{Big, BIG, ....} + +The +\verb'\special{t4ht@[}...\special{t4ht@]}' gobble the enclosed stuff. +The external pair is provided as grouping mechanism for +sub/super-scripts cases like \verb'\bigl(...\bigr)^x' within dvimath +mode. The \verb'{\HCode{}}' is neded for creating content delimiters +\verb'.' delimiters like in \verb'$\bigl. a_b \bigr)$'; without that mathml +gets something wrong there. +\verb+\bigl{.}+ et al produce empty para,etr , hence the \verb+\:EMPTY+ is a ompensation for such cases. + + + + + +\section{Exams} + + + +\<configure html4 exam\><<< +\ifx \ps@examheadings\:unDef \else + |<Meers' exam|> +\fi +\ifx \@checkqueslevel\:unDef \else + |<Hirschhorns' exam|> +\fi +\ifx \@OneKeyHook\:unDef \else + |<Alexanders' exam|> +\fi +>>> + + +\<Hirschhorns' exam\><<< +\Configure{uplevel} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="uplevel">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +\Configure{fullwidth} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="fullwidth">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +\Css{dl .uplevel, .fullwidth{margin-left:-2.5em;}} +\Css{dl dl .fullwidth {margin-left:-5em;}} +\Css{dl dl dl .fullwidth {margin-left:-7.5em;}} +>>> + +\<Hirschhorns' exam\><<< +\ConfigureEnv{questions} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="questions">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +\ConfigureEnv{parts} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="parts">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +\ConfigureEnv{subparts} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="subparts">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +>>> + + +\<Hirschhorns' exam\><<< +\Configure{setpoints} + {\HCode{<span class="setpoints">}} {\HCode{</span>}} +>>> + + + + +\<Meers' exam\><<< +\ConfigureEnv{exam} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="exam">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +\ConfigureEnv{problem} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="problem">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +\Css{.problem{border-bottom: 1px solid black;}} +\Configure{scorebox} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="scorebox">} + \bgroup\Configure{fbox}{\leavevmode}{}} + {\egroup\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +\Css{.scorebox{margin-left:90\%; border: 1px solid black;}} +>>> + + +\<Alexanders' exam\><<< +\Configure{sectiontitle} + {\ifvmode\IgnorePar\fi + \EndP \HCode{<h4 class="sectiontitle">}\IgnorePar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</h4>}} +>>> + +\<Alexanders' exam\><<< +\Configure{answer} + {\HCode{<span class="answer">}} {\HCode{</span>}} +\Css{.answer {text-decoration:underline;}} +\Configure{question} + {\HCode{<span class="question">}} {\HCode{</span>}} +>>> + +\<Alexanders' exam\><<< +\Configure{instructions} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="instructions">}} + {\IgnorePar\EndP \HCode{</div>}} +>>> + + +\<Alexanders' exam\><<< +\ConfigureEnv{examtop} + {\ifvmode \IgnorePar \fi \EndP \HCode{<table class="examtop"><tr><td>}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</td></tr></table>}} + {}{} +\Configure{namedata} + {\ifvmode \IgnorePar \fi \EndP + \Configure{newline}{\HCode{</td><td\Hnewline + class="namedata-rule"><hr /></td></tr><tr><td>}}% + \HCode{</td><td><div class="namedata"><table><tr><td>}} + {\ifvmode \IgnorePar \fi \EndP + \HCode{</td><td + class="namedata-rule"><hr /></td></tr></table></div>}} +\Css{td.namedata-rule {width:10em; vertical-align:bottom; }} +\Css{div.namedata{text-align:right;}} +\Configure{classdata} + {\ifvmode \IgnorePar \fi \EndP \HCode{<h3 class="classdata">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</h3>}} +>>> + + + +\<Alexanders' exam\><<< +\ConfigureEnv{keytop} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="keytop">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} + {}{} +>>> + + +\<Alexanders' exam\><<< +\Configure{frontmatter} + {\ifvmode \IgnorePar \fi \EndP \HCode{<div class="frontmatter">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}} +>>> + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Gloss} +%%%%%%%%%%%%%%%%%% + +\<configure html4 gloss\><<< + |<2002 gloss|> +\ConfigureList{glosslist}{}{}{}{} +\Css{dl.glosslist {margin-left:2em;}} +>>> + + + +\<2002 gloss\><<< +\:CheckOption{mouseover} \if:Option + |<onmouseover gloss|> + |<onmouseover gloss list|> +\else + \Configure{gloss} {\Link} {\EndLink} + |<default gloss list|> +\fi +>>> + + +\<default gloss list\><<< +\Configure{glosslist}% + {\IgnorePar\EndP + \HCode{<dl \a:LRdir class="glosslist">}\global\let\end:glitm=\empty} + {\IgnorePar\EndP\HCode{</dd></dl>}\ShowPar} + {\end:glitm\gdef\end:glitm{\EndP\Tg</dd>}\HCode{<dt + class="glosslist">}% + } + {\HCode{</dt><dd\Hnewline class="glosslist">}} +>>> + + + +\<onmouseover gloss list\><<< +\Configure{glosslist}% + {\IgnorePar\EndP + |<start js|>% + \HCode{<dl \a:LRdir class="glosslist">}\global\let\end:glitm=\empty} + {\IgnorePar\EndP |<js Until gl|>% + \HCode{</dd></dl>}\ShowPar} + {\end:glitm + \gdef\end:glitm{\EndP |<js Until gl|>\Tg</dd>}% + \HCode{<dt class="glosslist">}% + } + {\HCode{</dt><dd\Hnewline class="glosslist">}% + |<js From gl|>% + } +\Configure{GlossAnchor} {\g:Link} {\EndLink} +\def\g:Link#1#2{\edef\mog:anchor{#2}\Link{}{#2}} +>>> + + + + +\<js From gl\><<< +\HCode{<!--} +\ht:special {t4ht@DCopyTo: \jobname-js.tex From gl }% +\HCode{<gloss>} +\HCode{\expandafter\jsHash + \expandafter{\mog:anchor}=<div class="js">}% +\ht:special {t4ht@DCopyTo: \jobname-js.tex Skip gl }% +\HCode{-->} +\ht:special {t4ht@DCopyTo: \jobname-js.tex Cont gl }% +>>> + +\<js Until gl\><<< +\ht:special {t4ht@DCopyTo: \jobname-js.tex Skip gl }% +\HCode{<!--} +\ht:special {t4ht@DCopyTo: \jobname-js.tex Cont gl }% +\HCode{</div></gloss>} +\ht:special {t4ht@DCopyTo: \jobname-js.tex Skip gl }% +\HCode{-->} +\ht:special {t4ht@DCopyTo: \jobname-js.tex Cont gl }% +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until gl }% +>>> + + + + + + +\<onmouseover gloss\><<< +\Configure{gloss} + {\HCode{<span class="gloss">}% + |<start js|>% + |<mouseover-gloss arguments|>% + \expandafter\Link\expandafter[\:temp]} + {\EndLink \HCode{</span>}} +\expandafter\def\csname c:mouseover-gloss:\endcsname{% + \def\:tempb{gloss}\csname c:mouseover-?:\endcsname} +\Configure{mouseover-gloss}{tex4ht.body,FULLHTML} +>>> + + +\<mouseover-gloss arguments\><<< +\edef\:temp{\noexpand\mo:args + {gloss}% + {\gls@name ::\gls@b}% + {\noexpand\jsHash {\gls@name ::\gls@b}}}% +>>> + + + + +\<pre 2002 gloss\><<< +\Configure{gloss} {\Link{\gls@b}{}} {\EndLink} +\Configure{glosslist}% + {\IgnorePar\EndP + \HCode{<dl \a:LRdir class="glosslist">}\global\let\end:glitm=\empty} + {\IgnorePar\EndP\HCode{</dd></dl>}\ShowPar} + {\end:glitm\gdef\end:glitm{\EndP\Tg</dd>}\HCode{<dt + class="glosslist">}\Link{}{\GlossLabel}\EndLink } + {\HCode{</dt><dd\Hnewline class="glosslist">}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Etc} +%%%%%%%%%%%%%%%%%% + + +\<configure html4 rotating\><<< +\ConfigureEnv{turn} + {\Picture+{}} {\EndPicture} + {}{} +>>> + + +\<configure html4 manju\><<< +\Configure{@TITLE}{\let\@title=\empty} +>>> + + + + +\<configure html4 mls\><<< +\Configure{@TITLE}{\let\@title=\empty} +>>> + + + + + + + + + + +\<configure html4 ulem\><<< +\Configure{uline} + {\HCode{<span class="uline">}} {\HCode{</span>}} +\Css{.uline{ text-decoration:underline; }} +\Configure{uuline} + {\HCode{<span class="uuline">}} {\HCode{</span>}} +\Css{.uuline{ text-decoration:underline; }} +\Configure{sout} + {\HCode{<span class="sout">}} {\HCode{</span>}} +\Css{span.sout {text-decoration: line-through }} +\Configure{xout} + {\HCode{<span class="xout"><span class="underline">}} + {\HCode{</span></span>}} +\Css{span.xout {text-decoration: line-through }} +\Configure{uwave} + {\HCode{<span class="uwave">}} + {\HCode{</span>}} +\Css{span.uwave {text-decoration:underline }} +>>> + + + + + + +\<configure html4 go\><<< +\Configure{showdiagram} + {\Picture*[go]{}} {\EndPicture} +>>> + + + + + + +\<configure html4 pifont\><<< +\ConfigureList{dingautolist} + {\EndP\HCode{<dl \a:LRdir class="dingautolist\expandafter\the + \csname @listdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="dingautolist">}} + {\HCode{</dt><dd\Hnewline class="dingautolist">}} +\ConfigureList{Piautolist} + {\EndP\HCode{<dl \a:LRdir class="Piautolist\expandafter\the + \csname @listdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="Piautolist">}} + {\HCode{</dt><dd\Hnewline class="Piautolist">}} +\ConfigureList{Pilist} + {\EndP\HCode{<dl \a:LRdir class="Pilist\expandafter\the + \csname @listdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="Pilist">}} + {\HCode{</dt><dd\Hnewline class="Pilist">}} +>>> + + +\<configure html4 paralist\><<< +\ConfigureList{asparaitem}% + {\EndP\HCode{<div class="asparaitem">}\ShowPar\ShowIndent} + {\EndP\HCode{</div>}\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +\ConfigureList{asparaenum}% + {\EndP\HCode{<div class="asparaenum">}\ShowPar\ShowIndent} + {\EndP\HCode{</div>}\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +\ConfigureList{asparadesc}% + {\EndP\HCode{<div class="asparadesc">}\ShowPar\ShowIndent} + {\EndP\HCode{</div>}\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +\ConfigureList{compactenum}% + {\EndP\HCode{<dl \a:LRdir class="compactenum">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="compactenum">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="compactenum">}} +\ConfigureList{compactdesc}% + {\EndP\HCode{<dl \a:LRdir class="compactdesc">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="compactdesc">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="compactdesc">}} +\ConfigureList{compactitem}% + {\EndP\HCode{<ul>}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</li></ul>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark} + {\HCode{<li class="compactitem">}} +\ConfigureEnv{enumerate} + {}{|<try env inline par|>}{}{} +\expandafter\ifx \csname if@plmylabel\endcsname\relax + |<pre 2002 paralist|> +\else + |<paralist 2002|> +\fi +\Css{dt.enumerate{float:left; + clear:left; margin-right:0.2em; margin-left:2em;}} +\Css{dt.compactenum{float:left; + clear:left; margin-right:0.2em; margin-left:2em;}} +>>> + + + + +\<pre 2002 paralist\><<< +\ConfigureList{enumerate}% + {\if@plalwaysadjust + \EndP \HCode{<dl \a:LRdir class="enumerate">}% + |<save end:itm|>\global\let\end:itm=\empty + \def\para:enumII{|<recall end:itm|>\EndP + \HCode{</dd></dl>}\ShowPar}% + \def\para:enumIII{\end:itm \global + \def\end:itm{\EndP + \Tg</dd>}\HCode{<dt class="enumerate">}}% + \def\para:enumIV{\EndP + \HCode{</dt><dd\Hnewline class="enumerate">}}% + \else + |<enumerate I|>% + \def\para:enumII{|<enumerate II|>}% + \def\para:enumIII{|<enumerate III|>}% + \def\para:enumIV{|<enumerate IV|>}% + \fi + } + {\para:enumII} {\para:enumIII} {\para:enumIV} +>>> + + + + +\<paralist 2002\><<< +\:CheckOption{enumerate-} \if:Option + \ConfigureList{enumerate}% + {\if@plnewenum + \EndP \HCode{<dl \a:LRdir class="enumerate">}% + |<save end:itm|>\global\let\end:itm=\empty + \def\para:enumII{|<recall end:itm|>\EndP + \HCode{</dd></dl>}\ShowPar}% + \def\para:enumIII{\end:itm \global + \def\end:itm{\EndP + \Tg</dd>}\HCode{<dt class="enumerate">}}% + \def\para:enumIV{\EndP + \HCode{</dt><dd\Hnewline class="enumerate">}}% + \else + |<enumerate I|>% + \def\para:enumII{|<enumerate II|>}% + \def\para:enumIII{|<enumerate III|>}% + \def\para:enumIV{|<enumerate IV|>}% + \fi + } + {\para:enumII} {\para:enumIII} {\para:enumIV} +\else + \ConfigureList{enumerate}% + {\if@plnewenum + \EndP \HCode{<dl \a:LRdir class="enumerate">}% + |<save end:itm|>\global\let\end:itm=\empty + \def\para:enumII{|<recall end:itm|>\EndP + \HCode{</dd></dl>}\ShowPar}% + \def\para:enumIII{\end:itm \global + \def\end:itm{\EndP + \Tg</dd>}\HCode{<dt class="enumerate">}}% + \def\para:enumIV{\EndP + \HCode{</dt><dd\Hnewline class="enumerate">}}% + \else + |<enumerate I|>% + \def\para:enumII{|<enumerate II|>}% + \def\para:enumIII{|<enumerate III|>}% + \def\para:enumIV{|<enumerate IV-|>}% + \fi + } + {\para:enumII} {\para:enumIII} {\para:enumIV} +\fi +>>> + + + + + +\<configure html4 alphanum\><<< +\def\:tempc#1#2#3#4{% + \ConfigureMark{toclvl#1} + {\HCode{<span class="titlemark">}\csname thelvl#1\endcsname + \HCode{</span>}}% + \Configure{toclvl#1} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<#4 class="toclvl#1Head"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</#4>}\HtmlParOn \IgnoreIndent \par}% + \ConfigureToc{toclvl#1} + {|<alphanum toc spaces|>\def\:temp{\J@INumberRoot{#2}{\tmp:cnt}}% + \afterassignment\:temp \tmp:cnt} + {#3 \HCode{<span class="toclvl#1">}}{} + {\HCode{</span><br />}}% + \ConfigureToc{liketoclvl#1} + {} {|<alphanum toc spaces|>\HCode{<span class="liketoclvl#1">}}{} + {\HCode{</span><br />}}% +} +\:tempc a1{.}{h3} +\:tempc b2{.}{h4} +\:tempc c3{.}{h5} +\:tempc d4{)}{h5} +\:tempc e5{)}{h5} +\:tempc f6{)}{h5} +\:tempc g7{)}{h5} +\:tempc h8{)}{h5} +\:tempc i9{)}{h5} +\:tempc j{10}{)}{h5} +\:tempc k{11}{)}{h5} +\:tempc l{12}{)}{h5} +>>> + +\<alphanum toc spaces\><<< +\tmp:cnt=0 \loop \advance\tmp:cnt by 1 + \ifnum \tmp:cnt<#2 ~~\repeat +>>> + +\<\><<< +\ConfigureMark{toc} + {\HCode{<span class="titlemark">}\csname thelvl\alph{tiefe}\endcsname + \HCode{</span>}} +\Configure{toc} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h5 class="tocHead"\a:LRdir>}\TitleMark\space\HtmlParOff} + {\HCode{</h5>}\HtmlParOn \IgnoreIndent \par} +>>> + + + + + + + +\<configure html4 alphanum\><<< +\bgroup + \let\ifx=\relax + \let\:temp=\relax + \let\:tempa=\expandafter + \let\expandafter=\relax + \let\:TableOfContents=\relax + \let\else=\relax + \let\if=\relax + \let\fi=\relax + \def\Auto:ent#1{\noexpand\Auto:ent{#1,toclvla,liketoclvla,toclvlb,% + liketoclvlb,toclvlc,liketoclvlc,toclvld,liketoclvld,toclvle,% + liketoclvle,toclvlf,liketoclvlf,toclvlg,liketoclvlg,toclvlh,% + liketoclvlh,toclvli,liketoclvli,toclvlj,% + liketoclvlj,toclvlk,liketoclvlk,toclvll,liketoclvll}} + \edef\:TOC{\def\noexpand\:TOC{\:TOC}} + \:tempa +\egroup \:TOC +>>> + + +We can't use styles from .htf files with fontspec, so we must add meaning to +font commands + +\<configure html4 fontspec\><<< +\Configure{textit}{\HCode{<i>}\NoFonts}{\EndNoFonts\Tg</i>} +\Configure{textbf}{\HCode{<strong>}\NoFonts}{\EndNoFonts\Tg</strong>} +\Configure{textsc}{\HCode{<span class="small-caps">}\NoFonts}{\EndNoFonts\Tg</span>} +\Css{.small-caps{font-variant: small-caps;}} +>>> + + +\<configure html4 polyglossia\><<< +\Configure{PolyglossiaRtl}{\Configure{LRdir}{}}{\Configure{LRdir}{ dir="rtl"}} +>>> + +\<configure html4 animate\><<< +\Configure{animinline}{\Picture+{}}{\EndPicture} +\ConfigureEnv{animateinline}{% + \ifvmode\IgnorePar\fi\EndP\HCode{<div class="animateinline">}% +}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}}{}{} +>>> + + +\<configure html4 sectionbreak\><<< +\Configure{sectionbreak}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="sectionbreak">}}{\HCode{</div>}} + +\Css{div.sectionbreak{ + margin-top:3rem; + margin-bottom:3rem; + text-align:center; +}} + +% use the asterism HTML entity +\Configure{asterism}{\HCode{\string&\:sharp8258;}} +>>> + + +\<configure html4 booktabs\><<< +\Configure{toprule} + {|<booktabs rule mag|>% + \Css{tr\#TBL-\TableNo-\ifnum \HRow=0 + 1- td{border-top:|<booktabs rule height|> solid} + \else + \HRow- td{border-bottom:|<booktabs rule height|> solid} + \fi + }} +\Configure{bottomrule} + {|<booktabs rule mag|>% + \Css{tr\#TBL-\TableNo-\HRow- + td{border-bottom:|<booktabs rule height|> solid}}} +\Configure{midrule} + {|<booktabs rule mag|>% + \Css{tr\#TBL-\TableNo-\HRow- + td{border-bottom:|<booktabs rule height|> solid}}} +\Configure{cmidrule} + {|<booktabs rule mag|>% + \Css{td\#TBL-\TableNo-\HRow-\HCol{border-bottom:|<booktabs rule height|> solid}}% + \HCode{<span class="cmidrule"><!-- enable post-processing of cmidrule--></span>}} +>>> + + + +The cmidrule introduces ruler segments at different rows, instead of all of +them in the same row. + +\<booktabs rule height\><<< +\expandafter\x:Em \the\@thisrulewidth em +>>> + +\<booktabs rule mag\><<< +\@thisrulewidth=\csname a:rule-mag\endcsname\@thisrulewidth +>>> + +\<configure html4 booktabs\><<< +\NewConfigure{rule-mag}{1} +\Configure{rule-mag}{0.14} +{ + \def\x:Em{% + \catcode`\p=12 + \catcode`\t=12 + \gdef\x:Em} + \x:Em#1pt{#1} +} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Endnotes.sty} +%%%%%%%%%%%%%%%%%% + + + + + +\<configure html4 endnotes\><<< +\Configure{makeenmark} + {\Link{ennote-\endnoteN}{enmark-\endnoteN}} {\EndLink} +\Configure{enoteformat} + {\Link{enmark-\endnoteN}{ennote-\endnoteN}} {\EndLink\AnchorLabel} +>>> + + +%%%%%%%%%%%%%%%%% +\section{appendix} +\<configure html4 appendix\><<< +\ConfigureEnv{appendices}{\ifvmode\IgnorePar\fi\EndP{<div class="appendices">}}{\ifvmode\IgnorePar\fi\EndP{</div>}}{}{} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\<par del\><<< +!*?: >>> +\<tag of Tag\><<< + cw:>>> + +\<tail\><<< +tail>>> + +\<addr for Tag and Ref of Sec\><<< +\xdef\:cursec{|<section html addr|>}% +>>> + + + \OutputCode[4ht]\<exerqz\> + \OutputCodE\<onmouseover.4ht\> + +\endinput + + + + + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-html5.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html5.tex new file mode 100644 index 00000000000..ca0fab53a49 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-html5.tex @@ -0,0 +1,376 @@ +% $Id: tex4ht-html5.tex 905 2021-04-18 15:30:06Z karl $ +% compile 3 times: latex tex4ht-moz +% or xhlatex tex4ht-moz "html,3,sections+" +% +% Copyright 2009-2021 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{html5} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common.tex} +\input{tex4ht-cpright.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<html5\><<< +% html5.4ht (|version), generated from |jobname.tex +% Copyright 2016-2021 TeX Users Group +|<TeX4ht copywrite|> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Basic configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{HTML5 structure} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html5 tex4ht\><<< +|<patch charset|> +\Configure{VERSION}{} +\Configure{DOCTYPE}{\HCode{<!DOCTYPE html>\Hnewline}} +\Configure{HTML}{\HCode{<html lang="\Get:Language" xml:lang="\Get:Language" \html:xmlns>\Hnewline}}{\HCode{\Hnewline</html>}} +\Configure{@HEAD}{} +\Configure{@HEAD}{\HCode{<meta \use:charset />\Hnewline}} +\Configure{@HEAD}{\HCode{<meta name="generator" content="TeX4ht +(https://tug.org/tex4ht/)" />\Hnewline}} +\Configure{@HEAD}{\HCode{<meta name="viewport" content="width=device-width,initial-scale=1" />\Hnewline}} +\Configure{@HEAD}{\HCode{<link + rel="stylesheet" type="text/css" + href="\expandafter\csname aa:CssFile\endcsname" />\Hnewline}} +\Configure{@HEAD} + {\HCode{<meta name="src" + content="\jobname.tex"\xml:empty>\Hnewline}} +\:CheckOption{timestamp}\if:Option +\Configure{@HEAD} + {\HCode{<meta name="date" + content="\:today"\xml:empty>\Hnewline}} +\else + \Log:Note{To print a timestamp, use the command line option timestamp} +\fi +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Language and charset setting} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Charset can be set using charset=charsetcode option for tex4ht.sty. It is saved in \verb|\a:charset| macro. +If charset oprion isn't used, \verb|\A:charset| is used instead. Bot of these macros store the charset information +in charset=name form. We need to add quotes around name in html5, thus the following macro. + +\<patch charset\><<< + +\def\:charset:quotes#1=#2.{ + #1="#2"% +} +\def\use:charset{% + \expandafter\ifx\csname a:charset\endcsname\relax% + \expandafter\expandafter\expandafter\:charset:quotes\csname A:charset\endcsname. + \else% + \expandafter\expandafter\expandafter\:charset:quotes\csname a:charset\endcsname. + \fi +} +>>> + + +We can interfere the document language from \verb|\bbl@main@language| macro. It +is supported by both Babel and Polyglossia. + +\<configure html5 tex4ht\><<< +\def\Declare:Language#1#2{% +\expandafter\gdef\csname rfclang#1\endcsname{#2}% +} +\def\Get:Language{% +\ifx\bbl@main@language\@undefined en-US% +\else% +\expandafter\ifdefined\csname rfclang\bbl@main@language\endcsname \csname rfclang\bbl@main@language\endcsname\fi% +\fi% +} + +\Declare:Language{UKenglish}{en} +\Declare:Language{USenglish}{en} +\Declare:Language{latex}{en} +\Declare:Language{acadian}{fr} +\Declare:Language{albanian}{sq} +\Declare:Language{american}{en} +\Declare:Language{amharic}{am} +\Declare:Language{arabic}{ar} +\Declare:Language{armenian}{hy} +\Declare:Language{australian}{en} +\Declare:Language{austrian}{de} +\Declare:Language{basque}{eu} +\Declare:Language{bengali}{bn} +\Declare:Language{brazilian}{pt} +\Declare:Language{brazil}{pt} +\Declare:Language{breton}{br} +\Declare:Language{british}{en} +\Declare:Language{bulgarian}{bg} +\Declare:Language{canadian}{en} +\Declare:Language{canadien}{fr} +\Declare:Language{catalan}{ca} +\Declare:Language{croatian}{hr} +\Declare:Language{czech}{cs} +\Declare:Language{danish}{da} +\Declare:Language{divehi}{dv} +\Declare:Language{dutch}{nl} +\Declare:Language{english}{en} +\Declare:Language{esperanto}{eo} +\Declare:Language{estonian}{et} +\Declare:Language{finnish}{f\/i} +\Declare:Language{francais}{fr} +\Declare:Language{french}{fr} +\Declare:Language{galician}{gl} +\Declare:Language{germanb}{de} +\Declare:Language{german}{de} +\Declare:Language{greek}{el} +\Declare:Language{hebrew}{he} +\Declare:Language{hindi}{hi} +\Declare:Language{hungarian}{hu} +\Declare:Language{icelandic}{is} +\Declare:Language{interlingua}{ia} +\Declare:Language{irish}{ga} +\Declare:Language{italian}{it} +\Declare:Language{kannada}{kn} +\Declare:Language{khmer}{km} +\Declare:Language{korean}{ko} +\Declare:Language{lao}{lo} +\Declare:Language{latin}{la} +\Declare:Language{latvian}{lv} +\Declare:Language{lithuanian}{lt} +\Declare:Language{lowersorbian}{dsb} +\Declare:Language{magyar}{hu} +\Declare:Language{malayalam}{ml} +\Declare:Language{marathi}{mr} +\Declare:Language{naustrian}{de} +\Declare:Language{newzealand}{en} +\Declare:Language{ngerman}{de} +\Declare:Language{norsk}{no} +\Declare:Language{norwegiannynorsk}{nn} +\Declare:Language{nynorsk}{no} +\Declare:Language{occitan}{oc} +\Declare:Language{oldchurchslavonic}{cu} +\Declare:Language{persian}{fa} +\Declare:Language{polish}{pl} +\Declare:Language{polutonikogreek}{el} +\Declare:Language{portuges}{pt} +\Declare:Language{portuguese}{pt} +\Declare:Language{romanian}{ro} +\Declare:Language{romansh}{rm} +\Declare:Language{russian}{ru} +\Declare:Language{samin}{se} +\Declare:Language{sanskrit}{sa} +\Declare:Language{scottish}{gd} +\Declare:Language{serbian}{sr} +\Declare:Language{serbo-croatian}{sh} +\Declare:Language{slovak}{sk} +\Declare:Language{slovene}{sl} +\Declare:Language{slovenian}{sl} +\Declare:Language{spanish}{es} +\Declare:Language{swedish}{sv} +\Declare:Language{tamil}{ta} +\Declare:Language{telugu}{te} +\Declare:Language{thai}{th} +\Declare:Language{tibetan}{bo} +\Declare:Language{turkish}{tr} +\Declare:Language{turkmen}{tk} +\Declare:Language{ukrainian}{uk} +\Declare:Language{uppersorbian}{hsb} +\Declare:Language{urdu}{ur} +\Declare:Language{vietnamese}{vi} +\Declare:Language{welsh}{cy} +>>> + +Support for xml name spaces. It must be configured after +\verb|\begin{document}| in the configuration file. + +\<configure html5 tex4ht\><<< +\edef\html:xmlns{} +\NewConfigure{xmlns}[2]{% + \ifx\relax#2\relax% + \edef\html:xmlns{}% + \else% + \edef\html:xmlns{\html:xmlns xmlns\ifx\relax#1\relax\else :#1\fi="#2"}% + \fi% +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{LaTeX and classes configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\section{LaTeX} + +\<configure html5 latex\><<< +|<tabular fixes|> +>>> + +\section{Article, book and report classes} +\<configure html5 article\><<< +|<article,report,book|> +|<article,report|> +>>> + +\<configure html5 book\><<< +|<article,report,book|> +>>> + +\<configure html5 report\><<< +|<article,report,book|> +|<article,report|> +>>> + +Shared configurations for base LaTeX classes. + +\<article,report,book\><<< +|<figcaption|> +>>> + +Configurations that are shared only for article and report + +\<article,report\><<< +|<abstract|> +>>> + + +\section{Configurations for Koma Script} + +\<configure html5 scrartcl\><<< +|<scr article,report,book|> +>>> + +\<configure html5 scrbook\><<< +|<scr article,report,book|> +>>> + +\<configure html5 scrreprt\><<< +|<scr article,report,book|> +>>> + +\<scr article,report,book\><<< +|<figcaption|> +>>> + +\section{Configurations for AMS classes} + +\<configure html5 amsart\><<< +|<ams art,proc,book|> +>>> + +\<configure html5 amsproc\><<< +|<ams art,proc,book|> +>>> + +\<configure html5 amsbook\><<< +|<ams art,proc,book|> +>>> + + +\<ams art,proc,book\><<< +|<figcaption|> +>>> + +\section{Configurations for Memoir} + +\<configure html5 memoir\><<< +|<figcaption|> +|<abstract|> +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Packages configuration} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Logical structure configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +cellspacing and cellpading attributes are prohibited in html5 + +\<tabular fixes\><<< +\Configure{halignTB<>}{tabular}{\HCode{id="TBL-\TableNo" class="tabular"\Hnewline \GROUPS\Hnewline + }<>\HAlign} +\Css{table.tabular{border-collapse: collapse; border-spacing: 0;}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Figures} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Configure HTML5 figures. Floats are converted as captions too. + +\<figcaption\><<< +\Configure{float} + {\ifOption{refcaption}{}{\csname par\endcsname\ShowPar \leavevmode}} + {\:xhtml{\IgnorePar\EndP}\HCode{<figure class="float"\Hnewline>}} + {\ifvmode \IgnorePar \fi\EndP + \HCode{</figure>}\csname par\endcsname\ShowPar} + +\ConfigureEnv{figure} +{\:xhtml{\IgnorePar\EndP}\HCode{<figure class="figure">\Hnewline}% + \bgroup \Configure{float}{\ShowPar}{}{}% + } + {\egroup + \:xhtml{\IgnorePar\EndP}\HCode{</figure>}|<try env inline par|>\par} + {}{} + +\Css{figure.float, div.figure {margin-left: auto; margin-right: auto;}} +\Css{figure.float img, figure.figure img {display: block; margin-left: auto; margin-right: auto;}} +\Css{figure.figure {text-align:center;}} + +\Configure{caption}{\:xhtml{\IgnorePar\EndP}\HCode{<figcaption class="caption" ><span class="id">}} + {:} {\HCode{</span><span \Hnewline class="content">}} + {\HCode{</span></figcaption>}\HCode{<!--tex4ht:label?: + \cur:th\:currentlabel\space-->}% +} +\Css{figcaption.caption {text-indent:-2em; margin-left:3em; margin-right:1em; + text-align:center;}} +\Css{figcaption.caption span.id{font-weight: bold; white-space: nowrap; }} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Abstracts} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<abstract\><<< +\ConfigureEnv{abstract} +{\ifvmode\IgnorePar\fi\EndP\HCode{<section role="doc-abstract" class="abstract">\Hnewline}} +{\ifvmode\IgnorePar\fi\EndP\HCode{</section>}\par}{}{} + +\Css{.abstract{margin:1em;}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Utilities} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<try env inline par\><<< +\ShowPar +>>> + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-html4.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-html4.tex new file mode 100644 index 00000000000..4c3859498ed --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-html4.tex @@ -0,0 +1,299 @@ +% $Id: tex4ht-info-html4.tex 314 2017-05-14 18:30:18Z karl $ +% compile 3 times: latex tex4ht-info-html4 +% or xhlatex tex4ht-info-html4 "html,3,sections+" +% +% Copyright 2009-2017 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{infoht4} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-info} +\input{common} + + +\expandafter\ifx \csname YES\HTML\endcsname\relax +\else + \def\CleanComment#1tex4ht-info-html4#2#3#4.#5>#6//{[#4% <--jobname + \if,\ifnum \FIRST=#6 .\else ,0\fi\fi]#6//} +\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{INFO} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<infoht4\><<< +% infoht4.4ht (|version), generated from |jobname.tex +% Copyright 2009-2017 TeX Users Group +% Copyright |CopyYear.2000. Eitan M. Gurari +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project <http://tug.org/tex4ht>. +% +% If you modify this program, changing the +% version identification would be appreciated. +\immediate\write-1{version |version} +{ \catcode`\@=0 \catcode`\\=11 @relax + @gdef@infoIVht[#1]#2//{% + @ifnum #1>1 + @def@infoIVht[##1]##2//{% + @ifnum ##1>1 @ifnum ##1<#1 + @bgroup + @no:catcodes0{255}{11}% + @no:catcodes{91}{91}{12}% [ + @no:catcodes{47}{47}{12}% / + @newlinechar13 % + @long@def@infoIVht####1\ifx\infoIVht####2infoIVht[####3//{% + @def@infoIVht{******************************************}% + @immediate@write-1{@infoIVht}% + @immediate@write-1{****** @csname :Hin@endcsname.4ht}% + @immediate@write-1{@infoIVht}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{####1}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{@infoIVht}% + @egroup}% + @expandafter@expandafter@expandafter@infoIVht + @fi@fi }% + @fi } +} +>>> + + + + + + + +\chapter{The Code} + +\<configure infoht4 tex4ht\><<< +Cascade Style Sheets and Character Sets +--------------------------------------- + +\Configure{CssFile}.....................2 + + #1 name for css file + #2 comment in css file + +\Configure{Css} + +\Configure{charset}..................1 + + #1 override information for the charset entry in the link element + + To be noticed, the configuration should be encountered early in the + complation. + + Example: + + \Preamble{} + \Configure{charset}{iso-8859-15} + \begin{document} + \EndPreamble + + In the case of TeX, the configuration instruction should precede + the \Preamble command, and a declaration of the hook should also + be provided. + + Example: + + \NewConfigure{charset}{1} + \Configure{charset}{iso-8859-15} + \Preamble{} + \begin{document} + \EndPreamble + +\Configure{dtd-lang}..................1 + + #1 language specification for the DTD identifier + +Paragraphs +---------- + +Three types of paragraphs are produced by \Configure{HtmlPar}: + + <p class="indent">....</p> + <p class="noindent">....</p> + <p class="nopar">....</p> + +The third one handles degenerated cases which don't call for a +separate paragraph in the source code. For instance, an inline +display math code of the form + + .......... + $$......$$ + .......... + +translates into a markup similar to + + <p class="...">..........</p> + <math>......</math> + <p class="nopar">..........</p> + +Frames +------ + + May be requested with the command line option `frames' + + \Configure{frames}.....................2 + + #1 The frames structure + #2 Content for the frame of the table of contents + + Example: + + \Configure{frames} + {\HorFrames[frameborder="no" border="0" + framespacing="0" rows="*"]{*,3*} + \Frame[ name="tex4ht-menu" ]{tex4ht-toc} + \Frame[ name="tex4ht-main" ]{tex4ht-body}} + {\let\contentsname=\empty \tableofcontents} +>>> + +%%%%%%%%%%%%%%% +\section{latex} +%%%%%%%%%%%%%%% + + +\<configure infoht4 latex\><<< +Hypertext Title +--------------- +\Configure{@HTML}.........................1 + + Environment for setting \title material in <title>. The contributions + are accumulative; an empty argument reinitializes the contribution. + +Tables +------ + +Properties of tabular and array tables can be locally redefined with +instructions of the following forms. + + \Css{\#TBL-\TableNo- {....}} % within tables + \Css{\#TBL-\TableNo-\HRow- {....}} % within rows + \Css{\#TBL-\TableNo-\HCol {....}} % within columns + \Css{\#TBL-\TableNo-\HRow-\HCol {....}} % within cells + \Css{\#TBL-\TableNo-<i>g {....}} % column group; <i> + +\Configure{enumerate}..............1 + Contribution into <ol> + +>>> + +% \Configure{enumerate}{1aiA} + +\>>>maketitleInfo<<< +Wrapper for the Document +------------------------ + + \Tag{TITLE+}......................1 + + #1 Content submitted to the <TITLE> element of the leading + web page. + + This instruction should be used at most once in a document. + In particular, it shouldn't be used when the \maketitle command + is present, since the latter command invokes this feature. +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{book} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<configure infoht4 book\><<< +Package options +--------------- + + 1 cut-off document into pages at the \part level + 2 cut-off document into pages at the \chapter and higher levels + 3 cut-off document into pages at the \section and higher levels + 4 cut-off document into pages at the \subsection and higher levels + + The chapter of \tableofcontents is created only + if \contentsname is not empty + + Macros sensitive to edef commands in sectioning titles + should be neutralize within \Configure{@TITLE}{....} + +|maketitleInfo +>>> + + +\section{report} + +\<configure infoht4 report\><<< +Package options: + + 1 cut-off document into pages at the \part level + 2 cut-off document into pages at the \section and higher levels + 3 cut-off document into pages at the \subsection and higher levels + 4 cut-off document into pages at the \subsubsection and higher levels + + The section of \tableofcontents is created only + + if \contentsname is not empty + + Macros sensitive to edef commands in sectioning titles + should be neutralize within \Configure{@TITLE}{....} + +|maketitleInfo +>>> + + + +\section{article} + +\<configure infoht4 article\><<< +Package options: + + 1 cut-off document into pages at the \part level + 2 cut-off document into pages at the \section and higher levels + 3 cut-off document into pages at the \subsection and higher levels + 4 cut-off document into pages at the \subsubsection and higher levels + + The section of \tableofcontents is created only + if \contentsname is not empty + + Macros sensitive to edef commands in sectioning titles + should be neutralize within \Configure{@TITLE}{....} + +|maketitleInfo +>>> + +\<configure infoht4 amsart\><<< + +|maketitleInfo +>>> + + +\endinput + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-javahelp.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-javahelp.tex new file mode 100644 index 00000000000..0ece4ede6e1 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-javahelp.tex @@ -0,0 +1,123 @@ +% $Id: tex4ht-info-javahelp.tex 237 2017-01-29 18:20:42Z karl $ +% compile 3 times: latex tex4ht-info-javahelp +% or htlatex tex4ht-info-javahelp "html,sections+" +% or ht latex tex4ht-info +% +% Copyright 2009-2017 TeX Users Group +% Copyright 2006--2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{infojh} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + + +\input{common-info} +\input{common} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{INFO} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<infojh\><<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% infojh.4ht |version % +% Copyright (C) |CopyYear.2000. Eitan M. Gurari % +% % +% This program can redistributed and/or modified under % +% the terms of the LaTeX Project Public License % +% Distributed from CTAN archives in directory % +% macros/latex/base/lppl.txt; either version 1 of the % +% License, or (at your option) any later version. % +% % +% If you modify this program your changing its signature % +% with a directive of the following form will be % +% appreciated. % +% \message{signature} % +% % +% gurari@cse.ohio-state.edu % +% http://www.cse.ohio-state.edu/~gurari % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\immediate\write-1{version |version} +{ \catcode`\@=0 \catcode`\\=11 @relax + @gdef@infoIVht[#1]#2//{% + @ifnum #1>1 + @def@infoIVht[##1]##2//{% + @ifnum ##1>1 @ifnum ##1<#1 + @bgroup + @no:catcodes0{255}{11}% + @no:catcodes{91}{91}{12}% [ + @no:catcodes{47}{47}{12}% / + @newlinechar13 % + @long@def@infoIVht####1\ifx\infoIVht####2infoIVht[####3//{% + @def@infoIVht{******************************************}% + @immediate@write-1{@infoIVht}% + @immediate@write-1{****** @csname :Hin@endcsname.4ht}% + @immediate@write-1{@infoIVht}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{####1}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{@infoIVht}% + @egroup}% + @expandafter@expandafter@expandafter@infoIVht + @fi@fi }% + @fi } +} +>>> + + + + + + + +\chapter{The Code} + +\section{tex4ht} + +\<configure infojh tex4ht\><<< +\Configure{mapIdTarget}....................2 + + #1 target + #2 definitions + + Given: \sectionType, \sectionId, \sectionName + +Examples: + + \Configure{mapIdTarget} + {\sectionName} + {} + + \Configure{mapIdTarget} + {\spacelessName} + {\immediate\openout15=\jobname .tmp + \immediate\write15{\def\string\spacelessName{\sectionName}}% + \immediate\closeout15 + \catcode`\ =9 + \input \jobname .tmp + \catcode`\ =10 + } +>>> + + + + + + +\endinput + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-mml.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-mml.tex new file mode 100644 index 00000000000..5667dbae439 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-mml.tex @@ -0,0 +1,144 @@ +% $Id: tex4ht-info-mml.tex 314 2017-05-14 18:30:18Z karl $ +% compile 3 times: latex tex4ht-info-mml +% or htlatex tex4ht-info-mml "html,sections+" +% or ht latex tex4ht-info-mml +% +% Copyright 2009-2017 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{infomml} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input ./mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-info} +\input{common} +\expandafter\ifx \csname YES\HTML\endcsname\relax +\else + \def\CleanComment#1tex4ht-info-mml#2#3#4.#5>#6//{[#4% <--jobname + \if,\ifnum \FIRST=#6 .\else ,0\fi\fi]#6//} +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Info MML} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<infomml\><<< +% infomml.4ht (|version), generated from |jobname.tex +% Copyright 2009-2017 TeX Users Group +% Copyright |CopyYear.2000. Eitan M. Gurari +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project <http://tug.org/tex4ht>. +% +% If you modify this program, changing the +% version identification would be appreciated. +\immediate\write-1{version |version} +{ \catcode`\@=0 \catcode`\\=11 @relax + @gdef@infoIVht[#1]#2//{% + @ifnum #1>1 + @def@infoIVht[##1]##2//{% + @ifnum ##1>1 @ifnum ##1<#1 + @bgroup + @no:catcodes0{255}{11}% + @no:catcodes{91}{91}{12}% [ + @no:catcodes{47}{47}{12}% / + @newlinechar13 % + @long@def@infoIVht####1\ifx\infoIVht####2infoIVht[####3//{% + @def@infoIVht{******************************************}% + @immediate@write-1{@infoIVht}% + @immediate@write-1{****** @csname :Hin@endcsname.4ht}% + @immediate@write-1{@infoIVht}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{####1}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{@infoIVht}% + @egroup}% + @expandafter@expandafter@expandafter@infoIVht + @fi@fi }% + @fi } +} +>>> + + + + + + + +\chapter{The Code} + +\<configure infomml tex4ht\><<< +math +---- +\Configure{math}.........................1 + + Contribution for the <math> tag +>>> + + +\section{plain} + + + \<configure infomml plain\><<< +mfenced +------- + + \Configure{mfenced} ............... 2 + + #1 source delimiter + #2 target delimiter + + Request substitution of delimiters for the <mfenced> element + +>>> + + + + \<configure infomml latex\><<< +stackrel +-------- +Command line options for \Preamble + + stackrel- configures the \stackrel commands into + <mglyph alt="\stackrel{...}{...}" /> elements + +mfenced +------- + + \Configure{mfenced} ............... 2 + + #1 source delimiter + #2 target delimiter + + Request substitution of delimiters for the <mfenced> element + +>>> + +\section{book} + +\endinput + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-ooffice.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-ooffice.tex new file mode 100644 index 00000000000..55e375982cd --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-ooffice.tex @@ -0,0 +1,93 @@ +% $Id: tex4ht-info-ooffice.tex 65 2010-11-17 19:16:45Z karl $ +% compile 3 times: latex tex4ht-info-ooffice +% or htlatex tex4ht-info-ooffice "html,sections+" +% or ht latex tex4ht-info-ooffice +% +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) 2005-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{infoof} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-info} +\input{common} +\input{tex4ht-cpright} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Info OpenOffice} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<infoof\><<< +% infoof.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.2005. Eitan M. Gurari +|<TeX4ht copywrite|> +{ \catcode`\@=0 \catcode`\\=11 @relax + @gdef@infoIVht[#1]#2//{% + @ifnum #1>1 + @def@infoIVht[##1]##2//{% + @ifnum ##1>1 @ifnum ##1<#1 + @bgroup + @no:catcodes0{255}{11}% + @no:catcodes{91}{91}{12}% [ + @no:catcodes{47}{47}{12}% / + @newlinechar13 % + @long@def@infoIVht####1\ifx\infoIVht####2infoIVht[####3//{% + @def@infoIVht{******************************************}% + @immediate@write-1{@infoIVht}% + @immediate@write-1{****** @csname :Hin@endcsname.4ht}% + @immediate@write-1{@infoIVht}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{####1}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{@infoIVht}% + @egroup}% + @expandafter@expandafter@expandafter@infoIVht + @fi@fi }% + @fi } +} +>>> + + + + + + + +\chapter{The Code} + +\section{latex} + +\<configure infoof latex\><<< +\Configure{enumerate:1}.................. 3 +\Configure{enumerate:2}.................. 3 +\Configure{enumerate:3}.................. 3 +\Configure{enumerate:4}.................. 3 + + #1 label type: 1, a, A, i, I + #2 left delimiter + #3 right delimiter +>>> + + + + + + +\endinput + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-svg.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-svg.tex new file mode 100644 index 00000000000..8c23ada10f9 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info-svg.tex @@ -0,0 +1,159 @@ +% $Id: tex4ht-info-svg.tex 315 2017-05-15 13:37:50Z michal_h21 $ +% compile 3 times: latex tex4ht-info-svg +% or htlatex tex4ht-info-svg "html,sections+" +% or ht latex tex4ht-info +% +% Copyright 2009-2017 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{infosvg} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-info} +\input{common} +\expandafter\ifx \csname YES\HTML\endcsname\relax +\else + % \def\CleanComment#1tex4ht-info-svg#2#3#4.#5>#6//{[#4% <--jobname + % \if,\ifnum \FIRST=#6 .\else ,0\fi\fi]#6//} + % Michal 05/10/2017 + % The following code works in other info files, but not in this one + % I don't really don't know why + \def\<{\edef\FIRST{\the\inputlineno}\let\<\saveCd \saveCd} + \def\CleanComment#1tex4ht-info-svg#2#3#4.#5>#6//{[#4% <--jobname + \if,\ifnum \FIRST=#6 .\else ,0\fi\fi]#6//} + % \def\eatIV#1#2#3#4{} +\fi + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Info SVG} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<infosvg\><<< +% infosvg.4ht (|version), generated from |jobname.tex +% Copyright 2009-2017 TeX Users Group +% Copyright |CopyYear.2000. Eitan M. Gurari +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project <http://tug.org/tex4ht>. +% +% If you modify this program, changing the +% version identification would be appreciated. +\immediate\write-1{version |version} +{ \catcode`\@=0 \catcode`\\=11 @relax + @gdef@infoIVht[#1]#2//{% + @ifnum #1>1 + @def@infoIVht[##1]##2//{% + @ifnum ##1>1 @ifnum ##1<#1 + @bgroup + @no:catcodes0{255}{11}% + @no:catcodes{91}{91}{12}% [ + @no:catcodes{47}{47}{12}% / + @newlinechar13 % + @long@def@infoIVht####1\ifx\infoIVht####2infoIVht[####3//{% + @def@infoIVht{******************************************}% + @immediate@write-1{@infoIVht}% + @immediate@write-1{****** @csname :Hin@endcsname.4ht}% + @immediate@write-1{@infoIVht}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{####1}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{@infoIVht}% + @egroup}% + @expandafter@expandafter@expandafter@infoIVht + @fi@fi }% + @fi } +} +>>> + + +\chapter{Options} + +\section{tex4ht} + + +\<configure infosvg tex4ht\><<< + +The output or pictures in SVG format can be requested using following command +line options: + +svg +--- + +Include pictures as external images. Existing configuration for SVG images is +used. This is preffered way in modern documents. + +svg-object +---------- + +Include pictures using <object> elements. + +svg- +---- + +This configuration is simillar to the previous one + +svg-inline +---------- + +Include the pictures directly to the XML document. + +>>> + + + +\chapter{The Code} + +\section{tex4ht} + +\<configure infosvg tex4ht\><<< +SVG +--- + + Configured through IMG + + Example: + \Configure{IMG} + {\special{t4ht=<object type="image/svg+xml" data="}} + {\special{t4ht=" name="}} + {" } + {\special{t4ht=" }} + {\special{t4ht=></object>}} +>>> + + + + + + +\endinput + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-info.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info.tex new file mode 100644 index 00000000000..75c784f8118 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-info.tex @@ -0,0 +1,4190 @@ +% $Id: tex4ht-info.tex 905 2021-04-18 15:30:06Z karl $ +% Compile with the command `ht latex tex4ht-info' +% or +% compile 3 times: latex tex4ht-info +% or xhlatex tex4ht-info "html,3,sections+" +% Copyright 2009-2021 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{info4ht} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + + +\input{common-info} +\input{common} +\expandafter\ifx \csname YES\HTML\endcsname\relax +\else + \def\CleanComment#1tex4ht-info#2#3#4.#5>#6//{[#4% <--jobname + \if,\ifnum \FIRST=#6 .\else ,0\fi\fi]#6//} +\fi + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{INFO} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<info4ht\><<< +% info4ht.4ht (|version), generated from |jobname.tex +% Copyright 2009-2021 TeX Users Group +% Copyright |CopyYear.2000. Eitan M. Gurari +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project <http://tug.org/tex4ht>. +% +% If you modify this program, changing the +% version identification would be appreciated. +\immediate\write-1{version |version} +{ \catcode`\@=0 \catcode`\\=11 @relax + @gdef@infoIVht[#1]#2//{% + @ifnum #1>1 + @def@infoIVht[##1]##2//{% + @ifnum ##1>1 @ifnum ##1<#1 + @bgroup + @no:catcodes0{255}{11}% + @no:catcodes{91}{91}{12}% [ + @no:catcodes{47}{47}{12}% / + @newlinechar13 % + @long@def@infoIVht####1\ifx\infoIVht####2infoIVht[####3//{% + @def@infoIVht{******************************************}% + @immediate@write-1{@infoIVht}% + @immediate@write-1{****** @csname :Hin@endcsname.4ht}% + @immediate@write-1{@infoIVht}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{####1}% + @bgroup + @def@infoIVht{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*}% + @let~=@space @immediate@write-1{@infoIVht}% + @egroup + @immediate@write-1{@infoIVht}% + @egroup}% + @expandafter@expandafter@expandafter@infoIVht + @fi@fi }% + @fi } +} +>>> + + + + + + + + + + + +\chapter{The Code} + + +\section{tex4ht} + +\<configure info4ht Preamble\><<< +\Configure{PROLOG}.........1 + + #1 Comma separated list of hooks to appear before HTML. + + Each hook E is declared to be configurable by an + instruction of the form \NewConfigure{E}{1} + + A star '*' prefix calls for accumulative configurations + + Example: + + \Configure{PROLOG}{VERSION,DOCTYPE,*XML-STYLESHEET} + \Configure{VERSION} + {\HCode{<?xml version="1.0"?>}} + +\Configure{ext}............1 + + #1: default extension name for target files (recorded in \:html) + + Can also be requested through a command line option ext=... + +\Preamble...................0 + + Records the list of the requested options. Defined upon entering + the environment \Preamble{...}....\EndPreamble, to replace the + earlier version of \Preamble. + +\ifOption ................. 3 + + #1 Argument to be checked wheteher it is a given option. + #2 True part + #3 False part +>>> + + + +\<configure info4ht tex4ht\><<< +Wrapper for the Document +------------------------ + +\Configure{DOCTYPE}.........1 +\Configure{HTML}............2 +\Configure{HEAD}............2 +\Configure{@HEAD}...........1 +\Configure{BODY}............2 +\Configure{TITLE+}..........1 +\Configure{TITLE}...........2 +\Configure{@TITLE}..........1 +\Configure{Preamble}........2 + + <DOCTYPE> + <HTML 1> + <HEAD 1> + <TITLE 1> + <@TITLE> + <TITLE+> + <TITLE 2> + <@HEAD> + <HEAD 2> + <BODY 1> + ...... + <BODY 2> + <HTML 2> + +The \Configure{@HEAD}{...} command is additive, concatenating the +content of all of its appearances. An empty parameter requests +the cancellation of the earlier contributions. + +For instance, + + \Configure{@HEAD}{A} + \Configure{@HEAD}{} + \Configure{@HEAD}{B} + \Configure{@HEAD}{C} + +contributes `BC'. + +The \Configure{TITLE+} provides the content for the title, +\Configure{TITLE} sets the envelop, and \Configure{@TITLE} acts as a +hook for introducing localized configurations. As is the case for +\Configure{@HEAD}, the contribution of \Configure{@TITLE} is also +additive. + +These configurations should be introduced early enough in the +compilation. For instance, in the case of LaTeX, between \Preamble +and \begin{document} of a local configuration file. + + \Preamble + %%% here %%% + \begin{document} + ... + \EndPreamble + + +\Configure{@BODY}...........1 +\Configure{@/BODY}..........1 + + Variants of \Configure{@HEAD} which contribute their content, + respectively, after <body> and before </body>. + +\Configure{CutAtTITLE+}.....1 +\Configure{HPageTITLE+}.....1 + + #1 an insertion just before the content of <TITLE>; + + If #1 is a one parametric macro, it gets the title content for + an argument. + + +Support for Sectioning Commands +------------------------------- + +\Configure{unit-name} ......................4 + + #1 start + #2 end + #3 before title + #4 after title + + Example: + + \Configure{section} + {\HCode{<section>}} {\HCode{</section>}} + {\HCode{<title>}} {\HCode{}} + + +\ConfigureMark{unit-name}...................1 + + Defines a macro \<>HMark to hold the given argument. + Upon entering the unit, \TitleMark gets the content of this macro. + + Some built-in configurations of TeX4ht require an argument for the + \<>HMark commands. For safety, these commands should + always be followed by a, possiblely empty, argument. The argument + should be a separator between the title mark and its content. + + Example: + + \Configure{section} + {}{} + {\HCode{

        }\TitleMark\space} {\HCode{

        }} + \ConfigureMark{section}{\thesection} + + +\Configure{toTocLink}.......................2 + + Each unit title contains a \Link{...}{...}...\EndLink command. + The first argument of \Link points to the first table of contents + referencing the title. The second argument provides an anchor + for references to the title (mainly from tables of contents). + + The package option `section+' requests the inclusion of the + title within the anchor. Without this option, the link command + resides between the title mark and its content. + + The \Configure{toTocLink} command is provided for configuring + the \Link and \EndLink instructions. In the default setting, + when the `sections+' option is not activated, the \Link + command is altered to replace its first argument with an empty + argument. + + Example: + + \Configure{toTocLink} + {\Link} + {\ifx \TitleMark\sectionHMark + \Picture[\up]{haut.jpg align="right"}% + \EndLink + \TitleMark\space + \else \EndLink \fi + } + \def\up{[up]} + +\Configure{toToc}...........................2 + + #1 unit type + #2 desired contents type (if empty, `unit type' is assumed) + + Example: \Configure{toToc}{chapter}{likechapter} + Introduces chapter as likechapter into toc + + #1 empty: stop adding entries of `unit type' to toc + @: add entries of `unit type' to toc + ?: resume mode in effect before the last stop + #2 unit type + + Example: \Configure{toToc}{}{chapter} + \chapter{...} + \Configure{toToc}{@}{chapter} + +\Configure{writetoc}.........................1 + + #1 Configuration material for the insertion instruction. + New configurations are added to those request earlier + by the command. An empty argument cancels the earlier + contributions. + +\NoLink.......................1 + + Ignore option `section+' for sections of type #1 + +\TitleCount + + Count of entries submitted to the toc file + +\Configure{NoSection}.........2 + + Insertions around the parameters of sectioning commands, applied when + the parameters are not used to create titles for the divisions. + + +\CutAt{#1,#2,#3,...} + + #1 section type to be placed in a separate web page + #2,#3,... end delimiting section types, other than #1, for + the web pages + A `+' before #1 requests hypertext buttons for the web pages + + Examples: + + \CutAt{mychapter,myappendix,mypart} + \CutAt{+myappendix,mychapter,mypart} + + Cut points at arbitrary points can be introduced by introducing section-like + commands in a manner similar to + + \NewSection\mysection{} + \CutAt{mysection} + + +\Configure{+CutAt}.................................3 + + #1 sectioning type + #2 before + #3 after + + Requests delimiters for the \CutAt buttons of the specified + sectioning type + + Example: \Configure{+CutAt}{mysection}{[}{]} + +\PauseCutAt{#1} +\ContCutAt{#1} + + #1 section type + +\Configure{CutAt-filename} ........................1 + + A 2-parameter hook for tailoring section-based filenames. + The section type is available through #1. The section title + is accessible through #2. + + Example: \Configure{CutAt-filename}{\NextFile{#1-#2.html}} + + +Tables of Contents +------------------ + +Created from the entries collected in the previous compilation within +a jobname.4tc file. + +\ConfigureToc{unit-name} ......................4 + + #1 before unit number + #2 before content + #3 before page number + #4 at end + + * Empty arguments request the omission of the corresponding field. + + * \TocCount Specifies the entry count withing the jobname.4tc file. + + * \TitleCount Count of entries submitted to the toc file + + * An alternative to \ConfigureToc{unit-name}: + + \def\toc#1#2#3{#1#2% + #3} + + + Example: + + \ConfigureToc{section} + {} + {\Picture[*]{pic.jpg width="13" height="13"}~} + {} + {\HCode{
        }} + + +\Configure{TocLink}..................4 + + Configures the link offered in the third arguments of \ConfigureToc + + Example: \Configure{TocLink}{\Link{#2}{#3}#4\EndLink} + +\TocAt{#1,#2,#3,...} + + #1 section type for which local tables of contents + \Toc#1 are requested + #2,#3,... sectioning types to be included in the tables of + contents + + The non-leading arguments may be preceded by slashes '/', in + which cases the arguments specify end points for the tables. + + The default setting requests automatic insertion of the local + tables immediately after the sectioning heads. + + A star `*' character may be introduced, between the \TocAt and + the left brace, to request the appearances of the tables of + contents at the end of the units' prefaces. + + A hyphen `-' character, on the other hand, disables the automatic + insertions of the local tables. + + In case of a single argument, the command removes the + existing definition of \Toc#1. + + Example: + \TocAt{mychapter,mysection,mysubsection,/myappendix,/mypart} + \TocAt-{mysection,mysubsection,/mylikesection} + \section{...}...\Tocmysection + + The definition of the local table of contents can be redefined + within \csname Toc#1\endcsname. + + Example: + + \TocAt{section} + \def\Tocsection{\TableOfContents[section]} + + \Css{div.sectionTOCS { + width : 30\%; + float : right; + text-align : left; + vertical-align : top; + margin-left : 1em; + font-size : 85\%; + background-color : \#DDDDDD; + }} + + Example: Table of content before the section title. + + \Configure{section}{}{} + {\Tocsection \let\saveTocsection=\Tocsection + \def\Tocsection{\let\Tocsection=\saveTocsection}% + \ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn\ShowPar \IgnoreIndent \par} + + +\Configure{TocAt}......................2 +\Configure{TocAt*}.....................2 + + #1 before the tables of contents + #2 after the tables of contents + + +Navigation Links for Sectioning Divisions +----------------------------------------- + +\Configure{crosslinks}.....................8 + + #1 left delimiter + #2 right delimiter + #3 next + #4 previous + #5 previous-tail + #6 front + #7 tail + #8 up + + The content to be displayed in the pointers + +\Configure{crosslinks*}.................1--7 + + Links to be included and their order. Available + options: next, prev, prevtail, tail, front, up. + The last argument must be empty. + + Default: + + \Configure{crosslinks*} + {next} + {prev} + {prevtail} + {tail} {front} + {up} + {} + +\Configure{crosslinks+}.....................4 + + #1 before top menu + #2 after top menu + #3 before bottom menu + #4 after bottom menu + + The top cross links are omitted, if both #1 and #2 are empty. + The bottom cross links are omitted, if both #3 and #4 are empty. + +\Configure{next}.....................1 + #1 the anchor of the next button of the front page. + + Default: The value provided in \Configure{crosslinks} + +\Configure{next+}.............................2 + + #1 before the next button of the front page, when the `next' + option is active. + #2 after the button + + Default: The values provided in \Configure{crosslinks} + +\Configure{crosslinks:next}..................1 +\Configure{crosslinks:prev}..................1 +\Configure{crosslinks:prevtail}..............1 +\Configure{crosslinks:tail}..................1 +\Configure{crosslinks:front}.................1 +\Configure{crosslinks:up}....................1 + + #1 local configurations for the delimiters and hooks + +\Configure{crosslinks-}.....................2 + + Asks to show linkless buttons with the following insertions. + + #1 before + #2 after + + The default values are used, if both #1 and #2 are empty + + Examples: + + \Configure{crosslinks-}{}{} + + \Configure{crosslinks-} + {\HCode{} } + \Css{span.hidden {visibility:hidden;}} + +Paragraphs +---------- + +\Configure{HtmlPar}..........4 + + #1 content at the start non-indented paragraphs + #2 content at the start indented paragraphs + #3 insertion into \EndP, at the start of non-indented paragraphs + #4 insertion into \EndP, at the start of indented paragraphs + + \HtmlParOff + \HtmlParOn + + \IgnorePar Asks to ignore the next paragraph + \ShowPar Asks to take into account the following paragraphs + + \IgnoreIndent asks to ignore indentation in the next paragraph + \ShowIndent asks to check indentation in the following paragraphs + + \SaveEndP Saves the content of \EndP, and sets it to empty content + \RecallEndP + + \SaveHtmlPar + \RecallHtmlPar + + + Example: + \Configure{@BODY} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }\par\ShowPar} + \Configure{@/BODY} + {\ifvmode \IgnorePar\fi \EndP + \HCode{
        }} + + +Cross-Linking +------------- + +\Link[@1 @2]{@3}{@4}...\EndLink + + Creates + + ... + + * When @1 is empty, tex4ht will derive its value automatically. + The derived value will be the file name containing the target @3. + + * \Link may be followed by `-', if tex4ht needs not automatically + determine (for other \link commands) the file containing @4. + In the present of such a flag, tex4ht can spare a definition of + one macro. + + * The component [@1 @2] is optional. If omitted, @1 and @2 are + assumed to be empty + + * The href attribute is omitted when @1 and @3 are empty + + * The name attribute is omitted when @4 is empty + + Examples: + + \Link{a}{}...\Endlink ..... \Link{}{b}...\EndLink + \Link[http://foo id="fooo"]{a}{b}...\EndLink + +\Configure{Link}..............4 + + Configures \Link...\EndLink so that + + #1 replaces `a' + #2 replaces `href=' + #3 replaces `name=' + #4 replaces `#'. If empty, the older value remains in effect. + + Examples: + + \Configure{Link}{a}{href=}{name=}{} + \Configure{Link}{ref}{target=}{id=}{\empty} + +\Configure{?Link}..............1 + + #1 insertion before broken links + + To help with debugging + +\LinkCommand...................1 <= i <= 6 + + Creates a \Link-like command + + #1 tag name + #2 href-like attribute + #3 name-like attribute + #4 insertion + #5 /, if empty element + #6 replacement for # (ignored if absent) + + Example: + + \LinkCommand\JSLink{a,\noexpand\jsref,name} + \def\jsref="#1"{href="javascript:window.open('#1')"} + + \JSLink{a}{}xx\EndJSLink + \Link{}{a}\EndLink % or \JSLink{}{a}\EndJSLink + +\Configure{XrefFile}.....................1 + + #1 names cross-references of files (appends #1 to `)F' and `)Q' + entries of the .xref files). Applicable mainly implicitly + within \Link commands + +\Tag.....................................2 + + #1 label + #2 content + +\Ref.....................................1 +\LikeRef.................................1 + + #1 label + + \Tag and \Ref are tex4ht.sty commands introduced cross-referencing + content through .xref auxiliary files. + + \LikeRef is a variant of \Ref which doesn't verify whether the + labels exit. It is mainly used in \Link and \edef environments. + +\ifTag ..................................3 + + #1 quetioned tag + #2 true part + #3 false part + +\LoadRef-[prefix]+{filename.ext}{pattern} + + Load the named xref-type file + + .xref optional--`.xref' is assume for a default + + optional-- asks \Ref and \LikeRef commands + to use expanded tags `filename::tag', instead of just `tag' + [prefix] optional--asks just for tags starting with the + specified prefix. + - optional--deletes the prefixes from the loaded tags + {pattern} to be included only when `[prefix]' or `+' are included. + States how tags are to be addressed, with the parameter + symbol `#1' specifying the loaded part. + + Example: + + % a.tex + \LoadRef-[to:]{b}{from:#1} \Ref{from:filename} + \LikeRef{from:filename} + + % b.tex + \Tag{to:filename}{\FileName} + + Example: + + \LoadRef-[)F]{file}{)Ffoo##1} + \LoadRef-[)Q]{file}{)Qfoo##1} + \Configure{XrefFile}{foo} \Link...\EndLink + + \LoadRef{another-file} + + +Files +----- + +\FileName Holds the name of the current hypertext file +\FileNumber Holds the internal number of the current hypertext file +\RefFileNumber...........................1 + #1 File number + + Provides the file name + +\NextFile.................................1 + #1 Requested name for the next file + +\Hinput{#1} + + The command asks to load the configuration files associated + with mark #1. + +\Hinclude[#1]{#2} + + The command associates configuration file #2 with mark #1. If + the mark is the star character `*', the configuration files is + associated to all marks. The command is applicable until the + \Preamble command is processed + + For instance, \Hinclude[*]{html4.4ht}....\Hinput{latex} + +\Hinclude{#1}{#2} + + The command is applicable while the \Preamble command is + processed. Its purpose is to load *4ht hook files within + the fragments of code specified in #1. + + For instance, \Hinclude{\input plain.4ht}{plain} + + +Fonts +----- + +\Configure{htf}...............................9 + + #1 label (integer 0--255) + #2 delimiter (a character not appearing in #3,...,#9) + even label odd label + #3 start opening tag start empty tag + #4 name alt + #5 size name + #6 mag size + #7 mag + #8 end the tag ord + #9 closing tag end the tag + + The htf fonts assign a content and a label to each symbol (possibly + followed by a comment). For instance, + + 'e' '1' epsilon + 'z' '3' zeta + + An even label asks that the content itself will be used for the + symbol, and an odd label asks that the symbol will be represented by a + bitmap. In the later case, the content serves as a substitution for + browsers which don't exhibit bitmaps. + + The \Configure{htf}... command provides label-dependent wrappers to + chosen representations. + + If they are not empty, `mag' and `ord' must be c-type + patterns for integer arguments, and `name' and `size' + should be a patterns for strings. The `mag' entry is + ignored for fonts of the default dimension. Together + they specify a attribute-value format, mainly for references + in the css code. + + Examples: + + \Configure{htf}{0}{+}{}{} + \Configure{htf}{1}{+}{} + +\Configure{htf-attr}....................... 2 + + #1 c-pattern for the font name and size + #2 c-pattern for font magnification + + Specify the format of the selectors within the css files. + + Example: + \Configure{htf-attr}{.\%s-%s}{--\%s} + +\Configure{htf-css}....................... 2 + + #1 font name or label + #2 css entry + + A variant of the \Css command. If #1 is a font name, + the contribution replaces the one given within the + htf font definition. If #1 is a label for an entry + of a htf font, the contribution is added to the css + file. The contribution is offered, only when the + font is in use. + + Example: + + \Configure{htf-css}{4}{.small-caps{font-variant: small-caps;}} + + +Bitmaps +------- + +\Configure{Picture}....................... #1 + + #1 Extension name for bitmap files of dvi pictures, + stored in \PictExt + + Default: \Configure{Picture}{.png} + + The extension names of bitmap files of glyphs of htf fonts may be + determined within a g-entry in the environment file tex4ht.env, or a + g-flag of the tex4ht.c utility. + +\Configure{Picture-alt}......................1 + + #1 alt value for \Picture+{...} and \Picture*{...} + +\Configure{Picture+}.........................2 +\Configure{Picture*}.........................2 + + #1 before the dvi picture code + #2 after the dvi picture code + + Typically, the plus `+' variant is introduced as an inline + contribution into paragraphs, and the star `*' variant as an + independent block between paragraphs. + +\Configure{PictureAlt}........................2 +\Configure{PictureAlt*+}......................2 +\Configure{PictureAlt*+[]}....................2 + + #1 definitions before alt + #2 definitions after alt + + Apply to \Picture{...}, \Picture*+{...}, and \Picture*+[...]{...} + +\Configure{PictureAlt}........................1 +\Configure{PictureAlt*+}......................1 +\Configure{PictureAlt*+[]}....................1 + + #1 definition for attributes (introduced through + a parameter named `#1') + + Apply to \Picture{...}, \Picture*+{...}, and \Picture*+[...]{...} + +\Configure{IMG}...............................5 + + #1 before file name + #2 between file name and alt + #3 close alt for \Picture without * or + + #4 close alt for \Picture with * and + + #5 right delimiter + + Example: + + \Configure{IMG} + {\ht:special{t4ht=}}
+        { + \overwithdelims + \atopwithdelims + \abovewithdelims + + Example: + + \Configure{over} + {\Send{GROUP}{0}{[before]}[before-rule]} + {[before-argument]\Send{EndGROUP}{0}{[after]}} + + +\Configure{MathClass}........................5 + + #1 class number + 0: mathord, 1: mathop, 2: mathbin, 3: mathrel, + 4: mathopen, 5: mathclose, 6: mathpunc + #2 delimiter + #3 before + #4 after + #5 characters + + Extra support: + + \PauseMathClass + \EndPauseMathClass + \NewMathClass (7, 8, ...) + +\Configure{FormulaClass}.....................4 + + #1 class number + 0: mathord, 1: mathop, 2: mathbin, 3: mathrel, + 4: mathopen, 5: mathclose, 6: mathpunc + #2 a character not in #3 and #4 + #3 before + #4 after + + If #2 is empty, the formula gets the same marking as a + single character of the specified type + +\Configure{FormulaClass*}....................4 + + Like the previous case, but allow marking in the + nested content. + +\Configure{MathDelimiters}...................2 + + #1 left + #2 right + +\Configure{mathbin*}.........................4 +\Configure{mathclose*}.......................4 +\Configure{mathop*}..........................4 +\Configure{mathopen*}........................4 +\Configure{mathord*}.........................4 +\Configure{mathpunct*}.......................4 +\Configure{mathrel*}.........................4 + + #1 a character not presented in #2#3#4 + #2 code before + #3 code after + #4 possible definitions for successive cases + + Example: + \Configure{mathop*}{*}{}{} + {\Configure{mathop}{*}{}{}{}} + \mathop{\overline{x \mathop{op} y}} \limits^{a=3} + +\Configure{mathbin}..........................4 +\Configure{mathclose}........................4 +\Configure{mathopen}.........................4 +\Configure{mathop}...........................4 +\Configure{mathord}..........................4 +\Configure{mathpunct}........................4 +\Configure{mathrel}..........................4 + +Variants of the above group, requesting to supress nested marks. + +\Configure{nolimits}.........................1 + +\MathSymbol + +AtBeginDocument +--------------- + +\Configure{AtBeginDocument}..................2 + + #1 before the corresponding hook of latex + #2 after + + Insertions are accumulative, and can be erased by providing + two empty arguments + +Other Hooks +----------- + + \Configure{HChar}...................1 + + #1 a character + + The \HChar{i} instruction inserts the character code i with the + font information of character #1, when i is positive. If i is + negative, the font info is not included. + + +\Configure{Canvas} +\Configure{ExitHPage} +\Configure{LinkHPage}......................1 +\Configure{FontCss} +\Configure{HVerbatim+} +\Configure{MiniHalign} +\Configure{Needs-} +\Configure{Needs} + + +\Configure{TraceTables} +\Configure{edit} +\Configure{halignTB} +\Configure{halignTD} +\Configure{halign} +\Configure{hooks} +\Configure{moveright} + +\Configure{noalign-} +\Configure{pic-halign} + +\Configure{accent} +\Configure{mathaccent} +\Configure{accented} +\Configure{accenting} + + +Back-end Specials +----------------- + insertions + ---------- + = \special{t4ht=...content...} + Insert the specified content to the html output, under + edef mode of processing, and without using the mapping + of the htf fonts. Used in \HCode{...}. + @ \special{t4ht@...integer...} + Insert the absolute value as character code to the output. + Positve values ask the insertion to be included in place + of the next chracter, together with the font information + of that character. + files + ----- + > \special{t4ht>...file-name...} + Open a new file, if needed, and direct future output + to the specified file. Used in \File{...}. + < \special{t4ht<...file-name...} + Close the specified file. If it is the current file, + activate the youngest file. Used in \EndFile{...}. + >* \special{t4ht*>...file-name...} + Declare the file to be the oldest. + \special{t4ht*>} + Reactivate the file that activated the current file. + *< \special{t4ht*... push current value + :<... pop current value + :!... display current value + :|... display top value + + messages to lg file + ------------------- + + \special{t4ht+@...message...} + Send message to the lg file. Used in the \Needs{...} command. + @ \special{t4ht@D....} + Send message to the lg file, together with location and file + stamp. + + positional code + ------------------- + " \special{t4ht"} + Start/end positional env + \special{t4ht"* before-all * after-all ...** before-char + * after-char * rect + *%A*%B*%C*%D*%E + * optional + Configure positioned code + * before-all + * after-all %... + ** before-char %x %y + * after-char + * rect %x1 %y1 ... + * x,x1-coefficients %A(x) + %B + * y1-coefficients %C(y1 - %E(height)) + %D + * y-coefficients %C(y) + %D + * optional: 1, 2 + + %x1 %y1 %length %thickness default + %x1 %y1 %x1+length %y1+thickness 1 + %x1 %y1 %x1+length %y1 %thickness 2 + + A-magnification, B-displacement + C-magnification, D-displacement, + E- origin (0: top, 0.5: mid, 1: bot) + + The %...'s should be c-type templates (e.g., "%.2f"; "%.0f" + gives an integer) + + Multiple after-all templates are allowed. The leading + character is a code specifying the dimension type. + x min x + X max x + y min y + Y max y + d dx + D dy + otherwise a string with no values + The delimiter `*' can be substitued by another character. + + + ~ \special{t4ht~...} + Grouped-base two-way delivery for content created by + inline commands like \over. + + \special{t4ht~}...\special{t4ht~} on/off + + ~i... send forward to the end of the group nested + at relative level i. + i=0, current group + + + ~<*... send back to start of previous token / group. + \special{t4ht~<)}...\special{t4ht~<(} + activate / deactivate back token / group submissions + \special{~<[}...\special{t4ht~<]}' + hide region from back submissions over token / group + \special{t4ht~<-} ... \special{t4ht~<+} + latex back token / group + + \special{t4ht\string~!...path...<...content} + insertion at the start of the group reached by the path + \special{t4ht\string~!...path...>...content} + insertion at the end of the group reached by the path + \special{t4ht\string~!...path.../} + ignore content within the group reached by the path + \special{t4ht\string~!...path...-} + ignore rulers from the group reached by the path + until the start of the next group + A path may consist only of `e' and `s' characters for, + respectively, entering and skipping groups + + *! \special{t4ht*! system command} + System call + *^ accent specials + t text accent #1#2#1#3#1#4#1#5#1#6 pattern + empty insertion point + m math accent #1#2#1#3#1#4#1#5#1 pattern + empty insertion point + a accented #1#2#1#3#1#4#1#5#1#6 + i #1#2#1#3#1#1 + *@ halign specials + +\HCode...............................1 + + A wrapper for \special{t4ht=...}. + + The sharp symbol # may be accessed indirectly through the command. + +\Hnewline............................0 + + Requests new lines within specials +>>> + +%%%%%%%%%%%%%%% +\section{latex} +%%%%%%%%%%%%%%% + + + + + +\>>>VBorder<<< +\Configure{VBorder}...................4 + + Break points, when scanning the pattern of column desriptions, at + + #1 at start of pattern + #2 at | + #3 at a non-@ entry + #4 at a @ entry + + Applies to \begin{tabular / array}{...pattern...} + + \ar:cnt index of entry in pattern + \ch:class records the current alignment type: -,<,>,p,... + \HColAlign produces the \Configure{halignTD} contribution + for the current alignment type + \HColWidth holds the width of the current p column + +\Configure{HBorder}..................10 + + hline: + #1 insert at start of row (e.g., ) + #2 insert at each cell (e.g.,
        ) + #3 insert at end of row (e.g., ) + + cline: + #4 insert at start of row (e.g., ) + #5 insert at each `extra' cell (e.g., ) + #6 insert at each cell (e.g.,
        ) + #7 insert at end of row (e.g., ) + + vspace: + #8 insert at start of row (e.g., ) + #9 insert at each cell (e.g.,  ) + #10 insert at end of row (e.g., ) + + The contributions are collected into \HBorder. (The \InitHBorder + clears \HBorder.) + +\Configure{putHBorder}...............1 + #1 Specifies how \HBorder is to be used. + + Example: \Configure{putHBorder}{\HCode{\HBorder}} + +>>> + +\<<< +Sectioning +---------- + +\Configure{@sec @ssect} + + +Tables of Contents +------------------ + + +\Configure{tableofcontents}........................5 + + #1 before + #2 at end + #3 after + #4 at indented paragraph break + #5 at non-indented paragraph break + + The \tableofcontents command may be followed by a comma separated + list of sectioning unit names to be included in the table of + contents. The list should be enclosed within square brackets. + Alternatively, a command of the form \TableOfContents[...] might + be used. + +Lists +----- + +\ConfigureList.....................5 + + #1 type of list (e.g., itemize, description, enumerate, + list, trivlist) + #2 before list + #3 after list + #4 before label + #5 after label + + \DeleteMark removes latex's label; to be placed at the end of #4 + \AnchorLabel defines an anchor for \label in current item; to + be placed in #5 + + +Tables +------ + +\Configure{tabular}...................6 +\Configure{array}.....................6 + + #1 before table #2 after table + #3 before row #4 after row + #5 before cell #6 after cell + + \HRow current row number + \HCol current column number + \HMultispan number of cells covered by the current cell + \ar:cnt number of columns in the table + + NOTE: Table require a number of compilations that depends + on the number of columns. + + Example + + \Configure{tabular} + {\HCode{}} + {\HCode{
        }} + {\HCode{}} + {\HCode{}} + {\HCode{1 colspan="\HMultispan"\fi >}} + {\HCode{}} + +|VBorder + +\Configure{halignTD}..................2 + 2i + {} + + interpretation for character codes referenced in \HAlign + + e.g., + + \Configure{halignTD} + {}{} + {<}{\HCode{style="text-align:left"}} + {-}{\HCode{style="text-align:center"}} + {>}{\HCode{style="text-align:right"}} + {^}{\HCode{style="vertical-align:top"}} + {=}{\HCode{style="vertical-align:baseline"}} + {||}{\HCode{style="vertical-align:middle"}} + {_}{\HCode{style="vertical-align:bottom"}} + {p}{\HCode{style="text-align:left"}} + {} + + \halignTD can be used in td elements to extract the alignment. + It recieves information from \halignTB. + +\Configure{halignTB}..................2 + + delimiters for \halignTB{tabular} + + Example + \Configure{halignTB}{\HCode{}} + +\Configure{tabbing}[mag]..................4 + + #1 before each line + #2 after each line + #3 before each entry + #4 after each entry + + [mag] optional parameter specifying the magnification desired + for the dimensions. When offered, the other parameters + have no effect if all of them are assigned empty arguments + + \TabType \` or \relax + \TabWidth Provides the entry width; 0 at trailing entry that is + not flushed rightward + + +Cross References +---------------- + +\Configure{ref}.......................3 + + #1 \Link-type command + #2 \EndLink-type command + #3 anchor (the system anchor is + reachable through the parameter name #1) + \RefArg Holds the argument of \ref + + If #1 is empty, the hyper links are ignored + If #3 is empty, the anchor is the one provided by the system + + Example: + + \Configure{ref}{\Link}{\EndLink}{{\bf #1}} + +\Configure{pageref}...................3 + + #1 before + #2 after + #3 anchor (system anchor, if parameter is empty) + +\Configure{newlabel}..................2 + + #1 address for hyperlink (\cur:th \:currentlabel, if empty) + #2 anchor (the system anchor is + reachable through the parameter name #1) + +\Configure{@newlabel}.................1 + + #1 modifications to the newlabel environment + +\Configure{newlabel-ref}..............1 + + #1 an intermediate link command for the aux file + (Configured by \Configure{ref}...) + + The default for #1 is \rEfLiNK + +\Configure{cite}......................4 + + #1 before + #2 after + #3 \Link-type command + #4 \EndLink-type command + + If #3 is empty, the hyper links are ignored. + +\Configure{bibitem}...................2 + + #1 \Link-type command + #2 \EndLink-type command + +\Configure{bibcite}...................1 + + #1 configurations for content transfered by bibitem to the aux file + + Example: + \Configure{bibcite} + {\def\hookrightarrow{\string\hookrightarrow}} + \bibitem[$\hookrightarrow$...]{...} + + +\LoadLabels[#1]{#2}.................... + + [#1] optional group name + #2 aux file name, without the extension + + Loads labels of another file, under the specified group name + +\RefLabel.............................2 + + #1 group name (for separating files and labels from + different sources) + #2 label + + A variant of \ref for loading labels produced for other files + + Example: + file1.tex: \label{foo} + + file2.tex: \LoadLabels[x]{file1} + \RefLabel{x}{foo} + +\SkipRefstepAnchor.....................0 + + No \Link anchor for next \refstepcounter + +\ShowRefstepAnchor.....................0 +\AutoRefstepAnchor.....................0 + + +Bibliography on bibtex2 option: + + \Configure{bibliography2}........................ 4 + + #1 before anchor + #2 anchor + #3 after anchor + #4 link attributes + + Example: + + \Configure{bibliography2} + {\bgroup ~~[\Configure{Link}{a}{target="x" href=}{ name=}{}} + {more} {]\egroup} + + \Configure{bibitem2}..............................3 + + #1 at start of bibitem + #2 at end of bibitem + #3 separator after label + + \Configure{bibliographystyle2}....................1 + + #1 an empty argument asks for the same style as the + normal aux file (still bibtex may produce different + output). + +Note: Option `bibtex2' requires compilation + of `\jobname j.aux' with bibtex. + +Captions +-------- + +refcaption + + An option for \Preamble, requesting anchors at \caption. The default + setting sends them back to the start of the floating environment. + + +Theorems +-------- + +\Configure{newtheorem} ......................3 + + #1 before theorem + #2 between title and body + #3 after theorem + +Math +---- +\Configure{()}...............................2 +\Configure{[]}...............................2 + + Example: + + \Configure{()}{\protect\PicMath$}{$\protect\EndPicMath} + \Configure{[]} {\Tg\DviMath$$} {$$\EndDviMath\Tg} + +\Configure{equation}.........................3 + + #1 at start + #2 between the equation and its numbering + #3 at end + + Examples: + + \Configure{equation} + {\IgnorePar\EndP\bgroup \Configure{HtmlPar}{}{}{}{}% + \HCode{
        }\IgnorePar + } + {\HCode{}} + {\HCode{
        }\egroup} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \Configure{equation} + {\IgnorePar\EndP \bgroup \Configure{$$}{}{}{}% + \Configure{@math}{display="inline"}\DviMath + \HCode{}\IgnorePar + } + {\IgnorePar\HCode{}} + {\HCode{}\EndDviMath\egroup} + + +\Configure{frac}.............................4 +\Configure{sqrtsign}.........................2 + +\Configure{mbox}.............................2 + +Environments of latex +--------------------- + + \ConfigureEnv{...}.........................4 + + #1 environment name + #2 before env + #3 after env + #4 before underlying list + #5 after underlying list + + #2 and #3 are ignore when they are both empty as well as + when there is no underlying list + + + array + center + flushleft + flushright + minipage + tabbing + tabular + verbatim* + verbatim + + + \Configure{@begin}........................2 + + #1 environment name + #2 insertion before the environment + + Example: + \Configure{@begin}{theindex}{\section*{\indexname}} + + +Verbatim +-------- + +\Configure{verbatim}......................2 + + #1 at start of line + #2 space character + +\Configure{verb}..........................2 + + #1 before + #2 after + +\Configure{obeylines}.....................3 + + #1 before + #2 at start of line + #3 after + +\ScriptEnv................................3 + + Introduces a verbatim environent + + #1 name + #2 before + #3 after + + A `-' immediately after \begin{...} designate as an escape symbol + the character following the dash + + Example: + + \ScriptEnv{foo} + {\HCode{}\NoFonts\hfill\break } + {\EndNoFonts \HCode{}} + + \begin{foo} + .... + .... + \end{foo} + + \begin{foo}-| + .... + .... + \end{foo} + + +Fonts +----- + +\Configure{texttt}........................2 +\Configure{textit}........................2 +\Configure{textrm}........................2 +\Configure{textup}........................2 +\Configure{textsl}........................2 +\Configure{textsf}........................2 +\Configure{textbf}........................2 +\Configure{textsc}........................2 +\Configure{emph}..........................2 + + #1 before content + #2 after content + + +Footnotes +--------- + +\Configure{footnotetext}..................3 + + #1 before footnote + #2 between mark and content + #3 after footnote + + \FNnum footnote number + +\Configure{footnotemark}..................2 + + #1 before + #2 after + +Pictures +-------- + +\Configure{picture}.......................2 + + #1 before + #2 after + +Other Hooks +----------- + +\Configure{ }.........................1 + + #1 representation for non-breaking space ch + +\Configure{hline}.....................1 + +\Configure{hspace} ...................3 + + \tmp:dim register holding the size + #1 before the space + #2 after the space + #3 after #1 (\tmp:dim mod 6em copies) + +\Configure{vspace} ...................1 + + #1 the size of space is prvided in a parameter nmaed `#1' + + Example: + + \Configure{vspace} + {\ifhmode + \HCode{
        }% + \ifdim #1>1ex \HCode{
        }\fi + \fi + } + +\Configure{fbox} .................................. 2 + + Examples: + + \Configure{fbox} + {\HCode{
        }\bgroup \fboxrule=0pt} + {\egroup\HCode{
        }} + \Css{div.fbox {border: 1pt solid black;}} + + \Configure{fbox} + {\HCode{
        }\bgroup \fboxrule=0pt} + {\egroup\HCode{
        }} + +\Configure{'} ..................................... 3 + + #1 at entry to math prime environment + #2 at exit + #3 content of \prime + +\Configure{float}.................................... + #1 optional, to appear within brakects [ and ]. An anchor for + the links preceeding the float, when option refcaption is + not active + #2 Insertion before the links + #3 at start + #4 at end + +\Configure{textcircled}.............................2n+1 + 2i'th replaced i=1,...,n + 2i+1'st replacement + 2n+'nd empty (terminator) + + +\Configure{add accent}{#1:#2}{#3}{#4}...{}{} + #1 encoding + #2 font number + #3 character under font + #4 replacement + + Applies to accents that reach \add@accent + + Example: + + \Configure{add accent}{OT4:18} + {E}{\add:acc{00C8}} + {e}{\add:acc{00E8}} + {}{} + + + + +\Configure{//[]} +\Configure{AfterTitle} +\Configure{HAccent} +\Configure{InsertTitle} +\Configure{accents} +\Configure{accent} +\Configure{centercr} +\Configure{centerline} + +\Configure{displaylines} +\Configure{framebox} + +\Configure{leftline} +\Configure{marginpar} +\Configure{mathaccent} +\Configure{newline} +\Configure{oalign} + +\Configure{overline} + +\Configure{rightline} +\Configure{stackrel} +\Configure{tt} +\Configure{underline} +\Configure{thanks}....................2 + +>>> + + +%%%%%%%%%%%%%%% +\section{book} +%%%%%%%%%%%%%% + + +\>>>maketitleInfo<<< +Title Page +---------- +\Configure{maketitle}.....................4 + + #1 start of maketitle + #2 end of maketitle + #3 before title + #4 after title + +\Configure{thanks author date and}........8 + + #1 before thanks + #2 after thanks + #3 before author + #4 after author + #5 before date + #6 after date + #7 representation of `and' + #8 line breaks (= end of rows, for an embedded tabular environment) +>>> + +\>>>thebibliographyInfo<<< +Bibliography +------------ + +\ConfigureList{thebibliography}......4 + + #1 before list + #2 after list + #3 before label + #4 after label + + \DeleteMark removes latex's label; to be placed at the end of #3 + \AnchorLabel defines an anchor for \label in current item; to + be placed in #4 + +\Configure{cite} see the +\Configure{bibitem} latex section +>>> + + + + + +\>>>tableofcontentsStr<<< +\Configure{tableofcontents*}.......................1 + + #1 A non-empty parameter asks to implicitly introduce + a \tableofcontents upon reaching the first sectioning + command, if no \tableofcontents command is encountered + earlier. The parameter assumes a colon-separated list + of sectioning types to be included in the output + of \tableofcontents. Starred variants of sectioning + types should be referenced with the `like' prefix. + + An empty parameter cancels earlier requests for implicit + calls to \tableofcontents (e.g., embedded within requests + to package options 1, 2, 3, 4) + + Example: + + \Configure{tableofcontents*}{part,likepart,% + section,likesection,subsection,likesubsection} + +\contentsname + + A LaTeX macro stating the title for a table of contents division. +>>> + +\>>>theindex<<< +\Configure{theindex} ..........................9 + + #1 before-env + #2 after-env + #3 before-item + #4 after-item + #5 before-subitem + #6 after-subitem + #7 before-subsubitem + #8 after-subsubitem + #9 at-indexspace + + Example: + + \Configure{theindex} + {\HCode{
          }\global\let\IndexSpace=\empty} + {\HCode{
        }} + {\HCode{
      2. }\global\let\IndexSpace=\empty} + {\HCode{
      3. \Hnewline}} + {\HCode{
      4. }\ \ \ \ } {\HCode{
      5. \Hnewline}} + {\HCode{
      6. }\ \ \ \ \ \ \ \ } {\HCode{
      7. \Hnewline}} + {\global\def\IndexSpace{class="indexspace"}} + + \Css{.indexspace{margin-top:1em;}} + + The links are indirectly requested in the idx files within + \beforeentry macros. For instance, a file try.tex + + \documentclass{article} + \makeindex + \begin{document} + + \section{xx} + + \index{a1} x + \index{a2} x + \index{a2} x + \index{b1} x + \index{b2} x + \index{b3} x + + \input \jobname.ind + + \end{document} + + produces a file try.idx of the form + + \beforeentry{try.html}{dx1-1001}{} + \indexentry{a1}{1} + \beforeentry{try.html}{dx1-1002}{} + \indexentry{a2}{1} + \beforeentry{try.html}{dx1-1003}{} + \indexentry{a2}{1} + \beforeentry{try.html}{dx1-1004}{} + \indexentry{b1}{1} + \beforeentry{try.html}{dx1-1005}{} + \indexentry{b2}{1} + \beforeentry{try.html}{dx1-1006}{} + \indexentry{b3}{1} + + where each pair + + \beforeentry{A}{B}{}\indexetry{C}{D} + + represents an entry of the form + + \indexentry{\Link[A]{B}{}C\EndLink}{D} + + The makeindex utility ignores the \beforeentry records. To compensate + for that, one needs to pre-process the idx file which is introduced to + the makeindex utility and/or post-process the output of the utility. + + A script consisting of two instructions similar to + + tex '\def\filename{{try}{idx}{4dx}{ind}} \input idxmake.4ht' + makeindex -o try.ind try.4dx + + instead of + + makeindex -o try.ind try.idx + + should do the job. + + On some platforms, the quotation marks ' should be + replaced by double quotation marks " or eliminated. + +\Configure{makeindex} ..........................1 + + The default setting, requests consecutive numbers for the + pointers in the indexes. The current command provides the + means to configure the pointers to other values. + + Example: \Configure{makeindex}{Sec \arabic{section}} +>>> + + + + +\<<< +|maketitleInfo + +Sectioning +---------- + +\Configure{part} +\Configure{section} +\Configure{subsection} +\Configure{subsubsection} +\Configure{paragraph} +\Configure{subparagraph} + +\Configure{likepart} +\Configure{likechapter} +\Configure{likesection} +\Configure{likesubsection} +\Configure{likesubsubsection} +\Configure{likeparagraph} +\Configure{likesubparagraph} +|thebibliographyInfo + + +\ConfigureToc + + lof, lot, appendix, chapter, likechapter, likeparagraph, likepart, + likesection, likesubparagraph, likesubsection, likesubsubsection, + paragraph, part, section, subparagraph, subsection, subsubsection + + +\Configure{appendixTITLE+}........1 +\Configure{chapterTITLE+}.........1 +\Configure{partTITLE+}............1 +\Configure{sectionTITLE+}.........1 +\Configure{subsectionTITLE+}......1 +\Configure{subsubsectionTITLE+}...1 + + #1 the content of + + The insertion overrides the one offered by \Configure{CutAtTITLE+} + for the given section type (the `like' counterparts acn also be + configured). + + The sectioning title content can be accessed through the parameter #1. + + Example: + + \Configure{chapterTITLE+}{Synodos - #1} + +\Configure{endpart}................1 +\Configure{endchapter}.............1 +\Configure{endsection}.............1 +\Configure{endsubsection}..........1 +\Configure{endsubsubsection}.......1 +\Configure{endparagraph}...........1 +\Configure{endsubparagraph}........1 +\Configure{endappendix}............1 +\Configure{endlikepart}............1 +\Configure{endlikechapter}.........1 +\Configure{endlikesection}.........1 +\Configure{endlikesubsection}......1 +\Configure{endlikesubsubsection}...1 +\Configure{endlikeparagraph}.......1 +\Configure{endlikesubparagraph}....1 + + #1 a comma separated list specifying the end + points for the configured logical unit + + e.g., \Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} + + + +|tableofcontentsStr + + +Index (\theindex) +----------------- + +|theindex + + +Environments of book: +--------------------- + + \ConfigureEnv{...}.........................4 + + description + figure + figure* + quotation + quote + table + table* + thebibliography + titlepage + verse + +\Configure{listof} + +\Configure{appendix} +\Configure{caption} +\Configure{chapter} +>>> + + + + + + + + + +\section{report} + +\<configure info4ht report\><<< +|maketitleInfo +|thebibliographyInfo + + +\ConfigureList{description}% + +\ConfigureToc + + lof, lot, appendix, chapter, likechapter, likeparagraph, likepart, + likesection, likesubparagraph, likesubsection, likesubsubsection, + paragraph, part, section, subparagraph, subsection, subsubsection + + +\Configure{appendixTITLE+} +\Configure{chapterTITLE+} +\Configure{partTITLE+} +\Configure{sectionTITLE+} +\Configure{subsectionTITLE+} +\Configure{subsubsectionTITLE+} + + #1 an insertion just before the content of <TITLE>; + + The insertion overrides the one offered by \Configure{CutAtTITLE+} + for the given section type (the `like' counterparts acn also be + configured). + + If #1 is a one parametric macro, it gets the title content for + an argument. + + +\Configure{endpart}................1 +\Configure{endchapter}.............1 +\Configure{endsection}.............1 +\Configure{endsubsection}..........1 +\Configure{endsubsubsection}.......1 +\Configure{endparagraph}...........1 +\Configure{endsubparagraph}........1 +\Configure{endappendix}............1 +\Configure{endlikepart}............1 +\Configure{endlikechapter}.........1 +\Configure{endlikesection}.........1 +\Configure{endlikesubsection}......1 +\Configure{endlikesubsubsection}...1 +\Configure{endlikeparagraph}.......1 +\Configure{endlikesubparagraph}....1 + + #1 a comma separated list specifying the end + points for the configured logical unit + + e.g., \Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} + + +|tableofcontentsStr + + +\Configure{appendix}................4 +\Configure{chapter} +\Configure{likechapter} +\Configure{likeparagraph} +\Configure{likepart} +\Configure{likesection} +\Configure{likesubparagraph} +\Configure{likesubsection} +\Configure{likesubsubsection} +\Configure{paragraph} +\Configure{part} +\Configure{section} +\Configure{subparagraph} +\Configure{subsection} +\Configure{subsubsection} + + +|theindex + +Environments of report: +---------------------- + + \ConfigureEnv{...}.........................4 + + abstract + description + figure + figure* + quotation + quote + table + table* + thebibliography + titlepage + verse + +\Configure{listof} +\Configure{thanks author date and} +\Configure{caption} +>>> + +\section{article} + +\<configure info4ht article\><<< +|maketitleInfo + +Sectioning Commands +------------------- +\Configure{part}...................4 +\Configure{section}................4 +\Configure{subsection}.............4 +\Configure{subsubsection}..........4 +\Configure{paragraph}..............4 +\Configure{subparagraph}...........4 + + #1 before division + #2 after division + #3 before title + #4 after title + +\Configure{likepart}...............4 +\Configure{likesection}............4 +\Configure{likesubsection}.........4 +\Configure{likesubsubsection}......4 +\Configure{likeparagraph}..........4 +\Configure{likesubparagraph}.......4 + + starred versions of the sectioning commands + +\Configure{endpart}................1 +\Configure{endsection}.............1 +\Configure{endsubsection}..........1 +\Configure{endsubsubsection}.......1 +\Configure{endparagraph}...........1 +\Configure{endsubparagraph}........1 +\Configure{endlikepart}............1 +\Configure{endlikesection}.........1 +\Configure{endlikesubsection}......1 +\Configure{endlikesubsubsection}...1 +\Configure{endlikeparagraph}.......1 +\Configure{endlikesubparagraph}....1 + + #1 a comma separated list specifying the end + points for the configured logical unit + + e.g., \Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} + +\Configure{partTITLE+} +\Configure{sectionTITLE+} +\Configure{subsectionTITLE+} +\Configure{subsubsectionTITLE+} + + + #1 an insertion just before the content of <TITLE>; + + The insertion overrides the one offered by \Configure{CutAtTITLE+} + for the given section type (the `like' counterparts acn also be + configured). + + If #1 is a one parametric macro, it gets the title content for + an argument. + + +|thebibliographyInfo + +Tables of Content +----------------- +\ConfigureToc + + lof, lot, appendix, chapter, likechapter, likeparagraph, likepart, + likesection, likesubparagraph, likesubsection, likesubsubsection, + paragraph, part, section, subparagraph, subsection, subsubsection, + +|tableofcontentsStr + + +Captions +-------- + +\Configure{caption}...............4 + + #1 before number #2 after number + #3 before title #4 after title + +Indexes +------- + +|theindex + +Environments of article: +------------------------ + + \ConfigureEnv{...}.........................4 + + abstract + description + figure + figure* + quotation + quote + table + table* + thebibliography + titlepage + verse + +Other Hooks +----------- +\Configure{listof} +>>> + +\section{fontmath} + +\<configure info4ht fontmath\><<< +\Configure{mathbf}........................2 +\Configure{mathit}........................2 +\Configure{mathrm}........................2 +\Configure{mathsf}........................2 +\Configure{mathtt}........................2 + + #1 before content + #2 after content + +\Configure{overbrace}.................3 +\Configure{underbrace}................3 +>>> + + +\section{graphics} + +\<configure info4ht graphics\><<< +\Configure{graphics}...............2 + + #1 before \includegraphics + #2 after \includegraphics + + + Examples: + + \Configure{graphics} + {\Picture+[PIC]{ class="graphics"}} + {\EndPicture } + + \Configure{graphics} + {\bgroup + \Configure{IMG} + {\ht:special{t4ht=<img src="}} + {\ht:special{t4ht=" alt="}} + {" } + {\ht:special{t4ht=" }} + {}% + \Picture+[PIC]{}} + {\EndPicture + \def\temp{.pstex}\expandafter\ifx + \csname Gin@ext\endcsname\temp + \HCode{ width="75\%" }\fi + \HCode{ />}% + \egroup} + + +\Configure{graphics*}..............2 + + #1 extension name + #2 insertion + + \Gin@base (file name), \Gin@ext, \Gin@req@width, \Gin@req@height, + \noBoundingBox (defined iff bounding box is unknown) + + Allows to configure tex4ht for graphics files named in + the \includegraphics macro, based on the type of the files. + + An empty insertion #2 cancels previous requests for the + specified extension. + + Example: + + \Configure{graphics*} + {jpg} + {\Picture[pict]{\csname Gin@base\endcsname.jpg}} + + \Configure{graphics*} + {wmf} + {\Needs{"convert \csname Gin@base\endcsname.wmf + \csname Gin@base\endcsname.gif"}% + \Picture[pict]{\csname Gin@base\endcsname.gif + width="\expandafter\the\csname + Gin@req@width\endcsname" + height="\expandafter\the\csname + Gin@req@height\endcsname"}% + } + + \Configure{graphics*} + {eps} + {\openin15=\csname Gin@base\endcsname\PictExt\relax + \ifeof15 + \Needs{"convert \csname Gin@base\endcsname.eps + \csname Gin@base\endcsname\PictExt"}% + \fi + \closein15 + \Picture[pict]{\csname Gin@base\endcsname\PictExt}% + } + + Note: Arguments of the \includegraphics command such as angle and + scale in + + \includegraphics[angle=-90,scale=0.5]{fig.eps} + + are not known to the given figure (e.g., to fig.eps). To be + taken into account, the scripts should handle the transformations + they request (e.g., in \csname Grot@angle\endcsname, + \csname Gscale@x\endcsname, \csname Gscale@y\endcsname) +>>> + + + + +\section{babel} + +\<configure info4ht babel\><<< +\Configure{accent} +\Configure{quotedblbase} +\Configure{quotesinglbase} + +>>> + +\section{plain} + +\<configure info4ht plain\><<< + +\Configure{ } +\Configure{HAccent} +\Configure{TableOfContents} +\Configure{accents} +\Configure{accent} +\Configure{beginsection} +\Configure{centerline} +\Configure{displaylines} +\Configure{eqalignno} +\Configure{eqalign} +\Configure{insert} +\Configure{item} +\Configure{leftline} +\Configure{leqalignno} +\Configure{line} +\Configure{mathaccent} +\Configure{narrower} +\Configure{noalign} +\Configure{obeylines} +\Configure{overline} +\Configure{proclaim} +\Configure{rightline} +\Configure{settabs} +\Configure{underline} +\Configure{vfootnote} +>>> + + + +\section{amsfonts} + + +\<configure info4ht amsfonts\><<< +\Configure{mathbb}........................2 +\Configure{mathfrak}......................2 + + #1 before content + #2 after content + +>>> + + + +\section{amsmath} + +% \Configure{dbinom}..................4 +% \Configure{dfrac}..................4 +% \Configure{frac}..................4 +% \Configure{binom}..................4 + +\<configure info4ht amsmath\><<< +\Configure{tmspace}...................1 + + \mathglue amount of space in math units + \textspace amount of space in points + + Example: + \Configure{tmspace}{\mskip\mathglue} + + +\Configure{boxed}.....................2 +\Configure{equations}.................2 +\Configure{equation}..................3 +\Configure{gather*}...................6 +\Configure{gather}....................6 +\Configure{genfrac}...................6 +\Configure{measure@}..................1 +\Configure{multline*}.................4 +\Configure{multline}..................6 + + #5 before the label + #6 after the label +\Configure{overset}...................2 +\Configure{smallmatrix}...............6 +\Configure{split}.....................6 +\Configure{subarray}..................4 +\Configure{substack}..................2 +\Configure{underset}..................2 +\Configure{xleftarrow}................2 +\Configure{xrightarrow}...............2 +>>> + + + + +\section{amstex1} + +\<configure info4ht amstex1\><<< +\Configure{eqn} +\Configure{gather} + + +Environments of amstex1: + + Vmatrix + align* + alignat* + alignat + alignedat + aligned + aligned + align + bmatrix + equation* + equation + gather* + gathered + gather + matrix + multline* + multline + pmatrix + vmatrix + xalignat* + xalignat + xxalignat + +>>> + +\section{amsart} + +\<configure info4ht amsart\><<< +|tableofcontentsStr +|maketitleInfo + +\ConfigureList{thebibliography}% +\Configure{HtmlPar} +\Configure{HtmlPar} +\Configure{Needs} +\Configure{abstract} +\Configure{authors} +\Configure{caption} +\Configure{date} +\Configure{endlikeparagraph} +\Configure{endlikepart} +\Configure{endlikesection} +\Configure{endlikesubparagraph} +\Configure{endlikesubsection} +\Configure{endlikesubsubsection} +\Configure{endparagraph} +\Configure{endpart} +\Configure{endsection} +\Configure{endsubparagraph} +\Configure{endsubsection} +\Configure{endsubsubsection} +\Configure{keywords} +\Configure{likeparagraph} +\Configure{likepart} +\Configure{likesection} +\Configure{likesubparagraph} +\Configure{likesubsection} +\Configure{likesubsubsection} +\Configure{paragraph} +\Configure{partTITLE+} +\Configure{part} +\Configure{sectionTITLE+} +\Configure{section} +\Configure{setdate} +\Configure{subjclass} +\Configure{submaketitle} +\Configure{subparagraph} +\Configure{subsectionTITLE+} +\Configure{subsection} +\Configure{subsubsectionTITLE+} +\Configure{subsubsection} +\Configure{thanks author date and} +\Configure{thanks} +\Configure{title} + +Environments of amsart: + + abstract + abstract + picture + picture + thebibliography + + \ConfigureToc + + likeparagraph likepart, likesection, likesubparagraph, + likesubsection, likesubsubsection, paragraph, part, section, + subparagraph, subsection, subsubsection, + +>>> + + +\section{amsbook} + +\<configure info4ht amsbook\><<< +|tableofcontentsStr +|maketitleInfo + +\ConfigureList{thebibliography}% +\Configure{HtmlPar} +\Configure{Needs} +\Configure{abstract} +\Configure{addresses} +\Configure{authors} +\Configure{caption} +\Configure{date} +\Configure{endlikeparagraph} +\Configure{endlikepart} +\Configure{endlikesection} +\Configure{endlikesubparagraph} +\Configure{endlikesubsection} +\Configure{endlikesubsubsection} +\Configure{endparagraph} +\Configure{endpart} +\Configure{endsection} +\Configure{endsubparagraph} +\Configure{endsubsection} +\Configure{endsubsubsection} +\Configure{keywords} +\Configure{likeparagraph} +\Configure{likepart} +\Configure{likesection} +\Configure{likesubparagraph} +\Configure{likesubsection} +\Configure{likesubsubsection} +\Configure{paragraph} +\Configure{partTITLE+} +\Configure{part} +\Configure{sectionTITLE+} +\Configure{section} +\Configure{subjclass} +\Configure{subparagraph} +\Configure{subsectionTITLE+} +\Configure{subsection} +\Configure{subsubsectionTITLE+} +\Configure{subsubsection} +\Configure{thanks author date and} +\Configure{thanks} +\Configure{title} +\Configure{translators} + +Environments of amsbook: + + abstract + picture + thebibliography + + \ConfigureToc + + appendix, chapter, likechapter, likeparagraph, likepart, + likesection, likesubparagraph, likesubsection, likesubsubsection, + paragraph, part, section, subparagraph, subsection, subsubsection + +>>> + +\section{amsproc} + +\<configure info4ht amsproc\><<< +|tableofcontentsStr +|maketitleInfo + +\ConfigureList{thebibliography}% +\Configure{HtmlPar} +\Configure{Needs} +\Configure{abstract} +\Configure{authors} +\Configure{caption} +\Configure{date} +\Configure{endlikeparagraph} +\Configure{endlikepart} +\Configure{endlikesection} +\Configure{endlikesubparagraph} +\Configure{endlikesubsection} +\Configure{endlikesubsubsection} +\Configure{endparagraph} +\Configure{endpart} +\Configure{endsection} +\Configure{endsubparagraph} +\Configure{endsubsection} +\Configure{endsubsubsection} +\Configure{keywords} +\Configure{likeparagraph} +\Configure{likepart} +\Configure{likesection} +\Configure{likesubparagraph} +\Configure{likesubsection} +\Configure{likesubsubsection} +\Configure{paragraph} +\Configure{partTITLE+} +\Configure{part} +\Configure{sectionTITLE+} +\Configure{section} +\Configure{subparagraph} +\Configure{subsectionTITLE+} +\Configure{subsection} +\Configure{subsubsectionTITLE+} +\Configure{subsubsection} +\Configure{thanks author date and} +\Configure{thanks} +\Configure{title} + +Environments of amsproc: + + abstract + picture + thebibliography + + \ConfigureToc + + likeparagraph, likepart, likesection, likesubparagraph, + likesubsection, likesubsubsection, paragraph, part, section, + subparagraph, subsection, subsubsection +>>> + + +\section{amsthm} + +\<configure info4ht amsthm\><<< +Environments of amsthm: + + proof +>>> + + + + +\section{amsppt} + +\<configure info4ht amsppt\><<< + \ConfigureToc + + head, specialhead, subhead, subsubhead + +\Configure{HtmlPar} +\Configure{Refs} +\Configure{abstract} +\Configure{affil} +\Configure{author} +\Configure{block} +\Configure{book} +\Configure{caption} +\Configure{date} +\Configure{footnote} +\Configure{head} +\Configure{itemitem} +\Configure{keyformat} +\Configure{keywords} +\Configure{paper} +\Configure{ref} +\Configure{roster} +\Configure{specialhead} +\Configure{subhead} +\Configure{subjclass} +\Configure{subsubhead} +\Configure{thanks} +\Configure{title} +\Configure{vol} + +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{listings} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure info4ht listings\><<< +\Configure{lst@Kerm}...........................2 + + #1 width of character + #2 width of inter character space + + In LaTeX, Default: \Configure{lst@Kern}{0.499em}{0.1em} + +\Configure{listings}...........................4 + + #1 start environment + #2 end environment + #3 before line label + #4 between line label and content + +\Configure{lstinputlisting}....................2 +\Configure{lstinline}..........................2 + + #1 start environment + #2 end environment +>>> + + + + + +\section{psfig} + +\<configure info4ht psfig\><<< +\Configure{psfig} + +>>> + +\section{epsfig} + +\<configure info4ht epsfig\><<< +\Configure{epsfig}...........................#1 + + #1 before + #2 after + + In LaTeX, epsfig reduces to graphicsx + + Example: + + \Configure{epsfig} + {\Configure{graphics} + {} {\xdef\foo{width="\the\Gin@req@width" + height="\the\Gin@req@height"}}% + \Picture+[epsfig]{}} + {\EndPicture\writesixteen{..... \foo}} +>>> + +\section{xy} + +\<configure info4ht xy\><<< +\Configure{xypic} +\Configure{Xy} +>>> + +\section{amscd} + +\<configure info4ht amscd\><<< + +Environments of amscd: + + CD +>>> + + +\section{array} + +\<configure info4ht array\><<< +\Configure{tabular} +\Configure{array} + +|VBorder + +\Configure{@{}}{} + + +Environments of array: + + array + tabular +>>> + +\section{minitoc} + +\<configure info4ht minitoc\><<< +\Configure{minilof} +\Configure{minilot} +\Configure{minitoc} +\Configure{partlof} +\Configure{partlot} +\Configure{parttoc} +\Configure{sectlof} +\Configure{sectlot} +\Configure{secttoc} +\Configure{tableofcontents} + +>>> + + +\section{index} + +\<configure info4ht index\><<< +\Configure{NoSection} + +>>> + + + + + +\section{ntheorem} + +\<configure info4ht ntheorem\><<< +Environments of ntheorem: + + Anmerkung + Beispiel + Bemerkung + Beweis + Corollary + Definition + Example + Korollar + Lemma + Proof + Proposition + Remark + Satz + Theorem + anmerkung + beispiel + bemerkung + beweis + corollary + definition + example + korollar + lemma + proof + proposition + remark + satz + theorem + + +>>> + + +\section{longtable} + +\<configure info4ht longtable\><<< +\Configure{longtable}.............................6 + + #1 before table #2 after table + #3 before row #4 after row + #5 before cell #6 after cell +>>> + +\section{fancyvrb} + +\<configure info4ht fancyvrb\><<< +\Configure{fancyvrbcolor} +\Configure{fancyvrbframe} +\Configure{fancyvrb} + +Environments of fancyvrb: + + verbatim* + verbatim + +>>> + + \section{moreverb} + + +\<configure info4ht moreverb\><<< +\Configure{verbatimtab}......................2 + + #1 at start of line + #2 space character + +Environments of moreverb: + + boxedverbatim* + boxedverbatim* + boxedverbatim + boxedverbatim + verbatimtab +>>> + + +\section{fancybox} + +\<configure info4ht fancybox\><<< +\Configure{Ovalbox} +\Configure{doublebox} +\Configure{ovalbox} +\Configure{shadowbox} + +>>> + +\section{color} + +\<configure info4ht color\><<< +\Configure{HColor}......................2 + + #1 color name + #2 color value + + Examples: \Configure{HColor}{blue}{\#0000FF} + \Configure{HColor}{light}{rgb(122,251,255)} + +\Configure{colorbox} +\Configure{color} +\Configure{textcolor} + +>>> + +\section{colortbl} + +\<configure info4ht colortbl\><<< +\Configure{@classz} +\Configure{rowcolor} + +>>> + +\section{alltt} + +\<configure info4ht alltt\><<< +Environments of alltt: + + alltt +>>> + + + + +\section{url} + +\<configure info4ht url\><<< +\Configure{url} + +>>> + +\section{hyperref} + +\<configure info4ht hyperref\><<< +A trick like the following one allows a compilation to choose +between a pdf and a html mode automatically. + + \ifx \HCode\UnDef \usepackage[pdf]{hyperref} + \else \usepackage[tex4ht]{hyperref} \fi + +The trick assumes the compilations for html are invoked by +htlatex-like commands. + +\Configure{::#1} +\Configure{::action} +\Configure{::default} +\Configure{::menulength} +\Configure{::method} +\Configure{::name} +\Configure{::value} +\Configure{CheckBox::checked} +\Configure{CheckBox::} +\Configure{ChoiceMenu::combo} +\Configure{ChoiceMenu::popdown} +\Configure{ChoiceMenu::radio} +\Configure{ChoiceMenu::} +\Configure{Form} +\Configure{PushButton::} +\Configure{Reset::} +\Configure{Submit::} +\Configure{TextField::default} +\Configure{TextField::multiline} +\Configure{TextField::password} +\Configure{TextField::width} +\Configure{TextField::} +\Configure{combo::default} +\Configure{multiline::value} +\Configure{multiline::width} +\Configure{radio::default} + +>>> + + +\section{CJK} + +\<configure info4ht CJK\><<< +\Configure{charset} + +>>> + +\section{vanilla} + +\<configure info4ht vanilla\><<< + \ConfigureToc + + heading, subheading + +\Configure{aligned} +\Configure{align} +\Configure{author} +\Configure{demo} +\Configure{heading} +\Configure{matrix} +\Configure{subheading} +\Configure{title} + +>>> + + + + + + +\section{emulateapj} + +\<configure info4ht emulateapj\><<< +\Configure{affil} +\Configure{author} +\Configure{keywords} +\Configure{section} +\Configure{slugcomment} +\Configure{subjectheadings} +\Configure{submitted} +\Configure{subsection} +\Configure{subtitle} +\Configure{title} + +Environments of emulateapj: + + references +>>> + +\section{aa} + +\<configure info4ht aa\><<< +|maketitleInfo + +\Configure{HtmlPar} +\Configure{caption} +\Configure{endlikeparagraph} +\Configure{endlikepart} +\Configure{endlikesection} +\Configure{endlikesubparagraph} +\Configure{endlikesubsection} +\Configure{endlikesubsubsection} +\Configure{endparagraph} +\Configure{endpart} +\Configure{endsection} +\Configure{endsubparagraph} +\Configure{endsubsection} +\Configure{endsubsubsection} +\Configure{likeparagraph} +\Configure{likepart} +\Configure{likesection} +\Configure{likesubparagraph} +\Configure{likesubsection} +\Configure{likesubsubsection} +\Configure{makeheadbox} +\Configure{paragraph} +\Configure{partTITLE+} +\Configure{part} +\Configure{sectionTITLE+} +\Configure{section} +\Configure{subparagraph} +\Configure{subsectionTITLE+} +\Configure{subsection} +\Configure{subsubsectionTITLE+} +\Configure{subsubsection} +\Configure{subsubsection} +\Configure{subtitle institute} +\Configure{thanks author date and} + +Environments of aa: + + abstract + picture + thebibliography +>>> + +\section{pictex} + +\<configure info4ht pictex\><<< +\Configure{pictex} + +>>> + + + + +\section{diagram} + +\<configure info4ht pb-diagram\><<< +Environments of pb-diagram: + + diagram +>>> + + + +\section{ltugboat} + +\<configure info4ht ltugboat\><<< +Environments of ltugboat: + + quote +>>> + + +\section{doc} + +\<configure info4ht doc\><<< +Environments of doc: + + macrocode +>>> + + + + + +\section{lineno} + +\<configure info4ht doc\><<< +\Configure{lineno}...................2 + + Asks lineno.sty to introduce #1\LineNumber #2, instead of \LineNumber, + into the output +>>> + + + + + + +\section{elsart} + +\<configure info4ht elsart\><<< +\Configure{abstract} +\Configure{keyword} + +Environments of elsart: + + frontmatter +>>> + + +%%%%%%%%%%%%%%%%%% +\section{ProTex} +%%%%%%%%%%%%%%%%%% + +\<configure info4ht ProTex\><<< +\Configure{ShowCode}...................6 + + #1 start body + #2 end body + #3 everypar + #4 open comment + #5 close comment + #6 space character +>>> + + +\section{seminar} + +\<configure info4ht seminar\><<< + +Environments of seminar: + + slide +>>> + + +\section{slides} + +\<configure info4ht slides\><<< +\Configure{slidename}....................................1 +\CutAt{slide}.............................................0 + +\ConfigureList{description}% + +Environments of slides: + + note + quotation + quote + slide + titlepage + verse +>>> + + +\section{slidesec} + +\<configure info4ht slidesec\><<< + \ConfigureToc + + slidesection +>>> + +\section{web} + +\<configure info4ht web\><<< +\Configure{maketitle} +\Configure{webuniversity} +\Configure{webversion} + +>>> + +\section{exerquiz} + +\<configure info4ht exerquiz\><<< +\ConfigureList{questions}% +\Configure{@HEAD} +\Configure{Form} +\Configure{ReturnTo} +\Configure{TextField::} +\Configure{javascript} +\Configure{quiz*} +\Configure{quiz} +\Configure{shortquiz} + +Environments of exerquiz: + + shortquiz +>>> + +\section{foils} + +\<configure info4ht foils\><<< + \ConfigureToc + + foilheads + +\Configure{foilheads} + +|tableofcontentsStr + +Environments of foils: + + Corollary* + Corollary + Definition + Lemma + Proof + Proposition + Theorem + thebibliography + +>>> + + + +\section{th4} + +\<configure info4ht th4\><<< +\Configure{JavaScript}............2 + + Configures the environments + + \JavaScript + .... + \EndJavaScript + + and + + \javascript{...} + + These environments are activated by the `javascript' option. + + Default: + + \Configure{JavaScript} + {\HCode{<script type="text/JavaScript" ><!--\Hnewline}} + {\HCode{//-->\Hnewline </script>}} + + + + \ConfigureToc + + Chapter, LikeSection, Section, SubSection + +\Configure{Appendix} +\Configure{Chapter} +\Configure{Columns} +\Configure{Columns} +\Configure{DList} +\Configure{HTable} +\Configure{Item} +\Configure{LikeChapter} +\Configure{LikeSection} +\Configure{OList} +\Configure{Part} +\Configure{Section} +\Configure{SubSection} +\Configure{UList} +\Configure{Verbatim} +\Configure{buttonList+} +\Configure{buttonList} +\Configure{centerline} +\Configure{index} + +Frames +------ + +When the package option `frames-' or `frames' is up, +TeX4ht introduces the following commands for defining frames. + + \Frame[#1]{#2} + + A variant of the \Link[#1]{#2} portion of the + \Link[#1]{#2}{#3}#4\EndLink, for specifying a frame. + + \HorFrames[#1]{#2}, \VerFrames[#1]{#2} + + #1 attributes ([#1] is optional) + #2 list of dimensions + + A container partitioned, respectively, horizontally or + vertically. Each partition may hold a sub-container or + a frame. + + The list of dimensions determine the cardinality of the + partition, and the dimension of each partition. A dimension + can be specified absolutely by pixels (\HorFrames{80,130,50}), + relatively by percentage (\HorFrames{20\%,30\%,50\%}), and + relatively through ratio (\HorFrames{2*,3*,5*}). + + \EndFrames + + An end delimiter for a container + + \NoFrames + + When used, it should be placed before the outer-most + \EndFrames command. The region \NoFrames...\EndNoFrames + provides the content for browsers which do not support frames. + +Tailoring configurations for frames is a little tricky, but the +job is simpler when the configurations don't deal with the root +file. + +Example 1: +.......... + + % Requires the command line option `frames-' + \documentclass{article} + + \begin{document} + + \begingroup + \Configure{@HEAD}{} + \Configure{BODY}{}{} + \Configure{DOCTYPE} + {\HCode{<!DOCTYPE html + PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" + "http://www.w3.org/TR/html4/frameset.dtd">}} + \Configure{HEAD}{}{} + \Configure{HTML} + {\HCode{<html><head><title>}} + {\HCode{}} + \Configure{HtmlPar}{}{}{}{} + \Configure{TITLE}{}{} + + \FileStream+{\jobname f.html} + \HorFrames{*,*} + \Frame[\jobname.html]{} + \VerFrames{3*,*,*} + \Frame[http://www.tug.org]{} + \Frame[\RefFile{z} ]{} + \Frame[ name="y"]{w} + \EndFrames + \EndPreamble + \NoFrames + a comment + \EndFrames + \EndFileStream{\jobname f.html} + \endgroup + + + \HPage[z]{} + \bgroup + \Configure{Link}{a}{target="y" href=}{ name=}{} + \let\contentsname=\empty \tableofcontents + \egroup + \EndHPage{z} + + \tableofcontents + + \section{First} Is first. + + \Link{}{w}\EndLink + \section{Second} Is Second. + + \end{document} + +Example 1a (allows also compilations for non-html output): +.......................................................... + % src.tex + \documentclass{article} + \begin{document} + + \tableofcontents + + \section{First} Is first. + + \ifx \Link\undefined \else + \Link{}{w}\EndLink + \fi + \section{Second} Is Second. + + \end{document} + + % src.cfg + \Preamble{html,frames-} + \begin{document} + \EndPreamble + \begingroup + \Configure{@HEAD}{} + \Configure{BODY}{}{} + \Configure{DOCTYPE}{} + \Configure{HEAD}{}{} + \Configure{HTML}{}{} + \Configure{HtmlPar}{}{}{}{} + \Configure{TITLE}{}{} + + \FileStream+{\jobname f.html} + \HorFrames{*,*} + \Frame[\jobname.html]{} + \VerFrames{3*,*,*} + \Frame[http://www.tug.org]{} + \Frame[\RefFile{z} ]{} + \Frame[ name="y"]{w} + \EndFrames + \EndPreamble + \NoFrames + a comment + \EndFrames + \EndFileStream{\jobname f.html} + \endgroup + + \HPage[z]{} + \bgroup + \Configure{Link}{a}{target="y" href=}{ name=}{} + \let\contentsname=\empty \tableofcontents + \egroup + \EndHPage{z} + \endinput + +Example 2: +.......... + + % Source .tex file + + \documentclass{article} + \usepackage{verbatim} + \begin{document} + + \section{The Main File: \jobname.tex} + \verbatiminput{\jobname.tex} + \section{The Configurations File: \jobname.cfg} + \verbatiminput{\jobname.cfg} + \section{The Command Line} + htlatex \jobname\space "\jobname" + + \NextFile{page.html}\HPage{} + Hello! + \EndHPage{} + + \HPage{}\Link{}{anchor}\EndLink + \Link[http://www.ctan.org]{}{}ctan\EndLink + \EndHPage{} + + \end{document} + + % configurations .cfg file + + \Preamble{frames} + + \Configure{frames} + {\VerFrames{*,5*} + \Frame[ name="tex4ht-menu" ]{tex4ht-toc} + \HorFrames{*,3*} + \VerFrames{6*,*,*} + \Frame[http://www.tug.org]{} + \Frame[page.html]{} + \Frame{anchor} + \EndFrames + \Frame[ name="tex4ht-main" ]{tex4ht-body} + \EndFrames + } + {\let\contentsname=\empty \tableofcontents} + + \begin{document} + \EndPreamble + +Example 3: +.......... + + % file.tex + \documentclass{book} + \begin{document} + \chapter{Title} + Body. + \chapter{Another Title} + \Link{}{init-body}\EndLink + Another body. + \end{document} + + % file.cfg + \Preamble{html,frames,3,info} + \begin{document} + \Configure{frames} + {\HorFrames[rows="*"]{3*,*} + \Frame[ name="body" frameborder="0" ]{init-body} + \Frame[ name="menu" frameborder="0" ]{init-toc} + } + {\Configure{Link}{a}{target="body" href=}{ id=}{} + \let\contentsname=\empty + \tableofcontents + \Link{}{init-toc}\EndLink + } + \EndPreamble + \endinput + + + +The arguments`init-body' and `init-toc' are labels connecting reference points +\Frame[...]{label} with anchors \Link{}{label}\EndLink. Their objective +is to associate initial web pages with the frames. + +The name attribute values `body' and `menu' provide +identifiers to the frames. They offer the option to dynamically load +new pages into the frames through hypertext references targeting those +values. + +>>> + + + + +\section{hebtex} + +\<<< +\Configure{arabtext} +\Configure{chireq} +\Configure{cholem} +\Configure{cholem} +\Configure{chpatach} +\Configure{chqames} +\Configure{chsegol} +\Configure{dagesh} +\Configure{meteg} +\Configure{patachf} +\Configure{patach} +\Configure{qameschat} +\Configure{qames} +\Configure{qibbus} +\Configure{rdot} +\Configure{segol} +\Configure{sere} +\Configure{shindot} +\Configure{shwa} +\Configure{sindot} + +>>> + + + + +%%%%%%%%%%%%%%%%%%%% +\section{endnotes} +%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{theendnotes}......................2 +\Configure{enoteformat}......................2 +\Configure{makeenmark}.......................2 + + Provide markups for the mentioned entities. + +\endnoteN + + A built-in counter for end notes. +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{float} +%%%%%%%%%%%%%%%%%%%% + +\<<< +New float environments can be configured with the \ConfigureEnv +instruction. For instance, + + \newfloat{myfloat}{htb}{}[section] + + \ConfigureEnv{myfloat} + {BEFORE MYFLOAT} {AFTER MYFLOAT} + {}{} + + \begin{myfloat} + body + \caption{title} + \end{myfloat} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{mktex4ht} +%%%%%%%%%%%%%%%%%%%% + + + + +\<<< +Purpose +------- + +A package to help creating 4ht files for configuring seeded hooks. + +A sample self-explanatory template file make-4ht.tex is shown at the +end. The sample file can be retrieved in ascii form from the file +info4ht.4ht. + +General Information +------------------- + +To get a better understanding of the structural meaning of some of the +available hooks + +a. Compile the mktex4ht.4ht file with the `htlatex mktex4ht.4ht' + command (or, `xhlatex mktex4ht.4ht' for XHTML output). + + Visit the links in the index of the outcome `mktex4ht.html' file. + +b. Compile your sorce file with a command similar to + + htlatex filename "html,info" "" "-p" + + and check the source file. + +c. Compile your sorce file with a command similar to + + htlatex filename "html,0.0,hooks" "" "-p" + + and view the outcome with a html browser. + +d. Take a look at the *.4ht configuration files mentioned in tex4ht.4ht. + +Setting up a calling command +---------------------------- + +i. Create a tex4ht.usr file, and introduce there \Configure command(s) + similar to those found in tex4ht.4ht. For instance, + + \Configure{foo}{% + \Hinclude[*]{myhtml.4ht}% + \Hinclude[*]{mymath.4ht}% + } + + Choose arbitrary name in the first argument, and include *.4ht + configuration files of your liking in the second argument. + + You might want to temporarily include also the file html0.4ht, as a + first entry, while constructing new *.4ht configuration files. For + instance, + + \Configure{foo}{% + \Hinclude[*]{html0.4ht}% + \Hinclude[*]{myhtml.4ht}% + \Hinclude[*]{mymath.4ht}% + } + +ii. A configuration setting may be loaded by mentioning its name + within the option list of the htlatex command. For instance, + + htlatex filename "xhtml,foo" "unicode/!" "-p" + +iii. Alternatively, a htlatex-like command can be tailored to + automatically load a configuration setting. That can be done + by including the name in the argument list of + \csname tex4ht\endcsname, within the script of the command. For + instance, replace `docbook' with `foo' in the script of dblatex. + + +Defining a New Configuration File with mktex4ht.4ht +--------------------------------------------------- + +1. Define a parameter-less macro \HTML to hold a comma separeted list + of the output file names. Place the definition at the top of the + source document. For instance + + \def\HTML{myhtml,mymath} + + request the files myhtml.4ht and mymath.4ht. + +2. Define a parameter-less macro \CONFIG to hold the name of the file + containing the contributed configurations. Place the definition at + the top of the source document. + +3. The configurations contributed to output file YYYY.4ht for style + XXXX should be provided within code fragments of the form + + \<<< + ....... + >>|empty> + + Arbitrary valid LaTeX source code may be inserted around the code + fragments. + + Example: + + Configurations for class book.cls: + + \<<< + \Configure{chapter} {...}{...}{...}{...} + \Configure{section} {...}{...}{...}{...} + >>|empty> + + Configurations for class article.cls: + + \<<< + \Configure{section} {...}{...}{...}{...} + >>|empty> + + The hooks are provided in book.4ht and article.4ht. + +4. Define a parameter-less macro \MAKETITLE with contribution for + the \maketitle command (e.g., \def\MAKETITLE{\title{my name}}). Place + the definition at the top of the source document. + +5. A file may reload itself, if it starts with preamble similar to + the following one. + + \ifx \HTML\UnDef + \def\HTML{...} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{...}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next + \fi + + +A Template File make-4ht.tex +----------------------------- + +%--------------------- start of template ----------------- +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% make-4ht.4ht Eitan M. Gurari +% +% A sample file with instructions for creating 4ht +% configuration files through literate programming. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% * Compile this file twice with the command `latex make-4ht' +% (or with `htlatex make-4ht') +% +% * Inspect the outcome files sample.4ht and example.4ht +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% * Change `sample,example' in (1) below to a comma-separated list +% of your choice. Each entry in the list stands for a name +% of a 4ht configuration file to be created. The current list +% requests the configuration files `sample.4ht' and `example.4ht'. +% +% * Change `my title' in (2), and `my name' in (3), to a +% content of your choice +% +% * Go to (4) +% +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{sample,example} %<------------ (1) + \def\CONFIG{\jobname} + \def\MAKETITLE{\title{my title}% %<------------ (2) + \author{my name}} %<------------ (3) + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +%%%%%%%%%%%%%%%%%%%%% useful definitions %%%%%%%%%%%%%%%%%%%%% + +\newcount\tmpcnt \tmpcnt\time \divide\tmpcnt 60 +\edef\temp{\the\tmpcnt} +\multiply\tmpcnt -60 \advance\tmpcnt \time + +\edef\version{\the\year-\ifnum \month<10 0\fi + \the\month-\ifnum \day<10 0\fi\the\day + -\ifnum \temp<10 0\fi \temp + :\ifnum \tmpcnt<10 0\fi\the\tmpcnt} + +\def\CopyYear.#1.{% + \ifnum #1=\year #1\space\space\space\space\space\space + \else #1--\the\year\fi +} + + +%<--------------------------------------------------------------- (4) +% +% * The code for the configuration files is to be written within +% fragments of the form +% +% \<<< +% fragment content +% >>|empty> +% +% * References from code fragments to other code fragments should +% take the form +% +% || +% +% * The character || is treated as an escape character +% within the code fragments. References to the +% character should take the form +% +% |||| +% +% * Insertions outside the code fragments are ignored in the +% configuration files, and they should abide to the latex +% conventions. +% +% * Change all the prose and code fragments below to meet +% your needs. Make sure to follow the given instructions. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Root Code} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%<--------------------------------------------------------------- (5) +% +% * For each entry in the list of (1), you may have arbitrary many +% code fragments named by the entry. +% +% * The order of fragments is relevant only among those having +% identical names. +% + + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sample.4ht ||version % +|| +>>|empty> + + +\<<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% example.4ht ||version % +|| +>>|empty> + + +\<<< +% Copyright (C) ||CopyYear.2000. my name % +% % +% My copyright statement % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\immediate\write-1{version ||version} +>>|empty> + + +%<--------------------------------------------------------------- (6) +% +% * Each configuration of tex4ht requires a base 4ht configuration +% file containing the following `Hinclude' code. + +% * The supplied html4.4ht, html32.4ht, html0.4ht, tei.4t, +% and docbook.4ht files already include such code. +% +% * In a compilation of a file, exactly one 4ht configuration +% file should load `Hinclude' code. +% +% * Either remove the following three code fragments, or replace +% `sample' in their titles with an entry from (1) +% + +\<<< +\if:latex || +\else || \fi +>>|empty> + +\<<< +|| +|| +>>|empty> + +\<<< +|| +|| +>>|empty> + +\endinput +%--------------------- end of template ------------------- +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Segment Code} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%<--------------------------------------------------------------- (7) +% +% * A 4ht configuration file is made up of segments which +% correspond to classes and styles of tex, latex, amslatex, +% etc. Have a look at these code segments in html4.4ht . +% +% * You can get additional information about the possible +% configurations in the different segments by compiling +% your file with the `info' switch on. For instance +% +% htlatex foo "html,info" +% +% * Code for segment `xxxx' in file `yyyy.4ht' is introduced +% through fragments named `configure yyyy xxxx'. That is, +% through fragments of the form +% +% \<<< +% .......... +% >>|empty> +% + + +\<<< +....tex4ht segment in sample.4ht..... +>>|empty> + +\<<< +....latex segment in sample.4ht..... +|| +>>|empty> + + + + +\<<< +....tex4ht segment in example.4ht..... +>>|empty> + +\<<< +....latex segment in example.4ht..... +>>|empty> + + +\<<< +....additional code.... +>>|empty> + +%<--------------------------------------------------------------- (8) +% +% * Compile this file twice with the command `latex filename' +% (or with `ht latex filename') +% +% * If you don't have a file named tex4ht.usr, introduce such a file +% +% * Insert into tex4ht.usr a file along the following lines, which +% invokes *.4ht configuration files +% +% \Configure{my4hts}{% +% \Hinclude[*]{html4.4ht}% +% \Hinclude[*]{html4-math.4ht}% +% \Hinclude[*]{myflavor.4ht}% +% } +% +% For additional examples inspect, but do not change, the +% tex4ht.4ht file. +% +% * Invoke the compilations of you latex files with commands similar to +% +% htlatex foo "html,my4hts" +% + + +\endinput +>>> + + + + + + +\endinput + + + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-jats.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-jats.tex new file mode 100644 index 00000000000..b260e349855 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-jats.tex @@ -0,0 +1,111 @@ +% $Id: tex4ht-jats.tex 269 2020-03-03 23:06:07Z karl $ +% compile 3 times: latex tex4ht-jats +% or xhlatex tex4ht-jats "html,3,sections+" +% +% Copyright 2009-2020 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{jats} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common.tex} +\input{tex4ht-cpright.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +% jats.4ht (|version), generated from |jobname.tex +% Copyright 2020 TeX Users Group +| +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Basic information} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +JATS support in TeX4ht is based on HTML and MathML configurations. +Unsupported elements will be converted using make4ht DOM filters. +Filters will be used also for the document structure, as JATS wants some +elements in the back (bibliography, etc.) + +Only basic structures will be configured by hand in this configuration +file. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Start Here} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\special{t4ht.xml} +\Configure{VERSION}{\HCode{\Hnewline}} + +% select JATS version +\NewConfigure{DtdVersion}{1} +\Configure{DtdVersion}{1.2} + +\Configure{DOCTYPE}{\HCode{\Hnewline}} + +% XML configuratins +\edef\html:xmlns{} +\NewConfigure{xmlns}[2]{\concat:config\html:xmlns{xmlns:#1="#2"\Hnewline}} +\Configure{xmlns}{xlink}{http://www.w3.org/1999/xlink} +\Configure{xmlns}{mml}{http://www.w3.org/1998/Math/MathML} + +\Configure{HTML}{\HCode{
        \Hnewline}}{\HCode{\Hnewline
        }} +\Configure{@HEAD}{} +\Configure{HEAD}{\HCode{}}{\HCode{}} +% Add header structure +% Journal info in . It needs to be provided fully from the user configuration +\NewConfigure{JournalMeta}{1} +% basic article meta can be reconstructed from \title and \author +% +% Title needs to be placed at the correct place by DOM filter +\Configure{TITLE}{\HCode{}}{\HCode{}} +\NewConfigure{ArticleMeta}{1} + \Configure{ArticleMeta}{ + \HCode{}% + % title from \title command is placed by make4ht DOM filter. If you want more complex title, + % use \Configure{TitleGroup} + \a:TitleGroup% + \JATS:Contributors% + \HCode{}% +} +% enable to configure contributors +\def\JATS:Contributors{} +\NewConfigure{Contributor}[1]{\concat:config\JATS:Contributors{#1}} +\NewConfigure{TitleGroup} + +% insert metas into document header +\Configure{@HEAD}{\a:JournalMeta} +\Configure{@HEAD}{\a:ArticleMeta} + + + +>>> + + + + +\<<< +>>> + +\<<< +>>> + + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-javahelp-xtpipes.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-javahelp-xtpipes.tex new file mode 100644 index 00000000000..601668ce1cb --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-javahelp-xtpipes.tex @@ -0,0 +1,641 @@ +% $Id: tex4ht-javahelp-xtpipes.tex 740 2020-06-13 22:35:32Z karl $ +% htlatex tex4ht-javahelp-xtpipes "xhtml,next,3" "" "-d./" +% +% Copyright 2009-2020 TeX Users Group +% Copyright 2002-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\documentclass{article} + \Configure{ProTex}{log,<<<>>>,title,list,`,[[]]} + \usepackage{url} +\begin{document} + +\input{common} +\input{tex4ht-cpright} +\input{tex4ht-dir} + +%%%%%%%%%%%%%%%%%% +\part{Post Processing for Html Output Mode} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%% + +\AtEndDocument{\OutputCodE\} + +\Needs{"xmllint --valid --noout javahelp.4xt"} + +\<<< + + + + + + ` + ` + ` + ` + + +>>> + + +%%%%%%%%%%%%%%%%%% +\section{email script} +%%%%%%%%%%%%%%%%%% + +\<<< + +>>> + + + ` + ` + ` + + + + +\<<< + + + + + + +>>> + + +\<<< + +>>> + + +% \AtEndDocument{ +% \OutputCodE\ +% } +% \Needs{" +% javac -classpath /home/4/gurari/tex4ht.dir/texmf/tex4ht/bin/tex4ht.jar +% XhtmlEmails.java +% -d /home/4/gurari/xtpipes.dir/. +% "} + +\<<< +package tex4ht; +/* XhtmlEmails.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2002. Eitan M. Gurari +` */ +import xtpipes.XtpipesUni; +import org.xml.sax.*; +import org.xml.sax.helpers.DefaultHandler; +import java.io.*; +import java.lang.reflect.*; +import java.util.HashMap; + +public class XhtmlEmails extends DefaultHandler { + PrintWriter out = null; + String data = ""; + public XhtmlEmails(PrintWriter out, + HashMap scripts, + Method method, PrintWriter log, boolean trace) { + this.out = out; + } + public void characters(char[] ch, int start, int length) { + data += new String(ch, start, length); + +//XtpipesUni.toUni(ch, start, length, "<>&"); + } + + public void startElement(String ns, String sName, + String qName, + Attributes atts) { + String s = "<" + qName + "\n"; + for (int i = 0; i < atts.getLength(); i++) { + String name = atts.getQName(i); + s += (" " + name + "=\"" + + XtpipesUni.toUni(atts.getValue(i), "<>&\"") + + "\""); + } + s += ">"; + ` + out.print(XtpipesUni.toUni(data, "&") + s); + data = ""; + } + public void endElement(String ns, String sName, String qName) { + String s = ""; + ` + out.print( XtpipesUni.toUni(data, "&") + s); + data = ""; + } + +} +>>> + + +\<<< +while( data.indexOf('@') >0 ){ + ` + ` +} +data = XtpipesUni.toUni(data, "<>&"); +>>> + + + + +\<<< +String [] pre = data.split( + "[`]*@" + , 2); +if( pre[0].endsWith("}") ){ + if( pre[0].indexOf("{") != -1 ){ + pre[0] = pre[0].substring( 0, pre[0].lastIndexOf("{") ); +} } +int len = pre[0] . length(); +if( len > 0 ){ + out.print( XtpipesUni.toUni(pre[0], "<>&") ); + data = data.substring(len); +} +>>> + +\<<< +String [] post = data.split( + "@[`]*" + , 2); +if( post[1] . length() > 0 ){ + data = data.substring(0, data.length() - post[1] . length()); +} +` +data = post[1]; +>>> + + +\<<< +if( data.indexOf("{") == -1 ){ + out.print( + "" + + XtpipesUni.toUni(data, "<>&") + + "" + ); +} else { + int idx = data.indexOf('@'); + String ext = data.substring(idx); + data = data.substring(0,idx); + ` +} +>>> + + + +\<<< +while( true ){ + pre = data.split( + "[`]+" + , 2); + if( pre.length < 2 ){ + out.print( XtpipesUni.toUni(data + ext, "<>&") ); + data = ""; + break; + } + len = pre[0] . length(); + if( len > 0 ){ + out.print( XtpipesUni.toUni(pre[0], "<>&") ); + data = data.substring(len); + } + data = data.substring(0, data.length() - pre[1].length()); + out.print( + "" + + XtpipesUni.toUni(data, "<>&") + + "" + ); + data = pre[1]; +} +>>> + +\<<< +\\p{javaLowerCase}\\p{javaUpperCase}\\d\\-_\\./&>>> + + +\url{http://tools.ietf.org/html/rfc2368} + +\begin{verbatim} +Alice Smith" +{alice, bob}@somewhere.com +alice@somewhere.com, bob@somewhere.com +\end{verbatim} + +%%%%%%%%%%%%%%%%%% +\section{Long Tables} +%%%%%%%%%%%%%%%%%% + + + +\<<< + +>>> + + +\<<< + + + + + + + +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Tabular} +%%%%%%%%%%%%%%%%%% + + + +\<<< + +>>> + + +\<<< + + + +OK 1 + + + + + + +OK 2 + + + + +>>> + + + + + +\<<< + + + +OK 1 + + + + + + +OK 2 + + + + +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Empty HTML Element Script} +%%%%%%%%%%%%%%%%%% + +\<<< + +>>> + + +\<<< + +>>> + + + + +\<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + + + + + + +\<<< + + + + =" + + " + +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Shared} +%%%%%%%%%%%%%%%%%% + + + +\<<< + + +>>> + +\<<< + + + + + + +]]> +>>> + + + + +\ifdojava +\AtEndDocument{\Needs{% + "pushd \XTPIPES || exit 1 + ; + jar cf tex4ht.jar * + ; + popd + ; + mv tex4ht.jar \TEXMFTEXivBIN + ; + if [ ! -d \TEXMFTEXivXTPIPES\space]; then exit 1; fi +"}} +\fi + +\end{document} diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-javahelp.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-javahelp.tex new file mode 100644 index 00000000000..dbf2aa11e10 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-javahelp.tex @@ -0,0 +1,1737 @@ +% $Id: tex4ht-javahelp.tex 680 2020-03-16 17:42:41Z karl $ +% compile 3 times: latex tex4ht-javahelp +% or xhlatex tex4ht-javahelp "html,3,sections+" +% +% Copyright 2009-2020 TeX Users Group +% Copyright 2003-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{javahelp} + \def\PREAMBLE{% + \usepackage{url}% +% \usepackage{moreverb} +% \usepackage{hyperref}% + } + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\verbatiminput#1{% +\immediate\openin15=#1 +\immediate\ifeof15 \else +\immediate\closein15 + \bgroup + \tt + \catcode`\\=12 + \catcode`\{=12 + \catcode`\}=12 + \catcode`\%=12 +% \catcode`\ =12 + \catcode`\&=12 + \catcode`\#=12 + \catcode`\$=12 + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \input #1 + \egroup +\fi +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{The Outline} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%% +\section{The Root} +%%%%%%%%%%%%%%%%%%% + +% \<<< +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % javahelp.4ht |version % +% % Copyright (C) |CopyYear.2003. Eitan M. Gurari % +% | +% >>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Constructs} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\def\JHDIR{...../} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Introduction} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Review} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +JavaHelp is an online documentation system for use by Java-based +applications. + + +\begin{itemize} +\item +It can be activated with the +`javahelp' options. For instance, +`\verb+htlatex jobname "html,3.2,javahelp,unicode,3" " -cmozhtf -u10" "-cjavahelp"+'. +\item Supports HTML 3.2 (+?) and (some?) CSS 1.0 as imported +files as well as style attributes. +\end{itemize} + + +TeX4ht does the following for JavaHelp + +\begin{itemize} +\item Creates keys for the entries in the table of contents +and the index +\item Maps the keys into th erl's of the toc and the index (jobname.jhm) +\item Maps the keys to the entries referenced by the toc (jobname-jht.xml) +and to the entries referenced by the toc (jobname-jhi.xml) +\item Creates a manifest of the files (jhelpset.hs), under the assumption +that jhindexer set a search directory at jobname-jhs +`{\tt java -jar /n/gold/5/gurari/javahelp.dir/jh1.1.3/javahelp/bin/jhindexer.jar -db jobname-jhs *.html}' +\end{itemize} + + + +The javahelp.4ht file should not be loaded before the leading +\verb+\tableofcontents+ command got active. + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{References} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item \url{C:/jh1.1.3/doc/spec/FileFormat.html} +\item \url{http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/javahelp/javahelp.html} +\item \url{http://developer.java.sun.com/developer/JDCTechTips/2002/tt0423.html} +\item \url{http://developer.java.sun.com/developer/JDCTechTips/2002/tt0521.html} +\item \url{http://www.oreilly.de/catalog/creatingjavahelp/examples/} +\end{itemize} + + +%%%%%%%%%%%%% +\subsection{Importing CSS} +%%%%%%%%%%%%% + +\<<< +\:CheckOption{-css} \if:Option \else + \Log:Note{to ignore CSS code, use the command line option `-css} + \:CheckOption{css-in} \if:Option + \Log:Note{the inline CSS code is extracted from the input of the + previous compilation, so an extra compilation might be needed} + \Configure{@HEAD}{|} + \else + \Log:Note{for inline CSS code, use the command line option `css-in'} + \Configure{@HEAD}{\HCode{\Hnewline}} + \fi +\fi +>>> + + +\<<< +\openin15=\jobname .css +\ifeof15 \:warning{Missing file: \jobname .css }% +\else +\bgroup + \catcode`\{=12 \catcode`\}=12 \catcode`\%=12 \catcode`\#=12 + \HCode{\Hnewline\Hnewline}% +\egroup +\fi +\closein15 +>>> + + +\<<< +|<0,32,4 preambles|> +\ifx \a:FontCss:\:UnDef + \Configure{FontCss}{Font\string_Css##1} + {Font\string_Css\string_Plus\space##1} +\fi +\expandafter\ifx \csname aa:Css\endcsname\relax + \Configure{Css}{Css: ##1} +\fi +>>> + + + + + +\<<< +| +\Configure{Preamble} + {\:CheckOption{-css} \if:Option + \else |\fi} + {|} +\Configure{@/BODY} + {\relax + \ifnum \FileNumber=1 + \SaveEndP + \input javahelp-a.4ht + \RecallEndP + \fi + } +>>> + + + +\<0,32,4 preambles\><<< +\:CheckOption{-css} \if:Option + \def\Css#1{} + \NewConfigure{CssFile}{2} +\else + | +\fi +>>> + +\<<< +\def\Css#1{{\def\:temp{\Configure{Needs}}% + \expandafter\:temp\expandafter{\aa:Css}\Needs{#1}}} +>>> + +\<<< +\ScriptCommand{\CssFile}{% + \immediate\write-1{--- file \aa:CssFile\space ---}% + \def\FontSize##1##2{\:Context{##1}\ht:special{t4ht;\%##2}\%}% + \def\FontName##1{\:Context{##1}\ht:special{t4ht;=}}% + \def\:Context##1{\ht:special{t4ht>\jobname.tmp}##1\ht:special + {t4ht>\aa:CssFile}}% + \ht:special{t4ht>\jobname.tmp}\ht:special{t4ht>\aa:CssFile}% + \bgroup \everypar{}\NoFonts \bb:CssFile \hfil\break} + {\egroup \EndNoFonts + \ht:special{t4ht<\aa:CssFile}\ht:special{t4ht<\jobname.tmp}} +\let\Css:File=\CssFile +\def\CssFile{\futurelet\:temp\Css:Fl} +\def\Css:Fl{\ifx [\:temp \expandafter\Css:fl + \else \expand:after{\Css:File \space}\fi} +\def\Css:fl[#1]{\Css:File\space \css:files #1,,|} +\def\css:files#1,#2|{\def\:temp{#1}\ifx \:temp\empty + \else \def\:temp{\in:css#1.|\css:files#2,,|}\fi + \:temp } +\def\in:css#1.#2|{\def\:temp{#2}\ifx \:temp\empty + \inc:ss#1.css| + \else \inc:ss#1.#2|\fi} +\def\inc:ss#1.|{| } +\NewConfigure{CssFile}[2]{\def\aa:CssFile{#1}\def\bb:CssFile{#2}} +>>> + + + +\<<< +{\ifdim \lastskip>\z@ \unskip\fi \IgnorePar\parindent\z@ +\leavevmode}% +\immediate\write-1{--- file \aa:CssFile\space ---}% +\ht:special{t4ht>\aa:CssFile}\ht:special{t4ht=\Hnewline /* css.sty */}% +\ht:special{t4ht<\aa:CssFile}% +>>> + +\<<< + \immediate\openin15=#1 + \ifeof15 \immediate\closein15 + \:warning{Missing file: #1}% + \else \immediate\closein15 \input #1 \fi +>>> + + + +%%%%%%%%%%%%% +\subsection{Tabular} +%%%%%%%%%%%%% + +\<<< +\:CheckOption{no-array}\if:Option \else + | +\fi +>>> + + + +\<<< +| +>>> + + +\<<< +\:CheckOption{pic-tabular} \if:Option \else + \ConfigureEnv{tabular} + {|% + \IgnorePar|\EndP\HCode{
        }% + \PushStack\Col:Marg\AllColMargins + } + {\HCode{
        }\PopStack\Col:Marg\AllColMargins\ShowPar + |% + |% + }{}{} + \Css{div.tabular, div.center div.tabular {text-align: center; + margin-top:0.5em; margin-bottom:0.5em; }} + \Css{table.tabular td p{margin-top:0em;}} + \Css{table.tabular {margin-left: auto; + margin-right: auto;}} |% centering |% +\fi +>>> + + +\verb'\AllColMargins' Return a binary string in which 1 represents +a column, and 0 represents a `@'. \verb'\ColMargins' retrieves the +zeros before the 1's that represent the current and following 1's. + +\<<< +\def\ColMargins{% + \ifx \AllColMargins\empty + \:warning{Empty \string\AllColMargins}% + \else + \tmp:cnt=\HCol\relax + \expandafter\nosp:hbr\AllColMargins 1//% + \fi } +\def\nosp:hbr#11#2//{\ifnum \tmp:cnt>1 \advance\tmp:cnt by -1 + \nosp:hbr#2//\else\nosp:gt#11#2//\fi} +\def\nosp:gt#11#21#3//{% + \def\:temp{#1}\ifx \:temp\empty 1\else 0\fi + \def\:temp{#2}\ifx \:temp\empty 1\else 0\fi} +>>> + + + + +\<<< +\Configure{VBorder} + {\global\let\oldVBorder=\empty} + {\gdef\oldVBorder{border="1"}} + {}{} +\Configure{halignTB<>}{tabular}{\HCode{id="TBL-\TableNo" + class="tabular"\Hnewline + \oldVBorder \GROUPS\Hnewline + }<>\HAlign} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +\:CheckOption{pic-tabular} \if:Option \else + \Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP \halignTB{tabular}\putVBorder } + {\HCode{}} + {\HCode{}} + {\r:HA} + {\HCode{1 colspan="\HMultispan"\fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}|% + \HCode{">}|% + |\PushStack\Table:Stck\TableNo} + {|\PopStack\Table:Stck\TableNo \d:HA} +\fi +\def\R:HA{\HCode{}} +\def\r:HA{\HCode{}} +\def\D:HA{| \HCode{1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline>}\ShowPar\par} +\def\d:HA{\ifvmode \IgnorePar \fi \EndP\HCode{}|} +| +\Css{td.td00{ padding-left:0pt; padding-right:0pt; }} +\Css{td.td01{ padding-left:0pt; padding-right:5pt; }} +\Css{td.td10{ padding-left:5pt; padding-right:0pt; }} +\Css{td.td11{ padding-left:5pt; padding-right:5pt; }} +>>> + + + + + + +\<<< +\Configure{noalign}% + {\f:tabular\d:tabular \HCode{}} + {\HCode{}\pend:def\TableNo{0}\c:tabular\e:tabular}% +>>> + +\<<< +\ifvmode\else\HCode{}\fi +>>> + + +\<<< +\Configure{noalign}{}{}% +>>> + + +\<<< +\ShowPar +>>> + +\<<< +\ShowPar \par{\HCondtrue\noindent}% +>>> + + +\<<< +\NoFonts + \bgroup + \ifx \ttfamily\:UnDef \else \ttfamily\fi + \ColMargins + \egroup +\EndNoFonts +>>> + + +\<<< +\SaveEndP +>>> + +\<<< +\RecallEndP +>>> + +\<<< +\par \ShowPar +>>> + +\<<< +\IgnorePar \EndP +>>> + + +\<<< +\Configure{@{}}{} +>>> + + + + +\<<< +\Configure{halignTB<>}{array}{\HCode{id="TBL-\TableNo" class="array"\Hnewline + \GROUPS\Hnewline + }<>\HAlign} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +\:CheckOption{pic-array} \if:Option \else + \Configure{array} + {\ifvmode \IgnorePar\fi \EndP\halignTB{array}\putVBorder} + {\HCode{}} + {\R:HA} + {\r:HA} + {\D:HA\HCode{
        }|\pic:env} + {|\HCode{
        }\d:HA} + \Configure{arrayparbox}{\ShowPar} +\fi +>>> + + + + + + +\<<< + \let\VBorder=\empty \let\AllColMargins=\empty + \Configure{VBorder} + {\let\VBorder=\empty \let\AllColMargins=\empty + \global\let\GROUPS=\empty \HAssign\NewGroup = 0 + \gHAdvance\Next:TableNo by 1 \global\let\TableNo=\Next:TableNo + \global\let\oldVBorder=\empty + } + {\xdef\VBorder{\VBorder\ifnum \NewGroup> 0 \fi} + \HAssign\NewGroup = 0 \gdef\GROUPS{rules="groups"}% + \gdef\oldVBorder{border="1" }% + } + {\Advance:\NewGroup by 1 + \ifnum \NewGroup=1 \xdef\VBorder{\VBorder}\fi + \xdef\VBorder{\VBorder}\xdef\AllColMargins{\AllColMargins1}} + {\xdef\AllColMargins{\AllColMargins 0}} +% \Configure{HBorder} +% {} {} {} +% {} +% {} {} {} +% {} +% {\string } {} +% \Configure{putHBorder}{\HCode{\HBorder}} +\HAssign\Next:TableNo=0 \global\let\TableNo=\Next:TableNo +\Css{.hline hr, .cline hr{ height : 1px; margin:0px; }} +>>> + + + + +\<<< +\def\putVBorder{\expandafter\put:VBorder\VBorder|} +\def\put:VBorder#1#3|{\def\:temp{#2}\ifx\:temp\empty + \HCode{\VBorder}% + \def\:temp{#1}\ifx\:temp\empty \else\HCode{}\fi + \else \def\:temp{\put:VBorder#3|}\expandafter\:temp\fi +} +>>> + + +\<<< +\Configure{multicolumn} + {\let\col:Css\empty + \Configure{VBorder} + {} + {\edef\col:Css{\col:Css + border-\ifnum \ar:cnt=0 left\else right\fi + :solid black 0.4pt;}% + }{}{}% + } + {\ifx \col:Css\empty \else + \Css{td\#TBL-\TableNo-\HRow-\HCol{\col:Css}}% + \fi + } + {\ifvmode\IgnorePar\fi + \HCode{
        }% + \ifx \col:Css\empty \else + \Css{td\#TBL-\TableNo-\HRow-\HCol{\col:Css}}% + \fi + } + {\ifvmode\IgnorePar\fi \EndP\HCode{
        }} +>>> + +\<<< +\def\pic:env{% + \def\begin##1{\bgroup + \def\end####1{\o:end:{####1}\EndPicture\egroup}% + \ifx \EndPicture\:UnDef + \Picture+{ class="##1" style="text-align:middle"}% + \else \let\EndPicture=\empty\fi + \o:begin:{##1}}% +} +>>> + + +\<<< +\Configure{halignTD} {}{} + {<}{\HCode{ style="white-space:nowrap; text-align:left;"}} + {-}{\HCode{ style="white-space:nowrap; text-align:center;"}} + {>}{\HCode{ style="white-space:nowrap; text-align:right;"}} + {^}{\HCode{ style="vertical-align:top; white-space:nowrap;"}} + {=}{\HCode{ style="vertical-align:baseline; white-space:nowrap;"}} + {||}{\HCode{ style="vertical-align:middle; white-space:nowrap;"}} + {_}{\HCode{ style="vertical-align:bottom; white-space:nowrap;"}} + {p}{\HCode{ style="white-space:normal; text-align:left;"}\Protect\a:HColWidth} + {m}{\HCode{ style="white-space:nowrap; text-align:left; vertical-align:middle;"}} + {b}{\HCode{ style="white-space:nowrap; text-align:left; vertical-align:baseline;"}} + {} +\NewConfigure{HColWidth}{1} +\Configure{HColWidth}{} +>>> + + + + + +%%%%%%%%%%%%% +\subsection{Long Tables} +%%%%%%%%%%%%% + + +\<<< + | +>>> + + +\<<< +\:CheckOption{pic-longtable} \if:Option + \ConfigureEnv{longtable} + {\IgnorePar\EndP\Tg
        \Picture*{}} + {\EndPicture\Tg
        }{}{} + \Css{div.pic-longtable {text-align:center;}} +\else + \Log:Note{for pictorial longtable, + use the command line option `pic-longtable'} +\fi +>>> + + + +\<<< +\Configure{halignTB<>}{longtable}{\HCode{id="TBL-\TableNo" + class="longtable"\Hnewline + \oldVBorder \GROUPS\Hnewline + }<>\HAlign} +\Css{table[rules] {border-left:solid black 0.4pt; + border-right:solid black 0.4pt; }} +\Configure{longtable} + {\IgnorePar\EndP + \HCode{|
        }% + \halignTB{longtable}\putVBorder } + {\HCode{
        }} + {\HCode{}} + {\r:HA} + {\HCode{1 colspan="\HMultispan"\fi}% + \halignTD \HCode{ id="TBL-\TableNo-\HRow-\HCol" + \Hnewline class="td}|% + \HCode{">}|% + |\PushStack\Table:Stck\TableNo} + {\PopStack\Table:Stck\TableNo |\d:HA} +\Css{div.longtable{text-align:center;}} +\Configure{longtableparbox}{\IgnorePar\leavevmode\ShowPar\par} +>>> + + + +\<<< +% +>>> + + +%%%%%%%%%%%%% +\subsection{Color Tables} +%%%%%%%%%%%%% + + +\<<< +\Configure{@classz} + {\let\begin:current@color|=\relax + \let\end:current@color|=\relax } + {% + \ifx \CT@column@color\relax \else + \ifx \CT@column@color\empty \else{% + \def\CT@color{\@ifnextchar[\color:ii\color:i}% + \CT@column@color|% + \edef\:temp{\noexpand\add:color + {background-color}{\:temp}{\ar:cnt}}\:temp + }\fi \fi + } + {\begin:current@color} + {\end:current@color} +\Configure{rowcolor}{\row:clr} +\def\row:clr#1{{% + \HAdvance\HRow by 1 + \add:color{background-color}{#1}{\HRow-}}} +\Configure{text-colortbl} + {\add:color{color}{\current@color}{\HRow-\HCol}} +\Configure{cell-colortbl} + {\add:color{background-color}{\current@color}{\HRow-\HCol}} +\def\add:color#1#2#3{% + \Configure{SetHColor}{\Css{ \#TBL-\TableNo-#3{ #1:\HColor }}}{#2}} +>>> + +%%%%%%%%%%%%% +\subsection{Color} +%%%%%%%%%%%%% + + +\<<< +\HAssign\textcolorN=0 +\Configure{colorbox} + {\bgroup + \gHAdvance\textcolorN by 1 + \ifvmode \let\v:colorbox\def \IgnorePar \EndP + \else \let\v:colorbox=\relax \fi + |% + \HCode{<\ifx \v:colorbox\def div\else span\fi \Hnewline + class="colorbox" id="colorbox\textcolorN">}}% + {\ifx \v:colorbox\def \EndP\HCode{
        }\par + \else \HCode{}\fi + \egroup + } +>>> + + + + +\<<< +\Configure{textcolor} + {\gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor} + {\Css{span\#textcolor\textcolorN{color:\HColor}}}}% + \HCode{}}% + {\HCode{}} +>>> + + + +\<<< +\let\A:color=\a:color +\Configure{color}% + {\let\a:color=\A:color + \Configure{SetHColor} + {\Css{\ifx \v:colorbox\def div\else span\fi + \#colorbox\textcolorN{background-color:\HColor;}}}}% +>>> + + +\<\><<< +\Configure{fcolorbox} + {\gHAdvance\textcolorN by 1 + \let\A:color=\a:color + \Configure{color}% + {\Configure{SetHColor}{\Css{\#colorbox\textcolorN{border: + solid 1px \HColor;}}}}% + \Configure{fbox}{\leavevmode + \gHAdvance\textcolorN by -1 \let\a:color=\A:color}{}} + {} +>>> + + +\<<< +\Configure{fcolorbox} + {\bgroup\gHAdvance\textcolorN by 1 + \ifvmode \let\v:colorbox\def \IgnorePar \EndP + \else \let\v:colorbox=\relax \fi + \HCode{<\ifx \v:colorbox\def div\else span\fi \Hnewline + class="colorbox" id="colorbox\textcolorN">}% + |% + \Configure{fbox}{\leavevmode }{}% +} +{\ifx \v:colorbox\def \EndP\HCode{
        }\par + \else \HCode{}\fi \egroup} +>>> + +\<<< +\let\A:color=\a:color +\Configure{color}% + {|% + \Configure{SetHColor}{% + \Css{\#colorbox\textcolorN{border: solid 1px \HColor;}}}% + }% +>>> + +\<<< +\Configure{color}% + {\let\a:color=\A:color + \Configure{SetHColor}{% + \Css{\#colorbox\textcolorN{background-color: \HColor;}}% + }}% +>>> + + + +%%%%%%%%%%%%% +\subsection{Fonts} +%%%%%%%%%%%%% + + + + +\<<< +\Configure{textbf} + {\ifimmediate\else \Protect\HCode{}\fi} + {\ifimmediate\else \Protect\HCode{}\fi} +\Configure{textit} + {\ifimmediate\else \Protect\HCode{}\fi} + {\ifimmediate\else \Protect\HCode{}\fi} +\Configure{textsl} + {\ifimmediate\else \Protect\HCode{}\fi} + {\ifimmediate\else \Protect\HCode{}\fi} +\Configure{texttt} + {\ifimmediate\else \Protect\HCode{}\fi} + {\ifimmediate\else \Protect\HCode{}\fi} +\Configure{emph} + {\ifimmediate\else \Protect\HCode{}\fi} + {\ifimmediate\else \Protect\HCode{}\fi} +>>> + + +\<<< +\Configure{jhxml} +{% + \let\textbf\empty + \let\textit\empty + \let\textsl\empty + \let\texttt\empty + \let\textsc\empty + \let\emph\empty +} +>>> + + + +\<<< +\Configure{jhxml} +{% + \let\IeC\empty +} +>>> + +%%%%%%%%%%%%% +\subsection{French} +%%%%%%%%%%%%% + + + +\<<< +\Configure{jhxml} +{% + \expandafter\def\csname + a:frenchb-thinspace\endcsname##1frenchb-thinspace\endcsname{}% +} +>>> + +\<<< +\expandafter\let\csname jha:ftsp\expandafter\endcsname + \csname a:frenchb-thinspace\endcsname +\expandafter\def\csname a:frenchb-thinspace\endcsname{% + \ifimmediate + \expandafter\jha:ftspignore + \else + \expandafter\jha:ftsp + \fi +} +\def\jha:ftspignore#1frenchb-thinspace\endcsname{} +>>> + + + +%%%%%%%%%%%%% +\subsection{Ulem} +%%%%%%%%%%%%% + + + +\<<< +\Configure{uline} + {\HCode{}} {\HCode{}} +\Css{.uline{ text-decoration:underline; }} +\Configure{uuline} + {\HCode{}} {\HCode{}} +\Css{.uuline{ text-decoration:underline; }} +\Configure{sout} + {\HCode{}} {\HCode{}} +\Css{span.sout {text-decoration: line-through }} +\Configure{xout} + {\HCode{}} + {\HCode{}} +\Css{span.xout {text-decoration: line-through }} +\Configure{uwave} + {\HCode{}} + {\HCode{}} +\Css{span.uwave {text-decoration:underline }} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The JavaHelp Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<<< +% javahelp.4ht (|version), generated from |jobname.tex +% Copyright 2009-2019 TeX Users Group +% Copyright |CopyYear.2003. Eitan M. Gurari +| +>>> + +\<<< +|% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The HTML Documentation (*.html)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Prepare a \LaTeX{} file and compile it for HTML 3.2. For instance, +with the command {\tt htlatex jobname "html,3.2,3,javahelp"}. + +% \special{t4ht>foo.log} +% \special{t4ht=...x...} +% \special{t4ht*>foo.log} +% \special{t4ht*>} + + +\<<< +| +% \newif\ifimmediate +% \immediatefalse +>>> + + + +\<<< +\def\Write:File#1#2{% + \special{t4ht>#1}% + \special{t4ht=#2}% + \special{t4ht*>#1}% + \special{t4ht*>}% +} +>>> + + +\<<< +\NewConfigure{jhxml}[1]{\concat:config\a:jhxml{#1}} +\let\a:jhxml\relax +>>> + +\<<< +% javahelp-a.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.2003. Eitan M. Gurari +| +\NextFile{\jobname.tmp} +\HPage{} +\bgroup + \catcode`\:=11 + \catcode`\@=11 + \catcode`\"=12 + \Configure{PROLOG}{} + \Configure{HtmlPar}{}{}{}{} + \Configure{tableofcontents}{}{}{}{}{} + \Configure{htf}{0}{+}{}{}{}{}{}{}{} + \ScriptEnv{dito}{\IgnorePar}{} + \a:jhxml + | + | + | + | + | +\egroup +\EndHPage{} +>>> + +The HPage above is to ensure the all the references in the javahelp +files will be to locations at other files, and so they will explicitly +include the names of the files being referenced. The page is empty +and not referenced by other pages. + +\<<< +\immediate\write-1{--------------- JavaHelp -----------------} +\immediate\write-1{The entry (HelpSet) file for the java program + is at `\jobname.hs'} +\immediate\write-1{Generate a search database + with, for instance, the command} + \immediate\write-1{ java -jar + ...../jh1.1.3/javahelp/bin/jhindexer.jar + -db \jobname-jhs \jobname*.html} +\immediate\write-1{Compile the java program with a command similar to} + \immediate\write-1{ javac -classpath + ...../jh1.1.3/javahelp/lib/jh.jar program.java} +\immediate\write-1{Run the java program with a command similar to} + \immediate\write-1{ java -classpath + ...../jh1.1.3/javahelp/lib/jh.jar;. program} +\immediate\write-1{JavaHelp might require a compilation for HTML 3.2, + for instance,} +\immediate\write-1{ htlatex \jobname\space "html,javahelp,3.2,3"} +\immediate\write-1{------------------------------------------} +>>> + + + +\<<< +\def\jhNote{% + Created for JavaHelp + (http://java.sun.com/products/javahelp/)\Hnewline + by TeX4ht (https://tug.org/tex4ht/)\Hnewline + from \jobname.tex \space + } +>>> + +We can't keep the comment boundaries +in the macro because the adjacent hyphens +in some cases merge into a n-dash + under font encoding T1. For instance, + +\begin{verbatim} + \documentclass{report} + \usepackage[T1]{fontenc} + \begin{document} + + \ScriptEnv{dito}{}{} + + \begin{dito} + --[]-[] + \end{dito} + \end{document} +\end{verbatim} + + + +\<<< +\jhNote +>>> + + + +\<<< +!*?: >>> + + + + + +\<<< +\Configure{crosslinks}{}{}{}{}{}{}{}{}{} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The JavaHelp Root File (HelpSet File: jobname.hs)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +This file introduces the files in the help distribution. + + +\<<< +\jobname.hs>>> + + +The etension name must be `hs'! + + + +\<<< +\dTdLaNg>>> + +\<<< +\def\dTdLaNg{\expandafter + \ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname + \fi } +>>> + +\<<< +| +\IgnorePar\par\leavevmode\special{t4ht>|}% +\begin{dito}-\ + +\end{dito} +| +\begin{dito}-\ + -\relax-> + + |<title label|> + + | + + + + TOC + + javax.help.TOCView + | + + + Index + + javax.help.IndexView + | + + + Search + + javax.help.SearchView + | + + +\end{dito} +\IgnorePar\par\leavevmode\special{t4ht<|} +>>> + + + +\<<< +\tocLabel>>> + +\<<< +\indexLabel>>> + +\<<< +Search>>> + +\<<< +\titleLabel>>> + + +\<jh root config\><<< +\edef\tocLabel{\ifx\contentsname\:UnDef Table Of Contents\else + \ifx\contentsname\empty Table Of Contents\else + \contentsname\fi\fi} +\edef\indexLabel{\ifx\indexname\:UnDef Index\else + \ifx\indexname\empty Index\else \indexname\fi\fi} +\ifTag{TITLE+} + {\edef\titleLabel{\LikeRef{TITLE+}}} + {\def\titleLabel{\jobname}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The JavaHelp Search Directory (jobname-jhs)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<url of jh serach dir\><<< +\jobname-jhs>>> + +\def\JHINDEXER{java -jar +\JHDIR jh2.0/javahelp/bin/jhindexer.jar + -db \jobname-jhs \jobname*.html} + + + + +Use a command similar to `{\tt \JHINDEXER}' +to create a search directory \verb+JavaHelpSearch+ for JavaHelp from the HTML pages of the documentation. + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The JavaHelp Keys to URLs Mapping (jobname.jhm)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<url of jh keys file\><<< +\jobname.jhm>>> + + +The homeId tag provides the default entry to present when a HelpSet is +first shown. + +\<home id\><<< +\jobname>>> + +The default entry point can be overwritten in: + +\<entry point\><<< +\jobname>>> + + + +Assigns keys to locations within the HTML document. + + + +\<jh at start\><<< +\Write:File + {|<url of jh keys file|>} + {|<map preamble|>} +>>> + + +\<map preamble\><<< +<?xml version="1.0" encoding="ISO-8859-1" ?>\Hnewline +|<map DTD|> +\Hnewline <!-- |<tex4ht note|> -->\Hnewline +<map version="\dotVersion">\Hnewline +<mapID target="|<entry point|>" url="\jobname.html"/>\Hnewline +>>> + + +\<jh defs\><<< +\HAssign\mapEntry=0 +>>> + + +\<add index entry to map\><<< +\gHAdvance\mapEntry by 1 +\Write:File + {|<url of jh keys file|>}% + {<mapID target="indexentry-\mapEntry" + url="\RefFileNumber\FileNumber + \#\title:chs {dx\last:haddr}{\cur:th\:currentlabel}% + " />\Hnewline}% +>>> + + + +\<jh defs\><<< +\AtBeginDocument{% + \let\jh:toc=\auto:toc + \expandafter\append:defI\csname tableofcontents*\endcsname{% + \global\let\jh:toc=\auto:toc }% +} +>>> + + +\<load table of contents\><<< +\expandafter\ifx \csname jh:toc\endcsname\relax + \tableofcontents +\else + \expandafter\expandafter\expandafter\tableofcontents + \expandafter\expandafter\expandafter[\csname + jh:toc\endcsname]% +\fi +>>> + +\<jh at end\><<< +\special{t4ht>|<url of jh keys file|>}% +\bgroup + |<jh map for toc|> + \bgroup \catcode`\:=12 \catcode`\@=12 \let\contentsname\empty + |<load table of contents|>% + \egroup + \HCode {</map>\Hnewline} +\egroup +\special{t4ht*>|<url of jh keys file|>}% +\special{t4ht*>}% +>>> + +\<jh map for toc\><<< +\Configure{Link}{mapID}{target="\a:mapIdTarget" url=}{}{} +\Configure{TocLink}{\Link{#2}{}\EndLink} +\let\jh:doTocEntry\:doTocEntry +\def\:doTocEntry#1#2#3{% + \edef\sectioningKey{\expandafter\gob:IV\string#1}% + \edef\:temp{\noexpand\ConfigureToc{\sectioningKey} + {}{\relax}{}{}}\:temp + |<config toc target entry|>% + \jh:doTocEntry#1{#2}{#3}} +\def\gob:IV#1#2#3#4{} +\def\sectioningKey{NoToc} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The JavaHelp TOC (jobname-jht.xml)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<url of jh toc file\><<< +\jobname-jht.xml>>> + +\<jh toc\><<< +\bgroup +%\immediatetrue +|<jh TOC config|> +|<start jh TOC|> + |<load table of contents|>% +|<end jh TOC|> +\egroup +>>> + +\<start jh TOC\><<< +\IgnorePar\par\leavevmode\special{t4ht>|<url of jh toc file|>}% +\begin{dito}-\ +<?xml version="1.0" encoding="ISO-8859-1" ?> +\end{dito} +|<toc DTD|> +\begin{dito}-\ +<!-\relax- |<tex4ht note|> -\relax-> +<toc version="\dotVersion"> + <tocitem target="|<entry point|>" text="|<title label|>|<uni sp|>"> +\end{dito} +\let\end:jhhook=\empty +\catcode`\:=12 \catcode`\@=12 \let\contentsname\empty +\NoFonts +>>> + +\<end jh TOC\><<< +\EndNoFonts +\catcode`\:=11 \catcode`\@=11 +\end:jhhook +\begin{dito} + </tocitem> +</toc> +\end{dito} +\special{t4ht<|<url of jh toc file|>} +>>> + + + +\<jh TOC config\><<< +\Configure{TocLink} + {\HCode{<tocitem target="\a:mapIdTarget"\Hnewline + text="}\hbox{#4}\HCode{|<uni sp|>">\Hnewline}} +\let\jh:doTocEntry\:doTocEntry +\def\:doTocEntry#1#2#3{% + \edef\sectioningKey{\expandafter\gob:IV\string#1}% + \edef\:temp{\noexpand\ConfigureToc{\sectioningKey} + {}{\noexpand\set:endtocitem{\sectioningKey}}{}{}}\:temp + |<config toc target entry|>% + \jh:doTocEntry#1{#2}{#3}} +\def\gob:IV#1#2#3#4{} +\def\sectioningKey{NoToc} +>>> + + + +\<jh util\><<< +\def\set:endtocitem#1{% + \csname catchAt:#1\endcsname + \expandafter\ifx\csname a:end#1\endcsname\relax + \HCode{</tocitem>}% + \else + \expandafter\ifx \csname jh:#1\endcsname\relax + |<end tocitem at end of toc|>% + \def\:tempc##1,{\if ,##1,% + \expandafter\gob:pardel + \else + |<end tocitem at toc entry of diff type|>% + \expandafter\:tempc + \fi}% + \expandafter\expandafter\expandafter + \:tempc\csname a:end#1\endcsname,,|<par del|>% + \fi + |<end tocitem at toc entry of same type|>% + \fi +} +\def\gob:pardel#1|<par del|>{} +>>> + + +\<end tocitem at toc entry of same type\><<< +\csname jh:#1\endcsname +\expandafter\gdef\csname jh:#1\endcsname{% + \expandafter\global\expandafter\let\csname jh:#1\endcsname=\empty + \HCode{</tocitem><!--/#1-->}}% +>>> + +\<end tocitem at toc entry of diff type\><<< +\expandafter\ifx \csname catchAt:##1\endcsname \relax + \expandafter\gdef\csname + catchAt:##1\endcsname{\csname jh:#1\endcsname}% +\else + \expandafter\pend:def\csname + catchAt:##1\endcsname{\csname jh:#1\endcsname}% + \expandafter\global\expandafter\let\csname + catchAt:##1\expandafter\endcsname\csname catchAt:##1\endcsname +\fi +>>> + + +\<end tocitem at end of toc\><<< +\append:def\end:jhhook{% + \csname jh:#1\endcsname + \expandafter\global\expandafter + \let\csname jh:#1\endcsname\:UnDef}% +\global\let\end:jhhook\end:jhhook +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The JavaHelp Index (jobname-jhi.xml)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<url of the jh index\><<< +\jobname-jhi.xml>>> + +\<jh index\><<< +\bgroup +|<jh IDX config|> +|<start jh IDX|> + |<load index entries|>% +|<end jh IDX|> +\egroup +>>> + + +\<start jh IDX\><<< +\IgnorePar\par\leavevmode\special{t4ht>|<url of the jh index|>}% +\begin{dito}-\ +<?xml version="1.0" encoding="ISO-8859-1" ?> +\end{dito} +|<index DTD|> +\begin{dito}-\ +<!-\relax- |<tex4ht note|> -\relax-> +<index version="\dotVersion"> +\end{dito} +>>> + +\<end jh IDX\><<< +\begin{dito} +</index> +\end{dito} +\special{t4ht<|<url of the jh index|>}% +>>> + + +\<load index entries\><<< +\let\indexname\empty +\def\gobbleLnk#1, \LNK#2#3#4#5{#1\HCode{" target="indexentry-#5"}} +\Configure{theindex} + {}{} + {\hbox\bgroup\HCode{<\string !--index-item--><indexitem + text="}\gobbleLnk} + {\HCode{/>}\egroup\hfill\break} + {\hbox\bgroup\HCode{<\string !--subex-item--><indexitem + text="}\gobbleLnk} + {\HCode{/>}\egroup\hfill\break} + {\hbox\bgroup\HCode{<\string !--subsubitem--><indexitem + text="}\gobbleLnk} + {\HCode{/>}\egroup\hfill\break} + {} +\immediate\openin15=\jobname.ind +\ifeof15 + \immediate\closein15 +\else + \immediate\closein15 + \input \jobname.ind +\fi +>>> + + + +\<load index entriesNO\><<< +\def\beforeindex#1||LNK#2#3{#1}% +\def\indexentry#1#2{\HCode{<indexitem target="indexentry-#2" + text="}\beforeindex#1\HCode{|<uni sp|>" />\Hnewline}}% +\immediate\openin15=\jobname.4dx +\ifeof15 + \immediate\closein15 +\else + \immediate\closein15 + \input \jobname.4dx +\fi +>>> + + +\<jh defs\><<< +\HAssign\indexEntry=0 +\append:defI\@wrindex{% + |<add index entry to map|>% +} +>>> + + +JavaHelp has problems with unicode values at the end of text fields in +the toc of within the jht file: it refuses `\verb+text="Menü"+' +(but accepts `\verb+text="Menü "+'). The following adds spaces at +the end of the text attribute values. + +\<uni sp\><<< + >>> + +A similar problem occurs when two unicode character codes follow each +other. In this case, the second one is not properly rendered. + + +%%%%%%%%%%%%% +\subsection{Configuring Link Targets} +%%%%%%%%%%%%% + +\<config toc target entry\><<< +\expandafter\target:info#3//% +\b:mapIdTarget +>>> + +\<jh defs\><<< +\def\target:info#1#2#3#4#5#6//{% + \let\sectionType=\sectioningKey + \let\sectionId\TocCount + \Advance:\sectionId 1 + \def\sectionName{#5}% + } +\NewConfigure{mapIdTarget}{2} +\Configure{mapIdTarget} + {\sectionType-\sectionId} + {} +>>> + + + +%%%%%%%%%%%%% +\subsection{Version Information} +%%%%%%%%%%%%% + + + +\<helpset DTD\><<< +\begin{dito}-\ + <!DOCTYPE helpset PUBLIC + "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version \dotVersion//|<dtd lang|>" + "http://java.sun.com/products/javahelp/helpset_\subVersion.dtd"> +\end{dito} +>>> + +\<toc DTD\><<< +\begin{dito}-\ + <!DOCTYPE toc PUBLIC + "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version \dotVersion//|<dtd lang|>" + "http://java.sun.com/products/javahelp/toc_\subVersion.dtd"> +\end{dito} +>>> + +\<index DTD\><<< +\begin{dito}-\ + <!DOCTYPE index PUBLIC + "-//Sun Microsystems Inc.//DTD JavaHelp Index Version \dotVersion//|<dtd lang|>" + "http://java.sun.com/products/javahelp/index_\subVersion.dtd"> +\end{dito} +>>> + + +\<old index DTD\><<< + <!DOCTYPE index PUBLIC + "-//Sun Microsystems Inc.//DTD JavaHelp Index Version \dotVersion//|<dtd lang|>" + "http://java.sun.com/products/javahelp/index_\subVersion.dtd"> +>>> + + + + + +\<map DTD\><<< +<!DOCTYPE map PUBLIC\Hnewline + "-//Sun Microsystems Inc.//DTD + JavaHelp Map Version \dotVersion//|<dtd lang|>"\Hnewline + "http://java.sun.com/products/javahelp/map_\subVersion.dtd"> >>> + + +\<jh defs\><<< +\:CheckOption{jh1.0} \if:Option + \def\dotVersion{1.0} + \def\subVersion{1\string_0} +\else + \def\dotVersion{2.0} + \def\subVersion{2\string_0} +\fi +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Incorporate JavaHelp into a program} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Url of JavaHelp root file (jobname.hs) + +\url{http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/javahelp/javahelp.html} + +%// javac -classpath ~/javahelp.dir/jh2.0/javahelp/lib/jh.jar program.java +%// java -classpath ~/javahelp.dir/jh2.0/javahelp/lib/jh.jar program + +\<program\><<< +import java.net.URL; +import javax.help.*; +import javax.swing.*; +public class program { + //^^^^^^^ + public static void main(String args[]) { + JHelp helpViewer=null; + try { + ClassLoader cl = program.class.getClassLoader(); + //^^^^^^^ + URL url = HelpSet.findHelpSet(cl, + "|<jobname.hs: url of jh root file|>"); + HelpSet hs = new HelpSet(cl, url); + helpViewer = new JHelp( hs ); + /* + helpViewer.setCurrentID("|<entry point|>"); + */ + } catch (Exception e) { + System.out.println("error"); System.exit(0); + } + JFrame frame = new JFrame(); + frame.getContentPane().add(helpViewer); + frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + frame.setSize(500,500); + frame.setVisible(true); + } +} +>>> + + +\url{http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javahelp/} + +\<HelpMenu\><<< +import java.net.*; +import javax.help.*; +import javax.swing.*; +import java.awt.event.*; + +public class HelpMenu { + JFrame f; + JMenuItem topics; + + public HelpMenu() { + f = new JFrame("Menu Example"); + JMenuBar mbar = new JMenuBar(); + + // a file menu + JMenu file = new JMenu("File"); + JMenu help = new JMenu("Help"); + + // add an item to the help menu + help.add(topics = new JMenuItem("Help Topics")); + + // add the menu items to the menu bar + mbar.add(file); + mbar.add(help); + + // 1. create HelpSet and HelpBroker objects + HelpSet hs = getHelpSet(|<jobname.hs: url of jh root file|>); + HelpBroker hb = hs.createHelpBroker(); + + // 2. assign help to components +/* + CSH.setCurrentID("|<entry point|>"); +*/ + // 3. handle events + topics.addActionListener(new CSH.DisplayHelpFromSource(hb)); + + // attach menubar to frame, set its size, and make it visible + f.setJMenuBar(mbar); + f.setSize(500, 300); + f.setVisible(true); + } + + /** + * find the helpset file and create a HelpSet object + */ + public HelpSet getHelpSet(String helpsetfile) { + HelpSet hs = null; + ClassLoader cl = this.getClass().getClassLoader(); + try { + URL hsURL = HelpSet.findHelpSet(cl, helpsetfile); + hs = new HelpSet(null, hsURL); + } catch(Exception ee) { + System.out.println("HelpSet: "+ee.getMessage()); + System.out.println("HelpSet: "+ helpsetfile + " not found"); + } + return hs; + } + + public static void main(String argv[]) { + new HelpMenu(); + } +} +>>> + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Compiling} +%%%%%%%%%%%%%%%%%%%%% + +\def\JAVAC{javac -classpath \JHDIR jh2.0/javahelp/lib/jh.jar program.java} + +Add JavaHelp to your program, say `program.java', and compile the +program with the command `{\tt \JAVAC}'. + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Running} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\RUN{java -classpath \JHDIR jh2.0/javahelp/lib/jh.jar;. program} + +Use the a command similar to `{\tt \RUN}'. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Compressing (with JAR)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\begin{verbatim} +javac -classpath c:\jh1.1.3\javahelp\lib\jhall.jar + -d c:\temp + JavaHelpTest.java + +jar cvfm JavaHelpTest.jar manifest JavaHelpTest.class + +java -jar jh1.3.1/demos/bin/UserGuide.jar +\end{verbatim} + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Getting the JavaHelp Software} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +Download JavaHelp from + \url{http://java.sun.com/products/javahelp/download_binary.html} +and unzip it into some directory (say {\tt \JHDIR}). + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sample} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Help Set} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\verbatiminput{\jobname.hs} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Map Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\verbatiminput{\jobname.jhm} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Table of Contents} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\verbatiminput{\jobname-jht.xml} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Index} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\verbatiminput{\jobname-jhi.xml} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \OutputCodE\<javahelp.4ht\> +\OutputCodE\<javahelp-a.4ht\> + +\ifOption{javahelp} + { + \Needs{"xhlatex \jobname\space \string\"html,3,javahelp\string\""} + \Needs{"xhlatex \jobname\space \string\"html,3,javahelp\string\""} + } + {} + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsmath.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsmath.tex new file mode 100644 index 00000000000..97e86de2635 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsmath.tex @@ -0,0 +1,899 @@ +% $Id: tex4ht-jsmath.tex 77 2011-01-28 11:45:59Z cvr $ +% compile 3 times: latex tex4ht-jsmath +% or xhlatex tex4ht-jsmath "html,3,sections+" +% +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) 2005-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. +% +% CDATA support: +% http://planetmath.org/encyclopedia/ +% +% <script type="text/javascript"> +% //<![CDATA[ +% jsMath.Macro( 'ab', '{#1}_{\\mathrm{ab}}', 1) +% //]]> +% </script><script type="text/javascript"> +% //<![CDATA[ +% jsMath.Macro( 'Ad', '\\mathrm{Ad}', 0) +% //]]> +% </script><script type="text/javascript"> +% //<![CDATA[ +% jsMath.Macro( 'ad', '\\mathrm{ad}', 0) +% //]]> + +\ifx \HTML\UnDef + \def\HTML{jsmath,html-jsmath} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Constructs} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<jsmath\><<< +% jsmath.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.2005. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +\<html-jsmath\><<< +% html-jsmath.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.2006. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + +\<configure html-jsmath tex4ht\><<< +\Configure{VERSION}{} +>>> + + +\<configure jsmath tex4ht\><<< +\NewConfigure{jsmath}{1} +\ifOption{easy-load}{% + \Configure{jsmath}{jsMath/easy/load.js}% +}{% + \Log:Note{The `easy-load' command line option offers + an alternative loading approach of + jsMath version 3.4 or above}% + \Configure{jsmath}{jsMath/jsMath.js}% +} +>>> + +% CVR: 2011-01-28 + +Rob Beezer \texttt{<beezer@ups.edu>} reported parse errors triggered +by xtpipes when jsmath compatible html pages are generated. Hence the +\verb=\Hcode{<!--l. \the\inputlineno-->}= has been commented out. Also +commented out is \verb= |<recall dvimath par|>= which would insert a +\verb=\sv:ignore= macro at the end of the \verb=DViMath= +configuration. + + +\<configure html-jsmath tex4ht\><<< +\Configure{DviMath} + {\a:DviJsmath \mathltxtrue + \ifOption{mml-fonts}{}{|%\mml:htfsym|%\NoFonts}% + \IgnoreRule + % \HCode{<!--l. \the\inputlineno-->} + \ifx \a:@math\empty\else + \Tg<\a:@math\space class="math"\Hnewline >\fi + \a:math + |<sv dvimath par|>\IgnorePar} + {\ifx \a:@math\empty\else \Tg</\a:@math>\fi \EndIgnoreRule + \ifOption{mml-fonts}{}{|%\ext:htfsym|%\EndNoFonts}% + \mathltxfalse \After:Math \b:DviJsmath % |%recall dvimath par|% + } +\NewConfigure{DviJsmath}{2} +>>> + + + +\<defs for jsmath\><<< +jsMath.Macro('firstOfOne','\#1',1) +>>> + + + +\<end mtext space\><<< +\ht:special{t4ht@,}% +>>> + +\<start mtext space\><<< +\ht:special{t4ht@,&\#x00A0;}% +>>> + +Changes to fix bugs reported by Rob Beezer's +\texttt{<beezer@ups.edu>}: Values of \verb=\@math= in the +configurations of \verb=$= and \verb=$$= have been changed from +\verb=span= and \verb=div= to \verb=\dlr= and \verb=\dlr\dlr= +respectively. \verb=\dlr= will expand to \verb=$= character which is +needed by jsMath. Removed \verb=|<inline end-par comment|>= after +\verb=IgnorePar= in the configuration for \verb=$$=. + + +\<configure jsmath tex4ht\><<< +\def\dlr{\expandafter\@gobble\string\$} +\Configure{$} + {\Configure{@math}{\dlr}\DviMath} + {\EndDviMath}{} +\Configure{$$} + {\Configure{@math}{\dlr\dlr}\IgnorePar + \EndP\DviMath} + {\EndDviMath + \ShowPar\par{\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue} +>>> + +\<recall dvimath par\><<< +\sv:ignore +>>> + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + +\<configure html-jsmath tex4ht\><<< +\Configure{@HEAD}{|<load jsmath|>} +\Configure{@BODY} + {\ifvmode \IgnorePar\fi \EndP\HCode{% + |<window opening|>% + |<load jsmath warning|>% + }\par\ShowPar} +\ifOption{easy-load}{}{% + \Configure{@/BODY}{% + \par\IgnorePar\EndP + \HCode{ + <script type="text/javascript" >\Hnewline + jsMath.Process();\Hnewline + </script> + }\par}% +} +\Configure{!BODY}{ class="tex2math_ignore" } +>>> + + + +\<load jsmath\><<< +\HCode{<script + type="text/javascript" + src="\a:jsmath"></script>\Hnewline +<script type="text/javascript">|<defs for jsmath|></script>\Hnewline} +>>> + +\<load jsmath warning\><<< +<noscript> \Hnewline +<div style="color:\#CC0000; text-align:center"> \Hnewline +<b>Warning: <a href="http://www.math.union.edu/locate/jsMath">jsMath</a> \Hnewline +requires JavaScript to process the mathematics on this page.<br /> \Hnewline +If your browser supports JavaScript, be sure it is enabled.</b> \Hnewline +</div> \Hnewline +<hr /> \Hnewline +</noscript>\Hnewline +>>> + + + +%%%%%%%%%%%%% +\subsection{Links} +%%%%%%%%%%%%% + + + + +\<configure jsmath tex4ht\><<< +\def\Hbrakets<#1>{\ifmathltx + \ifmtext @(#1)\else \string\hbox{@(#1)}\fi + \else <#1>\fi} +\def\EndLink{\ifmathltx + \ifmtext |<end mtext space|>% + \egroup \HCode{\%\Hnewline\%}\Endmtxt:link + \HCode{\string\end{ref}\Hnewline}|<start mtext space|>% + \else \HCode{\Hbrakets</a>}\fi + \else \expandafter\M:EndLink\fi} +\LinkCommand\msp:link{a, href, id, \mml:class="label",,} +>>> + +\<configure jsmath tex4ht\><<< +\def\Link{\M:Link} +\def\EndLink{\M:EndLink} +>>> + + +``The contents of an \verb=\hbox{}= are not rendered by jsMath, but +instead are used as plain text in the browser. JsMath allows you to +include HTML commands through the (rather awkward) means of using +@(...) in place of \verb=<...>=. For example, \verb=\hbox{@(tt)= + monospaced \verb=text@(/tt)= would get the enclosed text in the TT font.'' +The above also holds for \verb=\text= instead of \verb=\hbox=. + + + +%%%%%%%%%%%%% +\subsection{Core} +%%%%%%%%%%%%% + + + +\<configure jsmath tex4ht\><<< +\Configure{over} + {\Send{GROUP}{0}{\l:brace\space}} + {\HCode{\string\over\space}\Send{EndGROUP}{0}{\r:brace\space}} +\Configure{atop} + {\Send{GROUP}{0}{\l:brace\space}} + {\HCode{\string\atop\space}\Send{EndGROUP}{0}{\r:brace\space}} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{LaTeX} +%%%%%%%%%%%%%%%%%% + +\marginpar{Anchors need fixing} + +\<configure jsmath latex\><<< +\def\set:label#1{\ifmathltx +% \HCode{\%\Hnewline\%\string\begin{label}}% +% {\ht:special{t4ht@, }\let\:newlnch\space \mathltxfalse #1}% +% \HCode{\string\end{label}\Hnewline}% + \else #1\fi +} +>>> + + + + +\<configure jsmath latex\><<< +\Configure{frac} + {\HCode{\l:brace}} + {\HCode{\string\over\space}\Configure{over}{}{}} + {} + {\HCode{\r:brace}} +>>> + + + + + +\<configure jsmath latex\><<< +\Configure{[]} + {\Configure{@math}{div}\csname a:mathltx[]\endcsname + \DviMath$$\DisplayMathtrue } + {$$\EndDviMath\csname b:mathltx[]\endcsname} +\Configure{()} + {\Configure{@math}{span}\csname a:mathltx()\endcsname + \DviMath$} + {$\EndDviMath\csname b:mathltx()\endcsname} +>>> + + +\<configure jsmath fontmath\><<< +\Configure{mfenced}{\langle}{\string\langle\space} +\Configure{mfenced}{\rangle}{\string\rangle\space} +\def\:tempc{\HCode{\string\langle\space}} +\HLet\langle\:tempc +\def\:tempc{\HCode{\string\rangle\space}} +\HLet\rangle\:tempc +\def\:tempc{\HCode{\string\vert\space}} +\HLet\vert\:tempc +\def\:tempc{\HCode{\string\Vert\space}} +\HLet\Vert\:tempc +\def\:tempc{\HCode{\string\||}} +\HLet\||\:tempc +\def\:tempc{\HCode{\string\big\space}} +\HLet\big\:tempc +\def\:tempc{\HCode{\string\bigg\space}} +\HLet\bigg\:tempc +\def\:tempc{\HCode{\string\Big\space}} +\HLet\Big\:tempc +\def\:tempc{\HCode{\string\Bigg\space}} +\HLet\Bigg\:tempc +>>> + + + +\<configure jsmath array\><<< +|<config array|> +>>> + +\<configure jsmath latex\><<< +|<config array|> +>>> + +\<config array\><<< +\Configure{array} + {%\expandafter\tmp:toks\expandafter{\Clr}% + \HCode{\string\array\l:brace\Hnewline}} + {\ifvmode \IgnorePar\fi \HCode{\r:brace}} + {\ifnum \HRow> 1\HCode{\string\cr\Hnewline}\fi} + {} + {|<mtd array|>} + {} +>>> + + +\<configure jsmath latex\><<< +\Configure{emph} + {\ifmmode \Configure{@mtext}{\string\mathit}\fi} + {}% +>>> + +%%%%%%%%%%%%%%%%%% +\section{AMS Math} +%%%%%%%%%%%%%%%%%% + +\<configure jsmath amsmath\><<< +\expandafter\def\csname genfrac \endcsname#1#2#3#4{% + \def\:tempa{#1}\ifx\:tempa\empty\else \HCode{\string\left}#1\fi + \def\:tempa{#2}\ifx\:tempa\empty\else \def\:tempa{\HCode{\string\right}#2}\fi + \edef\@tempb{\@nx\@genfrac\@mathstyle{#4}% + \expandafter\noexpand\csname @@\ifx @#3@over\else above\fi + \endcsname}% + \@tempb{#3}} +\def\:tempc#1#2#3#4#5{{\a:genfrac#1\b:genfrac{\c:genfrac#4#2#3\relax + {\d:genfrac#5\e:genfrac}}\f:genfrac}\:tempa} +\HLet\@genfrac\:tempc +>>> + + +\<configure html-jsmath amsmath\><<< +\ifx \mathdisplay@@pop\:UnDef + \ifx \emdf@La\:UnDef + |<amsmath html-jsmath pre 2000|> + \else + |<amsmath html-jsmath jan 2000|> + \fi +\else + |<amsmath html-jsmath july 2000|> +\fi +>>> + + +\<configure html-jsmath amsmath\><<< +\Configure{equation$$} + {\Configure{$$} + {\IgnorePar \Configure{@math}{div}\EndP\DviMath} + {\EndDviMath\EndP} + {\DisplayMathtrue}% + } +>>> + +\<configure jsmath amsmath\><<< +\Configure{tmspace} + {\HCode{\string\kern \space \textspace\space}} +\def\lvert{\HCode{\string\vert\space}} +\def\rvert{\HCode{\string\vert\space}} +\def\lVert{\HCode{\string\Vert\space}} +\def\rVert{\HCode{\string\Vert\space}} +>>> + +% CVR: 2011-01-28 + +Changes to fix bugs reported by Rob Beezer's +\texttt{<beezer@ups.edu>}: Configuration for \verb=\intertext= +introduced. + +\<configure jsmath amsmath\><<< +\Configure{intertext} + {\IgnorePar %\ifinalign@ + \HCode{\string\cr }% + \AA:text{intertext}} + {\BB:text \ifvmode \IgnorePar \fi %\EndP + \HCode{\string\cr }} +>>> + +\<configure jsmath amsmath\><<< +\ConfigureEnv{multline} + {\bgroup \Configure{$$} + {\Configure{@math}{}\IgnorePar \EndP\DviMath } + {\EndDviMath\ShowPar\csname par\endcsname + {\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue}% + } {\egroup} + {}{} +\Configure{multline} + {\HCode{<table class="multline"><tr><td><span class="math">}} + {\HCode{</span></td></tr></table>}} + {\ifnum \HRow> 1\HCode{</span></td></tr>\Hnewline + <tr><td><span class="math">}\fi} + {\gdef\mult:amp{\gdef\mult:amp{\HCode{</span></td> + <td class="eq-no"><span class="math">}}}} + {\csname mult:amp\endcsname \HCode{\ifnum 1<\HMultispan +% \string\multicolumn\l:brace\HMultispan\r:brace + %\string\multispan + ?span/multispan-in-jsmath? + \space\HMultispan\space + \fi}% + } {} +\Css{table.multline td {text-align:left; + vertical-align:middle; padding-left: 2em; }} +\Css{table.multline td.eq-no { text-align:center; }} +\Css{table.multline { width:100\%; }} +>>> + +\<configure jsmath amsmathNO\><<< +\ConfigureEnv{multline} + {\bgroup |<display math-|>} {\egroup} + {}{} +\Configure{multline} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace lp{10mm}r\r:brace}} + {\HCode{\string\end \l:brace array\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\space}\qquad\fi} + {\gdef\mult:amp{\gdef\mult:amp{\HCode{\a:math:amp}\qquad}}} + {\csname mult:amp\endcsname \HCode{\ifnum 1<\HMultispan +% \string\multicolumn\l:brace\HMultispan\r:brace + |<multi span|> \space\HMultispan\space + \fi}% + } {} +>>> + +\<configure jsmath amsmath\><<< +\ConfigureEnv{multline*} + {\bgroup |<display math-|>} {\egroup} + {}{} +\Configure{multline*} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace lr\r:brace}} + {\HCode{\string\end \l:brace array\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} + {} +>>> + + +\<display math-\><<< +\Configure{$$} + {\Configure{@math}{div}\IgnorePar + \EndP\DviMath } + {\EndDviMath\ShowPar\csname par\endcsname + {\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue}% +>>> + + + +\<configure jsmath amsmath\><<< +\Configure{subarray} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace \Hlcr\r:brace}} + {\HCode{\string\end \l:brace array\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} +\Configure{smallmatrix} + {\HCode{\string\begin\l:brace matrix\r:brace}} + {\HCode{\string\end \l:brace matrix\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {\HCode{\ifnum \HCol>1 \a:math:amp\fi \scriptstyle + \ifnum 1<\HMultispan +% \string\multicolumn\l:brace\HMultispan\r:brace + |<multi span|> \space\HMultispan\space + \fi}% + } {} +>>> + + + + + + + + +\<configure jsmath amsmath\><<< +\Configure{aligned} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace rlrlrl\r:brace}} + {\HCode{\string\end \l:brace array\r:brace}} + {} + {\HCode{\string\cr\space}} + {} + {\HCode{\a:math:amp\space}} +\Configure{alignedat} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace rlrl\r:brace}} + {\HCode{\string\end \l:brace array\r:brace}} + {} + {\HCode{\string\cr\space}} + {} + {\HCode{\a:math:amp\space}} +>>> + + + + + + + + + + + + +\<amsmath html-jsmath july 2000\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<table class="equation"><tr><td>}% + |<amsmath equation july 2000|>% + |<math display in amsmath equation|>% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td><td class="eq-no">}% + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \ShowPar\IgnoreIndent\par} +\Configure{equation*} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<table class="equation-star"><tr><td>}% + |<amsmath equation* july 2000|>% + |<math display in amsmath equation|>% + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \ShowPar\IgnoreIndent\par} +>>> + + +\<math display in amsmath equation\><<< +\csname a:equation\string$\string$\endcsname +>>> + + + +\<amsmath equation july 2000\><<< +\Configure{gather} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace lp{10mm}r\r:brace}\IgnorePar + |<math display in equation|>} + {\HCode{\string\end\l:brace array\r:brace}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{\a:math:amp}\fi } + {} +>>> + + +\<amsmath equation* july 2000\><<< +\Configure{gather*} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace lp{10mm}r\r:brace}\IgnorePar + |<math display in equation|>} + {\HCode{\string\end\l:brace array\r:brace}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{\a:math:amp}\fi } + {} +>>> + + + + +\<configure jsmath amsmath\><<< +\Configure{split} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace rl\r:brace}} + {\ifvmode\IgnorePar\fi + \HCode{\string\end \l:brace array\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} {} +>>> + + +\<configure jsmath tex4ht\><<< +\Configure{math:amp}{\string&} +>>> + + + +\<mtd array\><<< +\HCode{\ifnum \HCol>1 \a:math:amp\fi + \ifnum 1<\HMultispan +% \string\multicolumn\l:brace\HMultispan\r:brace + |<multi span|> \space\HMultispan\space + \fi}% +>>> + +\<multi span\><<< +%\string\multispan +?span/multispan-in-jsmath? +>>> + + +\<configure jsmath amsmath\><<< +\ConfigureEnv{gather} + {\bgroup |<display math-|>} {\egroup} + {}{} +\Configure{gather} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace cl\r:brace}} + {\HCode{\string\end \l:brace array\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} {} +\ConfigureEnv{gather*} + {\bgroup |<display math-|>} {\egroup} + {}{} +\Configure{gather*} + {\HCode{\string\begin\l:brace array\r:brace + \l:brace cl\r:brace}} + {\HCode{\string\end \l:brace array\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} {} +>>> + +% CVR 2011-01-28 + +\verb=\HtmlParOff= added to \verb=\Configure{#1}=. +\verb=\HCode{<--tex4ht:inline-->}= commented out as it interfered with +parsing. \verb=\HtmlParOn= added after \verb=\end:mathalign=. Before +cell and after cell configurations have been rewritten to solve the +problems reported by Rob Beezer's \texttt{<beezer@ups.edu>}. + +% \<configure jsmath amsmath\><<< +% \def\:tempc#1#2{% +% \ConfigureEnv{#1} +% {\def\end:al:env{}\ifmmode\else +% \ifvmode\else \def\end:al:env{\par\ShowPar\IgnoreIndent} +% \fi\fi} +% {\end:al:env } +% {}{}% +% \Configure{#1} +% {\IgnorePar\HtmlParOff +% \ifvmode \EndP \else \EndP\fi +% \ifmathltx +% \Tg<mrow>\def\end:mathalign{\Tg</mrow>}% +% \else +% \Configure{@math}{div}\DviMath +% \def\end:mathalign{\EndDviMath \DisplayMathfalse}% +% \DisplayMathtrue +% \fi +% \HCode{\string\matrix\l:brace}} +% {\HCode{\r:brace}\end:mathalign\HtmlParOn} +% {\ifnum \HRow> 1\HCode{\string\cr\Hnewline}\fi} +% {} +% {\HCode{\ifnum \HCol>1 \a:math:amp\fi +% \ifnum 1<\HMultispan +% ?span/multispan-in-jsmath? +% \space\HMultispan\space\fi}}% +% {} % +% } +% \:tempc{align}{align} +% \:tempc{alignat}{alignat} +% \:tempc{xalignat}{xalignat} +% \:tempc{xxalignat}{xxalignat} +% \:tempc{flalign}{flalign} +% \:tempc{align*}{align*} +% \:tempc{alignat*}{alignat*} +% \:tempc{xalignat*}{xalignat*} +% \:tempc{flalign*}{flalign*} +% >>> + + +jsMath doesn't support hfil... hence the following + +\<extra align col sep\><<< +\ifodd\HCol\space\else + \string\kern \space 2em\space +\fi +>>> + +Yet another venue through eqalign + +\<configure jsmath amsmath\><<< +\def\:tempc#1#2{% + \ConfigureEnv{#1} + {\def\end:al:env{}\ifmmode\else + \ifvmode\else \def\end:al:env{\par\ShowPar\IgnoreIndent} + \fi\fi} + {\end:al:env } + {}{}% + \Configure{#1} + {\IgnorePar\HtmlParOff + \ifvmode \EndP \else \EndP \fi + \ifmathltx + \Tg<mrow>\def\end:mathalign{\Tg</mrow>}% + \else + \Configure{@math}{div}\DviMath + \def\end:mathalign{\EndDviMath \DisplayMathfalse}% + \DisplayMathtrue + \fi + \HCode{\string\eqalignno\l:brace}} + {\HCode{\r:brace}\end:mathalign\HtmlParOn} + {\ifnum \HRow> 1\HCode{\string\cr\Hnewline}\fi} + {} + {\HCode{\ifnum \HCol>1 \a:math:amp\fi + \ifnum 1<\HMultispan + ?span/multispan-in-jsmath? + \space\HMultispan\space\fi}}% + {} % +} +\:tempc{align}{align} +\:tempc{alignat}{alignat} +\:tempc{xalignat}{xalignat} +\:tempc{xxalignat}{xxalignat} +\:tempc{flalign}{flalign} +\:tempc{align*}{align*} +\:tempc{alignat*}{alignat*} +\:tempc{xalignat*}{xalignat*} +\:tempc{flalign*}{flalign*} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Over and Under} +%%%%%%%%%%%%%%%%%% + + +\<configure jsmath fontmath\><<< +|<jsmath plain,fontmath|> +>>> + +\<configure jsmath plain\><<< +|<jsmath plain,fontmath|> +>>> + + +\<jsmath plain,fontmath\><<< +\Configure{overrightarrow} + {\HCode{\string\overrightarrow\l:brace}\:gobble} + {\HCode{\r:brace}} +\Configure{overleftarrow} + {\HCode{\string\overleftarrow\l:brace}\:gobble} + {\HCode{\r:brace}} +>>> + + +\<configure jsmath amsmath\><<< +\Configure{underrightarrow} + {\HCode{\string\mathop\l:brace}\:gobble} + {\HCode{\r:brace\string\limits + \string_\string\longrightarrow\space}} +\Configure{underleftarrow} + {\HCode{\string\mathop\l:brace}\:gobble} + {\HCode{\r:brace\string\limits + \string_\string\longleftarrow\space}} +>>> + + + +\<configure jsmath amsmath\><<< +\Configure{overleftrightarrow} + {\HCode{\string\mathop\l:brace}\:gobble} + {\HCode{\r:brace\string\limits + \string^\string\longleftrightarrow\space}} +\Configure{underleftrightarrow} + {\HCode{\string\mathop\l:brace}\:gobble} + {\HCode{\r:brace\string\limits + \string_\string\longleftrightarrow\space}} +>>> + +\<configure jsmath amsmath\><<< +\def\:tempc#1{ + {\HCode{\string\mathop\l:brace}#1% + \HCode{\r:brace\string\limits + \string^\l:brace\hbox\l:brace....\r:brace\r:brace}}} +\HLet\ddddot\:tempc +\def\:tempc#1{ + {\HCode{\string\mathop\l:brace}#1% + \HCode{\r:brace\string\limits + \string^\l:brace\hbox\l:brace...\r:brace\r:brace}}} +\HLet\dddot\:tempc +>>> + + +\<configure jsmath amsmath\><<< +\def\:tempc#1#2{% + \HCode{\string\mathop\l:brace}#2% + \HCode{\r:brace\string\limits + \string^\l:brace}#1\HCode{\r:brace}} +\HLet\overset\:tempc +\def\:tempc#1#2{% + \HCode{\string\mathop\l:brace}#2% + \HCode{\r:brace\string\limits + \string_\l:brace}#1\HCode{\r:brace}} +\HLet\underset\:tempc +\def\:tempc#1#2#3{% + \HCode{\l:brace\l:brace\r:brace}#1% + \HCode{\l:brace}#3% + \HCode{\r:brace}#2\HCode{\r:brace}} +\HLet\sideset\:tempc +>>> + + + +\<configure jsmath amsmath\><<< +\renewcommand{\xrightarrow}[2][]{% + \HCode{\string\mathop\l:brace \string\longrightarrow \r:brace\string\limits + \string_\l:brace}#1\HCode{\r:brace\string^\l:brace}% + #2\HCode{\r:brace}} +\renewcommand{\xleftarrow}[2][]{% + \HCode{\string\mathop\l:brace \string\longleftarrow \r:brace\string\limits + \string_\l:brace}#1\HCode{\r:brace\string^\l:brace}% + #2\HCode{\r:brace}} +>>> + + +The following definition is needed because \verb=\multispan= is not recognized by jsMath + + +\<configure jsmath amsmath\><<< +\def\hdots@for#1#2{% + \tmp:cnt=#2\relax + \ifnum \tmp:cnt>0 .% + \loop + \advance\tmp:cnt by -1\relax + \ifnum \tmp:cnt>0 \HCode{\string&}.% + \repeat + \fi + } +>>> + +%%%%%%%%%%%%%%%%%% +\section{Symbols} +%%%%%%%%%%%%%%%%%% + + +\<configure jsmath amsmath\><<< +\def\:tempc#1{\HCode{\kern18mu + {\string\rm\space mod}\string\,\string\,}#1} +\HLet\mod=\:tempc +\def\:tempc#1{\HCode{\kern18mu }(#1)} +\HLet\pod=\:tempc +\def\:tempc#1{\HCode{\kern18mu + \string\mathbin{\string\rm\space mod}\string\,\string\,}#1} +\HLet\bmod\:tempc +\def\:tempc#1{\HCode{\kern18mu }(\HCode{{\string\rm\space mod}\kern6mu\space} #1)} +\HLet\pmod=\:tempc +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Boxed} +%%%%%%%%%%%%%%%%%% + +\<configure html-jsmath amsmath\><<< +\Configure{boxed} + {\ifmathltx \HCode{\string\class\l:brace boxed\r:brace\l:brace}% + \else \HCode{<span class="boxed">}\IgnorePar\fi} + {\ifmathltx \HCode{\r:brace}% + \else \HCode{</span>}\fi} +\Css{.boxed{border: 1px solid black; padding-left:2px; + padding-right:2px;}} +>>> + + + + + +\<configure html-jsmath amsmath\><<< +\Configure{boxed} + {\ifmathltx \HCode{\string\class\l:brace boxed\r:brace\l:brace}% + \else \HCode{<span class="boxed">}\IgnorePar\fi} + {\ifmathltx \HCode{\r:brace}% + \else \HCode{</span>}\fi} +\Css{.boxed{border: 1px solid black; padding-left:2px; + padding-right:2px;}} +>>> + + + +%%%%%%%%%%%%%%%%%% +\endinput +%%%%%%%%%%%%%%%%%% + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsml-xtpipes.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsml-xtpipes.tex new file mode 100644 index 00000000000..fa1cd703fdc --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsml-xtpipes.tex @@ -0,0 +1,3902 @@ +% $Id: tex4ht-jsml-xtpipes.tex 740 2020-06-13 22:35:32Z karl $ +% htlatex tex4ht-jsml-xtpipes "xhtml,next,3" "" "-d./" +% +% Copyright 2009-2020 TeX Users Group +% Copyright 2002-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\documentclass{article} + \Configure{ProTex}{log,<<<>>>,title,list,`,[[]]} +\begin{document} + + +\input{common} +\input{tex4ht-cpright} +\input{tex4ht-dir} + +%%%%%%%%%%%%%%%%%% +\part{Script for xtpipes} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%% + +\AtEndDocument{\OutputCodE\<jsml.4xt\>} + +\Needs{"xmllint --valid --noout jsml.4xt"} + + +\<jsml.4xt\><<< +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE xtpipes SYSTEM "xtpipes.dtd" > +<!-- jsml.4xt (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2002. Eitan M. Gurari +`<TeX4ht copyright`> --> +<xtpipes signature="jsml.4xt (`version)"> + <sax content-handler="xtpipes.util.ScriptsManager, tex4ht.GroupMn, tex4ht.JsmlFilter" + lexical-handler="xtpipes.util.ScriptsManagerLH" > + `<numbers in math`> + `<special sub and super scripts`> + `<span frac elements`> + `<short cut modifiers`> + `<over and under scripts`> + `<bold math`> + `<capital math letters`> + `<remove multline eqnum cell`> + `<inline math`> + `<display math`> + `<replace characters`> + `<remove empty split entries`> + `<boundaries on theorems`> + `<br into BREAK`> + `<short notation for empty elements`> + </sax> +</xtpipes> +>>> + + + `<non short tag br elements`> + + `<inline math`> + `<display math`> + `<measure tables`> + + + + +\<inline math\><<< +<script element="span::inline-math" > + `<compress numeric subscripts`> + `<set levels for hyper complex fracs`> + `<set levels for sub and sup scripts`> + `<set levels for roots`> + <set name="inline-math" > + `<open xslt script`> + `<shared display and inline math 1`> + `<eliminate inline math narrative`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="inline-math" /> + `<eliminate extra math pauses`> + <set name="inline-math-2" > + `<open xslt script`> + `<shared display and inline math 2`> + `<eliminate inline math narrative 2`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="inline-math-2" /> +</script> +>>> + + +\<display math\><<< +<script element="div::display-math" > + `<compress numeric subscripts`> + `<set levels for hyper complex fracs`> + `<set levels for sub and sup scripts`> + `<set levels for roots`> + <set name="display-math" > + `<open xslt script`> + `<shared display and inline math 1`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="display-math" /> + `<eliminate extra math pauses`> + <set name="display-math-2" > + `<open xslt script`> + `<shared display and inline math 2`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="display-math-2" /> + `<set empty elements for the w3 browser`> +</script> +>>> + + + + +\<shared display and inline math 1\><<< +`<remove super mn-group`> +`<sayas punctuation`> +`<sayas digits`> +`<sayas math letters`> +`<get content template`> +`<eliminate baseline script marks`> +`<clean begin and mid script marks`> +`<mixed fractions`> +`<'minus' into 'negative'`> +`<compress limit script`> +`<remove scrip indicators from primes`> +`<remove scrip indicators from degree`> +>>> + + +\<shared display and inline math 2\><<< +`<get content template`> +`<replace nested baseline script marks`> +`<remove marks on empty scripts`> +`<eliminate begin script marks`> +>>> + + + + +\AtEndDocument{\OutputCodE\<HtJsml.java\>} + +\ifdojava + \Needs{" + javac HtJsml.java -d \XTPIPES +"} +\fi + +\<HtJsml.java\><<< +package tex4ht; +/* HtJsml.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2002. Eitan M. Gurari +`<TeX4ht copyright`> */ +import org.w3c.dom.*; +public class HtJsml { + `<HtJsml utility members`> + `<static void mnGroup(dom)`> + `<static void fracLevel(dom)`> + `<static void scriptLevel(dom)`> + `<static void rootLevel(dom)`> +} +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Numbers in Math} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Group MN / MO-Punctuation} +%%%%%%%%%%%%% + + +\AtEndDocument{% + \OutputCodE\<GroupMn.java\> + } +\ifdojava + \Needs{" + javac GroupMn.java -d \XTPIPES +"} +\fi + +\<GroupMn.java\><<< +package tex4ht; +/* GroupMn.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2002. Eitan M. Gurari +`<TeX4ht copyright`> */ +import org.xml.sax.helpers.*; +import org.xml.sax.*; +import java.io.PrintWriter; + +public class GroupMn extends XMLFilterImpl { + PrintWriter out = null; + boolean inMn = false; + String ns; + int level = -1; + public GroupMn( PrintWriter out, PrintWriter log, boolean trace){ + this.out = out; + } + public void startElement(String ns, String sName, + String qName, Attributes attr) { + level++; + try{ + if( inMn ){ + if( level == 0 ){ `<consider end of num`> } + } else { `<consider start of num`> } + super.startElement(ns, sName, qName, attr); + } catch( Exception e ){ + System.out.println( "--- GroupMn Error 1 --- " + e); + } + } + public void endElement(String ns, String sName, String qName){ + try{ + if( level < 0) { + `<endElement: consider end of num`> + } + super.endElement(ns, sName, qName); + } catch( Exception e ){ + System.out.println( "--- GroupMn Error 2 --- " + e); + } + level--; + } + public void characters(char[] ch, int start, int length){ + try{ + if ( inMn && (level < 0) ) { + String s = new String(ch, start, length); + if (!s.trim().equals("")) { + inMn = false; + super.endElement(ns, "mn-group", "mn-group"); + } } + super.characters(ch, start, length); + } catch( Exception e ){ + System.out.println( "--- GroupMn Error 3 --- " + e); +} } } +>>> + +\<consider start of num\><<< +if( qName.equals( "mn" ) ){ + inMn = true; level = 0; + Attributes att = new AttributesImpl(); + super.startElement(ns, "mn-group", "mn-group", att); + this.ns = ns; +} else if( qName.equals( "mo" ) ){ + String cls = attr.getValue( "class" ); + if( (cls != null) && cls.equals("MathClass-punc") ){ + inMn = true; level = 0; + Attributes att = new AttributesImpl(); + super.startElement(ns, "mn-group", "mn-group", att); + this.ns = ns; +} } +>>> + +\<consider end of num\><<< +if( !qName.equals( "mn" ) ){ + if( qName.equals( "mo" ) ){ + String cls = attr.getValue( "class" ); + if( (cls == null) || !cls.equals("MathClass-punc") ){ + inMn = false; + super.endElement(ns, "mn-group", "mn-group"); + } + } else { + inMn = false; + super.endElement(ns, "mn-group", "mn-group"); +} } +>>> + +\<endElement: consider end of num\><<< +if( inMn ){ + inMn = false; + super.endElement(ns, "mn-group", "mn-group"); +} +>>> + +%%%%%%%%%%%%% +\subsection{Outline of Post Original Partition} +%%%%%%%%%%%%% + + +\<numbers in math\><<< +<script element="mn-group" > + `<missed partitions to mn groups`> + <set name="merge" > + `<open xslt script`> + `<merge digits`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="merge" /> +</script> +>>> + + + +\<missed partitions to mn groups\><<< +<dom name="." xml="." method="mnGroup" class="tex4ht.HtJsml" /> +`<remove xml declaration`> +>>> + + +\<static void mnGroup(dom)\><<< +private static Document dom; +public static void mnGroup(Node d) { + dom = (Document) d; + setMnGroup(dom.getFirstChild()); +} +private static void setMnGroup(Node node) { + if( node.getNodeName().equals( "mn-group" ) ){ + boolean bool = false; + `<get mn characters`> + if( bool ){ + `<mark remove commas, if comma after period`> + `<mark remove commas, if not spaced correctly`> + `<cond remove commas`> + `<remove punc, on consecutive periods`> + `<remove punc at end`> + } + `<reset mn-group`> + } else if (node.hasChildNodes()) { + NodeList children = node.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + setMnGroup(child); +} } } } +>>> + +%%%%%%%%%%%%% +\subsection{Mark Partition of MN Group} +%%%%%%%%%%%%% + +Consecutive digits and punctation characters are grouped together, and +then ungrouped at characters that are marked by `x'. + + +\<get mn characters\><<< +NodeList children = node.getChildNodes(); +int n = children.getLength(); +char [] digit = new char[n]; +for (int i = 0; i < n; i++) { + Node child = children.item(i).getFirstChild(); + if( child == null ){ + digit[i] = 'x'; + } else if( child.getNodeType() != Node.TEXT_NODE ){ + digit[i] = 'x'; + } else { + String s = child.getNodeValue(); + if( s.length() != 1 ){ + digit[i] = 'x'; + } else { + char ch = s.charAt(0); + if( (ch >= '0') && (ch <= '9') ){ + digit[i] = '0'; bool = true; + } else if( (ch == '.') || (ch == ',') ){ digit[i] = ch; } + else { digit[i] = 'x';} +} } } +>>> + +\<mark remove commas, if comma after period\><<< +bool = false; +for (int i = 0; i < n; i++) { + if( digit[i] == '.' ){ + for (; i < n; i++) { + if( digit[i] == ',' ){ + bool = true; break; + } } + break; +} } +>>> + +\<mark remove commas, if not spaced correctly\><<< +if( !bool ){ + for (int i = 0; i < n; i++) { + if( digit[i] == ',' ){ + if( ( ((i+3) >= n) + || (digit[i+1] != '0') + || (digit[i+2] != '0') + || (digit[i+3] != '0') + ) + || + ( + ((i+4) < n) && (digit[i+4] == '0') + ) + || + ( + (i>3) && (digit[i-4] == '0') + ) + ){ bool = true; break; + } else { i += 3; } +} } } +>>> + +\<cond remove commas\><<< +if( bool ){ + for (int i = 0; i < n; i++) { + if( digit[i] == ',' ){ digit[i] = 'x'; } +} } +>>> + + +\<remove punc, on consecutive periods\><<< +bool = false; +for (int i = 0; i < n; i++) { + if( (digit[i] == 'x') + || (digit[i] == ',') ){ bool = false; } + else if( digit[i] == '.' ){ + if( bool ){ + for (int j = 0; j < n; j++) { + if( (digit[j] == '.') || (digit[j] == ',') ){ + digit[j] = 'x'; + } } + break; + } + bool = true; +} } +>>> + +\<remove punc at end\><<< +if( digit[n-1] == '.' ){ digit[n-1] = 'x'; } +>>> + +%%%%%%%%%%%%% +\subsection{Realize the Sub Partition} +%%%%%%%%%%%%% + + +\<reset mn-group\><<< +Node parent = node.getParentNode(); +Element g = dom.createElement( "mn-group-s" ); +Element cur = dom.createElement( "mn-group" ); +for(int i=0; i<n; i++ ){ + Node child = node.getFirstChild(); + node.removeChild( child ); + if( digit[i] == 'x' ){ + if( cur.hasChildNodes() ){ g.appendChild( cur ); } + g.appendChild( child ); + cur = dom.createElement( "mn-group" ); + } else { + cur.appendChild( child ); +} } +if( cur.hasChildNodes() ){ g.appendChild( cur ); } +parent.replaceChild( g, node ); +>>> + + +%%%%%%%%%%%%% +\subsection{Reset MNs} +%%%%%%%%%%%%% + + + + +\<merge digits\><<< +<xsl:template match="mn-group" > + <xsl:choose> + <xsl:when test=" not(child::mn) "> + <xsl:apply-templates select="*|text()" /> + </xsl:when> + <xsl:otherwise> + <mn> + <xsl:value-of select="." /> + </mn> + </xsl:otherwise> + </xsl:choose> +</xsl:template> +>>> + + + + + + + + +\<remove super mn-group\><<< +<xsl:template match="mn-group-s" > + <xsl:apply-templates select="*|@*|text()|comment()" /> +</xsl:template> +>>> + + + +%%%%%%%%%%%%% +\subsection{Pronounced Letters} +%%%%%%%%%%%%% + + + +\<sayas math letters \><<< +<xsl:template match="mi[ .='a' ]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <SAYAS SUB="aih">a</SAYAS> + </xsl:copy> +</xsl:template> +>>> + + +%%%%%%%%%%%%% +\subsection{Pronounced Punctuation in math} +%%%%%%%%%%%%% + +TTSs might ignore punctuation marks. We want these +symbols in math. + +\<sayas punctuation\><<< +<xsl:template match="mo[ + (@class='MathClass-punc') + and ( (.='.') or (.=',') or (.='!') + or (.=';') or (.=':') or (.='?') ) +]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <BREAK SIZE="small"/> + <xsl:choose> + <xsl:when test=" .='.' " > + <SAYAS SUB="dot">.</SAYAS> + </xsl:when> + <xsl:when test=" .=',' " > + <SAYAS SUB="comma">,</SAYAS> + </xsl:when> + <xsl:when test=" .=';' " > + <SAYAS SUB="semicolon">;</SAYAS> + </xsl:when> + <xsl:when test=" .=':' " > + <SAYAS SUB="colon">:</SAYAS> + </xsl:when> + <xsl:when test=" .='!' " > + <SAYAS SUB="exclamation mark">!</SAYAS> + </xsl:when> + <xsl:when test=" .='?' " > + <SAYAS SUB="question mark">?</SAYAS> + </xsl:when> + </xsl:choose> + <BREAK SIZE="small"/> + </xsl:copy> +</xsl:template> +>>> + + +\<sayas digits\><<< +<xsl:template match="mn[ + `<mn modified above`> + or + `<mn modified under`> +]" > + <xsl:copy> + <SAYAS CLASS="digits"> + <xsl:value-of select="." /> + </SAYAS> + </xsl:copy> +</xsl:template> +>>> + + +\<mn modified above\><<< +ancestor::mover[ + not( descendant::*[ + (count( `<math content element`> ) > 1) + ]) + and + ( + preceding-sibling::*[1][self::dot or self::mn-group-s] + or + following-sibling::*[1][self::dot or self::mn-group-s] + ) +] +>>> + + + +\<mn modified under\><<< +ancestor::munder[ + not( descendant::*[ + (count( `<math content element`> ) > 1) + ]) + and + ( + preceding-sibling::*[1][self::dot or self::mn-group-s] + or + following-sibling::*[1][self::dot or self::mn-group-s] + ) +] +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Process Characters} +%%%%%%%%%%%%%%%%%% + + + + + +%%%%%%%%%%%%% +\subsection{'minus' into 'negative'} +%%%%%%%%%%%%% + + + +\<'minus' into 'negative'\><<< +<xsl:template match="mo[ + (@class = 'MathClass-bin') + and + ( normalize-space(.) = + normalize-space(descendant::span[@class = 'ch 2212']) + ) + and + ( preceding-sibling::*[1][ + (@title='speech-extra') + or (@class='MathClass-bin') + or (@class='MathClass-rel') + or (@class='MathClass-punc') + or (@class='MathClass-op') + or self::mn-group-s [ child::* [ + (position() = last()) + and + (@class='MathClass-punc') + ] ] ] + and + ( + following-sibling::*[1][ self::mn-group-s + or self::mi ] + or + (count(following-sibling::*[ + not(@title = 'speech-extra') + ]) = 1) + ) + or + not(preceding-sibling::*) and following-sibling::* + ) +]" > + <xsl:copy> + <xsl:attribute name="class"> + <xsl:text>mo-unary</xsl:text> + </xsl:attribute> + <xsl:apply-templates select="*|text()|comment()" + mode="minus-neg" /> + </xsl:copy> +</xsl:template> +>>> + + +\<'minus' into 'negative'\><<< +<xsl:template match="*|@*|text()|comment()" mode="minus-neg" > + <xsl:copy> + <xsl:apply-templates select="*|@*|text()|comment()" + mode="minus-neg" /> + </xsl:copy> +</xsl:template> +>>> + +\begin{verbatim} +<span class="begin-script"> subscript </span> +<mo class="MathClass-bin"> + <span class="char"> + <span class="ch 2212">minus</span> + </span> +</mo> +<mn>2</mn> +\end{verbatim} + + + + +\<'minus' into 'negative'\><<< +<xsl:template match="text()" mode="minus-neg" > + <xsl:choose> + <xsl:when test=" . = 'minus' " > + <xsl:text>negative</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="." /> + </xsl:otherwise> + </xsl:choose> +</xsl:template> +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{Capital Letters in Math} +%%%%%%%%%%%%%%%%%% + +\<capital math letters\><<< +<script element="mi" > + <set name="math-cap" > + `<open xslt script`> + `<span.mi cap letters`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="math-cap" /> +</script> +>>> + + +\<span.mi cap letters\><<< +<xsl:template match="mi" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:if test=" string-length(.) = 1 " > + <xsl:if test=" + (translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '') = '' ) + " > + <span class="capital-description" + title="speech-extra" > + <xsl:text> capital </xsl:text> + </span> + </xsl:if> + </xsl:if> + <xsl:apply-templates select="*|text()|comment()" /> + </xsl:copy> +</xsl:template> +>>> + + + +%%%%%%%%%%%%% +\subsection{Right Apostrophes} +%%%%%%%%%%%%% + + + +\<replace characters\><<< +<script element="PARA" > + <set name="apostro" > + `<open xslt script`> + `<right apostrophe in prose`> + `<delimiters in marks of enumerated lists`> + `<remove empty paragraphs`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="apostro" /> +</script> +>>> + + +\<right apostrophe in prose\><<< +<xsl:template match="span[ + (@class = 'char-del') + and child::span [ @class = 'ch 2019' ] +]" > + <xsl:text>'</xsl:text> +</xsl:template> +>>> + + +%%%%%%%%%%%%% +\subsection{Delimiters on List Marks} +%%%%%%%%%%%%% + + + +\<delimiters in marks of enumerated lists\><<< +<xsl:template match="PROS[ parent::SENT[@class='ol-mark'] ]" > + <xsl:copy> + <xsl:apply-templates + select="*[not(@class='char-del')]|@*|text()|comment()" /> + </xsl:copy> +</xsl:template> +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Clean Up} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Extra Math Pauses} +%%%%%%%%%%%%% + + +Deletes pauses that are not separated by text from their immediate +predecessors. + +An earlier XSLT-based approach was very slow, and died +on nodes with large numbers of children. + + +\<eliminate extra math pauses\><<< +<sax name="." xml="." content-handler="tex4ht.JsmlMathBreak" /> +>>> + + +\AtEndDocument{% + \OutputCodE\<JsmlMathBreak.java\> + } + +\ifdojava + \Needs{" + javac -classpath \LIB xtpipes.jar + JsmlMathBreak.java + -d \XTPIPES . +"} +\fi + +\<JsmlMathBreak.java\><<< +package tex4ht; +/* JsmlMathBreak.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2002. Eitan M. Gurari +`<TeX4ht copyright`> */ + +import xtpipes.XtpipesUni; +import org.xml.sax.*; +import org.xml.sax.helpers.DefaultHandler; +import java.io.*; +import java.lang.reflect.*; +import java.util.HashMap; + +public class JsmlMathBreak extends DefaultHandler { + PrintWriter out = null; + boolean delete = false; + public JsmlMathBreak(PrintWriter out, + HashMap<String,Object> scripts, + Method method, PrintWriter log, boolean trace) { + this.out = out; + } + public void characters(char[] ch, int start, int length) { + String s = XtpipesUni.toUni(ch, start, length, "<>&"); + out.print( s ); + if( !s.trim().equals("") ){ + delete = false; + } } + public void startElement(String ns, String sName, + String qName, + Attributes atts) { + if( !( delete && qName.equals("BREAK") ) ){ + String s = "<" + qName + "\n"; + for (int i = 0; i < atts.getLength(); i++) { + String name = atts.getQName(i); + if (name != "xmlns") { + s += (" " + name + "=\"" + + XtpipesUni.toUni(atts.getValue(i), "<>&\"") + + "\""); + } } + if( qName.equals( "BREAK" ) ){ + s += "/"; + delete = true; + } + s += ">"; + out.print(s); + } } + public void endElement(String ns, String sName, String qName) { + if( !qName.equals( "BREAK" ) ){ + String s = "</" + qName + ">"; + out.print(s); +} } } +>>> + + + +\begin{verbatim} + </mrow> + <span class="end-root" title="speech-extra"> + <BREAK SIZE="medium"/> + <level prefix="end" depth="1">end end root</level> + <BREAK SIZE="medium"/> + </span> +</mroot> +<span class="end-math" title="speech-extra"> + <BREAK SIZE="small"/> + <PROS PITCH="-5">end math</PROS> + <BREAK SIZE="medium"/> +\end{verbatim} + + +%%%%%%%%%%%%% +\subsection{Line Breaks} +%%%%%%%%%%%%% + + +\<br into BREAK\><<< +<script element="br" > + <set name="br" > + `<open xslt script`> + `<append br with BREAK`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="br" /> +</script> +>>> + + +\<append br with BREAK\><<< +<xsl:template match="br" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + </xsl:copy> + <BREAK SIZE="small"/> +</xsl:template> +>>> +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{Empty Elements} +%%%%%%%%%%%%%%%%%% + + + +\marginpar{??????} + +Can we avoid empty non-empty representations without of the +following(Example: +\verb+\documentclass{article} \begin{document} \section{Section One} This is Section 1 \end{document} + +) + + +\<short notation for empty elements\><<< +<script element="BREAK" > + <set name="BREAK" > + `<open xslt script`> + `<empty BREAK`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="BREAK" /> +</script> +>>> + + +\<empty BREAK\><<< +<xsl:template match="BREAK" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + </xsl:copy> +</xsl:template> +>>> + + + +%%%%%%%%%%%%% +\subsection{Empty Array Cells} +%%%%%%%%%%%%% + +Empty array celles at end of rows can make it more difficult to +detect deletable baseline indicators. + + + +\<remove multline eqnum cell\><<< +<script element="tr" > + <set name="eqnum" > + `<open xslt script`> + `<remove empty cells from rows`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="eqnum" /> +</script> +>>> + +\<remove multline eqnum cell\><<< +<script element="mtr" > + <set name="eqnum" > + `<open xslt script`> + `<remove empty cells from rows`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="eqnum" /> +</script> +>>> + +\<remove empty cells from rows\><<< +<xsl:template match="div[ + (parent::tr or parent::mtr) + and ( normalize-space(.) = '' ) + and not( normalize-space(following-sibling::*) != '' ) +]" > +</xsl:template> +>>> + + +%%%%%%%%%%%%% +\subsection{Paragraphs (JsmlFilter.java)} +%%%%%%%%%%%%% + +\<remove empty paragraphs\><<< +<xsl:template match=" PARA[ normalize-space(.) = '' ] " > +</xsl:template> +>>> + + +The following adds PARA on `p' paragraphs, ul. + + + + +\AtEndDocument{ % + \OutputCodE\<JsmlFilter.java\> + } +\ifdojava + \Needs{" + javac JsmlFilter.java -d \XTPIPES +"} +\fi + +\<JsmlFilter.java\><<< +package tex4ht; +/* JsmlFilter.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2002. Eitan M. Gurari +`<TeX4ht copyright`> */ +import org.xml.sax.helpers.*; +import org.xml.sax.*; +import java.io.PrintWriter; + +public class JsmlFilter extends XMLFilterImpl { + PrintWriter out = null; + public JsmlFilter( PrintWriter out, PrintWriter log, boolean trace ){ + this.out = out; + } + public void startElement(String ns, String sName, + String qName, Attributes attr) { + try{ + if( `<elements for PARA?`> ){ + Attributes att = new AttributesImpl(); + super.startElement(ns, "PARA", "PARA", att); + } + super.startElement(ns, sName, qName, attr); + } catch( Exception e ){ + System.out.println( "--- JsmlFilter Error 1 --- " + e); + } } + public void endElement(String ns, String sName, String qName){ + try{ + super.endElement(ns, sName, qName); + if( `<elements for PARA?`> ){ + super.endElement(ns, "PARA", "PARA"); + } + } catch( Exception e ){ + System.out.println( "--- JsmlFilter Error 2 --- " + e); +} } } +>>> + + + + +\<elements for PARA?\><<< + qName.equals( "p" ) +|| qName.equals( "h2" ) +|| qName.equals( "h3" ) +|| qName.equals( "h4" ) +|| qName.equals( "ul" ) +|| qName.equals( "ol" ) +|| qName.equals( "li" ) +|| qName.equals( "dd" ) +|| qName.equals( "dl" ) +>>> + + +%%%%%%%%%%%%% +\subsection{Remove Split Arrays} +%%%%%%%%%%%%% + +\<remove empty split entries\><<< +<script element="div::split-side" > + <set name="clean-split" > + `<open xslt script`> + `<get content template`> + `<clean math split`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="clean-split" /> +</script> +>>> + + +\<clean math split\><<< +<xsl:template match=" div[ @class='split-side' ] +" > + <xsl:variable name="content"> + <xsl:apply-templates select="*" mode="content" /> + </xsl:variable> + <xsl:if test=" + string-length( normalize-space( $content )) != 0 + " > + <xsl:copy> + <xsl:apply-templates select=" *|@*|text()|comment() " /> + </xsl:copy> + </xsl:if> +</xsl:template> +>>> + + +%%%%%%%%%%%%% +\section{Eliminate Inline Math Narrative} +%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Core Content of One Element} +%%%%%%%%%%%%% + + +\<eliminate inline math narrative NO\><<< +<xsl:template match="span[ + (@class = 'inline-math') + and + (count( `<math content element`> ) = 1) +]" > + <xsl:copy> + <xsl:choose> + <xsl:when test="child::mfrac or child::msqrt + or child::mover or child::munder + "> + <xsl:attribute name="class"> + <xsl:text>semi-math</xsl:text> + </xsl:attribute> + <BREAK SIZE="small"/> + <xsl:apply-templates + select="`<math content element`>" /> + </xsl:when> + <xsl:otherwise> + `<non-adjacent narrative`> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + + + +\<non-adjacent narrative\><<< +<xsl:variable name="content"> + <xsl:apply-templates + select="`<math content element`>" + mode="content" /> +</xsl:variable> +<xsl:choose> + `<math narrative of length one`> + `<math narrative of just one element`> + `<simple sub or sup`> + <xsl:otherwise> + <xsl:apply-templates + select="*|@*|text()|comment()" /> + </xsl:otherwise> +</xsl:choose> +>>> + + + + + +\<math content element\><<< +child::*[ not(@title = 'speech-extra') + and not( self::BREAK ) + ] +>>> + + + + +\<math narrative of length one\><<< +<xsl:when test=" + string-length( normalize-space( $content )) = 1 +" > + <xsl:attribute name="class"> + <xsl:text>semi-math</xsl:text> + </xsl:attribute> + <xsl:apply-templates + select="`<math content element`>" /> +</xsl:when> +>>> + +\<math narrative of just one element\><<< +<xsl:when test=" + not(`<math content element`> + / descendant::* [ + count(child::*[ + not(self::BREAK) + ] ) > 1 + ] ) +" > + <xsl:attribute name="class"> + <xsl:text>semi-math</xsl:text> + </xsl:attribute> + <PROS PITCH="-5"> + <BREAK SIZE="small"/> + <xsl:apply-templates + select="`<math content element`>" /> + <BREAK SIZE="small"/> + </PROS> +</xsl:when> +>>> + + +\<simple sub or sup\><<< +<xsl:when test=" child::*[ + (position() = 2) + and + (self::msub or self::msup or self::msubsup) +]" > + <xsl:variable name="content"> + <xsl:apply-templates + select="child::*[2] / child::*[ + (@class = 'mrow-base') + or (@class = 'limits-mrow-base') ]" + mode="content" /> + </xsl:variable> + <xsl:choose> + <xsl:when test=" + string-length( normalize-space( $content )) = 1 + or + (translate($content,'0123456789 ','') = '') + " > + <xsl:attribute name="class"> + <xsl:text>semi-math</xsl:text> + </xsl:attribute> + <PROS PITCH="-5"> + <BREAK SIZE="small"/> + <xsl:apply-templates select="*[2]" /> + <BREAK SIZE="small"/> + </PROS> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()" /> + </xsl:otherwise> + </xsl:choose> +</xsl:when> +>>> + + +\begin{verbatim} +<span class="inline-math"> + <msub> + <mrow class="mrow-base"> + <mi>C</mi> + </mrow> + <mrow class="mrow-sub"> + <mi>i</mi> + </mrow> + </msub> +</span> +\end{verbatim} + + + + +%%%%%%%%%%%%% +\subsection{Unary Op} +%%%%%%%%%%%%% + +The `mo-unary' is established in the first pass over inline-math, +so we need to wait for the second pass with the following. + + +\<eliminate inline math narrative NO 2\><<< +<xsl:template match="span[ + (@class = 'inline-math') + and + (count( `<math content element`> ) = 2) + and + ( child::mo[ + (@class = 'mo-unary') + and + following-sibling::*[1] + / self::mi + ] + or + child::mi[ + following-sibling::*[1] + [ (@class = 'MathClass-open-close') + and + not(child::*[2] + / child::*[ not(self::BREAK) ] + / child::*[ not(self::BREAK) ] ) + ] ] + ) +]" > + <xsl:copy> + <xsl:choose> + `<when func on shallow arg`> + <xsl:otherwise> + `<unary op on short content`> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + +\<when func on shallow arg\><<< +<xsl:when test=" + child::mrow[ @class = 'MathClass-open-close' ] +" > + <xsl:attribute name="class"> + <xsl:text>semi-math</xsl:text> + </xsl:attribute> + <PROS PITCH="-5"> + <BREAK SIZE="small"/> + <xsl:apply-templates + select="`<math content element`>" /> + <BREAK SIZE="small"/> + </PROS> +</xsl:when> +>>> + +\<unary op on short content\><<< +<xsl:attribute name="class"> + <xsl:text>semi-math</xsl:text> +</xsl:attribute> +<PROS PITCH="-5"> +<BREAK SIZE="small"/> + <xsl:apply-templates + select="`<math content element`>" /> +<BREAK SIZE="small"/> +</PROS> +>>> + + + +%%%%%%%%%%%%% +\subsection{Shallow Expression} +%%%%%%%%%%%%% + + +\<eliminate inline math narrative NO 2\><<< +<xsl:template match="span[ + (@class = 'inline-math') + and + not( child::*[ + not(self::mo) + and not(self::mi) + and not(self::mn) + and not(self::mn-group-s) + and not( @title='speech-extra' ) + and not( self::mfrac[ + preceding-sibling::*[1][self::mn ] + ] + ) + and not( self::msub + / child::*[1][ + child::mo[ @class = 'MathClass-op' ] + and + not(child::*[2]) + ] + ) + ] ) +]" > + <xsl:copy> + `<shallow expression`> + </xsl:copy> +</xsl:template> +>>> + +\<shallow expression\><<< +<xsl:attribute name="class"> + <xsl:text>semi-math</xsl:text> +</xsl:attribute> +<PROS PITCH="-5"> +<BREAK SIZE="small"/> + <xsl:apply-templates + select="`<math content element`> | text()" /> +<BREAK SIZE="small"/> +</PROS> +>>> + + + + +%%%%%%%%%%%%% +\subsection{Shallow Delimited Expression} +%%%%%%%%%%%%% + + +\<eliminate inline math narrative NO 2\><<< +<xsl:template match="span[ + (@class = 'inline-math') + and + (count( `<math content element`> ) = 1) + and + child::mrow[ @class='MathClass-open-close' ] + / child::mrow[ + not( child::*[ + not(self::mo) and not(self::mn-group-s) + and not(self::mi) and not(self::BREAK) + and not( @title='speech-extra' ) + ]) + ] +]" > + <xsl:copy> + `<shallow delimited expression`> + </xsl:copy> +</xsl:template> +>>> + +\<shallow delimited expression\><<< +<xsl:attribute name="class"> + <xsl:text>semi-math</xsl:text> +</xsl:attribute> +<PROS PITCH="-5"> +<BREAK SIZE="small"/> + <xsl:apply-templates select="mrow" /> +<BREAK SIZE="small"/> +</PROS> +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Superscripts and Subscripts} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Insert Sub-Levels Info} +%%%%%%%%%%%%% + + + + +\<set levels for sub and sup scripts\><<< +<dom name="." xml="." method="scriptLevel" class="tex4ht.HtJsml" /> +`<remove xml declaration`> +>>> + + + +\<static void scriptLevel(dom)\><<< +public static void scriptLevel(Node dom) { + setScriptLevel(dom.getFirstChild(), ""); +} +private static void setScriptLevel(Node node, String prefix) { + String clName = null; + if (node.hasChildNodes()) { + if (node.hasAttributes()) { + Node cl = node.getAttributes().getNamedItem("class"); + if (cl != null) { + clName = cl.getNodeValue(); + if( clName.equals("mrow-sub") + || + clName.equals("mrow-super") + ){ + `<append script prefix`> + } } } + String ndName = node.getNodeName(); + if( + ndName.equals("msqrt") + || + ndName.equals("mroot") + ){ prefix = ""; } + `<script invoke children`> +} } +>>> + +\<script invoke children\><<< +NodeList children = node.getChildNodes(); +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + setScriptLevel(child, prefix); +} } +>>> + +\<append script prefix\><<< +if( !prefix.equals("") ){ + `<use current script prefix`> +} +if( clName.equals( "mrow-sub" ) ){ + prefix += " sub "; +} else if( clName.equals( "mrow-super" ) ){ + prefix += " super "; +} +>>> + + +\<use current script prefix\><<< +Node child = node.getFirstChild(); +if( (child.getNodeType() == Node.ELEMENT_NODE) + && + child.hasAttributes() +){ + Node cls = child.getAttributes().getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if ( clsName.equals("begin-script") + || + clsName.equals("mid-script") + ) { + child = child.getFirstChild(); + String s = child.getNodeValue(); + ((org.w3c.dom.Text) child).setData( prefix + s ); +} } } +>>> + + + +%%%%%%%%%%%%% +\subsection{Eliminate End Script Marks} +%%%%%%%%%%%%% + + +The following takes care of end-scripts that semantically can be +merged into other end markers. + +\<eliminate baseline script marks\><<< +<xsl:template match="span[ + (@class = 'end-script') + and + ancestor::* [ following-sibling::* [ + not( @class = 'content-less' ) + ] + ][1] + / following-sibling::* [ + not( @class = 'content-less' ) + ][1] + / self::* + [ + (@class = 'end-math') + or + (@class = 'end-script') + or + (@class = 'end-root') + or + (@class = 'end-stack') + or + (@class = 'mid-stack') + or + (@class = 'end-array') + or + self::td or self::mtd or self::tr or self::mtr + or + (@title = 'implicit-baseline') + ] +]" > + <BREAK SIZE="small"/> +</xsl:template> +>>> + + + + + + +The following deals with endscripts before left sides of +tensors. + + + +\<eliminate baseline script marks\><<< +<xsl:template match="span[ + (@class = 'end-script') + and + parent::mrow / parent::msub + and + ancestor::* [ following-sibling::* ][1] + / following-sibling::* [ normalize-space(.) != '' ][1] + [ + (self::msub or self::msubsup) + and + (normalize-space(child::mrow[ + @class = 'mrow-base' ]) = '') + ] +]" > + <BREAK SIZE="small"/> +</xsl:template> +>>> + + + +\<eliminate baseline script marks\><<< +<xsl:template match="span[ + (@class = 'end-script') + and + parent::mrow /parent::*[ self::msup or self::msubsup] + and + ancestor::* [ following-sibling::* ][1] + / following-sibling::* [ normalize-space(.) != '' ][1] + [ + self::msup + and + (normalize-space(child::mrow[ + @class = 'mrow-base' ]) = '') + ] +]" > + <BREAK SIZE="small"/> +</xsl:template> +>>> + + + + + + + + +\begin{verbatim} + <span class="end-script" title="speech-extra"> + <PROS PITCH="-5"> + <BREAK SIZE="medium"/> + <span class="scripts-extra"> baseline </span> + <BREAK SIZE="small"/> + </PROS> + </span> + </mrow> +</msup> +<span class="tiny-space"/> +<msup> + <mrow class="mrow-base"/> + <mrow class="mrow-super"> + +\end{verbatim} + +%%%%%%%%%%%%% +\subsection{Clean Script Marks} +%%%%%%%%%%%%% + + +\<clean begin and mid script marks\><<< +<xsl:template match="span[ + (@class = 'begin-script') + or (@class = 'mid-script') +]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select="*|text()|comment()" + mode="clean-script" /> + </xsl:copy> +</xsl:template> +<xsl:template match="*" mode="clean-script" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select="*|text()|comment()" + mode="clean-script" /> + </xsl:copy> +</xsl:template> +<xsl:template match="text()" mode="clean-script" > +</xsl:template> +<xsl:template match="span[@class = 'scripts-extra']" + mode="clean-script" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:value-of select=" + ancestor::span[ + (@class = 'begin-script') + or (@class = 'mid-script') ] [1] + " /> + </xsl:copy> +</xsl:template> +>>> + +The following is for script annotation on empty msu::base. + +\<remove marks on empty scripts\><<< +<xsl:template match="span[ + ((@class = 'begin-script') or (@class = 'mid-script')) + and + following-sibling::* + / following-sibling::span[ @class = 'end-script' ] + and + following-sibling::*[1] + / descendant-or-self::*[ not(self::PROS) ][1] + / child::*[1][ + (@class = 'mrow-base') + and + (normalize-space(.)='') + ] +]" > +</xsl:template> +>>> + +\begin{verbatim} +<span class="begin-script" title="speech-extra"> + ... +</span> +<PROS PITCH="+10"> + <msub> + <mrow class="mrow-base"/> + <mrow class="mrow-sub"> + ... + </mrow> + </msub> + <mi>n</mi> +</PROS> +<span class="end-script" title="speech-extra"> + ... +\end{verbatim} + + + +%%%%%%%%%%%%% +\subsection{Replace Nested Baseline Script Marks} +%%%%%%%%%%%%% + + +\<replace nested baseline script marks\><<< +<xsl:template match="span[ + (@class = 'end-script') + and + ancestor::*[ preceding-sibling::* [ + ((@class = 'begin-script') or (@class = 'mid-script')) ]] +]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select=" + ancestor::*[ preceding-sibling::* [ + ((@class = 'begin-script') or + (@class = 'mid-script')) ]][1] + / preceding-sibling::* [ + ((@class = 'begin-script') or + (@class = 'mid-script')) ][1] + " mode="script-copy" /> + </xsl:copy> +</xsl:template> +>>> + + + +\<replace nested baseline script marks\><<< +<xsl:template match="*|@*|text()|comment()" + mode="script-copy" > + <xsl:copy> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:copy> +</xsl:template> +<xsl:template match="span[ + (@class = 'begin-script') or + (@class = 'mid-script') ]" mode="script-copy" > + <xsl:apply-templates select="*|text()|comment()" /> +</xsl:template> +>>> + + +%%%%%%%%%%%%% +\subsection{Eliminate Begin Script Marks} +%%%%%%%%%%%%% + + + +\<eliminate begin script marks\><<< +<xsl:template match="span[ + (@class = 'begin-script') + and + following-sibling::* [1] / child::*[ + (position() = 1) + and + (@class = 'mrow-base') + and + ( normalize-space(.) = '' ) + ] +]" > +</xsl:template> +>>> + + + +%%%%%%%%%%%%% +\subsection{Undo Empty Scripts} +%%%%%%%%%%%%% + + + + +\<special sub and super scripts\><<< +<script element="msup" > + <set name="m-sub-sup" > + `<open xslt script`> + `<undo if empty su`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="m-sub-sup" /> + `<superscript 2 and 3 into verbose`> +</script> +<script element="msub" > + `<sub script`> +</script> +<script element="msubsup" > + `<subsup prime`> + `<sub sup script`> + `<sub superscript 2 and 3 into verbose`> +</script> +>>> + +\<sub sup script\><<< +<set name="m-sub-sup" > + `<open xslt script`> + `<undo if empty su`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="m-sub-sup" /> +>>> + + + +\<sub script\><<< +<set name="m-sub-sup" > + `<open xslt script`> + `<undo if empty su`> + `<msub of log`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="m-sub-sup" /> +>>> + +\<undo if empty su\><<< +<xsl:template match="*[ + (self::msup or self::msub or self::msubsup) + and + not( + child::mrow[ @class = 'mrow-sub' ] + / child::*[ not(@title = 'speech-extra') + and + (normalize-space(.) != '') + ] + ) + and + not( + child::mrow[ @class = 'mrow-super' ] + / child::*[ not(@title = 'speech-extra') + and + (normalize-space(.) != '') + ] + ) +]" > + <xsl:apply-templates select="child::mrow[ + @class = 'mrow-base' ]/*" /> +</xsl:template> +>>> + + + +\begin{verbatim} +<msup> + <mrow class="mrow-base"> + ......... + </mrow> + <wrow class="mrow-super"> + <span class="begin-script"> superscript </span> + <span class="end-script"> baseline </span> + </mrow> +</msup> +\end{verbatim} + + + + +%%%%%%%%%%%%% +\section{Special Subscripts and Superscripts} +%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Squared} +%%%%%%%%%%%%% + + + +\<superscript 2 and 3 into verbose\><<< +<set name="m-sup-2-3" > + `<open xslt script`> + `<superscript into squared and cube`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="m-sup-2-3" /> +>>> + +\<superscript into squared and cube\><<< +<xsl:template match="msup[ + (normalize-space( + child::mrow[ (@class = 'mrow-super') ] + / child::*[ not (@class = 'begin-script') + and + not (@class = 'end-script') + ] + ) = '2') + and `<su verbose not on op`> + and (normalize-space(mrow[@class = 'mrow-base']) != '' ) +]" > + <xsl:copy> + <xsl:apply-templates select="*|@*|text()|comment()" + mode="squared" /> + </xsl:copy> +</xsl:template> +>>> + + +\<su verbose not on op\><<< +not( + child::mrow[ @class = 'mrow-base' ] + / child::span[ not( @title = 'speech-extra' ) ] + [ position() = last() ] + / self::* [ @class = 'mo-op' ] +) +>>> + + + + +\<superscript into squared and cube\><<< +<xsl:template match="*|@*|text()|comment()" + mode="squared" > + <xsl:copy> + <xsl:choose> + <xsl:when test=" @class = 'mrow-super' "> + <xsl:apply-templates select="@*" /> + <mo class="mo-op"> + <xsl:text> squared </xsl:text> + </mo> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()" /> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + + + + + + +\begin{verbatim} +<msup> + <mrow class="mrow-base"> + <mo class="mo-op">cos</mo> + </mrow> + <mrow class="mrow-super"> + <span class="begin-script"> superscript </span> + <span class="mn">2</span> + <span class="end-script"> baseline </span> + </mrow> +</msup> +\end{verbatim} + + + + +\<superscript into squared and cube\><<< +<xsl:template match="msup[ + (normalize-space( + child::mrow[ (@class = 'mrow-super') ] + / child::*[ not (@class = 'begin-script') + and + not (@class = 'end-script') + ] + ) = '3') + and `<su verbose not on op`> + and (normalize-space(mrow[@class = 'mrow-base']) != '' ) +]" > + <xsl:copy> + <xsl:apply-templates select="*|@*|text()|comment()" + mode="cube" /> + </xsl:copy> +</xsl:template> +>>> + + + +\<superscript into squared and cube\><<< +<xsl:template match="*|@*|text()|comment()" + mode="cube" > + <xsl:copy> + <xsl:choose> + <xsl:when test=" @class = 'mrow-super' "> + <xsl:apply-templates select="@*" /> + <mo class="mo-op"> + <xsl:text> cube </xsl:text> + </mo> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()" /> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + + +\<sub superscript 2 and 3 into verbose\><<< +<set name="m-subsup-2-3" > + `<open xslt script`> + `<subsup into sub squared and cube`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="m-subsup-2-3" /> +>>> + + + + + +\<subsup into sub squared and cube\><<< +<xsl:template match="msubsup[ + (normalize-space( + child::mrow[ (@class = 'mrow-super') ] + / child::span[ (@class != 'mid-script') + and + (@class != 'end-script') + ] + ) = '2') + and `<su verbose not on op`> +]" > + <xsl:copy> + <xsl:attribute name="class" > + <xsl:text>msub</xsl:text> + </xsl:attribute> + <xsl:apply-templates select="*|text()|comment()" + mode="sub-squared" /> + </xsl:copy> +</xsl:template> +>>> + + + +\<subsup into sub squared and cube\><<< +<xsl:template match="*|@*|text()|comment()" + mode="sub-squared" > + <xsl:copy> + <xsl:choose> + <xsl:when test=" @class = 'mrow-sub' "> + <xsl:apply-templates select="*[ + not( @class = 'end-script' ) + ] + |@*|text()|comment()" /> + <xsl:apply-templates select=" + following-sibling::*[1] / *[ + @class = 'end-script' + ] " /> + </xsl:when> + <xsl:when test=" @class = 'mrow-super' "> + <xsl:attribute name="class" > + <xsl:text>squared-super</xsl:text> + </xsl:attribute> + <mo class="mo-op"> + <xsl:text> squared </xsl:text> + </mo> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + + +\<subsup into sub squared and cube\><<< +<xsl:template match="msubsup[ + (normalize-space( + child::mrow[ (@class = 'mrow-super') ] + / child::span[ (@class != 'mid-script') + and + (@class != 'end-script') + ] + ) = '3') + and `<su verbose not on op`> +]" > + <xsl:copy> + <xsl:attribute name="class" > + <xsl:text>msub</xsl:text> + </xsl:attribute> + <xsl:apply-templates select="*|text()|comment()" + mode="sub-cube" /> + </xsl:copy> +</xsl:template> +>>> + + + +\<subsup into sub squared and cube\><<< +<xsl:template match="*|@*|text()|comment()" + mode="sub-cube" > + <xsl:copy> + <xsl:choose> + <xsl:when test=" @class = 'mrow-sub' "> + <xsl:apply-templates select="*[ + not( @class = 'end-script' ) + ] + |@*|text()|comment()" /> + <xsl:apply-templates select=" + following-sibling::*[1] / *[ + @class = 'end-script' + ] " /> + </xsl:when> + <xsl:when test=" @class = 'mrow-super' "> + <xsl:attribute name="class" > + <xsl:text>cube-super</xsl:text> + </xsl:attribute> + <mo class="mo-op"> + <xsl:text> cube </xsl:text> + </mo> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + + + +%%%%%%%%%%%%% +\subsection{Numeric Subscripts (Rule 77)} +%%%%%%%%%%%%% + +\<compress numeric subscripts\><<< + <set name="num-sub" > + `<open xslt script`> + `<num sub`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="num-sub" /> +>>> + + + +\<num sub\><<< +<xsl:template match="msub[ + ( + `<num sub on non-primed base`> + or + `<num sub on primed base`> + ) + and + child::mrow[ @class = 'mrow-sub' ] + / child::*[ not(@title = 'speech-extra') ][1] + / self::*[ + normalize-space(.) + = normalize-space( descendant::mn ) ] +]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <BREAK SIZE="small"/> + <xsl:apply-templates select="*[1]" /> + <mrow class="mrow-sub"> + <xsl:apply-templates + select="*[2] / *[ + not(@title = 'speech-extra') + ]" /> + <BREAK SIZE="small"/> + </mrow> + </xsl:copy> +</xsl:template> +>>> + +\<num sub on non-primed base\><<< +(count( child::mrow[ @class = 'mrow-base' ] + / child::* ) = 1 ) + and child::mrow[ @class = 'mrow-base' ] / descendant::mi + and not( ancestor::*[ + self::msub or self::msup or self::msubsup + ] ) +>>> + +\<num sub on primed base\><<< +( + count( child::mrow[ @class = 'mrow-base' ] + / child::* [ + not(self::BREAK) + ] + ) = 2 ) + and child::mrow[ @class = 'mrow-base' ] [ + child::*[1][ self::mi ] + and + child::*[ + (position() > 1) + and + (normalize-space(.) = + normalize-space( + descendant-or-self::span[ + (@class = 'ch 2032') or (@class = 'ch 2033') + or (@class = 'ch 2034') + ] + )) + ] + ] + and not( ancestor::*[ + self::msub or self::msup or self::msubsup + ] ) +>>> + +\begin{verbatim} +<msub> + <mrow class="mrow-base"> + <mi>x</mi> + </mrow> + <mrow class="mrow-sub"> + <span class="begin-script" title="speech-extra"> subscript </span> + <mn>1</mn> + <span class="end-script" title="speech-extra"> baseline </span> + </mrow> +</msub> +\end{verbatim} + + + +\<num sub\><<< +<xsl:template match="msubsup[ + ( + `<num sub on non-primed base`> + ) + and + child::mrow[ @class = 'mrow-sub' ] + / child::*[ not(@title = 'speech-extra') ][1] + / self::*[ + normalize-space(.) + = normalize-space( descendant::mn ) ] +]" > + <msup> + <BREAK SIZE="small"/> + <xsl:apply-templates select="*[1]" /> + <mrow class="mrow-sub"> + <xsl:apply-templates + select="*[2] / *[ + not(@title = 'speech-extra') + ]" /> + <BREAK SIZE="small"/> + </mrow> + <xsl:apply-templates select="*[3]" /> + </msup> +</xsl:template> +>>> + +%%%%%%%%%%%%% +\subsection{Primes} +%%%%%%%%%%%%% + +\<remove scrip indicators from primes\><<< +<xsl:template match="span[ + (@class = 'begin-script') + and + following-sibling::*[ not(@title = 'speech-extra') ] [1] + / descendant-or-self::*[ not( self::PROS ) ][1] + / + child::span / child::span[ + (@class = 'ch 2032') or (@class = 'ch 2033') + or (@class = 'ch 2034') + ] +]" > + <BREAK SIZE="small"/> +</xsl:template> +>>> + + +\<remove scrip indicators from primes\><<< +<xsl:template match="span[ + (@class = 'end-script') + and + preceding-sibling::*[ not(@title = 'speech-extra') ] [1] + / descendant-or-self::*[ not( self::PROS ) ][1] + / + child::span / child::span[ + (@class = 'ch 2032') or (@class = 'ch 2033') + or (@class = 'ch 2034') + ] +]" > + <BREAK SIZE="small"/> +</xsl:template> +>>> + + + +\begin{verbatim} +<span class="msup"> + <span class="mrow-base"> + <span class="mi">x</span> + </span> + <span class="mrow-super"> + <span class="begin-script"> superscript </span> + <span class="mo-op"> + <span class="char"> + <span class="ch 2033">double prime</span> + </span> + </span> + <span class="end-script"> baseline </span> + </span> +</span> +\end{verbatim} + +\<subsup prime\><<< +<set name="subsup-prime" > + `<open xslt script`> + `<compress subsup prime`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="subsup-prime" /> +>>> + + +\<compress subsup prime\><<< +<xsl:template match="msubsup[ + (count( + child::mrow [ @class='mrow-super' ] + / child::* [ not(@title = 'speech-extra') ] + ) = 1) + and + not( + child::mrow [ @class='mrow-super' ] + / child::* [ not(@title = 'speech-extra') ] + / descendant::*[ preceding-sibling::* + or following-sibling::*] + ) + and + child::mrow [ @class='mrow-super' ] + / child::* [ not(@title = 'speech-extra') ] + / descendant-or-self::span[ @class='char' ] + / child::span[ + (@class = 'ch 2032') or (@class = 'ch 2033') + or (@class = 'ch 2034') + ] +]" > + <msub> + <mrow class="mrow-base"> + <xsl:apply-templates select=" + child::mrow[@class = 'mrow-base'] / * + " /> + <BREAK SIZE="small"/> + <xsl:apply-templates select=" + child::mrow[@class = 'mrow-super'] + / child::* [ not(@title = 'speech-extra') ] + " /> + </mrow> + <mrow class="mrow-sub"> + <xsl:apply-templates + select="*[@class = 'mrow-sub'] /* " /> + <xsl:apply-templates select=" + child::mrow[@class = 'mrow-super'] + / child::* [ @class = 'end-script' ] + " /> + </mrow> + </msub> +</xsl:template> +>>> + + + +\begin{verbatim} +<span class="msubsup"> + <span class="mrow-base"> + <span class="mi">x</span> + </span> + <span class="mrow-sub"> + ...... + </span> + <span class="mrow-super"> + <span class="mid-script" title="speech-extra"> superscript </span> + <span class="mi"> + <span class="char" title="ch-verbose"> + <span class="ch 2032" title="ch-verbose">prime</span> + </span> + </span> + </span> +</span> +\end{verbatim} + + + +%%%%%%%%%%%%% +\subsection{Degree} +%%%%%%%%%%%%% + +\<remove scrip indicators from degree\><<< +<xsl:template match="mrow[ + (@class = 'mrow-super') + and + parent::msup + and + (count( `<math content element`> ) = 1) + and + `<math content element`> [1][ + normalize-space(.) + = + normalize-space( + descendant::span[@class = 'ch 2218'] + ) + ] +]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates + select="*[not(@title = 'speech-extra') + and + not(self::BREAK) + ]" + mode="degree" /> + <BREAK SIZE="small"/> + </xsl:copy> +</xsl:template> +>>> + +\<remove scrip indicators from degree\><<< +<xsl:template match="*" mode="degree" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:choose> + <xsl:when test="self::span[ @class='ch 2218' ]" > + <xsl:text>degree</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates + select="*[not(self::BREAK)]|text()" + mode="degree"/> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + + + + + +%%%%%%%%%%%%% +\subsection{Logarithms} +%%%%%%%%%%%%% + +\<msub of log\><<< +<xsl:template match=" + msub [ + normalize-space(child::*[1]) = 'log' + or + normalize-space(child::*[1]) = 'ln' +]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select="child::*[1]" /> + <xsl:apply-templates select="child::*[2]" + mode="log" /> + </xsl:copy> +</xsl:template> +>>> + +\<msub of log\><<< +<xsl:template match="*" mode="log" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:choose> + <xsl:when test="parent::mrow[ @class = 'mrow-sub' ]" > + <BREAK SIZE="small"/> + <xsl:apply-templates select="*" /> + <BREAK SIZE="small"/> + <span title="speech-extra"> + <xsl:text>of</xsl:text> + </span> + <BREAK SIZE="small"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates + select="*[ not(@title = 'speech-extra') ]" + mode="log" /> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + +\begin{verbatim} +<msub> + <mrow class="mrow-base"> + <mo class="MathClass-op">log<BREAK SIZE="small"/></mo> + </mrow> + <mrow class="mrow-sub"> + <span class="begin-script" title="speech-extra"> + ... + </span> + <PROS PITCH="-10"> + <mn>2</mn> + </PROS> + <span class="end-script" title="speech-extra"> + ... + </span> + </mrow> +</msub> +<mi>x</mi> +\end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\section{Fractions (Stage 1)} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%% + + + +\<span frac elements\><<< +<script element="mfrac" > + <set name="mfrac" > + `<open xslt script`> + `<frac templates`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="mfrac" /> +</script> +>>> + +\<frac templates\><<< +<xsl:template match="mfrac" > + <xsl:copy> + <xsl:choose> + `<word fracs`> + `<prepend continued fractions`> + `<tail continued fractions`> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + + +%%%%%%%%%%%%% +\subsection{Word Fractions} +%%%%%%%%%%%%% + +Example: `\verb+1 \ove 2+' int `one half' + +\<word fracs\><<< +<xsl:when test=" + (string-length( + normalize-space(child::mrow[ @class = 'mrow-numerator' ][1]) + ) = 1) + and + (string-length( + normalize-space(child::mrow[ @class = 'mrow-enumerator' ][1]) + ) = 1) +"> + `<a := numerator; b := enumerator`> + <xsl:choose> + <xsl:when test=" + (translate($a,'123456789','') != '') + or + (translate($b,'123456789','') != '') + " > + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:when> + <xsl:when test=" $a < $b "> + <xsl:attribute name="class"> + <xsl:text>word-frac</xsl:text> + </xsl:attribute> + `<word numerator`> + `<word enumerator`> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:otherwise> + </xsl:choose> +</xsl:when> +>>> + + +\<a := numerator; b := enumerator\><<< +<xsl:variable name="a"> + <xsl:value-of select=" + normalize-space(child::mrow[ @class = 'mrow-numerator' ][1]) + " /> +</xsl:variable> +<xsl:variable name="b"> + <xsl:value-of select=" + normalize-space(child::mrow[ @class = 'mrow-enumerator' ][1]) + " /> +</xsl:variable> +>>> + + +\<word numerator\><<< +<xsl:choose> + <xsl:when test=" $a = 1 "><xsl:text> one </xsl:text></xsl:when> + <xsl:when test=" $a = 2 "><xsl:text> two </xsl:text></xsl:when> + <xsl:when test=" $a = 3 "><xsl:text> three </xsl:text></xsl:when> + <xsl:when test=" $a = 4 "><xsl:text> four </xsl:text></xsl:when> + <xsl:when test=" $a = 5 "><xsl:text> five </xsl:text></xsl:when> + <xsl:when test=" $a = 6 "><xsl:text> six </xsl:text></xsl:when> + <xsl:when test=" $a = 7 "><xsl:text> seven </xsl:text></xsl:when> + <xsl:when test=" $a = 8 "><xsl:text> eight </xsl:text></xsl:when> + <xsl:when test=" $a = 9 "><xsl:text> nine </xsl:text></xsl:when> +</xsl:choose> +>>> + + +\<word enumerator\><<< +<xsl:choose> + <xsl:when test=" $b = 2 "><xsl:text> half</xsl:text></xsl:when> + <xsl:when test=" $b = 3 "><xsl:text> third</xsl:text></xsl:when> + <xsl:when test=" $b = 4 "><xsl:text> fourth</xsl:text></xsl:when> + <xsl:when test=" $b = 5 "><xsl:text> fifth</xsl:text></xsl:when> + <xsl:when test=" $b = 6 "><xsl:text> sixth</xsl:text></xsl:when> + <xsl:when test=" $b = 7 "><xsl:text> seventh</xsl:text></xsl:when> + <xsl:when test=" $b = 8 "><xsl:text> eighth</xsl:text></xsl:when> + <xsl:when test=" $b = 9 "><xsl:text> nineth</xsl:text></xsl:when> +</xsl:choose> +<xsl:if test=" $a > 1 "><xsl:text>s</xsl:text></xsl:if> +<xsl:text> </xsl:text> +>>> + + + +%%%%%%%%%%%%% +\subsection{Mixed Fractions} +%%%%%%%%%%%%% + +Examples: `\verb+2{3\over 4}+' +into `2 and three forth', +and `\verb+10{25\over 39}+' into `10 and 25 over 39'. + +\<mixed fractions\><<< +<xsl:template match="mfrac[ + ( + (translate( + concat( + mrow[ (@class = 'mrow-numerator')], + mrow[ (@class = 'mrow-enumerator')] + ) ,'0123456789','') = '') + and + not(descendant::*/descendant::* + /descendant::mn-group-s) + or + (@class = 'word-frac') + ) + and + preceding-sibling::*[1] + / self::mn-group-s[ child::*[ + (position() = last()) + and + self::mn + ] ] + ]" > + <xsl:text> and </xsl:text> + <xsl:copy> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:copy> +</xsl:template> +>>> + + + + +%%%%%%%%%%%%% +\subsection{Continued Fractions Conditions (Rule 69)} +%%%%%%%%%%%%% + + + +\begin{verbatim} + 1 +1 + --------------------------------------- + 1 + 2 + --------------------------------------- + 1 + 2 + --------------------------------------- + 2 + ... +\end{verbatim} + + +The fractions are processed recusrively from inside out. The `tail' +is the one to discover the inner most part of a continued fraction +(i.e., the bottom rows). Higher levels add to the nucleous built +already under them. + +In Stage 1 the members of the continued fractions are marked as +such. In the second stage they being are procesed. + + +The minimum conditions here are three un-interrupted levels of +fractions. + +\begin{verbatim} +<mfrac> + <mrow class="mrow-enumerator"> + <mn>1</mn> + <mo class="MathClass-bin">...</mo> + <mfrac> + <span class="begin-end" ...>begin fraction</span> + <mrow class="mrow-numerator"> ... </mrow> + <span class="begin-end" ...>over</span> + <mrow class="mrow-enumerator">...</mrow> + <span class="begin-end" ...>end fraction</span> + </mfrac> +\end{verbatim} + +\<a,b := top 2 pre op values\><<< +<xsl:variable name="a"> + <xsl:apply-templates select=" + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + preceding-sibling::*[2] + " mode="enum-op" /> +</xsl:variable> +<xsl:variable name="b"> + <xsl:apply-templates select=" + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + preceding-sibling::*[2] + " mode="enum-op" /> +</xsl:variable> +<xsl:variable name="c"> + <xsl:value-of select=" + normalize-space( + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::mrow[ @class = 'mrow-enumerator' ] ) + " /> +</xsl:variable> +>>> + +\<frac templates\><<< +<xsl:template match="*" mode="enum-op"> + <xsl:if test="preceding-sibling::*" > + <xsl:apply-templates select=" preceding-sibling::*[1] " /> + </xsl:if> + <xsl:value-of select="." /> +</xsl:template> +>>> + + + + + +%%%%%%%%%%%%% +\subsection{Nucleous of Continued Fractions} +%%%%%%%%%%%%% + +We are looking for the three most internal (bottom) fractions that +belong to a continued fraction. + + +\<tail continued fractions\><<< +<xsl:when test=" `%check numeral numerator`% + (translate( + normalize-space( + child::mrow[ @class = 'mrow-numerator' ]), + '0123456789','')= '') + and `<check equality of numerators`> + and `<check ops before two top fracs`> +"> + `<a,b := top 2 pre op values`> + <xsl:choose> + <xsl:when test=" + ( translate($a,'0123456789 ','') = '') + and (normalize-space($a)=normalize-space($b)) + and starts-with( $c, normalize-space( $a )) + and starts-with( + normalize-space( + substring-after( $c, normalize-space( $a )) ) + , + normalize-space( + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + preceding-sibling::*[1] ) + ) + " > + <xsl:attribute name="class"> + <xsl:value-of select=" 'continued-mfrac' " /> + </xsl:attribute> + <xsl:apply-templates select="*|text()|comment()" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:otherwise> + </xsl:choose> +</xsl:when> +>>> + + + + + +\<check equality of numerators\><<< +( normalize-space( + child::mrow[ @class = 'mrow-numerator' ]) + and + normalize-space( + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::mrow[ @class = 'mrow-numerator' ]) +) +and +( normalize-space( + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::mrow[ @class = 'mrow-numerator' ]) + and + normalize-space( + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::mrow[ @class = 'mrow-numerator' ]) +) +>>> + + + +\<check ops before two top fracs\><<< +( child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + preceding-sibling::*[1][@class = 'MathClass-bin'] +) +and +( normalize-space( + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + preceding-sibling::*[1] ) + = + normalize-space( + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::mrow[ @class = 'mrow-enumerator' ] / + child::mfrac / + preceding-sibling::*[1] ) +) +>>> + + + + +%%%%%%%%%%%%% +\subsection{Prepend Existing Continued Fractions} +%%%%%%%%%%%%% + + +\<prepend continued fractions\><<< +<xsl:when test=" + self::mfrac + and + child::mrow[ @class = 'mrow-enumerator' ] + / child::mfrac[ @class = 'continued-mfrac' ] + and + ( normalize-space( + child::mrow[ @class = 'mrow-numerator' ] + ) + = + normalize-space( + child::mrow[ @class = 'mrow-enumerator' ] + / child::mfrac[ @class = 'continued-mfrac' ] + / child::mrow[ @class = 'mrow-numerator' ] + ) + ) + and `<check equality of op with cont frac`> +" > + `<a,b := cont top 2 pre op values`> + <xsl:choose> + <xsl:when test=" + normalize-space($a)=normalize-space($b) + " > + <xsl:attribute name="class"> + <xsl:value-of select=" 'continued-mfrac' " /> + </xsl:attribute> + <xsl:apply-templates select="*|text()|comment()" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:otherwise> + </xsl:choose> +</xsl:when> +>>> + + + +\<check equality of op with cont frac\><<< +( + normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::mfrac / + preceding-sibling::*[1] ) + = + normalize-space( + child::span[ @class = 'mrow-enumerator' ] / + child::mfrac / + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'continued-mfrac' ] / + preceding-sibling::*[1] ) +) +>>> + + +\<a,b := cont top 2 pre op values\><<< +<xsl:variable name="a"> + <xsl:apply-templates select=" + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mcontinued-mfrac' ] / + preceding-sibling::*[2] + " mode="enum-op" /> +</xsl:variable> +<xsl:variable name="b"> + <xsl:apply-templates select=" + child::span[ @class = 'mrow-enumerator' ] / + child::span[ @class = 'mcontinued-mfrac' ] / + child::span[ @class = 'mrow-enumerator' ] / + child::span[ + self::mfrac or (@class = 'mcontinued-mfrac') + ] / + preceding-sibling::*[2] + " mode="enum-op" /> +</xsl:variable> +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Fractions (Stage 2)} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%% + + +\<set levels for hyper complex fracs\><<< +<dom name="." xml="." method="fracLevel" class="tex4ht.HtJsml" /> +`<remove xml declaration`> +>>> + + + +\<static void fracLevel(dom)\><<< +public static void fracLevel(Node d) { + dom = (Document) d; + setFracLevel(dom.getFirstChild(), 0); +} +private static int setFracLevel(Node node, int cont) { + int level = 0; + if (node.hasChildNodes()) { + String ndName = node.getNodeName(); + int prevCont = cont; + String clValue = null; + if (ndName.equals("mfrac")) { + `<clValue := class of mfrac`> + `<cont := distance from mfrac(continued-frac)`> + } + `<level += inherited from children`> + `<return 0 if barier`> + if (ndName.equals("mfrac")) { + `<return 0 if mfrac barier`> + if( cont > 0 ){ + if ( prevCont == 0 ){ + `<set start continued fracs mark`> + } + `<remove end of non-tail continued frac`> + level = 0; + } else if ( prevCont > 0 ){ + `<set end continued fracs mark`> + level = 0; + } else + if( level > 0 ){ + `<set extra levels for frac`> + } + level++; + } } + return level; +} +>>> + + + +%%%%%%%%%%%%%%%%%% +\subsection{Level Indicators for Nesting (Hyper Complex Fractions)} +%%%%%%%%%%%%%%%%%% + +\begin{verbatim} + ${a\over b}\over c$ + +begin begin fraction + begin fraction a + over b + end fraction +over over c +end end fraction +\end{verbatim} + +\<set extra levels for frac\><<< +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() + .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if (clsName.equals("begin-end")) { + insertLevelPrefix(child, level); +} } } } +>>> + +\<HtJsml utility members\><<< +private static void insertLevelPrefix(Node node, int level){ + if( level == 0 ){ return; } + if (node.getNodeType() == Node.ELEMENT_NODE) { + if( node.getNodeName().equals( "level" ) ){ + `<insert level prefixes`> + } else { + NodeList children = node.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + insertLevelPrefix(child, level); +} } } } +>>> + + + + +\<insert level prefixes\><<< +Node attr = node.getAttributes().getNamedItem("prefix"); +if( attr != null ){ + String prefix = attr.getNodeValue(); + String s = ""; + for(int j=0; j<level; j++){ + s += prefix + " "; + } + ((org.w3c.dom.Element) node).setAttribute( "depth", ""+level); + Node child = node.getFirstChild(); + if( child != null ){ + node.insertBefore( dom.createTextNode(s), child ); +} } +>>> + + + +\<level += inherited from children\><<< +NodeList children = node.getChildNodes(); +int max = 0; +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + int d = setFracLevel(child, + `<continued level counter`>); + if (d > max) { max = d; } +} } +level += max; +>>> + + +%%%%%%%%%%%%% +\subsection{Level Terminators: Scripts, Word Fracs} +%%%%%%%%%%%%% + + +\<return 0 if barier\><<< +if( ndName.equals("msub") + || ndName.equals("msup") + || ndName.equals("msubsup") +) { + return 0; +} +>>> + + +\<return 0 if mfrac barier\><<< +if( (clValue != null) && clValue.equals("word-frac") +) { + return 0; +} +>>> + + + + + + + + + + +%%%%%%%%%%%%% +\subsection{Bookeeping for Continued Fractions} +%%%%%%%%%%%%% + +\<continued level counter\><<< +cont +>>> + + +In the first phase, the mfrac elements in a group carry +attributes as in + +\begin{verbatim} + <mfrac class="continued-mfrac"> +\end{verbatim} + + +with the exception of the bottom (internal) most leveles. +The `cont' parameter is for determining whether the parent and the +grandparent are frac elements marked as continued. + + + +\<clValue := class of mfrac\><<< +if (node.hasAttributes()) { + Node cl = node.getAttributes().getNamedItem("class"); + if (cl != null) { clValue = cl.getNodeValue(); } +} +>>> + +\<cont := distance from mfrac(continued-frac)\><<< +if( (clValue != null) + && clValue.equals("continued-mfrac") ) { + cont = 2; +} else { cont--; } +>>> + + + +%%%%%%%%%%%%% +\subsection{Modifications for Continued Fractions} +%%%%%%%%%%%%% + +\<remove end of non-tail continued frac\><<< +Node child = node.getLastChild(); +if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if ( clsName.equals("begin-end")) { + node.removeChild( child ); +} } } +>>> + +\<set end continued fracs mark\><<< +Node child = node.getLastChild(); +if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if ( clsName.equals("begin-end")) { + setContinuedNote(child); +} } } +>>> + +\<set start continued fracs mark\><<< +Node child = node.getFirstChild(); +if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if ( clsName.equals("begin-end")) { + setContinuedNote(child); +} } } +>>> + + +\<HtJsml utility members\><<< +private static void setContinuedNote(Node node){ + if (node.getNodeType() == Node.ELEMENT_NODE) { + if( node.getNodeName().equals( "level" ) ){ + `<fix end continued note`> + } else { + NodeList children = node.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + setContinuedNote(child); +} } } } +>>> + +\<fix end continued note\><<< +Node attr = node.getAttributes().getNamedItem("continued"); +if (attr != null) { + node = node.getFirstChild(); + if( node != null ){ + ((org.w3c.dom.Text) node).setData( attr.getNodeValue() ); +} } +>>> + + + + +%%%%%%%%%%%%% +\section{Set Levels on Roots} +%%%%%%%%%%%%% + +\<set levels for roots\><<< +<dom name="." xml="." method="rootLevel" class="tex4ht.HtJsml" /> +`<remove xml declaration`> +>>> + +\<static void rootLevel(dom)\><<< +public static void rootLevel(Node d) { + dom = (Document) d; + setRootLevel(d.getFirstChild()); +} +private static int setRootLevel( Node node ){ + int level = 0; +// String clName = null; + if (node.hasChildNodes()) { + `<count root levels inherited from children`> + String ndName = node.getNodeName(); + `<block for roots`> + if( ndName.equals("msqrt") || ndName.equals("mroot") ){ + `<set extra levels for roots`> + level++; + } } + return level; +} +>>> + + +\<count root levels inherited from children\><<< +NodeList children = node.getChildNodes(); +int max = 0; +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + int d = setRootLevel(child); + if( d > max ){ max = d; } +} } +level += max; +>>> + + +\<block for roots\><<< +if( ndName.equals("msub") || ndName.equals("msup") || + ndName.equals("msubsup") +) { + return 0; +} +>>> + + + + +\<set extra levels for roots\><<< +for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + if (child.getNodeType() == Node.ELEMENT_NODE) { + Node cls = child.getAttributes() + .getNamedItem("class"); + if (cls != null) { + String clsName = cls.getNodeValue(); + if( clsName.equals("begin-root") + || clsName.equals("mid-root") + || clsName.equals("end-root") + ){ + insertLevelPrefix(child, level); +} } } } +>>> + + + + +%%%%%%%%%%%%% +\section{Modifiers} +%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%% +\subsection{Over and Under Limit Scripts} +%%%%%%%%%%%%%%%%%% + + +\<over and under scripts\><<< +<script element="msub::limits-msub-msup" > + <set name="smash" > + `<open xslt script`> + `<smash over and under scripts`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="smash" /> +</script> +>>> + +\<over and under scripts\><<< +<script element="msup::limits-msub-msup" > + <set name="smash" > + `<open xslt script`> + `<smash over and under scripts`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="smash" /> +</script> +>>> + +\<over and under scripts\><<< +<script element="msubsup::limits-msub-msup" > + <set name="smash" > + `<open xslt script`> + `<smash over and under scripts`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="smash" /> +</script> +>>> + + + + + + + +\<smash over and under scripts\><<< +<xsl:template match="*[ + (@class = 'limits-msub-msup') + and + child::*[ (position() = 1) + and (@class = 'limits-mrow-base') + and child::*[ (position() = 1) + and (@class = 'limits-msub-msup') + ] ] +]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select=" + *[1] + / *[1] + / *[ not(@class='limits-mrow-super') ] " /> + <xsl:apply-templates select=" *[ + preceding-sibling::* + and + not(@class='limits-mrow-super') ]" /> + <xsl:apply-templates select=" + *[1] + / *[1] + / *[@class='limits-mrow-super' ] " /> + <xsl:apply-templates select=" *[ + preceding-sibling::* + and + (@class='limits-mrow-super') ]" /> + </xsl:copy> +</xsl:template> +>>> + + +\<compress limit script\><<< +<xsl:template match="span[ @class = 'end-limits-script' ]" > + <xsl:if test=" parent::*[ not(following-sibling::*) ] "> + <xsl:copy> + <xsl:apply-templates select=" @* " /> + <xsl:choose> + <xsl:when test=" + parent::*[ preceding-sibling::mrow[ + @class != 'limits-mrow-base' + ] ] + " > + <BREAK SIZE="small"/> + <xsl:text> end scripts </xsl:text> + <BREAK SIZE="small"/> + </xsl:when> + <xsl:otherwise> + <BREAK SIZE="small"/> + <xsl:text> end script </xsl:text> + <BREAK SIZE="small"/> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> + </xsl:if> +</xsl:template> +>>> + + +\<compress limit script\><<< +<xsl:template match="span[ @class = 'begin-limits-script' ]" > + <xsl:copy> + <xsl:apply-templates select=" @* " /> + <xsl:choose> + <xsl:when test=" + parent::*[ @class = 'limits-mrow-super' ] + " > + <xsl:apply-templates + select=" parent::* + / preceding-sibling::*[1] " + mode = "extra-over" /> + </xsl:when> + <xsl:when test=" + parent::*[ @class = 'limits-mrow-sub' ] + " > + <xsl:apply-templates + select=" parent::* + / preceding-sibling::*[1] " + mode = "extra-under" /> + </xsl:when> + </xsl:choose> + <xsl:apply-templates select="*|text()|comment()" /> + </xsl:copy> +</xsl:template> +>>> + + + +\<compress limit script\><<< +<xsl:template match="*" mode="extra-over" > + <xsl:if test = " self::mrow[ @class = 'limits-mrow-super' ] " > + <xsl:text> over </xsl:text> + <xsl:apply-templates select=" preceding-sibling::*[1] " + mode = "extra-over" /> + </xsl:if> +</xsl:template> +>>> + + +\<compress limit script\><<< +<xsl:template match="*" mode="extra-under" > + <xsl:if test = " self::mrow[ @class = 'limits-mrow-sub' ] " > + <xsl:text> under </xsl:text> + <xsl:apply-templates select=" preceding-sibling::*[1] " + mode = "extra-under" /> + </xsl:if> +</xsl:template> +>>> + + + + +%%%%%%%%%%%%% +\subsection{Short Cuts for Math Underline} +%%%%%%%%%%%%% + + + +\<short cut modifiers\><<< +<script element="munder::munder-underline" > + <set name="munder" > + `<open xslt script`> + `<get content template`> + `<under modifier templates`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="munder" /> +</script> +>>> + +\<under modifier templates\><<< +<xsl:template match="munder[ + (@class = 'munder-underline') + and + child::mrow[ + (@class = 'mo-0332') + and + descendant::mi + ] +]" > + <xsl:variable name="content"> + <xsl:apply-templates select="*" mode="content" /> + </xsl:variable> + <xsl:choose> + <xsl:when test=" + string-length( normalize-space( $content )) = 1 + " > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates + select=" *[ @class != 'begin-end' ] " /> + <span class="begin-end" title="speech-extra" > + <BREAK SIZE="small"/> + <xsl:text> under bar </xsl:text> + <BREAK SIZE="small"/> + </span> + </xsl:copy> + </xsl:when> + <xsl:otherwise> + `<set munder`> + </xsl:otherwise> + </xsl:choose> +</xsl:template> +>>> + + + + +The following code makes to push the munder's under the mover's. + +\<set munder\><<< +<xsl:choose> + <xsl:when test="child::mrow / child::mover"> + <xsl:apply-templates select="child::mrow / child::mover" + mode="under-mover" /> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:apply-templates select=" *|@*|text() " /> + </xsl:copy> + </xsl:otherwise> +</xsl:choose> +>>> + +\<under modifier templates\><<< +<xsl:template match="*" mode="under-mover" > + <xsl:choose> + <xsl:when test="self::mover"> + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select="*" mode="under-mover" /> + </xsl:copy> + </xsl:when> + <xsl:when test="self::mrow[ parent::mover ]"> + <xsl:copy> + <xsl:apply-templates select="@*" /> + `<cont under-mover`> + </xsl:copy> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." /> + </xsl:otherwise> + </xsl:choose> +</xsl:template> +>>> + +\<cont under-mover\><<< +<xsl:choose> + <xsl:when test="child::mover"> + <xsl:apply-templates select="*" mode="under-mover" /> + </xsl:when> + <xsl:otherwise> + <munder class="munder-underline"> + `<munder prefix`> + <mrow class="mo-0032"> + <xsl:apply-templates select="*" /> + </mrow> + `<munder postfix`> + </munder> + </xsl:otherwise> +</xsl:choose> +>>> + + + +\<munder prefix\><<< +<xsl:apply-templates select=" + ancestor::munder[1] / child::*[following-sibling::mrow] +"/> +>>> + + + +\<munder postfix\><<< +<xsl:apply-templates select=" + ancestor::munder[1] / child::*[preceding-sibling::mrow] +"/> +>>> + + + +\begin{verbatim} +<munder class="munder-underline"> + <span class="begin-end" title="speech-extra" > modified under </span> + <mrow class="mo-0332"> + <mi>x</mi> + </mrow> + <span class="begin-end" title="speech-extra" > with bar </span> +</munder> +\end{verbatim} + + + +%%%%%%%%%%%%% +\subsection{Short Cuts for Math Overline} +%%%%%%%%%%%%% + + +\<short cut modifiers\><<< +<script element="mover::mover-overline" > + <set name="mover" > + `<open xslt script`> + `<get content template`> + `<over modifier templates`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="mover" /> +</script> +>>> + + + + +\<over modifier templates\><<< +<xsl:template match="mover[ + (@class = 'mover-overline') + and + child::mrow[ + (@class = 'mo-00AF') + and + descendant::mi + ] +]" > + <xsl:variable name="content"> + <xsl:apply-templates select="*" mode="content" /> + </xsl:variable> + <xsl:choose> + <xsl:when test=" + string-length( normalize-space( $content )) = 1 + " > + `<set mover short cut`> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates + select="*|text()|comment()" /> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> +</xsl:template> +>>> + + +The following code makes to push the mover's under the munder's. + +\<set mover short cut\><<< +<BREAK SIZE="small"/> +<xsl:choose> + <xsl:when test="child::mrow / child::munder"> + <xsl:apply-templates select="child::mrow / child::munder" + mode="under-munder" /> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates + select=" *[ @class != 'begin-end' ] " /> + `<mover bar short cut`> + </xsl:copy> + </xsl:otherwise> +</xsl:choose> +>>> + +\<over modifier templates\><<< +<xsl:template match="*" mode="under-munder" > + <xsl:choose> + <xsl:when test="self::munder"> + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select="*" mode="under-munder" /> + </xsl:copy> + </xsl:when> + <xsl:when test="self::mrow[ parent::munder ]"> + <xsl:copy> + <xsl:apply-templates select="@*" /> + `<cont under-munder`> + </xsl:copy> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." /> + </xsl:otherwise> + </xsl:choose> +</xsl:template> +>>> + +\<cont under-munder\><<< +<xsl:choose> + <xsl:when test="child::munder"> + <xsl:apply-templates select="*" mode="under-munder" /> + </xsl:when> + <xsl:otherwise> + <mover class="mover-overline"> + <mrow class="mo-00AF"> + <xsl:apply-templates select="*" /> + </mrow> + `<mover bar short cut`> + </mover> + </xsl:otherwise> +</xsl:choose> +>>> + + + + + +\<mover bar short cut\><<< +<span class="begin-end" title="speech-extra" > + <BREAK SIZE="small"/> + <xsl:text> over bar </xsl:text> + <BREAK SIZE="small"/> +</span> +>>> + + + + +\begin{verbatim} +<mover class="mover-overline"> + <span class="begin-end" title="speech-extra"> modified above </span> + <mrow class="mo-00AF"> + <span class="mathvariant-bold"> + <span title="speech-extra" class="begin-end"> bold </span> + <mi class="mi"> + <span title="speech-extra" + class="capital-description"> capital </span> + Z + </mi> + </span> + </mrow> + <span class="begin-end" title="speech-extra"> with bar </span> +</mover> +\end{verbatim} + + + + + + + +%%%%%%%%%%%%% +\section{New Theorems} +%%%%%%%%%%%%% + +\<boundaries on theorems\><<< +<script element="div::newtheorem" > + <set name="newtheorem" > + `<open xslt script`> + `<annotate bounderies of theorems`> + `<tags for empty templates`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="newtheorem" /> +</script> +>>> + + +\<annotate bounderies of theorems\><<< +<xsl:template match=" + div[ (@class='newtheorem') + and + descendant::*[ self::p ][1] + / descendant::*[ self::span ][1] + [ @class = 'theorem-head' ] + ] +" > + <xsl:copy> + <xsl:apply-templates select="*|@*|text()|comment()" /> + <div class="begin-end" title="speech-extra"> + <BREAK SIZE="small"/> + <xsl:value-of select=" + concat( ' end ', + substring-before(`<new theorem header`>, ' ') + ) " /> + </div> + </xsl:copy> +</xsl:template> +>>> + + +\<new theorem header\><<< +concat( + normalize-space( + string( + descendant::*[ self::p ][1] + / descendant::*[ self::span ][1] + [ @class = 'theorem-head' ] + ) ) + , ' ' +) +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Shared} +%%%%%%%%%%%%%%%%%% + + + +\<open xslt script\><<< +<![CDATA[ + <xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + > + <xsl:output omit-xml-declaration = "yes" /> +>>> + +\<close xslt script\><<< + <xsl:template match="*|@*|text()|comment()" > + <xsl:copy> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:copy> + </xsl:template> + </xsl:stylesheet> +]]> +>>> + + +\<get content template\><<< +<xsl:template match="*" mode="content" > + <xsl:choose> + <xsl:when test=" @class = 'char' " > + <xsl:if test="not( child::*[ + (@class = 'ch 2032') or (@class = 'ch 2033') + or (@class = 'ch 2034') + ] )"> + <xsl:text>x</xsl:text> + </xsl:if> + </xsl:when> + <xsl:when test=" not( + (@title = 'speech-extra') or (@class = 'accent-char') + ) " > + <xsl:apply-templates select="*|text()" mode="content" /> + </xsl:when> + </xsl:choose> +</xsl:template> +>>> + + + + + +\marginpar{Can dom be prevented from creating an xml declaration in + the output? The xslt part is there just to remove the undesirable + declaration.} + + +\<remove xml declaration\><<< +<set name="rmXmlDecl" > + `<open xslt script`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="rmXmlDecl" /> +>>> + + + + + + + + +\ifdojava +\AtEndDocument{\Needs{% + "pushd \XTPIPES + ; + jar cf tex4ht.jar * + ; + popd + ; + mv \XTPIPES tex4ht.jar \TEXMFTEXivBIN + ; + if [ ! -d \TEXMFTEXivXTPIPES\space]; then exit 1; fi + ; + cp \XTPIPES xtpipes/lib/* + \TEXMFTEXivXTPIPES +"}} +\fi + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\end{document} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%% +\section{Odd Ends} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Font Decorations} +%%%%%%%%%%%%% + +\<bold math\><<< +<script element="span::mathvariant-bold" > + <set name="bold" > + `<open xslt script`> + `<get content template`> + `<math bold templates`> + `<close xslt script`> + </set> + <xslt name="." xml="." xsl="bold" /> +</script> +>>> + + + +\<math bold templates\><<< +<xsl:template match="span[ @class = 'mathvariant-bold' ]" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:variable name="content"> + <xsl:apply-templates select="*" mode="content" /> + </xsl:variable> + <xsl:choose> + <xsl:when test=" + string-length( normalize-space( $content )) = 1 + " > + <span class="begin-end" title="speech-extra" > + <xsl:text> bold </xsl:text> + </span> + <xsl:apply-templates select="*|text()|comment()" /> + </xsl:when> + <xsl:otherwise> + <span class="begin-end" title="speech-extra" > + <xsl:text> begin bold </xsl:text> + </span> + <xsl:apply-templates select="*|text()|comment()" /> + <span class="begin-end" title="speech-extra" > + <xsl:text> end bold </xsl:text> + </span> + </xsl:otherwise> + </xsl:choose> + </xsl:copy> +</xsl:template> +>>> + +%%%%%%%%%%%%%%%%%% +\section{Empty Elements} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%% +\section{Prose} +%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsml.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsml.tex new file mode 100644 index 00000000000..e8dd8306094 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-jsml.tex @@ -0,0 +1,4509 @@ +% $Id: tex4ht-jsml.tex 184 2016-07-04 17:35:09Z karl $ +% Compile 3 times: latex tex4ht-jsml +% or xhlatex tex4ht-jsml "html,3,sections+" +% Copy html.4ht into the work directory before each of the +% first two compilations +% +% Copyright 2009-2016 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{jsml,jsml-math} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\OPTIONS{xhtml,3,sections+} + \def\PREAMBLE{\usepackage{url}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +\def\.{\string\a:mathml:\space} + + +\TocAt{section,subsection,likesubsection} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Needs{"ls -l tex4ht-*.tex > ls-links.log"} +\openin15=ls-links.log +\ifeof15 \else \closein15 +\bgroup + \catcode`\-=13 + \def-#1tex4ht-{\bgroup \catcode`\-=12 + \def-##1.tex{\egroup + [\Link[tex4ht\string-##1.html]{}{}##1\EndLink]} + -} + \input ls\string-links.log +\egroup +\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +%%%%%%%%%%%%%%%%%% +\section{General} +%%%%%%%%%%%%%%%%%% + + + + +\begin{center} +\tt htlatex file "html,jsml" " -cjsmlhtf" "-cjsml" +\end{center} + +%%%%%%%%%%%%%%%%%% +\section{Root} +%%%%%%%%%%%%%%%%%% + + +\<jsml\><<< +% jsml.4ht (|version), generated from |jobname.tex +% Copyright 2009-2016 TeX Users Group +% Copyright |CopyYear.2006. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + +\<jsml-math\><<< +% jsml-math.4ht (|version), generated from |jobname.tex +% Copyright 2009-2016 TeX Users Group +% Copyright |CopyYear.2006. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + +\<par del\><<< +!*?: >>> +\<tag of Tag\><<< + cw:>>> + + +\<show input line no\><<< +<!--l. \the\inputlineno-->% +>>> + + + + +\<try env inline par\><<< +\ShowPar +>>> + +\<try inline par\><<< +\ShowPar \par{\HCondtrue\noindent}% +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%% + + +\<configure jsml article\><<< +|<config book-report-article|> +|<config report-article|> +>>> + +\<configure jsml report\><<< +|<config book-report-article|> +|<config report-article|> +>>> + +\<configure jsml book\><<< +|<config book-report-article|> +>>> + + +\<configure jsml letter\><<< +|<description lists|> +|<quote config|> +|<roman enumeiii|> +>>> + + +\<configure jsml amsbook\><<< +|<ams art,proc,book div|> +|<ams art,proc,book toc|> |%should appear before TocAt|% +>>> + +\<configure jsml amsproc\><<< +|<ams art,proc,book|> +>>> + + + +\<configure jsml amsart\><<< +|<ams art,proc,book|> +>>> + +\<configure jsml-math plain\><<< +|<mathml plain|> +|<plain,latex mathml|> +>>> + + +\<ams art,proc,book\><<< +|<description lists|> +>>> + + +\<configure jsml scrbook\><<< +|<description lists|> +>>> + + +\<configure jsml scrreprt\><<< +|<description lists|> +>>> + + +\<configure jsml slides\><<< +|<description lists|> +|<roman enumeiii|> +>>> + + + + +\<configure jsml-math fontmath\><<< +|<plain,fontmath math|> +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Preamble} +%%%%%%%%%%%%%%%%%% + +\<configure jsml Preamble\><<< +|<pre definitions|> +\Configure{ext}{jsml} +>>> + + +\<configure jsml-math Preamble\><<< +\:CheckOption{math-} \if:Option + \edef\Preamble{\Preamble,mathml-} +\else + \Log:Note{for sources failing to produce + clean math code, try the command line option `math-'}% +\fi +>>> + + + + + + +\<configure jsml Preamble\><<< +\Configure{PROLOG}{JSML,VERSION,DOCTYPE,*XML-STYLESHEET} +\Configure{JSML} + {\HCode{<jsml>\Hnewline}} +>>> + + + + +\<configure jsml tex4ht\><<< +\Configure{HTML} + {\IgnorePar\HCode{<html \a:@HTML + |<xmlns|>\Hnewline>\Hnewline}} + {\ifvmode\IgnorePar\fi\HCode{</html>\Hnewline + </jsml>\Hnewline}} +>>> + +\<xmlns\><<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + +The XML definition and DOCTYPE elements are not accepted by the +browser. + + +\<configure jsml tex4ht\><<< +\Configure{VERSION} + {\HCode{\Hnewline<!--?xml version="1.0" |<xml encoding|> ?-->\Hnewline + <?xtpipes file="jsml.4xt" ?>\Hnewline}} +>>> + +\<xml encoding\><<< +encoding="\expandafter\ifx \csname a:charset\endcsname\relax + \expandafter\:encoding\A:charset + \else \expandafter\:encoding\a:charset\fi" +>>> + + + +\<configure jsml tex4ht\><<< +\Configure{DOCTYPE} + {\HCode{% <!DOCTYPE html \xhtml:DOCTYPE> \Hnewline + <!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> + \Hnewline}} +\def\xhtml:DOCTYPE{PUBLIC + "-//W3C//DTD XHTML 1.0 Transitional//|<dtd lang|>"\Hnewline + \space\space "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"} +>>> + + +% %%%%%%%%%%%%%%%%%% +% \section{Paragraphs} +% %%%%%%%%%%%%%%%%%% +% +% \<configure jsml tex4ht\><<< +% \Configure{HtmlPar} +% {\EndP\HCode{|<show input line no|><PARA><p \csname a:!P\endcsname +% class="no\ifHCond par\else indent\fi">}} +% {\EndP\HCode{|<show input line no|><PARA><p \csname a:!P\endcsname +% class="\ifdim \parindent=\z@ no\fi indent">}} +% {\HCode{</p></PARA>}} +% {\HCode{</p></PARA>}}% +% >>> + + +%%%%%%%%%%%%%%%%%% +\section{Front Matter} +%%%%%%%%%%%%%%%%%% + + +\<config book-report-article\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<title for TITLE|>% + \HCode{<PARA><div class="maketitle">}} + {\ifvmode \IgnorePar\fi \EndP \HCode{<BREAK SIZE="medium" /></div></PARA>}} + {\NoFonts\IgnorePar\HCode{<h2 + class="titleHead"\a:LRdir><EMP + LEVEL="moderate">}\IgnorePar} + {\HCode{</EMP></h2>}\IgnoreIndent\EndNoFonts} +|<config thanks author date and|> +>>> + + +\<thanks author date and\><<< +thanks author date and>>> + + +\<config thanks author date and\><<< +\Configure{|<thanks author date and|>} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<SENT><span class="thanks"><BREAK SIZE="small" />}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</span></SENT>}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<SENT><span class="author" ><BREAK SIZE="small" />}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</span></SENT>}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<BREAK SIZE="small" /><SAYS CLASS="date" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</SAYS><BREAK SIZE="small" />}} + {\HCode{<br />}} + {\HCode{<br />}} +>>> + + + +\<config report-article\><<< +\ConfigureEnv{abstract} + {\IgnorePar\EndP + \HCode{<div clas="abstract"\Hnewline>}\par\ShowPar + \bgroup + \pend:def\abstractname{\HCode{<BREAK SIZE="small"/><EMP + LEVEL="moderate" class="abstractname">}} + \append:def\abstractname{\HCode{</EMP><BREAK SIZE="small"/>}} + } + {\egroup \ifvmode \IgnorePar\fi + \EndP\HCode{<BREAK SIZE="small" /></div>}} + {} {} +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Sectional Divisions} +%%%%%%%%%%%%%%%%%% + + + + + + +\<config book-report-article\><<< +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<latex shared paragraph config|> +|<config captions|> +|<description lists|> +|<quote config|> +|<roman enumeiii|> +>>> + + +\<configure jsml JHEP\><<< +|<latex shared part config|> +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +>>> + +\<configure jsml acm-proc-article-sp\><<< +|<latex shared part config|> +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +>>> + + +\<configure jsml aa\><<< +|<latex shared section config|> +|<latex shared subsection config|> +|<latex shared subsubsection config|> +|<latex shared paragraph config|> +|<config captions|> +>>> + + + +\<latex shared section config\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">\add:description{added-description} + {\a:speak:section}}\@seccntformat{section}% + \HCode{</span><BREAK SIZE="small" />}\fi } +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">\add:description{added-description} + {\a:speak:subsection}}\@seccntformat{subsection}% + \HCode{</span><BREAK SIZE="small" />}\fi } +|<latex speak section|> +>>> + + + + + + +\<latex shared section config\><<< +\Configure{section}{}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<h3 class="sectionHead"\a:LRdir><EMP + LEVEL="moderate">}\TitleMark\space\HtmlParOff} + {\HCode{</EMP></h3>}\HtmlParOn\ShowPar \IgnoreIndent \par} +\Configure{likesection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\IgnorePar\HCode{<h3 + class="likesectionHead"\a:LRdir><EMP + LEVEL="moderate">}\HtmlParOff} + {\HCode{</EMP></h3>}\HtmlParOn \IgnoreIndent \par} +>>> + + +\<latex shared section config\><<< +\Configure{subsection}{}{} + {\ifvmode \IgnorePar\fi + \EndP\bgroup \IgnorePar\HCode{<h4 + class="subsectionHead"\a:LRdir><EMP + LEVEL="moderate">}% + \TitleMark\space \HtmlParOff} + {\HCode{</EMP></h4>}\HtmlParOn + \IgnoreIndent\egroup\par\ShowPar} +\Configure{likesubsection}{}{}{\EndP\bgroup + \ifvmode \IgnorePar\fi + \HCode{<h4 class="likesubsectionHead"\a:LRdir><EMP + LEVEL="moderate">}\HtmlParOff } + {\HCode{</EMP></h4>}\HtmlParOn + \IgnoreIndent\egroup\par\ShowPar} +>>> + + + + + + +\<ams art,proc,book div\><<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">\add:description{added-description} + {\a:speak:section}}\@ifundefined{sectionname}{}{% + \ignorespaces\sectionname\space}% + \@seccntformat{section}% + \HCode{</span><BREAK SIZE="small" />}\fi } +|<latex speak section|> +>>> + + + +\<latex speak section\><<< +\NewConfigure{speak:section}{1} +\Configure{speak:section}{section} +\NewConfigure{speak:subsection}{1} +\Configure{speak:subsection}{subsection} +>>> + + + + +\<configure jsml Preamble\><<< +\def\add:description#1#2{<span class="#1" + title="speech-extra" >\Hnewline #2\Hnewline</span>} +\def\add:vdescription#1#2{<div class="#1" + title="speech-extra" >\Hnewline #2\Hnewline</div>} +>>> + + + + + +%%%%%%%%%%%%% +\section{Margin Notes} +%%%%%%%%%%%%% + + + +\<configure jsml latex\><<< +\Configure{marginpar} + {\ifvmode + \IgnorePar\EndP\HCode{<p class="marginpar"><PROS + PITCH="+30" >}% + |<begin ver marginpar|>% + \def\end:margp{\ifvmode \IgnorePar\fi \EndP + |<end ver marginpar|>\HCode{</PROS></p><BREAK SIZE="small"/>}}% + \par + \else + \SaveEndP + \HCode{<SENT><span class="marginpar"><PROS + PITCH="+30" >}|<begin hor marginpar|>% + \bgroup + \Configure{HtmlPar} + {<BREAK SIZE="small" />} + {\HCode{<BREAK SIZE="small" />}} + {}{}% + \def\end:margp{\egroup + |<end hor marginpar|>\HCode{</PROS><BREAK SIZE="small"/></span></SENT>}\RecallEndP}% + \fi + } + {\end:margp} +>>> + + +\<begin ver marginpar\><<< +\HCode{<div> + \add:description{begin-end}{<PROS PITCH="-15">\a:speak:marginpar + </PROS>}</div><div>}% +>>> + +\<end ver marginpar\><<< +\HCode{</div><div> + \add:description{begin-end}{\b:speak:marginpar}</div>}% +>>> + + +\<begin hor marginpar\><<< +\HCode{\add:description{begin-end}{<PROS pitch="-15">\a:speak:marginpar + </PROS>}}% +>>> + +\<end hor marginpar\><<< +\HCode{\add:description{begin-end}{\b:speak:marginpar}}% +>>> + + + +\<configure jsml latex\><<< +\NewConfigure{speak:marginpar}{2} +\Configure{speak:marginpar} + {<BREAK SIZE="small"/>margin note<BREAK SIZE="small"/>} + {} +>>> + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Footnotes} +%%%%%%%%%%%%%%%%%% + + +\<configure jsml latex\><<< +|<latex footnotes|> +>>> + +\<latex footnotes\><<< +\Configure{footnote-mark} + {\HCode{<SENT><span class="footnote-mark"><PROS + PITCH="+30" >}|<begin footnote note|>} + {|<end footnote note|>\HCode{</PROS><BREAK SIZE="small"/></span></SENT>}} +>>> + + + +\<begin footnote note\><<< +\HCode{\add:description{added-description}{<PROS + pitch="-15">\a:speak:footnote</PROS>}}% +>>> + + +\<end footnote note\><<< +\HCode{}% +>>> + + +\<latex footnotes\><<< +\NewConfigure{speak:footnote}{1} +\Configure{speak:footnote} + { <BREAK SIZE="small"/>footnote<BREAK SIZE="small"/>} +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Lists} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Shared} +%%%%%%%%%%%%% + + + + +\<configure jsml latex\><<< +|<latex lists|> +>>> + +\<latex lists\><<< +\ConfigureList{trivlist}% + {\EndP\HCode{<dl \a:LRdir class="trivlist">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="trivlist">}\bgroup \bf} + {\egroup\HCode{</dt><dd\Hnewline class="trivlist">}} +>>> + +\<latex lists\><<< +\ConfigureList{list}% + {\EndP\HCode{<dl \a:LRdir class="list\expandafter\the + \csname @listdepth\endcsname">}% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt + class="list">}\bgroup \bf} + {\egroup\HCode{</dt><dd\Hnewline class="list">}} +>>> + +%%%%%%%%%%%%% +\subsection{Itemized} +%%%%%%%%%%%%% + + + +\<latex lists\><<< +\ConfigureList{itemize}% + {\EndP\HCode{<ul + \a:LRdir class="ul-itemize\expandafter\the + \csname @itemdepth\endcsname"><PROS PITCH="+15">}% + |<begin itemize note|>% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\ifvmode \IgnorePar\fi + \EndP \HCode{</li>}|<end itemize note|>% + \HCode{</PROS></ul>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\HCode{</li>}}% + \HCode{<li class="li-itemize">}|<itemize item|>\DeleteMark + } + {\HCode{}} +>>> + +\<begin itemize note\><<< +\HCode{<div class="itemize">% + <div class="added-list-description">% + \add:description{added-description}{\a:speak:itemize}</div>}% +>>> + +\<end itemize note\><<< +\HCode{<div class="added-list-description">% + \add:description{added-description}{\b:speak:itemize}</div></div>}% +>>> + +\<itemize item\><<< +\HCode{<span class="added-list-description">% + \add:description{added-description}{\c:speak:itemize}</span>}% +>>> + + + +\<latex lists\><<< +\NewConfigure{speak:itemize}{3} +\Configure{speak:itemize} + {<BREAK SIZE="small"/>begin \ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi + list} + {<BREAK SIZE="small"/>end \ifcase\csname @listdepth\endcsname + \or sub \or sub sub \or sub sub sub \else\fi + list<BREAK SIZE="small"/>} + {<BREAK SIZE="medium"/><PROS PITCH="-5">|%\ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi|% + item</PROS><BREAK SIZE="small"/>} +>>> + + + + + + +%%%%%%%%%%%%% +\subsection{Enumerate} +%%%%%%%%%%%%% + + + + +\<latex lists\><<< +\ConfigureList{enumerate}% + {|<enumerate I|>} + {|<enumerate II|>} + {|<enumerate III|>} + {|<enumerate IV|>} +>>> + + +\<enumerate I\><<< +\EndP \HCode{<ol \a:enumerate:\space + class="ol-enumerate\expandafter\the\csname @enumdepth\endcsname" + \a:LRdir + ><PROS PITCH="+15">}% +|<begin enumerate note|>% +|<save end:itm|>\global\let\end:itm=\empty +>>> + +\<enumerate II\><<< +|<recall end:itm|>% +\EndP \HCode{</li>}% +|<end enumerate note|>% +\HCode{</PROS></ol>}\ShowPar +>>> + + +\<enumerate III\><<< +\end:itm \gdef\end:itm{\EndP\HCode{</li>}}% +\HCode{<li class="li-enumerate" \Hnewline><SENT><span + class="ol-mark"><BREAK + SIZE="medium"/><PROS PITCH="-5" >}|<enumerate item|>%\DeleteMark +>>> + +\<enumerate IV\><<< +\HCode{</PROS><BREAK SIZE="small"/></span></SENT>}%\AnchorLabel +>>> + + + +\<save end:itm\><<< +\PushMacro\end:itm +>>> + + +\<recall end:itm\><<< +\PopMacro\end:itm \global\let\end:itm \end:itm +>>> + + + + +\<begin enumerate note\><<< +\HCode{<div class="enumerate">% + <div class="added-list-description">% + \add:description{added-description}{\a:speak:enumerate}</div>}% +>>> + + +\<end enumerate note\><<< +\HCode{<div class="added-list-description">% + \add:description{added-description}{\b:speak:enumerate}</div></div>}% +>>> + +\<enumerate item\><<< +\HCode{<span class="added-list-description">% + \add:description{added-description}{\c:speak:enumerate}</span>}% +>>> + + + +\<roman enumeiii\><<< +\Configure{enumiii} + {\HCode{<span class="roman-numeral">}% + Roman numeral \HCode{}\the\c@enumiii + \HCode{}\:gobbleII} + {\HCode{</span>}} +\long\def\:tempc{(\theenumii)} +\ifx \labelenumii\:tempc + \def\:tempc{(\HCode{}\theenumii\HCode{})} + \HLet\labelenumii\:tempc +\fi +>>> + + + +\<latex lists\><<< +\NewConfigure{speak:enumerate}{3} +\Configure{speak:enumerate} + {<BREAK SIZE="small"/>begin \ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi + list} + {<BREAK SIZE="small"/>end \ifcase\csname @listdepth\endcsname + \or sub \or sub sub \or sub sub sub \else\fi + list<BREAK SIZE="small"/>} + {|%\ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi|% + item <BREAK SIZE="small"/>} +>>> + +%%%%%%%%%%%%% +\subsection{Description} +%%%%%%%%%%%%% + + +\<description lists\><<< +\ConfigureList{description}% + {\EndP + \HCode{<dl \a:LRdir class="dl-description"><PROS PITCH="+15">}% + |<begin description note|>% + |<save end:itm|>\global\let\end:itm=\empty} + {|<recall end:itm|>\EndP\HCode{</dd>}% + |<end description note|>% + \HCode{</PROS></dl>}% + \ShowPar} + {\end:itm \global\def\end:itm{\EndP\HCode{</dd>}}\HCode{<SENT><span><dt + class="dt-description"><EMP + LEVEL="moderate">}|<description item|>\bgroup \bf} + {\egroup\EndP\HCode{</EMP><BREAK + SIZE="small"/></dt></span></SENT><dd\Hnewline class="dd-description">}} +>>> + + + + + + + +\<begin description note\><<< +\HCode{<div class="description">% + <div class="added-list-description">% + \add:description{added-description}{\a:speak:description}</div>}% +>>> + + +\<end description note\><<< +\HCode{<div class="added-list-description">% + \add:description{added-description}{\b:speak:description}</div></div>}% +>>> + +\<description item\><<< +\HCode{<span class="added-list-description">% + \add:description{added-description}{\c:speak:description}% + </span>}% +>>> + + +\<configure jsml-math tex4ht\><<< +\NewConfigure{speak:description}{3} +\Configure{speak:description} + {<BREAK SIZE="small"/>begin \ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi + list} + {<BREAK SIZE="small"/>end \ifcase\csname @listdepth\endcsname + \or sub \or sub sub \or sub sub sub \else\fi + list<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>|%\ifcase\csname @listdepth\endcsname + \or \or sub \or sub sub \or sub sub sub \else\fi|% + item} +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Verbatim} +%%%%%%%%%%%%%%%%%% + +\<configure jsml latex\><<< +\Configure{verbatim} + {\HAdvance\Verb:N by 1 \ifnum \Verb:N>1 + \:nbsp \HCode{<br />}\fi} + {\a:sp} +\def\env:verb#1{\ifinner\else \vfill\break\fi + \IgnorePar\EndP \HAssign\Verb:N=0 + \HCode{<PARA><div class="#1"\a:LRdir>% + \add:description{added-description}{begin verbatim}% + <PROS \a:verbatim::style >}\EndNoFonts} +\def\endenv:verb{\NoFonts + \EndP \ht:special{t4ht=</PROS>% + \add:description{added-description}{end verbatim}% + </div></PARA>}|<try inline par|>} +\NewConfigure{verbatim::style}{1} +\Configure{verbatim::style}{RATE="150" PITCH="-10" RANGE="0"} +>>> + + +\<configure jsml latex\><<< +\Configure{verb} + {\HCode{<SENT><span class="verb"\a:LRdir><PROS \a:verbatim::style >}} + {\HCode{</PROS></span></SENT>}} +>>> + + + + +% %%%%%%%%%%%%%%%%%% +% \section{Verbatim} +% %%%%%%%%%%%%%%%%%% +% +% +% \<configure jsml latex\><<< +% \Configure{verbatim} {} {\a:sp} +% \def\env:verb#1{\ifinner\else \vfill\break\fi +% \IgnorePar\EndP \HAssign\Verb:N=0 +% \HCode{\add:description{added-description}{begin verbatim}% +% <pre class="#1"\a:LRdir>}\EndNoFonts} +% \def\endenv:verb{\NoFonts +% \EndP \ht:special{t4ht=</pre>}% +% \add:description{added-description}{end verbatim}% +% |<try inline par|>} +% \def\start:fenv#1{\:xhtml{\IgnorePar +% \EndP}\HCode{<div align="#1"\Hnewline\a:LRdir>}} +% \def\end:fenv{\IgnorePar\HCode{</div>}\IgnorePar} +% >>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Figures} +%%%%%%%%%%%%%%%%%% + + +\<config book-report-article\><<< +|<config captions|> +>>> + +\<configure jsml aa\><<< +|<config captions|> +>>> + +\<ams art,proc,book\><<< +|<config captions|> +>>> + + + + + +\<configure jsml latex\><<< +\ConfigureEnv{figure} + {\IgnorePar\EndP + \HCode{<PARA><div class="figure"\Hnewline>|<begin figure note|>}% + \bgroup \Configure{float}{\ShowPar}{}{}% + } + {\egroup + \IgnorePar\EndP\HCode{|<end figure note|></div></PARA>}% + |<try env inline par|>\par} + {}{} +>>> + + +\<config captions\><<< +\Configure{caption} + {\IgnorePar\EndP + \HCode{<PARA><div class="caption"><SENT><span class="mark">% + <BREAK SIZE="small"/><EMP + LEVEL="medium">}|<caption of fig|>} + {: \HCode{</EMP><BREAK SIZE="small"/>}} + {|<end caption|>\HCode{</span></SENT>% + <SENT><span \Hnewline class="content">% + \add:description{added-description}{\a:speak:caption}}} + {\HCode{\add:description{added-description}{\b:speak:caption}% + </span></SENT></div></PARA>}|<caption label comment|>} +>>> + + +\<begin figure note\><<< +<div>\add:description{begin-end}{\a:speak:figure}</div>% +>>> + + +\<end figure note\><<< +<div>\add:description{begin-end}{\b:speak:figure}</div>% +>>> + +\<caption of fig\><<< +\HCode{\add:description{added-description}{\c:speak:caption}}% +>>> + +\<end caption\><<< +>>> + +\<configure jsml latex\><<< +\NewConfigure{speak:caption}{3} +\Configure{speak:caption} + {} + {} + {caption of} +\NewConfigure{speak:figure}{2} +\Configure{speak:figure} + {<BREAK + SIZE="small"/><PROS PITCH="-15" >begin figure</PROS>} + {<BREAK + SIZE="small"/><PROS PITCH="-15" >end figure</PROS>} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Quote} +%%%%%%%%%%%%%%%%%% + + +\<config book-report-article\><<< +|<quote config|> +>>> + + +\<configure html4 letter\><<< +|<quote config|> +>>> + +\<quote config\><<< +\ConfigureEnv{quote} + {}{} + {\IgnorePar\EndP + \HCode{<PARA><div class="quote"><PROS + PITCH="-10" >}} + {\IgnorePar\EndP + \HCode{</PROS></div></PARA>}\ShowPar\ShowIndent} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Fonts} +%%%%%%%%%%%%%%%%%% + +\<configure jsml tex4ht\><<< +\Configure{htf}{0}{+}{}{}{}{}{}{}{} +>>> + + + + +\<configure jsml latex\><<< +\Configure{texttt} + {\Protect\HCode{<SENT><span class="texttt"><PROS + \a:verbatim::style}} + {\Protect\HCode{</PROS></span></SENT>}} +\Configure{emph} + {\Protect\HCode{<SENT><span class="emph"><EMP + LEVEL="moderate">}} + {\Protect\HCode{</EMP></span></SENT>}} +\Configure{textbf} + {\Protect\HCode{<span class="textbf"><EMP + LEVEL="strong">}} + {\Protect\HCode{</EMP></span>}} +>>> + + +\<\><<< +\Configure{textit}{\Protect\HCode{<span class="textit">}} + {\Protect\HCode{</span>}} +\Configure{textrm}{\Protect\HCode{<span class="textrm">}} + {\Protect\HCode{</span>}} +\Configure{textup}{\Protect\HCode{<span class="textup">}} + {\Protect\HCode{</span>}} +\Configure{textsc}{\Protect\HCode{<span class="textsc">}} + {\Protect\HCode{</span>}} +\Configure{textsf}{\Protect\HCode{<span class="textsf">}} + {\Protect\HCode{</span>}} +\Configure{textsl}{\Protect\HCode{<span class="textsl">}} + {\Protect\HCode{</span>}} +>>> + + + +%%%%%%%%%%%%%%%%%% +\part{Math} +%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%% +\section{Math Delimiters} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Full Expressions} +%%%%%%%%%%%%% + + + + +\<configure jsml-math tex4ht\><<< +\Configure{DviMath} + {\a:DviMathSpk \mathmltrue + \ifOption{mml-fonts}{}{|%\mml:htfsym|%\NoFonts}% + \IgnoreRule \HCode{<!--l. + \the\inputlineno-->}\a:math + |<sv dvimath par|>\IgnorePar} + {\EndIgnoreRule + \mathmlfalse \b:DviMathSpk |<recall dvimath par|>} +\NewConfigure{DviMathSpk}{2} +>>> + + + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +\<recall dvimath par\><<< +\sv:ignore +>>> + + + +\<configure jsml-math tex4ht\><<< +\Configure{math}{} +\Configure{$} + {|<conf inline math|>\DviMath} + {\EndDviMath}{} +\Configure{$$} + {|<conf display math|>\DviMath} + {\EndDviMath + \ShowPar\par{\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue} +>>> + + +\<configure jsml-math latex\><<< +\Configure{[]} + {|<conf display math|>\DviMath $$\DisplayMathtrue } + {$$\EndDviMath} +\Configure{()} + {|<conf inline math|>\DviMath $} + {$\EndDviMath} +>>> + + +\<conf inline math\><<< +\Configure{DviMathSpk} + {\HCode{<span class="inline-math">% + \add:description{begin-math}{\a:speak:math}}} + {\HCode{\add:description{end-math}{\b:speak:math}</span>}}% +>>> + + +\<conf display math\><<< +\Configure{@math}{div}\IgnorePar + |<inline end-par comment|>\EndP + \Configure{DviMathSpk} + {\HCode{<div class="display-math">% + \add:description{begin-math}{\a:speak:math}}} + {\HCode{\add:description{end-math}{\b:speak:math}</div>}}% +>>> + + +\<configure jsml-math tex4ht\><<< +\NewConfigure{speak:math}{2} +\Configure{speak:math} + {%<BREAK SIZE="small"/><PROS PITCH="-5" >math</PROS> + <BREAK SIZE="small"/>} + {%<BREAK SIZE="small"/><PROS PITCH="-5" >end math</PROS> + <BREAK SIZE="small"/>} +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\chapter{Over and Under} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%% +\section{Subscrips and Superscripts (sub and super)} +%%%%%%%%%%%%% + +\<configure jsml-math tex4ht\><<< +|<sub, sup, subsup|> +|<limits sub, sup, subsup|> +>>> + +\<sub, sup, subsup\><<< +\Configure{SUB} + {\Send{BACK} + {|<start msub base|>}|<msub sub|>} + {|<close msub|>} +\Configure{SUP} + {\Send{BACK} + {|<start msup base|>}|<msup super|>} + {|<close msup|>} +\Configure{SUBSUP} + {\Send{BACK} + {|<start msubsup base|>}|<msubsup sub|>} + {|<msubsup sup|>} + {|<close msubsup|>} +>>> + + + +\<start msup base\><<< +<msup><mrow class="mrow-base"\Hnewline>% +>>> + +\<msup super\><<< +\HCode{</mrow><mrow class="mrow-super"\Hnewline + >\add:description{begin-script}{\b:speak:subsup}% + <PROS PITCH="+10">}\trap:base +>>> + +\<close msup\><<< +\HCode{</PROS>\add:description{end-script}{\c:speak:subsup}% + </mrow></msup\Hnewline>}% +>>> + + + +\<start msub base\><<< +<msub><mrow class="mrow-base"\Hnewline>% +>>> + + + +\<msub sub\><<< +\HCode{</mrow><mrow class="mrow-sub"\Hnewline + >\add:description{begin-script}{\a:speak:subsup}% + <PROS PITCH="-10">}\trap:base +>>> + +\<close msub\><<< +\HCode{</PROS>\add:description{end-script}{\c:speak:subsup}% + </mrow></msub\Hnewline>}% +>>> + +% +% + +\<start msubsup base\><<< +<msubsup><mrow class="mrow-base"\Hnewline>% +>>> + +\<msubsup sub\><<< +\HCode{</mrow><mrow class="mrow-sub"\Hnewline + >\add:description{begin-script}{\a:speak:subsup}% + <PROS PITCH="-10">}\trap:base +>>> + + +\<msubsup sup\><<< +\HCode{</PROS></mrow><mrow class="mrow-super"\Hnewline + >\add:description{mid-script}{\b:speak:subsup}% + <PROS PITCH="+10">}\trap:base +>>> + + +\<close msubsup\><<< +\HCode{</PROS>\add:description{end-script}{\c:speak:subsup}% + </mrow></msubsup\Hnewline>}% +>>> + +\<configure jsml-math tex4ht\><<< +\NewConfigure{speak:subsup}{3} +\Configure{speak:subsup} + {<PROS PITCH="-5"><BREAK SIZE="small"/> + <span class="scripts-extra"> subscript </span> + <BREAK SIZE="small"/></PROS>} + {<PROS PITCH="+5"><BREAK SIZE="small"/> + <span class="scripts-extra"> superscript </span> + <BREAK SIZE="small"/></PROS>} + {<PROS PITCH="-5"><BREAK SIZE="medium"/> + <span class="scripts-extra"> baseline </span> + <BREAK SIZE="small"/></PROS>} +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Delimiters} +%%%%%%%%%%%%%%%%%% + +\<plain,fontmath math\><<< +\Configure{MathClass}{1}{*}{<mo\Hnewline + class="MathClass-op"><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></mo>}{} +\Configure{MathClass}{2}{*}{<mo\Hnewline + class="MathClass-bin"><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></mo>}{} +\Configure{MathClass}{3}{*}{<mo\Hnewline + class="MathClass-rel"><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></mo>}{} +\:CheckOption{mathml-} \if:Option + \Configure{MathClass}{4}{*}{<mo\Hnewline + class="MathClass-open">} + {</mo><BREAK SIZE="small"/>}{} + \Configure{MathClass}{5}{*}{<BREAK SIZE="small"/>% + <mo\Hnewline + class="MathClass-close">} + {</mo>}{} +\else + \Configure{MathClass}{4}{*}{<mfenced><mo\Hnewline + class="MathClass-open">} + {</mo><mrow><BREAK SIZE="small"/>}{} + \Configure{MathClass}{5}{*}{<BREAK SIZE="small"/>% + </mrow><mo\Hnewline + class="MathClass-close">} + {</mo></mfenced>}{} +\fi +>>> + + +\<plain,fontmath math\><<< +\def\sin{\mathop {\operator@font sine}\nolimits} +\def\cos{\mathop {\operator@font cosine}\nolimits} +\def\lim{\mathop {\operator@font limit}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Fractions and Stacks} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Regular Ones} +%%%%%%%%%%%%% + + + +\<configure jsml-math tex4ht\><<< +\Configure{over} + {\Send{GROUP}{0}{|<start mfrac|>}|<end frac numerator|>} + {|<frac enumerator|>\Send{EndGROUP}{0}{|<end mfrac|>}} +\Configure{atop} + {\Send{GROUP}{0}{|<start atop|>}|<end atop over|>} + {|<start atop under|>\Send{EndGROUP}{0}{|<end atop|>}} +\Configure{above} + {\Send{GROUP}{0}{|<start above|>}% + |<end above over|>\o:over:\:gobbleII} + {|<start above under|>\Send{EndGROUP}{0}{|<end above|>}} +>>> + +\<configure jsml-math latex\><<< +|<plain,latex mathml|> +|<mathml latex|> +>>> + +\<mathml latex\><<< +\Configure{frac} + {\HCode{|<start mfrac|>}} + {|<end frac numerator|>\Configure{over}{}{}} + {|<frac enumerator|>} + {\HCode{|<end mfrac|>}} +>>> + + + +\<configure jsml-math amsmath\><<< +\Configure{above} + {\Send{GROUP}{0}{|<start above|>}% + |<end above over|>\o:@@over:\:gobbleII} + {|<start above under|>\Send{EndGROUP}{0}{|<end above|>}} +>>> + + +\<plain,latex mathml\><<< +\Configure{choose} + {\Send{GROUP}{0}{<mover class="choose">% + \add:description{begin-stack}{\a:speak:choose}% + <mrow class="mrow-upper">}% + \HCode{</mrow>}\o:atop: + \HCode{\add:description{added-description}% + {\c:speak:choose}<mrow class="mrow-under">}% + \Send{EndGROUP}{0}% + {</mrow>\add:description{end-stack}{\b:speak:choose}</mover>}% + } +>>> + + + +\<plain,latex mathml\><<< +\NewConfigure{speak:choose}{3} +\Configure{speak:choose} + {<BREAK SIZE="small"/>binomial coefficient<BREAK SIZE="small"/>} + {<BREAK SIZE="medium"/>} + {<BREAK SIZE="small"/>choose<BREAK SIZE="small"/>} +>>> + + +\<configure jsml-math amsmath\><<< +\Configure{tbinom} + {\Send{GROUP}{0}{<mover class="tbinom">% + \add:description{begin-stack}{\a:speak:choose}% + <mrow class="mrow-upper">}% + \HCode{</mrow>}\o:@@abovewithdelims: ..\z@{}% + \HCode{\add:description{added-description}% + {\c:speak:choose}<mrow class="mrow-under">}% + \Send{EndGROUP}{0}% + {</mrow>\add:description{end-stack}{\b:speak:choose}</mover>}% + } +>>> + +\<configure jsml-math amsmath\><<< +\Configure{dbinom} + {\Send{GROUP}{0}{<mover class="dbinom">% + \add:description{begin-stack}{\a:speak:choose}% + <mrow class="mrow-upper">}% + \HCode{</mrow>}\o:@@abovewithdelims: ..\z@{}% + \HCode{\add:description{added-description}{\c:speak:choose}<mrow class="mrow-under">}% + \Send{EndGROUP}{0}% + {</mrow>\add:description{end-stack}{\b:speak:choose}</mover>}% + } +>>> + + + + +\<configure jsml-math amsmath\><<< +\Configure{binom} + {\Send{GROUP}{0}{<mover class="binom">% + \add:description{begin-stack}{\a:speak:choose}% + <mrow class="mrow-upper">}% + \HCode{</mrow>}\o:@@abovewithdelims: ..\z@{}% + \HCode{\add:description{added-description}{\c:speak:choose}<mrow class="mrow-under">}% + \Send{EndGROUP}{0}% + {</mrow>\add:description{end-stack}{\b:speak:choose}</mover>}% + } +>>> + +%%%%%%%%%%%%% +\subsection{With Delimiters} +%%%%%%%%%%%%% + + + + + +\<configure jsml-math tex4ht\><<< +\def\abovewithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|<start above|>}% + |<end above over|>\o:over: + |<start above under|>\Send{EndGROUP}{0}{|<end above|>} + \else + \Send{GROUP}{0}% + {<mo class="mfenced-open">|<lr del 2|></mo>% + |<start above|>}% + |<end above over|>\o:over: + |<start above under|>\Send{EndGROUP}{0}{|<end above|>% + <mo class="mfenced-close">|<lr del 3|></mo>} + \fi + \tmp:dim + } +>>> + + + +\<configure jsml-math tex4ht\><<< +\def\atopwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|<start atop|>}% + |<end atop over|>\o:atop: + |<start atop under|>\Send{EndGROUP}{0}{|<end atop|>} + \else + \Send{GROUP}{0}% + {<mo class="mfenced-open">|<lr del 2|></mo>% + |<start atop|>}% + |<end atop over|>\o:atop: + |<start atop under|>% + \Send{EndGROUP}{0}{|<end atop|>% + <mo class="mfenced-close">|<lr del 3|></mo>} + \fi + } +>>> + +\<configure jsml-math tex4ht\><<< +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|<start mfrac|>}|<end frac numerator|>\o:over: + |<frac enumerator|>\Send{EndGROUP}{0}{|<end mfrac|>} + \else + \Send{GROUP}{0}% + {<mo class="mfenced-open">|<lr del 2|></mo>% + |<start mfrac|>}% + |<end frac numerator|>\o:over: + |<frac enumerator|>\Send{EndGROUP}{0}{|<end mfrac|>% + <mo class="mfenced-close">|<lr del 3|></mo>} + \fi + } +>>> + + + +\<configure jsml-math amsmath\><<< +\def\abovewithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|<start above|>}% + |<end above over|>\o:@@over: + |<start above under|>\Send{EndGROUP}{0}{|<end above|>} + \else + \Send{GROUP}{0}% + {<mo class="mfenced-open">|<lr del 2|></mo>% + |<start above|>}% + |<end above over|>\o:@@over: + |<start above under|>\Send{EndGROUP}{0}{|<end above|>% + <mo class="mfenced-close">|<lr del 3|></mo>} + \fi + \tmp:dim + } +>>> + + +\<configure jsml-math amsmath\><<< +\def\atopwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|<start atop|>}% + |<end atop over|>\o:@@atop: + |<start atop under|>\Send{EndGROUP}{0}{|<end atop|>} + \else + \Send{GROUP}{0}% + {<mo class="mfenced-open">|<lr del 2|></mo>% + |<start atop|>}% + |<end atop over|>\o:@@atop: + |<start atop under|>\Send{EndGROUP}{0}{|<end atop|>% + <mo class="mfenced-close">|<lr del 3|></mo>} + \fi + } +>>> + + + +\<configure jsml-math amsmath\><<< +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{|<start mfrac|>}% + |<end frac numerator|>\o:over: + |<frac enumerator|>\Send{EndGROUP}{0}{|<end mfrac|>} + \else + \Send{GROUP}{0}% + {<mo class="mfenced-open">|<lr del 2|></mo>% + |<start mfrac|>}% + |<end frac numerator|>\o:@@over: + |<frac enumerator|>\Send{EndGROUP}{0}{|<end mfrac|>% + <mo class="mfenced-close">|<lr del 3|></mo>} + \fi + } +>>> + + + +%%%%%%%%%%%%% +\subsection{Code Assignments} +%%%%%%%%%%%%% + + + +\<start mfrac\><<< +<mfrac>\add:description{begin-end}{\a:speak:fraction}% +<mrow class="mrow-numerator"\Hnewline>% +>>> + + +\<end frac numerator\><<< +\HCode{</mrow>}% +>>> + + + +\<frac enumerator\><<< +\HCode{\add:description{begin-end}{\c:speak:fraction} + <mrow class="mrow-enumerator"\Hnewline>}% +>>> + +\<end mfrac\><<< +</mrow>\add:description{begin-end}{\b:speak:fraction}</mfrac>% +>>> + + +\<start atop\><<< +<mover class="atop">% +\add:description{begin-stack}{\a:speak:atop}% +<mrow class="mrow-upper">% +>>> + + + + +\<end atop over\><<< +\HCode{</mrow>}% +>>> + + +\<start atop under\><<< +\HCode{\add:description{added-description}{\c:speak:atop}<mrow class="mrow-under">}% +>>> + + +\<end atop\><<< +</mrow>\add:description{end-stack}{\b:speak:atop}</mover>% +>>> + + + + +\<start above\><<< +|<start mfrac|>% +>>> + + +\<end above over\><<< +|<end frac numerator|>% +>>> + + +\<start above under\><<< +|<frac enumerator|>% +>>> + +\<end above\><<< +|<end mfrac|>% +>>> + + + + + +\<configure jsml-math tex4ht\><<< +\NewConfigure{speak:fraction}{3} +\Configure{speak:fraction} + {<BREAK SIZE="small"/><level prefix="begin" + continued="begin continued fraction">begin + fraction</level><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/><level prefix="end" + continued="end continued fraction">end + fraction</level><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/><level prefix="over">% + over</level><BREAK SIZE="small"/>} +>>> + + + + +\<configure jsml-math tex4ht\><<< +\NewConfigure{speak:atop}{3} +\Configure{speak:atop} + {<BREAK SIZE="small"/>begin stack<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>end stack<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>over<BREAK SIZE="small"/>} +>>> + + + +%%%%%%%%%%%%% +\subsection{Delimiters} +%%%%%%%%%%%%% + + + +\<lr del 1\><<< +\expandafter +\ifx \csname \string#1:lr del\endcsname\relax #1\else + \csname \string#1:lr del\endcsname\fi +>>> + +\<lr del 2\><<< +\expandafter +\ifx \csname \string#2:lr del\endcsname\relax #2\else + \csname \string#2:lr del\endcsname\fi +>>> + + +\<lr del 3\><<< +\expandafter +\ifx \csname \string#3:lr del\endcsname\relax #3\else + \csname \string#3:lr del\endcsname\fi +>>> + + +The following cases in mathml are translated directly +to explicit caharacters and so donn't get there the +speech interpretation provided in unicode.4hf. + +\<plain,latex mathml\><<< +\Configure{mfenced}{\vert}{\string&\#x007C;} +\Configure{mfenced}{\{}{\string&\#x007B;} +\Configure{mfenced}{\}}{\string&\#x007D;} +\Configure{mfenced}{\lbrace}{\string&\#x007B;} +\Configure{mfenced}{\rbrace}{\string&\#x007D;} +\Configure{mfenced}{\rgroup}{\string&\#x0028;} +\Configure{mfenced}{\lgroup}{\string&\#x0029;} +\Configure{mfenced}{(}{\string&\#x0028;} +\Configure{mfenced}{)}{\string&\#x0029;} +\Configure{mfenced}{[}{\string&\#x0058;} +\Configure{mfenced}{]}{\string&\#x0059;} +\Configure{mfenced}{||}{\string&\#x007C;} +\Configure{mfenced}{\bracevert}{\string&\#x007C;} +\Configure{mfenced}{\bracevert}{\string&\#x007C;} +>>> + + +%%%%%%%%%%%%% +\section{Lines and Braces (With ...)} +%%%%%%%%%%%%% + + +\<configure jsml-math latex\><<< +\Configure{overline} + {\bgroup\ifmathml |<mathml overline|>\else + \HCode{<mover class="overline">}\fi} + {\ifmathml |<end mathml overline|>\else + \HCode{</mover>}\fi\egroup} +\Configure{underline} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>% + \HCode{<mover class="underline">}\fi} + {\ifmathml |<end mathml underline|>\else + \HCode{</mover>}\fi \egroup} +>>> + +\<mathml overline\><<< +\HCode{<mover class="mover-overline"\Hnewline>% + \add:description{begin-end}{\b:speak:modified}% + <mrow class="mo-00AF">}% +>>> + +\<end mathml overline\><<< +\HCode{</mrow>% + \add:description{begin-end}{\a:speak:modified:line}% + </mover>}% +>>> + +\<mathml underline\><<< +\HCode{<munder class="munder-underline">% + \add:description{begin-end}{\a:speak:modified}% + <mrow class="mo-0332"><BREAK SIZE="small"/>}% +>>> + +\<end mathml underline\><<< +\HCode{<BREAK SIZE="small"/></mrow>% + \add:description{begin-end}{\a:speak:modified:line}% + </munder>}% +>>> + +\<nomath underline\><<< +\expandafter\everymath +\expandafter{\expandafter\everymath + \expandafter{\the\everymath}}% +\let\o::@underline:\o:@@underline: +\def\o:@@underline:{\let\o:@@underline:\o::@underline:}% +>>> + + + +\<plain,fontmath math\><<< +\Configure{overbrace} + {\Configure{mathop*}{*} + {<mover class="mover-overline">% + \add:description{begin-end}{\b:speak:modified}% + <mrow class="mo-FE37">} + {</mrow>\add:description{begin-end}{\a:speak:modified:brace}% + </mover>} + {\Configure{mathop}{}{}{}{}}% + } + {\let\o:overbrace:=\displaystyle} + {} +\Configure{underbrace} + {\Configure{mathop*}{*} + {<munder class="munder-underline">% + \add:description{begin-end}{\a:speak:modified}% + <mrow class="mo-FE38">} + {</mrow>\add:description{begin-end}{\a:speak:modified:brace}% + </munder>} + {\Configure{mathop}{}{}{}{}}% + } + {\let\o:underbrace:=\displaystyle} + {} +>>> + + + + + + + +\<config mathml accents\><<< +\Configure{accent}\widetilde\widetilde{{}{}} + {} + {\HCode{<mover class="mover-tilde">% + \add:description{begin-end}{\b:speak:modified}% + <mrow class="mo-0303"\Hnewline>}% + #2% + \HCode{</mrow>\add:description{begin-end}{\a:speak:modified:tilde}% + </mover>}} +\Configure{accent}\widehat\widehat{{}{}} + {} + {\HCode{<mover class="mover-hat">% + \add:description{begin-end}{\a:speak:modified}% + <mrow class="mo-0302"\Hnewline>}% + #2% + \HCode{</mrow>\add:description{begin-end}{ + \a:speak:modified:hat}</mover>}} |%circumflex|% +>>> + + +\<configure jsml-math latex\><<< +\NewConfigure{speak:modified}{2} +\Configure{speak:modified} + {<BREAK SIZE="small"/>modified + under<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>modified + above<BREAK SIZE="small"/>} +\NewConfigure{speak:modified:brace}{1} +\NewConfigure{speak:modified:hat}{1} +\NewConfigure{speak:modified:line}{1} +\NewConfigure{speak:modified:tilde}{1} +\Configure{speak:modified:brace} + {<BREAK SIZE="small"/>with brace<BREAK SIZE="small"/>} +\Configure{speak:modified:hat} + {<BREAK SIZE="small"/>with wide hat<BREAK SIZE="small"/>} +\Configure{speak:modified:line} + {<BREAK SIZE="small"/>with bar<BREAK SIZE="small"/>} +\Configure{speak:modified:tilde} + {<BREAK SIZE="small"/>with wide tilde<BREAK SIZE="small"/>} +>>> + + +%%%%%%%%%%%%% +\section{Arrows (With ...)} +%%%%%%%%%%%%% + + + + +\<plain,fontmath math\><<< +\Configure{overrightarrow} + {\HCode{<mover class="mover-rightarrow">% + \add:description{begin-end}{\b:speak:modified}% + <mrow class="mo-20D5"\Hnewline>}\:gobble} + {\HCode{</mrow>% + \add:description{begin-end}{\a:speak:modified:rightarrow}% + </mover>}} +\Configure{overleftarrow} + {\HCode{<mover class="mover-leftarrow">% + \add:description{begin-end}{\b:speak:modified}% + <mrow class="mo-20D6"\Hnewline>}\:gobble} + {\HCode{</mrow>% + \add:description{begin-end}{\a:speak:modified:leftarrow}% + </mover>}} +>>> + +\<plain,fontmath math\><<< +\NewConfigure{speak:modified:leftarrow}{1} +\NewConfigure{speak:modified:leftrightarrow}{1} +\NewConfigure{speak:modified:rightarrow}{1} +\Configure{speak:modified:leftarrow} + {<BREAK SIZE="small"/>with left + right arrow<BREAK SIZE="small"/>} +\Configure{speak:modified:leftrightarrow} + {<BREAK SIZE="small"/>with left + right arrow<BREAK SIZE="small"/>} +\Configure{speak:modified:rightarrow} + {<BREAK SIZE="small"/>with + right arrow<BREAK SIZE="small"/>} +>>> + +\<configure jsml-math amsmath\><<< +\Configure{underrightarrow} + {\HCode{<munder class="munder-rightarrow">% + \add:description{begin-end}{\a:speak:modified}% + <mrow class="mo-2092"\Hnewline>}\:gobble} + {\HCode{</mrow>% + \add:description{begin-end}{\a:speak:modified:rightarrow}% + </munder>}} +\Configure{underleftarrow} + {\HCode{<munder class="munder-leftarrow">% + \add:description{begin-end}{\a:speak:modified}% + <mrow class="mo-2090"\Hnewline>}\:gobble} + {\HCode{</mrow>% + \add:description{begin-end}{speak:modified:leftarrow}% + </munder>}} +>>> + + +\<configure jsml-math amsmath\><<< +\Configure{overleftrightarrow} + {\HCode{<mover class="mover-leftrightarrow">% + \add:description{begin-end}{\b:speak:modified}% + <mrow class="mo-20E1"\Hnewline>}\:gobble} + {\HCode{</mrow>% + \add:description{begin-end}{\a:speak:modified:leftrightarrow}% + </mover>}} +\Configure{underleftrightarrow} + {\HCode{<munder class="munder-leftrightarrow">% + \add:description{begin-end}{\a:speak:modified}% + <mrow class="mo-2194"\Hnewline>}\:gobble} + {\HCode{</mrow>% + \add:description{begin-end}{\a:speak:modified:leftrightarrow}% + </munder>}} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Symbols} +%%%%%%%%%%%%%%%%%% + + +\<configure jsml-math amsmath\><<< +\def\:tempc{\HCode{<mspace width="0.2em"/>}\mathbin{mod} } +\HLet\bmod\:tempc +\def\:tempc#1{ (#1)} +\HLet\pod=\:tempc +\def\:tempc#1{\pod{\mathop{mod} #1}} +\HLet\pmod=\:tempc +\def\:tempc#1{ \mathop{mod} #1} +\HLet\mod=\:tempc +>>> + +\<configure jsml-math amsmath\><<< +\Configure{hdotsfor}{\dots} +>>> + +\<plain,latex mathml\><<< +\def\mathop:prefix#1{% + \Configure{mathop}{*}{<mo class="mo-op" + #1\Hnewline>}{</mo>}% + {\Configure{mathop}{*}{<mo class="mo-op">}{</mo>}{}}} +>>> + + +\<configure jsml-math amsopn\><<< +\def\:tempc{\mathop{\underrightarrow\lim}\displaylimits} \HLet\varinjlim\:tempc +\def\:tempc{\mathop{\underleftarrow\lim}\displaylimits} \HLet\varprojlim\:tempc +\def\:tempc{\mathop{\overline\lim}\displaylimits} \HLet\varlimsup\:tempc +\def\:tempc{\mathop{\underline\lim}\displaylimits} \HLet\varliminf\:tempc +>>> + + +\<\><<< +\HRestore\varinjlim +\HRestore\varprojlim +\HRestore\varlimsup +\HRestore\varliminf +>>> + + +\<plain,fontmath math\><<< +\def\:tempc{\HCode{\add:description{added-description}{real part + symbol capital }}\o:Re:} +\HLet\Re\:tempc +\def\:tempc{\HCode{\add:description{added-description}{real part + symbol capital }}\o:Im:} +\HLet\Im\:tempc +>>> + +%%%%%%%%%%%%%%%%%% +\section{Spaces} +%%%%%%%%%%%%%%%%%% + + + + +\<plain,latex mathml\><<< +\Configure{quad}{\HCode{|<space element|>}} +\Configure{qquad}{\HCode{|<space element|>}} +\Configure{,}{\HCode{|<tiny space element|>}} +\Configure{ }{\:nbsp} +>>> + + +\<configure jsml-math latex\><<< +\Configure{hspace}{ }{}{ } +>>> + + +\<configure jsml-math amsmath\><<< +\Configure{tmspace} + {\HCode{|<space element|>}} +>>> + +\<plain,latex mathml\><<< +\def\:nbsp{\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x} +>>> + + + +\<configure jsml frenchb\><<< +\Configure{frenchb-nbsp} + {\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x% + \setbox\tmp:bx=\hbox\bgroup} + {\egroup} +>>> + +\<space element\><<< +<span class="space"><BREAK SIZE="small"/></span>% +>>> + + +\<tiny space element\><<< +<span class="tiny-space"><BREAK SIZE="small"/></span>% +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Radicals} +%%%%%%%%%%%%%%%%%% + + + +\<configure jsml-math tex4ht\><<< +\Configure{radical} + {\HCode{<msqrt>% + \add:description{begin-root}{\a:speak:radical}}% + \special{t4ht\string~!e<<mrow class="root-base">}% + \special{t4ht\string~!e></mrow>% + \add:description{end-root}{\b:speak:radical}</msqrt>}% + \special{t4ht\string~!ee/}% + \special{t4ht\string~!ese-}% + } +>>> + +\<configure jsml-math tex4ht\><<< +\NewConfigure{speak:radical}{2} +\Configure{speak:radical} + {<BREAK SIZE="small"/><level prefix="begin">begin + root</level><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/><level prefix="end">end + root</level><BREAK SIZE="small"/>} +>>> + + + + + +\<plain,latex mathml\><<< +\Configure{root} + {\HCode{<mroot>% + \add:description{begin-root}{\a:speak:root}% + <mrow class="root-index">}} + {\HCode{</mrow>\add:description{mid-root}{\b:speak:root}% + <mrow class="root-base">}} + {\HCode{</mrow>\add:description{end-root}{\c:speak:root}</mroot>}} +>>> + + +\<plain,latex mathml\><<< +\NewConfigure{speak:root}{3} +\Configure{speak:root} + {<BREAK SIZE="medium"/><level prefix="root">root + index</level><BREAK SIZE="medium"/>} + {<BREAK SIZE="medium"/><level prefix="begin">begin + root</level><BREAK SIZE="medium"/>} + {<BREAK SIZE="medium"/><level prefix="end">end + root</level><BREAK SIZE="medium"/>} +>>> + + + + + +%%%%%%%%%%%%% +\section{Left and Right} +%%%%%%%%%%%%% + + +\<plain,latex mathml\><<< +\Configure{left} + {} + {\HCode{|<lr del 1|>}\bgroup + \HCode{<mrow>}\bgroup} +\Configure{right} + {\egroup\HCode{</mrow>}\egroup + \HCode{|<lr del 1|>}} + {} +>>> + + + + +\<plain,fontmath math\><<< +\Configure{big} + {}{} + {} + {} +\Configure{Big} + {}{} + {} + {} +\Configure{bigg} + {}{} + {} + {} +\Configure{Bigg} + {}{} + {} + {} +>>> + + + + + + + +\<plain,fontmath math\><<< +|<big common|> +\:CheckOption{mathml-} \if:Option + |<big mathml-|> +\else + |<big mathml|> +\fi +>>> + +\<big mathml\><<< +\Configure{Biggl} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathopen}{*} + {<span class="Biggl"><span class="MathClass-open" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span><span>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Biggr} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathclose}{*} + {</span><span class="MathClass-close" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span></span>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{Bigl} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathopen}{*} + {<span class="Bigl"><span class="MathClass-open"><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span><span>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Bigr} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathclose}{*} + {</span><span class="MathClass-close" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span></span>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{biggl} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathopen}{*} + {<span class="biggl"><span class="MathClass-open"><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span><span>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{biggr} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathclose}{*} + {</span><span class="MathClass-close" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span></span>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{bigl} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathopen}{*} + {<span class="bigl"><span class="MathClass-open"><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span><span>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{bigr} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathclose}{*} + {</span><span class="MathClass-close" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span></span>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +>>> + + + + +\<big mathml-\><<< +\Configure{Biggl} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathopen}{*} + {<span class="MathClass-open" title="Bigg" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Biggr} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathclose}{*} + {<span class="MathClass-close" title="Bigg" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{Bigl} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathopen}{*} + {<span class="MathClass-open" title="Big" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Bigr} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathclose}{*} + {<span class="MathClass-close" title="Big" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{biggl} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathopen}{*} + {<span class="MathClass-open" title="bigg" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{biggr} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathclose}{*} + {<span class="MathClass-close" title="bigg" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{bigl} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathopen}{*} + {<span class="MathClass-open" title="big" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{bigr} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathclose}{*} + {<span class="MathClass-close" title="big" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +>>> + + + +\<big common\><<< +\Configure{Biggm} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathrel}{*} + {<span class="MathClass-rel" title="Bigg" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{Bigm} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathrel}{*} + {<span class="MathClass-rel" title="Big" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{biggm} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathrel}{*} + {<span class="MathClass-rel" title="bigg" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{bigm} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathrel}{*} + {<span class="MathClass-rel" title="big" ><BREAK SIZE="small"/>} + {<BREAK SIZE="small"/></span>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +>>> + +\<plain,latex mathml\><<< +\Configure{mfenced}{\vert}{||} +\edef\:temp{\noexpand\Configure{mfenced}{\noexpand\{}{\string&\#x007B;}}\:temp +\edef\:temp{\noexpand\Configure{mfenced}{\noexpand\}}{\string&\#x007D;}}\:temp +\edef\:temp{\noexpand + \Configure{mfenced}{\noexpand\lbrace}{\string&\#x007B;}}\:temp +\edef\:temp{\noexpand + \Configure{mfenced}{\noexpand\rbrace}{\string&\#x007D;}}\:temp +>>> + + +%%%%%%%%%%%%% +\subsection{Math Inner} +%%%%%%%%%%%%% + + +\<plain,latex mathml\><<< +\def\mathinner#1{\Tg<span + class="mathinner">#1\Tg</span>} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Limits of Sub- snd Super- Scripts (over/under - end - scripts)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<limits sub, sup, subsup\><<< +\Configure{limits}{|<limit scripts|>} +\def\disp:limits{|<limit scripts|>} +>>> + + +\<limit scripts\><<< +\let|<restore SUB|>=\:UnDef +\let|<restore SUP|>=\:UnDef +\ifx \:temp\sp |<conf limits SUP|>\else +\ifx \:temp\sb |<conf limits SUB|>\fi\fi +|<conf limits SUBSUP|>% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Simultaneously Sub- and Super- Scripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<conf limits SUBSUP\><<< +|<save pre-limits SUBSUP|>% +\Configure{SUBSUP} + {\ifx |<restore SUB|>\:UnDef\else |<restore SUB|>\fi + \ifx |<restore SUP|>\:UnDef\else |<restore SUP|>\fi + |<restore pre-limits SUBSUP|>% + \Send{BACK} + {|<start limits msubsup base|>}|<msubsup limits sub|>} + {|<msubsup limits sup|>} + {|<close limits script|>} +>>> + + + + +\<start limits msubsup base\><<< +<msubsup class="limits-msub-msup"><mrow + class="limits-mrow-base"\Hnewline>% +>>> + +\<msubsup limits sub\><<< +\HCode{</mrow><mrow class="limits-mrow-sub"\Hnewline + >\add:description{begin-limits-script}{\a:speak:underover}}% + \trap:base +>>> + + +\<msubsup limits sup\><<< +\HCode{</mrow><mrow class="limits-mrow-super"\Hnewline + >\add:description{mid-limits-script}{\b:speak:underover}}\trap:base +>>> + + +\<close limits script\><<< +\HCode{\add:description{end-limits-script}{\c:speak:underover}% + </mrow></msubsup\Hnewline>}% +>>> + +\<close limits sup\><<< +\HCode{\add:description{end-limits-script}{\c:speak:underover}% + </mrow></msup\Hnewline>}% +>>> + + + +\<close limits sub\><<< +\HCode{\add:description{end-limits-script}{\c:speak:underover}% + </mrow></msub\Hnewline>}% +>>> + + +\<configure jsml-math tex4ht\><<< +\NewConfigure{speak:underover}{3} +\Configure{speak:underover} + {<BREAK SIZE="small"/>under script<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>over script<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>end scripts<BREAK SIZE="small"/>} +>>> + +\<save pre-limits SUBSUP\><<< +\let\pl:SUBSUP=\SUBSUP: +>>> + +\<restore pre-limits SUBSUP\><<< +\ifx \pl:SUBSUP\:UnDef \else + \let\SUBSUP:=\pl:SUBSUP +\fi +>>> + +\<limits sub, sup, subsup\><<< +\ifx \a:putSUB\:UnDef \else + \pend:def\a:putSUB{\ifx \pl:SUBSUP\:UnDef\else + \let\SUBSUP:=\pl:SUBSUP + \let\pl:SUBSUP=\:UnDef + \fi}% +\fi +\ifx \a:putSUP\:UnDef \else + \pend:def\a:putSUP{\ifx \pl:SUBSUP\:UnDef\else + \let\SUBSUP:=\pl:SUBSUP + \let\pl:SUBSUP=\:UnDef + \fi}% +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Superscripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<conf limits SUP\><<< +|<save pre-limits SUP|>% +\Configure{SUP} + {|<open external limits SUP|>\bgroup + |<restore pre-limits SUBSUP|>% + |<conf second limits SUP|>\trap:base} + {}% +>>> + +\<save pre-limits SUP\><<< +\def\pl:SUP{\Configure{SUP}}% +\expandafter\append:def + \expandafter\pl:SUP\expandafter{\expandafter{\a:SUP}}% +\expandafter\append:def + \expandafter\pl:SUP\expandafter{\expandafter{\b:SUP}}% +>>> + +\<conf second limits SUP\><<< +\Configure{SUP} + {|<open intermediate limits SUP|>\bgroup + |<conf third limit SUP|>\trap:base} + {\egroup|<close external limits SUP|>}% +>>> + + +\<conf third limit SUP\><<< +\Configure{SUP} + {|<open internal limits SUP|>\bgroup \trap:base} + {\egroup |<close internal limits SUP|>}% +>>> + + +\<open external limits SUP\><<< +\Send{BACK}{|<msup limits base|>}% +|<msup limits script super|>% +>>> + + + + + + + + +\<msup limits script super\><<< +\HCode{</mrow><mrow class="limits-mrow-super"\Hnewline + >\add:description{begin-limits-script}{\b:speak:underover}}% + \trap:base +>>> + + +\<msup limits base\><<< +<msup + class="limits-msub-msup"><mrow + class="limits-mrow-base"\Hnewline>% +>>> + +\<close external limits SUP\><<< +\HCode{\add:description{end-limits-script}{\c:speak:underover}% + </mrow></msup\Hnewline + >}\aftergroup|<restore SUP|>% +>>> + +\<restore SUP\><<< +\pl:SUP >>> + +\<open intermediate limits SUP\><<< +\Send{BACK} +{|<start msup base|>}|<msup super|>% +>>> + +\<open internal limits SUP\><<< +\Send{BACK} +{|<start msup base|>}|<msup super|>% +>>> + +\<close internal limits SUP\><<< +|<close msup|>% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Subscripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<conf limits SUB\><<< +|<save pre-limits SUB|>% +\Configure{SUB} + {|<open external limits SUB|>\bgroup + |<restore pre-limits SUBSUP|>% + |<conf second limits SUB|>\trap:base} + {}% +>>> + +\<save pre-limits SUB\><<< +\def\pl:SUB{\Configure{SUB}}% +\expandafter\append:def + \expandafter\pl:SUB\expandafter{\expandafter{\a:SUB}}% +\expandafter\append:def + \expandafter\pl:SUB\expandafter{\expandafter{\b:SUB}}% +>>> + +\<conf second limits SUB\><<< +\Configure{SUB} + {|<open intermediate limits SUB|>\bgroup + |<conf third limit SUB|>\trap:base} + {\egroup|<close external limits SUB|>}% +>>> + + +\<conf third limit SUB\><<< +\Configure{SUB} + {|<open internal limits SUB|>\bgroup \trap:base} + {\egroup |<close internal limits SUB|>}% +>>> + + +\<open external limits SUB\><<< +\Send{BACK}{|<msub limits base|>}% +|<msub limits script sub|>% +>>> + + + +\<msub limits script sub\><<< +\HCode{</mrow><mrow class="limits-mrow-sub"\Hnewline + >\add:description{begin-limits-script}{\a:speak:underover}}% + \trap:base +>>> + + + + +\<msub limits base\><<< +<msub + class="limits-msub-msup"><mrow + class="limits-mrow-base"\Hnewline>% +>>> + + + +\<close external limits SUB\><<< +\HCode{\add:description{end-limits-script}{\c:speak:underover}% +</mrow></msub\Hnewline >}\aftergroup|<restore SUB|>% +>>> + +\<restore SUB\><<< +\pl:SUB >>> + +\<open intermediate limits SUB\><<< +\Send{BACK} +{|<start msub base|>}|<msub sub|>% +>>> + +\<open internal limits SUB\><<< +\Send{BACK} +{|<start msub base|>}|<msub sub|>% +>>> + +\<close internal limits SUB\><<< +|<close msub|>% +>>> + + + + + + +%%%%%%%%%%%%% +\section{On Arrows (over/under - end - scripts)} +%%%%%%%%%%%%% + + + +\<configure jsml-math amsmath\><<< +\renewcommand{\xrightarrow}[2][]{% + \if :#1: + \HCode{|<msup limits base|>}% + \rightarrow + |<msup limits script super|>#2% + |<close limits sup|>% + \else + \HCode{|<start limits msubsup base|>}% + \leftarrow + |<msubsup limits sub|>#1% + |<msubsup limits sup|>#2% + |<close limits script|>% + \fi +} +\renewcommand{\xleftarrow}[2][]{% + \if :#1: + \HCode{|<msup limits base|>}% + \leftarrow + |<msup limits script super|>#2% + |<close limits sup|>% + \else + \HCode{|<start limits msubsup base|>}% + \leftarrow + |<msubsup limits sub|>#1% + |<msubsup limits sup|>#2% + |<close limits script|>% + \fi +} +>>> + + + + +%%%%%%%%%%%%% +\section{On Text (over/under - end - scripts)} +%%%%%%%%%%%%% + +\<configure jsml-math amsmath\><<< +\def\overset#1#2{{% + \HCode{|<msup limits base|>}% + #2% + |<msup limits script super|>#1% + |<close limits sup|>% +}} +\def\underset#1#2{{% + \HCode{|<msub limits base|>}% + #2% + |<msub limits script sub|>#1% + |<close limits sub|>% +}} +>>> + + + + + + +\<configure jsml-math amsmath\><<< +\def\sideset#1#2#3{{\Tg<mrow class="sideset"\Hnewline + >{\HCode{}}#1{\HCode{}#3}#2\Tg</mrow>}} +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Accents} +%%%%%%%%%%%%%%%%%% + +\<plain,latex mathml\><<< +\:CheckOption{new-accents} \if:Option \else + |<config mathml accents|> +\fi +>>> + +\<config mathml accents\><<< +\Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|<temp hcode accents|>% + \ht:special{t4ht@[}\if!#1!x\else#2\fi + \ht:special{t4ht@]}}} + {\ifmathml + \ifmtext |<accent in text mode|>% + \else \AccentMath{|<under over accents|>}\fi + \else |<accent in text mode|>\fi + } +>>> + + + +\<temp hcode accents\><<< +\leavevmode +\if !#1!\ht:special{t4ht@+&{35}x#2;}% +\else \expandafter \ifx\csname U#2#1\endcsname\relax + \ht:special{t4ht@+&{35}x#2;}% +\else + \ht:special{t4ht@+&{35}x\csname U#2#1\endcsname;}% +\fi \fi x% +>>> + +\<accent in text mode\><<< +\expandafter\ifx \csname :#1:over\endcsname\relax + \expandafter\ifx \csname :#1:under\endcsname\relax + \AccentMath{|<under over accents|>}% + \else #3\csname :#1:under\endcsname \fi +\else #3\csname :#1:over\endcsname \fi +>>> + + +\<under over accents\><<< +\expandafter\ifx \csname :#1:over\endcsname\relax + |<under accents|>% +\else \expandafter\ifx \csname :#1:under\endcsname\relax + |<over accents|>% +\else + |<both accents|>% +\fi \fi +>>> + +\<under accents\><<< +\HCode{<munder\Hnewline + accent="true"><mrow\Hnewline><BREAK SIZE="small"/>}% + #3\HCode{</mrow>}% + \csname :#1:under\endcsname + \HCode{</munder>}% +>>> + +\<over accents\><<< +\HCode{<mover class="mover-accent">% + <mrow\Hnewline><BREAK SIZE="small"/>}% + #3\HCode{</mrow>}% + \csname prefix:#1:over\endcsname + \csname :#1:over\endcsname + \HCode{</mover>}% +>>> + +\<both accents\><<< +\HCode{<munderover\Hnewline + accent="true"><mrow\Hnewline><BREAK SIZE="small"/>}% + #3\HCode{</mrow>}% + \csname :#1:under\endcsname + \csname :#1:over\endcsname + \HCode{</munderover>}% +>>> + +\<configure jsml-math latex\><<< +\def\:temp#1#2{\expandafter\def\csname prefix:#1:over\endcsname + {\HCode{\add:description{added-description}{ #2 }}}} +\:temp{vec}{\b:speak:underover} +\:temp{dddot}{\b:speak:underover} +\:temp{ddddot}{\b:speak:underover} +>>> + + + +%%%%%%%%%%%%%%%%%% +\chapter{Tables} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Tabular} +%%%%%%%%%%%%%%%%%% + +\<configure jsml latex\><<< +|<array and tabular|> +>>> + +\<configure jsml array\><<< +|<array and tabular|> +>>> + +\<configure tabular noalign\><<< +\Configure{noalign}% + {\f:tabular\d:tabular \HCode{<tr><td colspan="\ar:cnt">}} + {\HCode{</td></tr>}\pend:def\TableNo{0}\c:tabular\e:tabular}% +>>> + + +\<configure clear noalign\><<< +\Configure{noalign}{}{}% +>>> + + +\<inline comment\><<< +\ifvmode\else\HCode{<!--tex4ht:inline-->}\fi +>>> + + + +\<array and tabular\><<< +\HAssign\TableNo=0 +\Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<PARA><table class="tabular" >}% + |<begin tabular note|>} + {\Tag{tabular-\TableNo}{\hrow:s}% + |<end tabular note|>\HCode{</table></PARA>}} + {\HCode{<tr><!--row \HRow-->}% + |<begin table row note|>} + {\xdef\hrow:s{\HRow}|<end table row note|>\HCode{</tr>}} + {\HCode{<td><!--entry \HRow-\HCol\ifnum + \HMultispan>1 \, span \HMultispan\fi-->}% + |<begin table cell note|>\HCode{<div>}\SaveEndP + \PushStack\Table:Stck\TableNo + \par \ShowPar} + {\PopStack\Table:Stck\TableNo + \IgnorePar \EndP \ifvmode \IgnorePar \fi \EndP + \HCode{</div>}|<end table cell note|>% + \HCode{</td>\Hnewline}\RecallEndP } +>>> + + + + + +\<begin tabular note\><<< +\HCode{% + <BREAK SIZE="small"/><PROS PITCH="-5" >% + \add:vdescription{begin-end}{begin table with + \ifTag{tabular-\TableNo}{\LikeRef{tabular-\TableNo}}{} + rows and \ar:cnt columns}% + </PROS> +}% +>>> + +\<end tabular note\><<< +\HCode{|<show input line no|>% + <BREAK SIZE="small"/>% + <PROS PITCH="-5" >% + \add:vdescription{begin-end}{end table}% + </PROS><BREAK SIZE="small"/>% +}% +>>> + +\<begin table row note\><<< +\HCode{% + <BREAK SIZE="medium"/><PROS PITCH="-5" >% + \add:vdescription{begin-end}{|<ord row|> row}% + </PROS><BREAK SIZE="medium"/>% +}% +>>> + + +\<begin table cell note\><<< +\HCode{% + <BREAK SIZE="medium"/>% + \ifnum \HMultispan>1 + <PROS PITCH="-5" >% + \add:vdescription{added-description}{|<ord col|> cell + spans \HMultispan \space columns}% + </PROS><BREAK SIZE="medium"/>% + \else + \ifnum \HCol>1 + <PROS PITCH="-5" >% + \add:vdescription{added-description}{|<ord col|> cell}% + </PROS><BREAK SIZE="medium"/>% + \fi + \fi +}% +>>> + +\<end table cell note\><<< +>>> + + +%%%%%%%%%%%%% +\section{Numbering} +%%%%%%%%%%%%% + + + +\<ord row\><<< +<span class="ord-row">\ord:pos{\HRow}</span>% +>>> + +\<ord col\><<< +\ord:pos{\HCol}% +>>> + + +\<configure jsml tex4ht\><<< +\def\ord:pos#1{% + \ifcase #1 + \or first + \or second + \or third + \or fourth + \or fifth + \or sixth + \or seventh + \or eighth + \or nineth + \else #1th + \fi +} +>>> + + + + + +\<configure jsml tex4ht\><<< +\HAssign\HRow=0 +>>> + +\<advance table number\><<< +\PushStack\Table:Stck\TableNo +\gHAdvance\Next:TableNo by 1 +\global\let\TableNo=\Next:TableNo +>>> + +\<return to prev table number\><<< +\PopStack\Table:Stck\TableNo +>>> + + + + + + + +\<new row counter\><<< +\PushStack\Row:Stck\HRow \HAssign\HRow=0\relax +>>> + +\<return to prev row counter\><<< +\PopStack\Row:Stck\HRow +>>> + +\<new col counter\><<< +\PushStack\Col:Stck\Prev:Col +>>> + +\<return to prev col counter\><<< +\PopStack\Col:Stck\Prev:Col +>>> + + + + +%%%%%%%%%%%%% +\section{Aligned} +%%%%%%%%%%%%% + + + +\<configure jsml-math amsmath\><<< +\Configure{aligned} + {|<advance table number|>% + |<new row counter|>% + \HCode{<PARA><mtable class="aligned">}% + \HCode{\add:vdescription{begin-array}{\a:speak:aligned}}} + {\Tag{aligned-\TableNo}{\hrow:s}% + \HCode{|<show input line no|>% + \add:vdescription{end-array}{\b:speak:aligned}}% + \ifvmode \IgnorePar\fi + \HCode{</mtable></PARA>}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr>}\c:speak:aligned}% + {\xdef\hrow:s{\HRow}\HCode{</mtr>}}% + {\HCode{<mtd>}% + \e:speak:aligned \HCode{<div>}} + {\HCode{</div>}\f:speak:aligned + \HCode{</mtd>\Hnewline}} +>>> + +\<configure jsml-math amsmath\><<< +\NewConfigure{speak:aligned}{6} +\Configure{speak:aligned} + {begin + \ifTag{aligned-\TableNo}{\LikeRef{aligned-\TableNo}}{} + aligned equations} + {end equations} + {|<begin table row note|>} + {|<end table row note|>} + {|<begin table cell note|>} + {|<end table cell note|>} +>>> + + + +\<configure jsml-math amsmath\><<< +\Configure{alignedat} + {|<advance table number|>% + |<new row counter|>% + \HCode{<PARA><mtable class="aligned">}% + \HCode{\add:vdescription{begin-array}{\a:speak:aligned}}} + {\Tag{aligned-\TableNo}{\hrow:s}% + \HCode{|<show input line no|>% + \add:vdescription{end-array}{\b:speak:aligned}}% + \ifvmode \IgnorePar\fi \HCode{</mtable></PARA>}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr>}\c:speak:aligned}% + {\xdef\hrow:s{\HRow}\HCode{</mtr>}}% + {\HCode{<mtd>}% + \e:speak:aligned \HCode{<div>}} + {\HCode{</div>}\f:speak:aligned + \HCode{</mtd>\Hnewline}} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\section{Cases} +%%%%%%%%%%%%%%%%% + +\<plain,latex mathml\><<< +\Configure{cases} + {}{} {\HCode{<PARA><mtable>}}{\HCode{</mtable></PARA>}} + {\Tg<mtr>}{\Tg</mtr>} + {\Tg<mtd class="cases">}{\Tg</mtd>} +>>> + + +\<configure jsml-math amsmath\><<< +\ConfigureEnv{cases} + {|<advance table number|>% + |<new row counter|>% + \HCode{<div class="cases">}% + \bgroup + |<save left/right config|>% + |<config amsmath cases|>% + |<cases left/right|>% + } + {\egroup\HCode{</div>}% + |<return to prev row counter|>% + |<return to prev table number|>} + {}{} +>>> + + + + + + +\<config amsmath cases\><<< +\Configure{array} + {\HCode{<mtable class="cases">% + |<start cases note|>}} % + {\Tag{cases-\TableNo}{\HRow}% + \HCode{|<show input line no|>% + |<end cases note|>}% + \ifvmode \IgnorePar\fi \Tg</mtable>} + {\HCode{<mtr>% + |<next case note|>}} + {\HCode{</mtr>}}% + {\HCode{<mtd class="sub-case-\HCol" >% + <BREAK SIZE="\ifnum \HCol>1 medium\else + small\fi"/>}% + \bgroup + |<config array|>% + |<recall left/right config|>% + } + {\egroup \HCode{</mtd>\Hnewline}} +>>> + +\<start cases note\><<< +\add:vdescription{begin-array}{<BREAK SIZE="small"/>begin + \ifTag{cases-\TableNo}{\LikeRef{cases-\TableNo}}{} + cases<BREAK SIZE="small"/>}% +>>> + +\<end cases note\><<< +\add:vdescription{end-array} + {<BREAK SIZE="small"/>end cases<BREAK SIZE="small"/>} +>>> + +\<next case note\><<< +\add:vdescription{begin-end} + {<BREAK SIZE="small"/>|<ord row|> case}% +>>> + + +\<cases left/right\><<< +\Configure{left} + {} + {\bgroup} +\Configure{right} + {\egroup} + {} +>>> + + +\<save left/right config\><<< +\let\sv:a:left=\a:left +\let\sv:b:left=\b:left +\let\sv:a:right=\a:right +\let\sv:b:right=\b:right +>>> + + +\<recall left/right config\><<< +\let\a:left=\sv:a:left +\let\b:left=\sv:b:left +\let\a:right=\sv:a:right +\let\b:right=\sv:b:right +>>> + + + + +%%%%%%%%%%%%%%%%%%%% +\section{matrix} +%%%%%%%%%%%%%%%%%%%% + +\<plain,latex mathml\><<< +\Configure{matrix} + {|<advance table number|>% + |<new row counter|>% + \HCode{<PARA><mtable class="array">}% + \HCode{\add:vdescription{begin-array}{\a:speak:array}}} + {\Tag{array-\TableNo}{\hrow:s}% + \HCode{|<show input line no|>% + \add:vdescription{end-array}{\b:speak:array}}% + \ifvmode \IgnorePar\fi \HCode{</mtable></PARA>}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr>}\c:speak:array}% + {\xdef\hrow:s{\HRow}\HCode{</mtr>}}% + {\HCode{<mtd>}% + \e:speak:array\HCode{<div>}} + {\HCode{</div>}\f:speak:array + \HCode{</mtd>\Hnewline}} +>>> + +\<mtd matrix\><<< +\HCode{<mtd\Hnewline class="matrix" + \ifnum 1<\HMultispan columnspan="\HMultispan"\fi}% + \halignTD \HCode{>}% +>>> + + + +The grouping below is handle the case that the matrix is a base of an exponent. + + +\<plain,latex mathml\><<< +\Configure{pmatrix} + {\bgroup\HCode{<PARA><div class="pmatrix"><BREAK SIZE="small"/>}} + {\HCode{<BREAK SIZE="small"/></div></PARA>}\egroup} +>>> + + + + +\<plain,latex mathml\><<< +\NewConfigure{speak:array}{6} +\Configure{speak:array} + {<BREAK SIZE="small"/>begin array with + \ifTag{array-\TableNo}{\LikeRef{array-\TableNo}}{} + rows<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>end array<BREAK SIZE="small"/>} + {|<begin table row note|>} + {|<end table row note|>} + {|<begin table cell note|>} + {|<end table cell note|>} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{EqAlign} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure jsml plain\><<< +|<TABLE eqalign shared Configure 4.0t|> +>>> +\<TABLE eqalign shared Configure 4.0t\><<< +\Configure{eqalign} + {\:xhtml{\IgnorePar\EndP}\HCode + {<div class="eqalign"><table class="eqalign">}} + {\HCode{</table></div>}} + {\HCode{<tr \Hnewline class="eqalign" + valign="middle">}}{\IgnorePar\HCode{</tr>}} + {\HCode{<td align="\ifnum \HCol=2 + left\else right\fi"\Hnewline class="eqalign\HCol" + style="white-space:nowrap;">}} + {\HCode{</td>}} +\def\:eqalign:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} + +>>> + + + + + +\<TABLE eqalign shared Configure 4.0t\><<< +\Configure{eqalignno} + {\:xhtml{\IgnorePar\EndP}\HCode{<table class="eqalignno">}} + {\HCode{</table>}} + {\HCode{<tr\Hnewline class="eqalignno">}}{\IgnorePar\HCode{</tr>}} + {\HCode{\ifnum \HCol=3 <td\Hnewline width="10" + class="eqalignno-sp"></td>\fi + <td align="\ifnum \HCol=2 left\else right\fi"\Hnewline + class="eqalignno\HCol">}} + {\HCode{</td>}} +\def\:eqalignno:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} + +>>> + +\<TABLE eqalign shared Configure 4.0t\><<< +\Configure{leqalignno} + {\:xhtml{\IgnorePar\EndP}\HCode{<table class="leqalignno">}} + {\HCode{</table>}} + {\HCode{<tr \Hnewline + class="leqalignno">}}{\IgnorePar\HCode{</tr>}} + {\HCode{\ifnum \HCol=3 <td\Hnewline width="30" + class="eqalignno-sp"></td>\fi + <td align="\ifnum \HCol=2 left\else right\fi"\Hnewline + class="leqalignno\HCol">}} + {\HCode{</td>}} +\def\:leqalignno:{\Configure{noalign} + {\HCode{<tr><td class="noalign" colspan="2">}}% + {\HCode{</td></tr>}}} +>>> + + + +\<configure jsml-math latex\><<< +|<config array|> +>>> + +\<configure jsml-math array\><<< +|<config array|> +>>> + + +\<config array\><<< +\Configure{array} + {|<advance table number|>% + |<new row counter|>% + \HCode{<PARA><mtable class="array">}% + \HCode{\add:vdescription{begin-array}{\a:speak:array}}} + {\Tag{array-\TableNo}{\hrow:s}% + \HCode{|<show input line no|>% + \add:vdescription{end-array}{\b:speak:array}}% + \ifvmode \IgnorePar\fi + |<insert Clr|>\HCode{</mtable></PARA>}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr>}\c:speak:array}% + {\xdef\hrow:s{\HRow}\HCode{</mtr>}}% + {\HCode{<mtd>}% + \e:speak:array\HCode{<div>}} + {\HCode{</div>}\f:speak:array + \HCode{</mtd>\Hnewline}} +\ConfigureEnv{array} + {\bgroup\Configure{$}{}{}{}} + {\egroup} + {}{} +>>> + + + + + + +\<begin array row note\><<< +\HCode{\add:vdescription{begin-end}{Row \HRow}}% +>>> + + + + +\<configure jsml-math latex\><<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + +\<configure jsml-math array\><<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + + + + + + +\<insert Clr\><<< +\expandafter\tmp:toks\expandafter{\Clr}% +\HCode{<!--\the\tmp:toks-->}% +>>> + + + + + +\<mathml latex\><<< +\def\:MM{m} +\Configure{HBorder} + {<mtr\Hnewline class="hline">} + {|<mml hline|>} + {</mtr>} + {<mtr\Hnewline class="cline">} + {<mtd></mtd>} + {|<mml hline|>} + {</mtr>} + {<mtr\Hnewline class="vspace" style="font-size:\HBorderspace">} + {<mtd\Hnewline></mtd>} + {</mtr>} +>>> + +\<configure jsml-math latex\><<< +\def\:MM{\ifmathml m\fi} +\Configure{HBorder} + {<\:MM tr\Hnewline + \ifmathml \expandafterclass\else class\fi="hline">} + {\ifmathml|<mml hline|>\else + <td><hr\xml:empty></td>\fi} + {</\:MM tr>} + {<\:MM tr\Hnewline + \ifmathml \expandafterclass\else class\fi ="cline">} + {<\:MM td></\:MM td>} + {\ifmathml|<mml hline|>\else + <td><hr\xml:empty></td>\fi} + {</\:MM tr>} + {<\:MM tr\Hnewline + \ifmathml \expandafterclass\else class\fi="vspace" + style="font-size:\HBorderspace">} + {<\:MM td\Hnewline>\ifmathml\else\string&\#x00A0;\fi + </\:MM td>} + {</\:MM tr>} +\Configure{halign} + {\EndP\halignTB{halign}} \t:HA + \R:HA\r:HA\D:HA\d:HA +>>> + + + +\<mml hline\><<< +<mtd><mo> \string&\#x0332; </mo></mtd> +>>> + +%%%%%%%%%%%%% +\section{Small Matrix} +%%%%%%%%%%%%% + + + +\<configure jsml-math latex\><<< +|<config multicolumn|> +>>> + + +\<configure jsml-math array\><<< +|<config multicolumn|> +>>> + + +\<config multicolumn\><<< +\Configure{multicolumn} + {\let\sv:VBorder\VBorder + \let\VBorder\empty + \Configure{VBorder}{}{}{}{}% + } + {\let\VBorder\sv:VBorder} + {\ifmmode \else + \ifvmode\IgnorePar\fi + \fi \HCode{<div class="multicolumn" title="\HMultispan">}} + {\ifmmode \else + \ifvmode\IgnorePar\fi \EndP\fi \HCode{</div>} } +\def\gob:sp#1{#1} +>>> + + + + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{TeX EqAlign} +%%%%%%%%%%%%%%%%%%%% + + +\<mathml plain\><<< +\Configure{eqalignno} + {\HCode{<PARA><mtable class="eqalignno">}} + {\HCode{</mtable></PARA>}} + {\HCode{<mtr\Hnewline class="eqalignno">}} + {\HCode{</mtr>}} + {\HCode{<mtd \Hnewline class="eqalignno-\HCol">}} + {\HCode{</mtd>}} +\def\:eqalignno:{\Configure{noalign} + {\HCode{<mtr><mtd class="noalign" colspan="2">}}% + {\HCode{</mtd></mtr>}}} +>>> + + +\<mathml plain\><<< +\Configure{leqalignno} + {\HCode{<PARA><mtable class="leqalignno">}} + {\HCode{</mtable></PARA>}} + {\HCode{<mtr\Hnewline class="leqalignno">}} + {\HCode{</mtr>}} + {\HCode{<mtd \Hnewline class="leqalignno-\HCol">}} + {\HCode{</mtd>}} +\def\:leqalignno:{\Configure{noalign} + {\HCode{<mtr><mtd class="noalign" colspan="2">}}% + {\HCode{</mtd></mtr>}}} +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{halign} +%%%%%%%%%%%%%%%%%% + + +\<configure jsml tex4ht2\><<< +\Configure{embedded-halign}{}{} +>>> + + +%%%%%%%%%%%%%%%%%% +\chapter{To Be Inserted} +%%%%%%%%%%%%%%%%%% + + + +\<addr for Tag and Ref of Sec\><<< +\xdef\:cursec{|<section html addr|>}% +>>> + +%%%%%%%%%%%%%%%%%% +\section{HTML Head} +%%%%%%%%%%%%%%%%%% + +\<configure jsml tex4ht\><<< +\let\Link\M:Link \let\M:Link\:UnDef +\let\EndLink\M:EndLink \let\M:EndLink\:UnDef +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Bibliography and Equation References} +%%%%%%%%%%%%%%%%%% + + + +\<configure jsml latex\><<< +\def\@cite#1#2{% + \HCode{\add:description{added-description}{\a:speak:citation}}% + {#1\if@tempswa , #2\fi}} +\def\@biblabel#1{% + \HCode{<BREAK SIZE="small" />}% + \HCode{\add:description{added-description}{\a:speak:bib}}% + #1\HCode{<BREAK SIZE="small" />}} +>>> + +\<configure jsml latex\><<< +\NewConfigure{speak:citation}{1} +\Configure{speak:citation}{citation } +\NewConfigure{speak:bib}{1} +\Configure{speak:bib}{Bibliography entry}>>> + + + + +\<configure jsml-math amsmath\><<< +\Configure{eqref} + {\bgroup\let\tagform@\empty + \HCode{<span class="eqref" > + \add:description{added-description}{\a:speak:eqref}}} + {\HCode{</span>}\egroup} +>>> + +\<configure jsml-math amsmath\><<< +\NewConfigure{speak:eqref}{1} +\Configure{speak:eqref}{ equation } +>>> + + + + + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Cross Links} +%%%%%%%%%%%%%%%%%% + + +\<configure jsml tex4ht\><<< +\Configure{crosslinks}{ }{ }{next}{previous}{previous-tail}{front}{tail}{up} +\Configure{crosslinks+} + {\IgnorePar\EndP\HCode{|<show input line no|>% + <div class="crosslinks"><p class="noindent"> + \add:vdescription{begin-end}{\a:speak:crosslinks}}} + {\HCode{\add:vdescription{begin-end}{\b:speak:crosslinks} + </p></div>}\par\ShowPar} + {\IgnorePar\EndP\HCode{|<show input line no|>% + <div class="crosslinks"><p class="noindent"> + \add:vdescription{begin-end}{\a:speak:crosslinks}}} + {\HCode{\add:vdescription{begin-end}{\b:speak:crosslinks} + </p></div>}\par\ShowPar} +\:CheckOption{next} \if:Option + \Configure{next+} + {\ShowPar\par\noindent \HCode{<span class="next"> + \add:description{added-description}{\c:speak:crosslinks}}} + {\HCode{</span>}} +\fi +>>> + + +\<configure jsml tex4ht\><<< +\NewConfigure{speak:crosslinks}{3} +\Configure{speak:crosslinks} + {Navigation links} + {End navigation links} + {Navigation link} +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Sections} +%%%%%%%%%%%%%%%%%% + + +\<latex shared section config\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">\add:description{added-description} + {\a:speak:section}}\@seccntformat{section}% + \HCode{</span>}\fi } +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">\add:description{added-description} + {\a:speak:subsection}}\@seccntformat{subsection}% + \HCode{</span>}\fi } +|<latex speak section|> +>>> + + + +\<ams art,proc,book div\><<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else + \HCode{<span class="titlemark">% + \add:description{added-description} + {\a:speak:section}}\@ifundefined{sectionname}{}{% + \ignorespaces\sectionname\space}% + \@seccntformat{section}% + \HCode{</span>}\fi } +|<latex speak section|> +>>> + + + +\<latex speak section\><<< +\NewConfigure{speak:section}{1} +\Configure{speak:section}{section} +\NewConfigure{speak:subsection}{1} +\Configure{speak:subsection}{subsection} +>>> + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The equation Environment} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure jsml-math latex\><<< +\Configure{equation} + {\IgnorePar|<inline end-par comment|>\EndP + |<advance table number|>% + \HCode{<div class="display-math">% + \add:description{begin-math}{\a:speak:equation}% + <div class="equation">}\IgnorePar + |<math display in equation|>} + {\ifvmode \IgnorePar\fi\EndP + \HCode{</div>}% + \let\@eqnnum\empty + } + {\HCode{% + \add:description{end-math}{\b:speak:equation}% + </div>}% + \Tag{eq-\TableNo-num}{\theequation}% + |<try inline par|>} +>>> + + + +\<configure jsml-math latex\><<< +\NewConfigure{speak:equation}{2} +\Configure{speak:equation} + {<BREAK SIZE="medium"/>begin equation + \ifTag{eq-\TableNo-num}{\LikeRef{eq-\TableNo-num}}{}% + <BREAK SIZE="small"/> + } + {<BREAK SIZE="small"/>end equation \theequation + <BREAK SIZE="medium"/>} +>>> + + + +\<inline end-par comment\><<< +\ifvmode\else \HCode{<!--tex4ht:inline-->}\fi +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{AmsMath} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +\<configure jsml-math amsmath\><<< +\ifx \mathdisplay@@pop\:UnDef + \ifx \emdf@La\:UnDef + |<amsmath html-mml pre 2000|> + \else + |<amsmath html-mml jan 2000|> + \fi +\else + |<amsmath html-mml july 2000|> +\fi +>>> + + +\<amsmath html-mml july 2000\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi\EndP + |<advance table number|>% + \HCode{<div class="display-math">% + \add:description{begin-math}{\a:speak:equation}% + <div class="equation">}% + |<amsmath equation july 2000|>% + |<math display in equation|>% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</div>}% + \let\@eqnnum\empty + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{% + \add:description{end-math}{\b:speak:equation}% + </div>}% + \Tag{eq-\TableNo-num}{\theequation}% + |<return to prev table number|>% + \ShowPar\IgnoreIndent\par} +>>> + + + +\<amsmath html-mml july 2000\><<< +\Configure{equation*} + {\ifvmode \IgnorePar\fi\EndP + |<advance table number|>% + \HCode{<div class="display-math">% + \add:description{begin-math}{\csname + a:speak:equation*\endcsname}}% + |<amsmath equation-star july 2000|>% + |<math display in equation|>% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{\add:description{end-math}{\csname + b:speak:equation*\endcsname}</div>}% + |<return to prev table number|>% + \ShowPar\IgnoreIndent\par} +>>> + + +\<amsmath html-mml july 2000\><<< +\Configure{speak:equation} + {<BREAK SIZE="medium"/>begin equation + \ifTag{eq-\TableNo-num}{\LikeRef{eq-\TableNo-num}}{}% + <BREAK SIZE="small"/> + } + {<BREAK SIZE="small"/>end equation + \theequation<BREAK SIZE="medium"/>} +\NewConfigure{speak:equation*}{2} +\Configure{speak:equation*} + {<BREAK SIZE="medium"/>begin equation<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>end equation<BREAK SIZE="medium"/>} +>>> + + + +\<amsmath equation july 2000\><<< +\Configure{gather} + {\HCode{<div\Hnewline class="equation"><div + class="gather">}\IgnorePar + |<math display in equation|>} + {\HCode{</div></div>}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{</div><div>}\fi } + {} +>>> + + +\<amsmath equation-star july 2000\><<< +\Configure{gather*} + {\HCode{<div\Hnewline class="equation-star"><div + class="gather-star">}\IgnorePar + |<math display in equation|>} + {\HCode{</div></div>}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{</div><div>}\fi } + {} +>>> + + +\<math display in equation\><<< +\Configure{$$} + {\Configure{@math}{|<block display|>% + class="equation"}\IgnorePar\EndP\DviMath} + {\EndDviMath\EndP} + {\DisplayMathtrue}% +>>> + + + + + + + + + + + +\<configure html-mml amsmath\><<< +\Configure{@begin} + {split} + {\let\tagform@=\:gobble } +>>> + + + + + +\<configure jsml-math amsmath\><<< +\Configure{split} + {|<advance table number|>% + \HCode{<mtable class="split">|<start split note|>}} + {\ifvmode\IgnorePar\fi + \Tag{split-\TableNo}{\HRow:s}% + \HCode{|<end split note|></mtable>}% + |<return to prev table number|>} + {\HCode{<mtr\Hnewline>}% + \xdef\HRow:s{\HRow}% + } + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline class="split-side" + title="implicit-baseline" >% + |<split note sub eq note|>}% + } + {\HCode{</mtd>}} +>>> + + +\<start split note\><<< +\add:vdescription{begin-array}{<BREAK SIZE="medium"/>begin + \ifTag{split-\TableNo}{\LikeRef{split-\TableNo}}{} + sub equations<BREAK SIZE="small"/>}% +>>> + + +\<end split note\><<< +\add:vdescription{end-array}{<BREAK SIZE="small"/>end sub equations<BREAK SIZE="medium"/>}% +>>> + +\<split note sub eq note\><<< +\add:vdescription{begin-end}{<BREAK SIZE="small"/>% + \ifnum \HCol=1 left \else right \fi + |<ord row|> sub equation<BREAK SIZE="small"/>}% +>>> + +\<configure jsml-math amsmath\><<< +\ConfigureEnv{multline} + {\bgroup |<math display in equation|>} + {\egroup} + {}{} +\ConfigureEnv{multline*} + {\bgroup |<math display in equation|>} + {\egroup} + {}{} +>>> + +\<configure jsml-math amsmath\><<< +\Configure{multline} + {|<advance table number|>% + |<new row counter|>% + \HCode{<div\Hnewline class="display-math">% + |<multline begin note|>% + <mtable>}} + {\Tag{multline-\TableNo}{\hrow:s}% + \HCode{</mtable>|<multline end note|></div>}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr><mtd\Hnewline class="multline-1">% + |<multline row note|>}} + {\xdef\hrow:s{\HRow}\HCode{</mtd></mtr>}} + {\HCode{</mtd><mtd class="multline-2">}} + {} +\Configure{multline-num} + {\Tag{multline-\TableNo-num}{\theequation}\let\tagform@\:gobble} + {} +>>> + + +\<configure jsml-math amsmath\><<< +\Configure{multline*} + {|<advance table number|>% + |<new row counter|>% + \HCode{<div\Hnewline class="display-math">% + <mtable class="multline-star">% + |<multline-star begin note|>}} + {\Tag{multline-\TableNo}{\hrow:s}% + \HCode{|<multline-star end note|></mtable></div>}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr\Hnewline><mtd>% + |<multline row note|>}} + {\xdef\hrow:s{\HRow}\HCode{</mtd></mtr>}} +>>> + + + + + +\<multline begin note\><<< +\add:vdescription{begin-math}{% + <BREAK SIZE="medium"/>% + begin equation + \ifTag{multline-\TableNo-num}{\LikeRef{multline-\TableNo-num}}{} + with + \ifTag{multline-\TableNo}{\LikeRef{multline-\TableNo}}{} + lines<BREAK SIZE="small"/>}% +<div class="multline">% +>>> + +\<multline-star begin note\><<< +\add:vdescription{begin-math}{% + <BREAK SIZE="medium"/>% + begin equation with + \ifTag{multline-\TableNo}{\LikeRef{multline-\TableNo}}{} + lines<BREAK SIZE="small"/>}% +<div class="multline-star">% +>>> + + +\<multline end note\><<< +</div>% +\add:vdescription{end-math}{end equation + <BREAK SIZE="small"/>% + \ifTag{multline-\TableNo-num}{\LikeRef + {multline-\TableNo-num}}{}% + <BREAK SIZE="medium"/>% +}% +>>> + +\<multline-star end note\><<< +</div>% +\add:vdescription{end-math}{% + <BREAK SIZE="small"/>end equation<BREAK SIZE="medium"/>}% +>>> + + +\<multline row note\><<< +\add:vdescription{begin-end}{% + <BREAK SIZE="small"/>|<ord row|> line<BREAK SIZE="small"/>}% +>>> + +\<advance multline count\><<< +\HAdvance\HRow by 1 +>>> + + + + +\<configure jsml-math amsmath\><<< +\ConfigureEnv{gather} + {\bgroup |<math display in equation|>} + {\egroup} + {}{} +\ConfigureEnv{gather*} + {\bgroup |<math display in equation|>} + {\egroup} + {}{} +>>> + + + +\<configure jsml-math amsmath\><<< +\Configure{gather} + {|<advance table number|>% + |<new row counter|>% + \HCode{<div\Hnewline class="display-math">% + |<begin gather note|>% + <mtable class="gather">% + }} + {\HCode{</mtable>|<end gather note|>% + </div>}% + \Tag{gather-\TableNo}{\hrow:s}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr>% + |<row gather note|>% + }} + {\xdef\hrow:s{\HRow}\HCode{</mtr>}} + {\HCode{\Hnewline<mtd |<gather td class|> >}% + \ifnum \HCol>1 \let\tagform@\:gobble \fi + } + {\HCode{</mtd>}} +>>> + +\<begin gather note\><<< +\add:vdescription{begin-math}{<BREAK SIZE="small"/>begin group of + \ifTag{gather-\TableNo}{\LikeRef{gather-\TableNo}}{} + equations<BREAK SIZE="small"/>}% +>>> + +\<end gather note\><<< +\add:vdescription{end-math}{<BREAK SIZE="small"/>end equations<BREAK SIZE="small"/>}% +>>> + +\<row gather note\><<< +\add:vdescription{begin-end}{<BREAK SIZE="small"/>|<ord row|> equation<BREAK SIZE="small"/>}% +>>> + + +\<configure jsml-math amsmath\><<< +\Configure{gather*} + {|<advance table number|>% + |<new row counter|>% + \HCode{<div\Hnewline class="display-math">% + |<start gather star note|>% + <mtable class="gather-star">% + }} + {\HCode{</mtable>|<end gather star note|>% + </div>}% + \Tag{gather-\TableNo}{\hrow:s}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr>% + |<line gather star note|>% + }} + {\xdef\hrow:s{\HRow}\HCode{</mtr>}} + {\HCode{\Hnewline<mtd |<gather td class|> >}} + {\HCode{</mtd>}} +>>> + +\<start gather star note\><<< +\add:vdescription{begin-math}{<BREAK SIZE="small"/>begin group of + \ifTag{gather-\TableNo}{\LikeRef{gather-\TableNo}}{} + equations<BREAK SIZE="small"/>}% +>>> + + +\<line gather star note\><<< +\add:vdescription{begin-math}{% + <BREAK SIZE="small"/>|<ord row|> equation<BREAK SIZE="small"/>}% +>>> + + + + + +\<end gather star note\><<< +\add:vdescription{end-math}{% + <BREAK SIZE="small"/>end equations<BREAK SIZE="small"/>}% +>>> + +<BREAK SIZE="small"/> + +\<configure jsml-math amsmath\><<< +\Configure{gathered} + {|<advance table number|>% + |<new row counter|>% + \HCode{<div\Hnewline class="display-math">% + |<start gathered note|>% + <mtable class="gather">% + }} + {\HCode{</mtable>|<end gathered note|>% + </div>}% + \Tag{gather-\TableNo}{\hrow:s}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr>% + |<start gathered row|>% + }} + {\xdef\hrow:s{\HRow}\HCode{</mtr>}} + {\HCode{\Hnewline<mtd |<gather td class|> >}% + \ifnum \HCol>1 \let\tagform@\:gobble \fi + } + {\HCode{</mtd>}} +>>> + + +\<start gathered note\><<< +\add:vdescription{begin-math}{<BREAK SIZE="small"/>begin group of + \ifTag{gather-\TableNo}{\LikeRef{gather-\TableNo}}{} + equations<BREAK SIZE="small"/>} +>>> + + + +\<end gathered note\><<< +\add:vdescription{end-math}{% + <BREAK SIZE="small"/>end equations<BREAK SIZE="small"/>}% +>>> + + +\<start gathered row\><<< +\add:vdescription{begin-end}{% + <BREAK SIZE="small"/>|<ord row|> equation<BREAK SIZE="small"/>}% +>>> + + +\<gather td class\><<< +\ifnum \HCol=1 class="col-\HCol" +\else class="content-less" title="col-\HCol" +\fi +>>> + + +\<configure jsml-math amsmath\><<< +\Configure{subarray} + {|<advance table number|>% + |<new row counter|>% + \HCode{<mtable class="subarray\if c\Hlcr-c\fi">% + \add:vdescription{begin-array}{\a:speak:subarray}% + }} + {\HCode{\add:vdescription{end-array}{\b:speak:subarray}% + </mtable>}% + \Tag{subarray-\TableNo}{\hrow:s}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr><mtd>% + \add:vdescription{begin-end}{\c:speak:subarray}% + }} + {\xdef\hrow:s{\HRow}\HCode{</mtd></mtr>}} +>>> + +\<configure jsml-math amsmath\><<< +\NewConfigure{speak:subarray}{3} +|<config speak:subarray|> +>>> + +\<config speak:subarray\><<< +\Configure{speak:subarray} + {<BREAK SIZE="small"/>begin sub array with + \ifTag{subarray-\TableNo}{\LikeRef{subarray-\TableNo}}{} + rows<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>end sub array<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>|<ord row|> row<BREAK SIZE="small"/>} +>>> + + + + + + + + + + + + +\<configure jsml-math amsmath\><<< +\Configure{substack} + {\bgroup + \Configure{speak:subarray} + {<BREAK SIZE="small"/>begin sub stack with + \ifTag{subarray-\TableNo}{\LikeRef{subarray-\TableNo}}{} + entries<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>end sub stack<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>|<ord row|> + entry<BREAK SIZE="small"/>} + } + {\egroup} +>>> + + + + + + + + + + + + + + + +\<configure jsml-math amsmath\><<< +\Configure{smallmatrix} + {|<advance table number|>% + |<new row counter|>% + \HCode{<PARA><mtable class="smallmatrix">}% + \HCode{\add:vdescription{begin-array}{\a:speak:smallmatrix}}} + {\Tag{smallmatrix-\TableNo}{\hrow:s}% + \HCode{|<show input line no|>% + \add:vdescription{end-array}{\b:speak:smallmatrix}}% + \ifvmode \IgnorePar\fi + \HCode{</mtable></PARA>}% + |<return to prev row counter|>% + |<return to prev table number|>} + {\HCode{<mtr>}\c:speak:smallmatrix}% + {\xdef\hrow:s{\HRow}\HCode{</mtr>}}% + {\HCode{<mtd>}% + \e:speak:smallmatrix \HCode{<div>}} + {\HCode{</div>}\f:speak:smallmatrix + \HCode{</mtd>\Hnewline}} +>>> + + + + + + + + + +\<plain,latex mathml\><<< +\NewConfigure{speak:smallmatrix}{6} +\Configure{speak:smallmatrix} + {begin matrix with + \ifTag{smallmatrix-\TableNo}{\LikeRef{smallmatrix-\TableNo}}{} + rows} + {end matrix} + {|<begin table row note|>} + {|<end table row note|>} + {|<begin table cell note|>} + {|<end table cell note|>} +>>> + +\<configure jsml-math amsmath\><<< +\def\:tempc#1#2{% + \ConfigureEnv{#1} + {\def\end:al:env{}\ifmmode\else + \ifvmode\else \def\end:al:env{\par\ShowPar\IgnoreIndent}\fi\fi} + {\end:al:env } + {}{}% + \Configure{#1} + {\IgnorePar + \ifvmode \EndP \else \EndP \HCode{<!--tex4ht:inline-->}\fi + \ifmathml + \Tg<span class="mrow">\def\end:mathalign{\Tg</span>}% + \else + \DviMath + \def\end:mathalign{\EndDviMath \DisplayMathfalse}% + \DisplayMathtrue + \fi + |<advance table number|>% + |<new row counter|>% + \HCode{<div\Hnewline class="display-math"><mtable>% + \add:description{begin-array}{\a:speak:align}% + }} + {\HCode{% + \add:description{end-array}{\b:speak:align}% + </mtable></div>}% + \Tag{align-\TableNo}{\hrow:s}% + |<return to prev row counter|>% + |<return to prev table number|>\end:mathalign } + {\HCode{<mtr>|<align eq note|>}} + {\HCode{</mtr>}\ifst@rred\else + \Tag{align-\TableNo-\HRow}{\theequation}% + \fi \xdef\hrow:s{\HRow}} + {\HCode{<mtd\Hnewline + class="align-\ifnum \HCol>\maxfields@ label\else + \ifodd\HCol\space odd\else even\fi + \fi">}% + \ifnum \HCol>\maxfields@ \let\tagform@\:gobble \fi + } + {\HCode{</mtd>}} +} +\:tempc{align}{align} +\:tempc{alignat}{alignat} +\:tempc{xalignat}{xalignat} +\:tempc{xxalignat}{xxalignat} +\:tempc{flalign}{flalign} +\:tempc{align*}{align-star} +\:tempc{alignat*}{alignat-star} +\:tempc{xalignat*}{xalignat-star} +\:tempc{flalign*}{flalign-star} +>>> + + +\<align eq note\><<< +\add:description{begin-end}{\c:speak:align}% +>>> + + +\<configure jsml-math amsmath\><<< +\NewConfigure{speak:align}{3} +\Configure{speak:align} + {<BREAK SIZE="small"/>begin + \ifTag{align-\TableNo}{\LikeRef{align-\TableNo}}{} + aligned equations<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>end aligned equations<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>\ifst@rred |<ord row|> equation + \else + equation number \ifst@rred\else + \ifTag{align-\TableNo-\HRow}% + {\LikeRef{align-\TableNo-\HRow}}{} + \fi + \fi <BREAK SIZE="small"/>% + } +>>> + + +%%%%%%%%%%%%% +\subsection{Embedded Text} +%%%%%%%%%%%%% + + + +\<configure jsml-math latex\><<< +\def\AA:text#1{|<config start mtext|>} +\def\BB:text{|<config end mtext|>} +>>> + + +\<config start mtext\><<< +\mtexttrue +\HCode{ <span\Hnewline class="mstyle-#1">}% + |<start mtext space|>\PauseMathClass + |<config math within mtext|>% +>>> + + +\<config end mtext\><<< +\mtextfalse\EndPauseMathClass|<end mtext space|>\HCode + {</span>}% +>>> + +\<config math within mtext\><<< +\Configure{$}% + {\EndPauseMathClass \HCode{<span \Hnewline + class="text-math">}\mtextfalse + |<end mtext space|>}% + {\HCode{</span>}|<start mtext space|>\PauseMathClass \mtexttrue}% + {}% +>>> + + + +\<start mtext space\><<< +\ht:special{t4ht@,&\#x00A0;}% +>>> +\<end mtext space\><<< +\ht:special{t4ht@,}% +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Fonts} +%%%%%%%%%%%%%%%%%% + + + +\<configure jsml-math fontmath\><<< +\def\bold:version{bold} +\Configure{mathbf}% + {\bgroup \HCode{<span class="mathvariant-bold">% + <BREAK SIZE="small"/>% + \add:vdescription{font}{bold}<PROS PITCH="-10" >}}% + {\HCode{</PROS><BREAK SIZE="small"/></span>}\egroup }% +\Configure{mathit}% + {\bgroup \HCode{<span + class="mathvariant-\ifx + \bold:version\math@version bold-\fi italic">}}% + {\HCode{</span>}\egroup }% +\Configure{mathrm}% + {\bgroup \HCode{<span class="mathvariant-normal">}}% + {\HCode{</span>}\egroup }% +\Configure{mathsf}% + {\bgroup \HCode{<span + class="mathvariant-\ifx + \bold:version\math@version bold-\fi sans-serif">}}% + {\HCode{</span>}\egroup }% +\Configure{mathtt}% + {\bgroup \HCode{<span class="mathvariant-monospace">}}% + {\HCode{</span>}\egroup }% +>>> + +%%%%%%%%%%%%%%%%%% +\section{Theorems} +%%%%%%%%%%%%%%%%%% + + +\<configure jsml latex\><<< +\Configure{newtheorem} + {\ifvmode\IgnorePar\fi\EndP + \HCode{<BREAK SIZE="medium"/>% + <PARA><div class="newtheorem">}\par\noindent + \HCode{<SENT><PROS PITCH="-10" ><span class="theorem-head">}} + {\HCode{</span></PROS></SENT><BREAK SIZE="small"/>}} + {\EndP\IgnorePar\HCode{</div></PARA><BREAK SIZE="medium"/>}\ShowPar\par} +>>> + +\<configure jsml acm-proc-article-sp\><<< +\Configure{proof} + {\ifvmode\IgnorePar\fi\EndP + \HCode{<BREAK SIZE="medium"/>% + <PARA><div class="newtheorem" title="proof">}\par\noindent + \HCode{<SENT><PROS PITCH="-10" ><span class="theorem-head">}} + {\HCode{</span></PROS></SENT><BREAK SIZE="small"/>}} + {\EndP\IgnorePar\HCode{</div></div></PARA><BREAK SIZE="medium"/>}\ShowPar\par} +>>> + + +\<configure jsml amsthm\><<< +|<shared ams thm/cls|> +>>> + +\<ams art,proc,book\><<< +\ifx \deferred@thm@head\:UnDef\else + |<shared ams thm/cls|> +\fi +>>> + + +\<shared ams thm/cls\><<< +\Configure{proof} + {\ifvmode \IgnorePar \fi \EndP + \HCode{<div class="newtheorem" title="proof">}\par\ShowPar + \HCode{<span class="theorem-head">}\IgnorePar} + {\HCode{</span>}\ShowPar} + {\ifvmode \IgnorePar \fi \EndP \HCode{</div>}\par} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Others} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%% +\section{Boxed} +%%%%%%%%%%%%%%%%%% + +\<configure jsml-math amsmath\><<< +\Configure{boxed} + {\HCode{<span class="boxed">% + \add:description{begin-end}{\a:speak:boxed}}} + {\HCode{\add:description{begin-end}{\b:speak:boxed}</span>}} +>>> + + +\<configure jsml-math amsmath\><<< +\NewConfigure{speak:boxed}{2} +\Configure{speak:boxed} + {<BREAK SIZE="small"/>begin boxed<BREAK SIZE="small"/>} + {<BREAK SIZE="small"/>end boxed<BREAK SIZE="small"/>} +>>> + + + +%%%%%%%%%%%%% +\subsection{To Do} +%%%%%%%%%%%%% + +\begin{itemize} +\item +How do we deal with accents (e.g., \verb+ M\"obius+) +\end{itemize} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<plain,fontmath math\><<< +\Configure{MathClass}{0}{*}{<span class="mi"\Hnewline>}% + {</span>}{} +\Configure{MathClass}{1}{*}{<span class="before-mo-op" + title="speech-extra"> + </span><mo class="mo-op"\Hnewline + >}{</mo><span class="after-mo-op" + title="speech-extra"> </span>}{} +\Configure{MathClass}{2}{*}{<mo class="mo-bin">}{</mo>}{} +\Configure{MathClass}{3}{*}{<mo class="mo-rel">}{</mo>}{} +\:CheckOption{mathml-} \if:Option + \Configure{MathClass}{4}{*}{<mo class="mo-open">} + {</mo>}{} + \Configure{MathClass}{5}{*}{<mo class="mo-close">} + {</mo>}{} +\else + \Log:Note{for sources failing to produce + clean mathml code, try the command line option `mathml-'}% + \Configure{MathClass}{4}{*}{<span class="mrow"><mo class="mo-open">} + {</mo><span class="mrow">}{} + \Configure{MathClass}{5}{*}{</span><mo class="mo-close">} + {</mo></span>}{} +\fi +\Configure{MathClass}{6}{*}{<mo class="mo-punc">}{</mo>}{} +\Configure{MathClass}{7}{*}{<span class="mn">}{</span>} + {0123456789} +\Configure{FormulaClass}{0}{}{}{} +\Configure{FormulaClass}{1}{}{}{} +\Configure{FormulaClass}{2}{}{}{} +\Configure{FormulaClass}{3}{}{}{} +\Configure{FormulaClass}{4}{}{}{} +\Configure{FormulaClass}{5}{}{}{} +\Configure{FormulaClass}{6}{}{}{} +>>> + + + + + +\<configure jsml-math fontmath\><<< +\def\:tempd#1#2{% + \expandafter\def\csname #1\endcsname{\mathchar"13#2\relax}% + \MathSymbol\mathop{#1}% + \expandafter\def\csname #1:limits\endcsname{\expandafter + \:same \math:sym\mathop{#1}\limits}% + \expandafter\def\csname #1:nolimits\endcsname{\expandafter + \:same \math:sym\mathop{#1}\nolimits}% + \expandafter\edef\csname n:#1:\endcsname{\noexpand\ifDisplayMath + \noexpand\expandafter \expandafter\noexpand \csname #1:limits\endcsname + \noexpand\else \noexpand\expandafter + \expandafter\noexpand + \csname #1:nolimits\endcsname\noexpand\fi}% + \expandafter\pend:def\csname n:#1:\endcsname{\ifDisplayMath + \mathop:prefix{mathsize-big}\fi}% +} +\:tempd{bigcap}{54} +\:tempd{bigcup}{53} +\:tempd{bigodot}{4A} +\:tempd{bigoplus}{4C} +\:tempd{bigotimes}{4E} +\:tempd{bigsqcup}{46} +\:tempd{biguplus}{55} +\:tempd{bigvee}{57} +\:tempd{bigwedge}{56} +\:tempd{coprod}{60} +\:tempd{intop}{52} +\:tempd{ointop}{48} +\:tempd{prod}{51} +\:tempd{sum}{50} +>>> + +%%%%%%%%%%%%% +\subsection{amsopname} +%%%%%%%%%%%%% + + + + +\<configure jsml-math amsopn\><<< +\Configure{qopname} + {\Configure{mathop}{*} + {<mo class="mo-qopname"> <span>} + {</span> </mo>} + {}} +>>> diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathjax.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathjax.tex new file mode 100644 index 00000000000..79b3ab8fe03 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathjax.tex @@ -0,0 +1,190 @@ +% $Id: tex4ht-mathjax.tex 904 2021-04-16 20:30:30Z karl $ +% compile: latex tex4ht-mathjax +% +% Copyright 2018-2021 TeX Users Group +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{mathjax-latex-4ht} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Michal Hoftich}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +\<mathjax-latex-4ht\><<< +% mathjax-latex-4ht.sty (|version), generated from |jobname.tex +% Copyright 2018-2021 TeX Users Group +|<TeX4ht copywrite|> +|<required packages|> +|<defined commands|> +\AtBeginDocument{% +|<configurations|> +} +\endinput +>>> + +\<required packages\><<< +\RequirePackage{etoolbox,expl3,environ} +>>> + +The \verb|\alteqtoks| command saves the used command in HTML. It uses detokenize command +to insert arguments verbatim. The side effect of this is that detokeize inserts space +after each control sequence. This is completely valid TeX code, but earlier versions of +MathJax didn't like that, rendering resulted in error. + +Fortunatelly, MathJax 3 supports these spaces, so we can remove regular expressions for space handling. +The original code was this: + +% % convert \ { to \:{ +% \regex_replace_all:nnN { \x{5C} \x{20} \x{7B} } { \x{5C} \x{3A} \x{7B} } \l_tmpa_tl +% % delete spaces before left brackets +% \regex_replace_all:nnN { \x{20} \x{7B} } { \x{7B} } \l_tmpa_tl +% % replace \\:{ back to \\ { -- this can be introduced by the previous regex +% \regex_replace_all:nnN { \x{5C} \x{5C} \x{3A} \x{7B} } { \x{5C} \x{5C} \x{20} \x{7B} } \l_tmpa_tl + + +We still use regula expressions to escape invalid XML characters to entities, so it works only with LaTeX. + +\<defined commands\><<< +\ExplSyntaxOn +\cs_new_protected:Npn \alteqtoks #1 +{ + \tl_set:Nx \l_tmpa_tl {\detokenize{#1}} + % % replace < > and & with xml entities + \regex_replace_all:nnN { \x{26} } { & } \l_tmpa_tl + \regex_replace_all:nnN { \x{3C} } { < } \l_tmpa_tl + \regex_replace_all:nnN { \x{3E} } { > } \l_tmpa_tl + \tl_set:Nx \l_tmpb_tl{ \l_tmpa_tl } + \HCode{\l_tmpb_tl} +} +\ExplSyntaxOff + +>>> + +Provide configuratio for MathJax + +\<defined commands\><<< +\NewConfigure{MathJaxConfig}{1} +>>> + +The following commands are used for patching of the standard math commands and +environments. They will then keep the LaTeX code unchanged. + +\<defined commands\><<< + +\long\def\AltlMath#1\){\expandafter\alteqtoks{\(#1\)}\)} +\long\def\AltlDisplay#1\]{\alteqtoks{\[#1\]}\]} +\long\def\AltMathOne#1${\alteqtoks{\(#1\)}$} +% this seems a bit hacky -- we need to skip some code inserted at the +% beginning of each display math +\long\def\AltlDisplayDollars\fi#1$${\alteqtoks{\[#1\]}$$} + +\newcommand\VerbMathToks[2]{% + \alteqtoks{\begin{#2} + #1 + \end{#2}}% +} +\newcommand\VerbMath[1]{% +\ifcsdef{#1}{% + \RenewEnviron{#1}{% + \NoFonts\expandafter\VerbMathToks\expandafter{\BODY}{#1}\EndNoFonts% + } +}{}% +} +>>> + +The \verb|\fixmathjaxtoc| command is used for patching commands which should +keep their verbatim appearance in the TOC + +\<defined commands\><<< +\def\fixmathjaxtoc#1{\Configure{writetoc}{\def#1{\detokenize{#1}}}} +>>> + +Some math commands cause issues when used in sections, so we will deactivate them. + +\<defined commands\><<< +\def\fixmathjaxsec#1{\def#1{\detokenize{#1}}} +>>> + +Require verbatim math environments. + +\<configurations\><<< +\VerbMath{subarray} +\VerbMath{smallmatrix} +\VerbMath{matrix} +\VerbMath{pmatrix} +\VerbMath{bmatrix} +\VerbMath{Bmatrix} +\VerbMath{vmatrix} +\VerbMath{Vmatrix} +\VerbMath{cases} +\VerbMath{subequations} +\VerbMath{aligned} +\VerbMath{alignedat} +\VerbMath{gathered} +\VerbMath{gather} +\VerbMath{gather*} +\VerbMath{alignat} +\VerbMath{alignat*} +\VerbMath{xalignat} +\VerbMath{xalignat*} +\VerbMath{xxalignat} +\VerbMath{align} +\VerbMath{align*} +\VerbMath{flalign} +\VerbMath{flalign*} +\VerbMath{split} +\VerbMath{multline} +\VerbMath{multline*} +\VerbMath{equation} +\VerbMath{equation*} +\VerbMath{math} +\VerbMath{displaymath} +\VerbMath{eqnarray} +\VerbMath{eqnarray*} +>>> + +It is necessary to reset env configurations for multiline +environments, because default TeX4ht configurations turn +them into pictures. + +\<configurations\><<< +\ConfigureEnv{gather}{}{}{}{} +\ConfigureEnv{gather*}{}{}{}{} +\ConfigureEnv{multline}{}{}{}{} +\ConfigureEnv{multline*}{}{}{}{} +>>> + + +Fixes for tables of contents. + +\<configurations\><<< +\fixmathjaxsec\left +\fixmathjaxsec\right +\fixmathjaxtoc\int +\fixmathjaxtoc\, +\fixmathjaxtoc\sin +\fixmathjaxtoc\cos +\fixmathjaxtoc\tan +\fixmathjaxtoc\arcsin +\fixmathjaxtoc\arccos +\fixmathjaxtoc\arctan +\fixmathjaxtoc\csc +\fixmathjaxtoc\sec +\fixmathjaxtoc\cot +\fixmathjaxtoc\sinh +\fixmathjaxtoc\cosh +\fixmathjaxtoc\tanh +\fixmathjaxtoc\coth +\fixmathjaxtoc\log +\fixmathjaxtoc\ln +\fixmathjaxtoc\sum +\fixmathjaxtoc\( +\fixmathjaxtoc\) +>>> diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathltx.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathltx.tex new file mode 100644 index 00000000000..6890d0091f8 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathltx.tex @@ -0,0 +1,4149 @@ +% $Id: tex4ht-mathltx.tex 184 2016-07-04 17:35:09Z karl $ +% compile 3 times: latex tex4ht-mathltx +% or xhlatex tex4ht-mathltx "html,3,sections+" +% +% Copyright 2009-2016 TeX Users Group +% Copyright 2005-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{mathltx,html-mltx} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Constructs} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Background} +%%%%%%%%%%%%%%%%%% + +\Link[http://www.math.union.edu/\string + ~dpvc/jsMath/welcome.html]{}{}jsmath\EndLink + + +\begin{verbatim} +<SCRIPT + SRC="http://www.math.union.edu/~dpvc/jsMath/jsMath/jsMath.js"></SCRIPT> +<NOSCRIPT> +<DIV STYLE="color:#CC0000; text-align:center"> +<B>Warning: <A HREF="http://www.math.union.edu/locate/jsMath">jsMath</A> +requires JavaScript to process the mathematics on this page.<BR> +If your browser supports JavaScript, be sure it is enabled.</B> +</DIV> +<HR> +</NOSCRIPT> + +<DIV CLASS="math"> +\left(a^b\right) +</DIV> + + +<STYLE TYPE="text/css"> + .math {font-size: 67%;} +</STYLE> + + <SPAN CLASS="math">f(u)</SPAN> + +\end{verbatim} + +\begin{verbatim} +htlatex try "xhtml,mathltx" " -cmozhtf" +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The equation Environment} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<mathltx latex\><<< +\let\A:equation|=\a:equation +\let\B:equation|=\b:equation +\let\C:equation|=\c:equation +\Configure{equation} + {\A:equation|<math display in equation|>} + {\B:equation}{\C:equation} +>>> + +\<configure html-mltx latex\><<< +\Configure{equation} + {\IgnorePar|<inline end-par comment|>\EndP + \HCode{<table class="equation"><tr><td>}\IgnorePar + |<math display in equation|>} + {\ifvmode \IgnorePar\fi\EndP\HCode{</td><td class="eq-no">}} + {\HCode{</td></tr></table>}|<try inline par|>} +\Css{.equation td{text-align:center; vertical-align:middle; }} +\Css{td.eq-no{ width:5\%; }} +\Css{table.equation { width:100\%; } } +>>> + +\<math display in equation\><<< +\csname a:equation\string$\string$\endcsname +>>> + +\<mathltx latex\><<< +\NewConfigure{equation$$}{1} +\Configure{equation$$} + {\Configure{$$} + {\Configure{@math}{div}\IgnorePar\EndP\DviMath} + {\EndDviMath\EndP} + {\DisplayMathtrue}% + } +>>> + + + + +\<block display\><<< +display="block" +>>> + + +\<inline display\><<< +display="inline" +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{AmsMath} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<amsmath mathltx\><<< +\Configure{equation} + {\Configure{gather} + {\HCode{<mtable\Hnewline + \mml:class="equation"><mtr><mtd>}\IgnorePar } + {\HCode{</mtd></mtr></mtable>}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{</mtd><mtd>}\fi } + {} + }{}{} +\Configure{equation*} + {\Configure{gather*} + {\HCode{<mtable\Hnewline + \mml:class="equation-star"><mtr><mtd>}\IgnorePar } + {\HCode{</mtd></mtr></mtable>}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{</mtd><mtd>}\fi } + {} + }{} +\Css{.equation-star td{text-align:center; }} +\Css{table.equation-star { width:100\%; }} +>>> + + + +\<amsmath html-mltx pre 2000\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="equation"><tr><td>}% + |<amsmath equation pre 2000|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td><td class="eq-no">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \IgnoreIndent\par} +\Configure{equation*} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="equation-star"><tr><td>}% + |<amsmath equation pre 2000|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \IgnoreIndent\par} +>>> + + +\<amsmath html-mltx jan 2000\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="EQUATION"><tr><td>}% + |<amsmath equation jan 2000|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td><td class="eq-no">}% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td></tr></table>}% + \IgnoreIndent\par} +\Configure{equation*} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="EQUATION"><tr><td>}% + |<amsmath equation jan 2000|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td></tr></table>}% + \IgnoreIndent\par} +>>> + + +\<amsmath html-mltx july 2000\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<table class="equation"><tr><td>}% + |<amsmath equation july 2000|>% + |<math display in amsmath equation|>% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td><td class="eq-no">}% + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \ShowPar\IgnoreIndent\par} +\Configure{equation*} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<table class="equation-star"><tr><td>}% + |<amsmath equation july 2000|>% + |<math display in amsmath equation|>% + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \ShowPar\IgnoreIndent\par} +>>> + + + +\<math display in amsmath equation\><<< +\csname a:equation\string$\string$\endcsname +>>> + +\<configure html-mltx amsmath\><<< +\Configure{equation$$} + {\Configure{$$} + {\IgnorePar \Configure{@math}{div}\EndP\DviMath + \HCode{\string\begin{equation}}} + {\HCode{\string\end{equation}}\EndDviMath\EndP} + {\DisplayMathtrue}% + } +>>> + + +\<amsmath equation jan 2000\><<< +|<amsmath equation july 2000|>% +>>> + + + + + + + +\<amsmath equation july 2000\><<< +\Configure{gather} + {} + {} + {} + {} + {} + {}% +>>> + +\<amsmath equation pre 2000\><<< +\Configure{$$}{}{}{}% +\Configure{gather} + {\Configure{$$} + {\Configure{@math}{\mml:class="equation"}\IgnorePar\EndP\DviMath} + {\EndDviMath\EndP}% + {}% + \IgnorePar + }{}{}{}{}{} +>>> + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Mathltx} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%% +\section{?????} +%%%%%%%%%%%%%%%%% + + + +\<configure mathltx Preamble\><<< +\ifx \a:mathltx\:UnDef + \NewConfigure{mathltx}{1} + \Configure{mathltx}{} +\fi +\def\mml:class{class} +>>> + + +\<plain,latex mathltx\><<< +|<nolimit functions|> +|<limit functions|> +>>> + + +\<plain,latex mathltx\><<< +\let\A:displaylines|=\a:displaylines +\let\B:displaylines|=\b:displaylines +\let\C:displaylines|=\c:displaylines +\let\D:displaylines|=\d:displaylines +\Configure{displaylines} + {\ifmmode + \def\A:displaylines{\HCode{<mtable + \mml:class="displaylines">}}% + \def\B:displaylines{\HCode{</mtable>}}% + \def\C:displaylines{\HCode{<mtr\Hnewline + \mml:class="displaylines"><mtd>}}% + \def\D:displaylines{\HCode{</mtd></mtr>}}% + \fi + \A:displaylines} + {\B:displaylines} {\C:displaylines}{\D:displaylines} +>>> + + + +\<mathltx m:env\><<< +\def\m:env#1{\HCode{<mtable + \mml:class="#1"><mtr><mtd>}% + \def\endm:env{\HCode + {</mtd></mtr></mtable>}}} +>>> + + +\<amstex.tex mathltx\><<< +\Configure{pmatrix} + {\bgroup\m:env{pmatrix}} + {\endm:env\egroup} +\Configure{multline} + {\HCode{<mtable\mml:class="multline">}} {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline\mml:class="multline"><mtd>}}{\HCode{</mtd></mtr>}} +\Configure{smallmatrix} + {\HCode{<mtable\mml:class="smallmatrix">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline\mml:class="smallmatrix">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline\mml:class="smallmatrix">}} + {\HCode{</mtd>}} +\Configure{bmatrix} + {\bgroup\m:env{bmatrix}} + {\endm:env\egroup} +\Configure{vmatrix}{\bgroup\m:env{vmatrix}}{\endm:env\egroup} +\Configure{Vmatrix}{\bgroup\m:env{Vmatrix}}{\endm:env\egroup} +\Configure{aligned} + {\HCode{<mtable\mml:class="aligned">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline\mml:class="aligned">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline\mml:class="aligned">}} + {\HCode{</mtd>}} +\Configure{xalignat} + {\HCode{<mtable\mml:class="xalignat">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="xalignat">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline \mml:class="xalignat">}} + {\HCode{</mtd>}} +\Configure{xxalignat} + {\HCode{<mtable \mml:class="xxalignat">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="xxalignat">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline \mml:class="xxalignat">}} + {\HCode{</mtd>}} +\Configure{alignedat} + {\HCode{<mtable \mml:class="alignedat">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="alignedat">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline \mml:class="alignedat">}} + {\HCode{</mtd>}} +\Configure{gathered} + {\HCode{<mtable \mml:class="gathered">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="gathered">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline \mml:class="gathered">}} + {\HCode{</mtd>}} +>>> + + +\<mathltx\><<< +% mathltx.4ht (|version), generated from |jobname.tex +% Copyright 2009-2014 TeX Users Group +% Copyright |CopyYear.2005. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +\<html-mltx\><<< +% html-mltx.4ht (|version), generated from |jobname.tex +% Copyright 2009-2016 TeX Users Group +% Copyright |CopyYear.2005. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +\<configure mathltx tex4ht\><<< +|<tex compiler mathltx|> +|<sub, sup, subsup|> +|<limits sub, sup, subsup|> +>>> + + + + + + + + + + +\<html4 font decorations\><<< +\Configure{htf}{0}{+}{<span\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>}% +\Configure{htf}{1}{+}{<img\Hnewline + src="}{" alt="}{" class="}{\%s}{-\%d}{x-x-\%x}{"\xml:empty>}% +\Configure{htf}{3}{+}{<img\Hnewline + src="}{" alt="}{" class="\%s-}{\%s}{-\%d}{x-x-\%x}% + {" style="text-align:middle;"\xml:empty>}% +\Configure{htf}{4}{+}{<small\Hnewline + class="}{}{}{}{}{small-caps">}{</small>}% +\Configure{htf}{6}{+}{<u\Hnewline + class="}{}{}{}{}{underline">}{</u>}% +\Configure{htf}{8}{+} + {<sup class="htf"><strong>}{}{}{}{}{}{</strong></sup>}% +\Configure{htf}{10}{+} + {<span class="htf-cmbx">}{}{}{}{}{}{</span>}% +\Configure{htf}{12}{+} + {<span\Hnewline class="htf-calligraphy">}{}{}{}{}{}{</span>}% +>>> + +\<no html4 font decorations\><<< +\Configure{htf}{0}{+}{}{}{}{}{}{}{}% +\Configure{htf}{1}{+}{}{}{}{}{}{}{}% +\Configure{htf}{3}{+}{}{}{}{}{}{}{}% +\Configure{htf}{4}{+}{}{}{}{}{}{}{}% +\Configure{htf}{6}{+}{}{}{}{}{}{}{}% +\Configure{htf}{8}{+}{}{}{}{}{}{}{}% +\Configure{htf}{10}{+}{}{}{}{}{}{}{}% +\Configure{htf}{12}{+}{}{}{}{}{}{}{}% +>>> + + + + + +\<configure mathltx tex4ht\><<< +\def\mml:htfsym{\Configure + {htf}{254}{+}{<mglyph\Hnewline fontfamily="}{\%s"}{ + index="\%s"}{ mathsize="\%d\%\%"}{}{ alt="}{"/>}} +\def\ext:htfsym{\Configure{htf}{254}{+}{}{}{}{}{}{}{}} +>>> + + +\<configure mathltx-mml tex4ht\><<< +\append:def\mml:htfsym{|<no html4 font decorations|>} +\append:def\ext:htfsym{|<html4 font decorations|>} +>>> + + +We reserve code 254 (and 255) for unknown symbols. + + + + \<configure mathltx latex\><<< +\:CheckOption{core}\if:Option \expandafter\endinput \fi +|<mathltx latex|> +|<plain,latex mathltx|> +>>> + +\<configure mathltx fontmath\><<< +|<mathltx plain,fontmath|> +>>> + +\<configure mathltx plain\><<< +\:CheckOption{core}\if:Option \expandafter\endinput \fi +|<mathltx plain|> +|<mathltx plain,fontmath|> +|<plain,latex mathltx|> +>>> + +\<mathltx plain,fontmath\><<< +|<rlbabel everypar|> +|<plain,fontmath math classes|> +>>> + +\<configure mathltx amsmath\><<< +|<arr amsmath, amstex1|> +|<amsmath mathltx|> +|<amsmath symbols|> +>>> + +\<configure mathltx amsmath\><<< +\Configure{intertext} + {\IgnorePar \ifinalign@ + \HCode{</mtd></mtr><\a:mathltx + mtr><mtd columnspan="\HCol" + \mml:class="intertext">}% + \else \ifingather@ + \HCode{<mtr><mtd columnspan="\HCol" + \mml:class="intertext">}% + \fi\fi + \AA:text{intertext}% + } + {\BB:text \ifvmode \IgnorePar \fi \EndP\ifinalign@ + \HCode{</mtd></mtr><\a:mathltx + mtr><mtd>}% + \else \ifingather@ + \HCode{</mtd></mtr>}% + \fi\fi + } +>>> + + + +\<configure mathltx amsmath\><<< +\Configure{maketag} + {\ifmathltx + \ifmtext \expandafter\expandafter\expandafter\no:maketag\fi + \else \expandafter\no:maketag\fi + \AA:text{maketag}\hbox\bgroup\:gobbleIII :@:} + {\egroup\BB:text } +\def\no:maketag#1:@:#2\b:maketag{\hbox{#2}} +>>> + + +\<configure mathltx amstext\><<< +\Configure{text}{\AA:text{text}}{\BB:text} +>>> + + +\<amsmath symbols\><<< +\def\:tempc{\DOTSI\protect\:idotsint} +\HLet\idotsint|=\:tempc +\def\:idotsint{% + \mathop{\intop\cdotp\cdotp\cdotp\intop }\ilimits@ +} +>>> + +\<configure mathltx amsopn\><<< +|<amsopn / amstex.sty mathltx|> +>>> + +\<configure mathltx amstex1\><<< +% amstex.sty +|<arr amsmath, amstex1|> +|<amstex.sty mathltx|> +|<amsopn / amstex.sty mathltx|> + >>> + +\<configure mathltx amstex\><<< +% amstex.tex +|<mathltx m:env|> +|<amstex.tex mathltx|> +>>> + + \<configure mathltx vanilla\><<< + |<vanilla mathltx|> + >>> + + \<plain,latex mathltx\><<< +\let\mathltx:on|=\relax +\Configure{ } + {\ifmathltx \ifmtext \space \else\HCode{\string\ }\fi + \else \:nbsp\fi} +>>> + + +\<mathltx latex\><<< +\Configure{hspace} + {\ifmathltx\ifmtext\else + \HCode{\string\l:brace\the\tmp:dim\r:brace}\fi\fi}{}{ } +>>> + + + + +\<mathltx latex\><<< +\Configure{romannumeral} + {\ifmathltx\ifmtext\else \HCode{<mrow \mml:class="romannumeral">}\fi\fi} + {\ifmathltx\ifmtext\else \HCode{</mrow>}\fi\fi} +>>> + +\<configure html-mltx latex\><<< +\Configure{romannumeral} + {\ifmtext\else + \HCode{<\ifmathltx mrow \else span \fi \mml:class="romannumeral">}\fi + } + {\ifmtext\else \HCode{</\ifmathltx mrow\else span\fi>}\fi } +>>> + + +\<configure html-mltx latex\><<< +\Configure{hspace} + {\ifmathltx \ifmtext \else + \HCode{\string\l:brace\the\tmp:dim\r:brace}\fi\fi} + {}{\ifmathltx \else \:nbsp\fi} +>>> + + + \<configure html-mltx plain\><<< +|<plain,latex html-mltx|> +>>> + + +\<configure html-mltx latex\><<< +|<plain,latex html-mltx|> +>>> + +\<plain,latex mathltx\><<< +\def\:tempc#1{\HCode{\string\widehat\l:brace}#1\HCode{\r:brace}} +\HLet\widehat=\:tempc +\def\:tempc#1{\HCode{\string\widetilde\l:brace}#1\HCode{\r:brace}} +\HLet\widetilde=\:tempc +>>> + +\<plain,latex html-mltx\><<< +\:CheckOption{new-accents} \if:Option \else + \ifx \mathltx:on\:UnDef + \Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|<temp hcode accents|>% + \ht:special{t4ht@[}\if!#1!x\else#2\fi\ht:special{t4ht@]}}} + {\ifmmode + \Tg<mrow + \mml:class="accent#1">\mathord{#3}\Tg</mrow>% + \else \HCode{<span class="accent#1">}#3\HCode{</span>}% + \fi + }% + \fi +\fi +>>> + + + + \<plain,latex mathltx\><<< +\:CheckOption{new-accents} \if:Option \else + \ifx \mathltx:on\:UnDef + \Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|<temp hcode accents|>% + \ht:special{t4ht@[}\if!#1!x\else#2\fi\ht:special{t4ht@]}}} + {\Tg<mrow + \mml:class="accent#1">\mathord{#3}\Tg</mrow>% + }% + \fi +\fi +>>> + + + + + + + +\<temp hcode accents\><<< +\leavevmode +\if !#1!\ht:special{t4ht@+&{35}x#2;}% +\else \expandafter \ifx\csname U#2#1\endcsname\relax + \ht:special{t4ht@+&{35}x#2;}% +\else + \ht:special{t4ht@+&{35}x\csname U#2#1\endcsname;}% +\fi \fi x% +>>> + + +The special replaces the `x' character. + + +\<configure mathltx Preamble\><<< +\Configure{PROLOG}{VERSION,DOCTYPE,*XML-STYLESHEET} +\:CheckOption{no-DOCTYPE} \if:Option + \Configure{PROLOG}{VERSION,*XML-STYLESHEET} +\fi +>>> + + +\<mathltx dtd\><<< +\Configure{DOCTYPE}{\HCode + {<!DOCTYPE html |<xhtml+mathltx dtd|>% + >\Hnewline +}} +>>> + + +\<xhtml+mathltx dtd\><<< +PUBLIC + "-//W3C//DTD XHTML 1.1 plus Mathltx 2.0//|<dtd lang|>"\Hnewline + "http://www.w3.org/Math/DTD/mathltx2/xhtml-math11-f.dtd" +>>> + + + +\<dtd lang\><<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi +>>> + + +\<xmlns\><<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + +\<plain,latex mathltx\><<< +\let\mml:TeX|=\TeX +\def\TeX{\ifmathltx + \HCode{<mtext + \mml:class="TeX">TeX</mtext>}\else \mml:TeX\fi} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{TeX Engine} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<sub, sup, subsup\><<< +\Configure{SUB} + {\Send{BACK} + {\l:brace}\HCode{\r:brace\string_\l:brace}\trap:base} + {\HCode{\r:brace}} +\Configure{SUP} + {\Send{BACK} + {\l:brace}\HCode{\r:brace\string^\l:brace}\trap:base} + {\HCode{\r:brace}} +\Configure{SUBSUP} + {\Send{BACK} + {\l:brace}\HCode{\r:brace\string_\l:brace}\trap:base} + {\HCode{\r:brace\string^\l:brace}\trap:base} + {\HCode{\r:brace}} +\def\trap:base{{\HCode{}}} +>>> + +The \verb'\trap:base' is to catch empty bases of exponents like, e.g., +in \verb'$a^{^b}$'. + + +\<mathltx Link\><<< +\LinkCommand\mtxt:link{mtext, xlink:href, id,,,} +\LinkCommand\msp:link{mstyle-3,% + xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href, + id, \mml:class="label",,} +\let\M:Link|=\Link +\def\Link{\ifmathltx + \ifmtext |<end mtext space|>\HCode{\%\Hnewline\%\string\begin{ref}}% + \bgroup \let\:newlnch\space + \expandafter\expandafter\expandafter\mtxt:link + \else \expandafter\expandafter\expandafter\msp:link\fi + \else \expandafter\M:Link\fi} +\let\M:EndLink|=\EndLink +\def\EndLink{\ifmathltx + \ifmtext |<end mtext space|>% + \egroup \HCode{\%\Hnewline\%}\Endmtxt:link + \HCode{\string\end{ref}\Hnewline}|<start mtext space|>% + \else \HCode{</mstyle-5><!--endlabel-->}\fi + \else \expandafter\M:EndLink\fi} +>>> + + + + + + +\<tex compiler mathltx\><<< +\Configure{DviMath} + {\HCode{<!--l. \the\inputlineno-->}% + \a:DviMathltx \mathltxtrue + \ifOption{mml-fonts}{}{|%\mml:htfsym|%\NoFonts}% + \IgnoreRule \a:math + |<sv dvimath par|>\HCode{<![CDATA[}\IgnorePar} + {\HCode{]]>}\EndIgnoreRule + \ifOption{mml-fonts}{}{|%\ext:htfsym|%\EndNoFonts}% + \mathltxfalse \After:Math \b:DviMathltx + |<recall dvimath par|>} +\NewConfigure{DviMathltx}{2} +>>> + + +\<tex compiler mathltx\><<< +\def\After:Math{\After:EndMath + \global\let\After:EndMath=\empty} +\let\After:EndMath=\empty +\def\AfterMath#1{\append:def\After:EndMath{#1}% + \global\let\After:EndMath=\After:EndMath} +>>> + +\<configure mathltx latex\><<< +\let\m:Make:Label\Make:Label +\def\Make:Label#1#2{% + \ifmathltx \edef\:temp{#1}% + \expandafter\AfterMath\expandafter{\expandafter\Make:Label + \expandafter{\:temp}{#2}}% + \else \m:Make:Label{#1}{#2}% + \fi +} +>>> + + + +\<tex compiler mathltx\><<< +\newif\ifmathltx \mathltxfalse +\newif\ifmtext \mtextfalse +|<mathltx Link|> +\NewConfigure{math}{1} +\NewConfigure{@math}{1} +\def\IgnoreRule{\ht:special{t4ht@\string_}} +\def\EndIgnoreRule{\ht:special{t4ht@\string_\string_}} +\Configure{$$} + {\Configure{@math}{|<block display|>}\IgnorePar + |<inline end-par comment|>\EndP\DviMath + \HCode{\string $\string $}} + {\HCode{\string $\string $}\EndDviMath + \ShowPar\par{\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue} +\Configure{$} + {\Configure{@math}{|<inline display|>}\DviMath + \HCode{\string $}} + {\HCode{\string $}\EndDviMath}{} + +\newif\ifDisplayMath \DisplayMathfalse +>>> + + +\<display math-\><<< +\Configure{$$} + {\Configure{@math}{|<block display|>}\IgnorePar + |<inline end-par comment|>\EndP\DviMath } + {\EndDviMath\ShowPar\csname par\endcsname + {\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue}% +>>> + + + + +\<tex compiler mathltx\><<< +\Configure{radical} + {\HCode{\string\sqrt} + \special{t4ht\string~!e<\string{}% + \special{t4ht\string~!e>\string}}% + \special{t4ht\string~!ee/}% + \special{t4ht\string~!ese-}% + } +>>> + + + + +\<inline end-par comment\><<< +\ifvmode\else \HCode{<!--tex4ht:inline-->}\fi +>>> + + +\<?\><<< +\def\MathRow#1{% + \Configure{\expandafter\:gobble\string#1*}{*}% + {<mrow\Hnewline + \mml:class="\expandafter\:gobble\string#1">}{</mrow>}% + {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}% +>>> + + +\<recall dvimath par\><<< +\sv:ignore +>>> + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +The \verb'\MathRow' requests a \verb'<mrow\Hnewline>...</mrow>', instead of the contributions +of \verb'\mathop', \verb'\mathrel',...., for the next parameter. + + +\<tex compiler mathltx\><<< +\def\:MT{\ifmathltx m\fi} +\Configure{halignTB}{\HCode{<\:MT table }\halignTBL}{\HCode{>}} +\Configure{halignTBL} + {t}{\ifmathltx \HCode{ align="baseline 1" }\fi} + {b}{\ifmathltx \HCode{ align="baseline -1" }\fi} + {c}{\ifmathltx \HCode{ align="axis" }\fi} + {} +\def\t:HA{\HCode{</\:MT table>}} +\def\R:HA{\HCode{<\:MT tr \Hnewline style="vertical-align:baseline;">}} +\def\r:HA{\HCode{</\:MT tr>}} +\def\D:HA{\HCode{<\:MT td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline>}} +\def\d:HA{\HCode{</\:MT td>}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{latex.ltx} +%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure mathltx latex\><<< +\def\set:label#1{\ifmathltx + \HCode{\%\Hnewline\%\string\begin{label}}% + {\ht:special{t4ht@, }\let\:newlnch\space \mathltxfalse #1}% + \HCode{\string\end{label}\Hnewline}% + \else #1\fi +} +>>> + + +\<configure mathltx latexNO\><<< +\HAssign\set:labelN=0 +\def\set:label#1{\ifmmode + \gHAdvance\set:labelN by 1 + \expandafter\gdef\csname sl:\set:labelN\endcsname + {\set:label{#1}}% + \expandafter\aftergroup\csname sl:\set:labelN\endcsname + \else \gHAssign\set:labelN=0 #1\fi +} +>>> + + +\<start mtext space\><<< +\ht:special{t4ht@,&\#x00A0;}% +>>> + +\<start mtext space\><<< +\ht:special{t4ht@, }% +>>> + +\<end mtext space\><<< +\ht:special{t4ht@,}% +>>> + + +\<configure html-mltx latex\><<< +\Configure{newline} + {\ifmtext |<end mtext space|>\HCode{</mtext><mtext\Hnewline + \mml:class="newline">}% + |<start mtext space|>% + \else \Tg<br\Hnewline class="newline" />\fi} +>>> + +\<mathltx latex\><<< +\Configure{newline} + {|<end mtext space|>\HCode{</mtext><\a:mathltx + mtext\Hnewline \mml:class="newline">}|<start mtext space|>} +>>> + + + +\<mathltx latex\><<< +\Configure{[]} + {\Configure{@math}{|<block display|>}\csname a:mathltx[]\endcsname + \DviMath\HCode{\string\[}$$\DisplayMathtrue } + {$$\HCode{\string\]}\EndDviMath\csname b:mathltx[]\endcsname} +\Configure{()} + {\Configure{@math}{|<inline display|>}\csname a:mathltx()\endcsname + \DviMath\HCode{\string\(}$} + {$\HCode{\string\)}\EndDviMath\csname b:mathltx()\endcsname} +\NewConfigure{mathltx[]}{2} +\NewConfigure{mathltx()}{2} +|<config array|> +>>> + +\<configure html-mltx latex\><<< +\Configure{mathltx[]} + {\edef\MathPar{\ifvmode par-\fi}\IgnorePar\endgraf\EndP + \HCode{<div class="\MathPar math-display">}} + {\HCode{</div>}|<try inline par|>} +\Css{div.math-display, div.par-math-display{text-align:center;}} +>>> + + + + +\<configure mathltx rlbabel\><<< +\Configure{[]} + {\Configure{@math}{|<block display|>}\csname a:mathltx[]\endcsname + \DviMath\Tg<mrow\Hnewline>$$\DisplayMathtrue } + {$$\Tg</mrow>\EndDviMath\csname b:mathltx[]\endcsname + \if@rl\else\beginR\fi } +>>> + + + + + +\<configure mathltx array\><<< +|<config array|> +>>> + +\<config array\><<< +\Configure{halignTB<>}{array}{\HCode{\Hnewline + equalrows="false" + equalcolumns="false" class="array"}<>\HAlign} +\Configure{array} + {\expandafter\tmp:toks\expandafter{\Clr}% + \HCode{\string\begin{array}{\the\tmp:toks}\Hnewline}} + {\ifvmode \IgnorePar\fi \HCode{\string\end{array}}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} + {} + {|<mtd array|>} + {} +\ConfigureEnv{array} + {\bgroup\Configure{$}{}{}{}} + {\egroup} + {}{} +>>> + +\<configure html-mltx latex\><<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + +\<configure html-mltx array\><<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + + +\<mtd array\><<< +\HCode{\ifnum \HCol>1 \a:math:amp\fi + \ifnum 1<\HMultispan + \string\multicolumn\l:brace\HMultispan\r:brace \fi}% +>>> + +\<mtd matrix\><<< +\HCode{\ifnum \HCol>1 \a:math:amp\fi + \ifnum 1<\HMultispan + \string\multicolumn\l:brace\HMultispan\r:brace \fi}% +>>> + +\<configure mathltx tex4ht\><<< +\NewConfigure{math:amp}{1} +\Configure{math:amp}{\string&} +>>> + + +\<insert Clr\><<< +\expandafter\tmp:toks\expandafter{\Clr}% +\HCode{<!---->}% +>>> + + + + + +\<mathltx latex\><<< +\def\:MM{m} +\Configure{HBorder} + {<mtr\Hnewline \mml:class="hline">} + {|<mml hline|>} + {</mtr>} + {<mtr\Hnewline \mml:class="cline">} + {<mtd></mtd>} + {|<mml hline|>} + {</mtr>} + {<mtr\Hnewline \mml:class="vspace" style="font-size:\HBorderspace">} + {<mtd\Hnewline></mtd>} + {</mtr>} +>>> + +\<configure html-mltx latex\><<< +\def\:MM{\ifmathltx m\fi} +\Configure{HBorder} + {<\:MM tr\Hnewline + \ifmathltx \expandafter\mml:class\else class\fi="hline">} + {\ifmathltx|<mml hline|>\else + <td><hr\xml:empty></td>\fi} + {</\:MM tr>} + {<\:MM tr\Hnewline + \ifmathltx \expandafter\mml:class\else class\fi ="cline">} + {<\:MM td></\:MM td>} + {\ifmathltx|<mml hline|>\else + <td><hr\xml:empty></td>\fi} + {</\:MM tr>} + {<\:MM tr\Hnewline + \ifmathltx \expandafter\mml:class\else class\fi="vspace" + style="font-size:\HBorderspace">} + {<\:MM td\Hnewline>\ifmathltx\else\string&\#x00A0;\fi + </\:MM td>} + {</\:MM tr>} +\Configure{halign} + {\EndP\halignTB{halign}} \t:HA + \R:HA\r:HA\D:HA\d:HA +>>> + + + +\<mml hline\><<< +<mtd><mo> \string&\#x0332; </mo></mtd> +>>> + + + + +\<mathltx latex\><<< +|<mathltx fonts|> +\let\A:fbox=\a:fbox +\let\B:fbox=\b:fbox +\let\OLDf:box=\fbox +\def\fbox{\relax\ifmmode + \Configure{fbox}{\leavevmode\Configure{HtmlPar}{}{}{}{}\IgnoreRule + \AA:text{fbox}}{\BB:text\EndIgnoreRule}\else + \Configure{fbox}{\leavevmode + \IgnoreRule\A:fbox}{\B:fbox\EndIgnoreRule}\fi + \OLDf:box} +\let\A:mbox|=\a:mbox +\let\B:mbox|=\b:mbox +\let\OLD:mbox|=\mbox +\def\mbox{\relax\ifmmode \Configure{mbox}{\AA:text{mbox}}{\BB:text}\else + \Configure{mbox}{\A:mbox}{\B:mbox}\fi\OLD:mbox} +|<mathltx text util|> +>>> + + +\<mathltx text util\><<< +\NewConfigure{@mtext}{1} +\Configure{@mtext}{\string\text} +\def\AA:text#1{|<config start mtext|>} +\def\BB:text{|<config end mtext|>} +>>> + + +\<config start mtext\><<< +\mtexttrue +\HCode{\a:@mtext\l:brace}|<start mtext space|>\PauseMathClass + |<config math within mtext|>% +>>> + + +\<config end mtext\><<< +\mtextfalse\EndPauseMathClass|<end mtext space|>\HCode + {\r:brace}% +>>> + +\<config math within mtext\><<< +\Configure{$}% + {\EndPauseMathClass \mtextfalse + |<end mtext space|>\HCode{\string$}}% + {\HCode{\string$}|<start mtext space|>\PauseMathClass \mtexttrue}% + {}% +>>> + + + + + +\<amstex.tex mathltx\><<< +|<mathltx text util|> +\Configure{text}{\AA:text{text}}{\BB:text} +\Configure{format} + {\HCode{<mtable \mml:class="format">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="format">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline \mml:class="format">}} + {\HCode{</mtd>}} +>>> + + + +\<amsmath mathltx\><<< +\Configure{above} + {\Send{GROUP}{0}{\l:brace}% + \HCode{\string\above\space \the\tmp:dim\space}\o:@@over:\:gobbleII} + {\Send{EndGROUP}{0}{\r:brace}} +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<mfrac-4 linethickness="0"><mrow>}% + \HCode{</mrow>}\o:over: + \HCode{<mrow>}\Send{EndGROUP}{0}{</mrow></mfrac>} + \else + \Send{GROUP}{0}{<mfenced-1 separators=""\Hnewline + open="|<lr del 2|>" close="|<lr del 3|>"><mfrac-5 + linethickness="0"><mrow>}% + \HCode{</mrow>}\o:@@over: + \HCode{<mrow>}\Send{EndGROUP}{0}{</\a:mathltx + mrow></mfrac></mfenced>} + \fi + } +>>> + + +\<configure mathltx tex4ht\><<< +\Configure{over} + {\Send{GROUP}{0}{\string\bgroup\space}} + {\HCode{\string\over\space}\Send{EndGROUP}{0}{\string\egroup\space}} +\Configure{atop} + {\Send{GROUP}{0}{\string\bgroup\space}} + {\HCode{\string\atop\space}\Send{EndGROUP}{0}{\string\egroup\space}} +\Configure{above} + {\Send{GROUP}{0}{<mfrac-6 linethickness="\the\tmp:dim"><mrow>}% + \HCode{</mrow>}\o:over:\:gobbleII} + {\HCode{<mrow>}\Send{EndGROUP}{0}{</mrow></mfrac>}} +>>> + +\<configure mathltx tex4ht\><<< +\Configure{abovewithdelims} + {\abovewithdelims:III} + {} +\def\abovewithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<mfrac-7 linethickness="\the\tmp:dim"><mrow>}% + \HCode{</mrow>}\o:over: + \HCode{<mrow>}\Send{EndGROUP}{0}{</mrow></mfrac>} + \else + \Send{GROUP}{0}{<mfenced-2 separators=""\Hnewline + open="|<lr del 2|>" close="|<lr del 3|>"><mfrac-8 + linethickness="\the\tmp:dim"><mrow>}% + \HCode{</mrow>}\o:over: + \HCode{<mrow>}\Send{EndGROUP}{0}{</ + mrow></mfrac></mfenced>} + \fi + \tmp:dim + } +\Configure{atopwithdelims} + {\atopwithdelims:III} + {} +\def\atopwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<mfrac-9 linethickness="0"><mrow>}% + \HCode{</mrow>}\o:atop: + \HCode{<mrow>}\Send{EndGROUP}{0}{</mrow></mfrac>} + \else + \Send{GROUP}{0}{<mfenced-3 separators=""\Hnewline + open="|<lr del 2|>" close="|<lr del 3|>"><mfrac-10 + linethickness="0"><mrow>}% + \HCode{</mrow>}\o:atop: + \HCode{<mrow>}\Send{EndGROUP}{0}{</\a:mathltx + mrow></mfrac></mfenced>} + \fi + } +\Configure{overwithdelims} + {\overwithdelims:III} + {} +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<mfrac11><mrow>}% + \HCode{</mrow>}\o:over: + \HCode{<mrow>}\Send{EndGROUP}{0}{</mrow></mfrac>} + \else + \Send{GROUP}{0}{<mfenced-4 separators=""\Hnewline + open="|<lr del 2|>" close="|<lr del 3|>"><mfrac-12><mrow>}% + \HCode{</mrow>}\o:over: + \HCode{<mrow>}\Send{EndGROUP}{0}{</ + mrow></mfrac></mfenced>} + \fi + } +>>> + + + +\<configure mathltx amsmath\><<< +\Configure{abovewithdelims} + {\abovewithdelims:III} + {} +\def\abovewithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<mfra-13 linethickness="\the\tmp:dim"><mrow>}% + \HCode{</mrow>}\o:@@over: + \HCode{<mrow>}\Send{EndGROUP}{0}{</mrow></mfrac>} + \else + \Send{GROUP}{0}{\l:brace}% + \HCode{\string\abovewithdelims + |<lr del 2|>|<lr del 3|>\the\tmp:dim\space}\o:@@over: + \Send{EndGROUP}{0}{\r:brace}% + \fi + \tmp:dim + } +\Configure{atopwithdelims} + {\atopwithdelims:III} + {} +\def\atopwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<mfrac-14 linethickness="0"><mrow>}% + \HCode{</mrow>}\o:@@atop: + \HCode{<mrow>}\Send{EndGROUP}{0}{</mrow></mfrac>} + \else + \Send{GROUP}{0}{<mfenced-6 separators=""\Hnewline + open="|<lr del 2|>" close="|<lr del 3|>"><mfrac-1 + linethickness="0"><mrow>}% + \HCode{</mrow>}\o:@@atop: + \HCode{<mrow>}\Send{EndGROUP}{0}{</\a:mathltx + mrow></mfrac></mfenced>} + \fi + } +\Configure{overwithdelims} + {\overwithdelims:III} + {} +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<mfrac-2><mrow>}% + \HCode{</mrow>}\o:@@over: + \HCode{<mrow>}\Send{EndGROUP}{0}{</mrow></mfrac>} + \else + \Send{GROUP}{0}{\l:brace}% + \HCode{\string\overwithdelims + |<lr del 2|>|<lr del 3|>}\o:@@over: + \Send{EndGROUP}{0}{\r:brace}% + \fi + } +>>> + + + +\<mathltx latex\><<< +\Configure{frac} + {\HCode{\string\frac\l:brace}} + {\HCode{\r:brace}\Configure{over}{}{}} + {\HCode{\l:brace}} + {\HCode{\r:brace}} +>>> + + + +\<configure html-mltx amsmath\><<< +\ifx \mathdisplay@@pop\:UnDef + \ifx \emdf@La\:UnDef + |<amsmath html-mltx pre 2000|> + \else + |<amsmath html-mltx jan 2000|> + \fi +\else + |<amsmath html-mltx july 2000|> +\fi +>>> + + + +\<amsmath mathltx\><<< +\Configure{tmspace} + {\HCode{\string\tmspace{\textspace}}} +>>> + + + + + +\<try inline par\><<< +\ShowPar\par{\HCondtrue\noindent}% +>>> + + + + +\<mathltx fonts\><<< +\Configure{texttt} + {\ifmathltx \Configure{@mtext}{\string\texttt}\fi} + {}% +\Configure{textit} + {\ifmathltx \Configure{@mtext}{\string\textit}\fi} + {}% +\Configure{textrm} + {\ifmathltx \Configure{@mtext}{\string\textrm}\fi} + {}% +\Configure{textup} + {\ifmathltx \Configure{@mtext}{\string\textup}\fi} + {}% +\Configure{textsl} + {\ifmathltx \Configure{@mtext}{\string\textsl}\fi} + {}% +\Configure{textsf} + {\ifmathltx \Configure{@mtext}{\string\textsf}\fi} + {}% +\Configure{textbf} + {\ifmathltx \Configure{@mtext}{\string\textbf}\fi} + {}% +\Configure{textsc} + {\ifmathltx \Configure{@mtext}{\string\textsc}\fi} + {}% +\Configure{emph} + {\ifmathltx \Configure{@mtext}{\string\emph}\fi} + {}% +>>> + + + + +\<configure html-mltx latex\><<< +\:CheckOption{fonts} \if:Option +\Configure{texttt} + {\ifmathltx \Configure{@mtext}{\mml:class="texttt" mathvariant="monospace" }% + \else \HCode{<span class="texttt">}\fi} + {\ifmathltx \else \HCode{</span>}\fi} + \Configure{textit} + {\ifmathltx \Configure{@mtext}{\mml:class="textit" mathvariant="italic" }% + \else \HCode{<span class="textit">}\fi} + {\ifmathltx\else \HCode{</span>}\fi} + \Configure{textrm} + {\ifmathltx \Configure{@mtext}{ \mml:class="textrm" mathvariant="normal" }% + \else \HCode{<span class="textrm">}\fi} + {\ifmathltx\else \HCode{</span>}\fi} + \Configure{textup} + {\ifmathltx \Configure{@mtext}{ \mml:class="textup" mathvariant="normal" }% + \else \HCode{<span class="textup">}\fi} + {\ifmathltx\else \HCode{</span>}\fi} + \Configure{textsl} + {\ifmathltx \Configure{@mtext}{ \mml:class="textst" mathvariant="italic" }% + \else \HCode{<span class="textsl">}\fi} + {\ifmathltx\else \HCode{</span>}\fi} + \Configure{textsf} + {\ifmathltx \Configure{@mtext}{ \mml:class="textsf" mathvariant="sans-serif" }% + \else \HCode{<span class="textsf">}\fi} + {\ifmathltx\else \HCode{</span>}\fi} + \Configure{textbf} + {\ifmathltx \Configure{@mtext}{ \mml:class="textbf" mathvariant="bold" }% + \else \HCode{<span class="textbf">}\fi} + {\ifmathltx\else \HCode{</span>}\fi} + \Configure{textsc} + {\ifmathltx \Configure{@mtext}{ \mml:class="textsc" mathvariant="normal" }% + \else \HCode{<span class="textsc">}\fi} + {\ifmathltx\else \HCode{</span>}\fi} + \Configure{emph} + {\ifmathltx \Configure{@mtext}{ \mml:class="emph" mathvariant="italic" }% + \else \HCode{<span class="emph">}\fi} + {\ifmathltx\else \HCode{</span>}\fi} +\fi +>>> + +The \verb+\bgroup...\egroup+ is to handle cases like +\verb+\nathbf{a}^x+. + + + +\<configure mathltx fontmath\><<< +\def\bold:version{bold} +\Configure{mathbf}% + {\bgroup \HCode{\string\mathbf\l:brace}}% + {\HCode{\r:brace}\egroup }% +\Configure{mathit}% + {\bgroup \HCode{\string\mathit\l:brace}}% + {\HCode{\r:brace}\egroup }% +\Configure{mathrm}% + {\bgroup \HCode{\string\mathrm\l:brace}}% + {\HCode{\r:brace}\egroup }% +\Configure{mathsf}% + {\bgroup \HCode{\string\mathsf\l:brace}}% + {\HCode{\r:brace}\egroup }% +\Configure{mathtt}% + {\bgroup \HCode{\string\mathtt\l:brace}}% + {\HCode{\r:brace}\egroup }% +>>> + +\<configure mathltx amsfonts\><<< +\Configure{mathbb}{}{} +\Configure{mathfrak}{}{} +>>> + + + +Used to be + +\begin{verbatim} + \Configure{mathrm}{\Tg<mi \mml:class="mathrm">\PauseMathClass}% + {\EndPauseMathClass\Tg</mi>}% + \Configure{mathbf}{\Tg<mi \mml:class="mathbf" + mathvariant="bold">\PauseMathClass}% + {\EndPauseMathClass\Tg</mi>}% +\end{verbatim} + + +\<configure html-mltx latex\><<< +\Css{math .texttt { font-family: monospace; }} +\Css{math .textit { font-style: italic; }} +\Css{math .textsl { font-style: oblique; }} +\Css{math .textsf { font-family: sans-serif; }} +\Css{math .textbf { font-weight: bold; }} +>>> + + + + + +\<plain,latex mathltx\><<< +\Configure{'} + {\let\:primes=\empty} + {\def\:tempa{\prime\prime}\ifx \:tempa\:primes + \HCode{''}\else + \def\:tempa{\prime\prime\prime}\ifx \:tempa\:primes + \HCode{'''}\else + \HCode{\:primes}\fi\fi + } + {\xdef\:primes{\:primes'}} +>>> + +LaTeX places the primes within superscript, and mathltx seems to follow +suit (maybe because of the use of latex fonts in mozilla). However, +unicode maps already seem to assume raised representation for the +primes. + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{plain.sty} +%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<mathltx plain\><<< + \Configure{eqalign} + {\HCode{<mtable \mml:class="eqalign">}} + {\HCode{</mtable>}} + {\HCode{<mtr \Hnewline \mml:class="eqalign">}} + {\IgnorePar\HCode{</mtr>}} + {\HCode{\ifnum \HCol=3 <mtd\Hnewline + \mml:class="eqalign3"></mtd>\fi + <mtd \Hnewline \mml:class="eqalign\HCol">}} + {\HCode{</mtd>}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Palin + LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The default \verb'\left' and \verb'\right' in their default definition +with tex produce multi-part delimiters, from cmex, on large +subformulas. Hence, the `'.' below is needed. + +\<plain,latex mathltx\><<< +\def\left#1{\bgroup \a:left{#1}\b:left{#1}} +\def\right#1{\a:right{#1}\b:right{#1}\egroup} +\Configure{left} + {} + {\HCode{\string\left\space}#1\bgroup} +\Configure{right} + {\egroup\HCode{\string\right\space}#1} + {} +\def\{{{\HCode{\back:slash\l:brace}}} +\def\}{{\HCode{\back:slash\r:brace}}} +\let\lbrace\{ +\let\rbrace\} +\def\def:DEL#1{\def\:DEL{#1}} +\def\check:DEL#1#2{\def\:tempa{#1}\ifx \:tempa\:DEL \def\:DEL{#2}\fi} +\NewConfigure{mfenced}[2]{\append:defI\def:DEL{\check:DEL{#1}{#2}}} +|</bigl, /bigr,... for mathltx|> +\:CheckOption{new-accents} \if:Option \else + |<config mathltx accents|> +\fi +\def\mathinner#1{\HCode{\string\mathinner\l:brace}#1\HCode{\r:brace}} +>>> + + +\<configure mathltx etex4ht\><<< +\def\:tempc#1{\a:middle\mathrel{\left:right#1\:EMPTY}\b:middle} +\HLet\middle=\:tempc +\NewConfigure{middle}{2} +\Configure{middle} + {\bgroup + \Configure{mathrel}{*} + {<mo \mml:class="MathClass-rel" + fence="true" stretchy="true" >} + {</mo>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +>>> + + +The \verb+\root ...\of {...}+ creates the following structure. + +\begin{verbatim} +PUSH + ...root value... +POP +PUSH + PUSH + PUSH + ...root sign characters with PUSH-POP... + POP + PUSH + RIGHT4: 15213546 + DOWN3: -1553322 + PUT_RULE: height: 26213 + length: 1197667 + DOWN3: 1553322 + PUSH + ...root content... + POP + POP + POP +POP +\end{verbatim} + + + +\<plain,latex mathltx\><<< +\Configure{root}{\rev:root}{}{} +\def\rev:root #1\b:root#2\c:root{% + \HCode{\string\root\l:brace}{#1}% + {\HCode{\r:brace\string \of\l:brace}#2}\HCode{\r:brace}} +\def\AccentMath#1{\relax\ifmmode #1\else $#1$\fi} +>>> + + +\<lr del 2\><<< +\expandafter +\ifx \csname \string#2:lr del\endcsname\relax #2\else + \csname \string#2:lr del\endcsname\fi +>>> + + +\<lr del 3\><<< +\expandafter +\ifx \csname \string#3:lr del\endcsname\relax #3\else + \csname \string#3:lr del\endcsname\fi +>>> + + +\<plain,latex mathltx\><<< +\NewConfigure{mfenced}[2]{\expandafter + \def\csname \string#1:lr del\endcsname{#2}} +|<plain,latex mfenced|> +>>> + +\<amsmath mathltx\><<< +\Configure{mfenced}{\lvert}{\string\lvert} |%vertical line|% +\Configure{mfenced}{\rvert}{\string\rvert} |%double vertical line|% +\Configure{mfenced}{\lVert}{\string\lVert} +\Configure{mfenced}{\rVert}{\string\rVert} +>>> + +\<amstex.sty mathltx\><<< +\Configure{mfenced}{\lvert}{\string\lvert} +\Configure{mfenced}{\rvert}{\string\rvert} +\Configure{mfenced}{\lVert}{\string\lVert} +\Configure{mfenced}{\rVert}{\string\rVert} +>>> + + + + + +\<plain,latex mfenced\><<< +\Configure{mfenced}{\||}{\string&\#x2225;} +\Configure{mfenced}{.}{} +\Configure{mfenced}{\langle}{\string&\#x27E8;} |%lang|% +\Configure{mfenced}{\rangle}{\string&\#x27E9;} |%rang|% +\Configure{mfenced}{\vert}{||} +\edef\:temp{\noexpand\Configure{mfenced}{\noexpand\{}{\string\{}}\:temp +\edef\:temp{\noexpand\Configure{mfenced}{\noexpand\}}{\string\}}}\:temp +\edef\:temp{\noexpand + \Configure{mfenced}{\noexpand\lbrace}{\string\lbrace}}\:temp +\edef\:temp{\noexpand + \Configure{mfenced}{\noexpand\rbrace}{\string\rbrace}}\:temp +\Configure{mfenced}{<}{\string&\#x003C;} |%lt|% +\Configure{mfenced}{>}{\string&\#x003E;} |%gt|% +\Configure{mfenced}{\lceil}{\string&\#x2308;} +\Configure{mfenced}{\rceil}{\string&\#x2309;} +\Configure{mfenced}{\lfloor}{\string&\#x230A;} +\Configure{mfenced}{\rfloor}{\string&\#x230B;} +\Configure{mfenced}{\Vert}{\string&\#x2225;} +\Configure{mfenced}{\rgroup}{)} +\Configure{mfenced}{\lgroup}{(} +\Configure{mfenced}{\bracevert}{||} +\Configure{mfenced}{\bracevert}{||} +\Configure{mfenced}{\downarrow}{\string&\#x2193;} +\Configure{mfenced}{\uparrow}{\string&\#x2191;} +\Configure{mfenced}{\Uparrow}{\string&\#x21D1;} +\Configure{mfenced}{\updownarrow}{\string&\#x2195;} +\Configure{mfenced}{\Updownarrow}{\string&\#x21D5;} +\Configure{mfenced}{\Downarrow}{\string&\#x21D3;} +\Configure{mfenced}{\backslash}{\string&\#x2216;} +\Configure{mfenced}{\rmoustache}{\string&\#x25DD;} +\Configure{mfenced}{\lmoustache}{\string&\#x25DC;} +\Configure{mfenced}{\Arrowvert}{\string&\#x2225;} +\Configure{mfenced}{\arrowvert}{\string&\#x007C;} +>>> + +% \def\:tempa{\{}\ifx \:tempa\:DEL \let\:DEL\lbrc: \else +% \def\:tempa{\}}\ifx \:tempa\:DEL \let\:DEL\rbrc: \else +% \def\:tempa{<}\ifx \:tempa\:DEL \def\:DEL{\string<}\else +% \def\:tempa{>}\ifx \:tempa\:DEL \def\:DEL{\string>}% +% \fi\fi\fi\fi } +% \edef\lbrc:{\string{} \edef\rbrc:{\string}} + +% \HCode{\string#1;}% + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Amsmath} +%%%%%%%%%%%%%%%%%%%%% + + +\<amsmath mathltx\><<< +\edef\:tempc{\hskip -\noexpand\arraycolsep + \let\noexpand\@ifnextchar\noexpand\new@ifnextchar + \noexpand\array{*{\the\c@MaxMatrixCols}c}} +\HLet\env@matrix\:tempc +>>> + + +\<configure html-mltx amsmath\><<< +\Configure{@begin} + {split} + {\let\tagform@=\:gobble } +>>> + + +\<amsmath mathltx\><<< +\Configure{split} + {\HCode{\string\begin\l:brace split\r:brace}} + {\ifvmode\IgnorePar\fi + \HCode{\string\end \l:brace split\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} {} +>>> + +\<amsmath mathltx\><<< +\ConfigureEnv{multline} + {\bgroup |<display math-|>} {\egroup} + {}{} +\Configure{multline} + {\HCode{\string\begin\l:brace multline\r:brace}} + {\HCode{\string\end \l:brace multline\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} {} +\ConfigureEnv{multline*} + {\bgroup |<display math-|>} {\egroup} + {}{} +\Configure{multline*} + {\HCode{\string\begin\l:brace multline*\r:brace}} + {\HCode{\string\end \l:brace multline*\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} + {} +>>> + + +\marginpar{?math delimiters not removed for gather*?} + + +\<amsmath mathltx\><<< +\ConfigureEnv{gather} + {\bgroup |<display math-|>} {\egroup} + {}{} +\Configure{gather} + {\HCode{\string\begin\l:brace gather\r:brace}} + {\HCode{\string\end \l:brace gather\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} {} +\ConfigureEnv{gather*} + {\bgroup |<display math-|>} {\egroup} + {}{} +\Configure{gather*} + {\HCode{\string\begin\l:brace gather*\r:brace}} + {\HCode{\string\end \l:brace gather*\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} {} +>>> + +\<amsmath mathltx\><<< +\Configure{subarray} + {\HCode{\string\begin\l:brace subarray\r:brace + \l:brace \Hlcr\r:brace}} + {\HCode{\string\end \l:brace subarray\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} +\Configure{smallmatrix} + {\HCode{\string\begin\l:brace smallmatrix\r:brace}} + {\HCode{\string\end \l:brace smallmatrix\r:brace}} + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} {} +>>> + +\<amsmath mathltx\><<< +\def\:tempc#1#2{% + \ConfigureEnv{#1} + {\def\end:al:env{}\ifmmode\else + \ifvmode\else \def\end:al:env{\par\ShowPar\IgnoreIndent}\fi\fi} + {\end:al:env } + {}{}% + \Configure{#1} + {\IgnorePar + \ifvmode \EndP \else \EndP \HCode{<!--tex4ht:inline-->}\fi + \ifmathltx + \Tg<mrow>\def\end:mathalign{\Tg</mrow>}% + \else + \Configure{@math}{|<block display|>}\DviMath + \def\end:mathalign{\EndDviMath \DisplayMathfalse}% + \DisplayMathtrue + \fi + \HCode{\string\begin\l:brace #2\r:brace}} + {\HCode{\string\end \l:brace #2\r:brace}\end:mathalign } + {\ifnum \HRow> 1\HCode{\string\\\Hnewline}\fi} {} + {|<mtd array|>} + {\HCode{|<extra align col sep|>}}} +\:tempc{align}{align} +\:tempc{alignat}{alignat} +\:tempc{xalignat}{xalignat} +\:tempc{xxalignat}{xxalignat} +\:tempc{flalign}{flalign} +\:tempc{align*}{align*} +\:tempc{alignat*}{alignat*} +\:tempc{xalignat*}{xalignat*} +\:tempc{flalign*}{flalign*} +>>> + + +\<configure html-mltx amsmath\><<< +\Css{mtd.align-odd{margin-left:2em; text-align:right;}} +\Css{mtd.align-even{margin-right:2em; text-align:left;}} +>>> + +\<extra align col sep\><<< +\ifodd\HCol\space\else \string\hspace\l:brace2em\r:brace\fi +>>> + +\<rightward align col\><<< +\ifodd\HCol columnalign="right" \fi +>>> + +Setting \verb+#1+ below within mrow is problematic in the sense that +arrows don't stretch over multi-characters content \verb+#2+. +A \verb+accent="true"+ move the arrow lower, but also distribute the +characters further apart. + +\<under arrow\><<< +\Tg<munder>% +\Tg<mrow\Hnewline>#2\Tg</mrow>% +#1% +\Tg</munder>% +>>> + +\<over arrow\><<< +\Tg<mover class="overarrow">% +\Tg<mrow\Hnewline>{#2#3}\Tg</mrow>% +#1% +\Tg</mover-4>% +>>> + + + + +% \Tg<mrow\Hnewline>#1\Tg</mrow>% +% \Tg<mrow>#1\Tg</mrow>% + + +\<arr amsmath, amstex1\><<< +\Configure{underarrow@} + {\Tg<munder>\Tg<mrow\Hnewline>} + {\Tg</mrow>\Tg<mrow\Hnewline>} + {\Tg</mrow>\Tg</munder>} +\Configure{overarrow@} + {\Tg<mover accent="true">\Tg<mrow\Hnewline>} + {\Tg</mrow>\Tg<mrow>} + {\Tg</mrow>\Tg</mover-5>} +\def\:tempc#1#2#3{\a:overarrow@ + \hbox{$\m@th#2#3$}\b:overarrow@ + \hbox{#1#2}\c:overarrow@ + } +\HLet\overarrow@\:tempc +>>> + + + + + +\<configure mathltx amstex1\><<< +\ifx \o:overrightarrow:\:UnDef\else + \HRestore\overrightarrow + \HRestore\overleftarrow + \HRestore\overleftrightarrow +\fi +>>> + + + +\<mathltx plain,fontmath\><<< +\Configure{overrightarrow} + {\HCode{\string\overrightarrow\l:brace}\:gobble} + {\HCode{\r:brace}} +\Configure{overleftarrow} + {\HCode{\string\overleftarrow\l:brace}\:gobble} + {\HCode{\r:brace}} +>>> + + +\<amsmath mathltx\><<< +\Configure{underrightarrow} + {\HCode{\string\underrightarrow\l:brace}\:gobble} + {\HCode{\r:brace}} +\Configure{underleftarrow} + {\HCode{\string\underleftarrow\l:brace}\:gobble} + {\HCode{\r:brace}} +>>> + + +\<amsmath mathltx\><<< +\Configure{overleftrightarrow} + {\HCode{\string\overleftrightarrow\l:brace}\:gobble} + {\HCode{\r:brace}} +\Configure{underleftrightarrow} + {\HCode{\string\underleftrightarrow\l:brace}\:gobble} + {\HCode{\r:brace}} +>>> + + + + + +\<amsmath mathltx\><<< +|<mathltx m:env|> +\renewcommand{\xrightarrow}[2][]{% + \HCode{\string\xrightarrow[}#1\HCode{]\l:brace}% + #2\HCode{\r:brace}} +\renewcommand{\xleftarrow}[2][]{% + \HCode{\string\xleftarrow[}#1\HCode{]\l:brace}% + #2\HCode{\r:brace}} + +\def\overset#1#2{{% + \HCode{\string\overset\l:brace}#1\HCode{\r:brace\l:brace}% + #2\HCode{\r:brace}}} +\def\underset#1#2{{% + \HCode{\string\underset\l:brace}#1\HCode{\r:brace\l:brace}% + #2\HCode{\r:brace}}} + +\def\sideset#1#2#3{{\HCode{\string\sideset\l:brace}% + {\HCode{}}#1\HCode{\r:brace\l:brace}% + {\HCode{}}#2\HCode{\r:brace}% + {{\HCode{}}#3}% + }} + +\renewcommand{\hdotsfor}[1]{% + \ifx[#1\@xp\shdots@for\else\hdots@for\@ne{#1}\fi} +\def\shdots@for#1]{\hdots@for{#1}} +\def\hdots@for#1#2{\multicolumn{#2}c% + {\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@ + \xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace@$}% + \hfill + \mkern-#1\dotsspace@}% + } +\ConfigureEnv{eqxample}{}{}{}{} +\ConfigureEnv{gather*}{}{}{}{} +\ConfigureEnv{gathered}{}{}{}{} +\ConfigureEnv{matrix}{}{}{}{} +>>> + + The \verb'\HCode{}' in \verb'\sideset' is for catching superscripts and subscripts + + + + + +\<amsmath symbols\><<< +\def\:tempc{\HCode{\string\mod\space}} +\HLet\bmod\:tempc +\def\:tempc#1{\HCode{\string\pod\l:brace}#1\HCode{\r:brace}} +\HLet\pod=\:tempc +\def\:tempc#1{\HCode{\string\pmod\l:brace}#1\HCode{\r:brace}} +\HLet\pmod=\:tempc +\def\:tempc#1{\HCode{\string\mod\l:brace}#1\HCode{\r:brace}} +\HLet\mod=\:tempc +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{amsopn} +%%%%%%%%%%%%%%%%%%%% + + +\<amsopn / amstex.sty mathltx\><<< +\def\varinjlim{{\underrightarrow\lim}} +\def\varprojlim{{\underleftarrow\lim}} +\def\varlimsup{{\overline\lim}} +\def\varliminf{{\underline\lim}} +\def\:tempc#1#2#3{\hbox{{\mtexttrue + \HCode{<mrow\Hnewline + \mml:class="text"><mtext + \a:@mtext>}|<start mtext space|>\PauseMathClass + \Configure{$}{\EndPauseMathClass\mtextfalse + |<end mtext space|>\HCode{</mtext><\a:mathltx + mrow\Hnewline \mml:class="math">}} + {|<start mtext space|>\HCode{</mrow><mtext + \a:@mtext>}\mtexttrue\PauseMathClass}{#1} + \let\f@size#2\selectfont #3}% + \mtextfalse \EndPauseMathClass |<end mtext space|>\HCode + {</mtext></mrow>}}} +\HLet\textdef@\:tempc +>>> + + +The original definitions for the following macros contain small spaces +\verb+\,+ in the names, and the spaces imply improper mathltx outcome +of the form \verb+<mo>...<mspace.../>...</mo>+. + + +\<configure mathltx amsopn\><<< +\def\:tempc{\qopname\relax m{lim inf}} +\HLet\liminf=\:tempc +\def\:tempc{\qopname\relax m{lim sup}} +\HLet\limsup=\:tempc +\def\:tempc{\qopname\relax m{proj lim}} +\HLet\projlim=\:tempc +\def\:tempc{\qopname\relax m{inj lim}} +\HLet\injlim=\:tempc +>>> + + + + + +Why originally the accents are defined within a group? (knuth answer +this in the texbook.) + +\<plain,latex mathltx\><<< +\let\A:oalign|=\a:oalign +\let\B:oalign|=\b:oalign +\Configure{oalign} + {\ifmmode \Configure{$}{\Tg<mrow\Hnewline>}{\Tg</mrow>}{}% + \let\halign|=\TeXhalign + \Tg<mrow\Hnewline \mml:class="oalign">\else\A:oalign + \fi} + {\ifmmode \Tg</mrow>\else\B:oalign\fi} +>>> + + +\<configure mathltx amsopn\><<< +\Configure{qopname} + {\Configure{mathop}{*} + {\string\mathop\l:brace} + {\r:brace} + {}} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\section{Eqnarray} +%%%%%%%%%%%%%%%%%%%% + +\<mathltx latex\><<< +\Configure{eqnarray} + {\HCode{\string\begin{eqnarray\ifx + \@seqncr\@eqncr\else *\fi}}} + {\HCode{\string\end{eqnarray\ifx + \@seqncr\@eqncr\else *\fi}}} + {} + {\HCode{\string\\\Hnewline}} + {\ifnum \HCol>1 + \ifnum \HCol=4 + \HCode{\%}% + |<start mtext space|>\PauseMathClass + \mtexttrue + \fi \HCode{\a:math:amp}% + \fi} + {\ifnum \HCol=4 \mtextfalse + \EndPauseMathClass |<end mtext space|>\fi } +>>> + + + + +\<configure html-mltx latex\><<< +|<config multicolumn|> +>>> + + +\<configure html-mltx array\><<< +|<config multicolumn|> +>>> + + +\<config multicolumn\><<< +\Configure{multicolumn} + {\let\sv:VBorder\VBorder + \let\VBorder\empty + \Configure{VBorder}{}{}{}{}% + } + {\let\VBorder\sv:VBorder} + {\ifmmode \HCode{\l:brace}% + {|<attributes of mml multicolumn|>\HColAlign}% + \HCode{\r:brace\l:brace}\else + \ifvmode\IgnorePar\fi + \HCode{<div class="multicolumn" }\HColAlign\HCode{>}\fi } + {\ifmmode \HCode{\r:brace}\else + \ifvmode\IgnorePar\fi \EndP\HCode{</div>}\fi } +\def\gob:sp#1{#1} +>>> + + +\<attributes of mml multicolumn\><<< +\Configure{halignTD} {}{} + {<}{\HCode{l}} + {-}{\HCode{c}} + {>}{\HCode{r}} + {p}{\HCode{l}} + {}% +>>> + + +\<configure html-mltx tex4ht\><<< +\Configure{halignTD} {}{} + {<}{\ifmathltx \HCode{ columnalign="left-0"}\else + \HCode{ style="text-align:left; white-space:nowrap;"}\fi} + {-}{\ifmathltx \HCode{ columnalign="center"}\else + \HCode{ style="text-align:center; white-space:nowrap;"}\fi} + {>}{\ifmathltx \HCode{ columnalign="right"}\else + \HCode{ style="text-align:right; white-space:nowrap;"}\fi} + {^}{\ifmathltx \HCode{ rowalign="top"}\else + \HCode{ style="vertical-align:top; white-space:nowrap;"}\fi} + {=}{\ifmathltx \HCode{ rowalign="baseline"}\else + \HCode{ style="vertical-align:baseline; white-space:nowrap;"}\fi} + {||}{\ifmathltx \HCode{ rowalign="center"}\else + \HCode{ style="vertical-align:middle; white-space:nowrap;"}\fi} + {_}{\ifmathltx \HCode{ rowalign="bottom"}\else + \HCode{ style="vertical-align:bottom; white-space:nowrap;"}\fi} + {p}{\ifmathltx \HCode{ columnalign="left-1"}\else + \HCode{ style="text-align:left;"}\fi} + {} +>>> + + + + +\<configure mathltx tex4ht\><<< +\Configure{halignTD} {}{} + {<}{\HCode{ columnalign="left-3"}} + {-}{\HCode{ columnalign="center"}} + {>}{\HCode{ columnalign="right"}} + {^}{\HCode{ rowalign="top"}} + {=}{\HCode{ rowalign="baseline"}} + {||}{\HCode{ rowalign="center"}} + {_}{\HCode{ rowalign="bottom"}} + {p}{\HCode{ columnalign="left-4"}} + {} +>>> +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Big, BIG, ....} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\</bigl, /bigr,... for mathltx\><<< +\def\:tempc#1{\HCode{\l:brace\string\bigl\space\string#1}} +\HLet\bigl=\:tempc +\def\:tempc#1{\HCode{\string\bigm\space\string#1}} +\HLet\bigm=\:tempc +\def\:tempc#1{\HCode{\string\bigr\space\string #1\r:brace}} +\HLet\bigr=\:tempc +\def\:tempc#1{\HCode{\l:brace\string\Bigl\space\string#1}} +\HLet\Bigl=\:tempc +\def\:tempc#1{\HCode{\string\Bigm\space\string#1}} +\HLet\Bigm=\:tempc +\def\:tempc#1{\HCode{\string\Bigr\space\string #1\r:brace}} +\HLet\Bigr=\:tempc +\def\:tempc#1{\HCode{\l:brace\string\biggl\space\string#1}} +\HLet\biggl=\:tempc +\def\:tempc#1{\HCode{\string\biggm\space\string#1}} +\HLet\biggm=\:tempc +\def\:tempc#1{\HCode{\string\biggr\space\string #1\r:brace}} +\HLet\biggr=\:tempc +\def\:tempc#1{\HCode{\l:brace\string\Biggl\space\string#1}} +\HLet\Biggl=\:tempc +\def\:tempc#1{\HCode{\string\Biggm\space\string#1}} +\HLet\Biggm=\:tempc +\def\:tempc#1{\HCode{\string\Biggr\space\string #1\r:brace}} +\HLet\Biggr=\:tempc +>>> + + + +\<mathltx plain,fontmath\><<< +\def\:tempc#1{{\HCode{\string\big\string{}\string#1\HCode{\string}}}} +\HLet\big=\:tempc +\def\:tempc#1{{\HCode{\string\Big\string{}\string#1\HCode{\string}}}} +\HLet\Big=\:tempc +\def\:tempc#1{{\HCode{\string\bigg\string{}\string#1\HCode{\string}}}} +\HLet\bigg=\:tempc +\def\:tempc#1{{\HCode{\string\Bigg\string{}\string #1\HCode{\string}}}} +\HLet\Bigg=\:tempc +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{stackrel} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<mathltx latex\><<< +\def\:temp#1#2{{\a:stackrel{#1}\b:stackrel {#2}\c:stackrel}} +\HLet\stackrel|=\:temp +\:CheckOption{stackrel-} \if:Option + \Configure{stackrel} + {\mathrel\bgroup \HCode{<mglyph\Hnewline + alt="\string\stackrel}\afterassignment\put:arg\tmp:toks} + {\afterassignment\put:arg\tmp:toks} + {\HCode{" />}\egroup} + \def\put:arg{\HCode{{\the\tmp:toks}}} +\else + \Configure{stackrel} + {\HCode{\string\stackrel\l:brace}}% + {\HCode{\r:brace\l:brace}|<mathop nested within stackrel|>\mathop} + {\HCode{\r:brace}} +\fi +>>> + +\<mathop nested within stackrel\><<< +\Configure{mathop*}{*} + {\string\mathop\l:brace} + {\r:brace} + {\Configure{mathop}{}{}{}{}}% +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{fontmath.ltx} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure mathltx Preamble\><<< +\bgroup + \catcode`\{=12 \catcode`\}=12 + \catcode`\[=1 \catcode`\]=2 + \catcode`\/=0 \catcode`\\=12 + /gdef/l:brace[{] + /gdef/r:brace[}] + /gdef/back:slash[\] +/egroup +>>> + +\<mathltx plain,fontmath\><<< +\Configure{overbrace} + {\Configure{mathop*}{*} + {\string\overbrace\l:brace} + {\r:brace} + {\Configure{mathop}{}{}{}{}}% + } + {\let\o:overbrace:=\displaystyle} + {} +\Configure{underbrace} + {\Configure{mathop*}{*} + {\string\underbrace\l:brace} + {\r:brace} + {\Configure{mathop}{}{}{}{}}% + } + {\let\o:underbrace:=\displaystyle} + {} +>>> + + +\<mathltx plain,fontmath\><<< +% \Configure{MathClass}{0}{*}{<mi\Hnewline>}{</mi>}{} + \Configure{MathClass}{1}{*}{\string\mathop\l:brace}{\r:brace}{} +% \Configure{MathClass}{2}{*}{<mo\Hnewline +% \mml:class="MathClass-bin">}{</mo>}{} +% \Configure{MathClass}{3}{*}{<mo\Hnewline +% \mml:class="MathClass-rel">}{</mo>}{} +\:CheckOption{mathltx-} \if:Option + \Configure{MathClass}{4}{*}{}{}{} + \Configure{MathClass}{5}{*}{}{}{} +\else + \Log:Note{for sources failing to produce + clean mathltx code, try the command line option `mathltx-'}% +\fi + +%\Configure{MathClass}{6}{*}{<mo\Hnewline +% \mml:class="MathClass-punc">}{</mo>}{} +% \Configure{MathClass}{7}{*}{<mn>}{</mn>} +% {0123456789} +\Configure{FormulaClass}{0}{}{}{} +\Configure{FormulaClass}{1}{}{}{} +\Configure{FormulaClass}{2}{}{}{} +\Configure{FormulaClass}{3}{}{}{} +\Configure{FormulaClass}{4}{}{}{} +\Configure{FormulaClass}{5}{}{}{} +\Configure{FormulaClass}{6}{}{}{} +>>> + + +\<configure mathltx fontmathNO\><<< +\def\:tempa#1{% + \def\:temp{\HCode{\string\firstOfOne}\,\HCode{\string#1\space}}% + \HLet#1\:temp } +\:tempa\bigcap +\:tempa\bigcirc +\:tempa\bigcup +\:tempa\bigodot +\:tempa\bigoplus +\:tempa\bigotimes +\:tempa\bigsqcup +\:tempa\bigtriangledown +\:tempa\bigtriangleup +\:tempa\biguplus +\:tempa\bigvee +\:tempa\bigwedge +\:tempa\coprod +\:tempa\int +\:tempa\intop +\:tempa\ointop +\:tempa\prod +\:tempa\sum +>>> + + + + + +\<configure mathltx fontmathNO\><<< +\def\:tempa#1{% + \def\:temp{\HCode{\string#1\space}}% + \HLet#1\:temp } +\:tempa\Delta +\:tempa\Gamma +\:tempa\Im +\:tempa\Lambda +\:tempa\Leftarrow +\:tempa\Leftrightarrow +\:tempa\Omega +\:tempa\Phi +\:tempa\Pi +\:tempa\Psi +\:tempa\Re +\:tempa\Rightarrow +\:tempa\Sigma +\:tempa\Theta +\:tempa\Upsilon +\:tempa\Xi +\:tempa\aleph +\:tempa\alpha +\:tempa\amalg +\:tempa\angle +\:tempa\approx +\:tempa\ast +\:tempa\asymp +\:tempa\beta +\:tempa\bot +\:tempa\bullet +\:tempa\cap +\:tempa\cdot +\:tempa\chi +\:tempa\circ +\:tempa\clubsuit +\:tempa\coprod +\:tempa\cup +\:tempa\dagger +\:tempa\dashv +\:tempa\ddagger +\:tempa\delta +\:tempa\diamond +\:tempa\diamondsuit +\:tempa\div +\:tempa\ell +\:tempa\emptyset +\:tempa\epsilon +\:tempa\equiv +\:tempa\eta +\:tempa\exists +\:tempa\flat +\:tempa\forall +\:tempa\frown +\:tempa\gamma +\:tempa\ge +\:tempa\geq +\:tempa\gg +\:tempa\hbar +\:tempa\heartsuit +\:tempa\imath +\:tempa\in +\:tempa\infty +\:tempa\intop +\:tempa\iota +\:tempa\jmath +\:tempa\kappa +\:tempa\lambda +\:tempa\land +\:tempa\le +\:tempa\leftarrow +\:tempa\leftharpoondown +\:tempa\leftharpoonup +\:tempa\leftrightarrow +\:tempa\leq +\:tempa\ll +\:tempa\lnot +\:tempa\lor +\:tempa\mapstochar +\:tempa\mid +\:tempa\mp +\:tempa\mu +\:tempa\nabla +\:tempa\natural +\:tempa\ne +\:tempa\nearrow +\:tempa\neg +\:tempa\neq +\:tempa\ni +\:tempa\not +\:tempa\nu +\:tempa\nwarrow +\:tempa\odot +\:tempa\oint +\:tempa\ointop +\:tempa\omega +\:tempa\ominus +\:tempa\oplus +\:tempa\oslash +\:tempa\otimes +\:tempa\parallel +\:tempa\partial +\:tempa\perp +\:tempa\phi +\:tempa\pi +\:tempa\pm +\:tempa\prec +\:tempa\preceq +\:tempa\prime +\:tempa\prod +\:tempa\propto +\:tempa\psi +\:tempa\rho +\:tempa\rightarrow +\:tempa\rightharpoondown +\:tempa\rightharpoonup +\:tempa\searrow +\:tempa\setminus +\:tempa\sharp +\:tempa\sigma +\:tempa\sim +\:tempa\sim +\:tempa\simeq +\:tempa\simeq +\:tempa\smallint +\:tempa\smile +\:tempa\spadesuit +\:tempa\sqcap +\:tempa\sqcup +\:tempa\sqsubseteq +\:tempa\sqsupseteq +\:tempa\star +\:tempa\subset +\:tempa\subseteq +\:tempa\succ +\:tempa\succeq +\:tempa\sum +\:tempa\supset +\:tempa\supseteq +\:tempa\surd +\:tempa\swarrow +\:tempa\tau +\:tempa\theta +\:tempa\times +\:tempa\top +\:tempa\triangle +\:tempa\triangleleft +\:tempa\triangleright +\:tempa\uplus +\:tempa\upsilon +\:tempa\varbigtriangledown +\:tempa\varbigtriangleup +\:tempa\varepsilon +\:tempa\varphi +\:tempa\varpi +\:tempa\varrho +\:tempa\varsigma +\:tempa\vartheta +\:tempa\vdash +\:tempa\vee +\:tempa\wedge +\:tempa\wp +\:tempa\wr +\:tempa\xi +\:tempa\zeta +>>> + + + + +\<configure mathltx amsmath\><<< +\def\:temp{\HCode{\string\firstOfOne}\,\HCode{\string\int + \string\int\space}} +\HLet\iint\:temp +\def\:temp{\HCode{\string\firstOfOne}\,\HCode{\string\int + \string\int\string\int\space}} +\HLet\iiint\:temp +\def\:temp{\HCode{\string\Rightarrow }} +\HLet\implies\:temp +\def\:temp{\HCode{\string\Leftarrow }} +\HLet\impliedby\:temp +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Limits of Sub- snd Super- Scripts} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<limits sub, sup, subsup\><<< +\Configure{nolimits}{\HCode{\string\nolimits\space}} +\Configure{limits} + {\let|<restore SUB|>=\:UnDef + \let|<restore SUP|>=\:UnDef + \ifx \:temp\sp |<conf limits SUP|>\else + \ifx \:temp\sb |<conf limits SUB|>\fi\fi + |<conf limits SUBSUP|>% + } +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Simultaneously Sub- and Super- Scripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<conf limits SUBSUP\><<< +|<save pre-limits SUBSUP|>% +\Configure{SUBSUP} + {\ifx |<restore SUB|>\:UnDef\else |<restore SUB|>\fi + \ifx |<restore SUP|>\:UnDef\else |<restore SUP|>\fi + |<restore pre-limits SUBSUP|>% + \Send{BACK}{\l:brace}\HCode{\r:brace + \string_\l:brace}\trap:base + } + {\HCode{\r:brace\string^\l:brace}\trap:base} + {\HCode{\r:brace}} +>>> + + +\<save pre-limits SUBSUP\><<< +\let\pl:SUBSUP=\SUBSUP: +>>> + +\<restore pre-limits SUBSUP\><<< +\ifx \pl:SUBSUP\:UnDef \else + \let\SUBSUP:=\pl:SUBSUP +\fi +>>> + +\<limits sub, sup, subsup\><<< +\ifx \a:putSUB\:UnDef \else + \pend:def\a:putSUB{\ifx \pl:SUBSUP\:UnDef\else + \let\SUBSUP:=\pl:SUBSUP + \let\pl:SUBSUP=\:UnDef + \fi}% +\fi +\ifx \a:putSUP\:UnDef \else + \pend:def\a:putSUP{\ifx \pl:SUBSUP\:UnDef\else + \let\SUBSUP:=\pl:SUBSUP + \let\pl:SUBSUP=\:UnDef + \fi}% +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Superscripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<conf limits SUP\><<< +|<save pre-limits SUP|>% +\Configure{SUP} + {|<open external limits SUP|>\bgroup + |<restore pre-limits SUBSUP|>% + |<conf second limits SUP|>\trap:base} + {}% +>>> + +\<save pre-limits SUP\><<< +\def\pl:SUP{\Configure{SUP}}% +\expandafter\append:def + \expandafter\pl:SUP\expandafter{\expandafter{\a:SUP}}% +\expandafter\append:def + \expandafter\pl:SUP\expandafter{\expandafter{\b:SUP}}% +>>> + + +\<conf second limits SUP\><<< +\Configure{SUP} + {|<open intermediate limits SUP|>\bgroup + |<conf third limit SUP|>\trap:base} + {\egroup|<close external limits SUP|>}% +>>> + + +\<conf third limit SUP\><<< +\Configure{SUP} + {|<open internal limits SUP|>\bgroup \trap:base} + {\egroup |<close internal limits SUP|>}% +>>> + + +\<open external limits SUP\><<< +\Send{BACK}{\l:brace}\HCode{\r:brace\string^\l:brace}\trap:base +>>> + + +\<close external limits SUP\><<< +\HCode{\r:brace}\aftergroup|<restore SUP|>% +>>> + +\<restore SUP\><<< +\pl:SUP >>> + + +\<open intermediate limits SUP\><<< +\Send{BACK}{\l:brace}\HCode{\r:brace\string^\l:brace}\trap:base +>>> + +\<open internal limits SUP\><<< +\Send{BACK}{\l:brace}\HCode{\r:brace\string^\l:brace}% +>>> + +\<close internal limits SUP\><<< +\HCode{\r:brace}% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Subscripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<conf limits SUB\><<< +|<save pre-limits SUB|>% +\Configure{SUB} + {|<open external limits SUB|>\bgroup + |<restore pre-limits SUBSUP|>% + |<conf second limits SUB|>\trap:base} + {}% +>>> + +\<save pre-limits SUB\><<< +\def\pl:SUB{\Configure{SUB}}% +\expandafter\append:def + \expandafter\pl:SUB\expandafter{\expandafter{\a:SUB}}% +\expandafter\append:def + \expandafter\pl:SUB\expandafter{\expandafter{\b:SUB}}% +>>> + +\<conf second limits SUB\><<< +\Configure{SUB} + {|<open intermediate limits SUB|>\bgroup + |<conf third limit SUB|>\trap:base} + {\egroup|<close external limits SUB|>}% +>>> + + +\<conf third limit SUB\><<< +\Configure{SUB} + {|<open internal limits SUB|>\bgroup \trap:base} + {\egroup |<close internal limits SUB|>}% +>>> + + +\<open external limits SUB\><<< +\Send{BACK}{\l:brace}\HCode{\r:brace\string_\l:brace}% +>>> + +\<close external limits SUB\><<< +\HCode{\r:brace}\aftergroup|<restore SUB|>% +>>> + +\<restore SUB\><<< +\pl:SUB >>> + +\<open intermediate limits SUB\><<< +\Send{BACK}{\l:brace}\HCode{\r:brace\string_\l:brace}% +>>> + +\<open internal limits SUB\><<< +\Send{BACK}{\l:brace}\HCode{\r:brace\string_\l:brace}% +>>> + +\<close internal limits SUB\><<< +\HCode{\r:brace}% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sized Operations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<plain,latex mathltx\><<< +\def\mathop:prefix#1{% + \Configure{mathop}{*}{}{}% + {\Configure{mathop}{*}{\string\mathop\l:brace}{\r:brace}{}}} +>>> + +The nested configuration of mathop is needed for cases similar to that +of \verb!\log! i. +\verb/$$ \sum_a^b =\log 2 $$/ + + +\<configure mathltx amsmath\><<< +\pend:def\n:iint:{\ifDisplayMath\mathop:prefix{mathsize="big"}\fi} +\pend:def\n:iiint:{\ifDisplayMath\mathop:prefix{mathsize="big"}\fi} +\pend:def\n:idotsint:{\ifDisplayMath\mathop:prefix{mathsize="big"}\fi} +>>> + +\<configure mathltx fontmath\><<< +\def\:tempd#1#2{% + \expandafter\def\csname #1\endcsname{\mathchar"13#2\relax}% + \MathSymbol\mathop{#1}% + \expandafter\def\csname #1:limits\endcsname{\expandafter + \:same \math:sym\mathop{#1}\limits}% + \expandafter\def\csname #1:nolimits\endcsname{\expandafter + \:same \math:sym\mathop{#1}\nolimits}% + \expandafter\edef\csname n:#1:\endcsname{\noexpand\ifDisplayMath + \noexpand\expandafter \expandafter\noexpand + \csname #1:limits\endcsname + \noexpand\else \noexpand\expandafter + \expandafter\noexpand + \csname #1:nolimits\endcsname\noexpand\fi}% + \expandafter\pend:def\csname n:#1:\endcsname{\ifDisplayMath + \mathop:prefix{mathsize="big"}\fi}% +} +\:tempd{bigcap}{54} +\:tempd{bigcup}{53} +\:tempd{bigodot}{4A} +\:tempd{bigoplus}{4C} +\:tempd{bigotimes}{4E} +\:tempd{bigsqcup}{46} +\:tempd{biguplus}{55} +\:tempd{bigvee}{57} +\:tempd{bigwedge}{56} +\:tempd{coprod}{60} +\:tempd{intop}{52} +\:tempd{ointop}{48} +\:tempd{prod}{51} +\:tempd{sum}{50} +>>> + +\<configure mathltx tex4ht\><<< +\def\math:sym#1#2{{\relax\ifmmode \expandafter#1\fi + {\ifmmode\HCode{\string#1\l:brace}\fi + \csname a:#2\endcsname + \ifmmode\HCode{\r:brace}\fi}}} +>>> + + +\<configure mathltx fontmath\><<< +\ifx \ilimits@\o:nolimits: + \let\ilimits@\nolimits +\fi +\ifx \ilimits@\o:nolimits: + \let\slimits@\nolimits +\fi +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Accent through `accents' Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure mathltx latex\><<< +|<shared latex,amsmath math accents|> +>>> + +\<configure mathltx amsmath\><<< +|<shared latex,amsmath math accents|> +\def\:tempc#1{\HCode{\string\dddot\l:brace}#1\HCode{\r:brace}} +\HLet\dddot=\:tempc +\def\:tempc#1{\HCode{\string\ddddot\l:brace}#1\HCode{\r:brace}} +\HLet\ddddot=\:tempc +>>> + +\<shared latex,amsmath math accents\><<< +\def\:tempc#1{\HCode{\string\H\l:brace}#1\HCode{\r:brace}} +\HLet\H=\:tempc +\def\:tempc#1{\HCode{\string\acute\l:brace}#1\HCode{\r:brace}} +\HLet\acute=\:tempc +\def\:tempc#1{\HCode{\string\bar\l:brace}#1\HCode{\r:brace}} +\HLet\bar=\:tempc +\def\:tempc#1{\HCode{\string\breve\l:brace}#1\HCode{\r:brace}} +\HLet\breve=\:tempc +\def\:tempc#1{\HCode{\string\c\l:brace}#1\HCode{\r:brace}} +\HLet\c=\:tempc +\def\:tempc#1{\HCode{\string\cedil\l:brace}#1\HCode{\r:brace}} +\HLet\cedil=\:tempc +\def\:tempc#1{\HCode{\string\check\l:brace}#1\HCode{\r:brace}} +\HLet\check=\:tempc +\def\:tempc#1{\HCode{\string\d\l:brace}#1\HCode{\r:brace}} +\HLet\d=\:tempc +\def\:tempc#1{\HCode{\string\ddot\l:brace}#1\HCode{\r:brace}} +\HLet\ddot=\:tempc +\def\:tempc#1{\HCode{\string\dot\l:brace}#1\HCode{\r:brace}} +\HLet\dot=\:tempc +\def\:tempc#1{\HCode{\string\grave\l:brace}#1\HCode{\r:brace}} +\HLet\grave=\:tempc +\def\:tempc#1{\HCode{\string\hat\l:brace}#1\HCode{\r:brace}} +\HLet\hat=\:tempc +\def\:tempc#1{\HCode{\string\ring\l:brace}#1\HCode{\r:brace}} +\HLet\ring=\:tempc +\def\:tempc#1{\HCode{\string\t\l:brace}#1\HCode{\r:brace}} +\HLet\t=\:tempc +\def\:tempc#1{\HCode{\string\tilde\l:brace}#1\HCode{\r:brace}} +\HLet\tilde=\:tempc +\def\:tempc#1{\HCode{\string\udot\l:brace}#1\HCode{\r:brace}} +\HLet\udot=\:tempc +\def\:tempc#1{\HCode{\string\uml\l:brace}#1\HCode{\r:brace}} +\HLet\uml=\:tempc +\def\:tempc#1{\HCode{\string\vec\l:brace}#1\HCode{\r:brace}} +\HLet\vec=\:tempc +>>> + +Can \verb=\r= appear in math mode? If not, the following is not needed. + +\<shared latex,amsmath math accents\><<< +\ifx\jsm:r\:UnDef + \let\jsm:r\r + \def\:tempc#1{\ifmmode\HCode{\string\r\l:brace}#1\HCode{\r:brace}% + \else \jsm:r{#1}\fi } + \HLet\r=\:tempc +\fi +>>> + +\<config mathltx accents\><<< +|<temp indirect accents|> +\Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|<temp hcode accents|>% + \ht:special{t4ht@[}\if!#1!x\else#2\fi + \ht:special{t4ht@]}}} + {\ifmathltx + \ifmtext |<accent in text mode|>% + \else \AccentMath{|<under over accents|>}\fi + \else |<accent in text mode|>\fi + } +>>> + +\<accent in text mode\><<< +\expandafter\ifx \csname :#1:over\endcsname\relax + \expandafter\ifx \csname :#1:under\endcsname\relax + \AccentMath{|<under over accents|>}% + \else #3\csname :#1:under\endcsname \fi +\else #3\csname :#1:over\endcsname \fi +>>> + +\<under over accents\><<< +\expandafter\ifx \csname :#1:over\endcsname\relax + |<under accents|>% +\else \expandafter\ifx \csname :#1:under\endcsname\relax + |<over accents|>% +\else + |<both accents|>% +\fi \fi +>>> + +\<under accents\><<< +\HCode{<munder\Hnewline + accent="true"><mrow\Hnewline>}#3\HCode{</mrow>}% + \csname :#1:under\endcsname + \HCode{</munder>}% +>>> + +\<over accents\><<< +\HCode{<mover\Hnewline + accent="true"><mrow\Hnewline>}#3\HCode{</mrow>}% + \csname :#1:over\endcsname + \HCode{</mover-1>}% +>>> + +\<both accents\><<< +\HCode{<munderover-3\Hnewline + accent="true"><mrow\Hnewline>}#3\HCode{</mrow>}% + \csname :#1:under\endcsname + \csname :#1:over\endcsname + \HCode{</munderover>}% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Underline and Overline} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-mltx latex\><<< +\Configure{overline} + {\bgroup\ifmathltx |<mathltx overline|>\else + \HCode{<span class="overline">}\fi} + {\ifmathltx |<end mathltx overline|>\else \HCode{</span>}\fi\egroup} +\Configure{underline} + {\bgroup + \ifmathltx |<mathltx underline|>% + \else |<nomath underline|>\HCode{<span class="underline">}\fi} + {\ifmathltx |<end mathltx underline|>\else \HCode{</span>}\fi \egroup} +>>> + + +\<mathltx latex\><<< +|<und/ov-erline|> +>>> + +\<mathltx plain\><<< +|<und/ov-erline|> +>>> + + +\<und/ov-erline\><<< +\Configure{overline} + {\bgroup |<mathltx overline|>} + {|<end mathltx overline|>\egroup} +\Configure{underline} + {\bgroup \ifmmode |<mathltx underline|>\else + |<nomath underline|>\fi} + {|<end mathltx underline|>\egroup} +>>> + +\<nomath underline\><<< +\expandafter\everymath +\expandafter{\expandafter\everymath + \expandafter{\the\everymath}}% +\let\o::@underline:\o:@@underline: +\def\o:@@underline:{\let\o:@@underline:\o::@underline:}% +>>> + + + + + + + + + + + +\<mathltx overline\><<< +\HCode{\string\overline\l:brace}% +>>> + +\<end mathltx overline\><<< +\HCode{\r:brace}% +>>> + + +\<mathltx underline\><<< +\HCode{\string\underline\l:brace}% +>>> + +\<end mathltx underline\><<< +\HCode{\r:brace}% +>>> + + +\verb'̲' is the code of \verb'_' + + + + + +\<mathltx plain\><<< +|<arr: amsmath, amstex1|> +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-mltx latex\><<< +\Configure{footnote-mark} + {\ifmathltx \ifmtext \else + \HCode{<mrow \mml:class="footnote-mark">}\fi + \else \HCode{<span class="footnote-mark">}\fi } + {\ifmathltx \ifmtext \else \HCode{</mrow>}\fi + \else \HCode{</span>}\fi } +\Configure{thank-mark} + {\HCode{<\ifmathltx mrow \expandafter\mml:class\else span class\fi + ="thank-mark">}} + {\HCode{</\ifmathltx mrow\else span\fi>}} +>>> + + + + + +The following code segments handle the different listed cases, +with possible exception of the last. + +\begin{verbatim} +a\footnote{b c} + +$a\footnote{b c}$ + +$a\footnote{\hbox{b c}}$ + +$a\footnote{\mbox{b c}}$ + +$a\mbox{\footnote{b c}}$ +\end{verbatim} + + +We have the following hooks + + +\begin{verbatim} +\def\@footnotemark{...\a:@makefnmark\@makefnmark + \b:@makefnmark...} +\long\def\@footnotetext#1{...\a:footnote-text\a:@makefntext + \@makefntext{\b:@makefntext + \a:@makefnbody #1\b:@makefnbody + }\c:@makefntext\b:footnote-text...} +\end{verbatim} + + + + + +\<configure html-mltx latex\><<< +\:CheckOption{fn-in}\if:Option \else + \expandafter\let\csname A:footnote-text\expandafter\endcsname + \csname a:footnote-text\endcsname + \expandafter\let\csname B:footnote-text\expandafter\endcsname + \csname b:footnote-text\endcsname + \NewConfigure{footnote-text}[2]{% + \expandafter\def\csname a:footnote-text\endcsname{% + #1% + \ifmathltx + \HCode{<\a:@math\Hnewline + \csname a:math-xmlns\endcsname \Hnewline >% + \ifmtext <mtext>\fi} + \fi + \ifmathltx \fi + }% + \expandafter\def\csname b:footnote-text\endcsname{% + \ifmathltx + \HCode{\ifmtext</mtext>\fi </\a:@math>}% + \fi + #2% + }% + } + \Configure{footnote-text} + {\csname A:footnote-text\endcsname} + {\csname B:footnote-text\endcsname} +\fi +>>> + + + +\<configure html-mltx latex\><<< +\let\A:footnotetext=\a:footnotetext +\let\B:footnotetext=\b:footnotetext +\let\C:footnotetext=\c:footnotetext +\NewConfigure{footnotetext}[3]{% + \def\a:footnotetext{% + \ifmathltx \ifmtext |<end mtext space|>\fi\fi + #1% + \ifmathltx \ifmtext |<end mtext space|>\fi\fi + }% + \def\b:footnotetext{% + \ifmathltx \ifmtext |<end mtext space|>\fi\fi + #2% + \ifmathltx \ifmtext |<end mtext space|>\fi\fi + }% + \def\c:footnotetext{% + \ifmathltx \ifmtext |<end mtext space|>\fi\fi + #3% + \ifmathltx \ifmtext |<start mtext space|>\fi\fi + }% +} +\Configure{footnotetext} + {\A:footnotetext} + {\B:footnotetext} + {\C:footnotetext} +>>> + +\<configure html-mltx latex\><<< +\Configure{footnotebody} + {\tmp:toks=} + {\ifmathltx \ifmmode $\mbox{$\the\tmp:toks$}$ + \else $\mbox{\the\tmp:toks}$\fi + \else \the\tmp:toks\fi} +>>> + + +\<configure html-mltx latex\><<< +\:CheckOption{mouseover} \if:Option + \pend:def\js:on{\ifmathltx \ifmtext |<end mtext space|>\fi\fi} + \append:def\js:on{\ifmathltx \ifmtext |<start mtext space|>\fi\fi} +\fi +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Space Characters} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<plain,latex mathltx\><<< +\def\:nbsp{\ifmtext |<unicode space|>\else\ifmathltx + \Tg<mspace />\else |<unicode space|>\fi\fi} +>>> + +\<unicode space\><<< +\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x% +>>> + +% \HCode{\string&}\HChar{-35}\HCode{x00A0;}% + + +\<configure html-mltx frenchb\><<< +\Configure{frenchb-nbsp} + {\ifmtext |<unicode space|>\else\ifmathltx + \Tg<mspace class="frenchb-nbsp" />% + \else + \ht:special{t4ht@?unhskip}\HCode{<span class="frenchb-thinspace">}% + |<unicode space|>\HCode{</span>}% + \fi\fi + \setbox\tmp:bx=\hbox\bgroup} + {\egroup} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Matrices} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Aligned} +%%%%%%%%%%%%% + + + +\<configure mathltx amsmath\><<< +\Configure{aligned} + {\HCode{\string\begin{aligned}}} + {\HCode{\string\end{aligned}}} + {} + {\HCode{\string\\}} + {\ifnum \HCol>1\HCode{\a:math:amp}\fi} {} +\Configure{alignedat} + {\HCode{\string\begin{alignedat}}} + {\HCode{\string\end{alignedat}}} + {} + {\HCode{\string\\}} + {\ifnum \HCol>1\HCode{\a:math:amp}\fi} {} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{Cases} +%%%%%%%%%%%%%%%%% + +\<plain,latex mathltx\><<< +\Configure{cases} + {}{} + {\HCode{\string\cases\l:brace}} + {\ifvmode \IgnorePar\fi \HCode{\r:brace}} + {\ifnum \HRow>1 \HCode{\string\cr\space}\fi} + {} + {|<mtd matrix|>} + {} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{matrix} +%%%%%%%%%%%%%%%%%%%% + +\<plain,latex mathltx\><<< +\Configure{matrix} + {\HCode{\string\matrix\l:brace}} + {\HCode{\r:brace}} + {\ifnum \HRow>1 \HCode{\string\cr\space}\fi} + {} + {|<mtd matrix|>} + {} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{pmatrix} +%%%%%%%%%%%%%%%%%%%% + + +The grouping below is handle the case that the matrix is a base of an +exponent. + + +\<plain,latex mathltx\><<< +\Configure{pmatrix} {\bgroup} {\egroup} +>>> + + + +The grouping below is handle the case that the matrix is a base of an +exponent. The \verb|\,| configurations is for facilitating the +catching of left subscripts and superscripts. + + +\<plain,latex mathltx\><<< +\Configure{quad}{{\ifmathltx \ifmtext \o:quad:\else + {\HCode{\string\quad\space}}\fi + \else \o:quad: \fi}} +\Configure{qquad}{{\ifmathltx \ifmtext \o:qquad:\else + {\HCode{\string\qquad\space}}\fi + \else \o:qquad: \fi}} +\Configure{,} + {{\HCode{\string\,}}} +>>> + + + + +%%%%%%%%%%%%%%%%%%%% +\section{TeX} +%%%%%%%%%%%%%%%%%%%% + + +\<mathltx plain\><<< +\Configure{eqalignno} + {\HCode{<mtable \mml:class="eqalignno">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="eqalignno">}} + {\HCode{</mtr>}} + {\HCode{<mtd \Hnewline \mml:class="eqalignno-\HCol">}} + {\HCode{</mtd>}} +\def\:eqalignno:{\Configure{noalign} + {\HCode{<mtr><mtd \mml:class="noalign" colspan="2">}}% + {\HCode{</mtd></mtr>}}} +>>> + + +\<mathltx plain\><<< +\Configure{leqalignno} + {\HCode{<mtable \mml:class="leqalignno">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="leqalignno">}} + {\HCode{</mtr>}} + {\HCode{<mtd \Hnewline \mml:class="leqalignno-\HCol">}} + {\HCode{</mtd>}} +\def\:leqalignno:{\Configure{noalign} + {\HCode{<mtr><mtd \mml:class="noalign" colspan="2">}}% + {\HCode{</mtd></mtr>}}} +>>> + +\section{Fractions} + + + + + + + +\<amstex.sty mathltx\><<< +|<config mathltx amstex1|> +>>> + + +\<config mathltx amstex1\><<< +\ConfigureEnv{aligned}{}{}{}{} +\Configure{aligned} + {\HCode{<mtable\Hnewline \mml:class="aligned">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline>}} {\HCode{</mtr>}} + {\HCode{<mtd>}} {\HCode{</mtd>}} +>>> + + +\<amstex.tex mathltx\><<< +\Configure{multilimits} + {\HCode{<mtable\Hnewline \mml:class="multilimits">}} + {\HCode{</mtable>}} + {\HCode{<mtr><mtd\Hnewline>}} + {\HCode{</mtd></mtr>}} +\Configure{smallmatrix} + {\HCode{<mtable\Hnewline \mml:class="smallmatrix">}} + {\HCode{</mtable>}} + {\HCode{<mtr>}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline>}} + {\HCode{</mtd>}} +>>> + +\<amstex.tex mathltx\><<< +\Configure{matrix} + {\HCode{<mtable\Hnewline \mml:class="matrix">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline>}} {\HCode{</mtr>}} + {\HCode{|<mtd matrix|>}} {\HCode{</mtd>}} +>>> + +\<amstex.tex mathltx\><<< +\Configure{pmatrix}{\Tg<mrow \mml:class="pmatrix">} + {\Tg</mrow>} +>>> + +\<amstex.tex mathltx\><<< +\Configure{align} + {\HCode{<mtable\Hnewline \mml:class="align">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline>}} {\HCode{</mtr>}} + {\HCode{<mtd>}} {\HCode{</mtd>}} +\Configure{aligned} + {\HCode{<mtable\Hnewline \mml:class="aligned">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline>}} {\HCode{</mtr>}} + {\HCode{<mtd>}} {\HCode{</mtd>}} +>>> + +\<amstex.tex mathltx\><<< +\Configure{cases} + {\Tg<mrow \mml:class="cases">} + {\Tg</mrow>} +\Configure{alignat} + {\HCode{<mtable \mml:class="alignat">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="alignat">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline \mml:class="alignat">}} + {\HCode{</mtd>}} +\Configure{gather} + {\HCode{<mtable \mml:class="gather">}} + {\HCode{</mtable>}} + {\HCode{<mtr\Hnewline \mml:class="gather">}} + {\HCode{</mtr>}} + {\HCode{<mtd\Hnewline \mml:class="gather">}} + {\HCode{</mtd>}} +>>>> + +\<vanilla mathltx\><<< +\Configure{align} + {\EndP\HCode{<mtable\Hnewline \mml:class="align">}} + {\HCode{</mtable>}} + {\HCode{<mtr>}} {\HCode{</mtr>}} + {\HCode{<mtd>}} {\HCode{</mtd>}} +>>> + + + + + + + +% {\mathchar"0403} % \square +% {\mathchar"0404} % \blacksquare +% {\mathchar"0406} % \lozenge +% {\mathchar"0407} % \blacklozenge +% {\mathchar"0438} % \backprime +% {\mathchar"0446} % \bigstar +% {\mathchar"0448} % \blacktriangledown +% {\mathchar"044E} % \blacktriangle +% {\mathchar"044F} % \triangledown +% {\mathchar"045D} % \measuredangle +% {\mathchar"045E} % \sphericalangle +% {\mathchar"0473} % \circledS +% {\mathchar"047B} % \complement +% {\mathchar"051E} % \diagup +% {\mathchar"051F} % \diagdown +% {\mathchar"053F} % \varnothing +% {\mathchar"0540} % \nexists +% {\mathchar"0560} % \Finv +% {\mathchar"0561} % \Game +% {\mathchar"0567} % \eth +% {\mathchar"0569} % \beth +% {\mathchar"056A} % \gimel +% {\mathchar"056B} % \daleth +% {\mathchar"057A} % \digamma +% {\mathchar"057B} % \varkappa +% {\mathchar"057C} % \Bbbk +% {\mathchar"057D} % \hslash + + +\<configure mathltx amssymb\><<< +\def\:tempa#1"#2#3///{\Configure{MathClass}{#2}} +\def\:temp#1{\:tempa#1///{}{}{}{#1}} +\:temp{\mathchar"2400} |% \boxdot |% +\:temp{\mathchar"2401} |% \boxplus |% +\:temp{\mathchar"2402} |% \boxtimes |% +\:temp{\mathchar"2405} |% \centerdot |% +\:temp{\mathchar"240C} |% \boxminus |% +\:temp{\mathchar"2459} |% \veebar |% +\:temp{\mathchar"245A} |% \barwedge |% +\:temp{\mathchar"245B} |% \doublebarwedge |% +\:temp{\mathchar"2464} |% \Cup |% +\:temp{\mathchar"2465} |% \Cap |% +\:temp{\mathchar"2466} |% \curlywedge |% +\:temp{\mathchar"2467} |% \curlyvee |% +\:temp{\mathchar"2468} |% \leftthreetimes |% +\:temp{\mathchar"2469} |% \rightthreetimes |% +\:temp{\mathchar"2475} |% \dotplus |% +\:temp{\mathchar"247C} |% \intercal |% +\:temp{\mathchar"247D} |% \circledcirc |% +\:temp{\mathchar"247E} |% \circledast |% +\:temp{\mathchar"247F} |% \circleddash |% +\:temp{\mathchar"253E} |% \divideontimes |% +\:temp{\mathchar"256C} |% \lessdot |% +\:temp{\mathchar"256D} |% \gtrdot |% +\:temp{\mathchar"256E} |% \ltimes |% +\:temp{\mathchar"256F} |% \rtimes |% +\:temp{\mathchar"2572} |% \smallsetminus |% +\:temp{\mathchar"3408} |% \circlearrowright |% +\:temp{\mathchar"3409} |% \circlearrowleft |% +\:temp{\mathchar"340A} |% \rightleftharpoons |% +\:temp{\mathchar"340B} |% \leftrightharpoons |% +\:temp{\mathchar"340D} |% \Vdash |% +\:temp{\mathchar"340E} |% \Vvdash |% +\:temp{\mathchar"340F} |% \vDash |% +\:temp{\mathchar"3410} |% \twoheadrightarrow |% +\:temp{\mathchar"3411} |% \twoheadleftarrow |% +\:temp{\mathchar"3412} |% \leftleftarrows |% +\:temp{\mathchar"3413} |% \rightrightarrows |% +\:temp{\mathchar"3414} |% \upuparrows |% +\:temp{\mathchar"3415} |% \downdownarrows |% +\:temp{\mathchar"3416} |% \upharpoonright |% +\:temp{\mathchar"3417} |% \downharpoonright |% +\:temp{\mathchar"3418} |% \upharpoonleft |% +\:temp{\mathchar"3419} |% \downharpoonleft |% +\:temp{\mathchar"341A} |% \rightarrowtail |% +\:temp{\mathchar"341B} |% \leftarrowtail |% +\:temp{\mathchar"341C} |% \leftrightarrows |% +\:temp{\mathchar"341D} |% \rightleftarrows |% +\:temp{\mathchar"341E} |% \Lsh |% +\:temp{\mathchar"341F} |% \Rsh |% +\:temp{\mathchar"3420} |% \rightsquigarrow |% +\:temp{\mathchar"3421} |% \leftrightsquigarrow |% +\:temp{\mathchar"3422} |% \looparrowleft |% +\:temp{\mathchar"3423} |% \looparrowright |% +\:temp{\mathchar"3424} |% \circeq |% +\:temp{\mathchar"3425} |% \succsim |% +\:temp{\mathchar"3426} |% \gtrsim |% +\:temp{\mathchar"3427} |% \gtrapprox |% +\:temp{\mathchar"3428} |% \multimap |% +\:temp{\mathchar"3429} |% \therefore |% +\:temp{\mathchar"342A} |% \because |% +\:temp{\mathchar"342B} |% \doteqdot |% +\:temp{\mathchar"342C} |% \triangleq |% +\:temp{\mathchar"342D} |% \precsim |% +\:temp{\mathchar"342E} |% \lesssim |% +\:temp{\mathchar"342F} |% \lessapprox |% +\:temp{\mathchar"3430} |% \eqslantless |% +\:temp{\mathchar"3431} |% \eqslantgtr |% +\:temp{\mathchar"3432} |% \curlyeqprec |% +\:temp{\mathchar"3433} |% \curlyeqsucc |% +\:temp{\mathchar"3434} |% \preccurlyeq |% +\:temp{\mathchar"3435} |% \leqq |% +\:temp{\mathchar"3436} |% \leqslant |% +\:temp{\mathchar"3437} |% \lessgtr |% +\:temp{\mathchar"343A} |% \risingdotseq |% +\:temp{\mathchar"343B} |% \fallingdotseq |% +\:temp{\mathchar"343C} |% \succcurlyeq |% +\:temp{\mathchar"343D} |% \geqq |% +\:temp{\mathchar"343E} |% \geqslant |% +\:temp{\mathchar"343F} |% \gtrless |% +\:temp{\mathchar"3442} |% \vartriangleright |% +\:temp{\mathchar"3443} |% \vartriangleleft |% +\:temp{\mathchar"3444} |% \trianglerighteq |% +\:temp{\mathchar"3445} |% \trianglelefteq |% +\:temp{\mathchar"3447} |% \between |% +\:temp{\mathchar"3449} |% \blacktriangleright |% +\:temp{\mathchar"344A} |% \blacktriangleleft |% +\:temp{\mathchar"344D} |% \vartriangle |% +\:temp{\mathchar"3450} |% \eqcirc |% +\:temp{\mathchar"3451} |% \lesseqgtr |% +\:temp{\mathchar"3452} |% \gtreqless |% +\:temp{\mathchar"3453} |% \lesseqqgtr |% +\:temp{\mathchar"3454} |% \gtreqqless |% +\:temp{\mathchar"3456} |% \Rrightarrow |% +\:temp{\mathchar"3457} |% \Lleftarrow |% +\:temp{\mathchar"345F} |% \varpropto |% +\:temp{\mathchar"3460} |% \smallsmile |% +\:temp{\mathchar"3461} |% \smallfrown |% +\:temp{\mathchar"3462} |% \Subset |% +\:temp{\mathchar"3463} |% \Supset |% +\:temp{\mathchar"346A} |% \subseteqq |% +\:temp{\mathchar"346B} |% \supseteqq |% +\:temp{\mathchar"346C} |% \bumpeq |% +\:temp{\mathchar"346D} |% \Bumpeq |% +\:temp{\mathchar"346E} |% \lll |% +\:temp{\mathchar"346F} |% \ggg |% +\:temp{\mathchar"3474} |% \pitchfork |% +\:temp{\mathchar"3476} |% \backsim |% +\:temp{\mathchar"3477} |% \backsimeq |% +\:temp{\mathchar"3500} |% \lvertneqq |% +\:temp{\mathchar"3501} |% \gvertneqq |% +\:temp{\mathchar"3502} |% \nleq |% +\:temp{\mathchar"3503} |% \ngeq |% +\:temp{\mathchar"3504} |% \nless |% +\:temp{\mathchar"3505} |% \ngtr |% +\:temp{\mathchar"3506} |% \nprec |% +\:temp{\mathchar"3507} |% \nsucc |% +\:temp{\mathchar"3508} |% \lneqq |% +\:temp{\mathchar"3509} |% \gneqq |% +\:temp{\mathchar"350A} |% \nleqslant |% +\:temp{\mathchar"350B} |% \ngeqslant |% +\:temp{\mathchar"350C} |% \lneq |% +\:temp{\mathchar"350D} |% \gneq |% +\:temp{\mathchar"350E} |% \npreceq |% +\:temp{\mathchar"350F} |% \nsucceq |% +\:temp{\mathchar"3510} |% \precnsim |% +\:temp{\mathchar"3511} |% \succnsim |% +\:temp{\mathchar"3512} |% \lnsim |% +\:temp{\mathchar"3513} |% \gnsim |% +\:temp{\mathchar"3514} |% \nleqq |% +\:temp{\mathchar"3515} |% \ngeqq |% +\:temp{\mathchar"3516} |% \precneqq |% +\:temp{\mathchar"3517} |% \succneqq |% +\:temp{\mathchar"3518} |% \precnapprox |% +\:temp{\mathchar"3519} |% \succnapprox |% +\:temp{\mathchar"351A} |% \lnapprox |% +\:temp{\mathchar"351B} |% \gnapprox |% +\:temp{\mathchar"351C} |% \nsim |% +\:temp{\mathchar"351D} |% \ncong |% +\:temp{\mathchar"3520} |% \varsubsetneq |% +\:temp{\mathchar"3521} |% \varsupsetneq |% +\:temp{\mathchar"3522} |% \nsubseteqq |% +\:temp{\mathchar"3523} |% \nsupseteqq |% +\:temp{\mathchar"3524} |% \subsetneqq |% +\:temp{\mathchar"3525} |% \supsetneqq |% +\:temp{\mathchar"3526} |% \varsubsetneqq |% +\:temp{\mathchar"3527} |% \varsupsetneqq |% +\:temp{\mathchar"3528} |% \subsetneq |% +\:temp{\mathchar"3529} |% \supsetneq |% +\:temp{\mathchar"352A} |% \nsubseteq |% +\:temp{\mathchar"352B} |% \nsupseteq |% +\:temp{\mathchar"352C} |% \nparallel |% +\:temp{\mathchar"352D} |% \nmid |% +\:temp{\mathchar"352E} |% \nshortmid |% +\:temp{\mathchar"352F} |% \nshortparallel |% +\:temp{\mathchar"3530} |% \nvdash |% +\:temp{\mathchar"3531} |% \nVdash |% +\:temp{\mathchar"3532} |% \nvDash |% +\:temp{\mathchar"3533} |% \nVDash |% +\:temp{\mathchar"3534} |% \ntrianglerighteq |% +\:temp{\mathchar"3535} |% \ntrianglelefteq |% +\:temp{\mathchar"3536} |% \ntriangleleft |% +\:temp{\mathchar"3537} |% \ntriangleright |% +\:temp{\mathchar"3538} |% \nleftarrow |% +\:temp{\mathchar"3539} |% \nrightarrow |% +\:temp{\mathchar"353A} |% \nLeftarrow |% +\:temp{\mathchar"353B} |% \nRightarrow |% +\:temp{\mathchar"353C} |% \nLeftrightarrow |% +\:temp{\mathchar"353D} |% \nleftrightarrow |% +\:temp{\mathchar"3568} |% \eqsim |% +\:temp{\mathchar"3570} |% \shortmid |% +\:temp{\mathchar"3571} |% \shortparallel |% +\:temp{\mathchar"3573} |% \thicksim |% +\:temp{\mathchar"3574} |% \thickapprox |% +\:temp{\mathchar"3575} |% \approxeq |% +\:temp{\mathchar"3576} |% \succapprox |% +\:temp{\mathchar"3577} |% \precapprox |% +\:temp{\mathchar"3578} |% \curvearrowleft |% +\:temp{\mathchar"3579} |% \curvearrowright |% +\:temp{\mathchar"357F} |% \backepsilon |% +>>>> + + + + +%%%%%%%%%%%%%%%%%% +\chapter{Loose Ends} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Right-to-Left Babel} +%%%%%%%%%%%%%%%%%% + + + +\<rlbabel everypar\><<< +\expandafter\ifx \csname o@everypar\endcsname\relax \else +\expandafter\ifx \csname ht:everypar\endcsname\relax + \let\ht:everypar\o@everypar +\fi\fi +>>> + + + + + + +\<dir ltr/rtl\><<< +dir="\if@rl rtl\else ltr\fi" +>>> + + +\<configure html-mltx rlbabel\><<< +\Configure{moreL} + {\ifmathltx |<ltr rlbabel mtext|>% + \else + \ifvmode \let\end:moreRL=\empty + \else\HCode{<span dir="ltr" >}% + \def\end:moreRL{\HCode{</span>}}% + \fi + \fi + } + {\end:moreRL} +\Configure{moreR} + {\ifmathltx |<rtl rlbabel mtext|>% + \else + \ifvmode \let\end:moreRL=\empty + \else\HCode{<span dir="rtl" >}\def\end:moreRL{\HCode{</span>}}\fi + \fi + } + {\end:moreRL} +\Css{.rtl {direction: rtl} + .ltr {direction: ltr} } +>>> + + + +\<ltr rlbabel mtext\><<< +\ifmtext + \leavevmode\special{t4ht@+</mtext><mtext{32}\mml:class="ltr">}x% + \def\end:moreRL{\HCode{</mtext><mtext>}}% +\else + \let\end:moreRL=\empty +\fi +>>> + + + +\<rtl rlbabel mtext\><<< +\ifmtext + \leavevmode\special{t4ht@+</mtext><mtext{32}\mml:class="rtl">}x% + \def\end:moreRL{\HCode{</mtext><mtext>}}% +\else + \let\end:moreRL=\empty +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{openmath} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<itemitem 0.0\><<< +\Configure{itemitem}{}{}{\par\leavevmode}{} +>>> + + + + +Used to have also a \verb'\special{t4ht@[}...\special{t4ht@]}', +where the specials asked to igore the enclosed +content. It is provided for getting `realistic' measurements in mathltx +applets. a candidadte for delition. + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +>>> + + +\<par del\><<< +!*?: >>> + + +\<tag of Tag\><<< + cw:>>> + +\<tail\><<< +tail>>> + +\<addr for Tag and Ref of Sec\><<< +\xdef\:cursec{|<section html addr|>}% +>>> + + +\<save catcodes\><<< +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else + \csname :RestoreCatcodes\endcsname \fi + \catcode`\noexpand :|=\the\catcode`:% + \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|= + \noexpand\UnDefcS} +\catcode`\:|=11 +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Boxed} +%%%%%%%%%%%%%%%%%% + +\<configure html-mltx amsmath\><<< +\Configure{boxed} + {\ifmathltx \HCode{\string\boxed\l:brace}% + \else \HCode{<span class="boxed">}\IgnorePar\fi} + {\ifmathltx \HCode{\r:brace}% + \else \HCode{</span>}\fi} +\Css{.boxed{border: 1px solid black; padding-left:2px; + padding-right:2px;}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{fontmath} +%%%%%%%%%%%%%%%%%% + + + + +\<fontmath mathord symbols as ?\><<< +\mathchar"3230 |%\prime|% +\mathchar"3231 |%\infty|% +\mathchar"323B |%\emptyset|% +\mathchar"323C |%\Re|% +\mathchar"323D |%\Im|% +\mathchar"3240 |%\aleph|% +>>> + +\<fontmath mathord symbols as op\><<< +\mathchar"3234 |%\triangle|% +\mathchar"3238 |%\forall|% +\mathchar"3239 |%\exists|% +\mathchar"323A |%\neg|% +\mathchar"323E |%\top|% +\mathchar"323F |%\bot|% +\mathchar"3272 |%\nabla|% +\mathchar"3278 |%\mathsection|% +\mathchar"327B |%\mathparagraph|% +\mathchar"327C |%\clubsuit|% +\mathchar"327D |%\diamondsuit|% +\mathchar"327E |%\heartsuit|% +\mathchar"327F |%\spadesuit|% +>>> + + + +\subsection{1: Large Operators} + +\begin{verbatim} +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 +\end{verbatim} + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{1}{}{}{}{ + \mathchar"1360 + \mathchar"1357 + \mathchar"1356 + \mathchar"1355 + \mathchar"1354 + \mathchar"1353 + \mathchar"1352 + \mathchar"1351 + \mathchar"1350 + \mathchar"134E + \mathchar"134C + \mathchar"134A + \mathchar"1348 + \mathchar"1346 + \mathchar"1273 + |<fontmath mathord symbols as op|>% +} +>>> + +% \mathchar"230 |%math prime|% + +A prime is typically placed on letters and digits. + + +\subsection{2: Binary Operations} + +\begin{verbatim} +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\-="2200 +\end{verbatim} + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{2}{}{}{}{ +*-+/ +\mathchar"212F +\mathchar"212E +\mathchar"2234 +\mathchar"2235 +\mathchar"225E +\mathchar"225F +\mathchar"225C +\mathchar"225B +\mathchar"227A +\mathchar"2279 +\mathchar"2275 +\mathchar"2274 +\mathchar"225D +\mathchar"2271 +\mathchar"2205 +\mathchar"220F +\mathchar"226F +\mathchar"2204 +\mathchar"220C +\mathchar"220B +\mathchar"220A +\mathchar"2209 +\mathchar"2208 +\mathchar"2207 +\mathchar"2206 +\mathchar"220E +\mathchar"220D +\mathchar"226E +\mathchar"2201 +\mathchar"2203 +\mathchar"2202 +\mathchar"213F +} +>>> + + +\subsection{3: Relational Operations} + +The catcode is needed because 303A is \verb':'. + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{3}{}{}{}{ + \mathchar"3128 + \mathchar"3129 + \mathchar"312A + \mathchar"312B + \mathchar"315E + \mathchar"315F + \mathchar"3210 + \mathchar"3211 + \mathchar"3212 + \mathchar"3213 + \mathchar"3214 + \mathchar"3215 + \mathchar"3216 + \mathchar"3217 + \mathchar"3218 + \mathchar"3219 + \mathchar"321A + \mathchar"321B + \mathchar"321C + \mathchar"321D + \mathchar"321E + \mathchar"321F + \mathchar"3220 + \mathchar"3221 + \mathchar"3224 + \mathchar"3227 + \mathchar"3232 + \mathchar"3233 + \mathchar"3236 + \mathchar"3237 + \mathchar"323F + :=>< + \mathchar"322F + \mathchar"3276 + \mathchar"3277 + \mathchar"326B + \mathchar"326A + \mathchar"3261 + \mathchar"3260 + \mathchar"3225 + \mathchar"3226 + \mathchar"322D + \mathchar"322E + \mathchar"322C + \mathchar"3228 + \mathchar"3229 +} +>>> + +% \mathchar"327C |%clubsuit|% +% \mathchar"327D |%diamondsuit|% +% \mathchar"327E |%heartsuit|% +% \mathchar"327F |%spadesuit|% + + + +% \mathchar"340A % rightleftharpoons +% \mathchar"340B % leftrightharpoons +% + +\begin{verbatim} +\mathcode`\>="313E +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\:="303A +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\set="321A +\mathchardef\supseteq="3213 +\mathchardef\seteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\end{verbatim} + + +\subsection{4/5: Delimiters} + +\begin{verbatim} +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\[="405B +\mathcode`\]="505D +\mathcode`\{="4266 +\mathcode`\}="5267 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\def\lmoustache{\delimiter"437A340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"537B341 } % top from ), bottom from ( +\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips +\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } +\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads +\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert How should these be treated? +\def\vert{\delimiter"26A30C } " " " " " +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\end{verbatim} + +The comamnds \verb'\Configure{MathClass}{4}...' +and \verb'\Configure{MathClass}{5}...' +are for unmatched delimiters, and the comamnd +\verb'\Configure{MathDelimiters}{(}{)}' is for matched ones. + + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{4}{}{}{}{} +\Configure{MathDelimiters}{(}{)} +\Configure{MathDelimiters}{[}{]} +\Configure{MathDelimiters}{\mathchar"4262}{\mathchar"5263} +\Configure{MathDelimiters}{\mathchar"4264}{\mathchar"5265} +\Configure{MathDelimiters}{\mathchar"4266}{\mathchar"5267} +\Configure{MathDelimiters}{\mathchar"4268}{\mathchar"5269} +\Configure{MathDelimiters}{\mathchar"4300}{\mathchar"5301} +\Configure{MathDelimiters}{\mathchar"4302}{\mathchar"5303} +\Configure{MathDelimiters}{\mathchar"4304}{\mathchar"5305} +\Configure{MathDelimiters}{\mathchar"4306}{\mathchar"5307} +\Configure{MathDelimiters}{\mathchar"4308}{\mathchar"5309} +\Configure{MathDelimiters}{\mathchar"430A}{\mathchar"530B} +>>> + +\begin{verbatim} +\mathcode`\?="503F +\end{verbatim} + + +\subsection{6: Punctuation Marks} + +\begin{verbatim} +\mathcode`\;="603B +\mathcode`\,="613B +\end{verbatim} + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{6}{}{}{}{ +\mathchar"613A % ldot +\mathchar"6201 % cdot +\mathchar"603A % colon +?; , +} +>>> + + +\subsection{Questions} + +\begin{verbatim} + + +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\end{verbatim} + + +\subsection{Type 4: Math Open} + + +latex.ltx, fontmath.ltx, plain.tex + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Notes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{To Do} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item Parametric commands as Superscripts or Subscripts: + \verb+$E^\frac{1}{2}$+ (instead of \verb+$E^{\frac{1}{2}}$+). + +\item + Numbering is not right justified: + +\begin{verbatim} +\documentclass{amsart} + \begin{document} + + \begin{eqnarray} + A &=& B + C + \end{eqnarray} + + \begin{align} + A &= B + C \qquad & N &= G + F + \end{align} + + \begin{alignat}{2} + A &= B + C \qquad \qquad & N & = G + F + \end{alignat} + +\begin{gather} +A = B + C \tag{my equation} \\ +B = \text{variable unknown} \notag \\ +Y = \max X + \log 10 +\end{gather} + +\end{document} +\end{verbatim} + + +\item +\begin{verbatim} +\begin{align} +e &= a + b \\ +\intertext{this should be located on the left browser hand margin} +a &= u +\end{align} + +\end{verbatim} + +\end{itemize} + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathml.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathml.tex new file mode 100644 index 00000000000..5bc41518438 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathml.tex @@ -0,0 +1,5422 @@ +% $Id: tex4ht-mathml.tex 919 2021-04-30 09:01:14Z michal_h21 $$ +% compile 3 times: latex tex4ht-mathltx +% or xhlatex tex4ht-mathltx "html,3,sections+" +% +% Copyright 2009-2021 TeX Users Group +% Copyright 1999-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{mathml,html-mml} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common-code} +\input{common} +\input{tex4ht-cpright} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Constructs} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The equation Environment} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<mathml latex\><<< +\let\A:equation|=\a:equation +\let\B:equation|=\b:equation +\let\C:equation|=\c:equation +\Configure{equation} + {\A:equation|<math display in equation|>} + {\B:equation}{\C:equation} +>>> + +\<configure html-mml latex\><<< +\Configure{equation} + {\IgnorePar|<inline end-par comment|>\EndP + \HCode{<table class="equation"><tr><td>}\IgnorePar + |<math display in equation|>} + {\ifvmode \IgnorePar\fi\EndP\HCode{</td><td class="eq-no">}} + {\HCode{</td></tr></table>}|<try inline par|>} +\Css{.equation td{text-align:center; vertical-align:middle; }} +\Css{td.eq-no{ width:5\%; }} +\Css{table.equation { width:100\%; } } +>>> + +\<math display in equation\><<< +\Configure{$$} + {\Configure{@math}{|<block display|>% + \mml:class="equation"}\IgnorePar\EndP\DviMath} + {\EndDviMath\EndP} + {\DisplayMathtrue}% +>>> + + + +\<block display\><<< +%\a:mathml + display="block" +>>> + + +\<inline display\><<< +%\a:mathml + display="inline" +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{AmsMath} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<amsmath mathml\><<< +\Configure{equation} + {\Configure{gather} + {\HCode{<\a:mathml mtable\Hnewline + \mml:class="equation"><\a:mathml mtr><\a:mathml mtd>}\IgnorePar } + {\HCode{</\a:mathml mtd></\a:mathml mtr></\a:mathml mtable>}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{</\a:mathml mtd><\a:mathml mtd>}\fi } + {} + }{}{} +\Css{.equation-star td{text-align:center; vertical-align:middle; }} +\Css{table.equation-star { width:100\%; } } +>>> + + + +\<amsmath html-mml pre 2000\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="equation"><tr><td>}% + |<amsmath equation pre 2000|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td><td class="eq-no">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \IgnoreIndent\par} +\Configure{equation*} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="equation-star"><tr><td>}% + |<amsmath equation pre 2000|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \IgnoreIndent\par} +>>> + + +\<amsmath html-mml jan 2000\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="equation"><tr><td>}% + |<amsmath equation jan 2000|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td><td class="eq-no">}% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td></tr></table>}% + \IgnoreIndent\par} +\Configure{equation*} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<table class="equation-star"><tr><td>}% + |<amsmath equation jan 2000|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td></tr></table>}% + \IgnoreIndent\par} +>>> + + +\<amsmath html-mml july 2000\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<table class="equation"><tr><td>}% + |<amsmath equation july 2000|>% + |<math display in equation|>% + } + {\ifvmode \IgnorePar\fi\EndP + \HCode{</td><td class="eq-no">}% + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \ShowPar\IgnoreIndent\par} +\Configure{equation*} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<table class="equation-star"><tr><td>}% + |<amsmath equation july 2000|>% + |<math display in equation|>% + } + {\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}% + \ShowPar\IgnoreIndent\par} +>>> + +% <\a:mathml math\Hnewline +% \csname a:math-xmlns\endcsname \Hnewline display="inline"> + +% \HCode{</\a:mathml math>}% + + + +\<amsmath equation jan 2000\><<< +|<amsmath equation july 2000|>% +>>> + + + + + + + +\<amsmath equation july 2000\><<< +\Configure{gather} + {\HCode{<\a:mathml mtable\Hnewline + \mml:class="equation"><\a:mathml mtr><\a:mathml mtd>}\IgnorePar + |<math display in equation|>} + {\HCode{</\a:mathml mtd></\a:mathml mtr></\a:mathml mtable>}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{</\a:mathml mtd><\a:mathml mtd>}\fi } + {} +>>> + +\<amsmath equation pre 2000\><<< +\Configure{$$}{}{}{}% +\Configure{gather} + {\Configure{$$} + {\Configure{@math}{\mml:class="equation"}\IgnorePar\EndP\DviMath} + {\EndDviMath\EndP}% + {}% + \IgnorePar + }{}{}{}{}{} +>>> + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{MathML} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%% +\section{Front Matters} +%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%% +\subsection{DTD} +%%%%%%%%%%%%% + +\<configure mathml Preamble\><<< +\Configure{PROLOG}{VERSION,DOCTYPE,*XML-STYLESHEET} +\:CheckOption{no-DOCTYPE} \if:Option + \Configure{PROLOG}{VERSION,*XML-STYLESHEET} +\fi +>>> + + +% \def\mathml:DOCTYPE{|<xhtml+mathml dtd|>} + +\<configure html-mml tex4ht\><<< +\:CheckOption{frames} \if:Option + \Configure{frames-altDOCTYPE}{|<mathml dtd|>} + \else + |<no frames DOCTYPE|> +\fi +>>> + + + +\<no frames DOCTYPE\><<< +\def\:temp{xhtml} +\ifx \:DTD\:temp + |<mathml dtd|> +\fi +>>> + +% + +\<xhtml+mathml dtd\><<< +PUBLIC + "-//W3C//DTD XHTML 1.1 plus MathML 2.0//|<dtd lang|>"\Hnewline + "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd" +>>> + +\<mathml dtd\><<< +\Configure{DOCTYPE}{\HCode + {<!DOCTYPE html |<xhtml+mathml dtd|>% + >\Hnewline +}} +>>> + +\<frames dtd\><<< +\Configure{DOCTYPE} + {\HCode{<!DOCTYPE html PUBLIC + "-//W3C//DTD XHTML 1.0 Frameset//|<dtd lang|>" + \Hnewline + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">\Hnewline}} +>>> + + + + + +DTD to be used. + +\begin{description} + + + +\item [http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd] + +Declares a FPI (Formal Public Identifier) +``-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN'' for XHTML+MathML. +The DTD is problematic +since it contains a processing instruction +\verb!<?IS10744:arch xhtml ...>! with a colon in the name. XML +parsers don't allow it when namespaces are enabled. It carries +revision id `xhtml-1,v 1.1 2000/10/31 19:52:09 davidc Exp'. + +\item[http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd] + +Suggested by the MathML +specification + http://www.w3.org/TR/2003/REC-MathML2-20031021/appendixa.html. However, the +DTD incorporates also SVG. It shows revision id +`xhtml-math11-f.dtd,v 1.16 2003/11/04 13:14:35 davidc Exp' + +\item [others] + +See SVG specifications +\end{description} + +The DTD +a "-//W3C//DTD XHTML 1.1 plus MathML +2.0//EN" is claimed: + + + + + +\<dtd lang\><<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi +>>> + + +\<xmlns\><<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + + + + + + + + +%%%%%%%%%%%%% +\subsection{???????????} +%%%%%%%%%%%%% + + + + +\<configure mathml Preamble\><<< +\ifx \a:mathml\:UnDef + \NewConfigure{mathml}{1} + \Configure{mathml}{} +\fi +\def\mml:class{\a:mathml class} +>>> + + +\<plain,latex mathml\><<< +|<nolimit functions|> +|<limit functions|> +>>> + + +\<\><<< +\def\mml:prefix#1{% + \Configure{mathop}{*}{<\a:mathml mo #1\Hnewline>}{</\a:mathml mo>}% + {\Configure{mathop}{*}{<\a:mathml mo>}{</\a:mathml mo>}{}}} +\def\mml:prefix#1{} +\def\limit:csname{|%form="prefix" |%\mml:class="csname-limit"} +\def\nolimit:csname{|%form="prefix" |%\mml:class="csname-nolimit"} +>>> + + +\<nolimit functionsNO\><<< +\def\:tempb#1{% + \def\:tempc##11->##2///{\if :##2:% + \pend:def#1{\mml:prefix \nolimit:csname}\fi}% + \expandafter\:tempc\meaning#11->///% +} +\:tempb\arccos +\:tempb\arcsin +\:tempb\arctan +\:tempb\arg +\:tempb\cosh +\:tempb\cos +\:tempb\coth +\:tempb\cot +\:tempb\csc +\:tempb\deg +\:tempb\dim +\:tempb\exp +\:tempb\hom +\:tempb\ker +\:tempb\lg +\:tempb\ln +\:tempb\log +\:tempb\sec +\:tempb\sinh +\:tempb\sin +\:tempb\tanh +\:tempb\tan +|<lim inf/sup|> +>>> + +\<limit functionsNO\><<< +\def\:tempb#1{% + \def\:tempc##11->##2///{\if :##2:% + \pend:def#1{\mml:prefix \limit:csname}\fi}% + \expandafter\:tempc\meaning#11->///% +} +\:tempb\Pr +\:tempb\det +\:tempb\gcd +\:tempb\inf +\:tempb\lim +\:tempb\max +\:tempb\min +\:tempb\sup +>>> + +\<lim inf/supNO\><<< +\def\:tempc{\mml:prefix\limit:csname \mathop{\operator@font lim inf}} +\HLet\liminf\:tempc +\def\:tempc{\mml:prefix\limit:csname \mathop{\operator@font lim sup}} +\HLet\limsup\:tempc +>>> + + +\<plain,latex mathml\><<< +\let\A:displaylines|=\a:displaylines +\let\B:displaylines|=\b:displaylines +\let\C:displaylines|=\c:displaylines +\let\D:displaylines|=\d:displaylines +\Configure{displaylines} + {\ifmmode + \def\A:displaylines{\HCode{<\a:mathml mtable + \mml:class="displaylines">}}% + \def\B:displaylines{\HCode{</\a:mathml mtable>}}% + \def\C:displaylines{\HCode{<\a:mathml mtr\Hnewline + \mml:class="displaylines"><\a:mathml mtd>}}% + \def\D:displaylines{\HCode{</\a:mathml mtd></\a:mathml mtr>}}% + \fi + \A:displaylines} + {\B:displaylines} {\C:displaylines}{\D:displaylines} +>>> + + + +\<mathml m:env\><<< +\def\m:env#1{\HCode{<\a:mathml mtable + \mml:class="#1"><\a:mathml mtr><\a:mathml mtd>}% + \def\endm:env{\HCode + {</\a:mathml mtd></\a:mathml mtr></\a:mathml mtable>}}} +>>> + + + +\<amstex.tex mathml\><<< +\Configure{pmatrix} + {\bgroup\m:env{pmatrix}} + {\endm:env\egroup} +\Configure{multline} + {\HCode{<\a:mathml mtable\mml:class="multline">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline\mml:class="multline"><\a:mathml mtd>}} + {\HCode{</\a:mathml mtd></\a:mathml mtr>}} +\Configure{smallmatrix} + {\HCode{<\a:mathml mtable\mml:class="smallmatrix">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline\mml:class="smallmatrix">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline\mml:class="smallmatrix">}} + {\HCode{</\a:mathml mtd>}} +\Configure{bmatrix} + {\bgroup\m:env{bmatrix}} + {\endm:env\egroup} +\Configure{vmatrix}{\bgroup\m:env{vmatrix}}{\endm:env\egroup} +\Configure{Vmatrix}{\bgroup\m:env{Vmatrix}}{\endm:env\egroup} +\Configure{aligned} + {\HCode{<\a:mathml mtable\mml:class="aligned">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline\mml:class="aligned">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline\mml:class="aligned">}} + {\HCode{</\a:mathml mtd>}} +\Configure{xalignat} + {\HCode{<\a:mathml mtable\mml:class="xalignat">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="xalignat">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline \mml:class="xalignat">}} + {\HCode{</\a:mathml mtd>}} +\Configure{xxalignat} + {\HCode{<\a:mathml mtable \mml:class="xxalignat">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="xxalignat">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline \mml:class="xxalignat">}} + {\HCode{</\a:mathml mtd>}} +\Configure{alignedat} + {\HCode{<\a:mathml mtable \mml:class="alignedat">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="alignedat">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline \mml:class="alignedat">}} + {\HCode{</\a:mathml mtd>}} +\Configure{gathered} + {\HCode{<\a:mathml mtable \mml:class="gathered">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="gathered">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline \mml:class="gathered">}} + {\HCode{</\a:mathml mtd>}} +>>> + + +\<mathml\><<< +% mathml.4ht (|version), generated from |jobname.tex +% Copyright 2009-2021 TeX Users Group +% Copyright |CopyYear.1999. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +\<html-mml\><<< +% html-mml.4ht (|version), generated from |jobname.tex +% Copyright 2009-2021 TeX Users Group +% Copyright |CopyYear.1999. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + + + +\<configure mathml tex4ht\><<< +|<tex compiler mathml|> +|<sub, sup, subsup|> +|<limits sub, sup, subsup|> +>>> + + + + + + + + + + +\<html4 font decorations\><<< +\Configure{htf}{0}{+}{<span\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>}% +\Configure{htf}{1}{+}{<img\Hnewline + src="}{" alt="}{" class="}{\%s}{-\%d}{x-x-\%x}{"\xml:empty>}% +\Configure{htf}{3}{+}{<img\Hnewline + src="}{" alt="}{" class="\%s-}{\%s}{-\%d}{x-x-\%x}% + {" style="text-align:middle"\xml:empty>}% +\Configure{htf}{4}{+}{<small\Hnewline + class="}{}{}{}{}{small-caps">}{</small>}% +\Configure{htf}{6}{+}{<u\Hnewline + class="}{}{}{}{}{underline">}{</u>}% +\Configure{htf}{8}{+} + {<sup class="htf"><strong>}{}{}{}{}{}{</strong></sup>}% +\Configure{htf}{10}{+} + {<span class="htf-cmbx">}{}{}{}{}{}{</span>}% +\Configure{htf}{12}{+} + {<span\Hnewline class="htf-calligraphy">}{}{}{}{}{}{</span>}% +>>> + +\<no html4 font decorations\><<< +\Configure{htf}{0}{+}{}{}{}{}{}{}{}% +\Configure{htf}{1}{+}{}{}{}{}{}{}{}% +\Configure{htf}{3}{+}{}{}{}{}{}{}{}% +\Configure{htf}{4}{+}{}{}{}{}{}{}{}% +\Configure{htf}{6}{+}{}{}{}{}{}{}{}% +\Configure{htf}{8}{+}{}{}{}{}{}{}{}% +\Configure{htf}{10}{+}{}{}{}{}{}{}{}% +\Configure{htf}{12}{+}{}{}{}{}{}{}{}% +>>> + + + + + +\<configure mathml tex4ht\><<< +\def\mml:htfsym{\Configure + {htf}{254}{+}{<\a:mathml mglyph\Hnewline fontfamily="}{\%s"}{ + index="\%s"}{ mathsize="\%d\%\%"}{}{ alt="}{"/>}} +\def\ext:htfsym{\Configure{htf}{254}{+}{}{}{}{}{}{}{}} +>>> + + +\<configure mathml-mml tex4ht\><<< +\append:def\mml:htfsym{|<no html4 font decorations|>} +\append:def\ext:htfsym{|<html4 font decorations|>} +>>> + + +We reserve code 254 (and 255) for unknown symbols. + + + +\<configure mathml latex\><<< +\:CheckOption{core}\if:Option \expandafter\endinput \fi +|<mathml latex|> +|<plain,latex mathml|> +>>> + +\<configure mathml fontmath\><<< +|<math fonts utilities|> +|<set mathcal class|> +|<set mathcal symbols|> +|<mathml plain,fontmath|> +>>> + +\<configure mathml plain\><<< +\:CheckOption{core}\if:Option \expandafter\endinput \fi +|<mathml plain|> +|<mathml plain,fontmath|> +|<plain,latex mathml|> +>>> + +\<mathml plain,fontmath\><<< +|<rlbabel everypar|> +|<plain,fontmath math classes|> +>>> + +\<configure mathml amsmath\><<< +|<arr amsmath, amstex1|> +|<amsmath mathml|> +|<amsmath symbols|> +>>> + +\<configure mathml amsmath\><<< +\Configure{intertext} + {\IgnorePar \ifinalign@ + \HCode{\ifnum \HRow>0 </\a:mathml mtd></\a:mathml mtr>\fi + <\a:mathml mtr><\a:mathml mtd + columnspan="\ifnum \HRow=0 15\else \HCol\fi" + \mml:class="intertext">}% + \else \ifingather@ + \HCode{<\a:mathml mtr><\a:mathml mtd columnspan="\HCol" + \mml:class="intertext">}% + \fi\fi + \AA:text{intertext}% + } + {\BB:text \ifvmode \IgnorePar \fi \EndP\ifinalign@ + \HCode{</\a:mathml mtd></\a:mathml mtr>% + \ifnum \HRow>0 <\a:mathml mtr><\a:mathml mtd>\fi}% + \else \ifingather@ + \HCode{</\a:mathml mtd></\a:mathml mtr>}% + \fi\fi + } +>>> + + +\<configure mathml amsmath\><<< +\Configure{boldsymbol}{\bgroup\HCode{<mstyle mathvariant="bold-italic">}}{\HCode{</mstyle>}\egroup} +>>> + +\<configure mathml amsmath\><<< +\Configure{maketag} + {\ifmathml + \ifmtext \expandafter\expandafter\expandafter\no:maketag\fi + \else \expandafter\no:maketag\fi + \AA:text{maketag}\hbox\bgroup\:gobbleIII :@:} + {\egroup\BB:text\ } +\def\no:maketag#1:@:#2\b:maketag{\hbox{#2}} +>>> + + +\<configure mathml amstext\><<< +\Configure{text}{\AA:text{text}}{\BB:text} +>>> + + +\<amsmath symbols\><<< +\def\:tempc{\DOTSI\protect\:idotsint} +\HLet\idotsint|=\:tempc +\def\:idotsint{% + \mathop{\intop\cdotp\cdotp\cdotp\intop }\ilimits@ +} +>>> + +\<configure mathml amsopn\><<< +|<amsopn / amstex.sty mathml|> +>>> + +\<configure mathml amstex1\><<< +% amstex.sty +|<arr amsmath, amstex1|> +|<amstex.sty mathml|> +|<amsopn / amstex.sty mathml|> + >>> + +\<configure mathml amstex\><<< +% amstex.tex +|<mathml m:env|> +|<amstex.tex mathml|> +>>> + + \<configure mathml vanilla\><<< + |<vanilla mathml|> + >>> + + I've calculated the space widths according to + \Link[https://chenfuture.wordpress.com/2008/03/22/math-spacing-and-length-units/]{}{}Math + Spacing and Length Units\EndLink\ blog post. + +\<plain,latex mathml\><<< +\let\mathml:on|=\relax +\Configure{ } + {\ifmathml \ifmtext \space \else\Tg<\a:mathml mspace + width="0.33em" \mml:class="nbsp" />\fi + \else \:nbsp\fi} +>>> + + +\<mathml latex\><<< +\Configure{hspace} + {\ifmathml\ifmtext\else \Tg<\a:mathml mspace width="\the\tmp:dim"/>\fi\fi}{}{ } +>>> + + + + +\<mathml latex\><<< +\Configure{romannumeral} + {\ifmathml\ifmtext\else \HCode{<\a:mathml mrow \mml:class="romannumeral">}\fi\fi} + {\ifmathml\ifmtext\else \HCode{</\a:mathml mrow>}\fi\fi} +>>> + +\<configure html-mml latex\><<< +\Configure{romannumeral} + {\ifmtext\else + \HCode{<\ifmathml \a:mathml mrow \else span \fi \mml:class="romannumeral">}\fi + } + {\ifmtext\else \HCode{</\ifmathml \a:mathml mrow\else span\fi>}\fi } +>>> + + +\<configure html-mml latex\><<< +\Configure{hspace} + {\ifmathml \ifmtext \else \Tg<\a:mathml mspace width="\the\tmp:dim"/>\fi\fi} + {}{\ifmathml \else \:nbsp\fi} +>>> + + + \<configure html-mml plain\><<< +|<plain,latex html-mml|> +>>> + + +\<configure html-mml latex\><<< +|<plain,latex html-mml|> +>>> + +\<plain,latex mathml\><<< + +% redefine macro from unicode.4ht to produce better accents +\def\unicode:mathop#1{\PauseMathClass\HCode{<\a:mathml mo accent="true">}#1\HCode{</\a:mathml mo>}\EndPauseMathClass} + +\:CheckOption{new-accents} \if:Option \else + \Configure{accent}\widetilde\widetilde{{}{}} + {} + {\HCode{<\a:mathml mover\Hnewline accent="false"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% + \:widetilde:over \HCode{</\a:mathml mover>}} + \Configure{accent}\widehat\widehat{{}{}} + {} + {\HCode{<\a:mathml mover\Hnewline accent="false"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% + \:widehat:over \HCode{</\a:mathml mover>}} +\fi +>>> + +\<plain,latex html-mml\><<< +\:CheckOption{new-accents} \if:Option \else + \ifx \mathml:on\:UnDef + \Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|<temp hcode accents|>% + \ht:special{t4ht@[}\if!#1!x\else#2\fi\ht:special{t4ht@]}}} + {\ifmmode + \Tg<\a:mathml mrow + \mml:class="accent#1">\mathord{#3}\Tg</\a:mathml mrow>% + \else \HCode{<span class="accent#1">}#3\HCode{</span>}% + \fi + }% + \fi +\fi +>>> + + + + \<plain,latex mathml\><<< +\:CheckOption{new-accents} \if:Option \else + \ifx \mathml:on\:UnDef + \Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|<temp hcode accents|>% + \ht:special{t4ht@[}\if!#1!x\else#2\fi\ht:special{t4ht@]}}} + {\Tg<\a:mathml mrow + \mml:class="accent#1">\mathord{#3}\Tg</\a:mathml mrow>% + }% + \fi +\fi +>>> + + + + + + + +\<temp hcode accents\><<< +\leavevmode +\if !#1!\ht:special{t4ht@+\string&{35}x#2;}% +\else \expandafter \ifx\csname U#2#1\endcsname\relax + \ht:special{t4ht@+\string&{35}x#2;}% +\else + \ht:special{t4ht@+\string&{35}x\csname U#2#1\endcsname;}% +\fi \fi x% +>>> + + +The special replaces the `x' character. + + + +\<plain,latex mathml\><<< +\let\mml:TeX|=\TeX +\def\TeX{\ifmathml + \HCode{<\a:mathml mtext + \mml:class="TeX">TeX</\a:mathml mtext>}\else \mml:TeX\fi} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{TeX Engine} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<sub, sup, subsup\><<< +\Configure{SUB} + {\Send{BACK} + {<\a:mathml msub><\a:mathml mrow\Hnewline>}% + \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base} + {\Tg</\a:mathml mrow>\TG</\a:mathml msub\Hnewline>} +\Configure{SUP} + {\Send{BACK} + {<\a:mathml msup><\a:mathml mrow\Hnewline>}% + \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base} + {\Tg</\a:mathml mrow>\TG</\a:mathml msup\Hnewline>} +\Configure{SUBSUP} + {\Send{BACK} + {<\a:mathml msubsup><\a:mathml mrow\Hnewline>}% + \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base} + {\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base} + {\Tg</\a:mathml mrow>\TG</\a:mathml msubsup\Hnewline>} +\def\trap:base{{\HCode{}}} +>>> + +The \verb'\trap:base' is to catch empty bases of exponents like, e.g., +in \verb'$a^{^b}$'. + + +\<mathml Link\><<< +\LinkCommand\mtxt:link{\a:mathml mtext,% + xlink:type="simple" + xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href, + id, \mml:class="label",,} +\LinkCommand\msp:link{\a:mathml mstyle,% + xlink:type="simple" + xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href, + id, \mml:class="label",,} +\let\M:Link|=\Link +\def\Link{\ifmathml + \ifmtext |<end mtext space|>\HCode{</\a:mathml mtext>}% + \expandafter\expandafter\expandafter\mtxt:link + \else \expandafter\expandafter\expandafter\msp:link\fi + \else \expandafter\M:Link\fi} +\let\M:EndLink|=\EndLink +\edef\:temp{\catcode`\#=\the\catcode`\#} +\catcode`\#=12 + \def\EndLink{\ifmathml + \ifmtext |<end mtext space|>% + \Endmtxt:link \HCode{<\a:mathml mtext\Hnewline + \mml:class="endlabel">}|<start sharp mtext space|>% + \else \HCode{</\a:mathml mstyle><!--endlabel-->}\fi + \else \expandafter\M:EndLink\fi} +\:temp +>>> + +For some unclear reasom Mozilla requests mtext the link. + +\begin{verbatim} <mrow xlink:type="simple" +xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="..."><mtext> +...</mtext></mrow> \end{verbatim} + + + + +\<tex compiler mathml\><<< +\Configure{DviMath} + {\a:DviMathML \mathmltrue + \ifOption{mml-fonts}{}{|%\mml:htfsym|%\NoFonts}% + \IgnoreRule \HCode{<!--l. + \the\inputlineno-->}\Tg<\a:mathml math\Hnewline + \csname a:math-xmlns\endcsname \Hnewline \a:@math>\a:math + |<sv dvimath par|>\IgnorePar} + {\Tg</\a:mathml math>\EndIgnoreRule + \ifOption{mml-fonts}{}{|%\ext:htfsym|%\EndNoFonts}% + \mathmlfalse \b:DviMathML |<recall dvimath par|>} +\NewConfigure{DviMathML}{2} +\NewConfigure{math-xmlns}{1} +\Configure{math-xmlns} + { xmlns="http://www.w3.org/1998/Math/MathML" } +>>> + + +\<configure html-mml tex4ht\><<< +\Configure{DviMath} + {\a:DviMathML \mathmltrue + \ifOption{mml-fonts}{|<mml fonts|>}{|%\mml:htfsym|%\NoFonts}% + \IgnoreRule \HCode{<!--l. + \the\inputlineno-->}\Tg<\a:mathml math\Hnewline + \csname a:math-xmlns\endcsname \Hnewline \a:@math>\a:math + |<sv dvimath par|>\IgnorePar} + {\Tg</\a:mathml math>\EndIgnoreRule + \ifOption{mml-fonts}{|<html fonts|>}{|%\ext:htfsym|%\EndNoFonts}% + \mathmlfalse \b:DviMathML |<recall dvimath par|>} +\Css{\a:mathml math { text-indent: 0em; }} +>>> + +\<html fonts\><<< +\Configure{htf}{0}{+}{<span\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>}% +>>> + +\<mml fonts\><<< +\Configure{htf}{0}{+}{<mstyle\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</mstyle>}% +>>> + +\<tex compiler mathml\><<< +\newif\ifmathml \mathmlfalse +\newif\ifmtext \mtextfalse +|<mathml Link|> +\NewConfigure{math}{1} +\NewConfigure{@math}{1} +\def\IgnoreRule{\ht:special{t4ht@\string_}} +\def\EndIgnoreRule{\ht:special{t4ht@\string_\string_}} +\Configure{$$} + {\Configure{@math}{|<block display|>}\IgnorePar + |<inline end-par comment|>\EndP\DviMath} + {\EndDviMath\ShowPar\par{\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue} +\Configure{$} + {\Configure{@math}{|<inline display|>}\DviMath} + {\EndDviMath}{} +\newif\ifDisplayMath \DisplayMathfalse +>>> + + +The \verb+\sqrt+ fanction produces a structure of the following form. + +\begin{verbatim} +PUSH + PUSH + ......sqrt et al symbols, possibly with PUSH-POP...... + POP + PUSH + W3: 655361 + DOWN3: -1020474 + PUT_RULE: height: 26213 + length: 1091179 + DOWN3: 1020474 + PUSH + .....body......... + POP + POP +POP +\end{verbatim} + + + +\<tex compiler mathml\><<< +\Configure{radical} + {\Tg<\a:mathml msqrt>% + \special{t4ht\string~!e<<\a:mathml mrow>}% + \special{t4ht\string~!e></\a:mathml mrow></\a:mathml msqrt>}% + \special{t4ht\string~!ee/}% + \special{t4ht\string~!ese-}% + } +>>> + +The following fails when the root symbol is made up +from multiple characters. + +\begin{verbatim} +\Configure{radical}{\Tg<\a:mathml msqrt>% + \Send{EndGROUP}{2}{}% + \Send{GROUP}{3}{<\a:mathml mrow>}% + \Send{EndGROUP}{3}% + {\tg</\a:mathml mrow>\tg</\a:mathml msqrt>}\special{t4ht@+}} +\end{verbatim} + + + + +\<inline end-par comment\><<< +\ifvmode\else \HCode{<!--tex4ht:inline-->}\fi +>>> + + +\<?\><<< +\def\MathRow#1{% + \Configure{\expandafter\:gobble\string#1*}{*}% + {<\a:mathml mrow\Hnewline + \mml:class="\expandafter\:gobble\string#1">}{</\a:mathml mrow>}% + {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}% +>>> + + +\<recall dvimath par\><<< +\sv:ignore +>>> + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +The \verb'\MathRow' requests a \verb'<\a:mathml mrow\Hnewline>...</\a:mathml mrow>', instead of the contributions +of \verb'\mathop', \verb'\mathrel',...., for the next parameter. + + +\<tex compiler mathml\><<< +\def\:MT{\ifmathml \a:mathml m\fi} +\Configure{halignTB}{\HCode{<\:MT table }\halignTBL}{\HCode{>}} +\Configure{halignTBL} + {t}{} + {b}{} + {c}{} + {} +\def\t:HA{\HCode{</\:MT table>}} +\def\R:HA{\HCode{<\:MT tr \Hnewline style="vertical-align:baseline">}} +\def\r:HA{\HCode{</\:MT tr>}} +\def\D:HA{|<td save EndP|>\HCode{<\:MT td + \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline>}} +\def\d:HA{\HCode{</\:MT td>}|<td recall EndP|>} +>>> + +\<configure html-mml tex4ht\><<< +\Configure{halignTBL} + {t}{\ifmathml \HCode{ align="baseline 1" style="|<border lines|>" }\fi} + {b}{\ifmathml \HCode{ align="baseline -1" style="|<border lines|>" }\fi} + {c}{\ifmathml \HCode{ align="axis" style="|<border lines|>" }\fi} + {} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{latex.ltx} +%%%%%%%%%%%%%%%% + + +MathML: +\begin{verbatim} +Authors wishing to encode whitespace characters at the start +or end of the content of a token, or in sequences other than a single +space, without having them ignored, must use   or other +`whitespace' non-marking entities as described in Section 6.2.4 +[Non-Marking Characters]. +\end{verbatim} + +\<start mtext space\><<< +\ht:special{t4ht@,&\#x00A0;}% +>>> + +\<start sharp mtext space\><<< +\ht:special{t4ht@, }% +>>> + +\<end mtext space\><<< +\ht:special{t4ht@,}% +>>> + + +\<configure html-mml latex\><<< +\Configure{newline} + {\ifmtext |<end mtext space|>\HCode{</\a:mathml mtext><\a:mathml + mtext \mml:class="newline">}% + |<start mtext space|>% + \else \Tg<br\Hnewline class="newline" />\fi} +>>> + +\<mathml latex\><<< +\Configure{newline} + {|<end mtext space|>\HCode{</\a:mathml mtext\Hnewline><\a:mathml + mtext \mml:class="newline">}|<start mtext space|>} +>>> + + + +\<mathml latex\><<< +\Configure{[]} + {\Configure{@math}{|<block display|>}\csname a:mathml[]\endcsname + \DviMath\Tg<\a:mathml mrow\Hnewline>$$\DisplayMathtrue } + {$$\Tg</\a:mathml mrow>\EndDviMath\csname b:mathml[]\endcsname} +\Configure{()} + {\Configure{@math}{|<inline display|>}\csname a:mathml()\endcsname + \DviMath\Tg<\a:mathml mrow\Hnewline>$} + {$\Tg</\a:mathml mrow>\EndDviMath\csname b:mathml()\endcsname} +\NewConfigure{mathml[]}{2} +\NewConfigure{mathml()}{2} +|<config array|> +>>> + +\<configure html-mml latex\><<< +\Configure{mathml[]} + {\edef\MathPar{\ifvmode par-\fi}\IgnorePar\endgraf\EndP + \HCode{<div class="\MathPar math-display">}} + {\HCode{</div>}|<try inline par|>} +\Css{div.math-display, div.par-math-display{text-align:center;}} +>>> + + + + +\<configure mathml rlbabel\><<< +\Configure{[]} + {\Configure{@math}{|<block display|>}\csname a:mathml[]\endcsname + \DviMath\Tg<\a:mathml mrow\Hnewline>$$\DisplayMathtrue } + {$$\Tg</\a:mathml mrow>\EndDviMath\csname b:mathml[]\endcsname + \if@rl\else\beginR\fi } +>>> + + + + + +\<configure mathml array\><<< +|<config array|> +>>> + +\<config array\><<< +\let\columnlines\empty +\Configure{halignTB<>}{array}{\HCode{\Hnewline + \a:mathml equalrows="false" + \ifx\columnlines\empty\else\a:mathml columnlines="\columnlines" \fi + \a:mathml equalcolumns="false" \a:mathml class="array"}<>\HAlign} +\Configure{array} + {\halignTB{array}} + {\ifvmode \IgnorePar\fi |<insert Clr|>\Tg</\a:mathml mtable>} + {\Tg<\a:mathml mtr>}{\Tg</\a:mathml mtr>} + {|<mtd array|>} + {\Tg</\a:mathml mtd>} +\ConfigureEnv{array} + {\bgroup\Configure{$}{}{}{}} + {\egroup} + {}{} +>>> + + + + +\<configure html-mml latex\><<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + +\<configure html-mml array\><<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + + + + +\<mtd array\><<< +\HCode{<\a:mathml mtd\Hnewline \mml:class="array" + \ifnum 1<\HMultispan columnspan="\HMultispan"\fi}% + \halignTD \HCode{>}% +>>> + +\<mtd matrix\><<< +\HCode{<\a:mathml mtd\Hnewline \mml:class="matrix" + \ifnum 1<\HMultispan columnspan="\HMultispan"\fi}% + \halignTD \HCode{>}% +>>> + + + + +\<insert Clr\><<< +\expandafter\tmp:toks\expandafter{\Clr}% +\HCode{<!--\the\tmp:toks-->}% +>>> + + + + + +\<mathml latex\><<< +\def\:MM{m} +\def\mathml:hborder{% +\Configure{HBorder} + {<\a:mathml mtr\Hnewline \mml:class="hline">} + {|<mml hline|>} + {</\a:mathml mtr>} + {<\a:mathml mtr\Hnewline \mml:class="cline">} + {<\a:mathml mtd></\a:mathml mtd>} + {|<mml hline|>} + {</\a:mathml mtr>} + {<\a:mathml mtr\Hnewline + \mml:class="vspace" style="font-size:\HBorderspace">} + {<\a:mathml mtd\Hnewline></\a:mathml mtd>} + {</\a:mathml mtr>} + } + + \mathml:hborder +>>> + +\<configure html-mml latex\><<< +\def\:MM{\ifmathml \a:mathml m\fi} +\Configure{HBorder} + {<\:MM tr\Hnewline + \ifmathml \expandafter\mml:class\else class\fi="hline">} + {\ifmathml|<mml hline|>\else + <td><hr\xml:empty></td>\fi} + {</\:MM tr>} + {<\:MM tr\Hnewline + \ifmathml \expandafter\mml:class\else class\fi ="cline">} + {<\:MM td></\:MM td>} + {\ifmathml|<mml hline|>\else + <td><hr\xml:empty></td>\fi} + {</\:MM tr>} + {<\:MM tr\Hnewline + \ifmathml \expandafter\mml:class\else class\fi="vspace" + style="font-size:\HBorderspace">} + {<\:MM td\Hnewline>\ifmathml\else\string&\#x00A0;\fi + </\:MM td>} + {</\:MM tr>} +\Configure{halign} + {\EndP + \PushStack\Table:Stck\TableNo + \gHAdvance\Next:TableNo by 1 + \global\let\TableNo=\Next:TableNo + \halignTB{halign}} + {\HCode{</\:MT table>}\PopStack\Table:Stck\TableNo} + {\HCode{<\:MT tr \Hnewline}\halignTR + \HCode{ id="TBL-\TableNo-\HRow-">}} + {\HCode{</\:MT tr>}} + {|<td save EndP|> \HCode{<td + \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline + id="TBL-\TableNo-\HRow-\HCol">}\ShowPar\par} + {\ifvmode \IgnorePar \fi \EndP + \HCode{</\:MT td>}|<td recall EndP|>} +>>> + + +\<configure html-mml latex\><<< +\Css{mtr.hline mtd{ + border-bottom:black solid 1px; + padding-top:2px; + padding-bottom:0em; +}} +\Css{mtr.hline mtd mo{ + display:none +}} +>>> + +\<td save EndP\><<< +\SaveEndP +>>> + +\<td recall EndP\><<< +\RecallEndP +>>> + + +\<mml hline\><<< +<\a:mathml mtd><mo> \string&\#x0332; </mo></\a:mathml mtd> +>>> + + + + +\<mathml latex\><<< +|<mathml fonts|> +\let\A:fbox=\a:fbox +\let\B:fbox=\b:fbox +\let\OLDn:fbox:\n:fbox: +\def\OLDf:box{\ifx \EndPicture \:UnDef + \expandafter \OLDn:fbox: \else\expandafter \o:fbox: \fi} +\def\:temp{\relax\ifmmode + \Configure{fbox}{\leavevmode\Configure{HtmlPar}{}{}{}{}\IgnoreRule + \AA:text{fbox}}{\BB:text\EndIgnoreRule}\else + \Configure{fbox}{\IgnoreRule\A:fbox}{\B:fbox\EndIgnoreRule}\fi + \OLDf:box} +\HLet\fbox\:temp +\let\A:mbox|=\a:mbox +\let\B:mbox|=\b:mbox +\let\OLD:mbox|=\mbox +\def\mbox{\relax\ifmmode \Configure{mbox}{\AA:text{mbox}}{\BB:text}\else + \Configure{mbox}{\A:mbox}{\B:mbox}\fi\OLD:mbox} +|<mathml text util|> +>>> + + +\<mathml text util\><<< +\NewConfigure{@mtext}{1} +\Configure{@mtext}{ } +\def\AA:text#1{|<config start mtext|>} +\def\BB:text{|<config end mtext|>} +>>> + + +\<config start mtext\><<< +\mtexttrue +\HCode{<\a:mathml mstyle\Hnewline \mml:class="#1"><\a:mathml + mtext \a:@mtext>}|<start mtext space|>\PauseMathClass + \ifmmode\else + |<config math within mtext|>% + \fi +>>> + + +\<config end mtext\><<< +\mtextfalse\EndPauseMathClass|<end mtext space|>\HCode + {</\a:mathml mtext></\a:mathml mstyle>}% +>>> + +\<config math within mtext\><<< +\Configure{$}% + {\EndPauseMathClass \mtextfalse + |<end mtext space|>\HCode{</\a:mathml mtext><\a:mathml + mstyle\Hnewline \mml:class="math">}}% + {\HCode{</\a:mathml mstyle><\a:mathml + mtext \a:@mtext>}|<start mtext space|>\PauseMathClass + \mtexttrue}% + {}% +>>> + +\<config math within mtext\><<< +\Configure{()}% + {\EndPauseMathClass \mtextfalse + |<end mtext space|>\HCode{</\a:mathml mtext><\a:mathml + mstyle\Hnewline \mml:class="math">}$}% + {$\HCode{</\a:mathml mstyle><\a:mathml + mtext \a:@mtext>}|<start mtext space|>\PauseMathClass + \mtexttrue}% + {}% +>>> + + + +% \Configure{$} +% {\Configure{@math}{|<inline display|>}\DviMath} +% {\EndDviMath}{} +% +% \Configure{()} +% {\Configure{@math}{|<inline display|>}\csname a:mathml()\endcsname +% \DviMath +% \Tg<\a:mathml mrow\Hnewline>$} +% {$\Tg</\a:mathml mrow>% +% \EndDviMath\csname b:mathml()\endcsname} + + + +\begin{verbatim} +\documentclass{article} +\begin{document} +$ \mbox{is right-continuous at } -r $ +\end{document} + +I see the problematic space between + + is right-continuous at + +and + + -r + +but I don't understand it. The mathml code currently has there + + <\a:mathml mrow><\a:mathml mtext>is right-continuous at</\a:mathml mtext></\a:mathml mrow> + <\a:mathml mo>−</\a:mathml mo><\a:mathml mi>r</\a:mathml mi> + +Replacing mrow with mstyle doesn't make a difference. Removing +the mrow solves the problem of the extra space. + +I introduced the above changes to the mathml and mozilla-mathml +configurations, respectively. +\end{verbatim} + + + + + +\<amstex.tex mathml\><<< +|<mathml text util|> +\Configure{text}{\AA:text{text}}{\BB:text} +\Configure{format} + {\HCode{<\a:mathml mtable \mml:class="format">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="format">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline \mml:class="format">}} + {\HCode{</\a:mathml mtd>}} +>>> + + + +\<amsmath mathml\><<< +\Configure{above} + {\Send{GROUP}{0}{<\a:mathml mfrac + linethickness="\the\tmp:dim"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:@@over:\:gobbleII} + {\HCode{<\a:mathml + mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>}} +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<\a:mathml mfrac linethickness="0"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>} + \else + \Send{GROUP}{0}{<\a:mathml mfenced \a:mathml separators=""\Hnewline + \a:mathml open="|<lr del 2|>" \a:mathml close="|<lr del 3|>"><\a:mathml mfrac + \a:mathml linethickness="0"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:@@over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml + mrow></\a:mathml mfrac></\a:mathml mfenced>} + \fi + } +>>> + + +\<configure mathml tex4ht\><<< +\Configure{over} + {\Send{GROUP}{0} + {<\a:mathml mfrac><\a:mathml mrow>}\HCode{</\a:mathml mrow>}} + {\HCode{<\a:mathml mrow>}\Send{EndGROUP}{0} + {</\a:mathml mrow></\a:mathml mfrac>}} +\Configure{atop} + {\Send{GROUP}{0}{<\a:mathml mfrac linethickness="0"><\a:mathml mrow>}\HCode{</\a:mathml mrow>}} + {\HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>}} +\Configure{above} + {\Send{GROUP}{0}{<\a:mathml mfrac linethickness="\the\tmp:dim"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:over:\:gobbleII} + {\HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>}} +>>> + +\<configure mathml tex4ht\><<< +\Configure{abovewithdelims} + {\abovewithdelims:III} + {} +\def\abovewithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<\a:mathml mfrac linethickness="\the\tmp:dim"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>} + \else + \Send{GROUP}{0}{<\a:mathml mfenced \a:mathml separators=""\Hnewline + \a:mathml open="|<lr del 2|>" \a:mathml close="|<lr del 3|>"><\a:mathml mfrac + \a:mathml linethickness="\the\tmp:dim"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml + mrow></\a:mathml mfrac></\a:mathml mfenced>} + \fi + \tmp:dim + } +\Configure{atopwithdelims} + {\atopwithdelims:III} + {} +\def\atopwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<\a:mathml mfrac linethickness="0"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:atop: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>} + \else + \Send{GROUP}{0}{<\a:mathml mfenced \a:mathml separators=""\Hnewline + \a:mathml open="|<lr del 2|>" \a:mathml close="|<lr del 3|>"><\a:mathml mfrac + \a:mathml linethickness="0"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:atop: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml + mrow></\a:mathml mfrac></\a:mathml mfenced>} + \fi + } +\Configure{overwithdelims} + {\overwithdelims:III} + {} +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<\a:mathml mfrac><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>} + \else + \Send{GROUP}{0}{<\a:mathml mfenced \a:mathml separators=""\Hnewline + \a:mathml open="|<lr del 2|>" \a:mathml close="|<lr del 3|>"><\a:mathml mfrac><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml + mrow></\a:mathml mfrac></\a:mathml mfenced>} + \fi + } +>>> + + + +\<configure mathml amsmath\><<< +\Configure{abovewithdelims} + {\abovewithdelims:III} + {} +\def\abovewithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<\a:mathml mfrac linethickness="\the\tmp:dim"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:@@over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>} + \else + \Send{GROUP}{0}{<\a:mathml mfenced \a:mathml separators=""\Hnewline + \a:mathml open="|<lr del 2|>" \a:mathml close="|<lr del 3|>"><\a:mathml mfrac + \a:mathml linethickness="\the\tmp:dim"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:@@over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml + mrow></\a:mathml mfrac></\a:mathml mfenced>} + \fi + \tmp:dim + } +\Configure{atopwithdelims} + {\atopwithdelims:III} + {} +\def\atopwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<\a:mathml mfrac \a:mathml linethickness="0"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:@@atop: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>} + \else + \Send{GROUP}{0}{<\a:mathml mfenced \a:mathml separators=""\Hnewline + \a:mathml open="|<lr del 2|>" \a:mathml close="|<lr del 3|>"><\a:mathml mfrac + \a:mathml linethickness="0"><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:@@atop: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml + mrow></\a:mathml mfrac></\a:mathml mfenced>} + \fi + } +\Configure{overwithdelims} + {\overwithdelims:III} + {} +\def\overwithdelims:III#1#2#3{% + \def\:temp{#2#3}\def\:tempa{..}\ifx \:temp\:tempa + \Send{GROUP}{0}{<\a:mathml mfrac><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:@@over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>} + \else + \Send{GROUP}{0}{<\a:mathml mfenced \a:mathml separators=""\Hnewline + \a:mathml open="|<lr del 2|>" \a:mathml close="|<lr del 3|>"><\a:mathml mfrac><\a:mathml mrow>}% + \HCode{</\a:mathml mrow>}\o:@@over: + \HCode{<\a:mathml mrow>}\Send{EndGROUP}{0}{</\a:mathml + mrow></\a:mathml mfrac></\a:mathml mfenced>} + \fi + } +>>> + + + +\<mathml latex\><<< +\Configure{frac} + {\Tg<\a:mathml mfrac>\Tg<\a:mathml mrow\Hnewline>} + {\Tg</\a:mathml mrow>\Configure{over}{}{}} + {\Tg<\a:mathml mrow\Hnewline>} + {\Tg</\a:mathml mrow>\Tg</\a:mathml mfrac>} +>>> + + + +\<configure html-mml amsmath\><<< +\ifx \mathdisplay@@pop\:UnDef + \ifx \emdf@La\:UnDef + |<amsmath html-mml pre 2000|> + \else + |<amsmath html-mml jan 2000|> + \fi +\else + |<amsmath html-mml july 2000|> +\fi +>>> + + +% \Configure{quad}{{\ifmathml \ifmtext \o:quad:\else +% \fi\else \o:quad: \fi}} +% + +\<amsmath mathml\><<< +\Configure{tmspace} + {\ifdim \textspace>0.2em + \HCode{<\a:mathml mspace + width="\textspace" \mml:class="tmspace"/>}% + \else \HCode{<\a:mathml mspace + width="0.3em" \mml:class="thinspace"/>}\fi + } +>>> + + +Use variant of original LaTeX macro used in \textunderscore +\<configure mathml tex4ht\><<< +\def\mathunderscore{\nfss@text{\HChar{95}}} +>>> + + +\<try inline par\><<< +\ShowPar\par{\HCondtrue\noindent}% +>>> + + +% \Configure{math}{} + + +% this used to be in \providemtextclass. Why? It produces totally invalid +% MathML. Where is </mtext> opened? +% \HCode{</mtext>}\ht:special{t4ht@,}\HCode{<mtext \a:@mtext>}\ht:special{t4ht@,&\#x00A0;}% +\<mathml fonts\><<< + +\def\providemtextclass#1{% + \Configure{@mtext}{#1}% +} + +\Configure{texttt} + {\ifmathml \providemtextclass{\mml:class="texttt" + mathvariant="monospace" }\fi} + {}% +\Configure{textit} + {\ifmathml \providemtextclass{\mml:class="textit" + mathvariant="italic" }\fi} + {}% +\Configure{textrm} + {\ifmathml \providemtextclass{\mml:class="textrm" + mathvariant="normal" }\fi} + {}% +\Configure{textup} + {\ifmathml \providemtextclass{\mml:class="textup" + mathvariant="normal" }\fi} + {}% +\Configure{textsl} + {\ifmathml \providemtextclass{\mml:class="textsl" + mathvariant="italic" }\fi} + {}% +\Configure{textsf} + {\ifmathml \providemtextclass{\mml:class="textsf" + mathvariant="sans-serif" }\fi} + {}% +\Configure{textbf} + {\ifmathml \providemtextclass{\mml:class="textbf" + mathvariant="bold" }\fi} + {}% +\Configure{textsc} + {\ifmathml \providemtextclass{\mml:class="textsc" + mathvariant="normal" }\fi} + {}% +\Configure{emph} + {\ifmathml \providemtextclass{\mml:class="emph" + mathvariant="italic" }\fi} + {}% +>>> + + + + +\<configure html-mml latex\><<< +\:CheckOption{fonts} \if:Option +\Configure{texttt} + {\ifmathml \providemtextclass{\mml:class="texttt" + mathvariant="monospace" }% + \else \HCode{<span class="texttt">}\NoFonts\fi} + {\ifmathml\else \EndNoFonts\HCode{</span>}\fi} + \Configure{textit} + {\ifmathml \providemtextclass{\mml:class="textit" + mathvariant="italic" }% + \else \HCode{<span class="textit">}\NoFonts\fi} + {\ifmathml\else \EndNoFonts\HCode{</span>}\fi} + \Configure{textrm} + {\ifmathml \providemtextclass{ \mml:class="textrm" + mathvariant="normal" }% + \else \HCode{<span class="textrm">}\NoFonts\fi} + {\ifmathml\else \EndNoFonts\HCode{</span>}\fi} + \Configure{textup} + {\ifmathml \providemtextclass{ \mml:class="textup" + mathvariant="normal" }% + \else \HCode{<span class="textup">}\NoFonts\fi} + {\ifmathml\else \EndNoFonts\HCode{</span>}\fi} + \Configure{textsl} + {\ifmathml \providemtextclass{ \mml:class="textst" + mathvariant="italic" }% + \else \HCode{<span class="textsl">}\NoFonts\fi} + {\ifmathml\else \EndNoFonts\HCode{</span>}\fi} + \Configure{textsf} + {\ifmathml \providemtextclass{ \mml:class="textsf" + mathvariant="sans-serif" }% + \else \HCode{<span class="textsf">}\NoFonts\fi} + {\ifmathml\else \EndNoFonts\HCode{</span>}\fi} + \Configure{textbf} + {\ifmathml \providemtextclass{ \mml:class="textbf" + mathvariant="bold" }% + \else \HCode{<span class="textbf">}\NoFonts\fi} + {\ifmathml\else \EndNoFonts\HCode{</span>}\fi} + \Configure{textsc} + {\ifmathml \providemtextclass{ \mml:class="textsc" + mathvariant="normal" }% + \else \HCode{<span class="textsc">}\NoFonts\fi} + {\ifmathml\else \EndNoFonts\HCode{</span>}\fi} + \Configure{emph} + {\ifmathml \providemtextclass{ \mml:class="emph" + mathvariant="italic" }% + \else \HCode{<span class="emph">}\NoFonts\fi} + {\ifmathml\else\EndNoFonts \HCode{</span>}\fi} +\fi +>>> + +The \verb+\bgroup...\egroup+ is to handle cases like +\verb+\nathbf{a}^x+. + + +\<configure mathml fontmath\><<< +\def\bold:version{bold} +\Configure{mathbf}% + {\bgroup\Tg<\a:mathml mstyle + mathvariant="bold">}% + {\Tg</\a:mathml mstyle>\egroup}% +\Configure{mathit}% + {\bgroup\Tg<\a:mathml mstyle mathvariant="\ifx + \bold:version\math@version bold-\fi italic">}% + {\Tg</\a:mathml mstyle>\egroup}% +\Configure{mathrm}% + {\bgroup\Tg<\a:mathml mstyle + mathvariant="\ifx + \bold:version\math@version bold\else normal\fi">}% + {\Tg</\a:mathml mstyle>\egroup}% +\Configure{mathsf}% + {\bgroup\Tg<\a:mathml mstyle mathvariant="\ifx + \bold:version\math@version bold-\fi sans-serif">}% + {\Tg</\a:mathml mstyle>\egroup}% +\Configure{mathtt}% + {\bgroup\Tg<\a:mathml mstyle mathvariant="monospace">}% + {\Tg</\a:mathml mstyle>\egroup}% +>>> + +\<configure mathml fontmath\><<< +\Css{ + math mstyle[mathvariant="bold"] { + font-weight: bold; + font-style: normal; + } +} +\Css{ + math mstyle[mathvariant="normal"] { + font-weight: normal; + font-style: normal; + } +} +>>> + +\<configure mathml amsfonts\><<< +\Configure{mathbb}{}{} +\Configure{mathfrak}{}{} +>>> + + + +Used to be + +\begin{verbatim} + \Configure{mathrm}{\Tg<\a:mathml mi \mml:class="mathrm">\PauseMathClass}% + {\EndPauseMathClass\Tg</\a:mathml mi>}% + \Configure{mathbf}{\Tg<\a:mathml mi \mml:class="mathbf" + mathvariant="bold">\PauseMathClass}% + {\EndPauseMathClass\Tg</\a:mathml mi>}% +\end{verbatim} + + +\<configure html-mml latex\><<< +\Css{math .texttt { font-family: monospace; }} +\Css{math .textit { font-style: italic; }} +\Css{math .textsl { font-style: oblique; }} +\Css{math .textsf { font-family: sans-serif; }} +\Css{math .textbf { font-weight: bold; }} +>>> + + + + + +\<plain,latex mathml\><<< +\Configure{afterSUB}{'}{\def\SUB:prime{\SUB:SUP}} +\Configure{'} + {\let\:primes=\empty} + {\relax \csname SUB:prime\endcsname\sp{% + \global\let\SUB:prime=\:UnDef + \def\:tempa{\prime\prime}\ifx \:tempa\:primes + \mathop{\HCode{\string&\#x2033;}}\else + \def\:tempa{\prime\prime\prime}\ifx \:tempa\:primes + \mathop{\HCode{\string&\#x2034;}}\else + \:primes \fi\fi}% + } + {\let\prime=\relax \xdef\:primes{\:primes\prime}} +>>> + +LaTeX places the primes within superscript, and mathml seems to follow +suit (maybe because of the use of latex fonts in mozilla). However, +unicode maps already seem to assume raised representation for the +primes. + + +\<configure html-mml latex\><<< +\:CheckOption{mathjax}\if:Option +\Configure{MathjaxSource}{https://cdn.jsdelivr.net/npm/mathjax@3/es5/mml-chtml.js} +\Configure{@HEAD}{\HCode{ <script type="text/javascript" id="MathJax-script" async="async" src="\a:MathjaxSource"></script> \Hnewline}} +\fi +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{plain.sty} +%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<mathml plain\><<< + \Configure{eqalign} + {\HCode{<\a:mathml mtable \mml:class="eqalign">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr \Hnewline \mml:class="eqalign">}} + {\IgnorePar\HCode{</\a:mathml mtr>}} + {\HCode{\ifnum \HCol=3 <\a:mathml mtd\Hnewline + \mml:class="eqalign3"></\a:mathml mtd>\fi + <\a:mathml mtd \Hnewline \mml:class="eqalign\HCol">}} + {\HCode{</\a:mathml mtd>}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Palin + LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The default \verb'\left' and \verb'\right' in their default definition +with tex produce multi-part delimiters, from cmex, on large +subformulas. Hence, the `'.' below is needed. + +\<plain,latex mathml\><<< +\def\:temp#1{\a:left{#1}\o:left:.\b:left{#1}} \HLet\left|=\:temp +\def\:temp#1{\a:right{#1}\o:right:.\b:right{#1}}\HLet\right|=\:temp +\Configure{left} + {} + {\HCode{<\a:mathml mrow><\a:mathml mo \a:mathml fence="true" \a:mathml form="prefix"> + |<lr del 1|></\a:mathml mo>}\bgroup + \HCode{<\a:mathml mrow>}\bgroup} +\Configure{right} +{\egroup\egroup}%{\egroup\Send{GROUP}{0}{ \a:mathml close=""\space}\egroup} + {\HCode{</\a:mathml mrow><\a:mathml mo \a:mathml fence="true" \a:mathml form="postfix">|<lr del 1|></\a:mathml mo></\a:mathml mrow>}} +\def\def:DEL#1{\def\:DEL{#1}} +\def\check:DEL#1#2{\def\:tempa{#1}\ifx \:tempa\:DEL \def\:DEL{#2}\fi} +\NewConfigure{mfenced}[2]{\append:defI\def:DEL{\check:DEL{#1}{#2}}} +|</bigl, /bigr,... for mathml|> +\:CheckOption{new-accents} \if:Option \else + |<config mathml accents|> +\fi +\def\mathinner#1{\Tg<\a:mathml mrow + \mml:class="mathinner">#1\Tg</\a:mathml mrow>} +>>> + + +\<configure mathml etex4ht\><<< +\def\:tempc#1{\a:middle\mathrel{\left:right#1\:EMPTY}\b:middle} +\HLet\middle=\:tempc +\NewConfigure{middle}{2} +\Configure{middle} + {\bgroup + \Configure{mathrel}{*} + {<mo \mml:class="MathClass-rel" + fence="true" stretchy="true" >} + {</mo>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +>>> + + +The \verb+\root ...\of {...}+ creates the following structure. + +\begin{verbatim} +PUSH + ...root value... +POP +PUSH + PUSH + PUSH + ...root sign characters with PUSH-POP... + POP + PUSH + RIGHT4: 15213546 + DOWN3: -1553322 + PUT_RULE: height: 26213 + length: 1197667 + DOWN3: 1553322 + PUSH + ...root content... + POP + POP + POP +POP +\end{verbatim} + + + +\<plain,latex mathml\><<< +\Configure{root}{\rev:root}{}{} +\def\rev:root #1\b:root#2\c:root{ + \Tg<\a:mathml mroot>{\Tg<\a:mathml mrow\Hnewline>#2\Tg</\a:mathml mrow>}% + {\Tg<\a:mathml mrow\Hnewline>#1\Tg</\a:mathml mrow>}\Tg</\a:mathml mroot>} +\def\AccentMath#1{\relax\ifmmode #1\else $#1$\fi} +>>> + +\<lr del 1\><<< +\expandafter +\ifx \csname \string#1:lr del\endcsname\relax #1\else + \csname \string#1:lr del\endcsname\fi +>>> + +\<lr del 2\><<< +\expandafter +\ifx \csname \string#2:lr del\endcsname\relax #2\else + \csname \string#2:lr del\endcsname\fi +>>> + + +\<lr del 3\><<< +\expandafter +\ifx \csname \string#3:lr del\endcsname\relax #3\else + \csname \string#3:lr del\endcsname\fi +>>> + + +\<plain,latex mathml\><<< +\NewConfigure{mfenced}[2]{\expandafter + \def\csname \string#1:lr del\endcsname{#2}} +|<plain,latex mfenced|> +>>> + +\<amsmath mathml\><<< +\Configure{mfenced}{\lvert}{\string&\#x007C;} |%vertical line|% +\Configure{mfenced}{\rvert}{\string&\#x007C;} |%double vertical line|% +\Configure{mfenced}{\lVert}{\string&\#x2016;} +\Configure{mfenced}{\rVert}{\string&\#x2016;} +>>> + +\<amstex.sty mathml\><<< +\Configure{mfenced}{\lvert}{\string&\#x007C;} +\Configure{mfenced}{\rvert}{\string&\#x007C;} +\Configure{mfenced}{\lVert}{\string&\#x2016;} +\Configure{mfenced}{\rVert}{\string&\#x2016;} +>>> + + + + + +\<plain,latex mfenced\><<< +\Configure{mfenced}{\||}{\string&\#x2225;} +\Configure{mfenced}{.}{} +\Configure{mfenced}{\langle}{\string&\#x27E8;} |%lang|% +\Configure{mfenced}{\rangle}{\string&\#x27E9;} |%rang|% +\Configure{mfenced}{\vert}{||} +\edef\:temp{\noexpand\Configure{mfenced}{\noexpand\{}{\string{}}\:temp +\edef\:temp{\noexpand\Configure{mfenced}{\noexpand\}}{\string}}}\:temp +\edef\:temp{\noexpand + \Configure{mfenced}{\noexpand\lbrace}{\string{}}\:temp +\edef\:temp{\noexpand + \Configure{mfenced}{\noexpand\rbrace}{\string}}}\:temp +\Configure{mfenced}{<}{\string&\#x003C;} |%lt|% +\Configure{mfenced}{>}{\string&\#x003E;} |%gt|% +\Configure{mfenced}{\lceil}{\string&\#x2308;} +\Configure{mfenced}{\rceil}{\string&\#x2309;} +\Configure{mfenced}{\lfloor}{\string&\#x230A;} +\Configure{mfenced}{\rfloor}{\string&\#x230B;} +\Configure{mfenced}{\Vert}{\string&\#x2225;} +\Configure{mfenced}{\rgroup}{)} +\Configure{mfenced}{\lgroup}{(} +\Configure{mfenced}{\bracevert}{||} +\Configure{mfenced}{\bracevert}{||} +\Configure{mfenced}{\downarrow}{\string&\#x2193;} +\Configure{mfenced}{\uparrow}{\string&\#x2191;} +\Configure{mfenced}{\Uparrow}{\string&\#x21D1;} +\Configure{mfenced}{\updownarrow}{\string&\#x2195;} +\Configure{mfenced}{\Updownarrow}{\string&\#x21D5;} +\Configure{mfenced}{\Downarrow}{\string&\#x21D3;} +\Configure{mfenced}{\backslash}{\string&\#x2216;} +\Configure{mfenced}{\rmoustache}{\string&\#x25DD;} +\Configure{mfenced}{\lmoustache}{\string&\#x25DC;} +\Configure{mfenced}{\Arrowvert}{\string&\#x2225;} +\Configure{mfenced}{\arrowvert}{\string&\#x007C;} +>>> + +% \def\:tempa{\{}\ifx \:tempa\:DEL \let\:DEL\lbrc: \else +% \def\:tempa{\}}\ifx \:tempa\:DEL \let\:DEL\rbrc: \else +% \def\:tempa{<}\ifx \:tempa\:DEL \def\:DEL{\string<}\else +% \def\:tempa{>}\ifx \:tempa\:DEL \def\:DEL{\string>}% +% \fi\fi\fi\fi } +% \edef\lbrc:{\string{} \edef\rbrc:{\string}} + +% \HCode{\string#1;}% + +%%%%%%%%%%%%%%%%%%%%% +\subsection{Amsmath} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-mml amsmath\><<< +\Configure{@begin} + {split} + {\let\tagform@=\:gobble } +>>> + +\<amsmath mathml\><<< +\Configure{split} + {\HCode{<\a:mathml mtable \Hnewline + \a:mathml columnalign="right left" + \mml:class="split">}} + {\ifvmode\IgnorePar\fi \HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr \mml:class="split-mtr">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline \mml:class="split-mtd">}} + {\HCode{</\a:mathml mtd>}} +>>> + + + +\<amsmath mathml\><<< +\Configure{multline} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="multline">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>% + <\a:mathml mtd\Hnewline \mml:class="multline">}} + {\HCode{</\a:mathml mtd></\a:mathml mtr>}} + {\HCode{</\a:mathml mtd><\a:mathml mtd>}} + {} +\Configure{multline*} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="multline-star">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr><\a:mathml mtd\Hnewline + \mml:class="multline-star">}} + {\HCode{</\a:mathml mtd></\a:mathml mtr>}} +\Configure{gather} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="gather">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}} +\Configure{gather*} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="gather-star">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}} +\Configure{subarray} + {\HCode{<\a:mathml mtable \mml:class="subarray\if c\Hlcr-c\fi" + \a:mathml rowspacing="0" + \if c\Hlcr \a:mathml columnalign="center"\fi>}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr><\a:mathml mtd>}} + {\HCode{</\a:mathml mtd></\a:mathml mtr>}} +\Configure{smallmatrix} + {\HCode{<\a:mathml mtable>}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="smallmatrix">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} + {\HCode{</\a:mathml mtd>}} +\def\:tempc#1#2{% + \ConfigureEnv{#1} + {\def\end:al:env{}\ifmmode\else + \ifvmode\else \def\end:al:env{\par\ShowPar\IgnoreIndent}\fi\fi} + {\end:al:env } + {}{}% + \Configure{#1} + {\IgnorePar + \ifvmode \EndP \else \EndP \HCode{<!--tex4ht:inline-->}\fi + \ifmathml + \Tg<\a:mathml mrow>\def\end:mathalign{\Tg</\a:mathml mrow>}% + \else + \Configure{@math}{|<block display|>}\DviMath + \def\end:mathalign{\EndDviMath \DisplayMathfalse}% + \DisplayMathtrue + \fi + \HCode{<\a:mathml mtable\Hnewline + \a:mathml columnalign="left" \mml:class="#2">}} + {\HCode{</\a:mathml mtable>}\end:mathalign } + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline + |<rightward align col|>% + \mml:class="align-\ifnum \HCol>\maxfields@ label\else + \ifodd\HCol\space odd\else even\fi + \fi">}} + {\HCode{|<extra align col sep|></\a:mathml mtd>}}} +\:tempc{align}{align} +\:tempc{alignat}{alignat} +\:tempc{xalignat}{xalignat} +\:tempc{xxalignat}{xxalignat} +\:tempc{flalign}{flalign} +\:tempc{align*}{align-star} +\:tempc{alignat*}{alignat-star} +\:tempc{xalignat*}{xalignat-star} +\:tempc{flalign*}{flalign-star} +>>> + + + +\<amsmath mathml\><<< +\Configure{gathered} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="gathered">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}} +>>> + + + +\<configure html-mml amsmath\><<< +\Css{mtd.align-odd{margin-left:2em; text-align:right;}} +\Css{mtd.align-even{margin-right:2em; text-align:left;}} +>>> + +\<extra align col sep\><<< +\ifodd\HCol\space\else + <\a:mathml mspace width="2em"/>\fi +>>> + +\<rightward align col\><<< +\ifodd\HCol \a:mathml columnalign="right" \fi +>>> + +Setting \verb+#1+ below within mrow is problematic in the sense that +arrows don't stretch over multi-characters content \verb+#2+. +A \verb+accent="true"+ move the arrow lower, but also distribute the +characters further apart. + +\<under arrow\><<< +\Tg<\a:mathml munder>% +\Tg<\a:mathml mrow\Hnewline>#2\Tg</\a:mathml mrow>% +#1% +\Tg</\a:mathml munder>% +>>> + +\<over arrow\><<< +\Tg<\a:mathml mover class="overarrow">% +\Tg<\a:mathml mrow\Hnewline>{#2#3}\Tg</\a:mathml mrow>% +#1% +\Tg</\a:mathml mover>% +>>> + + + + +% \Tg<\a:mathml mrow\Hnewline>#1\Tg</\a:mathml mrow>% +% \Tg<\a:mathml mrow>#1\Tg</\a:mathml mrow>% + + +\<arr amsmath, amstex1\><<< +\Configure{underarrow@} + {\Tg<\a:mathml munder>\Tg<\a:mathml mrow\Hnewline>} + {\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>} + {\Tg</\a:mathml mrow>\Tg</\a:mathml munder>} +\Configure{overarrow@} + {\Tg<\a:mathml mover accent="true">\Tg<\a:mathml mrow\Hnewline>} + {\Tg</\a:mathml mrow>\Tg<\a:mathml mrow>} + {\Tg</\a:mathml mrow>\Tg</\a:mathml mover>} +\def\:tempc#1#2#3{\a:overarrow@ + \hbox{$\m@th#2#3$}\b:overarrow@ + \hbox{#1#2}\c:overarrow@ + } +\HLet\overarrow@\:tempc +>>> + + + + + +\<configure mathml amstex1\><<< +\ifx \o:overrightarrow:\:UnDef\else + \HRestore\overrightarrow + \HRestore\overleftarrow + \HRestore\overleftrightarrow +\fi +>>> + + + +\<amsmath html-mml jan 2000NO\><<< +\HRestore\overrightarrow +\HRestore\overleftarrow +\HRestore\overleftrightarrow +>>> + +\<amsmath html-mml july 2000NO\><<< +\HRestore\overrightarrow +\HRestore\overleftarrow +\HRestore\overleftrightarrow +>>> + +% \HRestore\underrightarrow +% \HRestore\underleftarrow +% \HRestore\underleftrightarrow + + + + +\<\><<< +\def\:tempc{\mathpalette{\overarrow@\rightarrow}} +\HLet\overrightarrow=\:tempc +\def\:tempc{\mathpalette{\overarrow@\leftarrow}} +\HLet\overleftarrow=\:tempc +\def\:tempc{\mathpalette{\overarrow@\leftrightarrow}} +\HLet\overleftrightarrow=\:tempc + +\def\:tempc{\mathpalette{\underarrow@\rightarrow}} +\HLet\underrightarrow=\:tempc +\def\:tempc{\mathpalette{\underarrow@\leftarrow}} +\HLet\underleftarrow=\:tempc +\def\:tempc{\mathpalette{\underarrow@\leftrightarrow}} +\HLet\underleftrightarrow=\:tempc +>>> + + +Replace with +\Link[http://www.unicode.org/charts/PDF/U27F0.pdf]{}{}stretching +arrows\EndLink{} once they work. It was \verb+\rightarrow+ (U-2192) +before going to \verb+\HCode{&\#x20D7;}+. +(... suggested +to replace it with +the diacritical one: \verb+⃗+. I t solves two problems. The arrow is +lower and the the spacing between a subscript and a vector is +reduced.) + +\<mathml plain,fontmath\><<< +\Configure{overrightarrow} + {\leavevmode\hbox\bgroup$\Tg<\a:mathml mover class="overrightarrow">% + \Tg<\a:mathml mrow\Hnewline>\:gobble} + {\Tg</\a:mathml mrow>\mathop{\HCode{&\#x20D7;}}% + \Tg</\a:mathml mover>$\egroup} +\Configure{overleftarrow} + {\leavevmode\hbox\bgroup$\Tg<\a:mathml mover class="overleftarrow">% + \Tg<\a:mathml mrow\Hnewline>\:gobble} + {\Tg</\a:mathml mrow>\mathop{\HCode{&\#x20D6;}}% + \Tg</\a:mathml mover>$\egroup} +>>> + + +\<amsmath mathml\><<< +\Configure{[]}{\begin{equation*}}{\end{equation*}} +>>> + +\<amsmath mathml\><<< +\Configure{underrightarrow} + {\Tg<\a:mathml munder>\Tg<\a:mathml mrow\Hnewline>\:gobble} + {\Tg</\a:mathml mrow>\mathop{\rightarrow}\Tg</\a:mathml munder>} +\Configure{underleftarrow} + {\Tg<\a:mathml munder>\Tg<\a:mathml mrow\Hnewline>\:gobble} + {\Tg</\a:mathml mrow>\mathop{\leftarrow}\Tg</\a:mathml munder>} +>>> + + +\<amsmath mathml\><<< +\Configure{overleftrightarrow} + {\Tg<\a:mathml mover class="overleftrightarrow">\Tg<\a:mathml mrow\Hnewline>\:gobble} + {\Tg</\a:mathml mrow>\mathop{\HCode{&\#x20E1;}}\Tg</\a:mathml mover>} +\Configure{underleftrightarrow} + {\Tg<\a:mathml munder>\Tg<\a:mathml mrow\Hnewline>\:gobble} + {\Tg</\a:mathml mrow>\mathop{\leftrightarrow}\Tg</\a:mathml munder>} +>>> + + + + + + +\<\><<< +\def\underarrow:#1#2#3{|<under arrow|>} +\def\overarrow:#1#2#3{|<over arrow|>} +\def\:tempc{\mathpalette{\overarrow:\rightarrow}} +\HLet\overrightarrow=\:tempc +\def\:tempc{\mathpalette{\overarrow:\leftarrow}} +\HLet\overleftarrow=\:tempc +\def\:tempc{\mathpalette{\overarrow:\leftrightarrow}} +\HLet\overleftrightarrow=\:tempc +>>> + +\<\><<< +\def\:tempc{\mathpalette{\underarrow:\rightarrow}} +\HLet\underrightarrow=\:tempc +\def\:tempc{\mathpalette{\underarrow:\leftarrow}} +\HLet\underleftarrow=\:tempc +\def\:tempc{\mathpalette{\underarrow:\leftrightarrow}} +\HLet\underleftrightarrow=\:tempc +>>> + + + +\<amsmath mathml\><<< +|<mathml m:env|> +\renewcommand{\xrightarrow}[2][]{% + \Tg<\a:mathml munderover>% + \rightarrow + \Tg<\a:mathml mrow\Hnewline>#1\Tg</\a:mathml mrow>% + \Tg<\a:mathml mrow\Hnewline>#2\Tg</\a:mathml mrow>% + \Tg</\a:mathml munderover>}% +\renewcommand{\xleftarrow}[2][]{% + \Tg<\a:mathml munderover>% + \leftarrow + \Tg<\a:mathml mrow\Hnewline>#1\Tg</\a:mathml mrow>% + \Tg<\a:mathml mrow\Hnewline>#2\Tg</\a:mathml mrow>% + \Tg</\a:mathml munderover>}% + +\def\overset#1#2{{% + \Tg<\a:mathml mover class="overset">\Tg<\a:mathml + mrow\Hnewline>#2\Tg</\a:mathml mrow>% + \Tg<\a:mathml mrow\Hnewline>#1\Tg</\a:mathml mrow>% + \Tg</\a:mathml mover>}}% +\def\underset#1#2{{% + \Tg<\a:mathml munder>\Tg<\a:mathml mrow\Hnewline>#2\Tg</\a:mathml mrow>% + \Tg<\a:mathml mrow\Hnewline>#1\Tg</\a:mathml mrow>% + \Tg</\a:mathml munder>}}% + +\def\sideset#1#2#3{{\Tg<\a:mathml mrow \mml:class="sideset"\Hnewline + >{\HCode{}}#1{\HCode{}#3}#2\Tg</\a:mathml mrow>}} +\ConfigureEnv{eqxample}{}{}{}{} +\ConfigureEnv{gather*}{}{}{}{} +\ConfigureEnv{gathered}{}{}{}{} +\ConfigureEnv{matrix}{}{}{}{} +>>> + + The \verb'\HCode{}' in \verb'\sideset' is for catching superscripts and subscripts + + + +% \renewcommand{\hdotsfor}[1]{% +% \ifx[#1\@xp\shdots@for\else\hdots@for\@ne{#1}\fi} +% \def\shdots@for#1]{\hdots@for{#1}} +% \def\hdots@for#1#2{\multicolumn{#2}c% +% {\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@ +% \xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace@$}% +% \hfill +% \mkern-#1\dotsspace@}% +% } + + + +\<amsmath symbols\><<< +\def\:tempc{\HCode{<\a:mathml mspace width="0.2em"/>}\mathbin + {mod}\HCode{<\a:mathml mspace width="0.2em"/>}} +\HLet\bmod\:tempc +\def\:tempc#1{\allowbreak + \HCode{<\a:mathml mspace width="0.3em"/>}(#1)} +\HLet\pod=\:tempc +\def\:tempc#1{\pod{\mathop{mod}\HCode{<\a:mathml mspace width="0.3em"/>}#1}} +\HLet\pmod=\:tempc +\def\:tempc#1{\allowbreak + \HCode{<\a:mathml mspace width="0.3em"/>}\mathop + {mod}\HCode{<\a:mathml mspace width="0.3em"/>}#1} +\HLet\mod=\:tempc +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{amsopn} +%%%%%%%%%%%%%%%%%%%% + + +\marginpar{remove the following def in liu of xtpipes} + +\<amsopn / amstex.sty mathml\><<< +\def\:tempc{{\underrightarrow\lim}} \HLet\varinjlim\:tempc +\def\:tempc{{\underleftarrow\lim}} \HLet\varprojlim\:tempc +\def\:tempc{{\overline\lim}} \HLet\varlimsup\:tempc +\def\:tempc{{\underline\lim}} \HLet\varliminf\:tempc +>>> + + +\<amsopn / amstex.sty mathml\><<< +\def\:tempc#1#2#3{\hbox{{\mtexttrue + \HCode{<\a:mathml mrow\Hnewline + \mml:class="text"><\a:mathml mtext + \a:@mtext>}|<start mtext space|>\PauseMathClass + \Configure{$}{\EndPauseMathClass\mtextfalse + |<end mtext space|>\HCode{</\a:mathml mtext><\a:mathml + mrow\Hnewline \mml:class="math">}} + {\HCode{</\a:mathml mrow><\a:mathml mtext + \a:@mtext>}|<start mtext space|>\mtexttrue\PauseMathClass}{#1} + \let\f@size#2\selectfont #3}% + \mtextfalse \EndPauseMathClass |<end mtext space|>\HCode + {</\a:mathml mtext></\a:mathml mrow>}}} +\HLet\textdef@\:tempc +>>> + + +The original definitions for the following macros contain small spaces +\verb+\,+ in the names, and the spaces imply improper mathml outcome +of the form \verb+<mo>...<mspace.../>...</mo>+. + + +\<configure mathml amsopn\><<< +\def\:tempc{\qopname\relax m{lim inf}} +\HLet\liminf=\:tempc +\def\:tempc{\qopname\relax m{lim sup}} +\HLet\limsup=\:tempc +\def\:tempc{\qopname\relax m{proj lim}} +\HLet\projlim=\:tempc +\def\:tempc{\qopname\relax m{inj lim}} +\HLet\injlim=\:tempc +>>> + + + + + +Why originally the accents are defined within a group? (knuth answer +this in the texbook.) + +\<plain,latex mathml\><<< +\let\A:oalign|=\a:oalign +\let\B:oalign|=\b:oalign +\Configure{oalign} + {\ifmmode \Configure{$}{\Tg<\a:mathml mrow\Hnewline>}% + {\Tg</\a:mathml mrow>}{}% + \let\halign|=\TeXhalign + \Tg<\a:mathml mrow\Hnewline \mml:class="oalign">\else\A:oalign + \fi} + {\ifmmode \Tg</\a:mathml mrow>\else\B:oalign\fi} +>>> + + +\<configure mathml amsopn\><<< +\Configure{qopname} + {\Configure{mathop}{*} + {<\a:mathml mi \mml:class="qopname">} + {</\a:mathml mi><mo> ⁡<!--FUNCTION APPLICATION--> </mo>} + {}} +>>> + +The following CSS caused too large whitespace around functions +%\Css{mi.qopname + mo{margin-left:0.3em}} +%\Css{mi + mi.qopname{margin-left:0.3em}} + + +%%%%%%%%%%%%%%%%% +\subsection{mathtools} +%%%%%%%%%%%%%%%%%% + +\<configure mathml mathtools\><<< +\Configure{MT_gathered_env} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="MT-gathered-env">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}} +\ConfigureEnv{MT_gathered_env}{}{}{}{} +>>> + +\<configure mathml mathtools\><<< +\ConfigureEnv{gathered} + {% + \Configure{MT_gathered_env} + {\HCode{<\a:mathml mtable\Hnewline + \mml:class="gathered" columnalign="center" >}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}}% + } + {}{}{} +>>> + +\<configure mathml mathtools\><<< +\ConfigureEnv{lgathered} + {% + \Configure{MT_gathered_env} + {\HCode{<\a:mathml mtable\Hnewline + \mml:class="lgathered" columnalign="left" >}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}}% + } + {}{}{} +>>> + + +\<configure mathml mathtools\><<< +\ConfigureEnv{rgathered} + {% + \Configure{MT_gathered_env} + {\HCode{<\a:mathml mtable\Hnewline + \mml:class="rgathered" columnalign="right" >}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}}% + } + {}{}{} +>>> + + +\<configure mathml mathtools\><<< +\ConfigureEnv{cases} + {\HCode{<\a:mathml mrow \mml:class="cases" >}} + {\HCode{</\a:mathml mrow>}} + {}{} +\Configure{dcases} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="dcases">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd columnalign="left">}} + {\HCode{</\a:mathml mtd>}} +\Configure{dcases*} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="dcases-star">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd columnalign="left">}% + \ifnum\HCol=2 + \PauseMathClass + \HCode{<\a:mathml mtext>}% + \fi + } + {\ifnum\HCol=2 + \EndPauseMathClass + \HCode{</\a:mathml mtext>}% + \fi + \HCode{</\a:mathml mtd>}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Gaus} +%%%%%%%%%%%%%%%%%% + + + +\<configure mathml gauss\><<< +\Configure{gmatrix} + {\HCode{<\a:mathml mtable \mml:class="gmatrix-\g@environment">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="gmatrix">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{\Hnewline<\a:mathml mtd>}} + {\HCode{</\a:mathml mtd>}} +>>> + +\<configure mathml gauss\><<< +\Css{mtr.gmatrix mtd {margin-left:0em; margin-right:0em; + padding-left:0em; padding-right:0em; + text-indent:0pt; +}} +\Css{mfenced mtable {margin-left:0em; margin-right:0em; + padding-left:0em; padding-right:0em; + text-indent:0pt; +}} +>>> + +\<configure mathml gauss\><<< +\Configure{rowops} + {\HCode{<mtable class="rowops"> + <mtr><mtd columnspan="3"><mtext>Row ops:</mtext></mtd></mtr> + }} + {\HCode{</mtable>}} +\Configure{colops} + {\HCode{<mtable class="colops"> + <mtr><mtd columnspan="3"><mtext>Col ops:</mtext></mtd></mtr> + }} + {\HCode{</mtable>}} +\Css{mtable.rowops, mtable.colops { + margin-left:0.2em; + margin-right:0.2em; + font-size:75\%; + }} +\Css{mtable.rowops mtr, mtable.colops mtr, + mtable.rowops mtd, mtable.colops mtd + { + margin:0em; padding:0em; + }} +\Configure{add} + {\HCode{<mtr><mtd>}\mbox{add }\HCode{</mtd><mtd>}} + {,\HCode{</mtd><mtd>}} + {\HCode{</mtd></mtr>}} +\Configure{mult} + {\HCode{<mtr><mtd>}\mbox{mult }\HCode{</mtd><mtd>}} + {,\HCode{</mtd><mtd>}} + {\HCode{</mtd></mtr>}} +\Configure{swap} + {\HCode{<mtr><mtd>}\mbox{swap }\HCode{</mtd><mtd>}} + {,\HCode{</mtd><mtd>}} + {\HCode{</mtd></mtr>}} +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{Eqnarray} +%%%%%%%%%%%%%%%%%%%% + +Had `BASELINE' before `MIDDLE', but changed to conform with math +in page 252-- in intro to theory book. + +\<mathml latex\><<< +\ConfigureEnv{eqnarray} + {\ifvmode \IgnorePar \fi \EndP} + {\ifvmode \IgnorePar \fi \EndP \ShowPar \par} + {}{} +\Configure{eqnarray} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="eqnarray\ifx + \@seqncr\@eqncr\else-star\fi" + \a:mathml columnalign="right center left" >}}% + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\Tg<\a:mathml mtd\Hnewline \mml:class="eqnarray-\HCol"> + \ifnum \HCol=4 + \Tg<\a:mathml mtext + \mml:class="eqnarray">|<start mtext space|>\PauseMathClass + \mtexttrue + |<config math within mtext|>% + \fi} + {\ifnum \HCol=4 \mtextfalse + \EndPauseMathClass|<end mtext space|>\Tg</\a:mathml mtext>\fi + \Tg</\a:mathml mtd>} +>>> + + + + +\<configure html-mml latex\><<< +|<config multicolumn|> +>>> + + +\<configure html-mml array\><<< +|<config multicolumn|> +>>> + + +\<config multicolumn\><<< +\Configure{multicolumn} + {\let\sv:VBorder\VBorder + \let\VBorder\empty + \Configure{VBorder}{}{}{}{}% + } + {\let\VBorder\sv:VBorder} + {\ifmmode \HCode{<\a:mathml mrow\Hnewline \mml:class="multicolumn}% + {|<attributes of mml multicolumn|>\HColAlign}\HCode{">}\else + \ifvmode\IgnorePar\fi + \HCode{<div class="multicolumn" }\HColAlign\HCode{>}\fi } + {\ifmmode \HCode{</\a:mathml mrow>}\else + \ifvmode\IgnorePar\fi \EndP\HCode{</div>}\fi } +\def\gob:sp#1{#1} +>>> + +\<attributes of mml multicolumn\><<< +\Configure{halignTD} {}{} + {<}{\HCode{-left}} + {-}{\HCode{-center}} + {>}{\HCode{-right}} + {p}{\HCode{-left}} + {}% +>>> + + +\<configure html-mml tex4ht\><<< +\Configure{halignTD} {}{} + {<}{\ifmathml \HCode{ \a:mathml columnalign="left"}\else + \HCode{ style="text-align:left; white-space:nowrap;"}\fi} + {-}{\ifmathml \HCode{ \a:mathml columnalign="center"}\else + \HCode{ style="text-align:center; white-space:nowrap;"}\fi} + {>}{\ifmathml \HCode{ \a:mathml columnalign="right"}\else + \HCode{ style="text-align:right; white-space:nowrap;"}\fi} + {^}{\ifmathml \HCode{ \a:mathml rowalign="top"}\else + \HCode{ style="vertical-align:top; white-space:nowrap;"}\fi} + {=}{\ifmathml \HCode{ \a:mathml rowalign="baseline"}\else + \HCode{ style="vertical-align:baseline; white-space:nowrap;"}\fi} + {||}{\ifmathml \HCode{ \a:mathml rowalign="center"}\else + \HCode{ style="vertical-align:middle; white-space:nowrap;"}\fi} + {_}{\ifmathml \HCode{ \a:mathml rowalign="bottom"}\else + \HCode{ style="vertical-align:bottom; white-space:nowrap;"}\fi} + {p}{\ifmathml \HCode{ \a:mathml columnalign="left"}\else + \HCode{ style="text-align:left;"}\fi} + {} +>>> + + + + +\<configure mathml tex4ht\><<< +\Configure{halignTD} {}{} + {<}{\HCode{ \a:mathml columnalign="left"}} + {-}{\HCode{ \a:mathml columnalign="center"}} + {>}{\HCode{ \a:mathml columnalign="right"}} + {^}{\HCode{ \a:mathml rowalign="top"}} + {=}{\HCode{ \a:mathml rowalign="baseline"}} + {||}{\HCode{ \a:mathml rowalign="center"}} + {_}{\HCode{ \a:mathml rowalign="bottom"}} + {p}{\HCode{ \a:mathml columnalign="left"}} + {} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Big, BIG, ....} +%%%%%%%%%%%%%%%%%%%%%%%%% + +The +\verb'\special{t4ht@[}...\special{t4ht@]}' gobble the enclosed stuff. +The external pair is provided as grouping mechanism for +sub/super-scripts cases like \verb'\bigl(...\bigr)^x' within dvimath +mode. The \verb'{\HCode{}}' is neded for creating content delimiters +\verb'.' delimiters like in \verb'$\bigl. a_b \bigr)$'; without that mathml +gets something wrong there. + + +\begin{verbatim} + > There are some minor problems wit \bigl | corresponding to #x2223 in + > Mozilla encoding + > but I eliminted it by using \left | which turned to be a right solution. + +The \big... macros decide the dimensions of the delimiters. As is the +case with \sum, also here I don't know how to transport the dimensions +to mozilla. + +The \left...\right macros ask latex/mozilla to determine the +dimensions. +\end{verbatim} + + + +\</bigl, /bigr,... for mathml\><<< +\NewConfigure{Biggl}{2} +\NewConfigure{Biggm}{2} +\NewConfigure{Biggr}{2} +\NewConfigure{Bigl}{2} +\NewConfigure{Bigm}{2} +\NewConfigure{Bigr}{2} +\NewConfigure{biggl}{2} +\NewConfigure{biggm}{2} +\NewConfigure{biggr}{2} +\NewConfigure{bigl}{2} +\NewConfigure{bigm}{2} +\NewConfigure{bigr}{2} +|<big common|> +\:CheckOption{mathml-} \if:Option + |<big mathml-|> +\else + |<big mathml|> +\fi +>>> + +\<big mathml\><<< +\Configure{Biggl} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathopen}{*} + {<mrow><mo \mml:class="MathClass-open" + fence="true" mathsize="2.45em" >} + {</mo><mrow>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Biggr} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathclose}{*} + {</mrow><mo \mml:class="MathClass-close" + fence="true" mathsize="2.45em" >} + {</mo></mrow>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{Bigl} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathopen}{*} + {<mrow><mo \mml:class="MathClass-open" + fence="true" mathsize="1.61em" >} + {</mo><mrow>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Bigr} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathclose}{*} + {</mrow><mo \mml:class="MathClass-close" + fence="true" mathsize="1.61em" >} + {</mo></mrow>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{biggl} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathopen}{*} + {<mrow><mo \mml:class="MathClass-open" + fence="true" mathsize="2.03em" >} + {</mo><mrow>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{biggr} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathclose}{*} + {</mrow><mo \mml:class="MathClass-close" + fence="true" mathsize="2.03em" >} + {</mo></mrow>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{bigl} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathopen}{*} + {<mrow><mo \mml:class="MathClass-open" + fence="true" mathsize="1.19em" >} + {</mo><mrow>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{bigr} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathclose}{*} + {</mrow><mo \mml:class="MathClass-close" + fence="true" mathsize="1.19em" >} + {</mo></mrow>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +>>> + + + + +\<big mathml-\><<< +\Configure{Biggl} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathopen}{*} + {<mrow><mo \mml:class="MathClass-open" + fence="true" mathsize="2.45em" >} + {</mo>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Biggr} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathclose}{*} + {<mo \mml:class="MathClass-close" + fence="true" mathsize="2.45em" >} + {</mo></mrow>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{Bigl} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathopen}{*} + {<mrow><mo \mml:class="MathClass-open" + fence="true" mathsize="1.61em" >} + {</mo>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{Bigr} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathclose}{*} + {<mo \mml:class="MathClass-close" + fence="true" mathsize="1.61em" >} + {</mo></mrow>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{biggl} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathopen}{*} + {<mrow><mo \mml:class="MathClass-open" + fence="true" mathsize="2.03em" >} + {</mo>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{biggr} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathclose}{*} + {<mo \mml:class="MathClass-close" + fence="true" mathsize="2.03em" >} + {</mo></mrow>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +\Configure{bigl} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathopen}{*} + {<mrow><mo \mml:class="MathClass-open" + fence="true" mathsize="1.19em" >} + {</mo>} + {\Configure{mathopen}{}{}{}{}}% + } + {\egroup} +\Configure{bigr} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathclose}{*} + {<mo \mml:class="MathClass-close" + fence="true" mathsize="1.19em" >} + {</mo></mrow>} + {\Configure{mathclose}{}{}{}{}}% + } + {\egroup} +>>> + + + +\<big common\><<< +\Configure{Biggm} + {\bgroup + \Configure{Bigg}{}{}{}{}% + \Configure{mathrel}{*} + {<mo \mml:class="MathClass-rel" + fence="true" mathsize="2.45em" >} + {</mo>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{Bigm} + {\bgroup + \Configure{Big}{}{}{}{}% + \Configure{mathrel}{*} + {<mo \mml:class="MathClass-rel" + fence="true" mathsize="1.61em" >} + {</mo>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{biggm} + {\bgroup + \Configure{bigg}{}{}{}{}% + \Configure{mathrel}{*} + {<mo \mml:class="MathClass-rel" + fence="true" mathsize="2.03em" >} + {</mo>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +\Configure{bigm} + {\bgroup + \Configure{big}{}{}{}{}% + \Configure{mathrel}{*} + {<mo \mml:class="MathClass-rel" + fence="true" mathsize="1.19em" >} + {</mo>} + {\Configure{mathrel}{}{}{}{}}% + } + {\egroup} +>>> + + + +\</bigl, /bigr,... for mathml\><<< +\def\:tempc#1{\ht:special{t4ht@[}(\ht:special{t4ht@]}% + \a:bigl\mathopen{\left:right\big{#1\:EMPTY}}\b:bigl\:EMPTY} +\HLet\bigl=\:tempc +\def\:tempc#1{\a:bigm\mathrel{\left:right\big{#1\:EMPTY}}\b:bigm} +\HLet\bigm=\:tempc +\def\:tempc#1{\:EMPTY + \a:bigr\mathclose{\left:right\big{#1\:EMPTY}}\b:bigr% + \ht:special{t4ht@[})\ht:special{t4ht@]}} +\HLet\bigr=\:tempc +\def\:tempc#1{\ht:special{t4ht@[}(\ht:special{t4ht@]}% + \a:Bigl\mathopen{\left:right\Big{#1}\:EMPTY}\b:Bigl\:EMPTY} +\HLet\Bigl=\:tempc +\def\:tempc#1{\a:Bigm\mathrel{\left:right\Big{#1\:EMPTY}}\b:Bigm} +\HLet\Bigm=\:tempc +\def\:tempc#1{\:EMPTY + \a:Bigr\mathclose{\left:right\Big{#1\:EMPTY}}\b:Bigr% + \ht:special{t4ht@[})\ht:special{t4ht@]}} +\HLet\Bigr=\:tempc +\def\:tempc#1{\ht:special{t4ht@[}(\ht:special{t4ht@]}% + \a:biggl\mathopen{\left:right\bigg{#1\:EMPTY}}\b:biggl\:EMPTY} +\HLet\biggl=\:tempc +\def\:tempc#1{\a:biggm\mathrel{\left:right\bigg{#1\:EMPTY}}\b:biggm} +\HLet\biggm=\:tempc +\def\:tempc#1{\:EMPTY + \a:biggr\mathclose{\left:right\bigg{#1\:EMPTY}}\b:biggr% + \ht:special{t4ht@[})\ht:special{t4ht@]}} +\HLet\biggr=\:tempc +\def\:tempc#1{\ht:special{t4ht@[}(\ht:special{t4ht@]}% + \a:Biggl\mathopen{\left:right\Bigg{#1\:EMPTY}}\b:Biggl\:EMPTY} +\HLet\Biggl=\:tempc +\def\:tempc#1{\a:Biggm\mathrel{\left:right\Bigg{#1\:EMPTY}}\b:Biggm} +\HLet\Biggm=\:tempc +\def\:tempc#1{\:EMPTY + \a:Biggr\mathclose{\left:right\Bigg{#1}\:EMPTY}\b:Biggr + \ht:special{t4ht@[})\ht:special{t4ht@]}} +\HLet\Biggr=\:tempc +\def\:EMPTY{{\HCode{}}} +\def\left:right{% + \let\left|=\o:left: + \let\right|=\o:right: + \Configure{left}{}{}\Configure{right}{}{}} +>>> + +\verb+\bigl{.}+ et al produce empty para,etr , hence the \verb+\:EMPTY+ is a ompensation for such cases. + +\<mathml plain,fontmath\><<< +\Configure{big} + {}{} + {\HCode{<\a:mathml mstyle mathsize="1.19em">}} + {\HCode{</\a:mathml mstyle>}} +\Configure{Big} + {}{} + {\HCode{<\a:mathml mstyle mathsize="1.61em">}} + {\HCode{</\a:mathml mstyle>}} +\Configure{bigg} + {}{} + {\HCode{<\a:mathml mstyle mathsize="2.03em">}} + {\HCode{</\a:mathml mstyle>}} +\Configure{Bigg} + {}{} + {\HCode{<\a:mathml mstyle mathsize="2.45em">}} + {\HCode{</\a:mathml mstyle>}} +>>> + +% \R=8.5; \R*1.4; \WriteVal\R +% \R=11.5; \R*1.4; \WriteVal\R +% \R=14.5; \R*1.4; \WriteVal\R +% \R=17.5; \R*1.4; \WriteVal\R + + +\<mathml plain,fontmath\><<< +\def\:tempc#1{{\hbox{\a:big$\c:big + \left#1\hbox{}\right.\n@space\d:big$\b:big}}} +\HLet\big=\:tempc +\def\:tempc#1{{\hbox{\a:Big$\c:Big + \left#1\hbox{}\right.\n@space\d:Big$\b:Big}}} +\HLet\Big=\:tempc +\def\:tempc#1{{\hbox{\a:bigg$\c:bigg + \left#1\hbox{}\right.\n@space\d:bigg$\b:bigg}}} +\HLet\bigg=\:tempc +\def\:tempc#1{{\hbox{\a:Bigg$\c:Bigg + \left#1\hbox{}\right.\n@space\d:Bigg$\b:Bigg}}} +\HLet\Bigg=\:tempc +>>> + +\<configure mathml amsbsy\><<< +\Configure{pmb} + {\ifmmode \HCode{<!--binary math rel, tripple hight-->}\fi} + {\ifmmode \HCode{<!--/binary math rel, tripple hight-->}\fi} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\section{stackrel} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<mathml latex\><<< +\def\:temp#1#2{{\a:stackrel{#1}\b:stackrel {#2}\c:stackrel}} +\HLet\stackrel|=\:temp +\:CheckOption{stackrel-} \if:Option + \Configure{stackrel} + {\mathrel\bgroup \HCode{<\a:mathml mglyph\Hnewline + alt="\string\stackrel}\afterassignment\put:arg\tmp:toks} + {\afterassignment\put:arg\tmp:toks} + {\HCode{" />}\egroup} + \def\put:arg{\HCode{{\the\tmp:toks}}} +\else + \Configure{stackrel} + {\HCode{<\a:mathml mover\Hnewline + \mml:class="stackrel"><\a:mathml mrow\Hnewline>}\inv:i:iii} + {\HCode{</\a:mathml mrow><\a:mathml + mrow\Hnewline>}|<mathop nested within stackrel|>\mathop} + {\HCode{</\a:mathml mrow></\a:mathml mover>}} + \def\inv:i:iii#1#2#3{{#3}#2{#1}} +\fi +>>> + +\<mathop nested within stackrel\><<< +\Configure{mathop*}{*} + {<\a:mathml mrow>} + {</\a:mathml mrow>} + {\Configure{mathop}{}{}{}{}}% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{fontmath.ltx} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +Accent versus underscript: \verb=\underbrace{x+y+z}= + versus \verb=\underbrace{\strut x+y+z}= + +\<mathml plain,fontmath\><<< +\Configure{overbrace} + {\Configure{mathop*}{*} + {<\a:mathml mover \a:mathml accent="false"><\a:mathml mrow>} + {</\a:mathml mrow><\a:mathml mo>\string + &\#xFE37;</\a:mathml mo></\a:mathml mover>} + {\Configure{mathop}{}{}{}{}}% + } + {\let\o:overbrace:=\displaystyle} + {} +\Configure{underbrace} + {\Configure{mathop*}{*} + {<\a:mathml munder + \a:mathml accentunder="false"><\a:mathml mrow>} + {</\a:mathml mrow><\a:mathml mo>\string + &\#xFE38;</\a:mathml mo></\a:mathml munder>} + {\Configure{mathop}{}{}{}{}}% + } + {\let\o:underbrace:=\displaystyle} + {} +>>> + +\<\><<< +\def\:temp#1{% + \Configure{mathop*}{*}{<\a:mathml mrow \mml:class="underbrace">} + {</\a:mathml mrow>}% + {\Configure{mathop}{}{}{}{}}% + \mathop{\hbox{$\displaystyle{#1}$}}\limits} +\HLet\underbrace|=\:temp +\def\:temp#1{% + \Configure{mathop*}{*}{<\a:mathml mrow \mml:class="overbrace">} + {</\a:mathml mrow>}% + {\Configure{mathop}{}{}{}{}}% + \mathop{\hbox{$\displaystyle{#1}$}}\limits} +\HLet\overbrace|=\:temp +>>> + + +\<amsmath mathmlNO\><<< +\def\:temp#1{% + \Configure{mathop*}{*}{<\a:mathml mrow \mml:class="underbrace">} + {</\a:mathml mrow>}% + {\Configure{mathop}{}{}{}{}}% + \mathop{\vtop{$\displaystyle{#1}$}}\limits} +\HLet\underbrace|=\:temp +>>> + +\<mathml plain,fontmath\><<< +\Configure{MathClass}{0}{*}{<\a:mathml mi\Hnewline>}{</\a:mathml mi>}{} +\Configure{MathClass}{1}{*}{<\a:mathml mi\Hnewline + \mml:class="MathClass-op">}{</\a:mathml mi><mo> ⁡<!--FUNCTION APPLICATION--></mo>}{} +\Configure{MathClass}{2}{*}{<\a:mathml mo\Hnewline + \mml:class="MathClass-bin">}{</\a:mathml mo>}{} +\Configure{MathClass}{3}{*}{<\a:mathml mo\Hnewline + \mml:class="MathClass-rel">}{</\a:mathml mo>}{} +\Configure{MathClass}{4}{*}{<\a:mathml mo\Hnewline + \mml:class="MathClass-open">} + {</\a:mathml mo>}{} +\Configure{MathClass}{5}{*}{<\a:mathml mo\Hnewline + \mml:class="MathClass-close">} + {</\a:mathml mo>}{} +\Configure{MathClass}{6}{*}{<\a:mathml mo\Hnewline + \mml:class="MathClass-punc">}{</\a:mathml mo>}{} +\Configure{MathClass}{7}{*}{<\a:mathml mn>}{</\a:mathml mn>} + {0123456789} +\ifx \mathordMathClass\:UnDef + \NewMathClass\mathordMathClass +\fi +\Configure{MathClass}{\mathordMathClass}{*}{<\a:mathml mo\Hnewline + \mml:class="MathClass-ord">}{</\a:mathml mo>}{} +\Configure{FormulaClass}{0}{}{}{} +\Configure{FormulaClass}{1}{}{}{} +\Configure{FormulaClass}{2}{}{}{} +\Configure{FormulaClass}{3}{}{}{} +\Configure{FormulaClass}{4}{}{}{} +\Configure{FormulaClass}{5}{}{}{} +\Configure{FormulaClass}{6}{}{}{} +>>> + + +The following code is to insert spaces +for casses like \verb=$a \mathop{div} b$= +but not \verb=$\mathop{div} (\mathbf{F})$= + +\<mathml plain,fontmath\><<< +\Css{mo.MathClass-op + mi{margin-left:0.3em}} +\Css{mi + mo.MathClass-op{margin-left:0.3em}} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Limits of Sub- snd Super- Scripts} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<limits sub, sup, subsup\><<< +\Configure{nolimits}{\HCode{<!--nolimits-->}} +\Configure{limits} + {|<limit scripts|>} +>>> + + +\<limit scripts\><<< +\let|<restore SUB|>=\:UnDef +\let|<restore SUP|>=\:UnDef +\ifx \:temp\sp |<conf limits SUP|>\else + \ifx \:temp\sb |<conf limits SUB|>\fi +\fi +|<conf limits SUBSUP|>% +>>> + + + +\<limits sub, sup, subsup\><<< +\Configure{displaylimits} + {\ifDisplayMath \expandafter\disp:limits\fi} +\def\disp:limits{|<limit scripts|>} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Simultaneously Sub- and Super- Scripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<conf limits SUBSUP\><<< +|<save pre-limits SUBSUP|>% +\Configure{SUBSUP} + {\ifx |<restore SUB|>\:UnDef\else |<restore SUB|>\fi + \ifx |<restore SUP|>\:UnDef\else |<restore SUP|>\fi + |<restore pre-limits SUBSUP|>% + \Send{BACK} + {<\a:mathml munderover \a:mathml accentunder="false" + \a:mathml accent="false"><\a:mathml mrow + \Hnewline>}% + \Tg</\a:mathml mrow>\Tg<\a:mathml + mrow\Hnewline>\trap:base + } + {\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base} + {\Tg</\a:mathml mrow>\TG</\a:mathml munderover\Hnewline>} +>>> + + +\<save pre-limits SUBSUP\><<< +\let|<restore SUBSUP|>=\SUBSUP: +>>> + +\<restore pre-limits SUBSUP\><<< +\ifx |<restore SUBSUP|>\:UnDef \else + \let\SUBSUP:=|<restore SUBSUP|>% +\fi +>>> + +\<limits sub, sup, subsup\><<< +\ifx \a:putSUB\:UnDef \else + \pend:def\a:putSUB{\ifx |<restore SUBSUP|>\:UnDef\else + \let\SUBSUP:=|<restore SUBSUP|>% + \let|<restore SUBSUP|>=\:UnDef + \fi}% +\fi +\ifx \a:putSUP\:UnDef \else + \pend:def\a:putSUP{\ifx |<restore SUBSUP|>\:UnDef\else + \let\SUBSUP:=|<restore SUBSUP|>% + \let|<restore SUBSUP|>=\:UnDef + \fi}% +\fi +>>> + + +\<restore SUBSUP\><<< +\pl:SUBSUP +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Superscripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<conf limits SUP\><<< +|<save pre-limits SUP|>% +\Configure{SUP} + {|<open external limits SUP|>\bgroup + |<restore pre-limits SUBSUP|>% + |<conf second limits SUP|>\trap:base} + {}% +>>> + +\<save pre-limits SUP\><<< +\def\pl:SUP{\Configure{SUP}}% +\expandafter\append:def + \expandafter\pl:SUP\expandafter{\expandafter{\a:SUP}}% +\expandafter\append:def + \expandafter\pl:SUP\expandafter{\expandafter{\b:SUP}}% +>>> + +\<conf second limits SUP\><<< +\Configure{SUP} + {|<open intermediate limits SUP|>\bgroup + |<conf third limit SUP|>\trap:base} + {\egroup|<close external limits SUP|>}% +>>> + + +\<conf third limit SUP\><<< +\Configure{SUP} + {|<open internal limits SUP|>\bgroup \trap:base} + {\egroup |<close internal limits SUP|>}% +>>> + + +\<open external limits SUP\><<< +\Send{BACK}{<\a:mathml mover + \mml:class="msup"><\a:mathml mrow\Hnewline>}% +\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>% +>>> + +\<close external limits SUP\><<< +\Tg</\a:mathml mrow>\TG</\a:mathml mover\Hnewline>\aftergroup|<restore SUP|>% +>>> + +\<restore SUP\><<< +\pl:SUP >>> + +\<open intermediate limits SUP\><<< +\Send{BACK}{<\a:mathml msup><\a:mathml mrow\Hnewline>}% +\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>% +>>> + +\<open internal limits SUP\><<< +\Send{BACK}{<\a:mathml msup><\a:mathml mrow\Hnewline>}% +\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>% +>>> + +\<close internal limits SUP\><<< +\Tg</\a:mathml mrow>\TG</\a:mathml msup\Hnewline>% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Subscripts} +%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<conf limits SUB\><<< +|<save pre-limits SUB|>% +\Configure{SUB} + {|<open external limits SUB|>\bgroup + |<restore pre-limits SUBSUP|>% + |<conf second limits SUB|>\trap:base} + {}% +>>> + +\<save pre-limits SUB\><<< +\def\pl:SUB{\Configure{SUB}}% +\expandafter\append:def + \expandafter\pl:SUB\expandafter{\expandafter{\a:SUB}}% +\expandafter\append:def + \expandafter\pl:SUB\expandafter{\expandafter{\b:SUB}}% +>>> + +\<conf second limits SUB\><<< +\Configure{SUB} + {|<open intermediate limits SUB|>\bgroup + |<conf third limit SUB|>\trap:base} + {\egroup|<close external limits SUB|>}% +>>> + + +\<conf third limit SUB\><<< +\Configure{SUB} + {|<open internal limits SUB|>\bgroup \trap:base} + {\egroup |<close internal limits SUB|>}% +>>> + + +\<open external limits SUB\><<< +\Send{BACK}{<\a:mathml munder + \mml:class="msub"><\a:mathml mrow\Hnewline>}% +\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>% +>>> + +\<close external limits SUB\><<< +\Tg</\a:mathml mrow>\TG</\a:mathml + munder\Hnewline>\aftergroup|<restore SUB|>% +>>> + +\<restore SUB\><<< +\pl:SUB >>> + +\<open intermediate limits SUB\><<< +\Send{BACK}{<\a:mathml msub><\a:mathml mrow\Hnewline>}% +\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>% +>>> + +\<open internal limits SUB\><<< +\Send{BACK}{<\a:mathml msub><\a:mathml mrow\Hnewline>}% +\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>% +>>> + +\<close internal limits SUB\><<< +\Tg</\a:mathml mrow>\TG</\a:mathml msub\Hnewline>% +>>> + +%%%%%%%%%%%%% +\subsection{Limits on Operators} +%%%%%%%%%%%%% + + +\<configure mathml latex\><<< +\def\:tempb#1{% + \expandafter\let\expandafter\:tempc\csname #1\endcsname + \append:def\:tempc{\limits}% + \expandafter\HLet\csname #1\endcsname\:tempc +} +\:tempb{lim} +\:tempb{limsup} +\:tempb{liminf} +\:tempb{max} +\:tempb{min} +\:tempb{sup} +\:tempb{inf} +\:tempb{det} +\:tempb{Pr} +\:tempb{gcd} +>>> + +%%%%%%%%%%%%%%% +\subsection{Upright letters} +%%%%%%%%%%%%%%% + +The following commands should produce upright characters. So we redefine them +to produce mi elements with mathvariant attribute, that hold their Unicode +charactes. + +Extra brackets are used in order to support subscripts and superscripts. + +\<configure mathml latex\><<< +\def\:temp#1#2{\def#1{\PauseMathClass{\HCode{<mi mathvariant="normal">}\ht:special{t4ht@+\string&{35}x#2{59}}\a:HChar\HCode{</mi>}}\EndPauseMathClass}} +\:temp\Psi{03A8} +\:temp\Delta{0394} +\:temp\Xi{039E} +\:temp\Pi{03A0} +\:temp\Sigma{03A3} +\:temp\Upsilon{03A5} +\:temp\Omega{03A9} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sized Operations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<plain,latex mathml\><<< +\def\mathop:prefix#1{% + \Configure{mathop}{*}{<\a:mathml mo #1\Hnewline>}{</\a:mathml mo>}% + {\Configure{mathop}{*}{<\a:mathml mo>}{</\a:mathml mo>}{}}} +>>> + +\<configure mathml amsmath\><<< +\def\:tempc{\ifDisplayMath\mathop:prefix{}\fi\o:n:iint::} +\HLet\n:iint:\:tempc +\def\:tempc{\ifDisplayMath\mathop:prefix{}\fi\o:n:iiint::} +\HLet\n:iiint:\:tempc +\def\:tempc{\ifDisplayMath\mathop:prefix{}\fi\o:n:idotsint::} +\HLet\n:idotsint:\:tempc +>>> + +\<configure mathml fontmath\><<< +\def\:tempd#1#2{% + \expandafter\def\csname #1\endcsname{\mathchar"13#2\relax}% + \MathSymbol\mathop{#1}% + \expandafter\def\csname #1:limits\endcsname{\expandafter + \:same \math:sym\mathop{#1}\limits}% + \expandafter\def\csname #1:nolimits\endcsname{\expandafter + \:same \math:sym\mathop{#1}\nolimits}% + \expandafter\edef\csname n:#1:\endcsname{\noexpand\ifDisplayMath + \noexpand\expandafter \expandafter\noexpand \csname #1:limits\endcsname + \noexpand\else \noexpand\expandafter + \expandafter\noexpand + \csname #1:nolimits\endcsname\noexpand\fi}% + \expandafter\pend:def\csname n:#1:\endcsname{\ifDisplayMath + \mathop:prefix{}\fi}% +} +\:tempd{bigcap}{54} +\:tempd{bigcup}{53} +\:tempd{bigodot}{4A} +\:tempd{bigoplus}{4C} +\:tempd{bigotimes}{4E} +\:tempd{bigsqcup}{46} +\:tempd{biguplus}{55} +\:tempd{bigvee}{57} +\:tempd{bigwedge}{56} +\:tempd{coprod}{60} +\:tempd{intop}{52} +\:tempd{ointop}{48} +\:tempd{prod}{51} +\:tempd{sum}{50} +>>> + +Fix the \verb|\int| command -- it should produce the \verb|<mo>| element. + +\<configure mathml fontmath\><<< +\def\:tempc{\ifDisplayMath\mathop:prefix{}\fi\o:n:int::} +\HLet\n:int:\:tempc +>>> + + +\<configure mathml amsmath\><<< +\ifx \ilimits@\o:nolimits: + \let\ilimits@\nolimits +\fi +\ifx \ilimits@\o:nolimits: + \let\slimits@\nolimits +\fi +>>> + + + +\begin{description} +\item[sumlimits] + (default) Place the subscripts and superscripts of summation symbols above and below, in displayed equations. This option also affects other symbols of the same type---, , , , and so forth---but excluding integrals (see below). + +\item[nosumlimits] + Always place the subscripts and superscripts of summation-type symbols to the side, even in displayed equations. + +\item[intlimits] + Like sumlimits, but for integral symbols. + + +\<configure mathml amsmath\><<< +\ifx \ilimits@\o:displaylimits: + \let\ilimits@\nolimits +\fi +>>> + +We currently ignore cases of the following kinds. + +\begin{verbatim} +\documentclass{article} + \usepackage[intlimits]{amsmath} +\begin{document} + $\int_{0}$ +\end{document} +\end{verbatim} + + +\item[nointlimits] + (default) Opposite of intlimits. + +\item[namelimits] + (default) Like sumlimits, but for certain `operator names' such as , , , , , that traditionally have subscripts placed underneath when they occur in a displayed equation. + +\item[nonamelimits] + Opposite of namelimits. +\end{description} + + + + +\<\><<< +\pend:def\n:int:{\ifDisplayMath\mathop:prefix{mathsize="big"}\fi} +\def\sum{\mathchar"1350} +\MathSymbol\mathop{sum} +\def\sum:limits{\expandafter\:same \math:sym\mathop{sum}\limits} +\def\sum:nolimits{\expandafter\:same \math:sym\mathop{sum}\nolimits} +\def\n:sum:{\ifDisplayMath \expandafter\sum:limits\else + \expandafter\sum:nolimits\fi} +\pend:def\n:sum:{\ifDisplayMath\mathop:prefix{mathsize="big"}\fi} +>>> + +% % \def\n:sum:{\expandafter\:same \math:sym\mathop{sum}\nolimits} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Accent through `accents' Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Should rename `accents' to `combining' (characters). + + +Test file for accents + +\begin{verbatim} +\documentclass{article} +\begin{document} + +\def\showaccents#1#2#3#4#5#6{\cr\hline + {\tt \ifx #1\relax\else \string#1\fi{} \string#2} & + \if !#3!\else $\ifx #1\relax\else#1{#3}\fi + \mbox{#2{#3}}$ {\bf #2{#3}}\fi & + \if !#4!\else $\ifx #1\relax\else#1{#4}\fi + \mbox{#2{#4}}$ {\bf #2{#4}}\fi & + \if !#5!\else $\ifx #1\relax\else#1{#5}\fi + \mbox{#2{#5}}$ {\bf #2{#5}}\fi + \if !#6!\else + \if !#6!\else $\ifx #1\relax\else#1{#6}\fi + \mbox{#2{#6}}$ {\bf #2{#6}}\fi + \fi +} + +\begin{tabular}{l|c|c|c} +& low unicode & high unicode & text combining accent \& mathml + \showaccents\dot\.{c}{a}{q}{X} + \showaccents\breve\u{a}{}{c}{F} + \showaccents\check\v{a}{h}{m}{F} + \showaccents\bar\={a}{y}{c}{F} + \showaccents\grave\`{a}{n}{c}{F} + \showaccents\acute\'{a}{}{m}{F} + \showaccents\hat\^{a}{z}{m}{F} + \showaccents\tilde\~{a}{v}{m}{F} + \showaccents\ddot\"{a}{h}{m}{C} + \showaccents\mathring\r{a}{}{m}{F} + \showaccents\relax\b{}{b}{c}{j} + \showaccents\relax\c{c}{d}{a}{j} + \showaccents\relax\d{a}{b}{c}{j} + \showaccents\relax\H{o}{}{c}{F} +\end{tabular} + +\end{document} +\end{verbatim} + + +|<temp indirect accents|> + +\<config mathml accents\><<< +\Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|<temp hcode accents|>% + \ht:special{t4ht@[}\if!#1!x\else#2\fi + \ht:special{t4ht@]}}} + {\ifmathml + \ifmtext |<accent in text mode|>% + \else \AccentMath{|<under over accents|>}\fi + \else |<accent in text mode|>\fi + } +>>> + +\<accent in text mode\><<< +\expandafter\ifx \csname :#1:over\endcsname\relax + \expandafter\ifx \csname :#1:under\endcsname\relax + \AccentMath{|<under over accents|>}% + \else #3\csname :#1:under\endcsname \fi +\else #3\csname :#1:over\endcsname \fi +>>> + +\<under over accents\><<< +\expandafter\ifx \csname :#1:over\endcsname\relax + |<under accents|>% +\else \expandafter\ifx \csname :#1:under\endcsname\relax + |<over accents|>% +\else + |<both accents|>% +\fi \fi +>>> + +\<under accents\><<< +\HCode{<\a:mathml munder\Hnewline + accent="true"><\a:mathml mrow\Hnewline>}#3\HCode{</\a:mathml mrow>}% + \csname :#1:under\endcsname + \HCode{</\a:mathml munder>}% +>>> + +\<over accents\><<< +\HCode{<\a:mathml mover\Hnewline + accent="true"><\a:mathml mrow\Hnewline>}#3\HCode{</\a:mathml mrow>}% + \csname :#1:over\endcsname + \HCode{</\a:mathml mover>}% +>>> + +\<both accents\><<< +\HCode{<\a:mathml munderover\Hnewline + accent="true"><\a:mathml mrow\Hnewline>}#3\HCode{</\a:mathml mrow>}% + \csname :#1:under\endcsname + \csname :#1:over\endcsname + \HCode{</\a:mathml munderover>}% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Underline and Overline} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure html-mml latex\><<< +\Configure{overline} + {\bgroup\ifmathml |<mathml overline|>\else + \HCode{<span class="overline">}\fi} + {\ifmathml |<end mathml overline|>\else \HCode{</span>}\fi\egroup} +\Configure{underline} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<span class="underline">}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</span>}\fi \egroup} +>>> + + +\<configure mathml ushort\><<< +\Configure{ushort} + {\bgroup + \expandafter\ushort:data + } + {\egroup} +\Configure{ushortw} + {\bgroup + \expandafter\ushort:data + } + {\egroup} +\Configure{ushortd} + {\bgroup + \expandafter\ushortd:data + } + {\egroup} +\Configure{ushortdw} + {\bgroup + \expandafter\ushortd:data + } + {\egroup} +\Configure{ushortdline} + {\bgroup\expandafter\ushortdline:data } + {\egroup} +\def\ushort:data#1#2{\underline{\:gobbleIII #2}} +\def\ushortd:data#1#2{\underline{\underline{\:gobbleIII #2}}} +\def\ushortdline:data#1#2{#1{#1{\:gobble #2}}} +>>> + + +\<mathml latex\><<< +|<und/ov-erline|> +>>> + +\<mathml plain\><<< +|<und/ov-erline|> +>>> + + +\<und/ov-erline\><<< +\Configure{overline} + {\bgroup |<mathml overline|>} + {|<end mathml overline|>\egroup} +\Configure{underline} + {\bgroup \ifmmode |<mathml underline|>\else + |<nomath underline|>\fi} + {|<end mathml underline|>\egroup} +>>> + +\<nomath underline\><<< +\expandafter\everymath +\expandafter{\expandafter\everymath + \expandafter{\the\everymath}}% +\let\o::@underline:\o:@@underline: +\def\o:@@underline:{\let\o:@@underline:\o::@underline:}% +>>> + + + + + + + + + + + +\<mathml overline\><<< +\HCode{<\a:mathml mover accent="false"\Hnewline +\mml:class="mml-overline"><\a:mathml mrow>}% +>>> + +\<end mathml overline\><<< +\HCode{</\a:mathml mrow><\a:mathml mo\Hnewline + accent="true">&\#x00AF;</\a:mathml mo>% +</\a:mathml mover>}% +>>> + +\verb'¯' is the code of \verb'‾' + + +\<mathml underline\><<< +\HCode{<\a:mathml munder \a:mathml accentunder="false"\Hnewline +\mml:class="mml-underline"><\a:mathml mrow>}% +>>> + +\<end mathml underline\><<< +\HCode{</\a:mathml mrow><\a:mathml mo\Hnewline +accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% +>>> + + +\verb'̲' is the code of \verb'_' + + + + + +\<mathml plain\><<< +|<arr: amsmath, amstex1|> +>>> + + + +\<configure mathml accents\><<< +\Configure{accentset} + {\HCode{<mover accent="true" class="accentset"><mrow>}} + {\HCode{</mrow><mrow> }} + {\HCode{</mrow></mover>}} +\Configure{underaccent} + {\HCode{<munder class="underaccent"><mrow>}} + {\HCode{</mrow><mrow> }} + {\HCode{</mrow></munder>}} +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Choose} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<plain,latex mathmlNO\><<< +\Configure{choose} + {\Send{GROUP}{0}{<\a:mathml mfrac linethickness="0" \mml:class="choose">\Hnewline + <\a:mathml mrow \mml:class="choose-1">}\HCode{</\a:mathml mrow>}} + {\HCode{\Hnewline<\a:mathml mrow \mml:class="choose-2">} + \Send{EndGROUP}{0}{</\a:mathml mrow></\a:mathml mfrac>}} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure html-mml latex\><<< +\Configure{footnote-mark} + {\ifmathml \ifmtext \else + \HCode{<\a:mathml mrow \mml:class="footnote-mark">}\fi + \else \HCode{<span class="footnote-mark">}\fi } + {\ifmathml \ifmtext \else \HCode{</\a:mathml mrow>}\fi + \else \HCode{</span>}\fi } +\Configure{thank-mark} + {\HCode{<\ifmathml \a:mathml mrow \expandafter\mml:class\else span class\fi + ="thank-mark">}} + {\HCode{</\ifmathml \a:mathml mrow\else span\fi>}} +>>> + + + + + +The following code segments handle the different listed cases, +with possible exception of the last. + +\begin{verbatim} +a\footnote{b c} + +$a\footnote{b c}$ + +$a\footnote{\hbox{b c}}$ + +$a\footnote{\mbox{b c}}$ + +$a\mbox{\footnote{b c}}$ +\end{verbatim} + + +We have the following hooks + + +\begin{verbatim} +\def\@footnotemark{...\a:@makefnmark\@makefnmark + \b:@makefnmark...} +\long\def\@footnotetext#1{...\a:footnote-text\a:@makefntext + \@makefntext{\b:@makefntext + \a:@makefnbody #1\b:@makefnbody + }\c:@makefntext\b:footnote-text...} +\end{verbatim} + + + + + +\<configure html-mml latex\><<< +\:CheckOption{fn-in}\if:Option \else + \expandafter\let\csname A:footnote-text\expandafter\endcsname + \csname a:footnote-text\endcsname + \expandafter\let\csname B:footnote-text\expandafter\endcsname + \csname b:footnote-text\endcsname + \NewConfigure{footnote-text}[2]{% + \expandafter\def\csname a:footnote-text\endcsname{% + #1% + \ifmathml + \HCode{<\a:mathml math\Hnewline + \csname a:math-xmlns\endcsname \Hnewline \a:@math>% + \ifmtext <\a:mathml mtext>\fi} + \fi + \ifmathml \fi + }% + \expandafter\def\csname b:footnote-text\endcsname{% + \ifmathml + \HCode{\ifmtext</\a:mathml mtext>\fi </\a:mathml math>}% + \fi + #2% + }% + } + \Configure{footnote-text} + {\csname A:footnote-text\endcsname} + {\csname B:footnote-text\endcsname} +\fi +>>> + + + +\<configure html-mml latex\><<< +\let\A:footnotetext=\a:footnotetext +\let\B:footnotetext=\b:footnotetext +\let\C:footnotetext=\c:footnotetext +\NewConfigure{footnotetext}[3]{% + \def\a:footnotetext{% + \ifmathml \ifmtext |<end mtext space|>\fi\fi + #1% + \ifmathml \ifmtext |<end mtext space|>\fi\fi + }% + \def\b:footnotetext{% + \ifmathml \ifmtext |<end mtext space|>\fi\fi + #2% + \ifmathml \ifmtext |<end mtext space|>\fi\fi + }% + \def\c:footnotetext{% + \ifmathml \ifmtext |<end mtext space|>\fi\fi + #3% + \ifmathml \ifmtext |<start mtext space|>\fi\fi + }% +} +\Configure{footnotetext} + {\A:footnotetext} + {\B:footnotetext} + {\C:footnotetext} +>>> + +\<configure html-mml latex\><<< +\Configure{footnotebody} + {\tmp:toks=} + {\ifmathml \ifmmode $\mbox{$\the\tmp:toks$}$ + \else $\mbox{\the\tmp:toks}$\fi + \else \the\tmp:toks\fi} +>>> + + +\<configure html-mml latex\><<< +\:CheckOption{mouseover} \if:Option + \pend:def\js:on{\ifmathml \ifmtext |<end mtext space|>\fi\fi} + \append:def\js:on{\ifmathml \ifmtext |<start mtext space|>\fi\fi} +\fi +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Space Characters} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +We must use \`'\protect' with LaTeX in order to support TOC etc. + +\<plain,latex mathml\><<< +\ifdefined\protect% +\def\:unicodespace{\protect\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x}% +\def\:unicodenspace{\protect\leavevmode\special{t4ht@+\string&{35}x2002{59}}x}% +\else% +\def\:unicodespace{\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x}% +\def\:unicodenspace{\leavevmode\special{t4ht@+\string&{35}x2002{59}}x}% +\fi +\def\:nbsp{\ifmtext |<unicode space|>\else\ifmathml + \Tg<\a:mathml mspace />\else |<unicode space|>\fi\fi} +\def\:ensp{\ifmtext |<unicode enspace|>\else\ifmathml + \Tg<\a:mathml mspace />\else |<unicode enspace|>\fi\fi} +>>> + +\<unicode space\><<< +\:unicodespace% +>>> + +\<unicode enspace\><<< +\:unicodenspace% +>>> +% \HCode{\string&}\HChar{-35}\HCode{x00A0;}% + + +\<configure html-mml frenchb\><<< +\Configure{frenchb-nbsp} + {\ifmtext |<unicode space|>\else\ifmathml + \Tg<\a:mathml mspace class="frenchb-nbsp" />% + \else + \ht:special{t4ht@?unhskip}\HCode{<span class="frenchb-thinspace">}% + |<unicode space|>\HCode{</span>}% + \fi\fi + \setbox\tmp:bx=\hbox\bgroup} + {\egroup} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Matrices} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Aligned} +%%%%%%%%%%%%% + + + +\<configure mathml amsmath\><<< +\Configure{aligned} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="aligned">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline>}} {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd + \a:mathml columnalign="\ifodd\HCol right\else left\fi" >}} + {\HCode{</\a:mathml mtd>}} +\Configure{alignedat} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="alignedat">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline>}} {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd + \a:mathml columnalign="\ifodd\HCol right\else left\fi" >}} + {\HCode{</\a:mathml mtd>}} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{Cases} +%%%%%%%%%%%%%%%%% + +\<plain,latex mathml\><<< +\Configure{cases} + {}{} {\Tg<\a:mathml mtable>}{\Tg</\a:mathml mtable>} + {\Tg<\a:mathml mtr>}{\Tg</\a:mathml mtr>} + {\Tg<\a:mathml mtd \mml:class="cases">}{\Tg</\a:mathml mtd>} +>>> + + +%%%%%%%%%%%%%%%%%%%% +\subsection{matrix} +%%%%%%%%%%%%%%%%%%%% + +\<plain,latex mathml\><<< +\Configure{matrix} + {\Tg<\a:mathml mtable + \a:mathml equalrows="false" \a:mathml equalcolumns="false"\Hnewline + \mml:class="matrix">} + {\Tg</\a:mathml mtable>} + {\Tg<\a:mathml mtr>}{\Tg</\a:mathml mtr>} + {|<mtd matrix|>}{\Tg</\a:mathml mtd>} +>>> + + + +%%%%%%%%%%%%%%%%%%%% +\subsection{pmatrix} +%%%%%%%%%%%%%%%%%%%% + + +The grouping below is handle the case that the matrix is a base of an exponent. + + +\<plain,latex mathml\><<< +\Configure{pmatrix} {\bgroup\Tg<\a:mathml mrow\Hnewline + \mml:class="pmatrix">} {\Tg</\a:mathml mrow>\egroup} +>>> + + + +The grouping below is handle the case that the matrix is a base of an +exponent. The \verb|\,| configurations is for facilitating the +catching of left subscripts and superscripts. + + +\<plain,latex mathml\><<< +\Configure{quad}{{\ifmathml \ifmtext \o:quad:\else + {\HCode{<\a:mathml mspace width="1em" \mml:class="quad"/>}}\fi + \else \o:quad: \fi}} +\Configure{qquad}{{\ifmathml \ifmtext \o:qquad:\else + {\HCode{<\a:mathml mspace width="2em" \mml:class="qquad"/>}}\fi + \else \o:qquad: \fi}} +\Configure{,} + {{\HCode{<\a:mathml mspace width="0.17em" \mml:class="thinspace"/>}}} +\Configure{:} + {{\HCode{<\a:mathml mspace width="0.22em" \mml:class="thinspace"/>}}} +\Configure{;} + {{\HCode{<\a:mathml mspace width="0.28em" \mml:class="thickpace"/>}}} +\Configure{>} + {{\HCode{<\a:mathml mspace width="0.30em" \mml:class="medspace"/>}}} +\Configure{!} + {{\HCode{<\a:mathml mspace width="-0.17em" \mml:class="negthinspace"/>}}} +>>> + + +%%%%%%%%%%%%% +\subsection{Array Border Lines} +%%%%%%%%%%%%% + + +\<border lines\><<< +\border:lines +>>> + +\<configure html-mml latex\><<< +\def\border:lines{% + \ifnum \borderlines>0 + \ifnum \borderlines>1 border-right:solid 1px black;\fi + \ifodd \borderlines border-left:solid 1px black;\fi + \fi +} +>>> + + + + +\<config array\><<< +\Configure{VBorder} + {\HAssign\NewGroup = 0 + |<init vborder|>} + {|<vborder solid|>% + \HAssign\NewGroup = 0} + {\Advance:\NewGroup by 1 + |<record cur vborder|>} + {} +>>> + + + +\<vborder html-mml latex/array\><<< +\Configure{VBorder} + {\let\VBorder=\empty \let\AllColMargins=\empty + \global\let\GROUPS=\empty \HAssign\NewGroup = 0 + \gHAdvance\Next:TableNo by 1 \global\let\TableNo=\Next:TableNo + |<init vborder|>% + } + {|<vborder solid|>% + \xdef\VBorder{\VBorder\ifnum \NewGroup> 0 </colgroup>\fi} + \HAssign\NewGroup = 0 \gdef\GROUPS{rules="groups"}} + {\Advance:\NewGroup by 1 + |<record cur vborder|>% + \ifnum \NewGroup=1 \xdef\VBorder{\VBorder<colgroup + id="TBL-\TableNo-\ar:cnt g">}\fi + \xdef\VBorder{\VBorder<col\Hnewline id="TBL-\TableNo + -\ar:cnt"\xml:empty>}\xdef\AllColMargins{\AllColMargins1}} + {\xdef\AllColMargins{\AllColMargins 0}} + \Configure{putHBorder}{\bgroup\ifmathml\mathml:hborder\fi\HCode{\HBorder}\egroup} +>>> + + + +\<init vborder\><<< +\HAssign\borderlines = 0 +\global\let\columnlines=\relax +>>> + +\<vborder solid\><<< +\ifx \columnlines\relax \gHAssign\borderlines = 1 + \else \gHAdvance\borderlines by 2 \fi +>>> + + +\<record cur vborder\><<< +\ifnum \borderlines>1 \gHAdvance\borderlines by -2 \fi +\ifx \columnlines\relax + \global\let\columnlines\empty +\else + \ifnum \NewGroup=1 + \xdef\columnlines{\columnlines\ifx\columnlines\empty + \else \space\fi solid}% + \else + \xdef\columnlines{\columnlines\ifx\columnlines\empty + \else \space\fi none}% + \fi +\fi +>>> + +\<configure html-mml array\><<< +|<vborder html-mml latex/array|> +>>> + +\<configure html-mml latex\><<< +|<vborder html-mml latex/array|> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{TeX} +%%%%%%%%%%%%%%%%%%%% + + +\<mathml plain\><<< +\Configure{eqalignno} + {\HCode{<\a:mathml mtable \mml:class="eqalignno">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="eqalignno">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd \Hnewline \mml:class="eqalignno-\HCol">}} + {\HCode{</\a:mathml mtd>}} +\def\:eqalignno:{\Configure{noalign} + {\HCode{<\a:mathml mtr><\a:mathml mtd \mml:class="noalign" colspan="2">}}% + {\HCode{</\a:mathml mtd></\a:mathml mtr>}}} +>>> + + +\<mathml plain\><<< +\Configure{leqalignno} + {\HCode{<\a:mathml mtable \mml:class="leqalignno">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="leqalignno">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd \Hnewline \mml:class="leqalignno-\HCol">}} + {\HCode{</\a:mathml mtd>}} +\def\:leqalignno:{\Configure{noalign} + {\HCode{<\a:mathml mtr><\a:mathml mtd \mml:class="noalign" colspan="2">}}% + {\HCode{</\a:mathml mtd></\a:mathml mtr>}}} +>>> + +\section{Fractions} + + + + + + + +\<amstex.sty mathml\><<< +|<config mathml amstex1|> +>>> + + +\<config mathml amstex1\><<< +\ConfigureEnv{aligned}{}{}{}{} +\Configure{aligned} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="aligned">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline>}} {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}} +>>> + + +\<amstex.tex mathml\><<< +\Configure{multilimits} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="multilimits">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr><\a:mathml mtd\Hnewline>}} + {\HCode{</\a:mathml mtd></\a:mathml mtr>}} +\Configure{smallmatrix} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="smallmatrix">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline>}} + {\HCode{</\a:mathml mtd>}} +>>> + +\<amstex.tex mathml\><<< +\Configure{matrix} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="matrix">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline>}} {\HCode{</\a:mathml mtr>}} + {\HCode{|<mtd matrix|>}} {\HCode{</\a:mathml mtd>}} +>>> + +\<amstex.tex mathml\><<< +\Configure{pmatrix}{\Tg<\a:mathml mrow \mml:class="pmatrix">} + {\Tg</\a:mathml mrow>} +>>> + +\<amstex.tex mathml\><<< +\Configure{align} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="align">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline>}} {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}} +\Configure{aligned} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="aligned">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline>}} {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}} +>>> + +\<amstex.tex mathml\><<< +\Configure{cases} + {\Tg<\a:mathml mrow \mml:class="cases">} + {\Tg</\a:mathml mrow>} +\Configure{alignat} + {\HCode{<\a:mathml mtable \mml:class="alignat">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="alignat">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline \mml:class="alignat">}} + {\HCode{</\a:mathml mtd>}} +\Configure{gather} + {\HCode{<\a:mathml mtable \mml:class="gather">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr\Hnewline \mml:class="gather">}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline \mml:class="gather">}} + {\HCode{</\a:mathml mtd>}} +>>>> + +\<vanilla mathml\><<< +\Configure{align} + {\EndP\HCode{<\a:mathml mtable\Hnewline \mml:class="align">}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}} +>>> + + + + + + + +% {\mathchar"0403} % \square +% {\mathchar"0404} % \blacksquare +% {\mathchar"0406} % \lozenge +% {\mathchar"0407} % \blacklozenge +% {\mathchar"0438} % \backprime +% {\mathchar"0446} % \bigstar +% {\mathchar"0448} % \blacktriangledown +% {\mathchar"044E} % \blacktriangle +% {\mathchar"044F} % \triangledown +% {\mathchar"045D} % \measuredangle +% {\mathchar"045E} % \sphericalangle +% {\mathchar"0473} % \circledS +% {\mathchar"047B} % \complement +% {\mathchar"051E} % \diagup +% {\mathchar"051F} % \diagdown +% {\mathchar"053F} % \varnothing +% {\mathchar"0540} % \nexists +% {\mathchar"0560} % \Finv +% {\mathchar"0561} % \Game +% {\mathchar"0567} % \eth +% {\mathchar"0569} % \beth +% {\mathchar"056A} % \gimel +% {\mathchar"056B} % \daleth +% {\mathchar"057A} % \digamma +% {\mathchar"057B} % \varkappa +% {\mathchar"057C} % \Bbbk +% {\mathchar"057D} % \hslash + + + + + + + +\<math fonts utilities\><<< +\ifx \tmp:bx\:UnDef \csname newbox\endcsname \tmp:bx \fi +\ifx \find:set:mgroup\:UnDef + \def\find:set:mgroup#1#2#3{\bgroup + \def\use@mathgroup##1##2##3{\relax + \tmp:cnt=##2% + \xdef\:temp####1{\noexpand\Configure{MathClass}{#2}% + {}{}{}{\mathchar"0\the\tmp:cnt ####1}}% + }% + \setbox\tmp:bx=\hbox{$#1$}\setbox\tmp:bx=\hbox{}% + \set:mgroup#3{}{}% + \egroup + } +\fi +\def\set:mgroup#1#2{\if :#1#2:\else + \:temp{#1#2}\expandafter\set:mgroup \fi} +>>> + + + +\<set mathcal class\><<< +\ifx \mathboldcalMathClass\:UnDef + \NewMathClass\mathboldcalMathClass +\fi +\Configure{MathClass}{\mathboldcalMathClass}{*} + {<\a:mathml mi\Hnewline + mathvariant="bold-script">}{</\a:mathml mi>}{} +>>> + +\<set mathcal symbols\><<< +\expandafter\ifx\csname mv@bold\endcsname\relax \else +\bgroup +\mathversion{bold}% +\find:set:mgroup{\mathcal{A}}{\mathboldcalMathClass}% + {4142434445464748494A4B4C4D4E4F505152535455565758595A} |%A--Z|% +\egroup +\fi +>>> + + + + + + +\<configure mathml amssymb\><<< +\def\:tempa#1"#2#3///{% + \edef\:next{\noexpand\Configure{MathClass}{\ifnum 0=#2 + \mathordMathClass \else #2\fi}}% + \:next +} +% \def\:tempb#1{\:tempa#1///{}{}{}{#1}} +% \def\:tempc#1"#2//{\:tempb{\mathchar"#2}} +% \def\:temp#1{\expandafter\:tempc\meaning#1//} +\def\:temp#1{\expandafter\:tempc\meaning#1//} +\def\:tempb#1{\:tempa#1///{}{}{}{#1}} +\def\:tempc#1"#2//{\:tempd#2...//} +\def\:tempd#1#2#3#4#5//{% + \if #4.\:tempb{\mathchar"0#1#2#3}\else + \:tempb{\mathchar"#1#2#3#4}\fi +} +\:temp \boxdot +\:temp \boxplus +\:temp \boxtimes +\:temp \centerdot +\:temp \boxminus +\:temp \veebar +\:temp \barwedge +\:temp \doublebarwedge +\:temp \Cup +\:temp \Cap +\:temp \curlywedge +\:temp \curlyvee +\:temp \leftthreetimes +\:temp \rightthreetimes +\:temp \dotplus +\:temp \intercal +\:temp \circledcirc +\:temp \circledast +\:temp \circleddash +\:temp \divideontimes +\:temp \lessdot +\:temp \gtrdot +\:temp \ltimes +\:temp \rtimes +\:temp \smallsetminus +\:temp \circlearrowright +\:temp \circlearrowleft +\:temp \leftrightharpoons +\:temp \Vdash +\:temp \Vvdash +\:temp \vDash +\:temp \twoheadrightarrow +\:temp \twoheadleftarrow +\:temp \leftleftarrows +\:temp \rightrightarrows +\:temp \upuparrows +\:temp \downdownarrows +\:temp \upharpoonright +\:temp \downharpoonright +\:temp \upharpoonleft +\:temp \downharpoonleft +\:temp \rightarrowtail +\:temp \leftarrowtail +\:temp \leftrightarrows +\:temp \rightleftarrows +\:temp \Lsh +\:temp \Rsh +\:temp \rightsquigarrow +\:temp \leftrightsquigarrow +\:temp \looparrowleft +\:temp \looparrowright +\:temp \circeq +\:temp \succsim +\:temp \gtrsim +\:temp \gtrapprox +\:temp \multimap +\:temp \therefore +\:temp \because +\:temp \doteqdot +\:temp \triangleq +\:temp \precsim +\:temp \lesssim +\:temp \lessapprox +\:temp \eqslantless +\:temp \eqslantgtr +\:temp \curlyeqprec +\:temp \curlyeqsucc +\:temp \preccurlyeq +\:temp \leqq +\:temp \leqslant +\:temp \lessgtr +\:temp \risingdotseq +\:temp \fallingdotseq +\:temp \succcurlyeq +\:temp \geqq +\:temp \geqslant +\:temp \gtrless +\:temp \vartriangleright +\:temp \vartriangleleft +\:temp \trianglerighteq +\:temp \trianglelefteq +\:temp \between +\:temp \blacktriangleright +\:temp \blacktriangleleft +\:temp \vartriangle +\:temp \eqcirc +\:temp \lesseqgtr +\:temp \gtreqless +\:temp \lesseqqgtr +\:temp \gtreqqless +\:temp \Rrightarrow +\:temp \Lleftarrow +\:temp \varpropto +\:temp \smallsmile +\:temp \smallfrown +\:temp \Subset +\:temp \Supset +\:temp \subseteqq +\:temp \supseteqq +\:temp \bumpeq +\:temp \Bumpeq +\:temp \lll +\:temp \ggg +\:temp \pitchfork +\:temp \backsim +\:temp \backsimeq +\:temp \lvertneqq +\:temp \gvertneqq +\:temp \nleq +\:temp \ngeq +\:temp \nless +\:temp \ngtr +\:temp \nprec +\:temp \nsucc +\:temp \lneqq +\:temp \gneqq +\:temp \nleqslant +\:temp \ngeqslant +\@ifpackageloaded{program}{}{\:temp \lneq} +\:temp \gneq +\:temp \npreceq +\:temp \nsucceq +\:temp \precnsim +\:temp \succnsim +\:temp \lnsim +\:temp \gnsim +\:temp \nleqq +\:temp \ngeqq +\:temp \precneqq +\:temp \succneqq +\:temp \precnapprox +\:temp \succnapprox +\:temp \lnapprox +\:temp \gnapprox +\:temp \nsim +\:temp \ncong +\:temp \varsubsetneq +\:temp \varsupsetneq +\:temp \nsubseteqq +\:temp \nsupseteqq +\:temp \subsetneqq +\:temp \supsetneqq +\:temp \varsubsetneqq +\:temp \varsupsetneqq +\:temp \subsetneq +\:temp \supsetneq +\:temp \nsubseteq +\:temp \nsupseteq +\:temp \nparallel +\:temp \nmid +\:temp \nshortmid +\:temp \nshortparallel +\:temp \nvdash +\:temp \nVdash +\:temp \nvDash +\:temp \nVDash +\:temp \ntrianglerighteq +\:temp \ntrianglelefteq +\:temp \ntriangleleft +\:temp \ntriangleright +\:temp \nleftarrow +\:temp \nrightarrow +\:temp \nLeftarrow +\:temp \nRightarrow +\:temp \nLeftrightarrow +\:temp \nleftrightarrow +\:temp \eqsim +\:temp \shortmid +\:temp \shortparallel +\:temp \thicksim +\:temp \thickapprox +\:temp \approxeq +\:temp \succapprox +\:temp \precapprox +\:temp \curvearrowleft +\:temp \curvearrowright +\:temp \backepsilon +\:temp \square +\:temp \blacksquare +\:temp \lozenge +\:temp \blacklozenge +\:temp \backprime +\:temp \bigstar +\:temp \blacktriangledown +\:temp \blacktriangle +\:temp \triangledown +\:temp \measuredangle +\:temp \sphericalangle +\:temp \circledS +\:temp \complement +\:temp \diagup +\:temp \diagdown +\:temp \varnothing +\:temp \nexists +\:temp \Finv +\:temp \Game +\:temp \eth +\:temp \beth +\:temp \gimel +\:temp \daleth +\:temp \digamma +\:temp \varkappa +\:temp \Bbbk +\:temp \hslash +>>> + +Note that in the presence of bm.sty the symbols of amssymb change their +codings. + +\begin{verbatim} +\documentclass{article} +% \usepackage{bm} +\usepackage{amsmath,amssymb} +\begin{document} +\hshow{boxdot} +\begin{equation} +2 +\end{equation} +\end{document} +\end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\chapter{Loose Ends} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%% +\section{Commutative Diagrams (amscd)} +%%%%%%%%%%%%%%%%%% + + + +\<configure mathml amscd\><<< +\ConfigureEnv{CD}{}{}{}{} +\Configure{CD} + {\HCode{<\a:mathml mtable class="CD"\Hnewline>}} + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} + {\HCode{</\a:mathml mtr>}} + {\HCode{<\a:mathml mtd\Hnewline>}} + {\HCode{</\a:mathml mtd>}} +>>> + + + + +\<configure mathml amscd\><<< +\Configure{ @>} + {\Configure{mathrel*}{*} + {<mrow \mml:class="rightarrow" >} + {</mrow>} + {}} +>>> + + +\<configure mathml amscd\><<< +\Configure{ @<} + {\Configure{mathrel*}{*} + {<mrow \mml:class="leftarrow" >} + {</mrow>} + {}} +>>> + +\<configure mathml amscd\><<< +\Configure{ @V} + {\HCode{<mphantom>} + \hbox{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}%% + \HCode{</mphantom>}} + {\HCode{<mphantom>} + \hbox{$\m@th\vcenter{\hbox{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$}}$}% + \HCode{</mphantom>}} +>>> + +Are there \verb+\llap+and \verb+\rlap+ facilities in mathml? + +%%%%%%%%%%%%%%%%%% +\section{Right-to-Left Babel} +%%%%%%%%%%%%%%%%%% + + + +\<rlbabel everypar\><<< +\expandafter\ifx \csname o@everypar\endcsname\relax \else +\expandafter\ifx \csname ht:everypar\endcsname\relax + \let\ht:everypar\o@everypar +\fi\fi +>>> + + + + + + +\<dir ltr/rtl\><<< +dir="\if@rl rtl\else ltr\fi" +>>> + + +\<configure html-mml rlbabel\><<< +\Configure{moreL} + {\ifmathml |<ltr rlbabel mtext|>% + \else + \ifvmode \let\end:moreRL=\empty + \else\HCode{<span dir="ltr" >}% + \def\end:moreRL{\HCode{</span>}}% + \fi + \fi + } + {\end:moreRL} +\Configure{moreR} + {\ifmathml |<rtl rlbabel mtext|>% + \else + \ifvmode \let\end:moreRL=\empty + \else\HCode{<span dir="rtl" >}\def\end:moreRL{\HCode{</span>}}\fi + \fi + } + {\end:moreRL} +\Css{.rtl {direction: rtl} + .ltr {direction: ltr} } +>>> + + + +\<ltr rlbabel mtext\><<< +\ifmtext + \leavevmode\special{t4ht@+</\a:mathml mtext><\a:mathml mtext{32}\mml:class="ltr">}x% + \def\end:moreRL{\HCode{</\a:mathml mtext><\a:mathml mtext>}}% +\else + \let\end:moreRL=\empty +\fi +>>> + + + +\<rtl rlbabel mtext\><<< +\ifmtext + \leavevmode\special{t4ht@+</\a:mathml mtext><\a:mathml mtext{32}\mml:class="rtl">}x% + \def\end:moreRL{\HCode{</\a:mathml mtext><\a:mathml mtext>}}% +\else + \let\end:moreRL=\empty +\fi +>>> + + +%%%%%%%%%%%%% +\subsection{Tables} +%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{dcolumn} +%%%%%%%%%%%%% + + +\<configure mathml dcolumn\><<< +\Configure{dcolumn} + {\NoFonts\Configure{$}{}{}{}} + {\EndNoFonts} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{openmath} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<itemitem 0.0\><<< +\Configure{itemitem}{}{}{\par\leavevmode}{} +>>> + + + + +Used to have also a \verb'\special{t4ht@[}...\special{t4ht@]}', +where the specials asked to igore the enclosed +content. It is provided for getting `realistic' measurements in mathml +applets. a candidadte for delition. + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<par del\><<< +!*?: >>> + + +\<tag of Tag\><<< + cw:>>> + +\<tail\><<< +tail>>> + +\<addr for Tag and Ref of Sec\><<< +\xdef\:cursec{|<section html addr|>}% +>>> + + +\<save catcodes\><<< +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else + \csname :RestoreCatcodes\endcsname \fi + \catcode`\noexpand :|=\the\catcode`:% + \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|= + \noexpand\UnDefcS} +\catcode`\:|=11 +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Boxed} +%%%%%%%%%%%%%%%%%% + +\<configure html-mml amsmath\><<< +\Configure{boxed} + {\ifmathml \Tg<\a:mathml mrow \mml:class="boxed">% + \else \HCode{<span class="boxed">}\IgnorePar\fi} + {\ifmathml \Tg</\a:mathml mrow>% + \else \HCode{</span>}\fi} +\Css{.boxed{border: 1px solid black; padding-left:2px; + padding-right:2px;}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{fontmath} +%%%%%%%%%%%%%%%%%% + + + + +\<fontmath mathord symbols as ?\><<< +\mathchar"3230 |%\prime|% +\mathchar"3231 |%\infty|% +\mathchar"323B |%\emptyset|% +\mathchar"323C |%\Re|% +\mathchar"323D |%\Im|% +\mathchar"3240 |%\aleph|% +>>> + +\<fontmath mathord symbols as op\><<< +\mathchar"3234 |%\triangle|% +\mathchar"3238 |%\forall|% +\mathchar"3239 |%\exists|% +\mathchar"323A |%\neg|% +\mathchar"323E |%\top|% +\mathchar"323F |%\bot|% +\mathchar"3272 |%\nabla|% +\mathchar"3278 |%\mathsection|% +\mathchar"327B |%\mathparagraph|% +\mathchar"327C |%\clubsuit|% +\mathchar"327D |%\diamondsuit|% +\mathchar"327E |%\heartsuit|% +\mathchar"327F |%\spadesuit|% +>>> + + + +\subsection{1: Large Operators} + +\begin{verbatim} +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 +\end{verbatim} + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{1}{}{}{}{ + \mathchar"1360 + \mathchar"1357 + \mathchar"1356 + \mathchar"1355 + \mathchar"1354 + \mathchar"1353 + \mathchar"1352 + \mathchar"1351 + \mathchar"1350 + \mathchar"134E + \mathchar"134C + \mathchar"134A + \mathchar"1348 + \mathchar"1346 + \mathchar"1273 + |<fontmath mathord symbols as op|>% +} +>>> + +% \mathchar"230 |%math prime|% + +A prime is typically placed on letters and digits. + + +\subsection{2: Binary Operations} + +\begin{verbatim} +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\-="2200 +\end{verbatim} + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{2}{}{}{}{ +*-+/ +\mathchar"212F +\mathchar"212E +\mathchar"2234 +\mathchar"2235 +\mathchar"225E +\mathchar"225F +\mathchar"225C +\mathchar"225B +\mathchar"227A +\mathchar"2279 +\mathchar"2275 +\mathchar"2274 +\mathchar"225D +\mathchar"2271 +\mathchar"2205 +\mathchar"220F +\mathchar"226F +\mathchar"2204 +\mathchar"220C +\mathchar"220B +\mathchar"220A +\mathchar"2209 +\mathchar"2208 +\mathchar"2207 +\mathchar"2206 +\mathchar"220E +\mathchar"220D +\mathchar"226E +\mathchar"2201 +\mathchar"2203 +\mathchar"2202 +\mathchar"213F +\mathchar"6201 % cdot +} +>>> + + +\subsection{3: Relational Operations} + +The catcode is needed because 303A is \verb':'. + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{3}{}{}{}{ + \mathchar"3128 + \mathchar"3129 + \mathchar"312A + \mathchar"312B + \mathchar"315E + \mathchar"315F + \mathchar"3210 + \mathchar"3211 + \mathchar"3212 + \mathchar"3213 + \mathchar"3214 + \mathchar"3215 + \mathchar"3216 + \mathchar"3217 + \mathchar"3218 + \mathchar"3219 + \mathchar"321A + \mathchar"321B + \mathchar"321C + \mathchar"321D + \mathchar"321E + \mathchar"321F + \mathchar"3220 + \mathchar"3221 + \mathchar"3224 + \mathchar"3227 + \mathchar"3232 + \mathchar"3233 + \mathchar"3236 + \mathchar"3237 + \mathchar"323F + :=>< + \mathchar"322F + \mathchar"3276 + \mathchar"3277 + \mathchar"326B + \mathchar"326A + \mathchar"3261 + \mathchar"3260 + \mathchar"3225 + \mathchar"3226 + \mathchar"322D + \mathchar"322E + \mathchar"322C + \mathchar"3228 + \mathchar"3229 +} +>>> + +% \mathchar"327C |%clubsuit|% +% \mathchar"327D |%diamondsuit|% +% \mathchar"327E |%heartsuit|% +% \mathchar"327F |%spadesuit|% + + + +% \mathchar"340A % rightleftharpoons +% \mathchar"340B % leftrightharpoons +% + +\begin{verbatim} +\mathcode`\>="313E +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\:="303A +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\set="321A +\mathchardef\supseteq="3213 +\mathchardef\seteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\end{verbatim} + + +\subsection{4/5: Delimiters} + +\begin{verbatim} +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\[="405B +\mathcode`\]="505D +\mathcode`\{="4266 +\mathcode`\}="5267 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\def\lmoustache{\delimiter"437A340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"537B341 } % top from ), bottom from ( +\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips +\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } +\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads +\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert How should these be treated? +\def\vert{\delimiter"26A30C } " " " " " +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\end{verbatim} + +The comamnds \verb'\Configure{MathClass}{4}...' +and \verb'\Configure{MathClass}{5}...' +are for unmatched delimiters, and the comamnd +\verb'\Configure{MathDelimiters}{(}{)}' is for matched ones. + + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{4}{}{}{}{} +\Configure{MathDelimiters}{(}{)} +\Configure{MathDelimiters}{[}{]} +\Configure{MathDelimiters}{\mathchar"4262}{\mathchar"5263} +\Configure{MathDelimiters}{\mathchar"4264}{\mathchar"5265} +\Configure{MathDelimiters}{\mathchar"4266}{\mathchar"5267} +\Configure{MathDelimiters}{\mathchar"4268}{\mathchar"5269} +\Configure{MathDelimiters}{\mathchar"4300}{\mathchar"5301} +\Configure{MathDelimiters}{\mathchar"4302}{\mathchar"5303} +\Configure{MathDelimiters}{\mathchar"4304}{\mathchar"5305} +\Configure{MathDelimiters}{\mathchar"4306}{\mathchar"5307} +\Configure{MathDelimiters}{\mathchar"4308}{\mathchar"5309} +\Configure{MathDelimiters}{\mathchar"430A}{\mathchar"530B} +>>> + +\begin{verbatim} +\mathcode`\?="503F +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{6: Punctuation Marks} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{verbatim} +\mathcode`\;="603B +\mathcode`\,="613B +\end{verbatim} + +\<plain,fontmath math classes\><<< +\Configure{MathClass}{6}{}{}{}{ +\mathchar"613A % ldot +\mathchar"603A % colon +!?; , +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Questions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{verbatim} + + +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Type 4: Math Open} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +latex.ltx, fontmath.ltx, plain.tex + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Packages} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%% +\section{Small Ones} +%%%%%%%%%%%%%%%%%% + + + +\<configure mathml sistyle\><<< +\Configure{thousandsep} + {\ifmathml + \ifmtext\else \Tg<\a:mathml mspace width="0.25em"/>\fi + \fi} +>>> + + +%%%%%%%%%%%%% +\subsection{subeqnarray} +%%%%%%%%%%%%% + +\<configure mathml subeqnarray\><<< +\Configure{subeqnarray} + {\HCode{<\a:mathml mtable\Hnewline \mml:class="subeqnarray\ifx + \@seqncr\@eqncr\else-star\fi" + \a:mathml columnalign="right center left" >}}% + {\HCode{</\a:mathml mtable>}} + {\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}} + {\Tg<\a:mathml mtd\Hnewline \mml:class="subeqnarray-\HCol"> + \ifnum \HCol=4 + \Tg<\a:mathml mtext + \mml:class="subeqnarray">|<start mtext space|>\PauseMathClass + \mtexttrue + |<config math within mtext|>% + \fi} + {\ifnum \HCol=4 \mtextfalse + \EndPauseMathClass|<end mtext space|>\Tg</\a:mathml mtext>\fi + \Tg</\a:mathml mtd>} +>>> + + +%%%%%%%%%%%%% +\subsubsection{Bm} +%%%%%%%%%%%%% + + +\<configure mathml bm\><<< +\Configure{bm} + {\ifmmode \ifmtext \else + \Tg<\a:mathml mstyle + mathvariant="bold">% + \expandafter\expandafter\expandafter\:gobble + \fi\fi} + {\ifmmode \ifmtext \else \Tg</\a:mathml mstyle>\fi\fi} +>>> + + +The bm commands produces bold printing by overprinting the characters +with small shifting. + + +%%%%%%%%%%%%%%%%%% +\section{Color} +%%%%%%%%%%%%%%%%%% + + + +\<configure html-mml color\><<< +\Configure{textcolor} + {\gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor} + {\Css{.textcolor\textcolorN{color:\HColor}}}}% + \HCode{<\ifmathml mstyle\else span\fi + \space id="textcolor\textcolorN">}}% + {\HCode{</\ifmathml mstyle\else span\fi>}} +>>> + + +\<configure html-mml color\><<< +\Configure{textcolor} + {\ifmathml + \Configure{color}% + {\Configure{SetHColor} + {\HCode{<mstyle mathcolor="\HColor">}}}% + \else + \gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor} + {\Css{\#textcolor\textcolorN{color:\HColor}}}}% + \HCode{<span id="textcolor\textcolorN">}% + \fi + }% + {\HCode{</\ifmathml mstyle\else span\fi>}} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Notes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{To Do} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item Parametric commands as Superscripts or Subscripts: + \verb+$E^\frac{1}{2}$+ (instead of \verb+$E^{\frac{1}{2}}$+). + +\item + Numbering is not right justified: + +\begin{verbatim} +\documentclass{amsart} + \begin{document} + + \begin{eqnarray} + A &=& B + C + \end{eqnarray} + + \begin{align} + A &= B + C \qquad & N &= G + F + \end{align} + + \begin{alignat}{2} + A &= B + C \qquad \qquad & N & = G + F + \end{alignat} + +\begin{gather} +A = B + C \tag{my equation} \\ +B = \text{variable unknown} \notag \\ +Y = \max X + \log 10 +\end{gather} + +\end{document} +\end{verbatim} + + +\item +\begin{verbatim} +\begin{align} +e &= a + b \\ +\intertext{this should be located on the left browser hand margin} +a &= u +\end{align} + +\end{verbatim} + +\end{itemize} + + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathplayer.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathplayer.tex new file mode 100644 index 00000000000..2908440baf8 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathplayer.tex @@ -0,0 +1,306 @@ +% $Id: tex4ht-mathplayer.tex 65 2010-11-17 19:16:45Z karl $ +% compile 3 times: latex tex4ht-mathplayer +% or xhlatex tex4ht-mathplayer "html,3,sections+" +% +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) 1997-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{mathplayer} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common} +\input{tex4ht-cpright} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<mathplayer\><<< +% mathplayer.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.2002. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Start Here} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%% +\section{Header} +%%%%%%%%%%%%%%%% + +\<configure mathplayer Preamble\><<< +\edef\Preamble{\Preamble,xht} +\Configure{ext}{xht} +>>> + +% \Configure{mathml}{m:} + + +\<dtd lang\><<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi +>>> + +\<configure mathplayer tex4ht\><<< +\Configure{DOCTYPE} + {\HCode{<!DOCTYPE html PUBLIC + "-//W3C//DTD XHTML 1.1 plus MathML 2.0//|<dtd lang|>"\Hnewline + "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"\Hnewline + [\Hnewline + <!ENTITY \% MATHML.prefixed "INCLUDE">\Hnewline + <!ENTITY \% MATHML.prefix "m">\Hnewline + ]\Hnewline + >\Hnewline }} +\Configure{@BODY} + {\ifvmode \EndP\fi \IgnorePar\HCode{<script type="text/javascript">\Hnewline<!--\Hnewline + |<check for ie 5.5 and mathplayer|>\Hnewline-->\Hnewline + </script>\Hnewline + }\par\ShowPar} + \Configure{@HTML} + {xmlns:m="http://www.w3.org/1998/Math/MathML"\Hnewline +% xmlns:dsi="http://www.dessci.com/mathml" \Hnewline + } +%\let\dsi:=\empty +>>> + + +application/xhtml+xml + + + +\<check for ie 5.5 and mathplayer\><<< +if( navigator.appName=="Microsoft Internet Explorer" \Hnewline + && navigator.platform=="Win32" \Hnewline +){ \Hnewline + if( parseFloat(navigator.appVersion.substr( \Hnewline + navigator.appVersion.indexOf("MSIE ")+5))>="5.5" \Hnewline + ){ + try { \Hnewline + var oMP = new ActiveXObject("MathPlayer.Factory.1"); \Hnewline + } \Hnewline + catch(e) { alert("Can't find Design Science's MathPalyer" + \Hnewline + "(http://www.dessci.com/webmath/mathplayer)");} \Hnewline + } else { \Hnewline + alert("Requires MSIE version 5.5 or later"); \Hnewline +} } \Hnewline +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Wrapping in Tables} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The attribute \verb+nowrap="nowrap"+ in table cells prevents +Mathplayer from displaying them its own way, and one gets minimal +cells, overlapped: it ought to be avoided altogether. + +\<configure mathplayer tex4ht\><<< +\Configure{halignTD} {}{} + {<}{\ifmathml \HCode{ columnalign="left"}\else + \HCode{ style="text-align:left" }\fi} + {-}{\ifmathml \HCode{ columnalign="center"}\else + \HCode{ style="text-align:center" }\fi} + {>}{\ifmathml \HCode{ columnalign="right"}\else + \HCode{ style="text-align:right" }\fi} + {^}{\ifmathml \HCode{ rowalign="top"}\else + \HCode{ style="vertical-align:top" }\fi} + {=}{\ifmathml \HCode{ rowalign="baseline"}\else + \HCode{ style="vertical-align:baseline" }\fi} + {||}{\ifmathml \HCode{ rowalign="center"}\else + \HCode{ style="vertical-align:middle" }\fi} + {_}{\ifmathml \HCode{ rowalign="bottom"}\else + \HCode{ style="vertical-align:bottom" }\fi} + {p}{\ifmathml \HCode{ columnalign="left"}\else + \HCode{ style="text-align:left"}\fi} + {} +>>> + + + + + + + +% %%%%%%%%%%%%%%%%%%%%% +% \section{Cross References} +% %%%%%%%%%%%%%%%%%%%%% + +% + +% + +% \<configure mathplayer tex4htNO\><<< +% \LinkCommand\mtxt:link{\a:mathml maction,% +% actiontype="link" \dsi: href, id, +% class="label"|<mtext ref decoration|>,,} +% \LinkCommand\msp:link{\a:mathml maction,% +% actiontype="link" \dsi: href, id, +% class="label"|<mstyle ref decoration|>,,} +% \def\Link{\ifmathml +% \ifmtext |<end mtext|>\HCode{</\a:mathml mtext>}% +% \expandafter\expandafter\expandafter\mtxt:link +% \else \expandafter\expandafter\expandafter\msp:link\fi +% \else \expandafter\M:Link\fi} +% \def\EndLink{\ifmathml +% \ifmtext |<end mtext|>|<end mtext ref decoration|>% +% \Endmtxt:link \HCode{<\a:mathml mtext\Hnewline +% class="endlabel">}|<start mtext|>% +% \else \HCode{|<end mstyle ref decoration|></\a:mathml +% maction><!--endlabel-->}\fi +% \else \expandafter\M:EndLink\fi} +% >>> + +% + +% + +% + +% + +% + +% +% \<mtext ref decorationNO\><<< +% ><\a:mathml mtext mathbackground="yellow"% +% >>> + +% \<end mtext ref decorationNO\><<< +% \HCode{</\a:mathml mtext>}% +% >>> + +% \<mstyle ref decorationNO\><<< +% ><\a:mathml mstyle mathbackground="yellow"% +% >>> + +% \<end mstyle ref decorationNO\><<< +% </\a:mathml mstyle>% +% >>> + +% +% \begin{verbatim} +% JUST BACKGROUND (one could add colour, and it would be fine to include the +% labels, if any) +% <m:mstyle \a:mathml mathbackground="yellow"> <m:maction +% actiontype="link" \dsi: href="#x1-2r1" class="label"><m:mrow +% ><m:mn>1</m:mn><!--tex4ht:ref: equ1 --></m:mrow></m:maction></m:mstyle > + +% HIGHLIGHT ON MOUSEOVER +% <m:maction +% actiontype="highlight" \dsi: color="pink" ><m:maction +% actiontype="link" \dsi: href="#x1-2r1" class="label"><m:mtext +% background="yellow" >1<!--tex4ht:ref: +% equ1 --></m:mtext></m:maction></m:maction> + +% TOOLTIP CLUE ON MOUSEOVER +% <m:mrow> +% <m:maction actiontype="tooltip" ><m:maction +% actiontype="link" \dsi: href="#x1-2r1" class="label"><m:mrow ><m:mn +% background="yellow" >1</m:mn></m:mrow></m:maction> +% <m:mtext>click to jump!</m:mtext> +% <!--tex4ht:ref: equ1 --></m:maction><!--endlabel--></m:mrow> + +% * <m:mtext m:mathbackground="yellow" > disables background colour in all +% the (math-)links - this one coming from a typo in mathplayer.4ht, inserting +% m: before mathbackground; + +% m: also problematic on actiontype +% \end{verbatim} + +% \<start mtext\><<< +% \ht:special{t4ht@,&\#x00A0;}% +% >>> +% \<end mtext\><<< +% \ht:special{t4ht@,}% +% >>> + +% + +% The area of the clickable links can be enlarged with a cpde similar to +% the following one. + +% \begin{verbatim} +% \let\svLink=\Link +% \let\svEndLink=\EndLink +% \Odef\Link[#1]#2#3{% +% \svLink[#1]{#2}{#3}% +% \ifmathml\ifmtext\else \HCode{<m:mpadded width="4">}\fi\fi} +% \def\EndLink{% +% \ifmathml\ifmtext\else \HCode{</m:mpadded>}\fi\fi +% \svEndLink} +% \end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\section{Namespace Prefixes} +%%%%%%%%%%%%%%%%%% + +\<configure mathplayer tex4ht\><<< +\:CheckOption{xht} \if:Option +\else \:CheckOption{xml} \if:Option +\else +\Configure{DviMath} + {\a:DviMathML \mathmltrue + \ifOption{mml-fonts}{}{|%\mml:htfsym|%\NoFonts}% + \IgnoreRule \HCode{<!--l. + \the\inputlineno-->}\HCode{<\a:mathml math\Hnewline}% + |<disable a:mathml for math attr|>% + \HCode{\csname a:math-xmlns\endcsname \Hnewline \a:@math>}% + |<end disable a:mathml for math attr|>\a:math + |<sv dvimath par|>\IgnorePar} + {\Tg</\a:mathml math>\EndIgnoreRule + \ifOption{mml-fonts}{}{|%\ext:htfsym|%\EndNoFonts}% + \mathmlfalse \b:DviMathML |<recall dvimath par|>} +\fi\fi +>>> + + +\<recall dvimath par\><<< +\sv:ignore +>>> + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + +\<disable a:mathml for math attr\><<< +\let\sva:mathml=\a:mathml \let\a:mathml=\empty +>>> + +\<end disable a:mathml for math attr\><<< +\let\a:mathml=\sva:mathml +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Color} +%%%%%%%%%%%%%%%%%% + +\<configure mathplayer color\><<< +\let\a:txt:textcolor\a:textcolor +\let\b:txt:textcolor\b:textcolor +\Configure{textcolor} + {\ifmathml + \Configure{color}% + {\Configure{SetHColor} + {\HCode{<m:mstyle color="\HColor">}}}% + \else \a:txt:textcolor \fi + } + {\ifmathml \HCode{</m:mstyle>}\else \b:txt:textcolor \fi} +>>> + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-mkht.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mkht.tex new file mode 100644 index 00000000000..9e957719e11 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mkht.tex @@ -0,0 +1,1929 @@ +% $Id: tex4ht-mkht.tex 845 2020-11-23 18:05:43Z karl $ +% (1) latex tex4ht-mkht +% (2) perl -c mk4ht.perl (checking correctness) +% (3) latex mkht-scripts.4ht +% +% Copyright 2009-2020 TeX Users Group +% Copyright 1997-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\documentclass{article} + \usepackage{url} +\def\CodeDel{{<<<-}{->>>}} +\ifx \HCode\UnDef + \input tex4ht.sty + \Preamble{xhtml} + \input ProTex.sty + \AlProTex{4ht,<<<>>>,?,title,list} +\else + \Configure{ProTex}{4ht,<<<>>>,?,title,list,[[]]} +\fi + +\begin{document} + +%%%%%%%%%%%%%%%%%%%%% definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\input{common} + +\def\mkhtNote{ + +} +\newtoks\toks +\expandafter\toks\expandafter{\mkhtNote} + +%%%%%%%%%%%%%%%%%%%%% end definitions %%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%% +\section{TeX Dialects} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{\LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<def script\><<<- +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<htlatex ...\><<< +|<unix line|>|<windows line|> + |<latex|> + |<latex|> + |<latex|> + |<base|>tex4ht |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht |<dir ch|>|<@|>1 |<IV|> + +>>> + + +\<latex\><<< +latex |<@|>5 |<'|>|<definitions|>|<get parameters|>|empty>>> + +\<get parameters\><<< +\HCode |<'|>|<@|>2|<'|>.a.b.c.\input |<'|> |<@|>1>>> + + +\<definitions\><<< +\makeatletter|<get 2nd arg|>|<2e + 209|>\makeatother>>> + +\<get 2nd arg\><<< +\def\HCode{\futurelet\HCode\HChar}\def\HChar{|<double quotes??|>}>>> + +\<double quotes??\><<< +\ifx"\HCode|<remove qts|>\expandafter\HCode\else\expandafter\Link\fi>>> + +\<remove qts\><<< +\def\HCode"##1"{\Link##1}>>> + + +\<2e + 209\><<< +\def\Link#1.a.b.c.{|<2e|>|<209|>}>>> + +\<2e\><<< +\g@addto@macro\@documentclasshook{|<require package|>}>>> + +\<209\><<< +|<save|>\def\documentstyle{|<recall|>|<options|>|<209+tex4ht|>}>>> + +\<require package\><<< +\RequirePackage[#1|<II|>|<,html|>]{tex4ht}>>> + + +\<options\><<< +|<def tex4ht|>{#1|<II|>|<,html|>}>>> + + +\<209+tex4ht\><<< +|<209+tex4ht+...|>\@ifnextchar[{\HCode}{\documentstyle[tex4ht]}>>> + +\<209+tex4ht+...\><<< +\def\HCode####1{\documentstyle[tex4ht,}>>> + + +\<save\><<< +\let\HCode\documentstyle>>> + +\<recall\><<< +\let\documentstyle\HCode>>> + + + +\<htlatex 2e...\><<< +|<unix line|>|<windows line|>|<latex2e|> + |<latex2e|> + |<latex2e|> + |<base|>tex4ht |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht |<dir ch|>|<@|>1 |<IV|> + +>>> + + + + +\<latex2e\><<< +latex |<@|>5 |<'|>|<definitions2e|>|<get parameters|>|empty>>> + +\<definitions2e\><<< +\makeatletter|<get 2nd arg|>|<2e only|>\makeatother>>> + + +\<2e only\><<< +\def\Link#1.a.b.c.{|<2e|>}>>> + + + + + +\<htlatex 209...\><<< +|<unix line|>|<windows line|>|<latex209|> + |<latex209|> + |<latex209|> + |<base|>tex4ht |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht |<dir ch|>|<@|>1 |<IV|> + +>>> + + + + +\<latex209\><<< +latex |<@|>5 |<'|>|<definitions209|>|<get parameters|>|empty>>> + +\<definitions209\><<< +\makeatletter|<get 2nd arg|>|<209 only|>\makeatother>>> + + +\<209 only\><<< +\def\Link#1.a.b.c.{|<209|>}>>> + +->>> + + +\<add script\><<<- +\OutputCodE\<\pref latex\latex.\ext\> \script{\pref latex}{\ext} % +\expandafter\let\csname\pref latex\latex\endcsname=\UnDef +% +->>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{\TeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<def script\><<<- + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{TeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<httex...\><<< +|<unix line|>|<windows line|>|<tex|> + |<tex|> + |<tex|> + |<base|>tex4ht |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht |<dir ch|>|<@|>1 |<IV|> + +>>> + +\<tex\><<< +etex |<@|>5 |<'|>|<tex definitions|>|<get parameters|>|empty>>> + + +\<tex definitions\><<< +|<set hook|>|<get 2nd arg|>|empty>>> + +\<set hook\><<< +\def\Link#1.a.b.c.{|<def tex4ht|>{|<options|>\input tex4ht.sty }}>>> + + +\<def tex4ht\><<< +\expandafter\def\csname tex4ht\endcsname>>> + +->>> + + +\<add script\><<<- +\<\pref tex.\ext\><<< +\<httex...\> +>>> % +% +\OutputCodE\<\pref tex.\ext\> \script{\pref tex}{\ext} % +% +->>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Texinfo} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<def script\><<<- +%%%%%%%%%%%%%%%%%%%% +\section{Texinfo} +%%%%%%%%%%%%%%%%%%%% + +The loading of tex4ht takes place at the @rm command at the end of the +texinfo.tex file. + +\<httexi...\><<< +|<unix line|>|<windows line|>|<texinfo|> + |<texinfo|> + |<texinfo|> + |<base|>tex4ht |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht |<dir ch|>|<@|>1 |<IV|> +|<Rem|> texindex ?? + +>>> + +\<texinfo\><<< +etex |<@|>5 |<'|>|<texinfo definitions|>|<get parameters|>|empty>>> + + +\<texinfo definitions\><<< +|<tex definitions|>\let\svrm=\rm\def\rm{\svrm|<tex4ht into texinfo|>}>>> + +\<tex4ht into texinfo\><<< +\ifx\c\comment\def\rm{\let\rm=\svrm|<load into texinfo|>}\expandafter\rm\fi>>> + +\<load into texinfo\><<< +|<change cats|>\csname tex4ht\endcsname|<restore cats|>|empty>>> + +\<change cats\><<< +\catcode`\@=12\catcode`\\=0 >>> + +\<restore cats\><<< +\catcode`\@=0\catcode`\\=13 >>> +->>> + + +\<add script\><<<- +\<\pref texi.\ext\><<< +\<httexi...\> +>>> % +% +\OutputCodE\<\pref texi.\ext\> \script{\pref texi}{\ext} % +% +->>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Context} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<def script\><<<- +%%%%%%%%%%%%%%% +\section{ConTeXt} +%%%%%%%%%%%%%%% + + +\<context...\><<< +|<unix line|>|<windows line|> + |<texexec|> + |<base|>tex4ht |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht |<dir ch|>|<@|>1 |<IV|> + +>>> + +\<texexec\><<< +|<ruby call|>texexec --arg="ht-1=|<@|>2" --use=tex4ht --dvi --nobackend |<@|>5 |<@|>1 >>> +->>> + + +``In the latest ConTeXt, texexec for Windows is realized +as a batch file from which texmfstart.exe ---> ruby script +is called.'' + +\immediate\write16{...............................fix......} +\immediate\write16{% +perl /opt/cvr/gurari/main.dir/try.dir/context.dir/context/perltk/texexec.pl% +} +\immediate\write16{........................................} + + +\<add script\><<<- +\<\pref context.\ext\><<< +\<context...\> +>>> % +% +\OutputCodE\<\pref context.\ext\> \script{\pref context}{\ext} % +% +->>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{XeTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<def script\><<<- + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{XeTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<htxetex...\><<< +|<unix line|>|<windows line|>|<xetex|> + |<xetex|> + |<xetex|> + |<base|>tex4ht -.xdv |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht -.xdv |<dir ch|>|<@|>1 |<IV|> + +>>> + +\<xetex\><<< +xetex -no-pdf |<@|>5 |<'|>|<tex definitions|>|<get parameters|>|empty>>> +->>> + + +\<add script\><<<- +\<\pref xetex.\ext\><<< +\<htxetex...\> +>>> % +% +\OutputCodE\<\pref xetex.\ext\> \script{\pref xetex}{\ext} % +% +->>> + + + +\<def script\><<<- +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{XeLaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<htxelatex...\><<< +|<unix line|>|<windows line|>|<xelatex|> + |<xelatex|> + |<xelatex|> + |<base|>tex4ht -.xdv |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht -.xdv |<dir ch|>|<@|>1 |<IV|> + +>>> + + +\<xelatex\><<< +xelatex -no-pdf |<@|>5 |<'|>|<definitions|>|<get parameters|>|empty>>> +->>> + +\<add script\><<<- +\<\pref xelatex.\ext\><<< +\<htxelatex...\> +>>> % +% +\OutputCodE\<\pref xelatex.\ext\> \script{\pref xelatex}{\ext} % +% +->>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Mex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<def script\><<<- + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{MeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<htmex...\><<< +|<unix line|>|<windows line|>|<mex|> + |<mex|> + |<mex|> + |<base|>tex4ht |<dir ch|>|<@|>1 |<III|> + |<base|>t4ht |<dir ch|>|<@|>1 |<IV|> + +>>> + +\<mex\><<< +mex |<@|>5 |<'|>|<tex definitions|>|<get parameters|>|empty>>> + +->>> + + +\<add script\><<<- +\<\pref mex.\ext\><<< +\<htmex...\> +>>> % +% +\OutputCodE\<\pref mex.\ext\> \script{\pref mex}{\ext} % +% +->>> + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Mex} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% +% \<def script\><<<- +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{MeX il2-pl} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \<htmex-pl...\><<< +% |<unix line|>|<windows line|>|<mex-pl|> +% |<mex-pl|> +% |<mex-pl|> +% |<base|>tex4ht |<dir ch|>|<@|>1 |<III|> +% |<base|>t4ht |<dir ch|>|<@|>1 |<IV|> +% +% >>> +% +% \<mex-pl\><<< +% mex-pl -translate-file=il2-pl |<'|>|<tex definitions|>|<get parameters|>|empty>>> +% +% ->>> +% +% +% \<add script\><<<- +% \<\pref mex-pl.\ext\><<< +% \<htmex-pl...\> +% >>> % +% % +% \OutputCodE\<\pref mex-pl.\ext\> \script{\pref mex-pl}{\ext} % +% % +% ->>> + + + +%%%%%%%%%%%%%%%%%% +\section{Markup Dialects} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{HTML: ht} +%%%%%%%%%%%%% + + +WARNING: Don't include `-cvalidatehtml' in the htlatex script as it will +be required by every script called with mk4ht. For instance, `mk4ht +dblatex file'. + +\<unix scripts\><<<- +\Ii{,html} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1} +\Iv{#1 ## -d~/WWW/temp/ -m644 } + +\make{ht} +->>> + +\<ms scripts\><<<- +\Ii{,html} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env} +\Iv{#1 -ewin32/tex4ht.env } + +\make{ht} +->>> + +The first line is for `ht ... ...' scripts. + +\<perl options\><<<- + "", "ht", "", "", "", "-cvalidatehtml", + "ht", "htlatex", "latex", "", "", "-cvalidatehtml", + "ht", "httex", "tex", "", "", "-cvalidatehtml", + "ht", "httexi", "texi", "", "", "-cvalidatehtml", + "ht", "htcontext", "context", "", "", "-cvalidatehtml", + "ht", "htxetex", "xetex", "", "", "-cvalidatehtml", + "ht", "htxelatex", "xelatex", "", "", "-cvalidatehtml", +->>> + + +\<unix scripts\><<<- +\<ht.unix\><<< +|<unix line|>|<windows line|>$1 $2 + $1 $2 + $1 $2 + tex4ht $2 + t4ht $2 $3 +>>> +\OutputCodE\<ht.unix\> \script{ht}{unix} % +->>> + + +\<ms scripts\><<<- +\<ht.bat\><<< +|<windows line|> + %1 %2 + %1 %2 + %1 %2 + tex4ht %2 + t4ht %2 %3 +>>> +\OutputCodE\<ht.bat\> \script{ht}{bat} % +->>> + + +%%%%%%%%%%%%% +\subsection{XHTML: xh} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1} +\Iv{#1 -cvalidate ## -d~/WWW/temp/ -m644 } +\make{xh} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env} +\Iv{#1 -ewin32/tex4ht.env -cvalidate } +\make{xh} +->>> + + + +\<perl options\><<<- + "xh", "xhlatex", "latex", "xhtml", "", "-cvalidate", + "xh", "xhtex", "tex", "xhtml", "", "-cvalidate", + "xh", "xhtexi", "texi", "xhtml", "", "-cvalidate", + "xh", "xhcontext","context", "xhtml", "", "-cvalidat", + "xh", "xhxelatex", "xelatex", "xhtml", "", "-cvalidate", + "xh", "xhxetex", "xetex", "xhtml", "", "-cvalidate", +->>> + + + +%%%%%%%%%%%%% +\subsection{Unicode XHTML: uxh} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,uni-html4} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cunihtf} +\Iv{#1 -cvalidate ## -d~/WWW/temp/ -m644 } +\make{uxh} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,uni-html4} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env + -cunihtf} +\Iv{#1 -ewin32/tex4ht.env -cvalidate } +\make{uxh} +->>> + +\<perl options\><<<- + "uxh", "uxhlatex", "latex", "xhtml,uni-html4", " -cunihtf", "-cvalidate", + "uxh", "uxhtex", "tex", "xhtml,uni-html4", " -cunihtf", "-cvalidate", + "uxh", "uxhtexi", "texi", "xhtml,uni-html4", " -cunihtf", "-cvalidate", + "uxh", "uxhcontext","context", "xhtml,uni-html4", " -cunihtf", "-cvalidate", + "uxh", "uxhxelatex", "xelatex", "xhtml,uni-html4", " -cunihtf", "-cvalidate", + "uxh", "uxhxetex", "xetex", "xhtml,uni-html4", " -cunihtf", "-cvalidate", +->>> + +%%%%%%%%%%%%% +\subsection{XHTML+MathML: xhm} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,mathml} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cunihtf} +\Iv{#1 -cvalidate ## -d~/WWW/temp/ -m644 } +\make{xhm} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,mathml} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cunihtf} +\Iv{#1 -ewin32/tex4ht.env -cvalidate } +\make{xhm} +->>> + + +\<perl options\><<<- + "xhm", "xhmlatex", "latex", "xhtml,mathml", " -cunihtf", "-cvalidate", + "xhm", "xhmtex", "tex", "xhtml,mathml", " -cunihtf", "-cvalidate", + "xhm", "xhmtexi", "texi", "xhtml,mathml", " -cunihtf", "-cvalidate", + "xhm", "xhmcontext","context", "xhtml,mathml", " -cunihtf", "-cvalidate", + "xhm", "xhmxelatex", "xelatex", "xhtml,mathml", " -cunihtf", "-cvalidate", + "xhm", "xhmxetex", "xetex", "xhtml,mathml", " -cunihtf", "-cvalidate", +->>> + + +%%%%%%%%%%%%% +\subsection{Mozilla XHTML+MathML: mz} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,mozilla} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cmozhtf} +\Iv{#1 -cvalidate ## -d~/WWW/temp/ -m644 } +\make{mz} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,mozilla} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cmozhtf} +\Iv{#1 -ewin32/tex4ht.env -cvalidate } +\make{mz} +->>> + + +\<perl options\><<<- + "mz", "mzlatex", "latex", "xhtml,mozilla", " -cmozhtf", "-cvalidate", + "mz", "mztex", "tex", "xhtml,mozilla", " -cmozhtf", "-cvalidate", + "mz", "mztexi", "texi", "xhtml,mozilla", " -cmozhtf", "-cvalidate", + "mz", "mzcontext", "context", "xhtml,mozilla", " -cmozhtf", "-cvalidate", + "mz", "mzxelatex", "xelatex", "xhtml,mozilla", " -cmozhtf", "-cvalidate", + "mz", "mzxetex", "xetex", "xhtml,mozilla", " -cmozhtf", "-cvalidate", +->>> + + +%%%%%%%%%%%%% +\subsection{OpenOffice: oo} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,ooffice} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cmozhtf} +\Iv{#1 -cooxtpipes -coo } +\make{oo} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,ooffice} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cmozhtf} +\Iv{#1 -cooxtpipes -coo -ewin32/tex4ht.env -cvalidate } +\make{oo} +->>> + + +\<perl options\><<<- + "oo", "oolatex", "latex", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo", + "oo", "ootex", "tex", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo", + "oo", "ootexi", "texi", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo", + "oo", "oocontext", "context", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo", + "oo", "ooxelatex", "xelatex", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo", + "oo", "ooxetex", "xetex", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo", +->>> + + + + + +%%%%%%%%%%%%% +\subsection{EmacSpeak: es} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,emspk} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cemspkhtf -s4es} +\Iv{#1 -cemspk ## -d~/WWW/temp/ -m644 } +\make{es} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,emspk} +\Iii{-itex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cemspkhtf -s4es} +\Iv{#1 -ewin32/tex4ht.env -cemspk } +\make{es} +->>> + + +\<perl options\><<<- + "es", "eslatex", "latex", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk", + "es", "estex", "tex", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk", + "es", "estexi", "texi", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk", + "es", "escontext", "context", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk", + "es", "esxelatex", "xelatex", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk", + "es", "esxetex", "xetex", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk", +->>> + + + + + +%%%%%%%%%%%%% +\subsection{JSML: js} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,jsml} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cjsmlhtf } +\Iv{#1 -cjsml ## -d~/WWW/temp/ -m644 } +\make{js} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,jsml} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cjsmlhtf } +\Iv{#1 -ewin32/tex4ht.env -cjsml } +\make{js} +->>> + + +\<perl options\><<<- + "js", "jslatex", "latex", "xhtml,jsml", " -cjsmlhtf", "-cjsml", + "js", "jstex", "tex", "xhtml,jsml", " -cjsmlhtf", "-cjsml", + "js", "jstexi", "texi", "xhtml,jsml", " -cjsmlhtf", "-cjsml", + "js", "jscontext", "context", "xhtml,jsml", " -cjsmlhtf", "-cjsml", + "js", "jsxelatex", "xelatex", "xhtml,jsml", " -cjsmlhtf", "-cjsml", + "js", "jsxetex", "xetex", "xhtml,jsml", " -cjsmlhtf", "-cjsml", +->>> + + + + + +%%%%%%%%%%%%% +\subsection{jsMath: jm} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,jsmath} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cmozhtf } +\Iv{#1 ## -d~/WWW/temp/ -m644 } +\make{jm} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,jsmath} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cmozhtf } +\Iv{#1 -ewin32/tex4ht.env } +\make{jm} +->>> + + +\<perl options\><<<- + "jm", "jmlatex", "latex", "xhtml,jsmath", " -cmozhtf", "", + "jm", "jmtex", "tex", "xhtml,jsmath", " -cmozhtf", "", + "jm", "jmtexi", "texi", "xhtml,jsmath", " -cmozhtf", "", + "jm", "jmcontext", "context", "xhtml,jsmath", " -cmozhtf", "", + "jm", "jmxelatex", "xelatex", "xhtml,jsmath", " -cmozhtf", "", + "jm", "jmxetex", "xetex", "xhtml,jsmath", " -cmozhtf", "", +->>> + + + + + + + + +%%%%%%%%%%%%% +\subsection{TEI: tei, teim} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,tei} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cunihtf} +\Iv{#1 -cvalidate ## -d~/WWW/temp/ -m644 } +\make{tei} + +\Ii{,xhtml,tei-mml} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cunihtf} +\Iv{#1 -cvalidate ## -d~/WWW/temp/ -m644 } +\make{teim} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,tei} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cunihtf} +\Iv{#1 -ewin32/tex4ht.env -cvalidate } +\make{tei} + +\Ii{,xhtml,tei-mml} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cunihtf} +\Iv{#1 -ewin32/tex4ht.env -cvalidate } +\make{teim} +->>> + + +\<perl options\><<<- + "tei", "teilatex", "latex", "xhtml,tei", " -cunihtf", "-cvalidate", + "tei", "teitex", "tex", "xhtml,tei", " -cunihtf", "-cvalidate", + "tei", "teitexi", "texi", "xhtml,tei", " -cunihtf", "-cvalidate", + "tei", "teicontext","context", "xhtml,tei", " -cunihtf", "-cvalidate", + "teim", "teimlatex", "latex", "xhtml,tei-mml"," -cunihtf", "-cvalidate", + "teim", "teimtex", "tex", "xhtml,tei-mml"," -cunihtf", "-cvalidate", + "teim", "teimtexi", "texi", "xhtml,tei-mml"," -cunihtf", "-cvalidate", + "teim", "teimcontext","context","xhtml,tei-mml"," -cunihtf", "-cvalidate", + "tei", "teixelatex", "xelatex", "xhtml,tei", " -cunihtf", "-cvalidate", + "tei", "teixetex", "xetex", "xhtml,tei", " -cunihtf", "-cvalidate", +->>> + + +%%%%%%%%%%%%% +\subsection{DocBook: db, dbm} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,xhtml,docbook} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cunihtf} +\Iv{#1 -cvalidate -cdocbk ## -d~/WWW/temp/ -m644 } +\make{db} + +\Ii{,xhtml,docbook-mml} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cunihtf} +\Iv{#1 -cdocbk ## -d~/WWW/temp/ -m644 } +\make{dbm} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,docbook} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cunihtf} +\Iv{#1 -ewin32/tex4ht.env -cvalidate -cdocbk } +\make{db} + +\Ii{,xhtml,docbook-mml} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -cunihtf} +\Iv{#1 -ewin32/tex4ht.env -cvalidate -cdocbk } +\make{dbm} +->>> + + + +\<perl options\><<<- + "db", "dblatex", "latex", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk", + "db", "dbtex", "tex", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk", + "db", "dbtexi", "texi", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk", + "db", "dbcontext", "context", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk", + "dbm", "dbmlatex", "latex", "xhtml,docbook-mml", " -cunihtf", "-cdocbk", + "dbm", "dbmtex", "tex", "xhtml,docbook-mml", " -cunihtf", "-cdocbk", + "dbm", "dbmtexi", "texi", "xhtml,docbook-mml", " -cunihtf", "-cdocbk", + "dbm", "dbmcontext","context", "xhtml,docbook-mml", " -cunihtf", "-cdocbk", + "db", "dbxelatex", "xelatex", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk", + "db", "dbxetex", "xetex", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk", +->>> + + + +%%%%%%%%%%%%% +\subsection{MS Word HTML: w} +%%%%%%%%%%%%% + + +\<unix scripts\><<<- +\Ii{,xhtml,word} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -csymhtf} +\Iv{#1 -cvalidate ## -d~/WWW/temp/ -m644 } +\make{w} +->>> + +\<ms scripts\><<<- +\Ii{,xhtml,word} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env -csymhtf} +\Iv{#1 -ewin32/tex4ht.env -cvalidate } +\make{w} +->>> + + + + +\<perl options\><<<- + "w", "wlatex", "latex", "xhtml,word", " -csymhtf", "", + "w", "wtex", "tex", "xhtml,word", " -csymhtf", "", + "w", "wtexi", "texi", "xhtml,word", " -csymhtf", "", + "w", "wcontext", "context", "xhtml,word", " -csymhtf", "", + "w", "wxelatex", "xelatex", "xhtml,word", " -csymhtf", "", + "w", "wxetex", "xetex", "xhtml,word", " -csymhtf", "", +->>> + + + + +%%%%%%%%%%%%% +\subsection{JavaHelp: jh} +%%%%%%%%%%%%% + +\<unix scripts\><<<- +\Ii{,html,javahelp,xml,3.2,unicode} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cmozhtf -u10} +\Iv{#1 -d$1-doc/ -cjavahelp -cvalidatehtml -m644} +\make{jh} +->>> + +\<ms scripts\><<<- +\Ii{,html,javahelp,xml,3.2,unicode} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env + -cmozhtf -u10} +\Iv{#1 -ewin32/tex4ht.env -d%1-doc\ -cjavahelp } +\make{jh} +->>> + + +\<perl options\><<<- + "jh", "jhlatex", "latex", "html,javahelp,xml,3.2,unicode", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp -cvalidatehtml", + "jh", "jhtex", "tex", "html,javahelp,xml,3.2,unicode", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp -cvalidatehtml", + "jh", "jhtexi", "texi", "html,javahelp,xml,3.2,unicode", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp -cvalidatehtml", + "jh", "jhcontext","context", "html,javahelp,xml,3.2,unicode", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp -cvalidatehtml", + "jh", "jhxelatex", "xelatex", "html,javahelp,xml,3.2,unicode", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp -cvalidatehtml", + "jh", "jhxetex", "xetex", "html,javahelp,xml,3.2,unicode", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp -cvalidatehtml", +->>> + + +\<unix scripts\><<<- +\Ii{,html,javahelp,xml,3.2,unicode,jh1.0} +\Iii{-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/#1 -cmozhtf -u10} +\Iv{#1 -d$texFile-doc/ -cjavahelp1 -m644 } +\make{jh1} +->>> + +\<ms scripts\><<<- +\Ii{,html,javahelp,xml,3.2,unicode,jh1.0} +\Iii{-i/tex4ht/ht-fonts/#1 + -ewin32/tex4ht.env + -cmozhtf -u10} +\Iv{#1 -ewin32/tex4ht.env -d%1-doc\ -cjavahelp1 } +\make{jh1} +->>> + + +\<perl options\><<<- + "jh1", "jh1latex", "latex", "html,javahelp,xml,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp", + "jh1", "jh1tex", "tex", "html,javahelp,xml,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp", + "jh1", "jh1texi", "texi", "html,javahelp,xml,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp", + "jh1", "jh1context","context", "html,javahelp,xml,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp", + "jh1", "jh1xelatex", "xelatex", "html,javahelp,xml,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp", + "jh1", "jh1xetex", "xetex", "html,javahelp,xml,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d$texFile-doc/ -cjavahelp", +->>> + + + +The xml declaration at +\url{http://java.sun.com/products/javahelp/toc_1_0.dtd} +doesn't start at row/col=1 make it impossible to validate +against that file. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{mkht.4ht} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<mkht\><<<- +% mkht.4ht (?version), generated from ?jobname.tex +% Copyright 2009-2020 TeX Users Group +% Copyright ?CopyYear.1997. Eitan M. Gurari +?<TeX4ht copyright?> +\immediate\write-1{version ?version} + +\def\exit{\documentclass{article}\begin{document}\end{document}\endinput} +\bgroup + \def\missing#1{\aftergroup\exit + \immediate\write16{---------------------------- error + ---------------------------- + ^^JRequires #1ProTex.sty from + https://tug.org/tex4ht^^J% + ---------------------------------------------------------------}} + \openin15=ProTex.sty \ifeof15 \missing{}\else \closein15 \fi + \openin15=AlProTex.sty \ifeof15 \missing{Al}\else \closein15 \fi +\egroup + +\let\ScriptFileName\relax +\let\AddExtn\relax + +\documentclass{article} + +\ifx \HCode\UnDef + \input tex4ht.sty + \Preamble{xhtml} + \input ProTex.sty + \AlProTex{foo,<<<>>>,|,title,list} + \begin{document} + \EndPreamble +\else + \Configure{ProTex}{foo,<<<>>>,|,title,list,[[]]} + \begin{document} +\fi + +\catcode`\:=11 +\def\OutputCodE\<#1.#2\>{{\xdef\ScriptFileName{#1} + \:DoName\def{#1}{\<#1.#2\>} + \OutputCode[#2]\<#1\>}} +\def\winextn{bat} +\def\AddExtn{\ifx\ext\winextn .bat\fi} + +\tableofcontents + +?<def script?> + +%%%%%%%%%%%%%%%%%%%%%% +\section{Script Components} +%%%%%%%%%%%%%%%%%%%%%% + +\def\setcats{\catcode`\\=12 \catcode`\%=12 \catcode`\~=12 + \catcode`\_=12 +} + +\def\Remark{\bgroup \catcode`\#=12 \setcats \Rema} \def\Rema#1{\egroup\def\Rem{#1}} +\def\Ii{\def\II} +\def\Iii{\bgroup \setcats \Iiicont} \def\Iiicont#1{\egroup\def\III.##1.{#1}} +\def\Iv{\bgroup \setcats \Ivcont} \def\Ivcont#1{\egroup\def\IV.##1.{#1}} +\def\Quote{\bgroup \setcats \Qcont} \def\Qcont#1{\egroup\def\quote{#1}} +\def\Argchar{\bgroup \setcats \Acont}\def\Acont#1{\egroup\def\argchar{#1}} +\def\Dirchar{\bgroup \setcats \Dicont}\def\Dicont#1{\egroup\def\dirchar{#1}} +\def\Rubycall{\bgroup \setcats \Dcont}\def\Dcont#1{\egroup\def\rubyCall{#1}} +\def\Echooff{\bgroup \setcats \Dcont}\def\Dcont#1{\egroup\def\echoOff{#1}} +\def\Ext{\bgroup \setcats \Econt} \def\Econt#1{\egroup\def\ext{#1}% + ?<unix shebang line?>} +\def\Base{\bgroup \setcats \Bcont} \def\Bcont#1{\egroup\def\base{#1}} +\def\Script{\def\script##1##2} % #1 -- file #2 -- extension +\def\Options#1{\ifx \OPTIONS\UnDef \def\OPTIONS{#1}\fi} +\def\Latex#1{\ifx \latex\UnDef \def\latex{#1}\fi} + +\let\Rem=\relax +\let\II=\relax +\let\III=\relax +\let\IV=\relax +\let\quote=\relax +\let\argchar=\relax +\let\dirchar=\relax +\let\rubyCall=\relax +\let\echoOff=\relax +\let\ext=\relax +\ifx \script\UnDef \let\script=\relax \fi +\let\base=\relax +\let\firstln=\relax + +\<Rem\><<< +|Rem>>> + +\<II\><<< +|II>>> + +\<III\><<< +|III.|<@|>3.>>> + +\<IV\><<< +|IV.|<@|>4.>>> + +\<'\><<< +|quote>>> + +\<@\><<< +|argchar>>> + +\<dir ch\><<< +|dirchar>>> + +\<base\><<< +|base>>> + +\<ruby call\><<< +|rubyCall>>> + +\<echo off\><<< +|echoOff>>> + +\<unix line\><<< +|firstln#!/bin/sh +# stop at first error +set -e + +# No interaction on the TeX runs is desirable. +# Simpler to do that here than on the individual commands; +# let's hope exec redirections are portable enough. +exec </dev/null +endfirstln +>>> + +Despite the name, this macro is not for Windows. It is unconditionally +included in all the scripts. It should only be the copyright notice, +which somehow gets transformed for Unix. Thus we go to lots of trouble +to insert the at-echo off only for Windows. + +\<windows line\><<< +|<echo off|> +?<MYcopyrightnotice?> +>>> + + +\def\IfExt#1,#2//{\def\next{#1}% + \ifx \next\ext \def\next{\csname iftrue\endcsname}% + \else \ifx \next\empty \def\next{\csname iffalse\endcsname}% + \else \def\next{\IfExt#2,,//}\fi\fi \next} + +\begingroup +\catcode`\:=11 \catcode`\^=7 \catcode`\^^M=13% +% +\gdef\make#1{% + \expandafter\IfExt\OPTIONS,,//% + % + \subsection{#1}% + \def\temp##1{\par{\tt\string##1: \meaning##1}}% + \temp\quote + \temp\argchar + \temp\dirchar + \temp\rubyCall + \temp\echoOff + \temp\ext + \temp\script + \temp\base + \temp\firstln + \temp\latex + \temp\Rem + \temp\II + \temp\III + \temp\IV + \def\pref{#1} % + \<\pref latex\latex.\ext\><<< + \<htlatex \latex...\> + >>> % + ?<add script?>% + \fi +} % +\endgroup + +\ifx \JOBNAME\UnDefined + ?<user's made scripts?> + \expandafter\endinput +\fi + +\input \JOBNAME + +\end{document} +\endinput +->>> + +\<user's made scripts\><<<- +\def\one{\Ii} +\def\two{\Iii} +\def\three{\Iv} +\Latex{} % {}, {2e}, {209} +\def\temp{unix}\ifx\script\temp + \Options{unix} % {unix,bat}, {unix}, {bat} + ?<unix setup?> +\else + \def\temp{bat}\ifx\script\temp + \Options{bat} + ?<ms setup?> + \else + \bgroup + \def\1{\space\space\space} + \def\2{\space\space\space\space\space\space} + \catcode`\%=12 + \catcode`\#=12 + \catcode`\~=12 + \catcode`\@=0 + \catcode`\\=12 + @immediate@write16{|-------------------------------------------------------------} + @immediate@write16{|@2@1 A sample of a scripts generator file } + @immediate@write16{|} + @immediate@write16{|@1 Creates a foolatex script for commands} + @immediate@write16{|} + @immediate@write16{|@2 foolatex file} + @immediate@write16{|} + @immediate@write16{|@1 similar to htlatex for commands} + @immediate@write16{|} + @immediate@write16{|@2 htlatex file "html,...1..." " ...2..." "...3..."} + @immediate@write16{|} + @immediate@write16{|@1 with the arguments ...1..., ...2..., and ...3... } + @immediate@write16{|@1 embedded in the new script. General usage} + @immediate@write16{|} + @immediate@write16{|@2 foolatex file "..." "..." "..."} + @immediate@write16{|} + @immediate@write16{|----------------- sample.tex --------------------------------} + @immediate@write16{|% latex sample} + @immediate@write16{|} + @immediate@write16{| \def\script{bat} } + @immediate@write16{| % \def\script{unix} } + @immediate@write16{|} + @immediate@write16{| \input ./mkht.4ht } + @immediate@write16{|} + @immediate@write16{| \one{,html,...1...}} + @immediate@write16{| \two{-i/tex4ht/ht-fonts/#1 ...2...} % bat } + @immediate@write16{| % \two{-i~/tex4ht/texmf/tex4ht/ht-fonts/#1 ...2...} % unix } + @immediate@write16{| \three{#1 ...3...}} + @immediate@write16{| \make{foo}} + @immediate@write16{|} + @immediate@write16{| \end{document} } + @immediate@write16{-------------------------------------------------------------} + @egroup + \def\next{\csname fi\endcsname + \csname fi\endcsname + \csname fi\endcsname\end{document}} +\fi \fi +->>> + +The script should have an explicit shebang (\#!/bin/sh) line for the +systems where csh-like shells are the foundation. If there is no +shebang line, the defaul shell (which can be anything) is used. + + +\<unix shebang line\><<<- + \def\firstln{unix}\ifx \firstln\ext + \def\firstln##1endfirstln{##1}% + \else \def\firstln##1endfirstln{}\fi +->>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{mkht-scripts.4ht} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<mkht-scripts\><<<- +% mkht-scripts.4ht (?version), generated from ?jobname.tex +% Copyright 2009-2020 TeX Users Group +% Copyright ?CopyYear.2000. Eitan M. Gurari +?<TeX4ht copyright?> + +\ifx \JOBNAME\UnDef + \def\JOBNAME{mkht-scripts.4ht} + \def\next{\input ./mkht.4ht \endinput} + \expandafter\next +\fi + +\Options{unix,bat} % {unix,bat}, {unix}, {bat} +\Latex{} % {}, {2e}, {209} + +%%%%%%%%%%%%%%%%%% +\section{Unix Scripts} +%%%%%%%%%%%%%%%%%% +?<unix setup?> +\ifOption{Needs}{% +\Script{% #1 -- file #2 -- extension + \Needs{"sed -e 's/\#\# -d/ -d/g' < #1.#2 > /opt/cvr/gurari/tex4ht.dir/bin/solaris/#1"}% + \Needs{"chmod 700 /opt/cvr/gurari/tex4ht.dir/bin/solaris/#1"}% + \Needs{"mkdir -p mn.dir/ht-unix"}% + \Needs{"cp #1.#2 mn.dir/ht-unix/#1"}% +}}{} +\Script{% #1 -- file #2 -- extension + \Needs{"mkdir -p /opt/cvr/gurari/tex4ht.dir/bin/ht"}% + \Needs{"mkdir -p /opt/cvr/gurari/tex4ht.dir/bin/ht/unix"}% + \Needs{"mv #1.#2 /opt/cvr/gurari/tex4ht.dir/bin/ht/unix/#1"}% + \Needs{"chmod 744 /opt/cvr/gurari/tex4ht.dir/bin/ht/unix/#1"}% +} + +?<unix scripts?> + +%%%%%%%%%%%%%%%%%% +\section{MS Window Scripts} +%%%%%%%%%%%%%%%%%% +?<ms setup?> +\ifOption{Needs}{\Script{% + \Needs{"mkdir -p mn.dir/ht-win32"}% + \Needs{"cp #1.#2 mn.dir/ht-win32/."}% +}}{} +\Script{% #1 -- file #2 -- extension + \Needs{"mkdir -p /opt/cvr/gurari/tex4ht.dir/bin/ht/win32"}% + \Needs{"mv #1.#2 /opt/cvr/gurari/tex4ht.dir/bin/ht/win32/#1.#2"}% + \Needs{"chmod 744 /opt/cvr/gurari/tex4ht.dir/bin/ht/win32/#1.#2"}% +} + +?<ms scripts?> +?<mkht note?> + +\end{document} +->>> + +\<unix setup\><<<- +%%%%%%%%%% +\Ext{unix} +%%%%%%%%%% +\Base{} +\Quote{'} +\Argchar{$} +\Dirchar{-f/} +\Rubycall{} +\Echooff{} +\Remark{#} +->>> + +\<ms setup\><<<- +%%%%%%%%%%%%%%%%%% +\Options{bat} +%%%%%%%%%%%%%%%%%% +%%%%%%%%% +\Ext{bat} +%%%%%%%%% +\Base{} +\Quote{} +\Argchar{%} +\Dirchar{} +\Rubycall{call } +\Echooff{@echo off} +\Remark{Rem } +->>> + + + +The htlatex-oriented scripts have the following outline. + +\begin{verbatim} + latex $5 $1 + latex $5 $1 + latex $5 $1 + tex4ht -f/$1 -i~/tex4ht.dir/texmf/tex4ht/ht-fonts/$3 + t4ht -f/$1 $4 +\end{verbatim} + +The latex command may be introduced with a filename residing out of +the work directory. However, it produces the dvi code in the work +directory. Consequently, when activated by htlatex-oriented scripts, +the tex4ht.c and t4ht.c utilities need to look for the dvi code in the +work directory. The -f prefix asks these utilities to ignore the +paths possibly appearing in \verb!$1!. A path is recognized by +determining whether the character immediately after \verb'-f' is a +directory indicator character `\verb+\+' or `\verb+/+'. + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Perl Script} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Core} +%%%%%%%%%%%%% + + + +\<mk4ht.perl\><<<- +#!/usr/bin/env perl +?<perl copyright notice?> +use strict; +$^W=1; # turn warning on +my $texFile = ''; +if( @ARGV ){ + my(@array) = split('\.',@ARGV[1]); + $texFile = @array[0]; +} +?<available options?> +?<help info?> +print "mk4ht (?version)\n"; +if( !@ARGV ){ + print "improper command\n"; + showInstrucions(); exit(1); +} +my @command=("","","","",""); +my $i=0; +my $j=0; +my $param; +?<mk4ht.cfg vars?> +foreach $param (@ARGV) { + if( $i == 0 ){ + ?<load mk4ht.cfg?> + for( $j=1; $j<$#options; $j+=6 ){ + if( $param eq $options[$j] ){ + if( $name ){ + ?<use cfg command?> + } else { + ?<use cfg+built in command?> + } + ?<insert cfg extras?> + last; + } } + if( $j>$#options ){ + if( $name ){ ?<use cfg command?> } + else { + print "improper command: $param \n"; + showInstrucions(); exit(1); + } } + } elsif ( $i== 1 ) { + $command[1] = $param; + } elsif ( $i== 2 ) { + if( $command[2] eq "" ){ + $command[2] = $param; + } else { + $command[2] = $param. "," . $command[2]; + } + } elsif ( $i== 3 ) { + $command[3] = $param . $command[3]; + } else { + $command[4] = $param. " " .$command[4]; + } + $i++; +} +my $cmd; +?<cmd = search command with kpsewhich?> +my $commando = $cmd . " " . $command[1] . " \"". + $command[2] . "\" \"". $command[3] . "\" \"" . + $command[4] . "\""; +print "$commando\n"; +my $rtrn; +if( $rtrn = system($commando) ){ + print "--- error --- failed to execute command\n"; +} else { + ?<clean files?> +} +exit( $rtrn ); +->>> + + +\<ensure initialized command[*]MOPE\><<<- +if( !$command[1] ){ $command[1] = ""; } +if( !$command[2] ){ $command[2] = ""; } +if( !$command[3] ){ $command[3] = ""; } +if( !$command[4] ){ $command[4] = ""; } +->>> + + + +\<cmd = search command with kpsewhich\><<<- +open (KPSEA, "kpsewhich " . $command[0] . " |"); +if ($cmd = <KPSEA>){ + $cmd =~ s/\s+$//; +} else { + $cmd = $command[0]; +} +close KPSEA; +->>> + + +\<available options\><<<- +my @options = ( +?<perl options?> +); +->>> + + +Safety guards: + +\begin{itemize} +\item The `use strict' should be employed when not + dynamically exporting variables. +\item Put `my' on local declarations. +\item The `W' (?) + +\end{itemize} + + +%%%%%%%%%%%%% +\subsection{Load Command} +%%%%%%%%%%%%% + + +\<use cfg command\><<<- +$command[0] = "ht".$compiler; +if( $tex ){ $command[2] = $tex; } else { $command[2] = ""; } +if( $tex4ht ){ $command[3] = $tex4ht; } else { $command[3] = ""; } +if( $t4ht ){ $command[4] = $t4ht; } else { $command[4] = ""; } +->>> + + +\<use cfg+built in command\><<<- +if( $options[$j-1] eq "" ){ + $command[0] = $options[$j]; +} else { + $command[0] = "ht".$options[$j+1]; +} +if( $tex ){ $command[2] = $tex; } else { $command[2] = $options[$j+2]; } +if( $tex4ht ){ $command[3] = $tex4ht; } else { $command[3] = $options[$j+3]; } +if( $t4ht ){ $command[4] = $t4ht; } else { $command[4] = $options[$j+4]; } +->>> + + + +\<insert cfg extras\><<<- +if( $texp ){ $command[2] = $command[2] . "," . $texp; } +if( $tex4htp){ $command[3] = $command[3] . " " . $tex4htp; } +if( $t4htp ){ $command[4] = $command[4] . " " . $t4htp; } +->>> + + +%%%%%%%%%%%%% +\subsection{Commands from Configuration File} +%%%%%%%%%%%%% + + +A configuration file may contain records of the following kinds. + +\begin{description} +\item[\#] Comment +\item[name = type] Defines a ht*tex like command, and assocites to it +the TeX compiler of the specified type. Examples of TeX types: latex, tex, +texi, and context. +\item[name.tex = options] Command line options for the compilation under + the (la)tex compiler +\item[name.tex4ht = options] Command line options for tex4ht.c +\item[name.t4ht = options] Command line options for t4ht.c +\end{description} + + +Each record should appear in a different line. +The variants `name.tex += options', `name.tex4ht += options', +`name.t4ht += options' ask to add the listed options to the base +values. + + + + + +Example: + + +\begin{verbatim} +foohlatex = latex +foohlatex.tex = xhtml,uni-html4 +foohlatex.tex4ht += -cunihtf +foohlatex.t4ht = -cvalidate +htlatex.t4ht += -d./ +\end{verbatim} + + + + +\<load mk4ht.cfg\><<<- +?<inf = cfg handler?> +if( $inf ){ + print "(mk4ht cfg)\n"; + while(<$inf>) { + my($line) = $_; + chomp($line); # remove eoln char + if ($line =~ m|\s*#.*|) {} + elsif($line =~ m|^\s*(\S*)\.(\S*)\s*\+=\s*(.*\S)\s*$|) { + if( ($param."tex4ht") eq ($1.$2) ){ + $tex4htp = $tex4htp . " " . $3; + } + elsif( ($param."t4ht") eq ($1.$2) ){ + $t4htp = $t4htp . " " . $3; + } + elsif( ($param."tex") eq ($1.$2) ){ + $texp = $texp . "," . $3; + } + } + elsif($line =~ m|^\s*(\S*)\.(\S*)\s*=\s*(.*\S)\s*$|) { + if( ($param."tex4ht") eq ($1.$2) ){ + $tex4ht = $3 . " "; + $tex4htp = ""; + } + elsif( ($param."t4ht") eq ($1.$2) ){ + $t4ht = $3 . " "; + $t4htp = ""; + } + elsif( ($param."tex") eq ($1.$2) ){ + $tex = $3 . ","; + $texp = ""; + } + } + elsif($line =~ m|^\s*(\S*)\s*=\s*(.*\S)\s*$|) { + if( $param eq $1 ){ + $name = $1; + $compiler = $2; + } + } + ?<elsif get ext?> + elsif ($line) { print "--- Error --- " . $line . "\n"; } + } + close $inf; +} +->>> + + +\<inf = cfg handler\><<<- +my $inf; +open $inf, "<mk4ht.cfg" +or +( open $inf, "<.mk4ht" + or + ( + open $inf, "<" . $ENV{HOME} . "/mk4ht.cfg" + or + ( + open $inf, "<" . $ENV{HOME} . "/.mk4ht" + or $inf = "" +) ) ) +; +->>> + +\<mk4ht.cfg vars\><<<- +my $name; +my $compiler; +my $tex; +my $tex4ht; +my $t4ht; +my $texp; +my $tex4htp = ""; +my $t4htp = ""; +->>> + + + + +%%%%%%%%%%%%% +\subsection{Cleaning Temporary files} +%%%%%%%%%%%%% + +Requested in the mk4ht.cfg file through records of the following form + +\begin{description} +\item[clean ext1 ext2 ...] +The extension names of the files to be removed. + +\item[clean.name ext1 ext2 ...] + +The `name' refers to the ht*tex like command in use. + +\end{description} + + + + + + +Example: + + +\begin{verbatim} +clean dvi idv +clean.foohlatex lg +clean.htlatex lg tmp +\end{verbatim} + + + +\<mk4ht.cfg vars\><<<- +my @ext; +->>> + +\<clean files\><<<- +my $file; +my $ext; +opendir(DIR,".") ; +while ($file = readdir(DIR) ){ + if(index($file,$texFile) == 0 ){ + foreach $ext(@ext){ + if (index($file,$ext,length($file)-length($ext)) != -1){ + if( stat($file)){ + unlink($file); + print "Deleted: ". $file . "\n"; +} } } } } +closedir(DIR); +->>> + + + + +\<elsif get ext\><<<- +elsif($line =~ m|^\s*clean\s+(.+)|){ + my(@array) = split(' ',$1); + push(@ext,@array); +} elsif($line =~ m|^\s*clean\.(\S+)\s+(.+)|){ + if( $1 eq @ARGV[0] ){ + my(@array) = split(' ',$2); + push(@ext,@array); +} } +->>> + + + + +%%%%%%%%%%%%% +\subsection{Info} +%%%%%%%%%%%%% + + + + +\<help info\><<<- +sub showInstrucions(){ + print " option1: mk4ht #1 \"#2\" \"#3\" \"#4\" \"#5\"\n"; + print " \n"; + print " #1: htlatex, xhlatex, mzlatex, oolatex, dblatex, dbmlatex,\n"; + print " jhlatex, eslatex, teilatex, teimlatex, uxhlatex, \n"; + print " wlatex, xhmlatex\n"; + print " \n"; + print " also 'tex', 'texi', 'context', 'xetex', and 'xelatex'\n"; + print " instead of 'latex'\n"; + print " \n"; + print " #2: file name\n"; + print " #3: optional arguments for latex/tex/... \n"; + print " #4: optional arguments for tex4ht.c\n"; + print " #5: optional arguments for t4ht.c\n"; + print " \n"; + print " option2: mk4ht ht #2 #3 \"#4\" \"#5\"\n"; + print " \n"; + print " #1: ht\n"; + print " #2: latex, tex\n"; + print " #3: file name\n"; + print " #4: optional arguments for tex4ht.c\n"; + print " #5: optional arguments for t4ht.c\n"; + print " \n"; + print " Within the program, in column three of the options\n"; + print " variable, the requests for the commands \"latex\",\n"; + print " \"tex\", etc. can be replaced with other equivalent\n"; + print " commands (e.g., \"tex -fmt=latex\").\n"; + + ?<help cfg info?> + + ?<clean info?> +} +->>> + + + + + + +\<help cfg info\><<<- +print "--------------------------------------------------------------------------\n"; +print " Private configuration file: mk4ht.cfg\n"; +print "--------------------------------------------------------------------------\n"; +print "\n"; +print "A private configuration file mk4ht.cfg or .mk4ht may be placed at the\n"; +print "work or home directory, to update existing commands and introduce new\n"; +print "ones. The configuration file may contain records of the following\n"; +print "kinds.\n"; +print "\n"; +print " # Comment\n"; +print " \n"; +print " name = type\n"; +print " Defines a ht*tex like command, and assocites to it the \n"; +print " TeX compiler of the specified type. Examples of TeX \n"; +print " types: latex, tex, texi, context, xetex, and xelatex.\n"; +print " \n"; +print " name.tex = options\n"; +print " Command line options for the compilation under\n"; +print " the (la)tex compiler\n"; +print " \n"; +print " name.tex4ht = options\n"; +print " Command line options for tex4ht.c \n"; +print " \n"; +print " name.t4ht = options\n"; +print " Command line options for t4ht.c\n"; +print " \n"; +print "Each record should appear in a different line. Variants\n"; +print "`name.tex += options', `name.tex4ht += options',\n"; +print "`name.t4ht += options' of the above records are also allowed.\n"; +print "They append the listed options to the base values.\n"; +print "\n"; +print "Example:\n"; +print "\n"; +print " foohlatex = latex\n"; +print " foohlatex.tex = xhtml,uni-html4\n"; +print " foohlatex.tex4ht += -cunihtf\n"; +print " foohlatex.t4ht = -cvalidate\n"; +print " htlatex.t4ht += -d./\n"; +->>> + + + + +\<clean info\><<<- +print "--------------------------------------------------------------------------\n"; +print " Deleting files\n"; +print "--------------------------------------------------------------------------\n"; +print "\n"; +print "The configuration file mk4ht.cfg may also contain requests for\n"; +print "removing files created in the work directory during the compilation.\n"; +print "The requests are to be made through records of the following forms.\n"; +print "\n"; +print " clean ext1 ext2 ...\n"; +print " The extensions of the file name to be removed.\n"; +print " \n"; +print " clean.name ext1 ext2 ...\n"; +print " Conditional request. The `name' refers to the ht*tex \n"; +print " like command in use.\n"; +print "\n"; +print "Example:\n"; +print " clean dvi idv\n"; +print " clean.foohlatex lg \n"; +print " clean.htlatex lg tmp\n"; +->>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Info} +%%%%%%%%%%%%%%%%%% + + + +\<mkht note\><<<- +\immediate\write16{--------------------------------------------------------} +\immediate\write16{* Compile mkht-scripts.4ht with latex to get the + full scripts.} +\immediate\write16{* For shorter latex2e scripts, compile a file whose + content is:} +\immediate\write16{\space\space\space\space\def\string\latex{2e} + \string\input\space mkht-scripts.4ht } +\immediate\write16{* For shorter latex209 scripts, compile a file whose + content is:} +\immediate\write16{\space\space\space\space\def\string\latex{209} + \string\input\space mkht-scripts.4ht } +\immediate\write16{* Remove the extension .unix from the file names } +\immediate\write16{--------------------------------------------------------} +->>> + +% The - at the end of the first line prevents us from using tex4ht-cpright.tex. +\<TeX4ht copyright\><<<- +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project <https://tug.org/tex4ht>. +% +% If you modify this program, changing the +% version identification would be appreciated. +% +\immediate\write-1{version \ifx \JOBNAME\UnDefined ?version\else |version\fi} +->>> + +\<perl copyright notice\><<<- +# mk4ht (?version), generated from ?jobname.tex +# Copyright 2009-2020 TeX Users Group +# Copyright ?CopyYear.2003. Eitan M. Gurari +# +# This work may be distributed and/or modified under the +# conditions of the LaTeX Project Public License, either +# version 1.3 of this license or (at your option) any +# later version. The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# and version 1.3 or later is part of all distributions +# of LaTeX version 2003/12/01 or later. +# +# This work has the LPPL maintenance status "maintained". +# +# The Current Maintainer of this work +# is the TeX4ht Project <https://tug.org/tex4ht>. +# +# If you modify this file, changing the +# version identification be appreciated. +->>> + +% used in the generated scripts. +\<MYcopyrightnotice\><<<- +|Rem |ScriptFileName|AddExtn (?version), generated from ?jobname.tex +|Rem Copyright 2009-2020 TeX Users Group +|Rem Copyright ?CopyYear.2003. Eitan M. Gurari +|Rem +|Rem This work may be distributed and/or modified under the +|Rem conditions of the LaTeX Project Public License, either +|Rem version 1.3 of this license or (at your option) any +|Rem later version. The latest version of this license is in +|Rem http://www.latex-project.org/lppl.txt +|Rem and version 1.3 or later is part of all distributions +|Rem of LaTeX version 2003/12/01 or later. +|Rem +|Rem This work has the LPPL maintenance status "maintained". +|Rem +|Rem The Current Maintainer of this work +|Rem is the TeX4ht Project <https://tug.org/tex4ht>. +|Rem +|Rem If you modify this file, changing the +|Rem version identification be appreciated. +->>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\OutputCode\<mkht\> +\OutputCode\<mkht-scripts\> + +\OutputCodE\<mk4ht.perl\> +%"mv mk4ht.perl mk4ht" + + + \Needs{"mkdir -p /opt/cvr/gurari/tex4ht.dir/bin/ht/perl"}% + \Needs{"cp mk4ht.perl /opt/cvr/gurari/tex4ht.dir/bin/ht/perl/mk4ht.perl"}% + \Needs{"chmod 744 /opt/cvr/gurari/tex4ht.dir/bin/ht/perl/mk4ht.perl"}% + + +\immediate\write16{--------------------------------------------------------} +\immediate\write16{Compile mkht-scripts.4ht with latex to get the + full scripts.} +\immediate\write16{Use the option `Needs' to automatically move the + files to private directories.} +\immediate\write16{--------------------------------------------------------} + +\end{document} +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-moz.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-moz.tex new file mode 100644 index 00000000000..1ea4e220f40 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-moz.tex @@ -0,0 +1,1071 @@ +% $Id: tex4ht-moz.tex 65 2010-11-17 19:16:45Z karl $ +% compile 3 times: latex tex4ht-moz +% or xhlatex tex4ht-moz "html,3,sections+" +% +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{mozilla} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common.tex} +\input{tex4ht-cpright.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<mozilla\><<< +% mozilla.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.2000. Eitan M. Gurari, Paul Gartside +% gartside@maths.ox.ac.uk +|<TeX4ht copywrite|> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Start Here} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure mozilla Preamble\><<< +\:CheckOption{xht} \if:Option + \Configure{ext}{xht} +\else + \Configure{ext}{xml} +\fi +>>> + +It looks like frames on (just current?) browsers require +html extension fot file names. + +Mozilla complaints about version 1.1 :-( + + +%\Configure{VERSION} +% {\IgnorePar \HCode{<?xml version="1.0"?>\Hnewline}} + +\<configure mozilla tex4ht\><<< +\:CheckOption{frames} \if:Option + \Configure{frames-altDOCTYPE}{|<no frames DOCTYPE|>} +\else + |<no frames DOCTYPE|> +\fi +\:CheckOption{-css} \if:Option \else + \Configure{XML-STYLESHEET} + {\HCode{<?xml-stylesheet type="text/css" + href="\aa:CssFile"?>\Hnewline}} +\fi +>>> + + +\<no frames DOCTYPE\><<< +\:CheckOption{pmathml} \if:Option + |<pmathml dtd|> +\else + |<non pmathml dtd|> +\fi +>>> + + + +\<non pmathml dtd\><<< +\Configure{DOCTYPE} + {\IgnorePar + \HCode{<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//|<dtd lang|>"\Hnewline + "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd" + >\Hnewline +% "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [\Hnewline +% <!ENTITY mathml "http://www.w3.org/1998/Math/MathML">\Hnewline +% ]>\Hnewline + }} +>>> + + +\<dtd lang\><<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi +>>> + + +% \Configure{@HEAD}{\HCode{<meta \Hnewline +% http-equiv="Content-Type" content="text/html; +% \ifx \a:charset\:UnDef \A:charset +% \else \a:charset\fi " \xml:empty>}} + + + +\<xmlns\><<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + +\<configure mozilla tex4ht\><<< +\Configure{HTML} + {\IgnorePar\HCode{<html \a:@HTML\Hnewline + \:xhtml{|<xmlns|>}\Hnewline>}} + {\HCode{\Hnewline</html>\Hnewline}} +>>> + +% + + + + + +\<configure mozilla tex4ht\><<< +\Configure{DviMath} + {\mathmltrue + \ifOption{mml-fonts}{|<mml fonts|>}{\NoFonts}\IgnoreRule\HCode{<!--l. + \the\inputlineno-->}{\Tg<\a:mathml math\Hnewline + |<math xmlns|>\a:@math>}\a:math + |<sv dvimath par|>\IgnorePar} + {\Tg</\a:mathml math>\EndIgnoreRule + \ifOption{mml-fonts}{|<html fonts|>}{\EndNoFonts}% + |<recall dvimath par|>\mathmlfalse} +>>> + + + + +\<html fonts\><<< +\Configure{htf}{0}{+}{<span\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>}% +>>> + +\<mml fonts\><<< +\Configure{htf}{0}{+}{<mstyle\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</mstyle>}% +>>> + + + +\<recall dvimath par\><<< +\sv:ignore +>>> + + + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +\<math xmlns\><<< +\csname a:math-xmlns\endcsname +>>> + +The amphersand chracter must be embeded within group parentheses, to +hide it in tables from halign. + + +\<configure mozilla tex4htDEPRECATED\><<< +\Configure{$$} + {\Configure{@math}{mode="display"}\IgnorePar\EndP\DviMath} + {\EndDviMath\ShowPar\par{\HCondtrue\noindent}}{} +\Configure{$} + {\Configure{@math}{mode="inline"}\DviMath} + {\EndDviMath}{} +>>> + +\<configure mozilla latexDEPRECATED\><<< +\Configure{[]} + {\Configure{@math}{mode="display"}\csname a:mathml[]\endcsname + \DviMath\Tg<\a:mathml mrow\Hnewline>$$} + {$$\Tg</\a:mathml mrow>\EndDviMath\csname b:mathml[]\endcsname} +>>> + +\<configure mozilla latexDEPRECATED\><<< +\Configure{()} + {\Configure{@math}{mode="inline"}\csname a:mathml()\endcsname + \DviMath\Tg<\a:mathml mrow\Hnewline>$} + {$\Tg</\a:mathml mrow>\EndDviMath\csname b:mathml()\endcsname} +\Css{math[mode="display"] + {margin-top:0.8em; margin-bottom:0.8em; display:block; text-align:center;}} +>>> + +\<configure mozilla latex\><<< +\Configure{Roman}{I}{V}{X}{L}{C}{D}{M} +\Configure{roman}{i}{v}{x}{l}{c}{d}{m} +>>> + +\<configure mozilla latex\><<< +\Configure{underline} + {\bgroup\ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<span class="underline">}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</span>}\fi\egroup} +>>> + +\<configure mozilla plain\><<< +\Configure{underline} + {\bgroup |<mathml underline|>} + {|<end mathml underline|>\egroup} +>>> + + + + + +\<mathml underline\><<< +\HCode{<\a:mathml munder +class="mml-underline"><\a:mathml mrow>}% +>>> + +\<end mathml underline\><<< +\HCode{</\a:mathml mrow><\a:mathml mo\Hnewline +accent="true">&\#x00AF;</\a:mathml mo></\a:mathml munder>}% +>>> + +The code 0332 for underbar is not recognized. Hence, we use the code +00AF of overbar (\verb+‾+ is not recognized anymore). + + + + +\<nomath underline\><<< +\expandafter\everymath +\expandafter{\expandafter\everymath + \expandafter{\the\everymath}}% +\let\o::@underline:\o:@@underline: +\def\o:@@underline:{\let\o:@@underline:\o::@underline:}% +>>> + + +\<configure mozilla latex\><<< +\Configure{equation} + {\ifmmode\else\par \IgnorePar\fi \EndP + \HCode{<table\Hnewline class="equation"><tr><td>}\IgnorePar + } + {\IgnorePar\EndP\HCode{</td><td class="eq-no">}} + {\end:TTT \ifmmode\else \ShowPar\par{\HCondtrue\noindent}\fi} +>>> + + + + +Mozilla has problem dealing with double and triple unicode prime characters. + +\<configure mozilla latex\><<< +|<plain,latex math|> +>>> + +\<configure mozilla plain\><<< +|<plain,latex math|> +>>> + +\<plain,latex math\><<< +\Configure{'} + {\let\:primes=\empty} + {\relax \csname SUB:prime\endcsname + \sp{\global\let\SUB:prime=\:UnDef \:primes}} + {\let\prime=\relax \xdef\:primes{\:primes\prime}} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Spaces after mtext} +%%%%%%%%%%%%%%%%%% + + +\<configure mozilla latex\><<< +|<mathml text util|> +>>> + +\<configure mathml amstex\><<< +|<mathml text util|> +>>> + +\<mathml text util\><<< +\def\AA:text#1{\mtexttrue + \HCode{<!--mstyle\Hnewline + class="#1"--><\a:mathml + mtext \a:@mtext>}|<start mtext space|>\PauseMathClass + |<math within mtext|>} +\def\BB:text{\mtextfalse\EndPauseMathClass|<end mtext space|>\HCode + {</\a:mathml mtext><!--/mstyle-->}} +>>> + +\<math within mtext\><<< +\Configure{$}{\EndPauseMathClass \mtextfalse + |<end mtext space|>\HCode{</\a:mathml + mtext><!--mstyle\Hnewline class="math"-->}} + {\HCode{<!--/mstyle--><\a:mathml mtext + \a:@mtext>}|<start mtext space|>\PauseMathClass + \mtexttrue}{} +>>> + +\<math within mtext\><<< +\Configure{()}% + {\EndPauseMathClass \mtextfalse + |<end mtext space|>\HCode{</\a:mathml mtext><\a:mathml + mstyle\Hnewline \mml:class="math">}$}% + {$\HCode{</\a:mathml mstyle><\a:mathml + mtext \a:@mtext>}|<start mtext space|>\PauseMathClass + \mtexttrue}% + {}% +>>> + + + +\<start mtext space\><<< +\ht:special{t4ht@,&\#x00A0;}% +>>> +\<end mtext space\><<< +\ht:special{t4ht@,}% +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Accents} +%%%%%%%%%%%%%%%%%% + +See test file at tex4ht-mathml + +\begin{verbatim} + > There is a problem in \dot{x}: it is never build well, but \dot{k} or + > \dot{V} are correctly arranged. + +It is a mozilla problem--it doesnt recognizes the unicode character +ẋ of \dot{x}. I modified the defintion to get a simulation of +the same effect, as is the case for \dot{k} and \dot{V}. + + > I detected that symbols \tilde and \widetilde are not being generated + > by TeX4ht + +I'm getting the same problem here. Tex4ht produces the combining +tilde U0303, but mozilla fails to recognize it. Changing it +to the small tilde character U02DC fixes the problem (now in the bug +fixes page of tex4ht). + +However, that is an improper behavior of mozilla. It can be seen with +the hat and widehat operations. There U0302 does the right job and +U02C6 doesn't. +\end{verbatim} + + + +\<old unicode accents\><<< +\expand:after{\Configure{accent}}\csname OT1\string\.\endcsname + \dot{{}{}} + {\a:accents{}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\"\endcsname + \ddot{{}{}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + +\<configure mozilla latex\><<< +\:CheckOption{new-accents} \if:Option \else + \def\:widetilde:over{\ifmmode \expandafter\mathop\fi + {\x:unicode{02DC}}} +% \def\:tilde:over{\mathop{\x:unicode{02DC}}} +\fi +>>> + +\<configure mozilla plain\><<< +\:CheckOption{new-accents} \if:Option \else + \def\:widetilde:over{\mathop{\ifmmode \expandafter\x:unicode\fi + {02DC}}} +% \def\:tilde:over{\mathop{\x:unicode{02DC}}} +\fi +>>> + + +\<old unicode accents\><<< +\:CheckOption{uniaccents} \if:Option \else + \Configure{accent}\dot\dot{|<dot above codes|>{}{}} + {}{} + \expand:after{\Configure{accent}}\csname OT1\string\.\expandafter + \endcsname + \csname OT1\string\.\endcsname{|<dot above codes|>{}{}} + {}{} + \expand:after{\Configure{accent}}\csname OT1\string\v\endcsname + \check{|<caron codes|>{}{}} + {}{} + \expand:after{\Configure{accent}}\csname OT1\string\=\endcsname + \bar{|<macron codes|>{}{}} + {}{} + \expand:after{\Configure{accent}}\csname OT1\string\`\endcsname + \grave{|<grave codes|>{}{}} + {\a:accents{}{#1}} {\b:accents{grave}{#1}{#2}} + \expand:after{\Configure{accent}}\csname OT1\string\^\endcsname + \hat{|<circumflex codes|>{}{}} + {}{} + \expand:after{\Configure{accent}}\csname OT1\string\~\endcsname + \tilde{|<tilde codes|>{}{}} + {}{} + \Configure{accent}\ddot\ddot{|<diaeresis codes|>{}{34}} + {}{} + \expand:after{\Configure{accent}}\csname OT1\string\"\expandafter + \endcsname + \csname OT1\string\"\endcsname{|<diaeresis codes|>{}{34}} + {}{} +% \expand:after{\expand:after{\Configure{accent}}% +% \csname OT1\string\r\endcsname}% +% \csname OT1\string\r\endcsname{|<ring codes|>{}{}} +% {}{} + \expand:after{\Configure{accent}}\csname OT1\string\b\endcsname + \b{|<bar below codes|>{}{}} + {}{} + \expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\d\endcsname}% + \csname OT1\string\d\endcsname{|<dot below codes|>{}{}} + {}{} + \expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\c\endcsname}% + \csname OT1\string\c\endcsname{|<cedilla codes|>{}{}} + {}{} + \expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\H\endcsname}% + \csname OT1\string\H\endcsname{|<double acute code|>{}{}} + {}{} +\fi +>>> + + +\<dot above codes\><<< +C{010A}c{010B}E{0116}e{0117}G{0120}g{0121}% +I{0130}Z{017B}z{017C}A{0226}a{0227}O{022E}% +o{022F}B{1E02}b{1E03}D{1E0A}d{1E0B}F{1E1E}% +f{1E1F}H{1E22}h{1E23}M{1E40}m{1E41}N{1E44}% +n{1E45}P{1E56}p{1E57}R{1E58}r{1E59}S{1E60}% +s{1E61}T{1E6A}t{1E6B}W{1E86}w{1E87}X{1E8A}% +x{1E8B}Y{1E8E}y{1E8F}% +>>> + +\<caron codes\><<< +C{010C}c{010D}D{010E}d{010F}% +E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}% +S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}% +i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}% +j{01F0}\i{01D0}\j{01F0}% +>>> + +\<macron codes\><<< +A{0100}a{0101}E{0112}% +e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}% +G{1E20}g{1E21}% +>>> + +\<grave codes\><<< +A{00C0}E{00C8}I{00CC}N{01F8}O{00D2}U{00D9}W{1E80}% +Y{1EF2}a{00E0}e{00E8}o{00F2}u{00F9}% +w{1E81}y{1EF3}\i{00EC}% +>>> + +\<circumflex codes\><<< +A{00C2}E{00CA}I{00CE}O{00D4}U{00DB}a{00E2}e{00EA}% +i{00EE}o{00F4}u{00FB}C{0108}c{0109}G{011C}g{011D}% +H{0124}h{0125}J{0134}j{0135}S{015C}s{015D}W{0174}% +w{0175}Y{0176}y{0177}\i{00EE}\j{0135}% +>>> + +\<tilde codes\><<< +A{00C3}N{00D1}O{00D5}a{00E3}n{00F1}o{00F5}I{0128}% +i{0129}U{0168}u{0169}E{1EBC}e{1EBD}% +Y{1EF8}y{1EF9}\i{0129}% +>>> + +\<diaeresis codes\><<< +A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}% +a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}% +Y{0178}\i{00EF}% +>>> + +\<bar below codes\><<< +D{1E0E}d{1E0F}K{1E34}k{1E35}L{1E3A}l{1E3B}N{1E48}n{1E49}% +R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}% +>>> + + +\<cedilla codes\><<< +K{0136}k{0137}L{013B}l{013C}N{0145}n{0146}% +R{0156}r{0157}S{015E}s{015F}T{0162}t{0163}% +E{0228}e{0229}H{1E28}h{1E29}% +C{00C7}c{00E7}G{0122}g{0123}% +>>> + + +\<dot below codes\><<< +A{1EA0}a{1Ea1}D{1E0C}d{1E0D}% +E{1EB8}e{1EB9}H{1E24}h{1E25}I{1ECA}i{1ECB}% +K{1E32}k{1E33}L{1E36}l{1E37}M{1E42}m{1E43}% +N{1E46}n{1E47}O{1ECC}o{1ECD}R{1E5A}r{1E5B}% +S{1E62}s{1E63}T{1E6C}t{1E6D}U{1EE4}u{1EE5}% +V{1E7E}v{1E7F}W{1E88}w{1E89}Y{1EF4}y{1EF5}% +>>> + + + + + + + + +\<old unicode accentsNO\><<< +\expand:after{\Configure{accent}}\csname OT1\string\`\endcsname + \grave{|<grave codes|>{}{}} + {\a:accents{}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname + \acute{|<acute codes|>{}{}} + {\a:accents{}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\^\endcsname + \hat{|<circumflex codes|>{}{}} + {\a:accents{}{#1}} {\b:accents{hat}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\~\endcsname + \tilde{|<tilde codes|>{}{}} + {\a:accents{}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\ddot\ddot{|<diaeresis codes|>{}{34}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\"\expandafter + \endcsname + \csname OT1\string\"\endcsname{|<diaeresis codes|>{}{34}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + +\<\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\r\endcsname}% + \csname OT1\string\r\endcsname{|<ring codes|>{}{}} + {\a:accents{}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + +\<old unicode accentsNO\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\d\endcsname}% + \csname OT1\string\d\endcsname{|<dot below codes|>{}{}} + {\a:accents{}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + + + + + + + + + +\<configure mozilla plain\><<< +\:CheckOption{new-accents} \if:Option \else + |<old unicode accents|> +\fi +>>> + + +\<configure mozilla latex\><<< +\:CheckOption{new-accents} \if:Option \else + |<old unicode accents|> +\fi +>>> + + + + +\<configure mozilla croatian\><<< +\:CheckOption{new-accents} \if:Option \else + |<old unicode accents|> +\fi +>>> + + + +\<configure mozilla romanian\><<< +\:CheckOption{new-accents} \if:Option \else + |<old unicode accents|> +\fi +>>> + + +\<configure mozilla slovak\><<< +\:CheckOption{new-accents} \if:Option \else + |<old unicode accents|> +\fi +>>> + + +\<configure mozilla slovene\><<< +\:CheckOption{new-accents} \if:Option \else + |<old unicode accents|> +\fi +>>> + + + + +%%%%%%%%%%%%%%%%%%%%% +\section{Thin Spaces} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure mozilla latex\><<< +\Configure{,}{\mskip\thinmuskip} +>>> + +\<configure mozilla plain\><<< +\Configure{,}{\mskip\thinmuskip} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%% +\section{Fonts} +%%%%%%%%%%%%%%%%%%%%% + +\<configure mozilla fontmath\><<< +|<math fonts utilities|> +|<set mathcal class|> +|<set mathcal symbols|> +|<set Re/Im class|> +|<set Re/Im symbols|> +|<set math sf class|> +|<set math sf symbols|> +>>> + + +\<configure mozilla euler\><<< +|<math fonts utilities|> +|<set fraktur class|> +|<set fraktur symbols|> +|<set math script class|> +|<set math script symbols|> +|<set math sf class|> +|<set math sf symbols|> +>>> + +\<configure mozilla eucal\><<< +|<set mathcal class|> +|<set mathcal symbols|> +>>> + +\<configure mozilla amsfonts\><<< +|<math fonts utilities|> +|<set mathbb class|> +|<set mathbb symbols|> +|<set fraktur class|> +|<set fraktur symbols at amsfonts|> +>>> + + +\<configure mozilla dsfont\><<< +|<math fonts utilities|> +|<configure mathds mathclass|> +>>> + + +\<math fonts utilities\><<< +\ifx \tmp:bx\:UnDef \csname newbox\endcsname \tmp:bx \fi +\def\find:set:mgroup#1#2#3{\bgroup + \def\use@mathgroup##1##2##3{\relax + \tmp:cnt=##2% + \xdef\:temp####1{\noexpand\Configure{MathClass}{#2}% + {}{}{}{\mathchar"0\the\tmp:cnt ####1}}% + }% + \setbox\tmp:bx=\hbox{$#1$}\setbox\tmp:bx=\hbox{}% + \set:mgroup#3{}{}% + \egroup +} +\def\set:mgroup#1#2{\if :#1#2:\else + \:temp{#1#2}\expandafter\set:mgroup \fi} +>>> + + + +\<set mathbb class\><<< +\ifx \mathbbMathClass\:UnDef + \NewMathClass\mathbbMathClass +\fi +\Configure{MathClass}{\mathbbMathClass}{*} + {<\a:mathml mi mathvariant="double-struck">}{</\a:mathml mi>}{} +>>> + + + +\<set mathbb symbols\><<< +\find:set:mgroup{\mathbb{A}}{\mathbbMathClass}% + {414244454647494A4B4C4D4F535455565758597C} |%A--Z (not CHNPQRZ),k|% +>>> + +The characters CHNPQRZ bet a \verb+<mi mathvariant="double-struck">+ decoration. + + + +Mathfrak might be conditionally loaded by latex, upon encountering +the mathfrak command. Hence, the indirect setting of math classes. + +\<set fraktur symbols at amsfonts\><<< +\expandafter\ifx \csname sv:@mathfrak:\endcsname\relax + \let\sv:@mathfrak:=\n:@mathfrak: +\fi +\def\n:@mathfrak:{\global\let\n:@mathfrak:=\sv:@mathfrak: + \global\let\sv:@mathfrak:=\:UnDef + |<set fraktur symbols|>% +} +\n:@mathfrak: +>>> + + +In version 1.4b \verb+<mi mathvariant="fraktur">𝔏</mi>+ +is needed. The representations + \verb+<mi>𝔏</mi>+ and + \verb+<mi mathvariant="fraktur">L</mi>+ +don't work. + +\<set fraktur class\><<< +\ifx \mathfrakMathClass\:UnDef + \NewMathClass\mathfrakMathClass +\fi +\Configure{MathClass}{\mathfrakMathClass}{*} + {<\a:mathml mi\Hnewline + mathvariant="fraktur">}{</\a:mathml mi>}{} +>>> + +\<set fraktur symbols\><<< +\find:set:mgroup{\mathfrak{A}}{\mathfrakMathClass}% + {4142434445464748494A4B4C4D4E4F505152535455565758595A% |%A--Z|% + 6162636465666768696A6B6C6D6E6F707172737475767778797A% |%a--z|% + 30313233343536373839}% |%0--9|% +>>> + + + +\<set fraktur class\><<< +\ifx \mathboldfrakMathClass\:UnDef + \NewMathClass\mathboldfrakMathClass +\fi +\Configure{MathClass}{\mathboldfrakMathClass}{*} + {<\a:mathml mi\Hnewline + mathvariant="bold-fraktur">}{</\a:mathml mi>}{} +>>> + +\<set fraktur symbols\><<< +\expandafter\ifx\csname mv@bold\endcsname\relax \else +\bgroup +\mathversion{bold}% +\find:set:mgroup{\mathfrak{A}}{\mathboldfrakMathClass}% + {4142434445464748494A4B4C4D4E4F505152535455565758595A% |%A--Z|% + 6162636465666768696A6B6C6D6E6F707172737475767778797A% |%a--z|% + }% +\egroup +\fi +>>> + + + +\<set math script class\><<< +\ifx \mathscrMathClass\:UnDef + \NewMathClass\mathscrMathClass +\fi +\Configure{MathClass}{\mathscrMathClass}{*} + {<\a:mathml mi\Hnewline + mathvariant="script">}{</\a:mathml mi>}{} +>>> + +\<set math script symbols\><<< +\find:set:mgroup{\mathscr{A}}{\mathscrMathClass}% + {4142434445464748494A4B4C4D4E4F505152535455565758595A} |%A--Z|% +>>> + +\<set math script class\><<< +\ifx \mathboldscrMathClass\:UnDef + \NewMathClass\mathboldscrMathClass +\fi +\Configure{MathClass}{\mathboldscrMathClass}{*} + {<\a:mathml mi\Hnewline + mathvariant="bold-script">}{</\a:mathml mi>}{} +>>> + +\<set math script symbols\><<< +\expandafter\ifx\csname mv@bold\endcsname\relax \else +\bgroup +\mathversion{bold}% +\find:set:mgroup{\mathscr{A}}{\mathboldscrMathClass}% + {4142434445464748494A4B4C4D4E4F505152535455565758595A} |%A--Z|% +\egroup +\fi +>>> + +\<set mathcal class\><<< +\ifx \mathcalMathClass\:UnDef + \NewMathClass\mathcalMathClass +\fi +\Configure{MathClass}{\mathcalMathClass}{*} + {<\a:mathml mi\Hnewline + mathvariant="script">}{</\a:mathml mi>}{} +>>> + +\<set mathcal symbols\><<< +\find:set:mgroup{\mathcal{A}}{\mathcalMathClass}% + {4142434445464748494A4B4C4D4E4F505152535455565758595A} |%A--Z|% +>>> + +\<set mathcal class\><<< +\ifx \mathboldcalMathClass\:UnDef + \NewMathClass\mathboldcalMathClass +\fi +\Configure{MathClass}{\mathboldcalMathClass}{*} + {<\a:mathml mi\Hnewline + mathvariant="bold-script">}{</\a:mathml mi>}{} +>>> + +\<set mathcal symbols\><<< +\expandafter\ifx\csname mv@bold\endcsname\relax \else +\bgroup +\mathversion{bold}% +\find:set:mgroup{\mathcal{A}}{\mathboldcalMathClass}% + {4142434445464748494A4B4C4D4E4F505152535455565758595A} |%A--Z|% +\egroup +\fi +>>> + + + + +\<set math sf classBROKEN\><<< +\ifx \boldmathsfMathClass\:UnDef + \NewMathClass\boldmathsfMathClass +\fi +\Configure{MathClass}{\boldmathsfMathClass}{*} + {<\a:mathml mi mathvariant="bold-sans-serif">}{</\a:mathml mi>}{} +>>> + +\<set math sf symbolsBROKEN\><<< +\find:set:mgroup{{\boldmath\mathsf{A}}}{\boldmathsfMathClass}% + {4142434445464748494A4B4C4D4E4F505152535455565758595A% |%A--Z|% + 6162636465666768696A6B6C6D6E6F707172737475767778797A% |%a--z|% + }% +>>> + +\<set math sf classBROKEN\><<< +\ifx \boldmathsfDigitMathClass\:UnDef + \NewMathClass\boldmathsfDigitMathClass +\fi +\Configure{MathClass}{\boldmathsfDigitMathClass}{*} + {<\a:mathml mn mathvariant="bold-sans-serif">}{</\a:mathml mn>}{} +>>> + +\<set math sf symbolsBROKEN\><<< +\find:set:mgroup{{\boldmath\mathsf{A}}}{\boldmathsfDigitMathClass}% + {30313233343536373839}% |%0--9|% +>>> + + +BROKEN: The above, for instance, fail for the prima math code: + +\begin{verbatim} +\documentclass{article} +\tracingmacros=2 +\begin{document} + +prima {\boldmath $\mathrm{{\csname HCode\endcsname{}}^{14}C}$} + +seconda {\boldmath $\mathsf{{\csname HCode\endcsname{}}^{15}C}$} + +terza {\boldmath $\mathrm{{\csname HCode\endcsname{}}^{16}C}$} + +quarta {\boldmath $\mathsf{{\csname HCode\endcsname{}}^{17}C}$} + + quinta {$\mathtt{{\csname HCode\endcsname{}}^{18}C}$} +\end{document} +\end{verbatim} + + + + + + +Double strike: + +\<configure mathds mathclass\><<< +\ifx \mathdsMathClass\:UnDef + \NewMathClass\mathdsMathClass +\fi +\Configure{MathClass}{\mathdsMathClass}{*} + {<\a:mathml mi mathvariant="double-struck">}{</\a:mathml mi>}{} +\find:set:mgroup{\mathds{A}}{\mathdsMathClass}% |%1,A--Z,A,h,k|% + {314142434445464748494A4B4C4D4E4F505152535455565758595A61686B} +>>> + + + + + + + +\<set Re/Im class\><<< +\ifx \mathReImMathClass\:UnDef + \NewMathClass\mathboldReImMathClass +\fi +\Configure{MathClass}{\mathboldReImMathClass}{*} + {<\a:mathml mi\Hnewline + fontweight="bold">}{</\a:mathml mi>}{} +>>> + +\<set Re/Im symbols\><<< +\expandafter\ifx\csname mv@bold\endcsname\relax \else +\bgroup +\mathversion{bold}% +\find:set:mgroup{\mathcal{A}}{\mathboldReImMathClass}% + {3C3D} +\egroup +\fi +>>> + + + + +%%%%%%%%%%%%%%% +\chapter{pmathml.xsl} +%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%% +\section{Header Part} +%%%%%%%%%%%%%%%%%%%%% + +\<pmathml dtd\><<< +\Configure{DOCTYPE}{} +>>> + + + + +\<configure mozilla tex4ht\><<< +\:CheckOption{pmathml} \if:Option + |<pmathml configurations|> + \:CheckOption{pmathml-css} \if:Option \else + \Log:Note{If css rendering is preferred + for MathML, use option `pmathml-css' instead of `pmathml'.} + |<pmathml but not pmathml-css|> + \fi +\else + \:CheckOption{pmathml-css} \if:Option \else + \Log:Note{For multi-platform MathML + through stylesheet transforms, use the command line option + `pmathml'. If css rendering is preferred, use `pmathml-css'.} +\fi \fi +>>> + + +\<pmathml configurations\><<< +\:CheckOption{pmathml-css} \if:Option + \Configure{XML-STYLESHEET} + {\HCode{% + <?xml-stylesheet type="text/xsl" + href="pmathmlcss.xsl"?>\Hnewline + <!--http://www.w3.org/Math/XSL/pmathmlcss.xsl-->\Hnewline + }} +\else + \Configure{XML-STYLESHEET} + {\HCode{% + <?xml-stylesheet type="text/xsl" + href="pmathml.xsl"?>\Hnewline + <!--http://www.w3.org/Math/XSL/pmathml.xsl-->\Hnewline + }} +\fi +>>> + +\<pmathml configurations\><<< +\:CheckOption{pmathml-css} \if:Option + \Configure{@HTML} + {xmlns:math="http://www.w3.org/1998/Math/MathML"\Hnewline + xmlns:pref="http://www.w3.org/2002/Math/preference"\Hnewline + pref:renderer="css" + } +\fi +>>> + + +\<configure mozilla Preamble\><<< +\:CheckOption{pmathml-css} \if:Option + \edef\Preamble{\Preamble,pmathml} +\fi +>>> + + +\Link[http://www.w3.org/Math/XSL/Overview.html]{}{}% +http://www.w3.org/Math/XSL/Overview.html\EndLink{} and +\Link[http://www.w3.org/Math/XSL/Overview-tech.html]{}{}% +http://www.w3.org/Math/XSL/Overview-tech.html\EndLink{} explains how +to make .xml pages (in fact, Tex4ht option MOZILLA) to Explorer 6 even +WITHOUT Mathplayer: it requires two .xsl style sheets (pmathml.xsl and +pmathmlcss.xsl, they can be retrieved there) and replacing +\verb+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//|<dtd lang|>" "mathml.dtd">+ +with +\verb+<?xml-stylesheet type="text/xsl" href="pmathml.xsl"?>+. +Moreover, if one has Mathplayer installed, one must keep it away, for +check purposes, by replacing \verb+<html...>+ with + +\begin{verbatim} +<html + xmlns="http://www.w3.org/1999/xhtml" + xmlns:math="http://www.w3.org/1998/Math/MathML" + xmlns:pref="http://www.w3.org/2002/Math/preference" + pref:renderer="css" + > +\end{verbatim} + + +%%%%%%%%%%%%%%%%% +\section{Tables} +%%%%%%%%%%%%%%%%% + + +The attribute \verb+nowrap="nowrap"+ in table cells prevents +Mathplayer from displaying them its own way, and one gets minimal +cells, overlapped: it ought to be avoided altogether. + +It reappears in the option pmathml - as soon as Mathplayer is called +upon to deal with a table, the cells overlap from left to right, and +the last row is reduced almost to nothing. Pmathml-css, NOT calling on +Mathplayer, gives no trouble that way. + +\<pmathml but not pmathml-css\><<< +\Configure{halignTD} {}{} + {<}{\ifmathml \HCode{ columnalign="left"}\else + \HCode{ style="text-align:left" }\fi} + {-}{\ifmathml \HCode{ columnalign="center"}\else + \HCode{ style="text-align:center" }\fi} + {>}{\ifmathml \HCode{ columnalign="right"}\else + \HCode{ style="text-align:right" }\fi} + {^}{\ifmathml \HCode{ rowalign="top"}\else + \HCode{ style="vertical-align:top" }\fi} + {=}{\ifmathml \HCode{ rowalign="baseline"}\else + \HCode{ style="vertical-align:baseline" }\fi} + {||}{\ifmathml \HCode{ rowalign="center"}\else + \HCode{ style="vertical-align:middle" }\fi} + {_}{\ifmathml \HCode{ rowalign="bottom"}\else + \HCode{ style="vertical-align:bottom" }\fi} + {p}{\ifmathml \HCode{ columnalign="left"}\else + \HCode{ style="text-align:left"}\fi} + {} +>>> + + + + + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-oo-xtpipes.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-oo-xtpipes.tex new file mode 100644 index 00000000000..efdede0a20f --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-oo-xtpipes.tex @@ -0,0 +1,1981 @@ +% $Id: tex4ht-oo-xtpipes.tex 740 2020-06-13 22:35:32Z karl $ +% htlatex tex4ht-oo-xtpipes "xhtml,next,3" "" "-d./" +% +% Copyright 2009-2020 TeX Users Group +% Copyright 2001-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\documentclass{article} + \Configure{ProTex}{log,<<<>>>,title,list,`,[[]]} + \usepackage{url} +\begin{document} + +\input{common} +\input{tex4ht-cpright} +\input{tex4ht-dir} + + +%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Math} +%%%%%%%%%%%%% + + +\AtEndDocument{\OutputCodE\<oo-math.4xt\>} + +\Needs{"xmllint --valid --noout oo-math.4xt"} + + + + + +\<oo-math.4xt\><<< +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE xtpipes SYSTEM "xtpipes.dtd" > +<!-- oo-math.4xt (`version), generated from `jobname.tex + Copyright (C) 2009-2013 TeX Users Group + Copyright (C) `CopyYear.2006. Eitan M. Gurari +`<TeX4ht copyright`> --> +<xtpipes preamble="yes" signature="oo-math.4xt (`version)"> + <sax content-handler="xtpipes.util.ScriptsManager,tex4ht.OomFilter" + lexical-handler="xtpipes.util.ScriptsManagerLH" > + <script element="math:mtable" > + `<normalizing math tables`> + </script> + <script element="math:math" > + `<handle mo elements`> + `<handle mrow elements`> + `<handle mspace elements`> + </script> + </sax> +</xtpipes> +>>> + + + + + + + +\<handle mspace elements\><<< +<set name="math:mspace" > + `<open mml xslt script`> + `<math:mspace templates`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="math:mspace" /> +>>> + + +\<math:mspace templates\><<< +<xsl:template match="math:mspace" > + <math:mtext> + <xsl:text> </xsl:text> + </math:mtext> +</xsl:template> +>>> + + + + +%%%%%%%%%%%%% +\subsection{Text} +%%%%%%%%%%%%% + + + + + + + +\AtEndDocument{\OutputCodE\<oo-text.4xt\>} + +\Needs{"xmllint --valid --noout oo-text.4xt"} + + + + + +\<oo-text.4xt\><<< +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE xtpipes SYSTEM "xtpipes.dtd" > +<!-- oo-text.4xt (`version), generated from `jobname.tex + Copyright (C) 2009-2013 TeX Users Group + Copyright (C) `CopyYear.2006. Eitan M. Gurari +`<TeX4ht copyright`> --> +<xtpipes preamble="yes" signature="oo-text.4xt (`version)"> + <sax content-handler="xtpipes.util.ScriptsManager,tex4ht.OoFilter" + lexical-handler="xtpipes.util.ScriptsManagerLH" > + <script element="text:bibliography-mark" > + `<bib mark`> + </script> + <script element="table:table" > + `<normalizing text tables`> + </script> + <script element="text:p" > + `<clean paragraphs`> + </script> + <script element="text:h" > + `<spaces for headers`> + </script> + </sax> +</xtpipes> +>>> + + +%%%%%%%%%%%%% +\subsubsection{Cross References} +%%%%%%%%%%%%% + +This is not used anymore, the make4ht-t4htlinks DOM filter is used instead. The +following code may produce broken or empty links, so it is not really usable. + +\<cross references\><<< +<set name="t4ht-link" > + `<open oo xslt script`> + `<handle t4htlink elements`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="t4ht-link" /> +>>> + +\<bib mark\><<< +<set name="bib-mark" > + `<open oo xslt script`> + `<handle bib mark elements`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="bib-mark" /> +>>> + + + +\<handle t4htlink elements\><<< +<xsl:template match="t4htlink[ @href = concat('#',@name) ]" > + <xsl:apply-templates select="*|text()|comment()" /> + <text:reference-mark> + <xsl:attribute name="text:name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:text> </xsl:text> + </text:reference-mark> +</xsl:template> +>>> + +\<handle t4htlink elements\><<< +<xsl:template match="t4htlink[ not(@name) + and + starts-with(@href, '#') +]" > + <xsl:apply-templates select="*|text()|comment()" /> + <text:span> + <xsl:attribute name="text:style-name"> + <xsl:text>reference-ref</xsl:text> + </xsl:attribute> + <text:reference-ref> + <xsl:attribute name="text:ref-name"> + <xsl:value-of select="substring( @href, 2 )"/> + </xsl:attribute> + <xsl:attribute name="text:reference-format"> + <xsl:text>text</xsl:text> + </xsl:attribute> + <xsl:text> </xsl:text> + </text:reference-ref> + </text:span> +</xsl:template> +>>> + + + + + + + +\<handle t4htlink elements\><<< +<xsl:template match="t4htlink[ not(@name) + and + not(starts-with(@href, '#')) +]" > + <text:a> + <xsl:attribute name="xlink:type"> + <xsl:text>simple</xsl:text> + </xsl:attribute> + <xsl:attribute name="xlink:href"> + <xsl:value-of select="@href"/> + </xsl:attribute> + <xsl:apply-templates select="*|text()|comment()" /> + </text:a> +</xsl:template> +>>> + + + + + +\<handle bib mark elements\><<< +<xsl:template match="text:bibliography-mark" > + <xsl:copy> + <xsl:attribute name="text:identifier"> + <xsl:value-of select="normalize-space(.)" /> + </xsl:attribute> + <xsl:apply-templates select="@*" /> + </xsl:copy> + <text:span> + <xsl:attribute name="text:style-name"> + <xsl:text>reference-ref</xsl:text> + </xsl:attribute> + <text:reference-ref> + <xsl:attribute name="text:ref-name"> + <xsl:value-of + select="text:span/text:reference-ref/@text:ref-name"/> + </xsl:attribute> + <xsl:attribute name="text:reference-format"> + <xsl:text>text</xsl:text> + </xsl:attribute> + <xsl:text> </xsl:text> + </text:reference-ref> + </text:span> +</xsl:template> +>>> + + + + + +\begin{itemize} +\item +External +\begin{verbatim} +<text:a xlink:type="simple" + xlink:href="http:....">...</text:a> +\end{verbatim} + + +\item internal +\url{http://www.linuxjournal.com/article/8112} + + +\begin{verbatim} +<text:reference-mark-start text:name="xx"/> +is +<text:reference-mark-end text:name="xx"/> + +<text:reference-ref text:reference-format="direction" text:ref-name="xx"> +above +</text:reference-ref> +\end{verbatim} + +\end{itemize} + + +%%%%%%%%%%%%% +\subsection{Java Utilities} +%%%%%%%%%%%%% + + + +\AtEndDocument{\OutputCodE\<OoUtilities.java\>} + +\ifdojava + \Needs{" + javac OoUtilities.java -d \XTPIPES +"} +\fi + +\<OoUtilities.java\><<< +package tex4ht; +/* OoUtilities.java (`version), generated from `jobname.tex + Copyright (C) 2009-2013 TeX Users Group + Copyright (C) `CopyYear.2006. Eitan M. Gurari +`<TeX4ht copyright`> */ +import org.w3c.dom.*; +public class OoUtilities { + `<static void mtable(dom)`> + `<static void table(dom)`> + `<static boolean justSpace(node)`> +} +>>> + + + `<static boolean paragraph(node)`> + + +%%%%%%%%%%%%%%%%%% +\section{Text Table} +%%%%%%%%%%%%%%%%%% + +% +% +% +% \<handle mrow elements\><<< +% <set name="math:mtd" > +% `<open oo xslt script`> +% `<math:mtd templates`> +% `<close xslt script`> +% </set> +% <xslt name="." xml="." xsl="math:mtd" /> +% >>> +% +% \<math:mtd templates\><<< +% <xsl:template match="math:mtd" > +% <xsl:copy> +% <xsl:apply-templates select="*|text()" /> +% </xsl:copy> +% </xsl:template> +% >>> +% +% +% \<math:mtd templates\><<< +% <xsl:template match="math:mtable"> +% <math:mtable math:columnalign="right left"> +% <xsl:apply-templates select="*|text()" /> +% </math:mtable> +% </xsl:template> +% >>> +% +% +% + + %%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%% + + + + + +\<normalizing text tables\><<< +<dom name="." xml="." method="table" class="tex4ht.OoUtilities" /> +>>> + + +\<static void table(dom)\><<< +public static void table(Node dom) { + Node tblRow, tblCell, d; +// int cols = 0; + Node node = dom.getFirstChild(); + `<bind text namespace prefixes in the root element`> + `<tblRow -= empty trailing rows`> + if( (tblRow != null) && (tblRow.getPreviousSibling() != null) ){ + `<bool = is ruler row?`> + if( !bool ){ + `<remove child spaces from row`> + `<remove trailing non-content row`> + tblCell = tblRow.getFirstChild(); + if( (tblCell != null) + && (tblCell.getNextSibling() == null) + && justSpace(tblCell) + ){ + node.removeChild(tblRow); + } } } + `<n := max number of cols`> + `<remove extra col declarations`> +} +>>> + + + +\begin{verbatim} +<table:table > + <table:table-column table:style-name="equ-col"/> + <table:table-column table:style-name="equ-num-col"/> + + <table:table-row> + <table:table-cell table:style-name="equ-cell"> + .... + </table:table-cell> + </table:table-row> + + <table:table-row> + .... + </table:table-row> + +</table:table> +\end{verbatim} + + +%%%%%%%%%%%%% +\subsection{Remove Rows} +%%%%%%%%%%%%% + + + + + +\<tblRow -= empty trailing rows\><<< +tblRow = node.getLastChild(); +while( (tblRow != null) +// && (tblRow.getNodeType() == Node.TEXT_NODE) +// && tblRow.getNodeValue().trim().equals("") + && tblRow.getTextContent().trim().equals("") +){ + node.removeChild(tblRow); + tblRow = node.getLastChild(); +} +>>> + + + + +%%%%%%%%%%%%% +\subsection{Remove Extra Column Declarations} +%%%%%%%%%%%%% + + + +\<remove child spaces from row\><<< +tblCell = tblRow.getFirstChild(); +while( tblCell != null){ + d = tblCell.getNextSibling(); + if( justSpace(tblCell) ){ tblRow.removeChild(tblCell); } + tblCell = d; +} +>>> + + + + +\<n := max number of cols\><<< +int n = 0; +tblRow = node.getFirstChild(); +while( tblRow != null ){ + if( + (tblRow.getNodeType() == Node.ELEMENT_NODE) + && + tblRow.getNodeName().equals("table:table-row") + ){ + `<m := number of columns`> + if( m > n ){ n = m; } + } + tblRow = tblRow.getNextSibling(); +} +>>> + +\<m := number of columns\><<< +int m = 0; +tblCell = tblRow.getFirstChild(); +while( tblCell != null ){ + if( + (tblCell.getNodeType() == Node.ELEMENT_NODE) + && + tblCell.getNodeName().equals("table:table-cell") + ){ + m++; + `<table:table-cell -= empty text:p`> + } + tblCell = tblCell.getNextSibling(); +} +>>> + + + + + +\<remove extra col declarations\><<< +tblRow = node.getFirstChild(); +while( tblRow != null ){ + d = tblRow.getNextSibling(); + if( + (tblRow.getNodeType() == Node.ELEMENT_NODE) + && + tblRow.getNodeName().equals("table:table-column") + ){ + n--; + if( n < 0 ){ + tblRow.getParentNode().removeChild(tblRow); + } } + tblRow = d; +} +>>> + + +%%%%%%%%%%%%% +\subsection{Remove Empty Paragraphs within Table Cell} +%%%%%%%%%%%%% + + +There is an exception for paragraphs that are the only child elements. + + +\<table:table-cell -= empty text:p\><<< +Node child = tblCell.getLastChild(); +while( child != null ){ + Node prevChild = child.getPreviousSibling(); + if( + (child.getNodeType() == Node.ELEMENT_NODE) + && + child.getNodeName().equals("text:p") + ){ + Node sibling = child.getPreviousSibling(); + while( (sibling != null) + && + (sibling.getNodeType() != Node.ELEMENT_NODE) + ){ + sibling = sibling.getPreviousSibling(); + } + if( sibling == null ){ + sibling = child.getNextSibling(); + while( (sibling != null) + && + (sibling.getNodeType() != Node.ELEMENT_NODE) + ){ + sibling = sibling.getNextSibling(); + } } + if( (sibling != null) + && child.getTextContent().trim().equals("") + ){ + tblCell.removeChild(child); + } } + child = prevChild; +} +>>> + + + +%%%%%%%%%%%%% +\subsection{Test for Empty Nodes} +%%%%%%%%%%%%% + + + + +\<static boolean justSpace(node)\><<< +static boolean justSpace(Node node){ + if( node == null ){ return true; } + if( node.getNodeType() == Node.TEXT_NODE ){ + if( !node.getNodeValue().trim().equals("") ){ return false; } + } else { + if( node.getNodeType() == Node.ELEMENT_NODE ){ + String nm = node.getNodeName(); + if( + !nm.equals("table:table-cell") + && !nm.equals("text:p") + ){ + return false; + } } + } + if(!justSpace( node.getNextSibling() )){ return false; } + if(!justSpace( node.getFirstChild() )){ return false; } + return true; +} +>>> + +\<bool = is ruler row?\><<< +boolean bool = false; +if( tblRow.getNodeName().equals("table:table-row") + && tblRow.hasAttributes() +){ + NamedNodeMap attributes = tblRow.getAttributes(); + Node styleAttr = attributes.getNamedItem( "table:style-name" ); + String style = (styleAttr==null)? null + : styleAttr.getNodeValue(); + if( (style != null) + && ( style.equals("hline-row") + || style.equals("cline-row") + ) + ){ + bool = true; +} } +>>> + +%%%%%%%%%%%%%%%%%% +\section{Nested Paragraphs (OoUtilities)} +%%%%%%%%%%%%%%%%%% + + + + +\<clean paragraphs\><<< +<set name="text-p" > + `<open oo xslt script`> + `<remove nested text:p`> + `<remove nested text:p in biblatex`> + `<multicolumn styles`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="text-p" /> +>>> + + + + +\<remove nested text:p2???\><<< +<xsl:template match="text:p[ @text:style-name = 'start_subjclass' + ]" > + <xsl:comment> + <xsl:text>start-subjclass</xsl:text> + </xsl:comment> + <xsl:apply-templates select="*|text()|comment()" /> +</xsl:template> +<xsl:template match="text:p[ @text:style-name = 'end_subjclass'> + <xsl:apply-templates select="*|text()|comment()" /> + <xsl:comment> + <xsl:text>end-subjclass</xsl:text> + </xsl:comment> +</xsl:template> +>>> + + + +\<remove nested text:p\><<< +<xsl:template match="text:p[ (count(child::*)=1) + and child::draw:frame + and parent::text:p + ]" > + <xsl:apply-templates select="child::draw:frame" /> +</xsl:template> +>>> + + + +\<remove nested text:p\><<< +<xsl:template match="text:p[ + child::text:p + and + (count(child::text:p) = count(child::*)) + ]" > + <!--xsl:copy> + <xsl:attribute name="text:style-name"> + <xsl:text>start_</xsl:text> + <xsl:value-of select="@text:style-name" /> + </xsl:attribute--> + <xsl:comment> + <xsl:text>start </xsl:text> + <xsl:value-of select=" @text:style-name " /> + </xsl:comment> + <!--/xsl:copy--> + <xsl:apply-templates select="*|text()|comment()" mode="nested-p" /> + <!--xsl:copy> + <xsl:attribute name="text:style-name"> + <xsl:text>end</xsl:text> + <xsl:value-of select="@text:style-name" /> + </xsl:attribute--> + <xsl:comment> + <xsl:text>end_</xsl:text> + <xsl:value-of select=" @text:style-name " /> + </xsl:comment> + <!--/xsl:copy--> +</xsl:template> +>>> + +\<remove nested text:p\><<< +<xsl:template match="*[not(text:p)]|text()|comment()" mode="nested-p" > + <xsl:copy/> +</xsl:template> +>>> + +\<remove nested text:p\><<< +<xsl:template match="text:p" mode="nested-p" > + <xsl:copy> + <xsl:attribute name="text:style-name"> + <xsl:value-of select="parent::text:p/@text:style-name" /> + <xsl:text>_</xsl:text> + <xsl:value-of select="@text:style-name" /> + <xsl:text>_</xsl:text> + <xsl:value-of select="child::*[1]/@text:style-name" /> + </xsl:attribute> + <xsl:apply-templates select="@*[ name() != 'text:style-name' ]" /> + <xsl:apply-templates select="*|text()|comment()" /> + </xsl:copy> +</xsl:template> +>>> + +\<remove nested text:p in biblatex\><<< +<xsl:template + match="text:p[ + parent::text:p/@text:style-name='printthebibliography-dd' + ]" + mode="nested-p" > + <xsl:copy> + <xsl:attribute name="text:style-name"> + <xsl:value-of select="'printthebibliography-dd'" /> + </xsl:attribute> + <xsl:apply-templates select="@*[ name() != 'text:style-name' ]" /> + <xsl:apply-templates select="*|text()|comment()" /> + </xsl:copy> +</xsl:template> +>>> + + + + + + + + + + + + +\<multicolumn styles\><<< +<xsl:template match="text:p[ child::text:span[ + starts-with(@text:style-name, 'multicolumn-') + ] ]" > + <xsl:copy> + <xsl:apply-templates + select="child::text:span[ + starts-with(@text:style-name, 'multicolumn-') ] + /@* + " /> + <xsl:apply-templates select="*|text()|comment()" /> + </xsl:copy> +</xsl:template> +<xsl:template match="text:span[ + starts-with(@text:style-name, 'multicolumn-') ]" /> +>>> + + +\<handle mixed content\><<< +System.out.println("handle mixed content " + name); + int i=0; + for( Node nd = first; nd != null; nd = nd.getNextSibling() ){ + nodeType = nd.getNodeType(); + `<trace mixed content`> + i++; + } +System.out.println("end handle mixed content " + name); +>>> + +\<text:p into text:section\><<< +System.out.println("text:p into text:section"); +>>> + + + + +\<trace mixed content\><<< +System.out.println( +i + " "+ ((Boolean)v.get(i)) ++ + +((nodeType == Node.TEXT_NODE)? + (" TEXT: " + nd.getNodeValue() ) + : +( +(nodeType == Node.ELEMENT_NODE)? + (" " + nd.getNodeName()) + : + "" +) +)); +>>>> + + + + + + + +%%%%%%%%%%%%%%%%%% +\section{Spaces for Headers} +%%%%%%%%%%%%%%%%%% + +\<spaces for headers\><<< +<set name="headers" > + `<open oo xslt script`> + `<algorithmic templates`> + `<biblatex bib templates`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="headers" /> +>>> + +\<algorithmic templates\><<< +<xsl:template match="text:h[@text:style-name='algorithmic-dt']" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select="*|text()|comment()" mode="algorithmic"/> + </xsl:copy> +</xsl:template> +>>> + + +\<algorithmic templates\><<< +<xsl:template match="*|@*|comment()" mode="algorithmic" > + <xsl:copy> + <xsl:apply-templates select="@*" /> + <xsl:apply-templates select="*|text()|comment()" mode="algorithmic"/> + </xsl:copy> +</xsl:template> +>>> + + + +\<algorithmic templates\><<< +<xsl:template match="text()" mode="algorithmic" > + <xsl:value-of select="translate(.,' ',' ')"/> +</xsl:template> +>>> + + +\<biblatex bib templates\><<< +<xsl:template match="text:h[ + (@text:style-name='printthebibliography-dt') + and + (normalize-space()='') +]" > +</xsl:template> +>>> + + +%%%%%%%%%%%%%%%%%% +\section{mo} +%%%%%%%%%%%%%%%%%% + +\<handle mo elements\><<< +<set name="math:mo" > + `<open mml xslt script`> + <xsl:template match=" math:mo" > + <xsl:choose> + `<xsl:when mo...`> + `<xsl:when mo length ...`> + <xsl:otherwise> + <math:mo> + <xsl:apply-templates select="@*" /> + <xsl:value-of select="normalize-space(.)" /> + </math:mo> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="math:mo" /> +>>> + + + + + +A translation of + +\begin{verbatim} + <math:mrow> + <math:mn>2</math:mn> + <math:mo>+</math:mo> + </math:mrow> +\end{verbatim} + +to + +\begin{verbatim} + <math:mrow> + <math:mn>2</math:mn> + <math:mo form="postfix">+</math:mo> + </math:mrow> +\end{verbatim} + +fails to satisfy OO. So the following alternative is offered + +\begin{verbatim} + <math:mrow> + <math:mn>2</math:mn> + <math:mtext>+</math:mtext> + </math:mrow> +\end{verbatim} + + +\<xsl:when mo...\><<< +<xsl:when test=" + (preceding-sibling::math:mn or preceding-sibling::math:mi) + and not(following-sibling::*) +" > + <math:mtext> + <xsl:apply-templates select="*|@*|text()" /> + </math:mtext> +</xsl:when> +>>> + + + + +Isolated mo elements are problematic (e.g., +\verb'<mtd><mo form="...">=</mo></mtd>') in OpenOffice +(\url{http://lists.w3.org/Archives/Public/www-math/2006Jul/0012.html}) +so they are converted into mtext elements. + + + + +\<xsl:when mo...\><<< +<xsl:when test=" + not((preceding-sibling::*) or following-sibling::*) +" > + <math:mtext> + <xsl:apply-templates select="*|@*|text()" /> + </math:mtext> +</xsl:when> +>>> + +The original condition + `not(preceding-sibling::* or following-sibling::*)' +failed with java 1.6 at a MS OS. + + +\begin{verbatim} +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xlink="http://www.w3.org/1999/xlink" + > + <xsl:output omit-xml-declaration = "yes" /> +<xsl:template match="mo" > + <xsl:choose> + <xsl:when test="preceding-sibling::* or following-sibling::*" > + </xsl:when> + </xsl:choose> +</xsl:template> +</xsl:stylesheet> + + +import java.io.*; +import javax.xml.transform.*; +import javax.xml.transform.stream.*; + +public class Test { + public static void main(String[] args) + throws TransformerConfigurationException, + TransformerException { + try{ + StreamSource xslt = new StreamSource(new File("test.xslt")); + TransformerFactory fc = TransformerFactory.newInstance(); + Transformer transformer = fc.newTransformer( xslt ); + } catch (javax.xml.transform.TransformerConfigurationException e){ + + } catch (Exception e){ + System.err.println(e); +} } } +\end{verbatim} + + + + +Failes on braces within mo elements \verb+<math:mo>{</math:mo>+. +Accepts them within mtext elements. + + +\<xsl:when mo...\><<< +<xsl:when test=" + (.='{') or (.='}') +" > + <math:mtext> + <xsl:apply-templates select="*|@*|text()" /> + </math:mtext> +</xsl:when> +>>> + + + +\begin{verbatim} +A \begin{eqnarray}a&=&b\end{eqnarray} is translated by tex4ht into + + <mi>a</mi><mo>=</mo><mi>b</mi> + +and is loaded as + + matrix {a # = # b} + +by OO2 into a broken display. The xtpipe phase `fixes' the problem by +producing improper mathml output + + <mi>a</mi><mtext>=</mtext><mi>b</mi> + +which OO2 loads as + + matrix {a # "=" # b} + +and provides proper display. +\end{verbatim} + + + + + +\<xsl:when mo...\><<< +<xsl:when test=" . = '='" > + <xsl:choose> + <xsl:when test=" not(preceding-sibling::*) + or not(following-sibling::*) + or preceding-sibling::*[1] / self::math:mo + "> + <math:mtext> + <xsl:apply-templates select="*|@*|text()" /> + </math:mtext> + </xsl:when> + <xsl:otherwise> + <math:mo> + <xsl:apply-templates select="*|@*|text()" /> + </math:mo> + </xsl:otherwise> + </xsl:choose> + +</xsl:when> +>>> + + + + +In cases like \verb!$m \bmod n$!, OpenOffice swallos the characters following the first one. + +\<xsl:when mo length ...\><<< +<xsl:when test=" string-length() > 1 " > + <math:mtext> + <xsl:value-of select="normalize-space(.)" /> + </math:mtext> +</xsl:when> +>>> + + +%%%%%%%%%%%%%%%%%% +\section{mrow} +%%%%%%%%%%%%%%%%%% + + + +OpenOffice 2 loads + +\begin{verbatim} +<math:msub> + <math:mrow> + <math:mi>x</math:mi> + </math:mrow> + <math:mrow> + <math:msub> + <math:mrow> + <math:mi>i</math:mi> + </math:mrow> + <math:mrow> + <math:mi>j</math:mi> + </math:mrow> + </math:msub> + </math:mrow> + </math:msub> +\end{verbatim} + +and + +\begin{verbatim} + <math:msub> + <math:mi>x</math:mi> + <math:msub> + <math:mi>i</math:mi> + <math:mi>j</math:mi> + </math:msub> + </math:msub> +\end{verbatim} + +into \verb'x_i_j' which is a broken expression. Editing in OpenOffice the source +into +\verb'x_{i_j}' +or +\verb'{x}_{{i}_{j}}' + + + + + + + + +\<handle mrow elements NO\><<< +<set name="math:mrow" > + `<open mml xslt script`> + `<math:mrow templates`> + `<close xslt script`> +</set> +<xslt name="." xml="." xsl="math:mrow" /> +>>> + + + + + +\<math:mrow templates\><<< +<xsl:template match=" math:mrow[ count(child::*)=1 ]" > + <xsl:apply-templates select="*|@*|text()" /> +</xsl:template> +>>> + + +\begin{verbatim} +The output of tex4ht on $x_{i_j}$ is + + <math:msub> + <math:mrow> + <math:mi>x</math:mi> + </math:mrow> + <math:mrow> + <math:msub> + <math:mrow> + <math:mi>i</math:mi> + </math:mrow> + <math:mrow> + <math:mi>j</math:mi> + </math:mrow> + </math:msub> + </math:mrow> + </math:msub> + +and OO2 loads the code into a broken format and view x_i_j. The same +outcome occurs when tex4ht is modified to produce the following output. + + <math:msub> + <math:mi>x</math:mi> + <math:msub> + <math:mi>i</math:mi> + <math:mi>j</math:mi> + </math:msub> + </math:msub> + +A manual editing of x_i_j into {x}_{{i}_{j}} or x_{i_j} provides the +proper display (and identical mathml code). +\end{verbatim} + + +%%%%%%%%%%%%%%%%%% +\section{Dimenstions of Math Tables} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Background} +%%%%%%%%%%%%% + + + + + +All columns explicitly require identical number of columns. + +Broken: + +\begin{verbatim} +<math:mtable > + <math:mtr> + <math:mtd columnalign="left"><math:mn>1</math:mn></math:mtd> + <math:mtd columnalign="left"><math:mn>2</math:mn></math:mtd> + </math:mtr> + <math:mtr> + <math:mtd columnalign="left"><math:mn>1</math:mn></math:mtd> + </math:mtr> +</math:mtable> +\end{verbatim} + +Works: + +\begin{verbatim} +<math:mtable > + <math:mtr> + <math:mtd columnalign="left"><math:mn>1</math:mn></math:mtd> + <math:mtd columnalign="left"><math:mn>2</math:mn></math:mtd> + </math:mtr> + <math:mtr> + <math:mtd columnalign="left"><math:mn>1</math:mn></math:mtd> + <math:mtd columnalign="left"></math:mtd> + </math:mtr> +</math:mtable> +\end{verbatim} + + +The last \verb+\\+ produces extra line with single entry and no data. + +\begin{verbatim} +$ +\begin{cases} + 1 & 2\\ + 3 & 4\\ +\end{cases} +$ +\end{verbatim} + +Singlton mspace breaks math tables: + +\begin{verbatim} +<math:mtable> + <math:mtr> + <math:mtd><math:mn>1</math:mn></math:mtd> + <math:mtd><math:mspace width="1em"/></math:mtd> + </math:mtr> +</math:mtable> +\end{verbatim} + +%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%% + +\<normalizing math tables\><<< +<dom name="." xml="." method="mtable" class="tex4ht.OoUtilities" /> +>>> + + +\<static void mtable(dom)\><<< +public static void mtable(Node dom) { + Node mtr, mtd, d; + int cols = 0; + Node node = dom.getFirstChild(); + `<remove trailing non-content entries`> + `<fill rows`> +} +>>> + + + + + + + +%%%%%%%%%%%%% +\subsection{Remove Trailing Entries} +%%%%%%%%%%%%% + +\<remove trailing non-content entries\><<< +if (node.hasChildNodes()) { + mtr = node.getLastChild(); + while( mtr != null){ + if( mtr.getNodeType() == Node.ELEMENT_NODE ){ + if (mtr.hasChildNodes()) { + mtd = mtr.getLastChild(); + int count = 0; + while( mtd != null){ + if( mtd.getNodeType() == Node.ELEMENT_NODE ){ + count++; + d = mtd.getFirstChild(); + if( d != null ){ + `<remove mspace-only content`> + } + if( d != null ){ + `<remove d, if white space text`> + } } + d = mtd; + mtd = mtd.getPreviousSibling(); + `<remove d, if white space text`> + if( (d != null) + && (d.getNodeType() == Node.ELEMENT_NODE) ){ + `<remove d, if trailing and childless node`> + if( d == null ){ count--; } + } } + if( count > cols ){ cols = count; } + } } + d = mtr; + mtr = mtr.getPreviousSibling(); + `<remove d, if white space text`> + if( d != null ){ + `<remove d, if trailing and childless node`> +} } } +>>> + + +\<remove d, if white space text\><<< +if( + (d.getNodeType() == Node.TEXT_NODE) + && d.getNodeValue().trim().equals("") +){ + d.getParentNode().removeChild(d); + d = null; +} +>>> + +\<remove d, if trailing and childless node\><<< +if( (d.getNextSibling()==null) + && (d.getFirstChild()==null) ){ + d.getParentNode().removeChild(d); + d = null; +} +>>> + + + + + +%%%%%%%%%%%%% +\subsection{Fill Rows} +%%%%%%%%%%%%% + + + + + +\<fill rows\><<< +if (node.hasChildNodes()) { + mtr = node.getFirstChild(); + while( mtr != null){ + if( mtr.getNodeType() == Node.ELEMENT_NODE ){ + int count = 0; + if (mtr.hasChildNodes()) { + mtd = mtr.getFirstChild(); + while( mtd != null){ + if( mtd.getNodeType() == Node.ELEMENT_NODE ){ + `<insert new line text node`> + count++; + } + mtd = mtd.getNextSibling(); + } + } + if( count < cols ){ + `<fill with empty mtd nodes`> + } } + mtr = mtr.getNextSibling(); +} } +>>> + +\<fill with empty mtd nodes\><<< +for(int i = count; i < cols; i++){ + mtr.appendChild( ((Document) dom).createElement("math:mtd") ); +} +>>> + +\<insert new line text node\><<< +mtr.insertBefore( ((Document) dom).createTextNode("\n"), mtd ); +>>> + + +%%%%%%%%%%%%% +\subsection{mspace} +%%%%%%%%%%%%% + + +\<remove mspace-only content\><<< +boolean remove = true; +for(Node i=d; i!=null; i=i.getNextSibling() ){ + if( (i.getNodeType() == Node.ELEMENT_NODE) + && !i.getNodeName().equals("math:mspace") ) { + remove = false; break; +} } +if( remove ){ + while( d != null ){ + mtd.removeChild(d); + d = mtd.getFirstChild(); +} } +>>> + +%%%%%%%%%%%%%%%%%% +\section{Shared} +%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%% +\subsection{XSLT Setup} +%%%%%%%%%%%%% + + + + + +\<open oo xslt script\><<< +<![CDATA[ + <xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + + xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" + xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" + xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" + xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" + xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" + xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" + xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" + xmlns:math="http://www.w3.org/1998/Math/MathML" + xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" + xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" + xmlns:ooo="http://openoffice.org/2004/office" + xmlns:ooow="http://openoffice.org/2004/writer" + xmlns:oooc="http://openoffice.org/2004/calc" + xmlns:dom="http://www.w3.org/2001/xml-events" + xmlns:xforms="http://www.w3.org/2002/xforms" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + > + <xsl:output omit-xml-declaration = "yes" /> +>>> + + + +\<open mml xslt script\><<< +<![CDATA[ + <xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:math="http://www.w3.org/1998/Math/MathML" + xmlns:xlink="http://www.w3.org/1999/xlink" + > + <xsl:output omit-xml-declaration = "yes" /> +>>> + + +\<close xslt script\><<< + <xsl:template match="*|@*|text()|comment()" > + <xsl:copy> + <xsl:apply-templates select="*|@*|text()|comment()" /> + </xsl:copy> + </xsl:template> + </xsl:stylesheet> +]]> +>>> + + + + +%%%%%%%%%%%%% +\subsection{Text Namespaces} +%%%%%%%%%%%%% + + +\<bind text namespace prefixes in the root elementNO\><<< +((Element) node).setAttribute( + "xmlns:office", + "urn:oasis:names:tc:opendocument:xmlns:office:1.0" +); +((Element) node).setAttribute( + "xmlns:style", + "urn:oasis:names:tc:opendocument:xmlns:style:1.0" +); +((Element) node).setAttribute( + "xmlns:text", + "urn:oasis:names:tc:opendocument:xmlns:text:1.0" +); +((Element) node).setAttribute( + "xmlns:table", + "urn:oasis:names:tc:opendocument:xmlns:table:1.0" +); +((Element) node).setAttribute( + "xmlns:draw", + "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" +); +((Element) node).setAttribute( + "xmlns:fo", + "http://www.w3.org/1999/XSL/Format" +); +((Element) node).setAttribute( + "xmlns:xlink", + "http://www.w3.org/1999/xlink" +); +((Element) node).setAttribute( + "xmlns:dc", + "http://purl.org/dc/elements/1.1/" +); +((Element) node).setAttribute( + "xmlns:meta", + "urn:oasis:names:tc:opendocument:xmlns:meta:1.0" +); +((Element) node).setAttribute( + "xmlns:number", + "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" +); +((Element) node).setAttribute( + "xmlns:svg", + "http://www.w3.org/2000/svg" +); +((Element) node).setAttribute( + "xmlns:chart", + "urn:oasis:names:tc:opendocument:xmlns:chart:1.0" +); +((Element) node).setAttribute( + "xmlns:dr3d", + "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" +); +((Element) node).setAttribute( + "xmlns:math", + "http://www.w3.org/1998/Math/MathML" +); +((Element) node).setAttribute( + "xmlns:form", + "urn:oasis:names:tc:opendocument:xmlns:form:1.0" +); +((Element) node).setAttribute( + "xmlns:script", + "urn:oasis:names:tc:opendocument:xmlns:script:1.0" +); +((Element) node).setAttribute( + "xmlns:ooo", + "http://openoffice.org/2004/office" +); +((Element) node).setAttribute( + "xmlns:ooow", + "http://openoffice.org/2004/writer" +); +((Element) node).setAttribute( + "xmlns:oooc", + "http://openoffice.org/2004/calc" +); +((Element) node).setAttribute( + "xmlns:dom", + "http://www.w3.org/2001/xml-events" +); +((Element) node).setAttribute( + "xmlns:xforms", + "http://www.w3.org/2002/xforms" +); +((Element) node).setAttribute( + "xmlns:xsd", + "http://www.w3.org/2001/XMLSchema" +); +((Element) node).setAttribute( + "xmlns:xsi", + "http://www.w3.org/2001/XMLSchema-instance" +); +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Unicode in mtex} +%%%%%%%%%%%%%%%%%% + +Openoffice dies on non-breaking space characters \verb+ + within +mtext. + + +\begin{verbatim} +\documentclass{amsart} +\begin{document} + $\text{ the number of spanning trees of }$ +\end{document} +\end{verbatim} + + + +\AtEndDocument{\OutputCodE\<OomFilter.java\>} + +\ifdojava + \Needs{" + javac OomFilter.java -d \XTPIPES +"} +\fi + +\<OomFilter.java\><<< +package tex4ht; +/* OomFilter.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2002. Eitan M. Gurari +`<TeX4ht copyright`> */ + +import org.xml.sax.helpers.*; +import org.xml.sax.*; +import java.io.PrintWriter; + +public class OomFilter extends XMLFilterImpl { + PrintWriter out = null; + boolean mtext = false; + public OomFilter( PrintWriter out, + PrintWriter log, boolean trace ){ + this.out = out; + } + public void startElement(String ns, String sName, + String qName, Attributes attr) { + if( qName.equals( "math:mtext" ) ){ mtext = true; } + try{ + super.startElement(ns, sName, qName, attr); + } catch( Exception e ){ + System.err.println( "--- OomFilter Error 1 --- " + e); + } + } + public void endElement(String ns, String sName, String qName){ + if( qName.equals( "math:mtext" ) ){ mtext = false; } + try{ + super.endElement(ns, sName, qName); + } catch( Exception e ){ + System.err.println( "--- OomFilter Error 2 --- " + e); + } } + public void characters(char[] ch, int start, int length){ + try{ + if ( mtext ) { + for(int i = start; i<start+length; i++){ + if( ch[i] == 160 ){ ch[i] = ' '; } + } } + super.characters(ch, start, length); + } catch( Exception e ){ + System.out.println( "--- OomFilter Error 3 --- " + e); +} } } +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{OoFilter} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%% + + +\AtEndDocument{\OutputCodE\<OoFilter.java\>} + +\ifdojava + \Needs{" + javac OoFilter.java -d \XTPIPES +"} +\fi + +\<OoFilter.java\><<< +package tex4ht; +/* OoFilter.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2002. Eitan M. Gurari +`<TeX4ht copyright`> */ +`<OoFilter imports`> +public class OoFilter extends XMLFilterImpl { + PrintWriter out = null; + public OoFilter( PrintWriter out, + PrintWriter log, boolean trace ){ + this.out = out; + } + public void startElement(String ns, String sName, + String qName, Attributes attr) { + if( qName.equals( "draw:frame" ) ){ + `<set dimensions of figures`> + } + try{ + super.startElement(ns, sName, qName, attr); + } catch( Exception e ){ + System.err.println( "--- OoFilter Error 1 --- " + e); + } } + public void processingInstruction(String target, String fileName) { + if( target.equals("tex4ht-lg") ){ + fileName = fileName.trim(); + if( fileName.replaceAll(" ","").startsWith("file=") ){ + `<load font vars`> + `<load font styles`> + } } } +} +>>> + + + +%%%%%%%%%%%%% +\subsection{Dimensions for Figures} +%%%%%%%%%%%%% + +\<set dimensions of figures\><<< +String name = attr.getValue("draw:name"); +if( (name != null) + && (attr.getValue("svg:width") == null) + && (attr.getValue("svg:height") == null) +){ + java.awt.Image image = new javax.swing.ImageIcon(name).getImage(); + int width = image.getWidth(null); + int height = image.getHeight(null); + if( (width>0) && (height>0) ){ + org.xml.sax.helpers.AttributesImpl attrs = + new org.xml.sax.helpers.AttributesImpl( attr ); + attrs.addAttribute(null, "svg:width", "svg:width", + "String", (width * 72 / 110) + "pt"); + attrs.addAttribute(null, "svg:width", "svg:height", + "String", (height * 72 / 110) + "pt"); + attr = attrs; +} } +>>> + + +%%%%%%%%%%%%% +\subsection{Font Styles} +%%%%%%%%%%%%% + + + + +\<load font styles\><<< +int length = fileName.length(); +int loc = fileName.indexOf(fileName.charAt(length-1)); +fileName = fileName.substring(loc+1,length-1); +try{ + String s = ""; + FileReader fr = new FileReader( fileName ); + BufferedReader in = new BufferedReader( fr ); + `<htfcss from lg`> + `<rewind lg file`> `<font=(...) from lg`> + `<rewind lg file`> `<Font-css-base: ...`> + `<rewind lg file`> `<process Font-Size: ...`> + `<rewind lg file`> `<process Font(...)`> +} catch(Exception e){ + System.err.println( "--- OoFilter Error 2 --- " + e); +} +>>> + +\<rewind lg file\><<< +in.close(); +fr = new FileReader( fileName ); +in = new BufferedReader( fr ); +>>> + + + + + + + + +\<htfcss from lg\><<< +try{ + String key = "", body = ""; + while( (s=in.readLine()) != null ){ + if( s.startsWith("htfcss: ") ){ + s = s.substring(8); + int idx = s.indexOf(' '); + if( idx == 0 ){ + body += s; + } else { + `<map += (key, body)`> + if( idx == -1 ){ + key = s; body = ""; + } else { + key = s.substring(0,idx); + body = s.substring(idx); + } } } } + `<map += (key, body)`> +} catch(java.lang.NumberFormatException e){ + System.err.println( "--- OoFilter Error 3 --- Improper record: " + s); +} +>>> + + + + +\<map += (key, body)\><<< +body = body.trim(); +if( body.startsWith( "@media " ) ){ + body = body.substring(7).trim(); + if( body.startsWith("print ") ){ + body = body.substring(6).trim(); + } else { key = ""; } +} +if( !key.equals("") ){ + String [] property = body.split(";"); + for( int i=0; i<property.length; i++ ){ + if( !property[i].trim().equals("") ){ + int indx = property[i].indexOf(":"); + if( indx != -1 ){ + String name = property[i].substring(0,indx).trim(); + String value = (property[i]+' ').substring(indx+1).trim(); + if( !name.equals("") && !value.equals("") ){ + `<map[key] += (name,value)`> +} } } } } +>>> + + +\<map[key] += (name,value)\><<< +if( map.containsKey(key) ){ + HashMap <String,String> entry = map.get(key); + entry.put(name,value); +} +else +{ + HashMap <String,String> entry = new HashMap <String,String>(); + entry.put(name,value); + map.put(key,entry); +} +>>> + + +\<load font vars\><<< +HashMap <String,HashMap <String,String>> map + = new HashMap<String,HashMap <String,String>>(); +>>> + + + + + + + +\<Font-css-base: ...\><<< +try{ + while( (s=in.readLine()) != null ){ + if( s.startsWith("Font_css_base: ") ){ + int idx = s.indexOf("Font_css_mag: "); + if( idx != -1 ){ + String [] pattern = s.substring(15,idx).trim().split("%s"); + if( pattern.length == 3 ){ font_css_base = pattern; } + pattern = (s+' ').substring(idx).trim().split("%s"); + if( pattern.length == 2 ){ font_css_mag = pattern; } + } } } +} catch(Exception e){ + System.err.println( "--- OoFilter Error 4 --- Improper record: " + s); +} +>>> + + + + +\<process Font-Size: ...\><<< +try{ + while( (s=in.readLine()) != null ){ + if( s.startsWith("Font_Size:") ){ + base_font_size = Integer.parseInt( s.substring(10).trim() ); + } } +} catch(java.lang.NumberFormatException e){ + System.err.println( "--- OoFilter Error 5 --- Improper record: " + s); +} +>>> + +\<process Font(...)\><<< +try{ + while( (s=in.readLine()) != null ){ + if( s.startsWith("Font(") ){ + String [] match = s.split("\""); + match[1] = match[1].trim(); + match[2] = match[3].trim(); + match[3] = match[5].trim(); + match[4] = match[7].trim(); + `<get font size`> + `<get font style`> + } } +} catch(Exception e){ + System.err.println( "--- OoFilter Error 6 --- Improper record: " + s); +} +>>> + + + + +\<get font style\><<< +HashMap <String,String> entry = map.get(match[1]); +if( (entry != null) || (second < 98) || (second > 102) ){ + String styleName = font_css_base[0] + match[1] + + font_css_base[1] + match[2] + + font_css_base[2]; + if( !match[4].equals("100") ){ + styleName += font_css_mag[0] + match[4] + font_css_mag[1]; + } + `<attr[style:style] := ...`> + super.startElement(null, "style:style", "style:style", attr); + `<attr[style:text-properties] := ...`> + super.startElement(null, "style:text-properties", + "style:text-properties", attr); + super.endElement(null, "style:text-properties", + "style:text-properties"); + super.endElement(null, "style:style", "style:style"); +} +>>> + + +\<attr[style:style] := ...\><<< +org.xml.sax.helpers.AttributesImpl attr = + new org.xml.sax.helpers.AttributesImpl(); +attr.addAttribute("", "style:name", "style:name", "String", styleName); +attr.addAttribute("", "style:family", "style:family", "String", "text"); +>>> + +\<attr[style:text-properties] := ...\><<< +attr = new org.xml.sax.helpers.AttributesImpl(); +if( entry != null ){ + Object [] name = entry.keySet().toArray(); + for(int i=0; i < name.length; i++){ + String value = entry.get(name[i]); + attr.addAttribute("", "fo:" + (String) name[i], + "fo:" + (String) name[i], + "String", value); +} } +if( (second < 98) || (second > 102) ){ + attr.addAttribute("", "fo:font-size", "fo:font-size", + "String", (second / 10.0) + "pt"); +} +>>> + + +% style:font-family-generic=\"swiss\" +% style:font-pitch=\"variable\" + +\<load font vars\><<< +String [] font_css_base = {"" , "-", ""}; +String [] font_css_mag = {"x-x-", ""}; +>>> + + +\<print font style css\><<< +(IGNORED) fprintf(css_file, + (Font_css_base == NULL)? ".%s-%s" : Font_css_base, + match[1], match[2]); +if( !eq_str(match[4],"100") ){ + (IGNORED) fprintf(css_file, + (Font_css_mag == NULL)? "x-x-%s" : Font_css_mag, + match[4]); +} +(IGNORED) fprintf(css_file, "{"); +if( (second < 98) || (second > 102) ){ + (IGNORED) fprintf(css_file, "font-size:%d%c;", second, '%'); +} +if( font_sty ) { + (IGNORED) fprintf(css_file, font_sty->body); +} +(IGNORED) fprintf(css_file, "}\n"); +>>> + + + + + +\<get font size\><<< +{ + if( match[3].replaceAll("[0-9]","").equals("") ){ + second = (int) + ( Integer.parseInt( match[3] ) + * Long.parseLong( match[4] ) + / base_font_size + ); + while( second > 700 ){ second /= 10; } + } else { second = 100; } + `<inspect font-size argument`> +} +>>> + +The following case handles cases like that of +`\verb'Font("ecti","1095","10","100")'', where +\verb=base_font_size= is 11. + +\<inspect font-size argument\><<< +if( (int) ( Double.parseDouble(match[2]) + / Long.parseLong(match[4]) + + 0.5 + ) + == base_font_size +){ + second = 100; +}; +>>> + + + +\<load font vars\><<< +int base_font_size = 10; +int second; +>>> + + +\<OoFilter imports\><<< +import java.util.*; +import org.xml.sax.helpers.*; +import org.xml.sax.*; +import java.io.PrintWriter; +import java.io.BufferedReader; +import java.io.FileReader; +>>> + + +\ifdojava +\AtEndDocument{\Needs{% + "pushd \XTPIPES || exit 1 + ; + jar cf tex4ht.jar * + ; + popd + ; + mv \XTPIPES tex4ht.jar \TEXMFTEXivBIN + ; + if [ ! -d \TEXMFTEXivXTPIPES\space]; then exit 1; fi + ; + cp \XTPIPES xtpipes/lib/* + \TEXMFTEXivXTPIPES +"}} +\fi + +\end{document} diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-ooffice.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-ooffice.tex new file mode 100644 index 00000000000..5a8a69ec0b2 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-ooffice.tex @@ -0,0 +1,12270 @@ +% $Id: tex4ht-ooffice.tex 904 2021-04-16 20:30:30Z karl $ +% compile 3 times: latex tex4ht-ooffice +% htlatex tex4ht-ooffice "xhtml,4,sections+" +% +% Copyright 2009-2021 TeX Users Group +% Copyright 2001-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{ooffice,ooffice-mml} + \def\PREAMBLE{% + \usepackage{url}% + \usepackage{hyperref}% + } + \def\OPTIONS{html,sections+,3}% + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari, + James Naughton, and Maarten Wisse}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + + +\input{common} +\input{tex4ht-cpright} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{The Code} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The Root} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Imported Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice tex4ht\><<< +\if:latex |<Hinclude latex|> +\else |<Hinclude plain|> \fi +>>> + + +\<configure ooffice plain\><<< +|<Hinclude plain lib|> +|<Hinclude plain + latex lib|> +|<plain accents|> +|<plain page dimensions|> +|<plain aligned lines|> +>>> + +\<configure ooffice latex\><<< +|<Hinclude latex lib|> +|<Hinclude plain + latex lib|> +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Common Code Fragments} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<par del\><<< +!*?: >>> + +\<tag of Tag\><<< + cw:>>> + +\<tail\><<< +tail>>> + +\<addr for Tag and Ref of Sec\><<< +\xdef\:cursec{|<section html addr|>}% +>>> + +\<utilities\><<< +\newif\ifHCond +\def\:gobbleM#1->{} +>>> + + +\<try env inline par\><<< +\ShowPar +>>> + +\<try inline par\><<< +\ShowPar\par{\HCondtrue\noindent}% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%% +\subsection{Copyright} +%%%%%%%%%%%%%%%%%%%%%% + +\<ooffice\><<< +% ooffice.4ht (|version), generated from |jobname.tex +|<copy right notice|> >>> + +\<ooffice-math\><<< +% ooffice-math.4ht (|version), generated from |jobname.tex +|<copy right notice|> >>> + + +\<ooffice-mml\><<< +% ooffice-mml.4ht (|version), generated from |jobname.tex +|<copy right notice|> >>> + + +\<copy right notice\><<< +% Copyright 2009-2021 TeX Users Group +% Copyright |CopyYear.2001. Maarten Wisse, James Naughton, Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +\<configure ooffice tex4ht\><<< +|<utilities|> +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%% +\section{The XML Files} +%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%% +\subsection{content.xml (= jobname.xml)} +%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice-mml tex4ht\><<< +\Configure{math-xmlns} + { + xmlns="http://www.w3.org/1998/Math/MathML"\Hnewline + xmlns:xlink="http://www.w3.org/1999/xlink" + } +>>> + +\<configure ooffice-mml Preamble\><<< +\Configure{mathml}{} +>>> + +\<configure ooffice Preamble\><<< +\Configure{ext}{4oo} +\Configure{PROLOG}{VERSION,DOCTYPE} +|<od definitions|> +\def\oo:dtd:ver{2.0} +>>> + +The DOCTYPE can actually make the ODT file invalid. Just insert xtpipes instruction. + +\<configure ooffice tex4ht\><<< +\Configure{VERSION}{\HCode{|<VERSION|>}} +\:CheckOption{-xtpipes} \if:Option + \Configure{DOCTYPE}{} +\else + \Configure{DOCTYPE}{\HCode{<?xtpipes file="oo-text.4xt" ?>\Hnewline}} +\fi +>>> + +\<configure ooffice tex4ht\><<< + |<oo2 tex4ht|> +>>> + +\<oo2 tex4ht\><<< + {\Configure{Needs}{File: \jobname.odt}\Needs{}} + \Configure{HTML} + {\HCode{<office:document-content \Hnewline + |<xml name spaces 2.0|>% + office:version="1.0" + >\Hnewline + <office:automatic-styles> + <?tex4ht-lg file="\jobname.lg" ?> + \expandafter\ifx\csname a:automatic-styles\endcsname\relax \else + \csname a:automatic-styles\endcsname + \fi \Hnewline + </office:automatic-styles> + }} + {\EndP\HCode{</office:document-content>}\Configure{newpage}{}} +\NewConfigure{automatic-styles}[1]{% + \expandafter\concat:config\csname a:automatic-styles\endcsname{#1}} +\expandafter\let\csname a:automatic-styles\endcsname\relax +|<oo2 automatic styles|> +>>> + + + + + + + + +\<configure ooffice tex4ht\><<< +\Configure{HEAD}{}{} +>>> + + + +\<oo2 tex4ht\><<< +\Configure{BODY} + {\HCode{<office:body><office:text>}\par\ShowPar} + {\IgnorePar\EndP + \HCode{</office:text></office:body>\Hnewline}} +>>> + + + +\<xml name spaces 1.0\><<< +xmlns:chart="http://openoffice.org/2000/chart" \Hnewline +xmlns:dr3d="http://openoffice.org/2000/dr3d" \Hnewline +xmlns:draw="http://openoffice.org/2000/drawing" \Hnewline +xmlns:form="http://openoffice.org/2000/form" \Hnewline +xmlns:number="http://openoffice.org/2000/datastyle" \Hnewline +xmlns:office="http://openoffice.org/2000/office" \Hnewline +xmlns:script="http://openoffice.org/2000/script" \Hnewline +xmlns:style="http://openoffice.org/2000/style" \Hnewline +xmlns:table="http://openoffice.org/2000/table" \Hnewline +xmlns:text="http://openoffice.org/2000/text" \Hnewline +xmlns:fo="http://www.w3.org/1999/XSL/Format" \Hnewline +xmlns:math="http://www.w3.org/1998/Math/MathML" \Hnewline +xmlns:svg="http://www.w3.org/2000/svg" \Hnewline +xmlns:xlink="http://www.w3.org/1999/xlink" \Hnewline +>>> + + +\<xml name spaces 2.0\><<< +xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" \Hnewline +xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" \Hnewline +xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" \Hnewline +xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" \Hnewline +xmlns:fo="http://www.w3.org/1999/XSL/Format" \Hnewline +xmlns:xlink="http://www.w3.org/1999/xlink" \Hnewline +xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" \Hnewline +xmlns:dc="http://purl.org/dc/elements/1.1/" \Hnewline +xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" \Hnewline +xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"\Hnewline +xmlns:svg="http://www.w3.org/2000/svg" \Hnewline +xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" \Hnewline +xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" \Hnewline +xmlns:math="http://www.w3.org/1998/Math/MathML" \Hnewline +xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" \Hnewline +xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" \Hnewline +xmlns:ooo="http://openoffice.org/2004/office" \Hnewline +xmlns:ooow="http://openoffice.org/2004/writer" \Hnewline +xmlns:oooc="http://openoffice.org/2004/calc" \Hnewline +xmlns:dom="http://www.w3.org/2001/xml-events" \Hnewline +xmlns:xforms="http://www.w3.org/2002/xforms" \Hnewline +xmlns:xsd="http://www.w3.org/2001/XMLSchema" \Hnewline +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \Hnewline +xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" \Hnewline +xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"\Hnewline +xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"\Hnewline +>>> + + +\<xml styles name spaces 2.0\><<< +xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"\Hnewline +xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" \Hnewline +xmlns:dc="http://purl.org/dc/elements/1.1/" \Hnewline +xmlns:dom="http://www.w3.org/2001/xml-events" \Hnewline +xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" \Hnewline +xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" \Hnewline +xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"\Hnewline +xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" \Hnewline +xmlns:math="http://www.w3.org/1998/Math/MathML" \Hnewline +xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" \Hnewline +xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" \Hnewline +xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"\Hnewline +xmlns:ooo="http://openoffice.org/2004/office" \Hnewline +xmlns:oooc="http://openoffice.org/2004/calc" \Hnewline +xmlns:ooow="http://openoffice.org/2004/writer" \Hnewline +xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"\Hnewline +xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" \Hnewline +xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"\Hnewline +xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" \Hnewline +xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"\Hnewline +xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" \Hnewline +xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"\Hnewline +xmlns:xlink="http://www.w3.org/1999/xlink"\Hnewline +>>> + +\<VERSION\><<< +<?xml version="1.0" encoding="UTF-8"?>\Hnewline +>>> + +\<DOCTYPE\><<< +>>> + + +\<dtd lang\><<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi +>>> + + +\<configure ooffice Preamble\><<< +\let\Css=\:gobble +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{styles.xml (jobname-styles.xml)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +The contents.xml file can contain only styles that are known ahead of +time, before starting the processing of the content. + +The styles.xml file allows us + +\begin{enumerate} +\item To collect styles as we go along the body of the document, and +\item Introduce default built in styles that user may override +\end{enumerate} + + + +The content.xml must get the style information at the start of the +compilation, before the body is processed. + + + +\verb+\OOstyles+ immediatey sends it content to the styles.xml +file. In the case of \verb+\ConfigureOO+, the last assignment to the +hook is sent to the file upon reaching the end of the source. + + +\<utilities\><<< +\let\:OOstyles=\empty +\def\OOstyles#1{\edef\:OOstyles{\:OOstyles #1}} +\OOstyles{|<oo2 styles.xml|>} +>>> + +\<switch to main body OOstlyles\><<< +\def\OOstyles##1{% +\ht:special{t4ht>|<styles file name|>}% + \ht:special{t4ht=##1}% + \ht:special{t4ht*>}% +} +\OOstyles{\:OOstyles} +\ht:special{t4ht*>|<styles file name|>}% +\let\:OOstyles=\:UnDef +>>> + +\<styles file name\><<< +\jobname-styles.4oy>>> + + + + + + +\<oo2 styles at /@BODY\><<< +\OOstyles{% + \oo:style + </office:styles>\Hnewline + <office:automatic-styles> + |<styles.xml: automatic-styles|>\Hnewline + </office:automatic-styles> + <office:master-styles>\Hnewline + |<styles.xml: master-styles|>\Hnewline + </office:master-styles>\Hnewline + </office:document-styles>\Hnewline +}% +>>> + + + + + +\<oo2 styles.xml\><<< +|<VERSION|>% +<office:document-styles \Hnewline + |<xml styles name spaces 2.0|>\Hnewline + office:version="1.0">\Hnewline + <office:font-face-decls> + |<oo2 fonts|>% + </office:font-face-decls> + <office:styles>\Hnewline +>>> + + + + + +[\HPage{dirty trick for fonts} +\begin{verbatim} +\OOstyles{% + </office:styles> + <office:font-face-decls> + <style:font-face + style:name="Palatino Linotype" + svg:font-family="'Palatino Linotype'" + style:font-family-generic="roman" + style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:style style:name="grmn-1000" style:family="text"> + <style:text-properties style:font-name="Palatino Linotype"/> + </style:style> +} +\end{verbatim} + +\EndHPage{}] + +\<utilities\><<< +\let\oo:style=\empty +\def\NewConfigureOO#1{% + \expandafter\ifx \csname c:#1:oo:style:\endcsname\relax + \append:def\oo:style{\csname a:#1:oo:style\endcsname}% + \:CheckOption{info}\if:Option + \Log:Note{\string\NewConfigureOO{#1}}% + \fi + \fi + \NewConfigure{#1:oo:style}{1}} +\def\ConfigureOO#1#2{% + \edef\:temp{\noexpand\Configure{#1:oo:style}{#2}}\:temp + \:CheckOption{info-oo}\if:Option + \Log:Note{\string\ConfigureOO{#1}{% + \expandafter\expandafter\expandafter\:gobbleM + \expandafter\meaning\csname a:#1:oo:style\endcsname + }} + \fi +} +>>> + +\<utilities\><<< +\:CheckOption{info}\if:Option + \Log:Note{For tracing of oo configurations, + use the `info-oo' option}% +\fi +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{helper commands for easier style setting} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +Styles for \verb|\paragraph| like configurations + +Define paragraph style + +\<utilities\><<< +\def\:ParagraphStyle#1{% +\NewConfigureOO{#1}% +\ConfigureOO{#1}{% +<style:style style:name="#1" + style:family="paragraph" + style:parent-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:margin-top="0.5cm" /> +</style:style> +} +} +>>> + +Configure paragraph command (first argument). The paragraph title will be set +in the character style passed as the second argument. + + +\<utilities\><<< +\def\:DefineParagraph#1#2{% +\Configure{#1} + {\IgnorePar\EndP \HCode{<!--start of #1 -->}} + {\IgnorePar\EndP \HCode{<!--start of #1 -->}} + {\bgroup\HTML:PAR{#1-p}{#1-p}\par\HCode{<text:span text:style-name="#2" >}} + {\HCode{</text:span><text:s/><text:s/>\Hnewline}\egroup} +\:ParagraphStyle{#1-p} +} +>>> + +Usage: + +\begin{verbatim} +\:DefineParagraph{paragraph}{paragraph-h} +\:BoldStyle{paragraph-h} +\end{verbatim} + +Commands for basic character styles: + +\<utilities\><<< +\def\:BoldStyle#1{% +\NewConfigureOO{#1} +\ConfigureOO{#1}{ + <style:style style:name="#1" style:family="text">\Hnewline + <style:text-properties fo:font-style="normal" + fo:font-weight="bold"/>\Hnewline + </style:style>\Hnewline +}} + +\def\:ItalicStyle#1{% +\NewConfigureOO{#1} +\ConfigureOO{#1}{ + <style:style style:name="#1" style:family="text">\Hnewline + <style:text-properties fo:font-style="italic" + fo:font-weight="normal"/>\Hnewline + </style:style>\Hnewline +}} + +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{settings.xml for Math Formulas} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + + + + +\<oo2 settings.xml\><<< +\ht:special{t4ht>|<settings file name|>}% + \ht:special{t4ht=|<VERSION|>}% + \ht:special{t4ht=|<settings DOCTYPE|>}% + \ht:special{t4ht=|<oo2 start mathml settings|>}% + \ht:special{t4ht=|<close mathml settings|>}% +\ht:special{t4ht*>}% +\ht:special{t4ht<|<settings file name|>}% +>>> + + + + + + +\<settings file name\><<< +\jobname-settings.4os>>> + +\<settings DOCTYPE\><<< +>>> + + + + +\<oo2 start mathml settings\><<< +<office:document-settings \Hnewline + xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" \Hnewline + xmlns:xlink="http://www.w3.org/1999/xlink" \Hnewline + xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" \Hnewline + office:version="1.0"> \Hnewline +>>> + +% <office:settings> \Hnewline + + +%</office:settings> + +\<close mathml settings\><<< +</office:document-settings>\Hnewline +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{manifest.xml} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<utilities\><<< +\let\media:type\relax +\let\:OOmanifest=\empty +\def\OOmanifest#1{\edef\:OOmanifest{\:OOmanifest #1}} +\OOmanifest{|<oo2 manifest.xml|>} +\def\media:type{application/vnd.oasis.opendocument.text} +>>> + +\<switch to main body OOmanifest\><<< +\def\OOmanifest##1{% + \ht:special{t4ht>|<manifest file name|>}% + \ht:special{t4ht=##1}% + \ht:special{t4ht*>}% +} +\OOmanifest{\:OOmanifest} +\ht:special{t4ht*>|<manifest file name|>}% +\let\:OOmanifest=\:UnDef +>>> + + +\<manifest file name\><<< +\jobname-manifest.4of>>> + + + + + +\<oo2 manifest.xml\><<< +|<VERSION|>% +<manifest:manifest + xmlns:manifest = + "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">\Hnewline + <manifest:file-entry + manifest:media-type="\media:type" + manifest:full-path="/"/> + |<shared manifest|>% +>>> + + +\<manifest at /@BODY\><<< +\OOmanifest{</manifest:manifest>\Hnewline}% +>>> + + +\<math obj manifest\><<< +<manifest:file-entry + manifest:media-type="text/xml" + manifest:full-path="|<math obj name|>/content.xml"/>\Hnewline +<manifest:file-entry + manifest:media-type="text/xml" + manifest:full-path="|<math obj name|>/settings.xml"/>\Hnewline +<manifest:file-entry + manifest:media-type="application/vnd.oasis.opendocument.formula" + manifest:full-path="|<math obj name|>/"/> +>>> + +\<graphics obj manifest\><<< +<manifest:file-entry + manifest:full-path="Pictures/\PictureFile" manifest:media-type="\get:image:mime:type\Gin@ext"/>\Hnewline +>>> + +\<shared manifest\><<< +<manifest:file-entry + manifest:media-type="" + manifest:full-path="Pictures/"/>\Hnewline +<manifest:file-entry + manifest:media-type="text/xml" + manifest:full-path="content.xml"/>\Hnewline +<manifest:file-entry + manifest:media-type="text/xml" + manifest:full-path="styles.xml"/>\Hnewline +<manifest:file-entry + manifest:media-type="text/xml" + manifest:full-path="meta.xml"/>\Hnewline +<manifest:file-entry + manifest:media-type="text/xml" + manifest:full-path="settings.xml"/>\Hnewline +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{meta.xml} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<oo2 meta.xml\><<< +\ht:special{t4ht>|<meta file name|>}% + \ht:special{t4ht=|<VERSION|>}% + \ht:special{t4ht=|<oo2 start meta|>}% + \ht:special{t4ht=\a:META}% + \ht:special{t4ht=|<close meta|>}% +\ht:special{t4ht*>}% +\ht:special{t4ht<|<meta file name|>}% +>>> + + + + + + + + + + + + + + + +\<meta file name\><<< +\jobname-meta.4ot>>> + + + + + +\<oo2 start meta\><<< +<office:document-meta \Hnewline + xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"\Hnewline + xmlns:xlink="http://www.w3.org/1999/xlink"\Hnewline + xmlns:dc="http://purl.org/dc/elements/1.1/"\Hnewline + xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"\Hnewline + xmlns:ooo="http://openoffice.org/2004/office"\Hnewline + office:version="1.0">\Hnewline +<office:meta>\Hnewline +>>> + +\<close meta\><<< +</office:meta></office:document-meta>\Hnewline +>>> + + + + + + +\<oo2 tex4ht\><<< +\Configure{META} + {<meta:initial-creator>|<creator/generator|>\Hnewline + </meta:initial-creator>\Hnewline} +\Configure{META} + {<meta:generator>|<creator/generator|>\Hnewline + </meta:generator>\Hnewline} +\:CheckOption{timestamp}\if:Option +\Configure{META} + {<meta:creation-date>\:today</meta:creation-date>\Hnewline} +\Configure{META} + {<dc:date>\:today</dc:date>\Hnewline} +\else + \Log:Note{To print a timestamp, use the command line option timestamp} +\fi +>>> + + + + + +\<creator/generator\><<< +TeX4ht from \jobname.tex, + options: \expandafter\:gobbleM\meaning\Preamble\Hnewline + (http://www.cse.ohio-state.edu/\string + ~gurari/TeX4ht/) +>>> + + +\<utilities\><<< +\tmp:cnt=\time \divide\tmp:cnt by 60 +\edef\:temp{\the\tmp:cnt} +\multiply\tmp:cnt by -60 \advance\tmp:cnt by \time +\edef\:today{\the\year -\ifnum \month<10 0\fi + \the\month -\ifnum \day<10 0\fi\the\day + T\ifnum \:temp<10 0\fi \:temp + :\ifnum \tmp:cnt<10 0\fi\the\tmp:cnt :00} +>>> + +\<utilities\><<< +\NewConfigure{META}[1]{\concat:config\a:META{#1}} +\let\a:META\relax +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{MathML} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + + + +\<oo2 inline mathml object\><<< +<draw:frame + draw:style-name="mml-inline" + draw:name="mobj-\math:obj"\Hnewline + text:anchor-type="as-char" + draw:z-index="0" + >% + <draw:object\Hnewline + xlink:href="./|<math obj name|>"\Hnewline + xlink:type="simple" + xlink:show="embed" + xlink:actuate="onLoad" + />% +</draw:frame>% +>>> + + +\<oo2 display mathml object\><<< +<draw:frame + draw:style-name="mml-display" + draw:name="mobj-\math:obj"\Hnewline +\ifTab\else text:anchor-type="paragraph" \fi + draw:z-index="0" + >% + <draw:object\Hnewline + xlink:href="./|<math obj name|>"\Hnewline + xlink:type="simple" + xlink:show="embed" + xlink:actuate="onLoad" + />% +</draw:frame>% +>>> + + + + + + +\<configure ooffice-mml latex\><<< + |<oo2 mml latex|> +>>> + + + +\<oo2 mml latex\><<< +\OOstyles{\Hnewline + <style:style style:name="mml-inline" + style:family="graphic" + style:parent-style-name="Formula" + >\Hnewline + <style:graphic-properties + style:vertical-pos="middle" + style:vertical-rel="text"/>\Hnewline + </style:style>\Hnewline} +>>> + + + +\<oo2 mml latex\><<< +\OOstyles{\Hnewline + <style:style style:name="mml-display" + style:family="graphic" + style:parent-style-name="Formula"> + <style:graphic-properties + style:wrap="none" +% style:vertical-pos="center" +% style:vertical-rel="paragraph-content" + style:horizontal-pos="center" + style:horizontal-rel="paragraph-content" + fo:background-color="transparent" + style:background-transparency="100\%" + fo:margin-left="5\%" + > + </style:graphic-properties> + </style:style>\Hnewline +} +>>> + + + +\<configure ooffice-mml latex\><<< +\OOstyles{\Hnewline + <style:style style:name="Formula" + style:family="graphic"> + <style:graphic-properties + text:anchor-type="as-char" + svg:y="0in" + fo:margin-left="0.1mm" + fo:margin-right="0.1mm" + style:vertical-pos="middle" + style:vertical-rel="text" + /> + </style:style>\Hnewline +} +>>> + + + + + + +\<utilities\><<< +\newif\ifCenteredFrame +>>> + + +\<oo2 start math obj\><<< +\gHAdvance\math:obj by 1 +\NextFile{|<math obj name|>.4om}% +\bgroup + \HCode{\ifCenteredFrame + |<oo2 display mathml object|>\else + |<oo2 inline mathml object|>\fi + }% + \OOmanifest{|<math obj manifest|>}% + |<config mathml object file|>% + |<sv dvimath par|>\IgnorePar + \HPage{}% +>>> + + + + +\<end math obj\><<< +\EndHPage{}|<recall dvimath par|>\egroup +>>> + + + +\<configure ooffice-mml tex4ht\><<< +|<oo2 mml tex4ht|> +>>> + + + + + +\<oo2 mml tex4ht\><<< +\HAssign\math:obj=0 +\Configure{DviMath} + {\a:DviMathML \mathmltrue + \ifOption{mml-fonts}{}{|%\mml:htfsym|%\NoFonts}% + \HCode{|<input line num|>}\IgnoreRule + |<oo2 start math obj|>\Tg<\a:mathml math\Hnewline + \csname a:math-xmlns\endcsname \Hnewline + >\a:math + } + {\Tg</\a:mathml math>% + |<end math obj|>\EndIgnoreRule + \ifOption{mml-fonts}{}{|%\ext:htfsym|%\EndNoFonts}% + \mathmlfalse \b:DviMathML } +>>> + + + +\<config mathml object file\><<< +\Configure{DOCTYPE}{\HCode{<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">}}% +|<oo math xtpipes|>% +\Configure{HTML}{}{\noindent}% +\Configure{BODY}{}{}% +>>> + + +\<oo math xtpipes\><<< +\:CheckOption{-xtpipes} \if:Option + \Log:Note{Use the `-xtpipes' command line option to + avoid xtpipes post processing} +\else + \Configure{DOCTYPE}{%% + \HCode{|<tex4ht math note|>}% + }% +\fi +>>> + +\<tex4ht math note\><<< +<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">\Hnewline +<?xtpipes file="oo-math.4xt" ?>\Hnewline +<!-- |<math obj name|>\space + by TeX4ht from \jobname.tex line \the\inputlineno\space + |version\Hnewline + (http://www.cse.ohio-state.edu/\string ~gurari/TeX4ht/) + -->\Hnewline +>>> + + + + + +\<recall dvimath par\><<< +\sv:ignore +>>> + +\<sv dvimath par\><<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +\<math obj name\><<< +\jobname-m\math:obj +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Graphics} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<configure ooffice graphics\><<< +\Configure{graphics} + {\bgroup + \let\E:IMG=\e:IMG \let\e:IMG=\empty + \Picture+{}} + {\EndPicture + \E:IMG\HCode{<!--tex4ht:graphics + \Hnewline name="\PictureFile" src="\Gin@base\Gin@ext" + svg:width="\the\Gin@req@width" + svg:height="\the\Gin@req@height" + \Hnewline -->}% + \egroup} +>>> + +\<\><<< +\:CheckOption{graphics-dim} \if:Option + |<graphics quality|> + \Configure{graphics} + {\bgroup + \let\E:IMG=\e:IMG \let\e:IMG=\empty + \Picture+{}} + {\EndPicture \ifx\noBoundingBox\UnDefined + |<pixels graphics width/height|>\fi + \E:IMG\HCode{<!--tex4ht:graphics + \Hnewline name="\PictureFile" src="\Gin@base\Gin@ext" + \Hnewline -->}% + \egroup} +\else + +\fi +>>> + + + + +\<pixels graphics width/height\><<< +\ifx \gr:density\empty + \HCode{ + width="\the\Gin@req@width" + height="\the\Gin@req@height" + }% +\else + \bgroup + \divide\Gin@req@width by 72 + \multiply\Gin@req@width by \gr:density \relax + \divide\Gin@req@height by 72 + \multiply\Gin@req@height by \gr:density \relax + \HCode{ + width="\expandafter\int:pt\the\Gin@req@width|<par del|>" + height="\expandafter\int:pt\the\Gin@req@height|<par del|>" + }% + \egroup +\fi +>>> + + +\<graphics quality\><<< +\def\:temp#1graphics-#2,#3|<par del|>{\def\gr:density{#2}} +\expandafter\:temp\Preamble,graphics-,|<par del|> +\ifx \gr:density\empty + \Log:Note{if included graphics are + of degraded quality, try the command line option + `graphics-num'. The `num' should provide + the density of pixels in the bitmaps (e.g., 110). + } +\else + \def\int:pt#1.#2|<par del|>{#1} +\fi +>>> + + +All images should be saved in one directory (`Pictures' by default), +regardless of the original path structure. We must save image names and +original paths to be able to copy pictures to correct location. + +\<configure ooffice graphics\><<< +\def\getImgFileParser#1/{% + \ifx\relax#1\relax + \let\next\relax + \else + \do{#1}\let\next\getImgFileParser + \fi\next +} +\newcommand\getImgFile[2]{% + \def\do##1{\def\imgBaseName{##1#2}\def\imgBase{##1}} + \def\imgFullName{#1#2} + \getImgFileParser#1// +} + +\Configure{graphics*} + {gif} + {|<save image name|>\Picture[IMG]{\imgBase.gif |<graphics dimensions|> }} +\Configure{graphics*} + {png} + {|<save image name|>\Picture[IMG]{\imgBase.png |<graphics dimensions|> }} +\Configure{graphics*} + {jpg} + {|<save image name|>\Picture[IMG]{\imgBase.jpg |<graphics dimensions|> }} +\Configure{graphics*} + {jpeg} + {|<save image name|>\Picture[IMG]{\imgBase.jpeg |<graphics dimensions|> }} + + +|<graphics default extensions|> + +\NewConfigure{Ghostscript}{1} +\Configure{Ghostscript}{rungs} + +\NewConfigure{EpsConvert}{1} +\Configure{EpsConvert}{"\a:Ghostscript\space -dSAFER -dBATCH -dNOPAUSE -dEPSCrop -r120 -sDEVICE=pngalpha -sOutputFile="\Gin@base.png" "\Gin@base.eps" "} + +\Configure{graphics*} + {eps} + {\openin15=\csname Gin@base\endcsname\PictExt\relax% + \ifeof15% + \Needs{\a:EpsConvert}% + \fi% + \closein15% + \def\Gin@ext{\PictExt}% fix to get correct extension for the generated png file + \expandafter\getImgFile\expandafter{\Gin@base}{\PictExt} + \Picture[IMG]{{\imgBase\PictExt} |<graphics dimensions|>}} + +\NewConfigure{PdfConvert}{2} +\Configure{PdfConvert}{png}{"\a:Ghostscript\space -q -dNOPAUSE -dusecropbox -dBATCH -sDEVICE=pngalpha -r300 \ifx\Gin@page\@empty\else -dFirstPage="\Gin@page" -dLastPage="\Gin@page"\fi\space -sOutputFile="\Gin@base-\Gin@page.\a:PdfConvert" "\Gin@base.pdf""} + +\Configure{graphics*} + {pdf} + {\ifdefined\Gin@page\else\def\Gin@page{1}\fi% + \edef\svg:filename{\Gin@base-\Gin@page.\a:PdfConvert}% + % test for existence of the converted file + \openin15=\svg:filename\relax + \ifeof15 + \Needs{\b:PdfConvert}% + \fi + \closein15 + \def\Gin@ext{.\a:PdfConvert}% fix to get correct extension for the generated png file + \expandafter\getImgFile\expandafter{\Gin@base-\Gin@page}{\a:PdfConvert}% + \edef\Gin@base{\Gin@base-\Gin@page}% the generated file contains page number + \Picture[IMG]{{\imgBase.\a:PdfConvert} |<graphics dimensions|>}} +>>> + +\<\><<< +\Configure{graphics*} + {eps} + {|<save image name|>\Picture[IMG]{\imgBase.eps |<graphics dimensions|> }} +>>> + + + +\<save image name\><<< +\expandafter\getImgFile\expandafter{\Gin@base}{\Gin@ext} +>>> + + + +\<graphics dimensions\><<< +\if:boundingbox{svg:width="\the\Gin@req@width" svg:height="\the\Gin@req@height"}{} +>>> + +Enable supported image extensions out of the box. + +\<graphics default extensions\><<< +\DeclareGraphicsExtensions{.png,.jpg,.eps,.pdf} +>>> + +\<configure ooffice tex4ht\><<< +\def\svg:width{0.0pt}\def\svg:height{0.0pt} +\def\def:image:mime:type#1#2{\expandafter\def\csname image:mime#1\endcsname{#2}} +\def\get:image:mime:type#1{\csname image:mime#1\endcsname} +\def:image:mime:type{.png}{image/png} +\def:image:mime:type{.jpg}{image/jpeg} +\def:image:mime:type{.jpeg}{image/jpeg} +\def:image:mime:type{.gif}{image/gif} +\def:image:mime:type{.svg}{image/svg+xml} +\def\svg:width{0.0pt}\def\svg:height{0.0pt} +\Configure{IMG} + {|<insert shadowing fig file|>% + \ht:special{t4ht=<draw:frame + draw:name="\PictureFile" + text:anchor-type="as-char" % "paragraph" +% svg:width="...pt" +% svg:height="...pt" + % \ifx\noBoundingBox\UnDefined + \string svg:width="\the\Gin@req@width" + svg:height="\the\Gin@req@height" + % \fi + draw:z-index="0" + >% + <draw:image\Hnewline + xlink:href="Pictures/}} + {\ht:special{t4ht=" \Hnewline + xlink:type="simple" + xlink:show="embed" + xlink:actuate="onLoad" + /><!--draw:name="}} + {" } + {\ht:special{t4ht=" }} + {\ht:special{t4ht=--></draw:frame>}} +>>> + +\<configure ooffice pst-jtree\><<< +\Configure{jtree} + {\bgroup + \Configure{IMG} + {|<insert shadowing fig file|>% + \ht:special{t4ht=<draw:frame + draw:name="|<graphics base name|>" + text:anchor-type="as-char" + draw:style-name="jtree" + draw:z-index="0" + >% + <draw:image\Hnewline + xlink:href="Pictures/}} + {\ht:special{t4ht=" \Hnewline + xlink:type="simple" + xlink:show="embed" + xlink:actuate="onLoad" + /><!--draw:name="}} + {" } + {\ht:special{t4ht=" }} + {\ht:special{t4ht=--></draw:frame>}}% + } + {\egroup + } +>>> + + +\<configure ooffice pst-jtree\><<< +\OOstyles{\Hnewline +<style:style style:name="jtree" + style:family="graphic" + style:parent-style-name="Graphics"> + <style:graphic-properties + style:vertical-pos="bottom" + style:vertical-rel="baseline" + style:mirror="none" + fo:margin-left="0.01em" + fo:margin-right="0.01em" + fo:margin-top="0.01em" + fo:margin-bottom="0.01em" + /> +</style:style> +} +>>> + + + +\<insert shadowing fig file\><<< +% \ht:special{t4ht>\PictureFile.4og}% +\ht:special{t4ht>\Gin@base\Gin@ext.4og}% +\ht:special{t4ht*>}% +% \ht:special{t4ht<\PictureFile.4og}% +\ht:special{t4ht<\Gin@base\Gin@ext.4og}% +\OOmanifest{|<graphics obj manifest|>}% +>>> + + +\<graphics file name\><<< +\PictureFile>>> + +\<graphics base name\><<< +\imgBaseName>>> + +\<graphics full name\><<< +\imgFullName>>> + +\<configure ooffice tex4ht\><<< +\Configure{PictureAlt*+[]} + {\ht:special{t4ht>\jobname .tmp}} + {\ht:special{t4ht<\jobname .tmp}} +\Configure{PictureAlt*+} + {\let\sv:HtmlPar=\HtmlPar \let\HtmlPar=\empty + |<postscript for /Picture|>% + |<tex halign and cr/crcr|>% + \NoFonts\csname PauseMathClass\endcsname \SUBOff \SUPOff + \let\HCode=\:gobble |%\offinterlineskip|% + \let\EndPicture=\empty + \ht:special{t4ht>\jobname 1.tmp}% + } + {\ht:special{t4ht<\jobname 1.tmp}% + \let\HCode=\:HCode + \let\EndPicture=\:UnDef \let\HtmlPar=\sv:HtmlPar \SUBOn \SUPOn + \csname EndPauseMathClass\endcsname \EndNoFonts + |<tex4ht halign and cr/crcr|>% + |<delay postscript|>} +>>> + + + +Was \verb+\SUBOff \SUPOff+. Any problems? + +\<postscript for /Picture\><<< +\def\PsCode##1{{\ht:special{\PsCodeSpecial##1}}}% +>>> + +\<tex halign and cr/crcr\><<< +\iffalse{\fi +\let\sv:halign=\halign +\let\sv:cr=\cr +\let\sv:crcr=\crcr +\iffalse}\fi +\RecallTeXcr \let\halign =\TeXhalign +>>> + +\<tex4ht halign and cr/crcr\><<< +\iffalse{\fi +\let\halign=\sv:halign +\let\cr=\sv:cr +\let\crcr=\sv:crcr +\iffalse}\fi +>>> + +\<delay postscript\><<< +\let\PsCode=\relax +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Last File} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +A utility file for letting the openoffice script at tex4ht.env know +when the files are ready for zipping. + +\<insert last file\><<< + \ht:special{t4ht>\jobname .4od}% + \ht:special{t4ht*>}% + \ht:special{t4ht<\jobname .4od}% +>>> + + +\<configure ooffice tex4ht\><<< +\:CheckOption{.gif} \if:Option + \Configure{Picture}{.gif} +\fi +\:CheckOption{.wmf} \if:Option + \Configure{Picture}{.wmf} +\fi +\:CheckOption{.svg} \if:Option + \Configure{Picture}{.svg} +\fi +\:CheckOption{info}\if:Option + \Log:Note{to request a format for dvi pictures, + use the desired command line option from: + `.gif', `.svg', `.wmf'} +\fi +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%% +\subsection{Shared} +%%%%%%%%%%%%%%%%%%%%%% + + + + +\<oo2 tex4ht\><<< +\Configure{Preamble} + {} + {|<oo2 settings.xml|>% |%before mathml|% + |<switch to main body OOstlyles|>% + |<switch to main body OOmanifest|>% + |<oo2 meta.xml|>% + } +>>> + + + + +\<oo2 tex4ht\><<< +\Configure{@/BODY} + {\relax + \ifnum \FileNumber=1 + |<oo2 styles at /@BODY|>% + |<manifest at /@BODY|>% + |<insert last file|>% + \fi + } +>>> + + + + + + + +\<configure ooffice tex4ht\><<< +\Configure{CutAtTITLE+}{} +\Configure{HPageTITLE+}{} +\Configure{TITLE}{}{} +\Configure{TITLE+}{}{} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Title Page} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<ooffice title page\><<< +\Configure{maketitle} + {\HCode{<!--begin maketitle-->}} + {\HCode{<!--end maketitle-->}\par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="Title|<cond rtl class|>" + >}} + {\HCode{</text:p>}} +>>> + + +\<ooffice title page\><<< +\Configure{thanks author date and} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="Text-body|<cond rtl class|>" + >}} + {\HCode{</text:p>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="author|<cond rtl class|>" + >}} + {\HCode{</text:p>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="date|<cond rtl class|>" + >}} + {\HCode{</text:p>}} + {} + {}% {\HCode{<text:line-break/>}} +>>> + + +\<footnote thank\><<< +\Configure{thank} + {\setbox\tmp:bx=\hbox\bgroup} + {\egroup} + {\NoFonts \leavevmode \bgroup \protect\Configure{$}{}{}{}% + \hbox{\HCode{<\text:footnote\Hnewline\text:note:class + text:id="}|<thank id|>% + \HCode{"><\text:footnote-citation>}}% + } + {\egroup \EndNoFonts + \HCode{</\text:footnote-citation><\text:footnote-body> + <text:p\Hnewline text:style-name="Footnote" ><text:s/>}} + {\HCode{</text:p></\text:footnote-body></\text:footnote>}} +>>> + + + + + + +\<oo2 tex4ht\><<< +\def\text:footnote{text:note} +\:CheckOption{endnotes}\if:Option + \def\text:note:class{text:note-class="endnote" } +\else + \def\text:note:class{text:note-class="footnote" } + \Log:Note{for end notes instead of footnotes, + use the command line option `endnotes'} +\fi +>>> + + + + +\<ooffice title page\><<< +\NewConfigureOO{title} +\ConfigureOO{title}{% +<style:style style:name="Title" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="author" + style:class="chapter">\Hnewline +<style:paragraph-properties fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:font-size="20pt" + fo:font-weight="normal" + style:font-size-asian="18pt" + style:font-weight-asian="bold" + style:font-size-complex="18pt" + style:font-weight-complex="bold" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style> \Hnewline |<Title rtl|> } +>>> + + +\<ooffice title page\><<< +\NewConfigureOO{author} +\ConfigureOO{author}{% +<style:style style:name="author" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="date">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style>\Hnewline |<author rtl|>} +>>> + +\<ooffice title page\><<< +\NewConfigureOO{date} +\ConfigureOO{date}{% +<style:style style:name="date" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style>\Hnewline |<date rtl|>} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Scr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice scrbook\><<< +|<scr title page|> +>>> + + +\<configure ooffice scrreprt\><<< +|<scr title page|> +>>> + + +\<scr title page\><<< +\ConfigureEnv{titlepage} + {\bgroup + \ifvmode \IgnorePar\fi \EndP +% \HCode{<div class="titlepage">}% + \Configure{tabular}{}{}{}{}{}{}% + \ConfigureEnv{tabular}{}{}{}{}{}{}% + \ConfigureEnv{center}{}{}{}{}} + {\ifvmode \IgnorePar\fi \EndP +% \HCode{</div>}% + \egroup} + {} {} +\Configure{dedication} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<text:p text:style-name="Text-body" >}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</text:p>}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Abstract} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<ooffice title page\><<< +\ConfigureEnv{abstract} + {\IgnorePar\EndP \bgroup + \Configure{HtmlPar} + {\EndP \HCode{<text:p + text:style-name="abstract|<cond rtl class|>">}} + {\EndP \HCode{<text:p + text:style-name="abstract|<cond rtl class|>">}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% + \par \ShowPar + } + {\ifvmode \IgnorePar\fi \EndP \egroup \ShowPar\par \IgnoreIndent } + {\ifvmode \IgnorePar\fi\EndP + \HCode{<text:p text:style-name="abstract-title" >}% + } + {\HCode{</text:p>}} +>>> + + +\<ooffice title page\><<< +\NewConfigureOO{abstract} +\ConfigureOO{abstract}{\Hnewline +<style:style style:name="abstract" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-left="3cm" + fo:margin-right="3cm" + fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="10pt" + fo:text-indent="0cm" + style:auto-text-indent="false"/>\Hnewline +</style:style>\Hnewline |<abstract rtl|> } +>>> + +\<ooffice title page\><<< +\NewConfigureOO{abstract-title} +\ConfigureOO{abstract-title}{\Hnewline +<style:style style:name="abstract-title" + style:family="paragraph" + style:parent-style-name="abstract" + style:next-style-name="abstract">\Hnewline +<style:paragraph-properties fo:margin-top="0.499cm" + fo:margin-bottom="0cm" + fo:font-weight="bold" + fo:text-align="center" + style:justify-single-word="false"/>\Hnewline +</style:style>\Hnewline +} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{List Environments} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%% + +\begin{description} +\item[Itemized Lists] + + + +\<configure ooffice latex\><<< +\ConfigureList{itemize}% + {\EndP\HCode{|<input line num|><\text:unorderedlist + text:style-name="Itemize|<cond rtl class|>" + >\Hnewline}\def\end@Item{}\bgroup + \Configure{HtmlPar} + {\EndP\HCode{<text:p + text:style-name="Inside-itemize|<cond rtl class|>" + >}} + {\EndP\HCode{<text:p + text:style-name="Inside-itemize|<cond rtl class|>" + >}} + {\HCode{</text:p>\Hnewline}} + {\HCode{</text:p>\Hnewline}}% + \gHAdvance\BegEnd:D by 1 + } + {\gHAdvance\BegEnd:D by -1 + \EndP\IgnorePar \egroup \HCode{</text:list-item>\Hnewline + </\text:unorderedlist>\Hnewline}\ShowPar} + {\EndP\end@Item\DeleteMark} + {\HCode{<text:list-item>}\par\ShowPar + \def\end@Item{\HCode{</text:list-item>\Hnewline}}} +>>> + + + + + + + +\<configure ooffice latex\><<< +\NewConfigureOO{itemize} +\ConfigureOO{itemize} + {|<shared oo+ itemize style|>% + |<oo2+ itemize style|>% + |<oo2+ itemize style rtl|>} +>>> + + + + + + + + + + + + + + +\<oo2+ itemize style\><<< +<text:list-style style:name="Itemize" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Bullet-Symbols" + text:bullet-char="\string&\:sharp x2022;" >\Hnewline + <style:list-level-properties + text:space-before="0.15in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="2" + text:style-name="Bullet-Symbols" + text:bullet-char="-" >\Hnewline + <style:list-level-properties + text:space-before="0.35in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" + />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="3" + text:style-name="Bullet-Symbols" + text:bullet-char="\string&\:sharp x204E;" >\Hnewline + <style:list-level-properties + text:space-before="0.55in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="4" + text:style-name="Bullet-Symbols" + text:bullet-char="\string&\:sharp x00B7;" >\Hnewline + <style:list-level-properties + text:space-before="0.75in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> +</text:list-style> +>>> + + + + +\<shared oo+ itemize style\><<< +<style:style style:name="Inside-itemize" + style:family="paragraph" + style:parent-style-name="Standard" + style:list-style-name="Itemize">\Hnewline + <style:paragraph-properties + fo:margin-left="0in" + fo:margin-right="0in" + fo:margin-top="0in" + fo:margin-bottom="0.15in" + fo:text-indent="0in" + style:auto-text-indent="false"/> +</style:style> +>>> + + +\item[Enumerated Lists] + + +\<configure ooffice latex\><<< +\NewConfigureOO{enumerate} +\:CheckOption{enumerate+} \if:Option + |<oo-description for enumerate|> +\else + |<oo-enumerate for enumerate|> + |<description-based enumerate list note|> +\fi +>>> + +\<description-based enumerate list note\><<< +\Log:Note{for enumerated list elements with valued data, + use the command line option `enumerate+'} +>>> + + +\<oo-enumerate for enumerate\><<< +\ConfigureList{enumerate}% + {\EndP\HCode{<\text:orderedlist + text:style-name="Enumerate|<cond rtl class|>" + >\Hnewline}\def\end@Item{}\bgroup + \Configure{HtmlPar} + {\EndP\HCode{<text:p + text:style-name="Inside-enumerate|<cond rtl class|>" + >}} + {\EndP\HCode{<text:p + text:style-name="Inside-enumerate|<cond rtl class|>" + >}} + {\HCode{</text:p>\Hnewline}} {\HCode{</text:p>\Hnewline}}} + {\EndP\IgnorePar \egroup \HCode{</text:list-item>\Hnewline + </\text:orderedlist>\Hnewline}\ShowPar} + {\EndP\end@Item\DeleteMark} + {\HCode{<text:list-item>}\par\ShowPar + \def\end@Item{\HCode{</text:list-item>\Hnewline}}} +>>> + + + + +\<shared oo+ enumerate style\><<< +<style:style style:name="Inside-enumerate" + style:family="paragraph" + style:parent-style-name="Text-body" + style:list-style-name="Enumerate">\Hnewline + <style:paragraph-properties + fo:margin-left="0in" + fo:margin-right="0in" + fo:margin-top="0in" + fo:margin-bottom="0.15in" + fo:text-indent="0in" + style:auto-text-indent="false"/> +</style:style> +>>> + + + + + +\<oo-enumerate for enumerate\><<< +\ConfigureOO{enumerate}% + {|<shared oo+ enumerate style|>% + |<oo2+ enumerate style|>% + |<shared oo+ enumerate style rtl|>% + |<oo2+ enumerate style rtl|>} +>>> + + +\<configure ooffice latex\><<< +\NewConfigure{enumerate:1}{3} +\NewConfigure{enumerate:2}{3} +\NewConfigure{enumerate:3}{3} +\NewConfigure{enumerate:4}{3} +\Configure{enumerate:1}{1}{}{.} +\Configure{enumerate:2}{a}{(}{)} +\Configure{enumerate:3}{i}{}{.} +\Configure{enumerate:4}{A}{}{.} +>>> + + + + + +\<oo2+ enumerate style\><<< +<text:list-style style:name="Enumerate">\Hnewline + <text:list-level-style-number + text:level="1" + text:style-name="Numbering-Symbols" + style:num-prefix="\csname b:enumerate:1\endcsname" + style:num-suffix="\csname c:enumerate:1\endcsname" + style:num-format="\csname a:enumerate:1\endcsname" + >\Hnewline + <style:list-level-properties + text:min-label-width="0.2in" + text:space-before="0.15in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="2" + text:style-name="Numbering-Symbols" + style:num-prefix="\csname b:enumerate:2\endcsname" + style:num-suffix="\csname c:enumerate:2\endcsname" + style:num-format="\csname a:enumerate:2\endcsname" + >\Hnewline + <style:list-level-properties + text:min-label-width="0.2in" + text:space-before="0.35in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="3" + text:style-name="Numbering-Symbols" + style:num-prefix="\csname b:enumerate:3\endcsname" + style:num-suffix="\csname c:enumerate:3\endcsname" + style:num-format="\csname a:enumerate:3\endcsname" + >\Hnewline + <style:list-level-properties + text:min-label-width="0.2in" + text:space-before="0.6in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="4" + text:style-name="Numbering-Symbols" + style:num-prefix="\csname b:enumerate:4\endcsname" + style:num-suffix="\csname c:enumerate:4\endcsname" + style:num-format="\csname a:enumerate:4\endcsname" + >\Hnewline + <style:list-level-properties + text:min-label-width="0.2in" + text:space-before="0.8in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline +</text:list-style>\Hnewline +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\item[Description Lists] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice latex\><<< +\let\end:itm=\empty +\ConfigureList{description}% + {\EndP + \bgroup + \HCode{<text:list + text:style-name="description\if@rl-rtl\fi" + text:name="description"\Hnewline>}% + \PushMacro\end:itm + \global\let\end:itm=\empty + \HTML:PAR{dd|<cond rtl class|>}{dd|<cond rtl class|>}% + \gHAdvance\BegEnd:D by 1 + } + {\gHAdvance\BegEnd:D by -1 + \PopMacro\end:itm \global\let\end:itm \end:itm + \EndP + \HCode{<!--/dd-->}% + \HCode{</text:list-item>} + \HCode{</text:list>}% + \egroup + \ShowPar} + {\end:itm + \global\def\end:itm{\EndP + \HCode{<!--/dd-->}% + \HCode{</text:list-item>}% + }% + \HCode{<text:list-item>% + <text:h text:style-name="dt|<cond rtl class|>"\Hnewline >% + }% + } + {\EndP + \HCode{</text:h>}% + \HCode{<!--dd\Hnewline class="description"-->}% + \par + } +>>> + + + + + + +\<configure ooffice enumerate\><<< +|<oo-description for enumerate|> +>>> + +\<oo-description for enumerate\><<< +\ConfigureList{enumerate}% + {\EndP\HCode{<\text:orderedlist + text:style-name="Enumerate|<cond rtl class|>" + >\Hnewline}\def\end@Item{}\bgroup + \Configure{HtmlPar} + {\EndP\HCode{<text:p + text:style-name="Inside-enumerate|<cond rtl class|>" + >}} + {\EndP\HCode{<text:p + text:style-name="Inside-enumerate|<cond rtl class|>" + >}} + {\HCode{</text:p>\Hnewline}} {\HCode{</text:p>\Hnewline}}} + {\EndP\IgnorePar \egroup \HCode{</text:list-item>\Hnewline + </\text:orderedlist>\Hnewline}\ShowPar} + {\EndP\end@Item \let\sv:DeleteMark\DeleteMark + \let\DeleteMark\DeleteMark: \DeleteMark} + {\HCode{<text:list-item>}% + \par\ShowPar + \HCode{<text:span + text:style-name="enum-label">}\AnchorLabel + \box\tmp:bx + \let\DeleteMark\sv:DeleteMark + \HCode{</text:span><text:s/>}% + \def\end@Item{\HCode{</text:list-item>\Hnewline}}} +\def\DeleteMark:#1\@labels{\hfill\break + \setbox\tmp:bx\vbox{\box\@labels}} +>>> + + + + +\<oo-description for enumerate\><<< +\ConfigureOO{enumerate}% + {|<shared oo+ enumerate style|>% + |<enumerate.sty style|>} +>>> + + + +\<enumerate.sty style\><<< +<text:list-style style:name="Enumerate">\Hnewline + <text:list-level-style-number + text:level="1" + text:style-name="Numbering-Symbols" + style:num-prefix="" + style:num-suffix="" + style:num-format="" + >\Hnewline + <style:list-level-properties + text:min-label-width="0.2in" + text:space-before="0.15in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="2" + text:style-name="Numbering-Symbols" + style:num-prefix="" + style:num-suffix="" + style:num-format="" + >\Hnewline + <style:list-level-properties + text:min-label-width="0.2in" + text:space-before="0.35in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="3" + text:style-name="Numbering-Symbols" + style:num-prefix="" + style:num-suffix="" + style:num-format="" + >\Hnewline + <style:list-level-properties + text:min-label-width="0.2in" + text:space-before="0.6in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="4" + text:style-name="Numbering-Symbols" + style:num-prefix="" + style:num-suffix="" + style:num-format="" + >\Hnewline + <style:list-level-properties + text:min-label-width="0.2in" + text:space-before="0.8in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline +</text:list-style>\Hnewline +>>> + + + + + + +\<configure ooffice latex\><<< +\NewConfigureOO{description} +\ConfigureOO{description}{|<oo2+ description style|>} +>>> + + + + + + + + +\<oo2+ description style\><<< +<text:list-style style:name="description" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0in" + text:min-label-width="0in" + text:min-label-distance="0in" />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="2" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.2in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" + />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="3" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.4in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="4" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.6in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> +</text:list-style> +>>> + + + + + + +\<oo2+ description style\><<< +<style:style + style:name="dd" + style:family="paragraph" + style:parent-style-name="Standard"> + <style:paragraph-properties + fo:margin-left="0.35in" + fo:margin-right="0in" + fo:margin-top="0cm" + fo:margin-bottom="0.2cm" + fo:text-indent="0in" + style:auto-text-indent="false"/> +</style:style> +<style:style + style:name="dt" + style:family="paragraph" + style:parent-style-name=""> + <style:paragraph-properties + fo:margin-left="0.1in" + fo:margin-right="0in" + fo:text-indent="0in" + style:auto-text-indent="false"/> + <style:text-properties + fo:font-weight="bold" + /> +</style:style> +>>> + + + + + +\end{description} + + +%%%%%%%%%%%%% +\subsection{List} +%%%%%%%%%%%%% + + +\<configure ooffice latex\><<< +\let\end:itm=\empty +\ConfigureList{list}% + {\EndP\HCode{<text:list + text:style-name="list|<cond rtl class|>" + text:name="list"\Hnewline>}% + \PushMacro\end:itm + \global\let\end:itm=\empty + \SaveHtmlPar \HTML:PAR{dd}{dd}% + } + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP + \RecallHtmlPar + \HCode{</text:list-item></text:list>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\HCode{</text:list-item>}}% + \HCode{<text:list-item><text:h + text:style-name="dt|<cond rtl class|>"\Hnewline >}\bgroup \bf} + {\egroup\HCode{</text:h>}\par\ShowPar} +>>> + + + +\<configure ooffice latex\><<< +\NewConfigureOO{list} +\ConfigureOO{list}{|<oo2+ list style|>} +>>> + + + + +\<oo2+ list style\><<< +<text:list-style style:name="list" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0in" + text:min-label-width="0in" + text:min-label-distance="0in" />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="2" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.2in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" + />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="3" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.4in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="4" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.6in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> +</text:list-style> +>>> + + +\<oo2+ list style\><<< +<style:style + style:name="dd" + style:family="paragraph" + style:parent-style-name="Standard"> + <style:paragraph-properties + fo:margin-left="0.35in" + fo:margin-right="0in" + fo:margin-top="0cm" + fo:margin-bottom="0.2cm" + fo:text-indent="0in" + style:auto-text-indent="false"/> +</style:style> +<style:style + style:name="dt" + style:family="paragraph" + style:parent-style-name=""> + <style:paragraph-properties + fo:margin-left="0.1in" + fo:margin-right="0in" + fo:text-indent="0in" + style:auto-text-indent="false"/> + <style:text-properties + fo:font-weight="bold" + /> +</style:style> +>>> + + + +%%%%%%%%%%%%% +\subsection{Apa} +%%%%%%%%%%%%% + +\<configure ooffice apacite\><<< +\Configure{bibcite}{\def\ { }} +>>> + + +\<configure ooffice apa\><<< +\Configure{maketitle} + {\HCode{<!--begin maketitle-->}|<apa maketitle|>} + {\HCode{<!--end maketitle-->}\par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="Title|<cond rtl class|>" + >}} + {\HCode{</text:p>}} +\Configure{affil} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="affiliation\if@rl + -rtl\fi" + >}} + {\HCode{</text:p>}} +\Configure{abstract} + {\Hclearpage \IgnorePar\EndP \bgroup + \Configure{HtmlPar} + {\EndP \HCode{<text:p + text:style-name="abstract\if@rl-rtl\fi" + >}} + {\EndP \HCode{<text:p + text:style-name="abstract\if@rl-rtl\fi" + >}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% + \ht:everypar{\HtmlPar}\par \ShowPar + } + {\ifvmode \IgnorePar\fi \EndP + \egroup \Hclearpage \ShowPar\par \IgnoreIndent } +>>> + + +\<apa maketitle\><<< +\Configure{centercr} + {\ht:everypar{\ht:everypar{\HtmlPar}}}% + {\ht:everypar{\ht:everypar{\HtmlPar}}}% +>>> + + + + + + + +\<configure ooffice apa\><<< +\ConfigureOO{itemize} + {|<apa itemize style|>|<apa itemize style rtl|>} +\ConfigureList{APAenumerate}% + {\EndP\HCode{<\text:orderedlist + text:style-name="Enumerate|<cond rtl class|>" + >\Hnewline}\def\end@Item{}\bgroup + \Configure{HtmlPar} + {\EndP\HCode{<text:p text:style-name="Inside-enumerate|<cond rtl class|>" + >}} + {\EndP\HCode{<text:p text:style-name="Inside-enumerate|<cond rtl class|>" + >}} + {\HCode{</text:p>\Hnewline}} {\HCode{</text:p>\Hnewline}}} + {\EndP\IgnorePar \egroup \HCode{</text:list-item>\Hnewline + </\text:orderedlist>\Hnewline}\ShowPar} + {\EndP\end@Item\DeleteMark} + {\HCode{<text:list-item>}\par\ShowPar + \def\end@Item{\HCode{</text:list-item>\Hnewline}}} +\ConfigureList{APAitemize}% + {\EndP\HCode{<\text:unorderedlist + text:style-name="Itemize|<cond rtl class|>" + >\Hnewline}\def\end@Item{}\bgroup + \Configure{HtmlPar} + {\EndP\HCode{<text:p text:style-name="Inside-itemize|<cond rtl class|>" + >}} + {\EndP\HCode{<text:p text:style-name="Inside-itemize|<cond rtl class|>" + >}} + {\HCode{</text:p>\Hnewline}} {\HCode{</text:p>\Hnewline}}} + {\EndP\IgnorePar \egroup \HCode{</text:list-item>\Hnewline + </\text:unorderedlist>\Hnewline}\ShowPar} + {\EndP\end@Item\DeleteMark} + {\HCode{<text:list-item>}\par\ShowPar + \def\end@Item{\HCode{</text:list-item>\Hnewline}}} +>>> + + + + +\<apa itemize style\><<< +<text:list-style style:name="Itemize">\Hnewline + <text:list-level-style-bullet + \list:text:level="1" + text:style-name="Bullet-Symbols" + text:bullet-char="\string&\:sharp x2022;" >\Hnewline + <style:text-properties + text:space-before="0.15in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet>\Hnewline + <text:list-level-style-bullet + \list:text:level="2" + text:bullet-char="\string&\:sharp x2022;" >\Hnewline + <style:text-properties + text:space-before="0.35in" + text:min-label-distance="0.05in" />\Hnewline + </text:list-level-style-bullet>\Hnewline + <text:list-level-style-bullet + \list:text:level="3" + text:bullet-char="\string&\:sharp x2022;" >\Hnewline + <style:text-properties + text:space-before="0.55in" + text:min-label-distance="0.05in" />\Hnewline + </text:list-level-style-bullet>\Hnewline + <text:list-level-style-bullet + \list:text:level="4" + text:bullet-char="\string&\:sharp x2022;" >\Hnewline + <style:text-properties + text:space-before="0.75in" + text:min-label-distance="0.05in" />\Hnewline + </text:list-level-style-bullet>\Hnewline +</text:list-style>\Hnewline +>>> + + +\<apa itemize style\><<< +<style:style style:name="Inside-itemize" + style:family="paragraph" + style:parent-style-name="Text-body" + style:list-style-name="Itemize"/>\Hnewline +>>> + + + +\<configure ooffice apa\><<< + |<oo2 apa|> +>>> + + + + +\<oo2 apa\><<< +\ConfigureOO{enumerate}% + {|<shared apa enumerate style|>% + |<oo2 apa enumerate style|>% + |<oo2 apa enumerate style rtl|>} +>>> + + + + + +\<oo2 apa enumerate style\><<< +<text:list-style style:name="Enumerate">\Hnewline + <text:list-level-style-number + text:level="1" + style:num-prefix="" + style:num-suffix="." >\Hnewline + <style:list-level-properties + text:space-before="0.15in" + style:num-format="1" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="2" + style:num-prefix="" + style:num-suffix="." >\Hnewline + <style:list-level-properties + text:space-before="0.35in" + style:num-format="1" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="3" + style:num-prefix="" + style:num-suffix="." >\Hnewline + <style:list-level-properties + text:space-before="0.6in" + style:num-format="1" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="4" + style:num-prefix="" + style:num-suffix="." >\Hnewline + <style:list-level-properties + text:space-before="0.8in" + style:num-format="1" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline +</text:list-style>\Hnewline +>>> + +\<shared apa enumerate style\><<< +<style:style style:name="Inside-enumerate" + style:family="paragraph" + style:parent-style-name="Text-body" + style:list-style-name="Enumerate"/>\Hnewline +>>> + + +%%%%%%%%%%%%% +\subsection{Paralist} +%%%%%%%%%%%%% + +\<configure ooffice paralist\><<< +\ConfigureList{compactenum}% + {\EndP \end:itm + \SaveHtmlPar \HCode{<text:list + text:style-name="compactenum|<cond rtl class|>" + text:name="compactenum"\Hnewline>}% + \PushMacro\end:Itm + \global\let\end:itm=\empty + \global\let\end:Itm=\empty + \Configure{HtmlPar} + {\end:itm\gdef\end:itm{\HCode{</text:p>\Hnewline}}% + \HCode{<text:p + text:style-name="dd|<cond rtl class|>" >}} + {\end:itm\gdef\end:itm{\HCode{</text:p>\Hnewline}}% + \HCode{<text:p + text:style-name="dd|<cond rtl class|>" >}} + {}{}% + } + {\end:itm \end:Itm \global\let\end:itm=\empty + \PopMacro\end:Itm \global\let\end:Itm\end:Itm + \HCode{</text:list>}\RecallHtmlPar \ShowPar} + {\end:itm \end:Itm \gdef\end:Itm{\HCode{</text:list-item>}}% + \gdef\end:itm{\HCode{</text:h>}}\HCode{<text:list-item><text:h + text:style-name="dt|<cond rtl class|>"\Hnewline >}\bgroup \bf} + {\egroup \end:itm \gdef\end:itm{\HCode{</text:p>}}% + \HCode{<text:p\Hnewline + text:style-name="dd|<cond rtl class|>"\Hnewline + >}} +\NewConfigureOO{compactenum} +\ConfigureOO{compactenum}{|<compactenum style|>} +>>> + + +\<compactenum style\><<< +<text:list-style style:name="compactenum" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0in" + text:min-label-width="0in" + text:min-label-distance="0in" />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="2" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.2in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" + />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="3" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.4in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="4" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.6in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> +</text:list-style> +>>> + +\<configure ooffice paralist\><<< +\ConfigureList{compactitem}% + {\EndP\HCode{|<input line num|><\text:unorderedlist + text:style-name="compactitem|<cond rtl class|>" + >\Hnewline}\def\end@Item{}\bgroup + \Configure{HtmlPar} + {\EndP\HCode{<text:p + text:style-name="Inside-compactitem|<cond rtl class|>" + >}} + {\EndP\HCode{<text:p + text:style-name="Inside-compactitem|<cond rtl class|>" + >}} + {\HCode{</text:p>\Hnewline}} + {\HCode{</text:p>\Hnewline}}% + \gHAdvance\BegEnd:D by 1 + } + {\gHAdvance\BegEnd:D by -1 + \EndP\IgnorePar \egroup \HCode{</text:list-item>\Hnewline + </\text:unorderedlist>\Hnewline}\ShowPar} + {\EndP\end@Item\DeleteMark} + {\HCode{<text:list-item>}\par\ShowPar + \def\end@Item{\HCode{</text:list-item>\Hnewline}}} +\NewConfigureOO{compactitem} +\ConfigureOO{compactitem} + {|<shared oo+ compactitem style|>% + |<oo2+ compactitem style|>% + |<oo2+ compactitem style rtl|>} +>>> + + + +\<oo2+ compactitem style\><<< +<text:list-style style:name="compactitem" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Bullet-Symbols" + text:bullet-char="\string&\:sharp x2022;" >\Hnewline + <style:list-level-properties + text:space-before="0.15in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="2" + text:style-name="Bullet-Symbols" + text:bullet-char="-" >\Hnewline + <style:list-level-properties + text:space-before="0.35in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" + />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="3" + text:style-name="Bullet-Symbols" + text:bullet-char="\string&\:sharp x204E;" >\Hnewline + <style:list-level-properties + text:space-before="0.55in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="4" + text:style-name="Bullet-Symbols" + text:bullet-char="\string&\:sharp x00B7;" >\Hnewline + <style:list-level-properties + text:space-before="0.75in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> +</text:list-style> +>>> + + + + +\<shared oo+ compactitem style\><<< +<style:style style:name="Inside-compactitem" + style:family="paragraph" + style:parent-style-name="Standard" + style:list-style-name="compactitem">\Hnewline + <style:paragraph-properties + fo:margin-left="0in" + fo:margin-right="0in" + fo:margin-top="0in" + fo:margin-bottom="0.15in" + fo:text-indent="0in" + style:auto-text-indent="false"/> +</style:style> +>>> + +\<configure ooffice paralist\><<< +\ConfigureList{compactdesc}% + {\EndP \end:itm + \SaveHtmlPar \HCode{<text:list + text:style-name="compactdesc|<cond rtl class|>" + text:name="compactdesc"\Hnewline>}% + \PushMacro\end:Itm + \global\let\end:itm=\empty + \global\let\end:Itm=\empty + \Configure{HtmlPar} + {\end:itm\gdef\end:itm{\HCode{</text:p>\Hnewline}}% + \HCode{<text:p + text:style-name="dd|<cond rtl class|>" >}} + {\end:itm\gdef\end:itm{\HCode{</text:p>\Hnewline}}% + \HCode{<text:p + text:style-name="dd|<cond rtl class|>" >}} + {}{}% + } + {\end:itm \end:Itm \global\let\end:itm=\empty + \PopMacro\end:Itm \global\let\end:Itm\end:Itm + \HCode{</text:list>}\RecallHtmlPar \ShowPar} + {\end:itm \end:Itm \gdef\end:Itm{\HCode{</text:list-item>}}% + \gdef\end:itm{\HCode{</text:h>}}\HCode{<text:list-item><text:h + text:style-name="dt|<cond rtl class|>"\Hnewline >}\bgroup \bf} + {\egroup \end:itm \gdef\end:itm{\HCode{</text:p>}}% + \HCode{<text:p\Hnewline + text:style-name="dd|<cond rtl class|>"\Hnewline + >}} +\NewConfigureOO{compactdesc} +\ConfigureOO{compactdesc}{|<compactdesc style|>} +>>> + + +\<compactdesc style\><<< +<text:list-style style:name="compactdesc" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0in" + text:min-label-width="0in" + text:min-label-distance="0in" />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="2" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.2in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" + />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="3" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.4in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="4" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.6in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> +</text:list-style> +>>> + +\<configure ooffice paralist\><<< +\ConfigureList{asparaitem}% + {\EndP|<boxed env|>\HCode{<!--asparaitem-->}\ShowPar\ShowIndent} + {\EndP|<end boxed env|>\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +\ConfigureList{asparaenum}% + {\EndP|<boxed env|>\HCode{<!--asparaenum-->}\ShowPar\ShowIndent} + {\EndP|<end boxed env|>\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +\ConfigureList{asparadesc}% + {\EndP|<boxed env|>\HCode{<!--asparadesc-->}\ShowPar\ShowIndent} + {\EndP|<end boxed env|>\ShowPar} + {\par\ShowPar{\parindent=10pt\leavevmode}} + {} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Bibliography} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Background} +%%%%%%%%%%%%% + +\begin{verbatim} + +<text:bibliography + text:style-name="Sect1" + text:name="Bibliography1"> + <text:bibliography-source> + + <text:index-title-template + text:style-name="Bibliography_20_Heading">Bibliography + </text:index-title-template> + + <text:bibliography-entry-template + text:bibliography-type="article" + text:style-name="Bibliography_20_1"> + <text:index-entry-bibliography + text:bibliography-data-field="identifier"/> + <text:index-entry-span>: </text:index-entry-span> + <text:index-entry-bibliography + text:bibliography-data-field="author"/> + <text:index-entry-span>, </text:index-entry-span> + <text:index-entry-bibliography + text:bibliography-data-field="title"/> + <text:index-entry-span>, </text:index-entry-span> + <text:index-entry-bibliography + text:bibliography-data-field="year"/> + </text:bibliography-entry-template> + + <text:bibliography-entry-template + text:bibliography-type="book" + text:style-name="Bibliography_20_1"> + <text:index-entry-bibliography + text:bibliography-data-field="identifier"/> + <text:index-entry-span>: </text:index-entry-span> + <text:index-entry-bibliography + text:bibliography-data-field="author"/> + <text:index-entry-span>, </text:index-entry-span> + <text:index-entry-bibliography + text:bibliography-data-field="title"/> + <text:index-entry-span>, </text:index-entry-span> + <text:index-entry-bibliography text:bibliography-data-field="year"/> + </text:bibliography-entry-template> + + </text:bibliography-source> + <text:index-body> + <text:index-title + text:style-name="Sect2" + text:name="Bibliography1_Head"> + <text:p + text:style-name="Bibliography_20_Heading">Bibliography</text:p> + </text:index-title> + <text:p text:style-name="P1">1: author, title, year</text:p> + <text:p text:style-name="P1">2: auth, my title, </text:p> + </text:index-body> +</text:bibliography> +\end{verbatim} + + +%%%%%%%%%%%%%%%%%%% +\subsection{cite} +%%%%%%%%%%%%%%%%%%% + +\<configure ooffice latex\><<< +\Configure{cite} + {\HCode{<text:bibliography-mark + text:bibliography-type="custom1">}} + {\HCode{</text:bibliography-mark>}} + {\Link} {\EndLink} +\let\lat:cite\@cite +\def\@cite#1#2{{#1\if@tempswa , #2\fi}} +>>> + +\<\><<< +\Configure{cite} + {\HCode{<text:bibliography-mark text:identifier="}\bgroup + \def\:nbsp{ }\NoFonts + \setbox0=\hbox\bgroup + } + {\egroup + \copy0 + \EndNoFonts + \HCode{"\Hnewline text:bibliography-type="custom1" + >}[\box0]\HCode{</text:bibliography-mark>}\egroup + } +% {}{} + {\Link}{\EndLink} +\let\lat:cite\@cite +\def\@cite#1#2{{#1\if@tempswa , #2\fi}} +>>> + +% {\HCode{<!--cite-->}} {\HCode{<!--/cite-->}} +% {\Link} {\EndLink} + + + +\<configure ooffice apacite\><<< +\Configure{cite} + {\HCode{<!--cite-->}\bgroup + \def\:nbsp{ }\NoFonts + } + {\EndNoFonts\egroup \HCode{<!--/cite-->}} + {}{} +\let\@cite\lat:cite +>>> + + + + + + +\begin{verbatim} +<text:bibliography-mark + text:identifier="shortname" + text:bibliography-type="article" + text:address="address" + text:annote="annotation" + text:author="author" + text:booktitle="book title" + text:chapter="chapter" + text:edition="edition" + text:editor="editor" + text:howpublished="publication type" + text:institution="institution" + text:journal="journal" + text:month="month" + text:note="note" + text:number="number" + text:organizations="organization" + text:pages="pages" + text:publisher="publisher" + text:school="university" + text:series="series" + text:title="title" + text:report-type="report type" + text:volume="volume" + text:year="year" + text:url="url" + text:isbn="isbn 1234567890"> +[1] +</text:bibliography-mark> +\end{verbatim} + + + +%%%%%%%%%%%%%%%%%%% +\subsection{Items} +%%%%%%%%%%%%%%%%%%% + +How the problem in the following post can be resolved? + +\url{http://www.mail-archive.com/dev@bibliographic.openoffice.org/msg00840.html} + + +\<ooffice bib with bibname\><<< +\def\ref:name{\bibname} +|<ooffice bib|> +>>> + + +\<ooffice bib with refname\><<< +\def\ref:name{\refname} +|<ooffice bib|> +>>> + + + +\<ooffice bib\><<< +\HAssign\bib:N=0 +\:CheckOption{bib-}\if:Option + \ConfigureList{thebibliography}% + {\IgnorePar\EndP \gHAdvance\bib:N by 1 + \let\en:bib=\empty + } + {\en:bib} + {\en:bib\def\en:bib{\HCode{</text:p>}}\HCode + {<text:p text:style-name="p-bibitem" >}} + {} +\else + \Log:Note{for a degraded bibliography friendlier for conversion to .doc, + use the command line option `bib-'} + \ConfigureList{thebibliography}% + {\IgnorePar\EndP \gHAdvance\bib:N by 1 + \HCode{<text:bibliography text:name="bib-\bib:N" > + <text:bibliography-source>\Hnewline + |<bibliography source|>\Hnewline + </text:bibliography-source>\Hnewline + <text:index-body>\Hnewline + }\let\en:bib=\empty + } + {\en:bib\HCode{</text:index-body></text:bibliography>}} + {\en:bib\def\en:bib{\HCode{</text:p>}}\HCode + {<text:p text:style-name="p-bibitem" >}} + {} +\fi +\Configure{bibitem}{\Link}{\EndLink\space } +>>> + + +\<ooffice bib\><<< +\NewConfigureOO{p-bibitem} +\ConfigureOO{p-bibitem}{% + <style:style style:name="p-bibitem"\Hnewline + style:family="paragraph" \Hnewline + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties fo:margin-left="1cm"\Hnewline + fo:text-indent="-1cm"\Hnewline + fo:margin-right="0cm" \Hnewline + style:auto-text-indent="false">\Hnewline + <style:tab-stops/>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style>\Hnewline +} +>>> + + +\<bibliography source\><<< +<text:index-title-template>}\NoFonts\ref:name\EndNoFonts\HCode{% +</text:index-title-template>\Hnewline +% + <text:bibliography-entry-template\Hnewline + text:bibliography-type="custom1" + text:style-name="Bibliography11" >\Hnewline +% + <text:index-entry-bibliography + text:bibliography-data-field="identifier" />\Hnewline +% + <text:index-entry-span>: </text:index-entry-span>\Hnewline + <text:index-entry-bibliography + text:bibliography-data-field="author" />\Hnewline + <text:index-entry-span>, </text:index-entry-span>\Hnewline +% + <text:index-entry-bibliography + text:bibliography-data-field="title" />\Hnewline + <text:index-entry-span>, </text:index-entry-span>\Hnewline +% + <text:index-entry-bibliography + text:bibliography-data-field="year" />\Hnewline + </text:bibliography-entry-template>\Hnewline +>>> + + + +%%%%%%%%%%%%%%%%%%% +\subsection{jurabib} +%%%%%%%%%%%%%%%%%%% + + + + +\<configure ooffice jurabib\><<< +\HAssign\jbancorDepth=0 +\Configure{jblink} + {\HAdvance\jbancorDepth by 1 \Link} + {\EndLink \HAdvance\jbancorDepth by -1 } +\Configure{jbanchor} + {\bgroup + \ifnum \jbancorDepth=0 + \Configure{Link}{text:a}{xlink:href=}% + {office:name=}{}% + \else + \Configure{Link}{text:span}{}{text:style-name=}{}% + \def\NOHREF:##1{}% + \fi + \Link} + {\EndLink \egroup} +>>> + +Nested anchors are broken +See html4 comment regarding \verb+\Configure{jbanchor}{\Link}{\EndLink}+ + +%%%%%%%%%%%%% +\subsection{biblatex} +%%%%%%%%%%%%% + +\<configure ooffice biblatex\><<< +\Configure{thebibliography}% + {\ifvmode \IgnorePar\fi \EndP + \EndP\HCode{<text:list text:style-name="printthebibliography" + text:name="printthebibliography"\Hnewline>}% + \PushMacro\end:itm + \global\let\end:itm=\empty} + {\ifvmode \IgnorePar\fi \EndP + \PopMacro\end:itm \global\let\end:itm \end:itm + \EndP\HCode{</text:p></text:list-item></text:list>}\ShowPar} + {\ifvmode \IgnorePar\fi \EndP + \end:itm \global\def\end:itm{\EndP\HCode{</text:p></text:list-item>}}% + \HCode{<text:list-item><text:h + text:style-name="printthebibliography-dt"\Hnewline>}\bgroup \bf} + {\ifvmode \IgnorePar\fi \EndP + \egroup\HCode{</text:h><text:p + text:style-name="printthebibliography-dd"\Hnewline>}\par\ShowPar} +>>> + +\<configure ooffice biblatex\><<< +\Configure{bibinit}{\IgnorePar} +>>> + + + +\<configure ooffice biblatex\><<< +\Configure{printshorthands} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:list + text:style-name="printshorthands" + text:name="printshorthands"\Hnewline + ><text:list-item><text:h + text:style-name="printshorthands-dt"\Hnewline>}% + } + {\ifvmode \IgnorePar\fi \EndP + \HCode{</text:list-item></text:list>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</text:list-item><text:list-item><text:h + text:style-name="printshorthands-dt"\Hnewline>}} + {\HCode{</text:h><text:p text:style-name="printshorthands-dd">}% + \Next:EndP{\HCode{</text:p>}}% + } +\Configure{@shorthands} + {\Configure{printfield-annotation} + {\HTML:PAR{printshorthands-dd}{printshorthands-dd}} + {}% + } +>>> + +\<configure ooffice biblatex\><<< +\Configure{biblatex-style}{authortitle}{} +\Configure{biblatex-style}{authortitle-comp}{} +\Configure{biblatex-style}{authortitle-tcomp}{} +\Configure{biblatex-style}{authortitle-icomp}{} +\Configure{biblatex-style}{authortitle-ibid}{} +\Configure{biblatex-style}{authoryear}{} +\Configure{biblatex-style}{authoryear-ibid}{} +\Configure{biblatex-style}{authoryear-comp}{} +\Configure{biblatex-style}{verbose}{} +\Configure{biblatex-style}{verbose-ibid}{} +\Configure{biblatex-style}{verbose-note}{} +\Configure{biblatex-style}{alphabetic-verb}{} +\Configure{biblatex-style}{alphabetic}{} +\Configure{biblatex-style}{numeric}{} +\Configure{biblatex-style}{numeric-verb}{} +\Configure{biblatex-style}{numeric-comp}{} +\Configure{biblatex-style}{draft}{} +\Configure{biblatex-style}{reading}{} +\Configure{biblatex-style}{verbose-trad1}{} +\Configure{biblatex-style}{verbose-trad2}{} +>>> + + + +\<configure ooffice latex\><<< +\NewConfigureOO{printshorthands} +\ConfigureOO{printshorthands}{|<printshorthands style|>} +>>> + + + +\<printshorthands style\><<< +<text:list-style style:name="printshorthands" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0in" + text:min-label-width="0in" + text:min-label-distance="0in" />\Hnewline + </text:list-level-style-bullet> +</text:list-style> +<style:style + style:name="printshorthands-dd" + style:family="paragraph" + style:parent-style-name="Standard"> + <style:paragraph-properties + fo:margin-left="0.35in" + fo:margin-right="0in" + fo:margin-top="0cm" + fo:margin-bottom="0.2cm" + fo:text-indent="0in" + style:auto-text-indent="false"/> +</style:style> +<style:style + style:name="printshorthands-dt" + style:family="paragraph" + style:parent-style-name=""> + <style:paragraph-properties + fo:margin-left="0.1in" + fo:margin-right="0in" + fo:text-indent="0in" + style:auto-text-indent="false"/> +</style:style> +>>> + + + + + + + + +\<configure ooffice latex\><<< +\NewConfigureOO{printthebibliography} +\ConfigureOO{printthebibliography}{|<printthebibliography style|>} +>>> + + + +\<printthebibliography style\><<< +<text:list-style style:name="printthebibliography" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0in" + text:min-label-width="0in" + text:min-label-distance="0in" />\Hnewline + </text:list-level-style-bullet> +</text:list-style> +<style:style + style:name="printthebibliography-dd" + style:family="paragraph" + style:parent-style-name="Standard"> + <style:paragraph-properties + fo:margin-left="0.35in" + fo:margin-right="0in" + fo:margin-top="0cm" + fo:margin-bottom="0.2cm" + fo:text-indent="-0.35in" + style:auto-text-indent="false"/> +</style:style> +<style:style + style:name="printthebibliography-dt" + style:family="paragraph" + style:parent-style-name=""> + <style:paragraph-properties + fo:margin-top="0cm" + fo:margin-bottom="0cm" + style:auto-text-indent="false"/> +</style:style> +>>> + + + + + + +%%%%%%%%%%%%% +\subsection{footnote-dw} +%%%%%%%%%%%%% + +\<configure ooffice footnote-dw\><<< +>>> + +% There used to be the following redefinition: +% \protected\long\def\mkfootnotecite#1{#1} +% I don't know what was the reasoning, but +% footnote citing works well with the current +% Biblatex and TeX4ht, so I think we can remove it. + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{List-Based Environments} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Quotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<ooffice begin-end env\><<< +\ConfigureEnv{quote} + {|<begin env section|>} + {|<end env section|>\par\ShowPar} + {\EndP \ifvmode \IgnorePar\fi + \bgroup |<HtmlPar at quote|>% + } + {\IgnorePar\EndP \egroup \ShowPar \ShowIndent} +>>> + + +\<HtmlPar at quote\><<< +\Configure{HtmlPar} + {\EndP \HCode{|<input line num|>% + <text:p text:style-name="quote|<cond rtl class|>" + >}} + {\EndP \HCode{|<input line num|>% + <text:p text:style-name="quote|<cond rtl class|>" + >}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% +>>> + +\<configure ooffice latex\><<< +\NewConfigureOO{quote} +\ConfigureOO{quote}{\Hnewline +<style:style style:name="quote" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-left="1cm" + fo:margin-right="1cm" + fo:margin-top="0.199cm" + fo:margin-bottom="0.199cm" + fo:text-indent="0cm" + style:auto-text-indent="false"/>\Hnewline +</style:style> +\Hnewline |<quote rtl|>} +>>> + + +\<configure ooffice csquotes\><<< +\Configure{displayquote}{\EndP% +\bgroup \Configure{HtmlPar}% +{\EndP \HCode{<text:p text:style-name="quote\if@rl-rtl\fi">}}% +{\EndP \HCode{<text:p text:style-name="quote\if@rl-rtl\fi">}}% +{\HCode{</text:p>}}% +{\HCode{</text:p>}}% +}{}{}{\egroup\noindent} +>>> + + + +%%%%%%%%%%%%% +\subsection{Environment Envelop} +%%%%%%%%%%%%% + + + + +\<configure ooffice latex\><<< +\HAssign\BegEnd:N=0 +\HAssign\BegEnd:D=0 +>>> + + + +\<begin env section\><<< +\ifvmode \IgnorePar\fi \EndP +\ifnum \BegEnd:D=0 + |<sectioned env|>% +\else + |<boxed env|>% +\fi +\gHAdvance\BegEnd:D by 1 +>>> + +\<end env section\><<< +\gHAdvance\BegEnd:D by -1 +\ifvmode \IgnorePar\fi\EndP +\ifnum \BegEnd:D=0 + |<end sectioned env|>% +\else + |<end boxed env|>% +\fi +>>> + + + + +\<sectioned env\><<< +\gHAdvance\BegEnd:N by 1 +\HCode{<text:section + text:style-name="begin-end-env" + text:name="begin-end-env-\BegEnd:N" + >% + <text:p text:style-name="begin-env-p" ></text:p>}% +>>> + +\<end sectioned env\><<< +\HCode{<text:p text:style-name="end-env-p" ></text:p></text:section>}% +>>> + + +\<boxed env\><<< +\gHAdvance\BegEnd:N by 1 +\hbox{\HCode{<text:p><draw:frame + draw:name="begin-end-env-\BegEnd:N" + draw:style-name="env-frame" + text:anchor-type="as-char" +% fo:min-width="0.14in" + svg:width="90\%" + draw:z-index="0" + > + <draw:text-box +% fo:min-height="0.14in" + >}}% +>>> + + +\<end boxed env\><<< +\hbox{\HCode{</draw:text-box> +</draw:frame></text:p> }}% +>>> + + + + + +\<configure ooffice latex\><<< +\NewConfigureOO{begin-end-env} +\ConfigureOO{begin-end-env}{\Hnewline +<style:style style:name="begin-env-p" style:family="paragraph">\Hnewline + <style:paragraph-properties fo:margin-top="2mm" + fo:margin-bottom="0mm" + fo:line-height="0.1mm" />\Hnewline +</style:style>\Hnewline +<style:style style:name="end-env-p" style:family="paragraph">\Hnewline + <style:paragraph-properties fo:margin-bottom="2mm" + fo:margin-top="0mm" + fo:line-height="0.1mm" />\Hnewline +</style:style>\Hnewline +} +>>> + +The indirect use of paragraphs is due to OpenOffice not recognizing +vertical spaces around sections. + +\begin{verbatim} +<style:style style:name="begin-end-env" + style:family="section">\Hnewline + <style:text-properties fo:margin-top="0.4cm" + fo:margin-bottom="0.4cm" />\Hnewline +</style:style>\Hnewline +\end{verbatim} + + +\<configure ooffice latex\><<< +\NewConfigureOO{env-frame} +\ConfigureOO{env-frame}{\Hnewline +<style:style + style:name="env-frame" + style:family="graphic" +>\Hnewline + <style:graphic-properties + style:vertical-pos="top" + style:vertical-rel="baseline" + style:horizontal-pos="from-left" + style:horizontal-rel="paragraph-content" + fo:padding="0in" + fo:border="none" + style:shadow="none" + />\Hnewline +</style:style>\Hnewline +} +>>> + + + +\<\><<< + style:parent-style-name="EnvFrame" + + +<style:style + style:name="EnvFrame" + style:family="graphic" +>\Hnewline + <style:graphic-properties + text:anchor-type="paragraph" +% style:wrap="parallel" +% style:number-wrapped-paragraphs="no-limit" + style:wrap-contour="false" + style:vertical-pos="top" + style:vertical-rel="paragraph-content" + style:horizontal-pos="center" + style:horizontal-rel="paragraph-content" + fo:padding="0in" + fo:border="0.0in"/> \Hnewline +</style:style> \Hnewline + +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Quotations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<ooffice begin-end env\><<< +\ConfigureEnv{quotation} + {|<begin env section|>} + {|<end env section|>\par\ShowPar \noindent} + {\IgnorePar\EndP \bgroup |<HtmlPar for quatation|>} + {\EndP\IgnorePar \egroup \ShowPar } +>>> + +\<HtmlPar for quatation\><<< +\Configure{HtmlPar} + {\EndP \HCode{<text:p text:style-name="quotation|<cond rtl class|>" + >}} + {\EndP \HCode{<text:p text:style-name="quotation|<cond rtl class|>" + >}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% +>>> + +\<ooffice begin-end env\><<< +\NewConfigureOO{quotation} +\ConfigureOO{quotation} + {\Hnewline + <style:style style:name="quotation" + style:family="paragraph" + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties + fo:margin-left="1cm" + fo:margin-right="1cm" + fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:text-indent="0.499cm" + style:auto-text-indent="true"/>\Hnewline + </style:style>\Hnewline |<quotation rtl|>% + } +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{flush right and left} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<ooffice begin-end env\><<< +\ConfigureEnv{flushright} + {|<begin env section|>\HCode{<!--begin flushright-->}} + {|<end env section|>% + \HCode{<!--end flushright-->}|<try env inline par|>} + {} {} +\ConfigureList{flushright} + {}{}{|<HtmlPar at flushright|>\par}{} +>>> + + +\<HtmlPar at flushright\><<< +\Configure{HtmlPar} + {\EndP \HCode{<text:p text:style-name="flushright" >}} + {\EndP \HCode{<text:p text:style-name="flushright" >}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% +>>> + + + +\<ooffice begin-end env\><<< +\NewConfigureOO{flushright} +\ConfigureOO{flushright} + {\Hnewline +<style:style style:name="flushright" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body" + style:master-page-name=""> +<style:paragraph-properties fo:margin-top="0.199cm" + fo:margin-bottom="0.199cm" + fo:text-align="end" + style:justify-single-word="false" + style:page-number="0"/> +</style:style>\Hnewline + } +>>> + + + + +\<ooffice begin-end env\><<< +\ConfigureEnv{flushleft} + {|<begin env section|>\HCode{<!--begin flushleft-->}} + {|<end env section|>% + \HCode{<!--end flushleft-->}\par\ShowPar} + {} {} +\ConfigureList{flushleft} + {}{}{|<HtmlPar at flushleft|>\par}{} +>>> + + +\<HtmlPar at flushleft\><<< +\Configure{HtmlPar} + {\EndP \HCode{<text:p text:style-name="flushleft" >}} + {\EndP \HCode{<text:p text:style-name="flushleft" >}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% +>>> + + + +\<ooffice begin-end env\><<< +\NewConfigureOO{flushleft} +\ConfigureOO{flushleft} + {\Hnewline +<style:style style:name="flushleft" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body"> +<style:paragraph-properties fo:margin-top="0.199cm" + fo:margin-bottom="0.199cm" + fo:text-align="start" + style:justify-single-word="false"/> +</style:style> + \Hnewline} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{center} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<ooffice begin-end env\><<< +\ConfigureEnv{center} + {|<begin env section|>\HCode{<!--begin center-->}} + {|<end env section|>% + \HCode{<!--end center-->}\par|<try env inline par|>} + {} {} +\ConfigureList{center} + {}{}{|<HtmlPar at center|>\par}{} +>>> + +The \verb=\par= at the end of \verb=\ConfigureEnv{center}= +is required for cases like the following one. + +\begin{verbatim} +\documentclass[titlepage]{article} +\begin{document} + \begin{abstract} + file. (see below) + + file. (see below) + + file. (see below) + \end{abstract} +\end{document} +\end{verbatim} + +\<HtmlPar at center\><<< +\Configure{HtmlPar} + {\EndP \HCode{<text:p text:style-name="center" >}} + {\EndP \HCode{<text:p text:style-name="center" >}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% +>>> + +\<ooffice begin-end env\><<< +\NewConfigureOO{center} +\ConfigureOO{center} + {\Hnewline + <style:style style:name="center" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body"> +<style:paragraph-properties fo:margin-top="0.199cm" + fo:margin-bottom="0.199cm" + fo:text-align="center" + style:justify-single-word="false"> + <style:tab-stops/> +</style:paragraph-properties > +</style:style>\Hnewline + } +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{centerline} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<ooffice begin-end env\><<< +|<aligned lines|> +>>> + +\<plain aligned lines\><<< +|<aligned lines|> +>>> + + +\<aligned lines\><<< +\Configure{centerline} + {\EndP \ifvmode \IgnorePar \fi + \HCode{<text:p text:style-name="FirstCenterPar" >}} + {\HCode{</text:p>}|<try inline par|>} + +\Configure{leftline} + {\EndP \ifvmode \IgnorePar \fi + \HCode{<text:p text:style-name="FirstLeftPar" >}} + {\HCode{</text:p>}|<try inline par|>} + +\Configure{rightline} + {\EndP \ifvmode \IgnorePar \fi + \HCode{<text:p text:style-name="FirstRightPar" >}} + {\HCode{</text:p>}|<try inline par|>} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Sections} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +THe following protects section titles from side effects, and also is +introduced for protecting writeups to tables of contents. + + + +\<configure ooffice latex\><<< +\Configure{NoSection} + {\let\sv:index\index \let\sv:label\label + \let\sv:newline\newline \def\newline{ }% + \let\sv:setfontsize\@setfontsize \let\@setfontsize\:gobbleIII + \let\index\@gobble \let\label\@gobble + \let\sva:rEfLiNK\a:rEfLiNK + \let\svb:rEfLiNK\b:rEfLiNK + \let\svc:rEfLiNK\c:rEfLiNK + \expandafter\let\expandafter\svC:rEfLiNK\c:rEfLiNK + \Configure{ref}{}{}{}% \let\sv:ref\ref \let\ref\@gobble + } + {\let\index\sv:index \let\label\sv:label + \let\a:rEfLiNK\sva:rEfLiNK + \let\b:rEfLiNK\svb:rEfLiNK + \let\c:rEfLiNK\svc:rEfLiNK + \expandafter\let\c:rEfLiNK\svC:rEfLiNK % \let\ref\sv:ref + \let\newline\sv:newline \let\@setfontsize\sv:setfontsize + } + +>>> + + + + +\<configure ooffice latex\><<< +\Configure{InsertTitle}{\let\label\lb:l + \let\ref\o:ref \Configure{ref}{}{}{}} +\Configure{AfterTitle}{\let\index\:index + \let\ref\:ref \let\label\lb:l } +>>> + + +The labels are needed for labels \HPage{nested} +\begin{verbatim} +\documentclass{article} +\begin{document} +\section{Introduction} + +AAA \ref{1111} + +\section{BBB\label{1111}} + +\end{document} +\end{verbatim} +\EndHPage{} +within titles. + +\<basic ooffice sections\><<< +\ifx \part\:UnDef\else + \Configure{part} + {\IgnorePar\EndP \HCode{<!--start part-->}} + {\IgnorePar\EndP \HCode{<!--end part-->}} + {\HCode{<text:p text:style-name="part" > + <text:span text:style-name="part">}\TitleMark\space + \HCode{</text:span>}% + \HCode{<text:line-break/>}} + {\HCode{</text:p>\Hnewline}\par\ShowPar\IgnoreIndent} + \ConfigureMark{part}{\partname\space\thepart} + \NewConfigureOO{part} + \ConfigureOO{part}{\Hnewline + <style:style style:name="part" + style:family="paragraph" + style:parent-style-name="Heading|<cond rtl class|>" + style:next-style-name="Text-body" + style:list-style-name="part">\Hnewline + <style:paragraph-properties fo:margin-top="0.52cm" + fo:margin-bottom="0.21cm" + fo:font-size="18pt"/>\Hnewline + </style:style>\Hnewline + } +\fi +>>> + + + + +\<od definitions\><<< +\def\list:text:level{text:level} +\def\text:outlinelevel{text:outline-level} +\def\style:tableproperties{style:table-properties } +\def\style:sectionproperties{style:section-properties } +\def\text:orderedlist{text:list } +\def\text:unorderedlist{text:list } +>>> + + +\<ooffice chapters\><<< +\Configure{chapter} + {\IgnorePar\EndP \HCode{<!--start of chapter-->|<new page|>}} + {\IgnorePar\EndP \HCode{<!--end of chapter-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-1|<cond rtl class|>\endcsname" + \text:outlinelevel="1" ><text:span + text:style-name="chapter" >}\TitleMark\space + \HCode{</text:span>}% + \HCode{<text:line-break/>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{likechapter} + {\IgnorePar\EndP \HCode{<!--start of chapter*-->|<new page|>}} + {\IgnorePar\EndP \HCode{<!--end of chapter*-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-1|<cond rtl class|>\endcsname" + \text:outlinelevel="1" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + +\<report chapters\><<< +\ConfigureMark{chapter} + {\chaptername \ \thechapter} +>>> + +\<book chapters\><<< +\ConfigureMark{chapter} + {\if@mainmatter \chaptername \ \thechapter\fi} +>>> + + + +\<book chapters\><<< +\ConfigureMark{appendix} + {\if@mainmatter \appendixname \ \thechapter\fi} +\Configure{appendix} + {\IgnorePar\EndP \HCode{<!--start of appendix-->|<new page|>}} + {\IgnorePar\EndP \HCode{<!--end of appendix-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-1|<cond rtl class|>\endcsname" + \text:outlinelevel="1" ><text:span + text:style-name="chapter" >}\TitleMark\space + \HCode{</text:span>}% + \HCode{<text:line-break/>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + + + + + +\<basic ooffice sections\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \@seccntformat{section}\fi } +\Configure{section} + {\IgnorePar\EndP \HCode{<!--start of section-->}} + {\IgnorePar\EndP \HCode{<!--end of section-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-2|<cond rtl class|>\endcsname" + \text:outlinelevel="2" ><text:span + text:style-name="section" >}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + + +\<basic ooffice sections\><<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \@seccntformat{subsection}\fi } +\Configure{subsection} + {\IgnorePar\EndP \HCode{<!--start of subsection-->}} + {\IgnorePar\EndP \HCode{<!--end of subsection-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-3|<cond rtl class|>\endcsname" + \text:outlinelevel="3" ><text:span + text:style-name="subsection" >}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + +\<basic ooffice sections\><<< +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \@seccntformat{subsubsection}\fi } +\Configure{subsubsection} + {\IgnorePar\EndP \HCode{<!--start of subsubsection-->}} + {\IgnorePar\EndP \HCode{<!--end of subsubsection-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-4|<cond rtl class|>\endcsname" + \text:outlinelevel="4" ><text:span + text:style-name="subsubsection" >}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + +\<basic ooffice sections\><<< +\Configure{likesection} + {\IgnorePar\EndP \HCode{<!--start of section*-->}} + {\IgnorePar\EndP \HCode{<!--end of section*-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-2|<cond rtl class|>\endcsname" + \text:outlinelevel="2" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{likesubsection} + {\IgnorePar\EndP \HCode{<!--start of subsection*-->}} + {\IgnorePar\EndP \HCode{<!--end of subsection*-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-3|<cond rtl class|>\endcsname" + \text:outlinelevel="3" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{likesubsubsection} + {\IgnorePar\EndP \HCode{<!--start of subsection*-->}} + {\IgnorePar\EndP \HCode{<!--end of subsection*-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-4|<cond rtl class|>\endcsname" + \text:outlinelevel="4" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + +Paragraph configurations + +\<basic ooffice sections\><<< +\:DefineParagraph{paragraph}{paragraph-h} +\:DefineParagraph{likeparagraph}{paragraph-h} +\:DefineParagraph{subparagraph}{subparagraph-h} +\:DefineParagraph{likesubparagraph}{subparagraph-h} + + +\:BoldStyle{paragraph-h} +\:BoldStyle{subparagraph-h} +>>> + + +\<basic ooffice sectionsNO\><<< +\Configure{paragraph} + {\IgnorePar\EndP \HCode{<!--start of paragraph-->}} + {\IgnorePar\EndP \HCode{<!--end of paragraph-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-5|<cond rtl class|>\endcsname" + \text:outlinelevel="5" >}} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{subparagraph} + {\IgnorePar\EndP \HCode{<!--start of subparagraph-->}} + {\IgnorePar\EndP \HCode{<!--end of subparagraph-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-6|<cond rtl class|>\endcsname" + \text:outlinelevel="6" >}} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + + + +\<configure ooffice tex4ht\><<< +\Configure{TocAt}{}{} +\Configure{TocAt*}{}{} +>>> + + +A configuration `\verb!\Configure{Heading-1}{Heading 1}!' +will provide the default setting of OpenOffice. It might be +a more desirable for translations into MS Word. + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-1}{1} +\Configure{Heading-1}{Heading-1} +\NewConfigureOO{Heading-1} +\ConfigureOO{Heading-1}{\Hnewline +<style:style style:name="Heading-1" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="17.2999992370605pt" + fo:font-weight="bold" + style:font-size-asian="115\%" + style:font-weight-asian="bold" + style:font-size-complex="115\%" + style:font-weight-complex="bold" + fo:margin-top="40pt" + fo:margin-bottom="25pt" + /> +</style:style> +\Hnewline |<Heading 1 rtl|> } +>>> + + + + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-2}{1} +\Configure{Heading-2}{Heading-2} +\NewConfigureOO{Heading-2} +\ConfigureOO{Heading-2}{\Hnewline +<style:style style:name="Heading-2" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="14.3999996185303pt" + style:font-size-complex="14pt" + style:font-style-complex="italic" + style:font-weight-complex="bold" + fo:margin-top="12pt" + fo:margin-bottom="9pt" + /> +</style:style> +\Hnewline |<Heading 2 rtl|> } +>>> + + + + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-3}{1} +\Configure{Heading-3}{Heading-3} +\NewConfigureOO{Heading-3} +\ConfigureOO{Heading-3}{\Hnewline +<style:style style:name="Heading-3" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="12pt" + fo:font-weight="bold" + style:font-size-asian="14pt" + style:font-weight-asian="bold" + style:font-size-complex="14pt" + style:font-weight-complex="bold"/> +</style:style> +\Hnewline |<Heading 3 rtl|>} +>>> + + + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-4}{1} +\Configure{Heading-4}{Heading-4} +\NewConfigureOO{Heading-4} +\ConfigureOO{Heading-4}{\Hnewline +<style:style style:name="Heading-4" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="12pt" + fo:font-weight="bold" + fo:margin-top="0.42cm" + fo:margin-bottom="0cm" + style:font-size-complex="85\%" + style:font-style-complex="italic" + style:font-weight-complex="bold" +/> +</style:style> +\Hnewline |<Heading 4 rtl|>} +>>> + + + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-5}{1} +\Configure{Heading-5}{Heading-5} +\NewConfigureOO{Heading-5} +\ConfigureOO{Heading-5}{\Hnewline +<style:style style:name="Heading-5" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0.42cm" + fo:margin-bottom="0cm" + fo:font-size="12pt" + fo:font-style="italic" + fo:font-weight="normal" + style:font-size-complex="85\%" + style:font-weight-complex="bold" + fo:text-indent="0cm" + style:auto-text-indent="false"/> +</style:style> +\Hnewline |<Heading 5 rtl|>} +>>> + + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-6}{1} +\Configure{Heading-6}{Heading-6} +\NewConfigureOO{Heading-6} +\ConfigureOO{Heading-6}{\Hnewline +<style:style style:name="Heading-6" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold"/> +</style:style> +\Hnewline |<Heading 6 rtl|>} +>>> + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-7}{1} +\Configure{Heading-7}{Heading-7} +\NewConfigureOO{Heading-7} +\ConfigureOO{Heading-7}{\Hnewline +<style:style style:name="Heading-7" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold"/> +</style:style> +\Hnewline |<Heading 7 rtl|>} +>>> + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-8}{1} +\Configure{Heading-8}{Heading-8} +\NewConfigureOO{Heading-8} +\ConfigureOO{Heading-8}{\Hnewline +<style:style style:name="Heading-8" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold"/> +</style:style> +\Hnewline |<Heading 8 rtl|>} +>>> + + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-9}{1} +\Configure{Heading-9}{Heading-9} +\NewConfigureOO{Heading-9} +\ConfigureOO{Heading-9}{\Hnewline +<style:style style:name="Heading-9" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold"/> +</style:style> +\Hnewline |<Heading 9 rtl|>} +>>> + + +\<basic ooffice section styles\><<< +\NewConfigure{Heading-10}{1} +\Configure{Heading-10}{Heading-10} +\NewConfigureOO{Heading-10} +\ConfigureOO{Heading-10}{\Hnewline +<style:style style:name="Heading-10" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold"/> +</style:style> +\Hnewline |<Heading 10 rtl|>} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Scr} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice scrbook\><<< +\ConfigureMark{chapter} + {\if@mainmatter \thechapter.~~\fi} +>>> + + +\<configure ooffice scrreprt\><<< +\ConfigureMark{chapter}{\thechapter~~} +>>> + +\<scr ooffice chapters\><<< +\Configure{chapter} + {\IgnorePar\EndP \HCode{<!--start of chapter-->|<new page|>}} + {\IgnorePar\EndP \HCode{<!--end of chapter-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-1\endcsname" + \text:outlinelevel="1" ><text:span + text:style-name="chapter">}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{likechapter} + {\IgnorePar\EndP \HCode{<!--start of chapter*-->|<new page|>}} + {\IgnorePar\EndP \HCode{<!--end of chapter*-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-1\endcsname" + \text:outlinelevel="1" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{addchap} + {\IgnorePar\EndP \HCode{<!--start of addchap-->|<new page|>}} + {\IgnorePar\EndP \HCode{<!--end of addchap-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-1\endcsname" + \text:outlinelevel="1" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + +\<basic scr ooffice sections\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \thesection\space\fi } +\Configure{section} + {\IgnorePar\EndP \HCode{<!--start of section-->}} + {\IgnorePar\EndP \HCode{<!--end of section-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-2\endcsname" + \text:outlinelevel="2" ><text:span + text:style-name="section">}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + + +\<basic scr ooffice sections\><<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \thesubsection\space\fi } +\Configure{subsection} + {\IgnorePar\EndP \HCode{<!--start of subsection-->}} + {\IgnorePar\EndP \HCode{<!--end of subsection-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-3\endcsname" + \text:outlinelevel="3" ><text:span + text:style-name="subsection" >}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + +\<basic scr ooffice sections\><<< +\Configure{likesection} + {\IgnorePar\EndP \HCode{<!--start of section*-->}} + {\IgnorePar\EndP \HCode{<!--end of section*-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-2\endcsname" + \text:outlinelevel="2" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{likesubsection} + {\IgnorePar\EndP \HCode{<!--start of subsection*-->}} + {\IgnorePar\EndP \HCode{<!--end of subsection*-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-3\endcsname" + \text:outlinelevel="3" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{likesubsubsection} + {\IgnorePar\EndP \HCode{<!--start of subsubsection*-->}} + {\IgnorePar\EndP \HCode{<!--end of subsubsection*-->}} + {\HCode{<text:h text:style-name="\csname a:Heading-4\endcsname" + \text:outlinelevel="4" >}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + + +\<basic scr ooffice sections\><<< +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \@seccntformat{subsubsection}\fi } +\Configure{subsubsection} + {\IgnorePar\EndP \HCode{<!--start of subsubsection-->}} + {\IgnorePar\EndP \HCode{<!--end of subsubsection-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-4|<cond rtl class|>\endcsname" + \text:outlinelevel="4" ><text:span + text:style-name="subsubsection" >}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} + + +% use the new mechanism for paragraph handling +\:DefineParagraph{paragraph}{paragraph-h} +\:DefineParagraph{likeparagraph}{paragraph-h} +\:DefineParagraph{subparagraph}{subparagraph-h} +\:DefineParagraph{likesubparagraph}{subparagraph-h} + + +\:BoldStyle{paragraph-h} +\:BoldStyle{subparagraph-h} + +>>> + + + +\<scrbook end units\><<< +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsection} + {likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,addchap,appendix,part,likepart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,addchap,appendix,part,likepart} +>>> + + +%%%%%%%%%%%%% +\subsection{alphanum} +%%%%%%%%%%%%% + +\<configure ooffice alphanum\><<< +\bgroup + \let\ifx=\relax + \let\:temp=\relax + \let\:tempa=\expandafter + \let\expandafter=\relax + \let\:TableOfContents=\relax + \let\else=\relax + \let\if=\relax + \let\fi=\relax + \def\Auto:ent#1{\noexpand\Auto:ent{#1,toclvla,liketoclvla,toclvlb,% + liketoclvlb,toclvlc,liketoclvlc,toclvld,liketoclvld,toclvle,% + liketoclvle,toclvlf,liketoclvlf,toclvlg,liketoclvlg,toclvlh,% + liketoclvlh,toclvli,liketoclvli,toclvlj,% + liketoclvlj,toclvlk,liketoclvlk,toclvll,liketoclvll}} + \edef\:TOC{\def\noexpand\:TOC{\:TOC}} + \:tempa +\egroup \:TOC +>>> + + +\<configure ooffice alphanum\><<< +\ConfigureToc{chapter} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +>>> + +\<configure ooffice alphanum\><<< +\def\:tempc#1#2#3#4{% + \ConfigureMark{toclvl#1} + {\HCode{<text:span + text:style-name="toclvl#1" >}\csname thelvl#1\endcsname + \HCode{</text:span><text:s/>}}% + \Configure{toclvl#1} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{<text:h + text:style-name="\csname a:Heading-#4\endcsname" + \text:outlinelevel="#4" + >}\TitleMark\space\HtmlParOff} + {\HCode{</text:h>}\HtmlParOn \ShowPar\IgnoreIndent \par}% + \ConfigurToc{toclvl#1} + {\HCode{<text:p text:style-name="P#4"><text:span + text:style-name="toc-mark">}% + |<alphanum toc spaces|>% + \def\:temp{\J@INumberRoot{#2}{\tmp:cnt}}% + \afterassignment\:temp \tmp:cnt} + {#3\HCode{</text:span><text:s/>}} + {} + {\HCode{</text:p>}}% + \ConfigureToc{liketoclvl#1} + {\HCode{<text:p text:style-name="P#4" ><text:span + text:style-name="toc-mark" >}% + |<alphanum toc spaces|>% + \def\:temp{\J@INumberRoot{#2}{\tmp:cnt}}% + \afterassignment\:temp \tmp:cnt} + {#3\HCode{</text:span><text:s/>}} + {} + {\HCode{</text:p>}}% +} +\:tempc a1{.}{3} +\:tempc b2{.}{4} +\:tempc c3{.}{5} +\:tempc d4{)}{5} +\:tempc e5{)}{5} +\:tempc f6{)}{5} +\:tempc g7{)}{5} +\:tempc h8{)}{5} +\:tempc i9{)}{5} +\:tempc j{10}{)}{5} +\:tempc k{11}{)}{5} +\:tempc l{12}{)}{5} +>>> + +\<alphanum toc spaces\><<< +\tmp:cnt=0 \loop \advance\tmp:cnt by 1 + \ifnum \tmp:cnt<#2 ~~\repeat +>>> + + +%%%%%%%%%%%%% +\subsection{amsart} +%%%%%%%%%%%%% + + + + + + +\<basic ams ooffice sections\><<< +\ConfigureMark{section} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \@seccntformat{section}\fi } +\Configure{section} + {\IgnorePar\EndP \HCode{<!--start of section-->}} + {\IgnorePar\EndP \HCode{<!--end of section-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-2|<cond rtl class|>\endcsname" + \text:outlinelevel="2" ><text:span + text:style-name="section" >}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + +\<basic ams ooffice sections\><<< +\ConfigureMark{subsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \@seccntformat{subsection}\fi } +\Configure{subsection} + {\IgnorePar\EndP \HCode{<!--start of subsection-->}} + {\IgnorePar\EndP \HCode{<!--end of subsection-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-3|<cond rtl class|>\endcsname" + \text:outlinelevel="3" ><text:span + text:style-name="subsection" >}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + +\<basic ams ooffice sections\><<< +\ConfigureMark{subsubsection} + {\ifnum \c:secnumdepth>\c@secnumdepth \expandafter\:gobble + \else \@seccntformat{subsubsection}\fi } +\Configure{subsubsection} + {\IgnorePar\EndP \HCode{<!--start of subsubsection-->}} + {\IgnorePar\EndP \HCode{<!--end of subsubsection-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-4|<cond rtl class|>\endcsname" + \text:outlinelevel="4" ><text:span + text:style-name="subsubsection" >}\TitleMark\space + \HCode{</text:span>}\IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + +\<basic ams ooffice sections\><<< +\Configure{paragraph} + {\IgnorePar\EndP \HCode{<!--start of paragraph-->}} + {\IgnorePar\EndP \HCode{<!--end of paragraph-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-5|<cond rtl class|>\endcsname" + \text:outlinelevel="5" >}} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +\Configure{subparagraph} + {\IgnorePar\EndP \HCode{<!--start of subparagraph-->}} + {\IgnorePar\EndP \HCode{<!--end of subparagraph-->}} + {\HCode{<text:h + text:style-name="\csname a:Heading-6|<cond rtl class|>\endcsname" + \text:outlinelevel="6" >}} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables Of Contents} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Entries} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + \<non chap tocs\><<< +\ConfigureToc{part} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likepart} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{section} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likesection} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{subsection} + {\HCode{<text:p text:style-name="P2" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likesubsection} + {\HCode{<text:p text:style-name="P2" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{subsubsection} + {\HCode{<text:p text:style-name="P3" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likesubsubsection} + {\HCode{<text:p text:style-name="P3" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +>>> + + + + +\<chap tocs\><<< +\ConfigureToc{chapter} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}% + \ifx \chaptername\:UnDef\else \chaptername~\fi} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likechapter} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{appendix} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +>>> + + + + \<chap tocs\><<< +\ConfigureToc{part} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likepart} + {\HCode{<text:p text:style-name="P1" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{section} + {\HCode{<text:p text:style-name="P2" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likesection} + {\HCode{<text:p text:style-name="P2"><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{subsection} + {\HCode{<text:p text:style-name="P3" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likesubsection} + {\HCode{<text:p text:style-name="P3" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{subsubsection} + {\HCode{<text:p text:style-name="P4" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{likesubsubsection} + {\HCode{<text:p text:style-name="P4" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +>>> + +\verb+<text:tab-stop/>+ + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Content.xml Styles} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Why we need the following in content.xml instead of styles.xml + +\<automatic style 1\><<< +\Hnewline + <style:style style:name="P1" + style:family="paragraph" + style:parent-style-name="Contents-1">\Hnewline + <style:paragraph-properties >\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="16.999cm" + style:type="right" + style:leader-char="."/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style> + \Hnewline +>>> + + +\<automatic style 2\><<< +\Hnewline + <style:style style:name="P2" + style:family="paragraph" + style:parent-style-name="Contents-2">\Hnewline + <style:paragraph-properties >\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="16.999cm" + style:type="right" + style:leader-char="."/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style> + \Hnewline +>>> + + +\<automatic style 3\><<< +\Hnewline + <style:style style:name="P3" + style:family="paragraph" + style:parent-style-name="Contents-3">\Hnewline + <style:paragraph-properties >\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="16.999cm" + style:type="right" + style:leader-char="."/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style>\Hnewline + \Hnewline +>>> + + +\<automatic style 4\><<< +\Hnewline + <style:style style:name="P4" + style:family="paragraph" + style:parent-style-name="Contents-4">\Hnewline + <style:paragraph-properties >\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="16.999cm" + style:type="right" + style:leader-char="."/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style> + \Hnewline +>>> + + +\<automatic style 5\><<< +\Hnewline + <style:style style:name="P5" + style:family="paragraph" + style:parent-style-name="Contents-5">\Hnewline + <style:paragraph-properties >\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="16.999cm" + style:type="right" + style:leader-char="."/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style> \Hnewline +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Style.xml Styles} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<content style 1\><<< +\NewConfigureOO{Contents 1} +\ConfigureOO{Contents 1}{\Hnewline + <style:style style:name="Contents-1" + style:family="paragraph" + style:parent-style-name="Index" + style:class="index">\Hnewline + <style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0cm" + fo:margin-bottom="0.101cm" + fo:font-weight="bold" + fo:text-indent="0cm" + style:auto-text-indent="false">\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="16.999cm" + style:type="right" + style:leader-char="."/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style>\Hnewline +} +>>> + + + + + + + +\<content style 2\><<< +\NewConfigureOO{Contents 2} + \ConfigureOO{Contents 2}{\Hnewline + <style:style style:name="Contents-2" + style:family="paragraph" + style:parent-style-name="Index" + style:class="index"> + <style:paragraph-properties fo:margin-left="0.499cm" + fo:margin-right="0cm" + fo:text-indent="0cm" + style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="16.499cm" + style:type="right" + style:leader-char="."/> + </style:tab-stops> + </style:paragraph-properties > + </style:style> + \Hnewline} +>>> + + + +\<content style 3\><<< +\NewConfigureOO{Contents 3} +\ConfigureOO{Contents 3}{\Hnewline + <style:style style:name="Contents-3" + style:family="paragraph" + style:parent-style-name="Index" + style:class="index"> + <style:paragraph-properties fo:margin-left="0.998cm" + fo:margin-right="0cm" + fo:text-indent="0cm" + style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="16cm" + style:type="right" + style:leader-char="."/> + </style:tab-stops> + </style:paragraph-properties > + </style:style> + \Hnewline} +>>> + + + +\<content style 4\><<< +\NewConfigureOO{Contents 4} +\ConfigureOO{Contents 4}{\Hnewline + <style:style style:name="Contents-4" + style:family="paragraph" + style:parent-style-name="Index" + style:class="index">\Hnewline + <style:paragraph-properties fo:margin-left="1.498cm" + fo:margin-right="0cm" + fo:text-indent="0cm" + style:auto-text-indent="false">\Hnewline + <style:tab-stops> + <style:tab-stop style:position="15.501cm" + style:type="right" + style:leader-char="."/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style> + \Hnewline} +>>> + + + +\<content style 5\><<< +\NewConfigureOO{Contents 5} +\ConfigureOO{Contents 5}{\Hnewline + <style:style style:name="Contents-5" + style:family="paragraph" + style:parent-style-name="Index" + style:class="index">\Hnewline + <style:paragraph-properties fo:margin-left="1.997cm" + fo:margin-right="0cm" + fo:text-indent="0cm" + style:auto-text-indent="false">\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="15.002cm" + style:type="right" + style:leader-char="."/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style> +\Hnewline} +>>> + +%%%%%%%%%%%%% +\subsection{Toc Style Outline} +%%%%%%%%%%%%% + + + + + + +\<oo2 tex4ht\><<< +\def\index:entry:chapter{text:index-entry-chapter} +>>> + + + +\<toc template 1\><<< +<text:table-of-content-entry-template + text:outline-level="1" + text:style-name="Contents-1" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="." />\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + +\<toc template 2\><<< +<text:table-of-content-entry-template + text:outline-level="2" + text:style-name="Contents-2" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + + +\<toc template 3\><<< +<text:table-of-content-entry-template + text:outline-level="3" + text:style-name="Contents-3" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + + +\<toc template 4\><<< +<text:table-of-content-entry-template + text:outline-level="4" + text:style-name="Contents-4" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + +\<toc template 5\><<< +<text:table-of-content-entry-template + text:outline-level="5" + text:style-name="Contents-5" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + +\<toc template 6\><<< +<text:table-of-content-entry-template + text:outline-level="6" + text:style-name="Contents-6" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + +\<toc template 7\><<< +<text:table-of-content-entry-template + text:outline-level="7" + text:style-name="Contents-7" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + +\<toc template 8\><<< +<text:table-of-content-entry-template + text:outline-level="8" + text:style-name="Contents-8" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + +\<toc template 9\><<< +<text:table-of-content-entry-template + text:outline-level="9" + text:style-name="Contents-9" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + +\<toc template 10\><<< +<text:table-of-content-entry-template + text:outline-level="10" + text:style-name="Contents-10" >\Hnewline +<\index:entry:chapter />\Hnewline +<text:index-entry-text/>\Hnewline +<text:index-entry-tab-stop + style:type="right" + style:leader-char="."/>\Hnewline +<text:index-entry-page-number/>\Hnewline +</text:table-of-content-entry-template>\Hnewline +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{SCR Entries} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<scr chap tocs\><<< +\ConfigureToc{chapter} + {\HCode{<text:p text:style-name="chapterToc" ><text:span + text:style-name="toc-mark" >}} + { \HCode{</text:span>}} + {} + {\HCode{</text:p>}} +\ConfigureToc{addchap} + {} + {\HCode{<text:p text:style-name="addchapToc" >}} + {} + {\HCode{</text:p>}} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Links} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice tex4ht\><<< +\:CheckOption{TocLink}\if:Option + \Configure{TocLink}{\Link{#2}{#3}#4\ifvmode\IgnorePar\fi\EndLink} +\else + \Log:Note{to request links from the tables of contents, + use the command line option from `TocLink'} + \Configure{TocLink}{\Link{#2}{#3}\EndLink#4\ifvmode\IgnorePar\fi} +\fi +\Configure{toTocLink}{\Link}{\EndLink} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Envelop} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice latex\><<< +\Configure{tableofcontents} + {\IgnorePar\EndP\HCode{|<start toc|>}\IgnorePar} + {} + {\IgnorePar\EndP\HCode{|<end toc|>}\ShowPar} + {\HCode{\Hnewline}} {} +>>> + +\<start toc\><<< +<text:table-of-content + text:name="toc" + text:style-name="Sect1" + text:protected="true" >\Hnewline + <text:table-of-content-source + text:outline-level="|<outline level|>" >\Hnewline + |<toc outline|>% + </text:table-of-content-source>\Hnewline + <text:index-body>\Hnewline + \ifx\contentsname\empty \else + \ifx\contentsname\:UnDef \else + <text:index-title text:style-name="Sect2" text:name="contents" + > + <text:p text:style-name="Contents-Heading" + >\contentsname</text:p> + </text:index-title> + \fi \fi +>>> + +\<configure ooffice latex\><<< +\NewConfigureOO{Sect1} +\ConfigureOO{Sect1}{\Hnewline + <style:style style:name="Sect1" + style:family="section"> + <\style:sectionproperties> + <style:columns fo:column-count="1" + fo:column-gap="0cm"> + <style:column fo:margin-top="0.5cm" + fo:margin-left="0cm" + fo:margin-right="0cm" + /> + </style:columns> + </\style:sectionproperties> + </style:style> +\Hnewline } +>>> + +\<configure ooffice latex\><<< +\NewConfigureOO{Sect2} +\ConfigureOO{Sect2}{\Hnewline +<style:style style:name="Sect2" + style:family="section"> + <\style:sectionproperties> + <style:columns fo:column-count="0" fo:column-gap="0cm"/> + </\style:sectionproperties> +</style:style> +\Hnewline } +>>> + +\<configure ooffice latex\><<< +\NewConfigureOO{Contents Heading} +\ConfigureOO{Contents Heading}{\Hnewline + <style:style style:name="Contents-Heading" + style:family="paragraph" + style:parent-style-name="Heading" + style:class="index"> + <style:paragraph-properties + fo:margin-top="0.5cm" + fo:margin-bottom="0.2cm" + fo:margin-left="0cm" + fo:margin-right="0cm" + fo:font-size="16pt" + fo:font-weight="bold" + style:font-size-asian="16pt" + style:font-weight-asian="bold" + style:font-size-complex="16pt" + style:font-weight-complex="bold" + fo:text-indent="0cm" + style:auto-text-indent="false" + text:number-lines="false" + text:line-number="0" + /> + </style:style> +\Hnewline } +>>> + +\<configure ooffice article\><<< +\def\tableofcontents{\:tableofcontents} +>>> + +\<configure ooffice book\><<< +\def\tableofcontents{\:tableofcontents} +>>> + + +\<configure ooffice report\><<< +\def\tableofcontents{\:tableofcontents} +>>> + + +\<configure ooffice amsart\><<< +\def\tableofcontents{\:tableofcontents} +>>> + +\<configure ooffice amsproc\><<< +\def\tableofcontents{\:tableofcontents} +>>> + +\<configure ooffice nwart\><<< +\def\tableofcontents{\:tableofcontents} +>>> + +\<configure ooffice nwrep\><<< +\def\tableofcontents{\:tableofcontents} +>>> + +\<configure ooffice nwbk\><<< +\def\tableofcontents{\:tableofcontents} +>>> + + + + +\<outline level\><<< +6>>> + + +\<end toc\><<< + </text:index-body>\Hnewline +</text:table-of-content>% +\Hnewline +>>> + + + +\<toc outline\><<< +<text:index-title-template + text:style-name="Contents-Heading" >\contentsname +</text:index-title-template>\Hnewline +|<toc template 1|>% +|<toc template 2|>% +|<toc template 3|>% +|<toc template 4|>% +|<toc template 5|>% +|<toc template 6|>% +|<toc template 7|>% +|<toc template 8|>% +|<toc template 9|>% +|<toc template 10|>% +>>> + + +\<automatic styles\><<< +|<automatic style 1|>% +|<automatic style 2|>% +|<automatic style 3|>% +|<automatic style 4|>% +|<automatic style 5|>% +|<automatic style 6|>% +|<automatic style 7|>% +|<automatic style 8|>% +>>> + +\<content styles\><<< +|<content style 1|>% +|<content style 2|>% +|<content style 3|>% +|<content style 4|>% +|<content style 5|>% +|<content style 6|>% +|<content style 7|>% +|<content style 8|>% +>>> + + +%%%%%%%%%%%%% +\subsection{Tables of Figures} +%%%%%%%%%%%%% + + +\<config lists of figures and tables\><<< +\Configure{listoffigures} + {\let\contentsname\listfigurename \let\listfigurename\empty} + {} +\Configure{listoftables} + {\let\contentsname\listtablename \let\listtablename\empty} + {} +\ConfigureToc{lof} + {\HCode{<text:p><text:span text:style-name="toc-mark" + >}}{\ }{}% + {\HCode{</text:span></text:p>}} +\ConfigureToc{lot} + {\HCode{<text:p><text:span text:style-name="toc-mark" + >}}{\ }{}% + {\HCode{</text:span></text:p>}} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tabular} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Examples} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +General Format: + +\begin{verbatim} +<table:table table:name="..." table:style-name="tbl"> + <table:table-column table:style-name="..."/>... <table:table-column/> + <table:table-row table:name="..."> + <table:table-cell> <text:p>...</text:p> </table:table-cell> + .... + </table:table-row> + ..... +</table:table> +\end{verbatim} + +May include subtables + +\begin{verbatim} +<table:sub-table> + ....... +</table:sub-table> +\end{verbatim} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{The External Envelope} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice latex\><<< +|<latex tabular|> +>>> + +\<latex tabular\><<< +\ConfigureEnv{tabular} + {|<configure tabular noalign|>% + \IgnorePar|<inline comment|>\EndP + |<save cols info|>% + \ifnum \BegEnd:D>0 + |<boxed env|>% + \fi + \gHAdvance\BegEnd:D by 1 + \bgroup |<Text-Body HtmlPar|>% + } + {\egroup + \gHAdvance\BegEnd:D by -1 + \ifnum \BegEnd:D>0 + |<end boxed env|>% + \fi + |<recall cols info|>\ShowPar + |<configure clear noalign|>% + |<try env inline par|>% + }{}{} +>>> + + +\<configure ooffice tabularx\><<< +\ConfigureEnv{tabularx} + {|<configure tabular noalign|>% + \IgnorePar|<inline comment|>\EndP + |<save cols info|>% + } + {|<recall cols info|>\ShowPar + |<configure clear noalign|>% + |<try env inline par|>% + }{}{} +>>> + + + + + +\<latex tabular\><<< +\Configure{tabular} + {\ifvmode \IgnorePar\fi \EndP \halignTB{tabular}% + |<list the grouping of columns|>% + } + {|<insert Clr|>\HCode{</table:table>}} + {|<cond trail row|>% + \HCode{<table:table-row \Hnewline + |<trail row|>% + table:style-name="TBL-\TableNo-\HRow-}% + |<row attributes|>\HCode{">}} + {\HCode{</table:table-row>}|<end cond trail row|>% + } + {\HCode{<table:table-cell \Hnewline}% + |<multispan cell|>% + \HCode{ table:style-name="TBL-\TableNo-\HRow-\HCol">}% + |<start par at cell|>|<save table num|>} + {|<end array par box|>|<recall table num|>% + |<end par at cell|>\HCode{</table:table-cell>}} +>>> + + +\<cond trail row\><<< +\ifTag{vis-\TableNo-\HRow}% + {\special{t4ht@[}\gdef\end:box{\special{t4ht@]}}}% + {\global\let\end:box\empty}% +>>> + +\<end cond trail row\><<< +\end:box +>>> + +\<trail row\><<< +\ifTag{vis-\TableNo-\HRow}{table:visibility="collapse" }{} +>>> + +\<latex tabular\><<< +\Configure{endtabular} {\Tag{vis-\TableNo-\HRow}{}} +>>> + + + + +\<latex tabular\><<< +\def\:MT{\ifmathml \a:mathml m\else table:\fi} +\Configure{halignTB} + {\HCode{<\:MT table }} + {\HCode{>}} +>>> + + + + +\<configure tabular noalign\><<< +\Configure{noalign}% + {\f:tabular\d:tabular \HCode{<tr><td colspan="\ar:cnt">}} + {\HCode{</td></tr>}\pend:def\TableNo{0}\c:tabular\e:tabular}% +>>> + + +\<configure clear noalign\><<< +\Configure{noalign}{}{}% +>>> + + +\<latex tabular\><<< +\Configure{halignTB<>}{tabular}{\HCode{\Hnewline + table:style-name="tabular" + }<>\HAlign} +>>> + + +For some reason, the following doesn't have effect at the office tyles +section + + +\<automatic styles\><<< +<style:style style:name="tabular" + style:family="table">\Hnewline +<style:table-properties style:rel-width="76\%" + fo:margin-left="1cm" + fo:margin-right="1cm" + table:align="margins"/>\Hnewline +</style:style>\Hnewline +>>> + + +\<inline comment\><<< +\ifvmode\else\HCode{<!--tex4ht:inline-->}\fi +>>> + + + +\<latex tabular\><<< +\HAssign\Next:TableNo=0 +\global\let\TableNo=\Next:TableNo +>>> + +\<increase table num\><<< +\gHAdvance\Next:TableNo by 1 +\global\let\TableNo=\Next:TableNo +>>> + + +\<save table num\><<< +\PushStack\Table:Stck\TableNo +>>> + +\<recall table num\><<< +\PopStack\Table:Stck\TableNo +>>> + + + +\<Text-Body HtmlPar\><<< +\Configure{HtmlPar} + {\EndP \HCode{<text:p text:style-name="Text-body|<cond rtl class|>" + >}} + {\EndP \HCode{<text:p text:style-name="Text-body|<cond rtl class|>" + >}} + {\HCode{</text:p>}} + {\HCode{</text:p>}} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Description of Columns} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +The variable +\verb+\NewGroup+ is introduced to record the index of entry in current +group. + + +\<configure ooffice-mml latex\><<< +|<visit start of pattern|> +\Configure{VBorder} + {\HAssign\NewGroup = 0 + |<increase table num|>% + |<visit start of pattern|>% + } + {|<visit a v-bar entry|>\HAssign\NewGroup = 0 } + {\Advance:\NewGroup by 1 + |<visit a non-@ entry|>% + } + {|<visit a @ entry|>} +>>> + + + +\<configure ooffice-mml array\><<< +|<visit start of pattern|> +\Configure{VBorder} + {\HAssign\NewGroup = 0 + |<increase table num|>% + |<visit start of pattern|>% + } + {|<visit a v-bar entry|>\HAssign\NewGroup = 0 } + {\Advance:\NewGroup by 1 + |<visit a non-@ entry|>% + } + {|<visit a @ entry|>} +>>> + + + + +\<configure ooffice-mml latexNO\><<< +\let\VBorder=\empty \let\AllColMargins=\empty +\Configure{VBorder} + {\let\VBorder=\empty \let\AllColMargins=\empty + \global\let\GROUPS=\empty \HAssign\NewGroup = 0 + \gHAdvance\Next:TableNo by 1 \global\let\TableNo=\Next:TableNo + |<init vborder??|>% + } + {|<vborder solid??|>% + \xdef\VBorder{\VBorder\ifnum \NewGroup> 0 </colgroup>\fi} + \HAssign\NewGroup = 0 \gdef\GROUPS{rules="groups"}} + {\Advance:\NewGroup by 1 + |<record cur vborder??|>% + \ifnum \NewGroup=1 \xdef\VBorder{\VBorder<colgroup + id="TBL-\TableNo-\ar:cnt g">}\fi + \xdef\VBorder{\VBorder<col\Hnewline id="TBL-\TableNo + -\ar:cnt"\xml:empty>}\xdef\AllColMargins{\AllColMargins1}} + {\xdef\AllColMargins{\AllColMargins 0}} +>>> + + +\<insert ClrNO\><<< +\expandafter\tmp:toks\expandafter{\Clr}% +\HCode{<!--\the\tmp:toks-->}% +>>> + +The above doesn't work, for instance on `\verb+|r||r@{--}l|p{1.25in}|+' +due to thge extra \verb+--+.. + + + + + +\<configuring @()\><<< +\Configure{@{}}{} +>>> + + +\<row attributes\><<< +\halignTR +>>> + +\<latex tabular\><<< +\Configure{halignTR} + {} +\Configure{halignTBL} +% {t}{\HCode{valign-top}} +% {b}{\HCode{valign-baseline}} +% {c}{\HCode{valign-middle}} + {} +>>> + + + + +\<start par at cell\><<< +|<extract cell attributes|>\if !\Aligh:Wrap!\let\not:Pcell=\:gobble +\else \let\not:Pcell\empty \fi +\not:Pcell{\HCode{<text:p + \Hnewline text:style-name="}|<style at cell|>\HCode{" + >}}% +|<start array par box|>% +>>> + + + +\<style at cell\><<< +\cell:sty +>>> + + +\<latex tabular\><<< +\def\cell:sty{\NoFonts + |<extract cell margins info|>% + |<extract cell h-border info|>% + |<extract cell attributes|>% + |<cell style name|>% + |<cell style properties|>% + \EndNoFonts} +>>> + + + +\<cell style name\><<< +sty-\LR:VBars\Left:Marg\Right:Marg\Aligh:Wrap +>>> + + + +\<end par at cell\><<< +\csname not:Pcell\endcsname{\HCode{</text:p>}}% +>>> + + + +\<multispan cell\><<< +\ifnum \HMultispan>1 + \HCode{table:number-columns-spanned="\HMultispan"\Hnewline}% + \bgroup + \def\:temp{\ifnum \HMultispan>1 + \HAdvance\HMultispan by -1 + \HCode{<table:covered-table-cell/>}% + \expandafter\:temp + \fi}% + \egroup +\fi +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Cell Style Properties} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<extract cell attributes\><<< +\edef\Aligh:Wrap{\halignTD}% +>>> + + +\<configure ooffice tex4ht\><<< +\Configure{halignTD} {}{} + {<}{L} %{\HCode{align-left nowrap}} + {-}{C} %{\HCode{align-center nowrap}} + {>}{R} %{\HCode{align-right nowrap}} + {^}{T} %{\HCode{valign-top nowrap}} + {=}{N} %{\HCode{valign-baseline nowrap}} + {||}{M} %{\HCode{valign-middle nowrap}} + {_}{B} %{\HCode{valign-bottom nowrap}} + {p}{} + {m}{m} %{\HCode{valign-middle align-left}} + {b}{n} %{\HCode{valign-baseline align-left}} + {} +>>> + + + + + +\<configure ooffice-mml tex4ht\><<< +\Configure{halignTD} {}{} + {<}{\ifmathml \HCode{ columnalign="left"}\else + L\fi} + {-}{\ifmathml \HCode{ columnalign="center"}\else + C\fi} + {>}{\ifmathml \HCode{ columnalign="right"}\else + R\fi} + {^}{\ifmathml \HCode{ rowalign="top"}\else + T\fi} + {=}{\ifmathml \HCode{ rowalign="baseline"}\else + N\fi} + {||}{\ifmathml \HCode{ rowalign="center"}\else + M\fi} + {_}{\ifmathml \HCode{ rowalign="bottom"}\else + B\fi} + {p}{\ifmathml \HCode{ columnalign="left"}\else + \fi} + {m}{\ifmathml\else m\fi} %{\HCode{valign-middle align-left}} + {b}{\ifmathml\else n\fi} %{\HCode{valign-baseline align-left}} + {} +>>> + + + +\<cell style properties\><<< +\xdef\cell:style:name{|<cell style name|>}% +\expandafter\ifx \csname\cell:style:name\endcsname \relax + \global\expandafter\let\csname\cell:style:name\endcsname=\def + \OOstyles{% + <style:style + style:name="\cell:style:name" + style:family="paragraph" + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties + }% + |<cell h-margins property|>% + |<cell alignment properties|>% + |<cell LR borders property|>% + \OOstyles{% + style:justify-single-word="false"/>\Hnewline + </style:style>\Hnewline + }% +\fi +>>> + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Cell Alignments} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<cell alignment properties\><<< +\def\:temp{L}\ifx \Aligh:Wrap\:temp + \OOstyles{% + fo:wrap-option="no-wrap" + fo:text-align="start" + }% +\fi +\def\:temp{C}\ifx \Aligh:Wrap\:temp + \OOstyles{% + fo:wrap-option="no-wrap" + fo:text-align="center" + }% +\fi +\def\:temp{R}\ifx \Aligh:Wrap\:temp + \OOstyles{% + fo:wrap-option="no-wrap" + fo:text-align="end" + }% +\fi +\ifx \Aligh:Wrap\empty + \OOstyles{% + fo:text-align="start" + }% +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Groups of Columns} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +A group consists of a non-empty pattern \verb+|...|+. + +\<list the grouping of columns\><<< +\putVBorder +>>> + + +When \verb'\putVBorder' is called, in \verb'\:VBorder' +we have a sequence of the form +\verb'<COLGROUP><COL ...">...</COLGROUP>...' with the last +tag possibly missing. + +\<latex tabular\><<< +\let\remove:eog=\relax +\def\putVBorder{\expandafter\put:VBorder\:VBorder<</>>|<par del|>} +\def\put:VBorder#1<</#2>>#3|<par del|>{% + \def\:temp{#2}\ifx\:temp\empty + \def\remove:eog<</##1>>{}% + \HCode{\:VBorder}% + \let\remove:eog=\relax + |<insert last end of group, if missing|>% + \else \def\:temp{\put:VBorder#3|<par del|>}\expandafter\:temp\fi +} +>>> + + +\<visit start of pattern\><<< +\let\:VBorder=\empty +>>> + +\<visit a non-@ entry\><<< +\ifnum \NewGroup=1 |<start a group of cols|>\fi +|<add a group of columns|>% +>>> + + +\<start a group of cols\><<< +\xdef\:VBorder{\:VBorder + <!--table:table-column-group ???="TBL-\TableNo-\ar:cnt g"-->}% +>>> + +\<add a group of columns\><<< +\xdef\:VBorder{\:VBorder<table:table-column\Hnewline + \csname a:table-column-style\endcsname\Hnewline + />}% +>>> + +\<latex tabular\><<< +\NewConfigure{table-column-style}{1} +\Configure{table-column-style} + {table:style-name="TBL-\TableNo -\ar:cnt"} +>>> + +\<visit a v-bar entry\><<< +\xdef\:VBorder{\:VBorder + \ifnum \NewGroup> 0 + <!--/table:table-column-group-->\remove:eog <</ >>\fi}% +>>> + +\<insert last end of group, if missing\><<< +\def\:temp{#1}\ifx\:temp\empty +\else\HCode{<!--/table:table-column-group-->}\fi +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Vertical Lines} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<cell LR borders property\><<< +\cell:vbars +>>> + + +\<latex tabular\><<< +\def\cell:vbars{% + \def\:tempa##1##2{% + \tmp:cnt=0 + \def\:temp####1{% + \if ####1##1\advance\tmp:cnt by 1 \fi + \if ####1.\else \expandafter\:temp \fi + }% + \expandafter\:temp\LR:VBars.% + \ifnum \tmp:cnt>0 + \OOstyles{ fo:border-##2="|<hline resolution|>\the\tmp:cnt + cm solid \#000000" }% + \fi + }% + \:tempa L{left}% + \:tempa R{right}% +} +>>> + + +\<hline resolution\><<< +0.0>>> + +\<extract cell h-border info\><<< +\ifx \:AllColBars\empty + \let\LR:VBars=\empty +\else + \edef\LR:VBars{\Col:VBars}% +\fi +>>> + + + +\verb'\AllColMargins' Return a binary string in which 1 represents +a column, and 0 represents a `@'. \verb'\ColMargins' retrieves the +zeros before the 1's that represent the current and following 1's. + +\<latex tabular\><<< +\def\Col:VBars{\expandafter\get:vbar\:AllColBars,,} +\def\get:vbar#1,{\if :#1:\else + \ifnum #1=0 \ifnum \HCol=1 L\fi + \else \ifnum \HCol=#1R\fi \fi + \expandafter\get:vbar \fi} +>>> + + + + +\<configure ooffice-mml latex\><<< +\let\AllColMargins\empty +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + +\<configure ooffice-mml array\><<< +\ConfigureEnv{array} + {\PushStack\Col:Marg\AllColMargins + \bgroup\Configure{$}{}{}{}} + {\egroup \PopStack\Col:Marg\AllColMargins} + {}{} +>>> + + +\<configure ooffice latex\><<< +\ConfigureEnv{tabular} + {\PushStack\Col:Marg\AllColMargins} + {\PopStack\Col:Marg\AllColMargins} + {}{} +>>> + + + + + + + + + + +\<visit start of pattern\><<< +\let\:AllColBars=\empty +>>> + +\<visit a v-bar entry\><<< +\xdef\:AllColBars{\:AllColBars + \ifx\:AllColBars\empty \else ,\fi \ar:cnt}% +>>> + + +\<save cols info\><<< +\PushStack\Col:Bars\:AllColBars +>>> + + +\<recall cols info\><<< +\PopStack\Col:Bars\:AllColBars +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Horizontal Marging} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\verb'\AllColMargins' Return a binary string in which 1 represents +a column, and 0 represents a `@'. \verb'\ColMargins' retrieves the +zeros before the 1's that represent the current and following 1's. + +\<cell h-margins property\><<< +\OOstyles{% + fo:padding-left="0\ifnum \Left:Marg >0 .17\fi cm" |% 5pt |% + fo:padding-right="0\ifnum \Right:Marg>0 .17\fi cm" +}% +>>> + +\<extract cell margins info\><<< +\ColMargins +>>> + + +\<latex tabular\><<< +\def\ColMargins{\tmp:cnt=\HCol\relax + \expandafter\nosp:hbr\AllColMargins 1//} +\def\nosp:hbr#11#2//{\ifnum \tmp:cnt>1 \advance\tmp:cnt by -1 + \nosp:hbr#2//\else\nosp:gt#11#2//\fi} +\def\nosp:gt#11#21#3//{% + \def\Left:Marg{#1}\def\Right:Marg{#2}% + \edef\Left:Marg{\ifx \Left:Marg\empty 1\else 0\fi}% + \edef\Right:Marg{\ifx \Right:Marg\empty 1\else 0\fi}} + + +|<configuring @()|> +>>> + + +\<visit start of pattern\><<< +\let\AllColMargins=\empty +>>> + +\<visit a non-@ entry\><<< +\xdef\AllColMargins{\AllColMargins 1}% +>>> + +\<visit a @ entry\><<< +\xdef\AllColMargins{\AllColMargins 0}% +>>> + + +\<save cols info\><<< +\PushStack\Col:Marg\AllColMargins +>>> + + +\<recall cols info\><<< +\PopStack\Col:Marg\AllColMargins +>>> + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Horizontal Borders} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<latex tabular\><<< +\Configure{hline}{\ifx \ar:cnt\:UnDef + \else\o:noalign:{|<hline body for array/tabular|>}% + \expandafter\ignoreEndTr + \fi} +\Configure{//[]}{\ifx \ar:cnt\:UnDef + \else\o:noalign:{|<vspace body for array/tabular|>}\fi} +>>> + + +\<vspace body for array/tabular\><<< +\append:def\vspc:s{\h:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\vspc:s{\i:HBorder}% + \expandafter\:tempb + \fi } +\tmp:cnt=0 \:tempb +\append:def\vspc:s{\j:HBorder}\global\let\vspc:s=\vspc:s +>>> + +\<hline body for array/tabular\><<< +\append:def\hline:s{\a:HBorder}% +\def\:tempb{\ifnum \tmp:cnt<\ar:cnt + \advance\tmp:cnt by 1 \append:def\hline:s{\b:HBorder}% + \expandafter\:tempb + \fi }% +\tmp:cnt=0 \:tempb +\append:def\hline:s{\c:HBorder}\global\let\hline:s=\hline:s +>>> + +\<latex tabular\><<< +\def\ignore:EndTr{\o:noalign:{\global\futurelet\:AfterHline}} +\long\def\ifProperTr#1{% + \ifx \:AfterHline\end + #1\global\let\:AfterHline\endinput + \else \ifx \:AfterHline\endinput \else #1\fi\fi} +\def\ProperTrTrue{\global\let\:AfterHline=\relax} +>>> + + +\<latex tabular\><<< +\Configure{putHBorder}{\HCode{\HBorder}} +\Configure{HBorder} + {|<HBorder hline|>} + {|<HBorder hline cell|>} + {|<end HBorder hline|>} + {|<HBorder cline|>} + {|<HBorder cline p cell|>} + {|<HBorder cline p-hr cell|>} + {|<end HBorder cline|>} + {|<HBorder vspace|>} + {|<HBorder vspace td|>} + {|<end HBorder vspace|>} +\OOstyles {|<hline-p-hr style|>} +>>> + + + + +\<configure ooffice-mml latex\><<< +\Configure{HBorder} + |<HBorder hline row|>% + |<HBorder cline row|>% + |<HBorder vspace row|>% +>>> + + +\<HBorder hline row\><<< +{\ifmathml <\a:mathml mtr\Hnewline class="hline"> + \else |<HBorder hline|>\fi} +{\ifmathml |<mml mtd hline|> + \else |<HBorder hline cell|>\fi} +{\ifmathml </\a:mathml mtr> + \else |<end HBorder hline|>\fi} +>>> + + +\<HBorder cline row\><<< +{\ifmathml <\a:mathml mtr\Hnewline class="cline"> + \else |<HBorder cline|>\fi} +{\ifmathml <\a:mathml mtd></\a:mathml mtd> + \else |<HBorder cline p cell|>\fi } +{\ifmathml |<mml mtd hline|> + \else |<HBorder cline p-hr cell|>\fi} +{\ifmathml </\a:mathml mtr> + \else |<end HBorder cline|>\fi} +>>> + +\<HBorder vspace row\><<< +{\ifmathml <\a:mathml mtr\Hnewline class="vspace" style="font-size:\HBorderspace"> + \else |<HBorder vspace|>\fi} +{\ifmathml <\a:mathml mtd\Hnewline></\a:mathml mtd> + \else |<HBorder vspace td|>\fi} +{\ifmathml </\a:mathml mtr> + \else |<end HBorder vspace|>\fi} +>>> + + + + + + +\<HBorder hline\><<< +<table:table-row \Hnewline table:style-name="hline-row">% +>>> + + +\<mml mtd hline\><<< +<\a:mathml mtd><\a:mathml mo> \string&\#x0332; </\a:mathml mo></\a:mathml mtd> +>>> + + +\<HBorder hline cell\><<< +<table:table-cell table:style-name="hline-cell" >% + <text:p text:style-name="hline-p-hr" />% + </table:table-cell>\Hnewline +>>> + +\<end HBorder hline\><<< +</table:table-row>\Hnewline +>>> + +\<HBorder cline\><<< +<table:table-row \Hnewline table:style-name="cline-row">\Hnewline +>>> + +\<HBorder cline p cell\><<< +<table:table-cell table:style-name="cline-cell">% + <text:p text:style-name="cline-p" />% + </table:table-cell>\Hnewline +>>> + +\<HBorder cline p-hr cell\><<< +<table:table-cell table:style-name="cline-cell">% + <text:p text:style-name="cline-p-hr" />% + </table:table-cell>\Hnewline +>>> + +\<end HBorder cline\><<< +</table:table-row>\Hnewline +>>> + + + +\<HBorder vspace\><<< +<tr\Hnewline class="vspace" style="font-size:\HBorderspace">% +>>> + +\<HBorder vspace td\><<< +<td\Hnewline>\string&\csname :sharp\endcsname xA0;</td>% +>>> + +\<end HBorder vspace\><<< +</tr>% +>>> + + + + +\<hline-p-hr style\><<< +<style:style style:name="hline-p-hr" + style:family="paragraph">\Hnewline + <style:paragraph-properties + fo:padding="0.00001cm" + fo:margin-top="0.00001cm" + fo:margin-bottom="0.00001cm" + fo:border-left="none" + fo:border-right="none" + fo:border-top="none" + fo:line-height="|<hline resolution|>11cm" + fo:border-bottom="|<hline resolution|>1cm solid \#000000" + />\Hnewline +</style:style> +>>> + + +\<hline-p-hr style\><<< +<style:style style:name="cline-p-hr" + style:family="paragraph">\Hnewline + <style:paragraph-properties + fo:padding="0.00001cm" + fo:margin-top="0.00001cm" + fo:margin-bottom="0.00001cm" + fo:border-left="none" + fo:border-right="none" + fo:border-top="none" + fo:line-height="0.01cm" + fo:border-bottom="|<hline resolution|>1cm solid \#000000" + />\Hnewline +</style:style> +<style:style style:name="cline-p" + style:family="paragraph">\Hnewline + <style:paragraph-properties + fo:margin="0.00001cm" + fo:border="none" + fo:line-height="0.001cm" + />\Hnewline +</style:style> +>>> + + + +\begin{verbatim} + > In addition, of course the formatting of borders for OOo tables doesn't + > come out exactly the same as when entered in OOo itself, so that + > round-tripping won't work, + +TeX4ht introduces the borders in segments: top, down, left, +right. Moreover, the horizontal segments appear in separate cells. The +segmentation is there to provide for special effects in LaTeX +tables. I don't know how to improve the outcome, short of trying to +post process the output. +\end{verbatim} + + + +%%%%%%%%%%%%% +\subsubsection{Multicolumn} +%%%%%%%%%%%%% + + +\<latex tabular\><<< +\Configure{multicolumn} + {\let\col:Css\empty + \expandafter\let\csname col:Css0\endcsname\empty + \expandafter\let\csname col:Css1\endcsname\empty + \Configure{VBorder} + {} + {\edef\col:Css{\col:Css + \ifnum \ar:cnt=0 L\else R\fi }% + \expandafter\edef\csname col:Css\ar:cnt\endcsname{% + fo:border-\ifnum \ar:cnt=0 left\else right\fi + ="0.01cm solid \#000000" + fo:padding-\ifnum \ar:cnt=0 left\else right\fi + ="0.17cm" |% 5pt |% + }% + }{}{}% + } + {|<multicolumn sty|>} + {|<multicolumn sty|>% + \Configure{HtmlPar} + {|<multicolumn par|>} + {|<multicolumn par|>} + {}{}% + } + {} +>>> + + + + + +\<multicolumn par\><<< +\Configure{HtmlPar} + {\HCode{<text:line-break/><text:line-break/>}} + {\HCode{<text:line-break/><text:line-break/>}} + {} + {}% +>>> + +The above text:p doesn't get into the code. Where the contributions comes from??? + + +\<multicolumn sty\><<< +\ifx \col:Css\empty \else + \edef\col:Css{multicolumn-\col:Css 11\halignTD-\cell:style:name}% + \expandafter\ifx \csname \col:Css\endcsname\relax + \expandafter\xdef\csname \col:Css\endcsname{}% + |<multicolumn oOOstyles|>% + \fi + \HCode{<text:span + text:style-name="\col:Css"></text:span>}% +\fi +>>> + +\<multicolumn oOOstyles\><<< +\OOstyles{% + <style:style + style:name="\col:Css" + style:family="paragraph" + style:parent-style-name="\cell:style:name">\Hnewline + <style:paragraph-properties + \csname col:Css0\endcsname + \csname col:Css1\endcsname + />\Hnewline + </style:style>\Hnewline +}% +>>> + + + +\<\><<< +\OOstyles{% + <style:style style:name="TBL-\TableNo-\HRow-\HCol" + style:family="table-cell">\Hnewline + <style:table-cell-properties +% style:vertical-align="bottom" + \col:Css + />\Hnewline + </style:style>\Hnewline +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Other} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\verb|\par| is empty if not in par box. + +\<start array par box\><<< +\par \ShowPar +>>> + +\<end array par box\><<< +\IgnorePar \EndP +>>> + + +\<latex tabular\><<< +\Configure{halign} + {\EndP\halignTB{halign}} {\HCode{</table>}} + {\HCode{<tr \Hnewline}\halignTR\HCode{>}} + {\HCode{</tr>}} + {\HCode{<td \ifnum \HMultispan>1 colspan="\HMultispan"\fi}% + \halignTD \HCode{\Hnewline>}} + {\HCode{</td>}} +\Configure{pic-halign}{} +>>> + + + +\<latex tabular\><<< +\Configure{HVerbatim+}{\z@}{\:nbsp} +\Configure{Needs}{l. + \the\inputlineno\space--- needs --- #1 ---} +\Configure{Needs-}{l. + \the\inputlineno\space--- needs --- #1 ---} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Color} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice color\><<< +\Configure{color}{\:gobble} +>>> + +\<configure ooffice color\><<< +\Configure{HColor:gray}{% + \int:of\:tempa{255}{#1}% + \hex:of\:tempa + \Configure{HColor}{}{\#\:tempa\:tempa\:tempa}% +} +\Configure{HColor:rgb}{% + \int:of\:tempa{255}{#1}% + \int:of\:tempb{255}{#2}% + \int:of\:tempc{255}{#3}% + \hex:of\:tempa + \hex:of\:tempb + \hex:of\:tempc + \Configure{HColor}{}{\#\:tempa\:tempb\:tempc}% +} +\Configure{HColor:cmyk}{% + \int:of\:Cyan{255}{#1}% + \int:of\:Magenta{255}{#2}% + \int:of\:Yellow{255}{#3}% + \int:of\:Black{255}{#4}% + \:cmyk\:tempa\:Cyan + \:cmyk\:tempb\:Magenta + \:cmyk\:tempc\:Yellow + \hex:of\:tempa + \hex:of\:tempb + \hex:of\:tempc + \Configure{HColor}{}{\#\:tempa\:tempb\:tempc}% +} +|<HColor util|> +>>> + + + + + +\<HColor util\><<< +\def\int:of#1#2#3{% + \tmp:dim=#3pt \tmp:dim=#2\tmp:dim + \edef\:temp{\tmp:cnt\the\tmp:dim//}% + \def#1##1//{}\afterassignment#1\:temp + \edef#1{\the\tmp:cnt}% +} +\def\hex:of#1{% + \tmp:cnt=#1 + \divide\tmp:cnt by 16 + \edef\:temp{\ifcase \tmp:cnt 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi}% + \multiply\tmp:cnt by -16 \advance\tmp:cnt by #1 + \edef#1{\:temp + \ifcase \tmp:cnt 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi}% +} +>>> + + +\begin{verbatim} +cmyk -> gray +(1 - 0.299c - 0.587m - 0.114y)(1 - k) + +cmyk -> rgb +Red = 1-minimum(1,Cyan *(1-Black)+Black) +Green = 1-minimum(1,Magenta*(1-Black)+Black) +Blue = 1-minimum(1,Yellow *(1-Black)+Black) +\end{verbatim} + + + +\<HColor util\><<< +\def\:cmyk#1#2{% + \tmp:cnt=255 \advance\tmp:cnt by -\:Black + \multiply\tmp:cnt by#2 \advance\tmp:cnt by \:Black + \advance\tmp:cnt by -255 \tmp:cnt=-\tmp:cnt + \ifnum \tmp:cnt<0 \tmp:cnt=0 \fi + \edef#1{\the\tmp:cnt}% +} +>>> + + +The following doesn't work yet. + + +\begin{verbatim} +\documentclass{article} +\usepackage[dvips]{xcolor} + +\begin{document} + +\begin{center} +\fcolorbox{black}{green}{\parbox{.775\columnwidth}{\textbf{Hint:}\vspace{.2cm}\\ Abc.}} +\end{center} + + +\begin{center} + +\fcolorbox{black}{green}{\parbox{.775\columnwidth}{\textbf{Hint:}\vspace{.2cm}\\ Abc.}} + +\fcolorbox{black}{green}{\parbox{.775\columnwidth}{\textbf{Hint:}\vspace{.2cm}\\ Abc.}} + +\end{center} +\end{document} + + +\documentclass {article} + + \usepackage[table,svgnames]{xcolor} + +\begin {document} + + \rowcolors[]{1}{gray!10}{gray!5} + + \begin{tabular}{|*{2}{r|c|}} + Blue & Red & Yellow & Green\\\hline + Blue & Red & Yellow & Green\\ + Blue & Red & Yellow & Green\\\hline + Blue & Red & Yellow & Green\\ + Blue & Red & Yellow & Green\\ + Blue & Red & Yellow & Green\\ + Blue & Red & Yellow & Green\\ + \end{tabular} + +\end{verbatim} + +\<configure ooffice color\><<< +\Configure{fcolorbox} + {\bgroup\gHAdvance\textcolorN by 1 + \ifvmode \let\v:colorbox\def \IgnorePar \EndP + \else \let\v:colorbox=\relax \fi + \ifx \v:colorbox\def + \HCode{<text:p \Hnewline + text:style-name="colorbox\textcolorN">}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\let\A:color=\a:color +\Configure{color}% + {\Configure{color}% + {\let\a:color=\A:color + \Configure{SetHColor}{% + \OOstyles{<style:style style:name="colorbox\textcolorN" + style:family="paragraph"\> +% <style:text-properties style:text-background-color="\HColor"/> + <style:text-properties fo:color="\HColor" + fo:background-color="transparent" /> + </style:style>}% + }}% + \Configure{SetHColor}{% +% \hshow{\#colorbox\textcolorN{border: solid 1px \HColor;}}% + }% + }% + \Configure{fbox}{\leavevmode }{}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \else + \HCode{<text:span \Hnewline + text:style-name="colorbox\textcolorN">}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\let\A:color=\a:color +\Configure{color}% + {\Configure{color}% + {\let\a:color=\A:color + \Configure{SetHColor}{% + \OOstyles{<style:style style:name="colorbox\textcolorN" style:family="text"> +% <style:text-properties style:text-background-color="\HColor" /> + <style:text-properties fo:color="\HColor" + fo:background-color="transparent" /> + </style:style>}% + }}% + \Configure{SetHColor}{% +% \hshow{\#colorbox\textcolorN{border: solid 1px \HColor;}}% + }% + }% + \Configure{fbox}{\leavevmode }{}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \fi +} +{\ifx \v:colorbox\def + \EndP\HCode{</text:p>}\par + \else \HCode{</text:span>}\fi + \egroup +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{XColor} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice xcolor\><<< +\Configure{rowcolors} + {\Configure{SetHColor}{% + \expandafter\ifx \csname HColor\endcsname\relax \else +% \hshow{tr\#TBL-\TableNo-\the\rownum-{background-color:\HColor}}% + \fi + }} +>>> + +\<configure ooffice xcolor\><<< +\Configure{HColor!gray}{% + \XC@c@lcD\rangeGray{}{#1}\@@tmp + \int:of\:tempa{255}{\@@tmp}% + \hex:of\:tempa + \Configure{HColor}{}{\#\:tempa\:tempa\:tempa}% +} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{tabbing} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<ooffice begin-end env\><<< +\HAssign\tabbing:N=0 +\Configure{tabbing}[1.5]{\IgnorePar\leavevmode + \gHAdvance\tabbing:N by 1 + \gHAssign\tabbing:Nrow=0 + \ht:special{t4ht=<text:p + text:style-name="tabbing" \Hnewline >}} + {\ht:special{t4ht=</text:p>\Hnewline}\ShowPar} + {\gHAdvance\tabbing:Nrow by 1 + \ht:special{t4ht=<text:span\Hnewline + text:style-name="tabbing-\tabbing:N-\tabbing:Nrow" + >}% + |<style of current tabbing cell|>% + } + {\ht:special{t4ht=</text:span>}} +\ConfigureEnv{tabbing}{\IgnorePar\EndP}{}{}{} +>>> + +\<ooffice begin-end env\><<< +\NewConfigureOO{tabbing} +\ConfigureOO{tabbing}{|<oo tabbing style|>} +>>> + + +\<oo tabbing style\><<< +<style:style style:name="tabbing" + style:family="paragraph" + style:parent-style-name="Standard" >\Hnewline + <style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:text-indent="0.5cm" + style:auto-text-indent="false"/>\Hnewline +</style:style>\Hnewline +>>> + +The following style sdon't work. + + +\<style of current tabbing cell\><<< +\OOstyles{% + <style:style style:name="tabbing-\tabbing:N-\tabbing:Nrow" + >\Hnewline + <style:text-properties + fo:wrap-option="no-wrap" + \ifx \TabWidth\empty \else + fo:width="\TabWidth pt" + \fi + \ifx \`\TabType + style:text-align="right" + \fi + />\Hnewline + </style:style>\Hnewline + } +>>> + + +\begin{verbatim} +Is there a way to request a no-wrap element <text:span> ... +</text:span> of a specified width? + + LaTeX source: + \begin{tabbing} + Armadillo \= Armament \= \kill + Gnat \> Gnu \> Gnome \\ + Armadillo \> Armament \> Armorer + \end{tabbing} + +Unfortunately not, you have to use either tab-stops or a table for this. +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Index} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Envelop} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<ooffice index\><<< +\Configure{theindex} + {\ifvmode\IgnorePar\fi + \EndP\HCode{<text:alphabetical-index text:name="theindex" > + |<index format|>% + <text:index-body>\Hnewline}% + \csname put:IndexTitle\endcsname + } + {\HCode{</text:index-body></text:alphabetical-index>}} + {\HCode{<text:p text:style-name="P6" >}} + {\HCode{<text:tab-stop/></text:p>}\hfill\break} + {\HCode{<text:p text:style-name="P7" >}} + {\HCode{<text:tab-stop/></text:p>}\hfill\break} + {\HCode{<text:p text:style-name="P8" >}} + {\HCode{<text:tab-stop/></text:p>}\hfill\break} + {} +>>> + + + + + +\<index format\><<< +<text:alphabetical-index-source + text:sort-algorithm="alphanumeric" >\Hnewline + <text:index-title-template + text:style-name="Index-Heading" >\indexname + </text:index-title-template>\Hnewline + |<index entry format|>\Hnewline +</text:alphabetical-index-source>\Hnewline +>>> + +\<index entry format\><<< +<text:alphabetical-index-entry-template + text:outline-level="1" + text:style-name="Index-1" >\Hnewline + <text:index-entry-text/>\Hnewline + <text:index-entry-tab-stop + style:type="left" + style:position="0in" + style:leader-char=" " + />\Hnewline + <text:index-entry-page-number/>\Hnewline +</text:alphabetical-index-entry-template>\Hnewline +>>> + +\<index entry format\><<< +<text:alphabetical-index-entry-template + text:outline-level="2" + text:style-name="Index-2" >\Hnewline + <text:index-entry-text/>\Hnewline + <text:index-entry-tab-stop + style:type="left" + style:position="0in" + style:leader-char=" " + />\Hnewline + <text:index-entry-page-number/>\Hnewline +</text:alphabetical-index-entry-template>\Hnewline +>>> + +\<index entry format\><<< +<text:alphabetical-index-entry-template + text:outline-level="3" + text:style-name="Index-3" >\Hnewline + <text:index-entry-text/>\Hnewline + <text:index-entry-tab-stop + style:type="left" + style:position="0in" + style:leader-char=" " + />\Hnewline + <text:index-entry-page-number/>\Hnewline +</text:alphabetical-index-entry-template>\Hnewline +>>> + + + + + + + + +\<content style 6\><<< +\NewConfigureOO{Index 1} +\ConfigureOO{Index 1}{\Hnewline + <style:style style:name="Index-1" + style:family="paragraph" + style:parent-style-name="Index" + style:class="index"> + <style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:text-indent="0cm" + style:auto-text-indent="false"/> + </style:style> + \Hnewline } +>>> + + + +\<content style 7\><<< +\NewConfigureOO{Index 2} +\ConfigureOO{Index 2}{\Hnewline + <style:style style:name="Index-2" + style:family="paragraph" + style:parent-style-name="Index" + style:class="index">\Hnewline + <style:paragraph-properties fo:margin-left="0.499cm" + fo:margin-right="0cm" + fo:text-indent="0cm" + style:auto-text-indent="false"/>\Hnewline + </style:style> +\Hnewline} +>>> + + + +\<content style 8\><<< +\NewConfigureOO{Index 3} +\ConfigureOO{Index 3}{\Hnewline + <style:style style:name="Index-3" + style:family="paragraph" + style:parent-style-name="Index" + style:class="index">\Hnewline + <style:paragraph-properties fo:margin-left="0.998cm" + fo:margin-right="0cm" + fo:text-indent="0cm" + style:auto-text-indent="false"/>\Hnewline + </style:style> + \Hnewline} +>>> + + + + +\<automatic style 6\><<< +\Hnewline + <style:style style:name="P6" + style:family="paragraph" + style:parent-style-name="Index-1">\Hnewline + <style:paragraph-properties >\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="0cm"/>\Hnewline + </style:tab-stops>\Hnewline + </style:text-properties>\Hnewline + </style:style> + \Hnewline +>>> + + +\<automatic style 7\><<< +\Hnewline + <style:style style:name="P7" + style:family="paragraph" + style:parent-style-name="Index-2">\Hnewline + <style:paragraph-properties >\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="0cm"/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style> + \Hnewline +>>> + + +\<automatic style 8\><<< +\Hnewline + <style:style style:name="P8" + style:family="paragraph" + style:parent-style-name="Index-3">\Hnewline + <style:paragraph-properties >\Hnewline + <style:tab-stops>\Hnewline + <style:tab-stop style:position="0cm"/>\Hnewline + </style:tab-stops>\Hnewline + </style:paragraph-properties >\Hnewline + </style:style> + \Hnewline +>>> + + +%%%%%%%%%%%%% +\subsection{Making Index Entries} +%%%%%%%%%%%%% + + + +\<configure ooffice latex\><<< +\catcode`\!=13 +\HAssign\indexmark:N = 0 +\immediate\openin15=\jobname.4ix +\ifeof15 \else + \Configure{wrindex} + {{\special{t4ht@(}\catcode`\\=0 \catcode`\{=1 + \catcode`\}=2 \catcode`\ =10 \catcode`\!=13 + \def!{\c:indexmark\def!{\d:indexmark\def!{\string!}}}% + \gHAdvance\indexmark:N by 1 + \def\indexmark##1##2{% + \ifnum \indexmark:N=##2 \special{t4ht@)}\a:indexmark + ##1\b:indexmark\special{t4ht@(}\fi}% + \hbox{\input \jobname.4ix \special{t4ht@)}}% + }} +\fi +\catcode`\!=12 +\NewConfigure{indexmark}{4} +\Configure{indexmark} + {\HCode{<text:alphabetical-index-mark\Hnewline + text:id="dx\last:haddr" + text:string-value="}% + \NoFonts} + {\EndNoFonts \HCode{" />}} + {\HCode{" text:key1="}} + {\HCode{" text:key2="}} +>>> + + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \pend:def\a:wrindex{% +% \let\title::chs=\title:chs +% \def\title:chs{\let\title:chs\title::chs +% \title:chs{\html:addr}{}\:gobbleII}% +% } +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \Configure{indexmark} +% {\HCode{<!--}\Link-{}{dx\last:haddr}\EndLink\HCode{-->}% +% \HCode{<text:alphabetical-index-mark\Hnewline + + +\<configure ooffice latex\><<< +\pend:def\index{\leavevmode} +>>> + +The following two sample codes provide different behavior. + +\begin{verbatim} +\documentclass[12pt]{article} +\usepackage{makeidx} +\makeindex +\begin{document} +\index{Hola: Hallo} Hola +\printindex +\end{document} +\end{verbatim} + +\begin{verbatim} +\documentclass{article} +\usepackage[frenchb]{babel} +\usepackage{makeidx} +\makeindex + +\begin{document} +\begin{itemize} +\item \index{blabla} blabla +\item blabla +\end{itemize} +\end{document} +\end{verbatim} + + + + + + +%%%%%%%%%%%%% +\subsection{Insed Title Head} +%%%%%%%%%%%%% + +\<ooffice index\><<< +\Configure{LNK}{\oo:LNK}{\EndLink}{} +\Odef\oo:LNK[#1]#2#3{\Link{#2}{#3}} +>>> + + +\<chapter index\><<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \def\put:IndexTitle{|<index title|>}\fi} +>>> + +\<non-chapter index\><<< +\Configure{@begin}{theindex}{\ifx \indexname\empty \else + \def\put:IndexTitle{|<index title|>}\fi} +>>> + +\<index title\><<< +\HCode{<text:index-title + text:style-name="Sect1" + text:name="Alphabetical_Index1_Head" + ><text:p + text:style-name="Index-Heading" >}\indexname +\HCode{</text:p></text:index-title>\Hnewline} +>>> + + +\<configure ooffice latex\><<< +\NewConfigureOO{Index Heading} +\ConfigureOO{Index Heading}{\Hnewline + <style:style + style:name="Index-Heading" + style:family="paragraph" + style:parent-style-name="Heading" + style:class="index">\Hnewline + <style:paragraph-properties + fo:margin-left="0in" + fo:margin-right="0in" + fo:font-size="16pt" + fo:font-weight="bold" + style:font-size-asian="16pt" + style:font-weight-asian="bold" + style:font-size-complex="16pt" + style:font-weight-complex="bold" + fo:text-indent="0in" + style:auto-text-indent="false" + text:number-lines="false" + text:line-number="0"/>\Hnewline + </style:style>\Hnewline +} +>>> + +\<configure html4 multind\><<< +\Configure{@begin}{theindex} + {\ifx \indexname\empty \else|<toc for multind|>\fi} +>>> + + +% \ifx \indexname\empty \else +% \ifx\chapter\:Undef \section*{\indexname}\else +% \chapter*{\indexname}\fi +% \let\indexname=\empty +% \fi +% + + + +\<configure html4 index\><<< +\Configure{NoSection} + {\let\sv:index=\p@index \let\sv:label=\label + \let\sv:newline=\newline \def\newline{ }% + \def\p@index[##1]{\@gobble}\let\label=\@gobble + |<nolink ref|>% + } + {\let\p@index=\sv:index \let\label=\sv:label + |<restore ref|>% + \let\newline=\sv:newline + } +>>> + + + + +\<configure html4 texinfo\><<< +\Configure{index} + {\IgnorePar\leavevmode\EndP\Tg<div class="index">} + {\IgnorePar\EndP\Tg</div>} + {\leavevmode\Tg<span class="entry">} + {\Tg</span>\Tg<br />\IgnorePar} +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{mwcls} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<mwcls index\><<< +\Configure{@begin}{theindex}{\section*{\indexname}} +>>> + +\<mwcls sections\><<< +\ConfigureMark{chapter} + {\ifHeadingNumbered \mw@seccntformat\HeadingNumber\fi} +\ConfigureMark{section} +{\ifHeadingNumbered\@seccntformat{section}\fi} +\ConfigureMark{subsection} +{\ifHeadingNumbered\@seccntformat{subsection}\fi} +\ConfigureMark{subsubsection} +{\ifHeadingNumbered\@seccntformat{subsubsection}\fi} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Begin/End Environments} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Verse} +%%%%%%%%%%%%% + + + +\<configure ooffice latex\><<< +\ConfigureEnv{verse} + {|<begin env section|>% + \HCode{<!--start verse-->}% + \bgroup |<HtmlPar at verse|>} + {\egroup \ifvmode \IgnorePar\fi \EndP + \HCode{<!--end verse-->}|<end env section|>\par\ShowPar} + {}{} +\ConfigureList{verse} + {}{} + {\parindent=\z@} {\par} +\NewConfigureOO{verse} +\ConfigureOO{verse}{\Hnewline +<style:style style:name="verse" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body"> +<style:paragraph-properties fo:margin-left="1.499cm" + fo:margin-right="1cm" + fo:margin-top="0.199cm" + fo:margin-bottom="0.199cm" + fo:text-indent="-0.499cm" + style:auto-text-indent="false"> + <style:tab-stops/> +</style:paragraph-properties > +</style:style> +\Hnewline} +>>> + +\<configure ooffice verse\><<< +\ConfigureEnv{verse} + {|<begin env section|>% + \HCode{<!--start verse-->}% + \bgroup +\Configure{HtmlPar} + {\ifvmode \IgnorePar\fi \EndP\end:verseln + \HCode{<text:p text:style-name="verse-stanza" >}} + {\ifvmode \IgnorePar\fi \EndP\end:verseln + \HCode{<text:p text:style-name="verse-stanza" >}} + {\HCode{</text:p>}\let\end:verseln\empty} + {\HCode{</text:p>}\let\end:verseln\empty}% + \let\end:verseln\empty + } + {\egroup + \ifvmode \IgnorePar\fi \EndP\HCode{<!--end verse-->}|<end env section|> + \par\ShowPar} + {}{} + +\ConfigureList{verse} + {} {\ifvmode \IgnorePar\fi \EndP \end:verseln} + {\parindent=\z@} {} + +\Configure{verseline} + {\ifvmode \IgnorePar\fi \EndP \end:verseln + \HCode{<text:p text:style-name="verse">}\def\end:verseln{\HCode{</text:p>}}} + {\ifvmode \IgnorePar\fi \EndP \end:verseln + \HCode{<text:p text:style-name="verse">}% + \def\end:verseln{\HCode{</text:p>}}} + +\ConfigureOO{verse}{\Hnewline +<style:style style:name="verse" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body"> +<style:paragraph-properties fo:margin-left="1.499cm" + fo:margin-right="1cm" + fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:text-indent="-0.499cm" + style:auto-text-indent="false"> + <style:tab-stops/> +</style:paragraph-properties > +</style:style> +\Hnewline} + +\NewConfigureOO{verse-stanza} +\ConfigureOO{verse-stanza}{\Hnewline +<style:style style:name="verse-stanza" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body"> +<style:paragraph-properties fo:margin-left="1.499cm" + fo:margin-right="1cm" + fo:margin-top="0.5cm" + fo:margin-bottom="0cm" + fo:text-indent="-0.499cm" + style:auto-text-indent="false"> + <style:tab-stops/> +</style:paragraph-properties > +</style:style> +\Hnewline} +>>> + +%%%%%%%%%%%%% +\subsection{Paragraph} +%%%%%%%%%%%%% + + + + +\<HtmlPar at verse\><<< +\Configure{HtmlPar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="verse" >}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="verse" >}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% +>>> + + + + + + +%%%%%%%%%%%%% +\subsection{Table} +%%%%%%%%%%%%% + + + +\<ooffice begin-end env\><<< +\ConfigureEnv{table} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:section text:name="table" >}% + \bgroup \Configure{float}{\ShowPar}{}{\ShowPar\IgnoreIndent\csname par\endcsname}% + } + {\egroup + \ifvmode \IgnorePar\fi\EndP \HCode{</text:section>}% + \csname par\endcsname\ShowPar} + {}{} +>>> + + + + + + +%%%%%%%%%%%%% +\subsection{Float} +%%%%%%%%%%%%% + + + +\<configure ooffice latex\><<< +\Configure{float} + {\csname par\endcsname\ShowPar \leavevmode} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:section text:name="float" >}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{</text:section>}% + \csname par\endcsname\ShowPar + } +\ConfigureEnv{figure} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:section text:name="fig" + text:style-name="Figure" + >|<big skip|>}% + \bgroup \Configure{float}{\ShowPar}{}{}% + } + {\egroup + \ifvmode \IgnorePar\fi\EndP \HCode{|<big skip|></text:section>}% + \csname par\endcsname\ShowPar} + {}{} +>>> + +\<configure ooffice Preamble\><<< +\edef\Preamble{\Preamble,refcaption} +>>> + +The section style can't be in style.xml? + + +\<oo2 automatic styles\><<< +\Configure{automatic-styles} + {\csname a:figure-style\endcsname} +\NewConfigure{figure-style}{1} +\Configure{figure-style}{% + <style:style style:name="Figure" style:family="section">\Hnewline + <style:section-properties + fo:margin-left="0.25in" + fo:margin-right="0.25in" + style:editable="true">\Hnewline + <style:columns fo:column-count="0" + fo:column-gap="0in"/> + </style:section-properties> + </style:style>\Hnewline +} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{lineno.sty} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice lineno\><<< +\:warning{The line numbers are commented out. To reintroduce them, use + the \string\Configure{lineno}{...}{...} command} +\Configure{lineno} + {\bgroup \let\LineNumber=\empty} + {\egroup} +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Text Decorations} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\subsection{Fonts} +%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice tex4ht\><<< +\Configure{htf}{0}{+}{<text:span\Hnewline + text:style-name="}{\%s}{-\%s}{x-x-\%d}{}{">}{</text:span>} +\Configure{htf}{4}{+}{<text:span\Hnewline + text:style-name="}{}{}{}{}{small-caps">}{</text:span>} +>>> + +\<configure ooffice tex4ht\><<< +\NewConfigureOO{small-caps} +\ConfigureOO{small-caps}{% +<style:style style:name="small-caps" style:family="text">\Hnewline + <style:text-properties + fo:font-variant="small-caps" + />\Hnewline +</style:style>\Hnewline +} +>>> + + +\<configure ooffice fontmath\><<< +\ifx \find:set:mgroup\:UnDef + \def\find:set:mgroup#1#2#3{\bgroup + \let\HPage\:gobble + \let\EndHPage\:gobble + \def\use@mathgroup##1##2##3{\relax + \tmp:cnt=##2% + \xdef\:temp####1{\noexpand\Configure{MathClass}{#2}% + {}{}{}{\mathchar"0\the\tmp:cnt ####1}}% + }% + \setbox\tmp:bx=\hbox{$#1$}\setbox\tmp:bx=\hbox{}% + \set:mgroup#3{}{}% + \egroup + } +\fi +>>> + + +\<configure ooffice fontmath\><<< +\Configure{texttt} + {\ifmathml \Configure{@mtext}{\mml:class="texttt" mathvariant="monospace" }% + \else \HCode{<text:span text:style-name="texttt" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} + \Configure{textit} + {\ifmathml \Configure{@mtext}{\mml:class="textit" mathvariant="italic" }% + \else \HCode{<text:span text:style-name="textit" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} + \Configure{textrm} + {\ifmathml \Configure{@mtext}{ \mml:class="textrm" mathvariant="normal" }% + \else \HCode{<text:span text:style-name="textrm" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} + \Configure{textsl} + {\ifmathml \Configure{@mtext}{ \mml:class="textst" mathvariant="italic" }% + \else \HCode{<text:span text:style-name="textsl" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} + \Configure{textsf} + {\ifmathml \Configure{@mtext}{ \mml:class="textsf" mathvariant="sans-serif" }% + \else \HCode{<text:span text:style-name="textsf" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} + \Configure{textbf} + {\ifmathml \Configure{@mtext}{ \mml:class="textbf" mathvariant="bold" }% + \else \HCode{<text:span text:style-name="textbf" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} + \Configure{textsc} + {\ifmathml \Configure{@mtext}{ \mml:class="textsc" mathvariant="normal" }% + \else \HCode{<text:span text:style-name="textsc" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} + \Configure{emph} + {\ifmathml \Configure{@mtext}{ \mml:class="emph" mathvariant="italic" }% + \else \HCode{<text:span text:style-name="Emphasis" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} + \Configure{textup} + {\ifmathml \Configure{@mtext}{ \mml:class="textup" mathvariant="normal" }% + \else \HCode{<text:span text:style-name="textup" >}\fi} + {\ifmathml\else \HCode{</text:span>}\fi} +>>> + + + +\<configure ooffice fontmath\><<< +\NewConfigureOO{emph} +\ConfigureOO{emph}{|<oo emph style|>} +\NewConfigureOO{textit} +\ConfigureOO{textit}{|<oo textit style|>} +\NewConfigureOO{textbf} +\ConfigureOO{textbf}{|<oo textbf style|>} +\NewConfigureOO{textsc} +\ConfigureOO{textsc}{|<oo textsc style|>} +\NewConfigureOO{texttt} +\ConfigureOO{texttt}{|<oo texttt style|>} +\NewConfigureOO{textrm} +\ConfigureOO{textrm}{|<oo textrm style|>} +\NewConfigureOO{textsf} +\ConfigureOO{textsf}{|<oo textsf style|>} +\NewConfigureOO{textsl} +\ConfigureOO{textsl}{|<oo textsl style|>} +\NewConfigureOO{textsl} +\ConfigureOO{textsl}{|<oo textup style|>} +>>> + + +\<oo textsf style\><<< +<style:style style:name="textsf" style:family="text">\Hnewline + <style:text-properties fo:font-style="normal" + fo:font-weight="bold" + style:font-family-generic="swiss" + style:font-pitch="variable" />\Hnewline +</style:style>\Hnewline +>>> + + +\<oo emph style\><<< +<style:style style:name="Emphasis" style:family="text">\Hnewline + <style:text-properties fo:font-style="italic"/>\Hnewline +</style:style>\Hnewline +>>> + +\<oo textit style\><<< +<style:style style:name="textit" style:family="text">\Hnewline + <style:text-properties fo:font-style="italic"/>\Hnewline +</style:style>\Hnewline +>>> + + + + +\<oo textrm style\><<< +<style:style style:name="textrm" style:family="text">\Hnewline +<style:text-properties fo:font-weight="normal" + style:font-weight-asian="normal" + style:font-weight-complex="normal"/>\Hnewline +</style:style>\Hnewline +>>> + + + + + +\<oo textsl style\><<< +<style:style style:name="textsl" style:family="text">\Hnewline + <style:text-properties fo:font-style="italic"/>\Hnewline +</style:style>\Hnewline +>>> + +\<oo textbf style\><<< +<style:style style:name="textbf" style:family="text">\Hnewline + <style:text-properties fo:font-style="normal" + fo:font-weight="bold"/>\Hnewline +</style:style>\Hnewline +>>> + +\<oo textsc style\><<< +<style:style style:name="textsc" style:family="text">\Hnewline + <style:text-properties + fo:font-variant="small-caps" + fo:font-style="normal" + fo:font-weight="normal" +% fo:font-size="75\%" + style:text-position="0\% 100\%" + />\Hnewline +</style:style>\Hnewline +>>> + + +\<oo texttt style\><<< +<style:style style:name="texttt" style:family="text">\Hnewline + <style:text-properties + fo:font-family="monospace" + />\Hnewline +</style:style>\Hnewline +>>> + +\<oo textup style\><<< +<style:style style:name="textup" style:family="text">\Hnewline +<style:text-properties fo:font-weight="normal" + style:font-weight-asian="normal" + style:font-weight-complex="normal"/>\Hnewline +</style:style>\Hnewline +>>> + + + +%%%%%%%%%%%%% +\subsection{Soul} +%%%%%%%%%%%%% + +\<configure ooffice soul\><<< +\Configure{textcaps} + {\HCode{<text:span text:style-name="textcaps">}} + {\HCode{</text:span>}} +\Configure{texthl} + {\HCode{<text:span text:style-name="texthl">}\bgroup + \ifx\setstcolor\:gobble\else |<soul color|>\fi} + {\egroup\HCode{</text:span>}} +\Configure{textso} + {\HCode{<text:span text:style-name="textso">}} + {\HCode{</text:span>}} +\Configure{textst} + {\HCode{<text:span text:style-name="textst">}\bgroup + \ifx\setstcolor\:gobble\else |<soul color|>\fi} + {\egroup\HCode{</text:span>}} +\Configure{textul} + {\HCode{<text:span text:style-name="textul">}\bgroup + \ifx\setstcolor\:gobble\else |<soul color|>\fi} + {\egroup\HCode{</text:span>}} +>>> + + + + + +\<configure ooffice soul\><<< +\NewConfigureOO{textcaps} +\ConfigureOO{textcaps}{|<oo textcaps style|>} +\NewConfigureOO{textso} +\ConfigureOO{textso}{|<oo textso style|>} +\NewConfigureOO{textst} +\ConfigureOO{textst}{|<oo textst style|>} +\NewConfigureOO{textul} +\ConfigureOO{textul}{|<oo textul style|>} +>>> + + +\<oo textcaps style\><<< +<style:style style:name="textcaps" style:family="text">\Hnewline + <style:text-properties fo:font-variant="small-caps" />\Hnewline +</style:style>\Hnewline +>>> + + + +\<oo textso style\><<< +<style:style style:name="textso" style:family="text"> + <style:text-properties fo:letter-spacing="0.035in"/> +</style:style> +>>> + +\<oo textst style\><<< +<style:style style:name="textst" style:family="text"> + <style:text-properties style:text-line-through-style="solid" + style:text-underline-style="none" /> +</style:style> +>>> + +\<oo textul style\><<< +<style:style style:name="textul" style:family="text"> + <style:text-properties style:text-underline-style="solid" + style:text-underline-width="auto" + style:text-underline-color="font-color" + /> +</style:style> +>>> + +\<soul color\><<< +\Configure{textcolor} + {\gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor}{% + \OOstyles{% + <style:style style:name="textcolor\textcolorN" style:family="text"> + <style:text-properties fo:color="\HColor" + fo:background-color="transparent" /> + </style:style>}% + }}% + \HCode{<text:span text:style-name="textcolor\textcolorN">}}% + {\HCode{</text:span>}}% +>>> + + +% <style:text-properties style:text-background-color="\HColor"/> + +% <style:style style:name="T7" style:family="text"> +% <style:text-properties fo:color="#008000" fo:background-color="#ffffff"/> +% </style:style> + + +%%%%%%%%%%%%% +\subsection{Color} +%%%%%%%%%%%%% + + +\<configure ooffice color\><<< +\HAssign\textcolorN=0 +>>> + + +\<configure ooffice color\><<< +\Configure{textcolor} + {\gHAdvance\textcolorN by 1 + \Configure{color}% + {\Configure{SetHColor}{% + \OOstyles{% + <style:style style:name="textcolor\textcolorN" style:family="text"> + <style:text-properties fo:color="\HColor" + fo:background-color="transparent" /> + </style:style>}% + }}% + \HCode{<text:span text:style-name="textcolor\textcolorN">}}% + {\HCode{</text:span>}}% +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Pictures} +%%%%%%%%%%%%%%%%%% + + +\<configure ooffice latex\><<< +\Configure{picture} + {\Picture+[PICT]{}} + {\EndPicture} +>>> + + + +\<configure ooffice pst-jtree\><<< +\Configure{picture} + {\Picture+[PICT]{}} + {\EndPicture} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Equation Environment} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{LaTeX} +%%%%%%%%%%%%% + + +\<configure ooffice-mml latex\><<< +\:CheckOption{tab-eq}\if:Option + |<tab-based display equation|> +\else + \Log:Note{for tab-based layoutof equation environment + use the command line option `tab-eq'} + |<tabular-based display equation|> +\fi +>>> + + +\<tab-based display equation\><<< +\Configure{equation} + {\IgnorePar\ifvmode\else \HCode{<!--tex4ht:inline-->}\fi + \EndP \HCode{<text:p text:style-name="equ-p-tab"><text:tab/>}% + \Tabtrue + |<disp math within equation|>% + \IgnorePar} + {\Tabfalse \ifvmode \IgnorePar\fi\EndP \HCode{<text:tab/>}} + {\HCode{</text:p>}|<try inline par|>% +} +>>> + +\<configure ooffice Preamble\><<< +\newif\ifTab \Tabfalse +>>> + + + +\<tab-based display equation\><<< +\OOstyles{% +<style:style + style:name="equ-p-tab" + style:family="paragraph" + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties + fo:text-align="center" + style:justify-single-word="false">\Hnewline + <style:tab-stops> + <style:tab-stop + style:position="7.5cm" + style:type="center"/> + <style:tab-stop + style:position="17cm" + style:type="right"/> + </style:tab-stops>\Hnewline + </style:paragraph-properties> +</style:style>\Hnewline +} +>>> + + + + + + + + + + + +\<tabular-based display equation\><<< +\Configure{equation} + {\IgnorePar\ifvmode\else \HCode{<!--tex4ht:inline-->}\fi + \EndP |<equation start table|>% + |<disp math within equation|>% + \IgnorePar} + {\ifvmode \IgnorePar\fi\EndP + |<equation table cells separator|>} + {|<equation end table|>|<try inline par|>% +} +>>> + + +\<equation start table\><<< +\HCode{<table:table table:style-name="equation">% + <table:table-column table:style-name="equ-col" />\Hnewline + <table:table-column table:style-name="equ-num-col" />\Hnewline + <table:table-row>% + <table:table-cell table:style-name="equ-cell">% + <text:p text:style-name="equ-p">}% +>>> + + + + +\<equation end table\><<< +\HCode{</text:p></table:table-cell>\Hnewline + </table:table-row></table:table>}% +>>> + + + + + +\<equation table cells separator\><<< +\HCode{</text:p></table:table-cell>\Hnewline + <table:table-cell table:style-name="equ-num-cell">% + <text:p text:style-name="equ-num-p">}% +>>> + + + + + +\<configure ooffice-mml latex\><<< +\OOstyles{% +<style:style + style:name="equ-p" + style:family="paragraph" + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties + fo:text-align="center" + style:justify-single-word="false"/>\Hnewline +</style:style>\Hnewline +} +\OOstyles{% +<style:style + style:name="equ-num-p" + style:family="paragraph" + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties + fo:text-align="end" + style:justify-single-word="false"/>\Hnewline +</style:style>\Hnewline +} +\OOstyles{% +<style:style style:name="equation" + style:family="table">\Hnewline + <\style:tableproperties + style:rel-width="88\%" + fo:margin-left="1cm" + fo:margin-right="0cm" + fo:margin-top="0.3cm" + fo:margin-bottom="0.3cm" + table:align="margins"/>\Hnewline +</style:style>\Hnewline +} +>>> + +%%%%%%%%%%%%% +\subsection{AMS Non-Starred} +%%%%%%%%%%%%% + + +\<configure ooffice-mml amsmath\><<< +\:CheckOption{tab-eq}\if:Option + |<tab-based ams display equation|> +\else + \Log:Note{for tab-based layout of equation environment + use the command line option `tab-eq'} + |<tabular-based ams display equation|> +\fi +>>> + + + + + + +\<tabular-based ams display equation\><<< +\Configure{equation} + {\ifvmode \IgnorePar\fi\EndP + |<equation start table|>% + |<amsmath equation july 2000|>% + |<disp math within equation|>% + } + {\ifvmode \IgnorePar\fi\EndP |<equation table cells separator|>} + {\ifvmode \IgnorePar\fi\EndP |<equation end table|>% + |<try inline par|>} +>>> + + + + + +\<tab-based ams display equation\><<< +\Configure{equation} + {\IgnorePar\ifvmode\else \HCode{<!--tex4ht:inline-->}\fi + \EndP \HCode{<text:p text:style-name="equ-p-tab"><text:tab/>}% + \Tabtrue + |<amsmath equation july 2000|>% + \IgnorePar} + {\Tabfalse \ifvmode \IgnorePar\fi\EndP \HCode{<text:tab/>}} + {\HCode{</text:p>}|<try inline par|>% +} +>>> + + + + + + + + + + + + +\<disp math within equation\><<< +\Configure{$$} + {\Configure{@math}{}\IgnorePar\EndP + \CenteredFrametrue \DviMath \CenteredFramefalse } + {\EndDviMath\EndP}{}% +>>> + + + + +\<amsmath equation july 2000\><<< +\Configure{gather} + {\HCode{<\a:mathml mtable\Hnewline + class="equation"><\a:mathml mtr><\a:mathml mtd>}\IgnorePar + |<math display in equation|>} + {\HCode{</\a:mathml mtd></\a:mathml mtr></\a:mathml mtable>}} + {} + {} + {\ifnum\HCol=2 \IgnorePar + \HCode{</\a:mathml mtd><\a:mathml mtd>}\fi } + {}% +>>> + + + +%%%%%%%%%%%%% +\subsection{AMS Starred} +%%%%%%%%%%%%% + + + +\<configure ooffice-mml amsmath\><<< +\Configure{equation*} + {\ifvmode \IgnorePar\fi \EndP + |<equation-star start table|>% + |<disp math within equation|>% + \IgnorePar + } + {\ifvmode \IgnorePar\fi\EndP + |<equation-star end table|>% + \IgnoreIndent\par} +>>> + + +\<equation-star start table\><<< +\HCode{<text:p text:style-name="display-math">}% +>>> + + +\<equation-star end table\><<< +\HCode{</text:p>}% +>>> + + + +\<configure ooffice-mml amsmath\><<< +\ConfigureEnv{align} + {\ifmathml\else + \ifvmode \IgnorePar\fi \EndP + \IgnorePar + \HCode{<text:p text:style-name="display-math">}% + \fi + } + {\ifmathml\else + \ifvmode \IgnorePar\fi\EndP + \HCode{</text:p>}% + \IgnoreIndent\par + \fi + } + {} {} +>>> + + +\<configure ooffice-mml amsmath\><<< +\ConfigureEnv{align*} + {\ifmathml\else + \ifvmode \IgnorePar\fi \EndP + \IgnorePar + \HCode{<text:p text:style-name="display-math">}% + \fi + } + {\ifmathml\else + \ifvmode \IgnorePar\fi\EndP + \HCode{</text:p>}% + \IgnoreIndent\par + \fi + } + {} {} +>>> + + + +%%%%%%%%%%%%%%%%%%% +\section{algorithmicx} +%%%%%%%%%%%%%%%%%%% + +\<configure ooffice algorithmicx\><<< +\ConfigureEnv{algorithmic} + {\ifvmode \IgnorePar\fi \EndP +% \HCode{<div \a:LRdir class="algorithmic">}% + \bgroup + \Configure{HtmlPar} + {\EndP} + {\EndP} + {} + {}% + } + {\egroup +% \HCode{</div>}% + \par\ShowPar + } + {}{} +>>> + +\<configure ooffice algorithmicx\><<< +\let\end:itm=\empty +\ConfigureList{algorithmic}% + {\EndP \end:itm + \SaveHtmlPar \HCode{<text:list + text:style-name="algorithmic|<cond rtl class|>" + text:name="algorithmic"\Hnewline>}% + \PushMacro\end:Itm + \global\let\end:itm=\empty + \global\let\end:Itm=\empty + \Configure{HtmlPar} + {\end:itm\gdef\end:itm{\HCode{</text:p>}}% + \HCode{<text:p + text:style-name="dd|<cond rtl class|>" >}% + } + {\end:itm\gdef\end:itm{\HCode{</text:p>}}% + \HCode{<text:p + text:style-name="dd|<cond rtl class|>" >}% + } + {} + {}% + } + {\end:itm \end:Itm \global\let\end:itm=\empty + \PopMacro\end:Itm \global\let\end:Itm\end:Itm + \HCode{</text:list>}\RecallHtmlPar \ShowPar + \special{t4ht@.}% + } + {\end:itm \end:Itm \gdef\end:Itm{\HCode{</text:list-item>}}% + \gdef\end:itm{\HCode{</text:h>}\special{t4ht@.}}\HCode{<text:list-item><text:h + text:style-name="algorithmic-dt|<cond rtl class|>"\Hnewline >}\bgroup \bf + \special{t4ht@. }% + } + {\special{t4ht@.}% + \egroup + \special{t4ht@. }% + } +>>> + + + + + + + +\<\><<< +\ConfigureList{algorithmic}% + {\EndP + \PushMacro\end:itm + \global\let\end:itm=\empty} + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP + \special{t4ht@.}% + \HCode{</span>}% + } + {\end:itm + \HCode{\ifx \end:itm\empty\else <br class="algorithmic"/>\fi + <span class="label-\the\labelwidth">}% + \global\def\end:itm{\EndP\special{t4ht@,}\Tg</span>}% + \ifnum \c@ALG@line=10 + \Css{.algorithmic span.label{width:3em; text-align:right;}}\fi + } + {\HCode{</span>&\#xA0;<span\Hnewline class="algorithmic">}% + \special{t4ht@. }} +\Css{div.algorithmic span.algorithmic{white-space:pre}} +>>> + + + + + +\<configure ooffice latex\><<< +\NewConfigureOO{algorithmic} +\ConfigureOO{algorithmic}{|<algorithmic style|>} +>>> + + + + +\<algorithmic style\><<< +<text:list-style style:name="algorithmic" > + <text:list-level-style-bullet + text:level="1" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0in" + text:min-label-width="0in" + text:min-label-distance="0in" />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="2" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.2in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in" + />\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="3" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.4in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> + <text:list-level-style-bullet + text:level="4" + text:style-name="Source-Text" + text:bullet-char=" " >\Hnewline + <style:list-level-properties + text:space-before="0.6in" + text:min-label-width="0.2in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet> +</text:list-style> +>>> + + +\<algorithmic style\><<< +<style:style + style:name="algorithmic-dd" + style:family="paragraph" + style:parent-style-name="Standard"> + <style:paragraph-properties + fo:margin-left="0.35in" + fo:margin-right="0in" + fo:margin-top="0cm" + fo:margin-bottom="0.2cm" + fo:text-indent="0in" + style:auto-text-indent="false"/> + <style:text-properties + fo:wrap-option="no-wrap" + /> +</style:style> +<style:style + style:name="algorithmic-dt" + style:family="paragraph" + style:parent-style-name=""> + <style:paragraph-properties + fo:margin-left="0.1in" + fo:margin-right="0in" + fo:text-indent="0in" + style:auto-text-indent="false"/> + <style:text-properties + fo:wrap-option="no-wrap" + /> +</style:style> +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Links} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{Cross References} +%%%%%%%%%%%%% + + +\url{http://www.linuxjournal.com/article/8112} + +\begin{verbatim} +<text:reference-mark-start text:name="xx"/> +is +<text:reference-mark-end text:name="xx"/> + +<text:reference-ref text:reference-format="direction" text:ref-name="xx"> +above +</text:reference-ref> +\end{verbatim} + + + +An approximation is provided here, to be cleaned by xtpipes. + +\<configure ooffice latex\><<< +\Configure{Link}{t4htlink}{href=}{name=}{}% +\Configure{ref} + {\Link} + {\ifx \RefArg\:UnDef\else + \Tg<!--tex4ht:ref: \RefArg\space-->\fi\EndLink} + {} +\def\NOHREF:#1{\space href="\:sharp#1"}% +>>> + + + +\<configure ooffice latex\><<< +\:CheckOption{hidden-ref}\if:Option + \OOstyles{% + <style:style style:name="reference-ref" style:family="text"> + <style:text-properties + style:text-scale = "0\%" + /> + </style:style> + } +\else + \Log:Note{to hide clickable index and bibliography references + use the command line option `hidden-ref'} + \OOstyles{% + <style:style style:name="reference-ref" style:family="text"> + <style:text-properties + style:text-underline-style="solid" + style:text-underline-width="thick" + style:text-underline-height="0.2em" + style:text-underline-color="\#0000FF" + /> + </style:style> + } +\fi +>>> + +\<configure ooffice latex \><<< +\Configure{Link}{text:a}{ xlink:href=} + { office:name=}{}% +\def\NOHREF:#1{\space xlink:href="\:sharp#1"}% +>>> + + +% \Configure{Link}{text:span}{xlink:href=}{xlink:label=}{} + + + + +%%%%%%%%%%%%%%%%%%% +\subsection{url.sty} +%%%%%%%%%%%%%%%%%%% + +\<configure ooffice url\><<< +\:CheckOption{url-il2-pl} \if:Option +\else \:CheckOption{url-enc} \fi +\if:Option + \Configure{string-encoder}{url-encoder} +% \:CheckOption{url-il2-pl} \if:Option + |<il2-pl.tcx url encoder|> +% \else + |<default url encoder WAIT|> +% \Log:Note{for il2-pl url encoding, +% use the command line option 'url-il2-pl'} +% \fi + \Configure{url}% + {|<:temp = url encoded string|>% + \Link[\noexpand\the\tmp:toks \space + class="url"]{}{}{\let\UrlBigBreaks\empty + \let\UrlBreaks\empty #1}\EndLink} + |<url encoded string utilities|> +\else + \:CheckOption{url-} \if:Option + \Configure{url}% + {{\let\UrlBigBreaks\empty \let\UrlBreaks\empty #1}}% + \else + \Log:Note{for URL encoding within href + use the command line option `url-enc'; for hyperlink-less + entry use the command line option `url-'} + \Configure{url}% + {\tmp:toks{#1}\Link[\noexpand\the\tmp:toks\space + class="url"]{}{}{\let\UrlBigBreaks\empty + \let\UrlBreaks\empty #1}\EndLink} + \fi +\fi +|<path config|> +>>> + +\<:temp = url encoded string\><<< +\tmp:toks={}\set:spaces#1|<par del|>% +\edef\:temp{\tmp:toks{\csname url-encoder\expandafter\endcsname + \the\tmp:toks |<par del|>}}\:temp +>>> + +\<url encoded string utilities\><<< +\def\set:spaces{\futurelet\:temp\set:spacesoo} +\def\set:spacesoo{% + \expandafter\ifx \space\:temp + \tmp:toks\expandafter{\the\tmp:toks{ }}% + \fi + \set:spaceso +} +\def\set:spaceso#1#2|<par del|>{% + \tmp:toks\expandafter{\the\tmp:toks #1}% + \if :#2:\else \set:spaces#2|<par del|>\fi +} +>>> + +\<default url encoder\><<< +\Configure{url-encoder} + {%}{%25} + {&}{%26} + {'}{%27} + {<}{%3C} + {>}{%3E} + {_}{_} + {^}{^} + {}{} +\Log:Note{current url encoding setting: \string\Configure{url-encoder}% + {\%}{\%25}% + {&}{\%26}% + {'}{\%27}% + {<}{\%3C}% + {>}{\%3E}% + {\string _}{\string _}% + {\string ^}{\string ^}% + {}{}} +>>> + + + + +\<il2-pl.tcx url encoder\><<< +\input{html4-l2-url.4ht} +>>> + + +\Link[http://www.faqs.org/rfcs/rfc2396.html]{}{}http://www.faqs.org/rfcs/rfc2396.html\EndLink + +See issues in: + +\begin{verbatim} +\documentclass{article} + \usepackage{url} +\begin{document} + +\url{a%b c&d} + +\url{a%25b+c&d} + +\end{document} +\end{verbatim} + +\<\><<< +\expandafter\ifx\csname Url@OT1encSpecials\endcsname\relax + |<url.sty|> +\else + |<url-2004.sty|> +\fi +>>> + +\<url-2004.styNO\><<< + +>>> + +\<url.styNO\><<< +\Configure{url}{\Link[#1 class="url"]{}{}{\let\UrlBigBreaks\empty + \let\UrlBreaks\empty #1}\EndLink} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Other} +%%%%%%%%%%%%%%%%%% + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{??? Move to Unicode} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice fontmath\><<< +\Configure{mathellipsis} + {\HCode{\string&\#x2026;}} +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Math} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice-mml latex\><<< +\Configure{[]} + {\Configure{@math}{|<block display|>}\IgnorePar + \ifvmode\EndP + \else\EndP \HCode{<!--tex4ht:inline-->}\fi + \HCode{<text:p text:style-name="display-math">}% + \CenteredFrametrue \DviMath \CenteredFramefalse + $$\DisplayMathtrue} + {$$\EndDviMath\HCode{</text:p>}\ShowPar\par + {\csname HCondtrue\endcsname\noindent}} + {} +>>> + + + + +\<configure ooffice tex4ht\><<< +\def\mml:class#1"#2"{ } +>>> + + + + +\<oo2 mml tex4ht\><<< +\Configure{$$} + {\Configure{@math}{|<block display|>}\IgnorePar + \ifvmode\EndP + \else\EndP \HCode{<!--tex4ht:inline-->}\fi + \HCode{<text:p text:style-name="display-math">}% + \CenteredFrametrue \DviMath \CenteredFramefalse } + {\EndDviMath + \HCode{</text:p>} + \ShowPar\par + {\csname HCondtrue\endcsname\noindent}} + {\DisplayMathtrue} +>>> + + +\<configure ooffice-mml rlbabel\><<< +\Configure{[]} + {\Configure{@math}{|<block display|>}\IgnorePar + \ifvmode\EndP + \else\EndP \HCode{<!--tex4ht:inline-->}\fi + \HCode{<text:p text:style-name="display-math">}% + \CenteredFrametrue \DviMath \CenteredFramefalse + $$\DisplayMathtrue} + {$$\EndDviMath\HCode{</text:p>}\ShowPar\par + {\csname HCondtrue\endcsname\noindent}} + {} +>>> + + + +\<configure ooffice-mml tex4ht\><<< +\NewConfigureOO{display-math} +\ConfigureOO{display-math} + {<style:style style:name="display-math" + style:family="paragraph" + style:parent-style-name="Text-body">\Hnewline + <style:paragraph-properties + fo:text-align="center" + style:auto-text-indent="false" + style:justify-single-word="false"/>\Hnewline + </style:style>\Hnewline} +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Obeying lines and Verbatims} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice latex\><<< +\Configure{verb} + {\HCode{<text:span\Hnewline text:style-name="verb">}} + {\HCode{</text:span>}} +\NewConfigureOO{verb} +\ConfigureOO{verb}{|<verb style|>} +>>> + +\<configure ooffice latex\><<< +\Configure{obeylines} + {\ifvmode \IgnorePar\EndP \IgnoreIndent + \HCode{<text:p\Hnewline text:style-name="obeylines-v">}% + \gdef\ob:ln{\ht:special{t4ht=</text:p>}}% + \else + \SaveEndP \HCode{<text:span\Hnewline + text:style-name="obeylines-h">}% + \gdef\ob:ln{\ht:special{t4ht=</text:span>}\RecallEndP}% + \fi + } + {\EndP\ob:ln\ShowPar} + {\hbox{\HCode{<text:line-break/>}}} +\NewConfigureOO{obeylines} +\ConfigureOO{obeylines}{|<obeylines style|>} +>>> + + + +\<configure ooffice latex\><<< +\ConfigureEnv{verbatim} + {\ifinner\else \vfill\break\fi + \IgnorePar\EndP \HAssign\Verb:N=0 + \HCode{|<input line num|><text:p + text:style-name="Preformatted-Text|<cond rtl class|>">}\EndNoFonts + } + {\NoFonts \EndP \ht:special{t4ht=</text:p>}\ShowPar\par} + {}{} +\Configure{verbatim} + {\HAdvance\Verb:N by 1 \ifnum \Verb:N>1 + \HCode{<text:line-break/>}% + \fi + } + {\HCode{<text:s/>}} +\NewConfigureOO{verbatim} +\ConfigureOO{verbatim}{|<verbatim style|>} +>>> + + + + +\<obeylines style\><<< +<style:style style:name="obeylines-h" style:family="text">\Hnewline + <style:text-properties + fo:wrap-option="no-wrap" + />\Hnewline +</style:style>\Hnewline +<style:style style:name="obeylines-v" style:family="text">\Hnewline + <style:text-properties + fo:wrap-option="no-wrap" + />\Hnewline +</style:style>\Hnewline +>>> + + + +\<verb style\><<< +<style:style style:name="verb" style:family="text">\Hnewline + <style:text-properties + fo:font-family="monospace" + />\Hnewline +</style:style>\Hnewline +>>> + + + +\<verbatim style\><<< +<style:style style:name="Preformatted-Text" + style:family="paragraph" + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties +% fo:font-family="monospace" +% fo:wrap-option="no-wrap" +% style:font-name="Courier" + fo:margin-top="0.2cm" + fo:margin-bottom="0.2cm" + fo:text-indent="0cm" + />\Hnewline + <style:text-properties fo:font-family="monospace"/>\Hnewline +</style:style>\Hnewline +|<Preformatted Text rtl|> % +>>> + + + + + + + +\<W2L verbatim style\><<< +<style:style style:name="Preformatted-Text" + style:family="paragraph" + style:parent-style-name="Standard" + style:class="html"> +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0cm" + style:font-name="Cumberland2" + fo:font-size="12pt" + style:font-name-asian="Cumberland2" + style:font-size-asian="10pt" + style:font-name-complex="Cumberland2" + style:font-size-complex="10pt"/> +</style:style> +>>> + + + + + + + + + + + + + + + + + + +\<oo2 fonts \><<< + <style:font-face + style:font-name="Courier" + svg:font-family="Courier" + style:font-family-generic="modern" + style:font-pitch="fixed"/>\Hnewline +>>> + + + + +% \begin{verbatim} +% fo:wrap-option is not supported by OOo +% +% The option fo:font-family is not used for generic font names in OOo, you +% should use the combination +% fo:font-family="Courier" (or some other suitable font name, not important) +% style:font-family-generic="modern" +% style:font-pitch="fixed" +% +% The `momospace' is recognized, and needed for the spaces. +% Do we need the Courier? +% +% See: +% +% \ begin{verbatim} +% 1234 +% x x +% \ end{verbatim} +% +% +% I would recommend to declare the styles verb and verbatim as follows: +% +% <style:font-decl style:name="Courier" fo:font-family="Courier" +% style:font-family-generic="modern" style:font-pitch="fixed"/> +% +% <style:style style:name="verbatim" style:family="paragraph" +% style:parent-style-name="Standard"> +% <style:paragraph-properties style:font-name="Courier" fo:margin-top="0.2cm" +% fo:margin-bottom="0.2cm" fo:text-indent="0cm" /> +% </style:style> +% +% <style:style style:name="verb" style:family="text"> +% <style:text-properties style:font-name="Courier" /> +% </style:style> +% +% OOo comes with built-in styles for this, which you could choose to use +% instead: +% "Preformatted-Text" and "Teletype" +% \end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Standard Paragraphs} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice tex4ht\><<< +\expandafter\ifx \csname if@rl\endcsname\relax + \expandafter \csname newif\expandafter\endcsname \csname if@rl\endcsname + \@rlfalse +\fi +\HTML:PAR{\ifHCond Like-\fi Text-body|<cond rtl class|>}% + {\ifdim \parindent=\z@ Text-body\else + First-line-indent\fi |<cond rtl class|>} +>>> + + +% \HTML:PAR{p-\ifHCond nopar\else noindent\fi}% +% {p-\ifdim \parindent=\z@ no\fi indent} + + +\<utilities\><<< +\def\HTML:PAR#1#2{% + \Configure{HtmlPar}% + {\EndP\HCode{|<input line num|><text:p text:style-name="#1">}}% + {\EndP\HCode{|<input line num|><text:p text:style-name="#2">}}% + {\HCode{</text:p>\Hnewline}}% + {\HCode{</text:p>\Hnewline}}} +>>> + +\<input line num\><<< +<!--l. \the\inputlineno-->% +>>> + + + + + +It seems that the \verb+auto-text-indent="true"+ setting does not +export to rtf or ms word doc successfully from OOo at present. The +style p-indent thus displays as non-indented when the file is +exported from Ooo. Hence, it is replaced with + +\begin{verbatim} +fo:text-indent="0.4cm" +style:auto-text-indent="false" +\end{verbatim} + + +\<configure ooffice tex4ht\><<< +\NewConfigureOO{p-indent} +\ConfigureOO{p-indent}{% +<style:style style:name="First-line-indent" + style:family="paragraph" + style:parent-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:text-indent="0.499cm" + style:auto-text-indent="false"/> +</style:style>\Hnewline |<First-line-indent rtl|> } +>>> + + + +\<configure ooffice tex4ht\><<< +\NewConfigureOO{p-noindent} +\ConfigureOO{p-noindent}{% +<style:style style:name="Text-body" + style:family="paragraph" + style:parent-style-name="Standard" + style:next-style-name="First-line-indent" + style:class="text" + style:master-page-name="">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:line-height="120\%" + fo:text-align="justify" + style:justify-single-word="false" + fo:hyphenate="true" + fo:hyphenation-remain-char-count="2" + fo:hyphenation-push-char-count="2" + fo:hyphenation-ladder-count="no-limit" + style:page-number="0"/> +</style:style> +\Hnewline +<style:style style:name="Like-Text-body" + style:family="paragraph" + style:parent-style-name="Standard" + style:next-style-name="First-line-indent" + style:class="text" + style:master-page-name="">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:line-height="120\%" + fo:text-align="justify" + style:justify-single-word="false" + fo:hyphenate="true" + fo:hyphenation-remain-char-count="2" + fo:hyphenation-push-char-count="2" + fo:hyphenation-ladder-count="no-limit" + style:page-number="0"/> +</style:style> +\Hnewline |<Text-body rtl|>} +>>> + + + + + + + + +\<configure ooffice tex4ht\><<< +\NewConfigureOO{p-nopar} +\ConfigureOO{p-nopar} + {<style:style style:name="p-nopar" + style:family="paragraph" + style:parent-style-name="Text-body">\Hnewline + <style:paragraph-properties + fo:text-align="justify" + style:auto-text-indent="false" + fo:margin-top="0.3cm" + fo:margin-bottom="0.3cm" + style:justify-single-word="false"/>\Hnewline + </style:style>\Hnewline |<p-nopar rtl|> } +>>> + +%%%%%%%%%%%%% +\subsection{Page Layout} +%%%%%%%%%%%%% + +We need to define the following dimensions for Plain TeX + +\<plain page dimensions\><<< +\newdimen\paperwidth +\newdimen\paperheight +\paperwidth=11truein +\paperheight=8.5truein +>>> + +The following doesn't catch because the style name is not in use. Is +there a way to get styles to be specifies as a default without +referring to names. + +\<oo2 automatic styles\><<< +\Configure{automatic-styles} + {\csname a:page-layout\endcsname} +\NewConfigure{page-layout}{1} +\Configure{page-layout}{% + <style:page-layout style:name="Standard-page-layout">\Hnewline + <style:page-layout-properties + fo:page-width="\the\paperwidth" |%"8.5in"|% + fo:page-height="\the\paperheight" |%"11in"|% + style:num-format="1" + style:print-orientation="portrait" + fo:margin-top="0.7874in" + fo:margin-bottom="0.7874in" + fo:margin-left="0.7874in" + fo:margin-right="0.7874in" + style:writing-mode="lr-tb" + style:footnote-max-height="0in">\Hnewline + <style:footnote-sep + style:width="0.0071in" + style:distance-before-sep="0.0398in" + style:distance-after-sep="0.0398in" + style:adjustment="left" + style:rel-width="25\%" + style:color="\#000000"/>\Hnewline + </style:page-layout-properties>\Hnewline + <style:header-style/> + <style:footer-style/> + </style:page-layout>\Hnewline +} +>>> + +% <style:style style:name="P1" +% style:family="paragraph" +% style:parent-style-name="Text-body"> +% <style:paragraph-properties fo:line-height="0.2201in"/> +% </style:style> + +\<styles.xml: master-styles\><<< +<style:master-page + style:name="Standard" + style:page-layout-name="Standard-page-layout"/>\Hnewline +>>> + +\<styles.xml: automatic-styles\><<< +<style:page-layout style:name="Standard-page-layout"> + <style:page-layout-properties + fo:page-width="\the\paperwidth" |%"8.5in"|% + fo:page-height="\the\paperheight" |%"11in"|% + fo:margin-left="1.0in" + fo:margin-right="1.0in" + style:print-orientation="portrait" + > + </style:page-layout-properties> +</style:page-layout> +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Captions of Figures} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<ooffice captions\><<< +\Configure{caption} + {\ht:everypar{\HtmlPar}% + \ifvmode \EndP \par\ShowPar\else \HCode{<text:line-break/>}\fi + \HCode{\Hnewline <text:span text:style-name="caption" >% + <text:span text:style-name="caption-title" >}} + {: } + {\HCode{</text:span>}} + {\HCode{</text:span>}} +\OOstyles{% + <style:style style:name="caption-title" style:family="text">\Hnewline + <style:text-properties fo:font-style="normal" + fo:font-weight="bold"/>\Hnewline + </style:style>\Hnewline +} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Vertical Spaces} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<big skip\><<< +<text:p text:style-name="bigskip"></text:p>% +>>> + + +\<configure ooffice tex4ht\><<< +\OOstyles{% + <style:style style:name="bigskip" style:family="paragraph" + style:parent-style-name="Text-body"> + <style:paragraph-properties + fo:margin-top="0.2cm" + fo:margin-bottom="0.0cm" + /> + </style:style> +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Page Breaks} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice tex4ht\><<< +\OOstyles{% + <style:style style:name="clearpage" style:family="paragraph" + style:parent-style-name="Text-body"> + <style:paragraph-properties fo:break-before="page" /> + </style:style> +} +\def\Hclearpage{% + \par \ifvmode + \IgnorePar\EndP + \HCode{|<new page|>}% + \ShowPar\par + \fi +} + +>>> + +\<new page\><<< +<text:p text:style-name="clearpage"></text:p>% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice latex\><<< +|<footnote mark|> +|<footnote text|> +|<footnote thank|> +>>> + +\<footnote text\><<< +\Configure{footnotetext} + {\Tag{|<footnote id|>-tx}{}% + |<check duplicate footnote text|>% + \SaveEndP \NoFonts \bgroup\let\@textsuperscript\hbox% + \HCode{<\text:footnote\Hnewline\text:note:class + text:id="}|<footnote id|>% + \HCode{"><\text:footnote-citation>}% + \IgnorePar \special{t4ht@(}% + } + {\egroup\EndNoFonts \RecallEndP + \HCode{</\text:footnote-citation><\text:footnote-body> + <text:p\Hnewline text:style-name="Footnote">}\NoFonts +% |<footnotetext space|>% + \SaveHtmlPar |<footnote pars|>\ShowPar \special{t4ht@)}% + } + {\RecallHtmlPar\EndNoFonts + \HCode{</text:p></\text:footnote-body></\text:footnote>}% + |<notice footnote text|>% + } +>>> + + +\<footnotetext space\><<< +%<text:s/> +>>> + +\<configure ooffice latex\><<< +\NewConfigureOO{Footnote} +\ConfigureOO{Footnote}{ +<style:style + style:name="Footnote" + style:family="paragraph" + style:parent-style-name="Standard" + style:class="extra">\Hnewline + <style:paragraph-properties + fo:margin-left="0.2in" + fo:margin-right="0in" + fo:text-indent="-0.2in" + style:auto-text-indent="false"/> + <style:text-properties fo:font-size="85\%" + style:font-size-asian="85\%" + style:font-size-complex="85\%" /> +</style:style>\Hnewline +<text:notes-configuration text:note-class="footnote" + text:citation-style-name="Footnote_20_Symbol" + text:citation-body-style-name="Footnote_20_anchor" + style:num-format="1" text:start-value="0" + text:footnotes-position="page" + text:start-numbering-at="document" />\Hnewline +<style:style style:name="Footnote_20_Symbol" +style:display-name="Footnote Symbol" style:family="text" >\Hnewline + <style:text-properties style:text-position="super 70\%" />\Hnewline +</style:style> +<style:style style:name="Footnote_20_anchor" +style:display-name="Footnote anchor" style:family="text"> + <style:text-properties style:text-position="super 58\%" />\Hnewline +</style:style>\Hnewline +} +>>> + + + + + + +% \Odef\Link[##1]##2##3{\global\let\cur:EndLink\EndLink +% \gdef\EndLink{\global\let\EndLink=\cur:EndLink}} + + +\<footnote pars\><<< +\Configure{HtmlPar} + {\EndP \HCode{<text:p text:style-name="Footnote">}} + {\EndP \HCode{<text:p text:style-name="Footnote">}} + {\HCode{</text:p>}} + {\HCode{</text:p>}}% +>>> + + + + +\<footnote mark\><<< + \ifx \tmp:bx\:UnDef \csname newbox\endcsname \tmp:bx \fi +\Configure{footnotemark} + {\Tag{|<footnote id|>}{}% + |<footnote mark without text|>}% + {|<end footnote mark without text|>% + } +>>> + +\<check duplicate footnote text\><<< +\ifTag{|<footnote id|>} + {\expandafter\ifx\csname (|<footnote id|>)\endcsname\def + \:warning{Multiple footnote texts for mark \FNnum}% + \fi + } {}% +>>> + + +\<notice footnote text\><<< +\expandafter\global\expandafter + \let\csname (|<footnote id|>)\endcsname\def +>>> + + +\<footnote mark without text\><<< +\ifTag{|<footnote id|>-tx} + {\setbox\tmp:bx=\hbox\bgroup} + {\NoFonts + \HCode{<\text:footnote\Hnewline\text:note:class + text:id="}|<footnote id|>% + \HCode{"><\text:footnote-citation>}% + }% +>>> + +\<end footnote mark without text\><<< +\ifTag{|<footnote id|>-tx} + {\egroup} + {\EndNoFonts \HCode{</\text:footnote-citation><\text:footnote-body> + <text:p\Hnewline text:style-name="Footnote">% + </text:p></\text:footnote-body></\text:footnote>}% + }% +>>> + + +\<footnote id\><<< +fn\FNnum x\minipageNum +>>> + +\<thank id\><<< +fn\the\c@footnote x\minipageNum +>>> + + + +\<configure ooffice footmisc\><<< +\Configure{footnotetext} + {\Tag{|<footnote id|>-tx}{}% + |<check duplicate footnote text|>% + \NoFonts \let\@textsuperscript\hbox + \HCode{<\text:footnote\Hnewline\text:note:class + text:id="}|<footnote id|>% + \HCode{"><\text:footnote-citation>}% + \let\fn:nbsp\:nbsp \let\:nbsp\empty + } + {\EndNoFonts \let\:nbsp\fn:nbsp + \HCode{</\text:footnote-citation><\text:footnote-body>% + <text:p\Hnewline text:style-name="Footnote">|<footnotetext space|>}% + \SaveHtmlPar \Configure{HtmlPar}{}{}{}{}% + } + {\RecallHtmlPar + \HCode{</text:p></\text:footnote-body></\text:footnote>}% + |<notice footnote text|>} +>>> + + + + +\<configure ooffice latex\><<< +\Configure{textsuperscript} + {\HCode{<text:span text:style-name="textsuperscript">}} + {\HCode{</text:span>}} +\OOstyles{% +<style:style style:name="textsuperscript" style:family="text">\Hnewline + <style:text-properties style:text-position="super 58\%"/>\Hnewline +</style:style>\Hnewline +} +\Configure{textsubscript} + {\HCode{<text:span text:style-name="textsubscript">}} + {\HCode{</text:span>}} +\OOstyles{% +<style:style style:name="textsubscript" style:family="text">\Hnewline + <style:text-properties style:text-position="sub 58\%"/>\Hnewline +</style:style>\Hnewline +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Etc} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice latex\><<< +\Configure{centercr} + {\ht:special{t4ht=<text:line-break/>}} + {\ht:everypar{\ht:everypar{\HtmlPar}}} +>>> + + + +\<configure ooffice latex\><<< +\def\:temp{T\HCode{<text:span text:style-name="TEX">}E\HCode{</text:span>}X} +\HLet\TeX\:temp +\OOstyles{\Hnewline + <style:style style:name="TEX" style:family="text"> + <style:text-properties style:text-position="-25 100\%"/> + </style:style> +\Hnewline} +>>> + +\<configure ooffice latex\><<< +\def\:temp{L\HCode{<text:span text:style-name="LATEX">}A\HCode{</text:span>}\TeX} +\HLet\LaTeX\:temp +\OOstyles{\Hnewline + <style:style style:name="LATEX" style:family="text"> + <style:text-properties style:text-position="15 70\%"/> + </style:style> +\Hnewline} +>>> + + +\<configure ooffice-mml latex\><<< +\Configure{newline} + {\ifmtext |<end mtext|>\HCode{</\a:mathml mtext><\a:mathml + mtext class="newline">}% + |<start mtext|>% + \else \HCode{<text:line-break\Hnewline/>}\fi} +>>> + + + + \<start mtext\><<< +\ht:special{t4ht@,&\#x00A0;}% +>>> + +\<end mtext\><<< +\ht:special{t4ht@,}% +>>> + + + + + +\<configure ooffice amsmath\><<< +\def\:temp{{\protect\AmSfont AMS}} +\HLet\AmS\:temp +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Classes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Main Classes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice article\><<< +|<ooffice title page|> +|<content styles|> +|<non chap tocs|> +|<ooffice bib with refname|> +|<ooffice begin-end env|> +|<basic ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<non-chapter index|> +|<config lists of figures and tables|> +|<base font size|> +>>> + +\<configure ooffice report\><<< +|<ooffice title page|> +|<content styles|> +|<chap tocs|> +|<ooffice bib with bibname|> +|<ooffice begin-end env|> +|<ooffice chapters|> +|<report chapters|> +|<basic ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<chapter index|> +|<config lists of figures and tables|> +|<base font size|> +>>> + +\<configure ooffice book\><<< +|<ooffice title page|> +|<content styles|> +|<chap tocs|> +|<ooffice bib with bibname|> +|<ooffice begin-end env|> +|<ooffice chapters|> +|<book chapters|> +|<basic ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<chapter index|> +|<config lists of figures and tables|> +|<base font size|> +>>> + + + +\<base font size\><<< +{\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} +>>> + + +\<configure ooffice scrbook\><<< +|<ooffice title page|> +|<content styles|> +|<chap tocs|> +|<scr chap tocs|> +|<ooffice bib with refname|> +|<ooffice begin-end env|> +|<scr ooffice chapters|> +|<basic scr ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<chapter index|> +|<scrbook end units|> +|<config lists of figures and tables|> +|<base font size|> +>>> + +\<configure ooffice scrreprt\><<< +|<ooffice title page|> +|<content styles|> +|<chap tocs|> +|<scr chap tocs|> +|<ooffice bib with bibname|> +|<ooffice begin-end env|> +|<scr ooffice chapters|> +|<basic scr ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<chapter index|> +|<config lists of figures and tables|> +|<base font size|> +>>> + +\<configure ooffice scrartcl\><<< +|<ooffice title page|> +|<content styles|> +|<ooffice bib with bibname|> +|<ooffice begin-end env|> +|<basic scr ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<base font size|> +>>> + + + +\<configure ooffice amsart\><<< +|<ooffice title page|> +|<content styles|> +|<non chap tocs|> +|<ooffice captions|> +|<basic ams ooffice sections|> +|<basic ooffice section styles|> +|<ooffice bib with bibname|> +|<base font size|> +>>> + + +\<configure ooffice amsproc\><<< +|<base font size|> +>>> + +\<configure ooffice amsbook\><<< +|<base font size|> +>>> + + +\<configure ooffice mwart\><<< +|<ooffice title page|> +|<content styles|> +|<non chap tocs|> +|<ooffice bib with refname|> +|<ooffice begin-end env|> +|<basic ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<non-chapter index|> +|<config lists of figures and tables|> +|<base font size|> +|<mwcls index|> +|<mwcls sections|> +>>> + +\<configure ooffice mwrep\><<< +|<ooffice title page|> +|<content styles|> +|<chap tocs|> +|<ooffice bib with bibname|> +|<ooffice begin-end env|> +|<basic ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<chapter index|> +|<config lists of figures and tables|> +|<base font size|> +|<mwcls index|> +|<mwcls sections|> +>>> + +\<configure ooffice mwbk\><<< +|<ooffice title page|> +|<content styles|> +|<chap tocs|> +|<ooffice bib with bibname|> +|<ooffice begin-end env|> +|<basic ooffice sections|> +|<basic ooffice section styles|> +|<ooffice captions|> +|<ooffice index|> +|<chapter index|> +|<config lists of figures and tables|> +|<base font size|> +|<mwcls index|> +|<mwcls sections|> +>>> + +\<configure ooffice slides\><<< +\Configure{maketitle} + {\HCode{<!--begin maketitle-->}} + {\HCode{<!--end maketitle-->}\par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="Title|<cond rtl class|>" >}} + {\HCode{</text:p>}} +\Configure{author date} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="author|<cond rtl class|>">}} + {\HCode{</text:p>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="date|<cond rtl class|>">}} + {\HCode{</text:p>}} +\NewConfigureOO{title} +\ConfigureOO{title}{% +<style:style style:name="Title" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="author" + style:class="chapter">\Hnewline +<style:paragraph-properties fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:font-size="20pt" + fo:font-weight="normal" + style:font-size-asian="18pt" + style:font-weight-asian="bold" + style:font-size-complex="18pt" + style:font-weight-complex="bold" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style> \Hnewline <style:style style:name="Title-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="author-rtl" + style:class="chapter">\Hnewline +<style:paragraph-properties fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:font-size="20pt" + fo:font-weight="normal" + style:font-size-asian="18pt" + style:font-weight-asian="bold" + style:font-size-complex="18pt" + style:font-weight-complex="bold" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> \Hnewline + } +\NewConfigureOO{author} +\ConfigureOO{author}{% +<style:style style:name="author" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="date">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style>\Hnewline <style:style style:name="author-rtl" + style:family="paragraph" + style:parent-style-name="Text-body-rtl" + style:next-style-name="date-rtl">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style>\Hnewline +} +\NewConfigureOO{date} +\ConfigureOO{date}{% +<style:style style:name="date" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style>\Hnewline <style:style style:name="date-rtl" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style>\Hnewline +} +>>> + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{g-brief} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice g-brief\><<< +\Configure{g-brief} + {\ifvmode \IgnorePar\fi \EndP |<open g-brief|>} + {\ifvmode \IgnorePar\fi \EndP |<end open g-brief|>} + {\ifvmode \IgnorePar\fi \EndP \par} + {\ifvmode \IgnorePar\fi \EndP \par} +>>> + + +\<open g-brief\><<< +\let\sv:br =\\% +\let\sv:@imakebox=\@imakebox +\def\\{\HCode{</table:table-row>\Hnewline<table:table-row>}}% +\let\:clearpage\clearpage +\def\clearpage{\let\clearpage\:clearpage + \ifvmode \IgnorePar\fi \EndP + \HCode{<table:table table:style-name="date"> + <table:table-column/><table:table-column/> + <table:table-column/><table:table-column/> + <table:table-row>\Hnewline}% + \IgnorePar +}% +\def\@imakebox[##1][##2]##3{% + \HCode{<table:table-cell>\Hnewline + <text:p text:style-name="makebox-##2">}% + \bgroup \let\\=\sv:br \let\@imakebox\sv:@imakebox + \let\par\sv:par + ##3% + \egroup + \HCode{</text:p></table:table-cell>}% + \def\par{\let\par\brf:par + \ifvmode \IgnorePar\fi \EndP + \HCode{</table:table-row></table:table>}}% +}% +>>> + + + +\<end open g-brief\><<< +\let\@imakebox\sv:@imakebox +\let\\=\sv:br +>>> + +\<configure ooffice g-brief\><<< +\OOstyles{% +<style:style style:name="makebox-r" \Hnewline + style:family="paragraph" >\Hnewline + <style:paragraph-properties fo:text-align="end" + style:justify-single-word="false" />\Hnewline +</style:style>\Hnewline +} +>>> + + + +\<open g-brief\><<< +\let\brf:par\par +\HTML:PAR{p-g-brief}{p-g-brief}% +>>> + +\<end open g-brief\><<< +\HTML:PAR{p-\ifHCond nopar\else noindent\fi}% + {p-\ifdim \parindent=\z@ no\fi indent}% +>>> + + +\<configure ooffice g-brief\><<< +\OOstyles{% + <style:style style:name="p-g-brief" + style:family="paragraph" + style:parent-style-name="Text-body">\Hnewline + <style:paragraph-properties + fo:text-align="justify" + style:auto-text-indent="false" + style:justify-single-word="false" + fo:margin-top="0.7cm" + fo:margin-bottom="0.7cm" + />\Hnewline + </style:style>\Hnewline +} +>>> + + + +\<configure ooffice g-briefNO\><<< +\Configure{letterfoot} + {\ifvmode \IgnorePar\fi \EndP + \bgroup + \Configure{halignTB<>}{tabular}{\HCode{\Hnewline + table:style-name="letterfoot" + }<>\HAlign}% + \Configure{table-column-style} + {table:style-name="letterfoot\ar:cnt"}% + } + {} + {\egroup} +\OOstyles{% +<style:style style:name="letterfoot" + style:family="table">\Hnewline +<style:text-properties + fo:margin-top="2cm" + table:align="margins"/>\Hnewline +</style:style>\Hnewline +} +\OOstyles{% +<style:style style:name="letterfoot1" + style:family="table-column">\Hnewline +<style:text-properties style:column-width="3cm" +style:rel-column-width="3030*" + />\Hnewline +</style:style>\Hnewline +} +>>> + + +The above styles don't work? + + + + +\<configure ooffice g-brief\><<< +\Configure{letterfoot} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="letterfoot">}% + \bgroup + \Configure{tabular} + {}{} {}{\HCode{<text:line-break/>}} {}{~~}% + } + {} + {\egroup \HCode{</text:p>}} +\OOstyles{% + {<style:style style:name="letterfoot" + style:family="paragraph" + style:parent-style-name="Text-body">\Hnewline + <style:paragraph-properties + fo:text-align="justify" + style:auto-text-indent="false" + fo:margin-top="2cm" + fo:margin-bottom="0cm" + style:justify-single-word="false"/>\Hnewline + </style:style>\Hnewline} +} +>>> + + +The above styles don't work? + + + + + + +\<configure ooffice g-brief\><<< +\Configure{letterhead} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:section + text:style-name="header-style" text:name="header"> + <text:p text:style-name="left-col">}} + {\HCode{</text:p>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</text:section> + <text:p text:style-name="p-retouradresse">}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{</text:p><text:p text:style-name="postage">}} + {\HCode{</text:p>}} +\Configure{retouradresse} + {\HCode{<text:span text:style-name="retouradresse">}} + {\HCode{</text:span>}} +>>> + +\<configure ooffice g-brief\><<< +\NewConfigureOO{g-brief-header} +\ConfigureOO{g-brief-header}{\Hnewline +<style:style style:name="header-style" style:family="section">\Hnewline + <style:text-properties text:dont-balance-text-columns="false" + fo:margin-bottom="2cm">\Hnewline + <style:columns fo:column-count="2" + fo:column-gap="1in">\Hnewline + <style:column fo:margin-left="0in" + fo:margin-right="0in"/>\Hnewline + <style:column fo:margin-left="0in" + fo:margin-right="0in"/>\Hnewline + </style:columns>\Hnewline + </style:text-properties>\Hnewline +</style:style>\Hnewline +} +>>> + +\<configure ooffice g-briefNO\><<< +\OOstyles{% +<style:style style:name="header-style" style:family="section">\Hnewline + <style:text-properties text:dont-balance-text-columns="false" + fo:margin-bottom="2cm">\Hnewline + <style:columns fo:column-count="2" + fo:column-gap="1in">\Hnewline + <style:column fo:margin-left="0in" + fo:margin-right="0in"/>\Hnewline + <style:column fo:margin-left="0in" + fo:margin-right="0in"/>\Hnewline + </style:columns>\Hnewline + </style:text-properties>\Hnewline +</style:style>\Hnewline +} +>>> + +\<configure ooffice g-brief\><<< +\OOstyles{% +<style:style style:name="p-retouradresse" \Hnewline + style:family="paragraph" \Hnewline + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties fo:margin-top="0.7cm" \Hnewline + fo:margin-bottom="0.7cm"/>\Hnewline +</style:style>\Hnewline +} +\OOstyles{% +<style:style style:name="postage" \Hnewline + style:family="paragraph" \Hnewline + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties fo:margin-top="0.5cm" \Hnewline + fo:margin-bottom="0.5cm"/>\Hnewline +</style:style>\Hnewline +} +>>> + +The following configuration does not show. + +\<configure ooffice g-brief\><<< +\OOstyles{% +<style:style style:name="tabular" + style:family="table" + style:parent-style-name="header-style">\Hnewline +<\style:tableproperties style:rel-width="46\%" + fo:margin-left="1cm" + fo:margin-right="0cm" + table:align="margins"/>\Hnewline +</style:style>\Hnewline +} +>>> + + +\<configure ooffice g-brief\><<< +\Configure{betreff} + {\HCode{<text:span text:style-name="betreff">}} + {\HCode{</text:span>}} +\Configure{betrefftext} + {\HCode{<text:span text:style-name="betrefftext">}} + {\HCode{</text:span>}} +\Configure{gruss} + {\HCode{<text:span text:style-name="gruss">}} + {\HCode{</text:span>}} +\Configure{grussskip} + {\HCode{<text:span text:style-name="grussskip">}} + {\HCode{</text:span>}} +\Configure{unterschrift} + {\HCode{<text:span text:style-name="unterschrift">}} + {\HCode{</text:span>}} +\Configure{datumtext} + {\HCode{<text:span text:style-name="datumtext">}} + {\HCode{</text:span>}} +\Configure{datum} + {\HCode{<text:span text:style-name="datum">}} + {\HCode{</text:span>}} +\Configure{anlagen} + {\HCode{<text:span text:style-name="anlagen">}} + {\HCode{</text:span>}} +\Configure{verteiler} + {\HCode{<text:span text:style-name="verteiler">}} + {\HCode{</text:span>}} +\Configure{sprache} + {\HCode{<text:span text:style-name="sprache">}} + {\HCode{</text:span>}} +>>> + +\<configure ooffice g-brief\><<< +\Configure{telefontex} + {\HCode{<text:span text:style-name="telefontex">}} + {\HCode{</text:span>}} +\Configure{telefaxtext} + {\HCode{<text:span text:style-name="telefaxtext">}} + {\HCode{</text:span>}} +\Configure{telextext} + {\HCode{<text:span text:style-name="telextext">}} + {\HCode{</text:span>}} +\Configure{telefax} + {\HCode{<text:span text:style-name="telefax">}} + {\HCode{</text:span>}} +\Configure{telefon} + {\HCode{<text:span text:style-name="telefon">}} + {\HCode{</text:span>}} +\Configure{telex} + {\HCode{<text:span text:style-name="telex">}} + {\HCode{</text:span>}} +>>> + +\<configure ooffice g-brief\><<< +\Configure{emailtext} + {\HCode{<text:span text:style-name="emailtext">}} + {\HCode{</text:span>}} +\Configure{email} + {\HCode{<text:span text:style-name="email">}} + {\HCode{</text:span>}} +\Configure{httptext} + {\HCode{<text:span text:style-name="httptext">}} + {\HCode{</text:span>}} +\Configure{http} + {\HCode{<text:span text:style-name="http">}} + {\HCode{</text:span>}} +\Configure{banktext} + {\HCode{<text:span text:style-name="banktext">}} + {\HCode{</text:span>}} +\Configure{bank} + {\HCode{<text:span text:style-name="bank">}} + {\HCode{</text:span>}} +\Configure{konto} + {\HCode{<text:span text:style-name="konto">}} + {\HCode{</text:span>}} +\Configure{blztext} + {\HCode{<text:span text:style-name="blztext">}} + {\HCode{</text:span>}} +\Configure{blz} + {\HCode{<text:span text:style-name="blz">}} + {\HCode{</text:span>}} +>>> + +\<configure ooffice g-brief\><<< +\Configure{ihrzeichentext} + {\HCode{<text:span text:style-name="ihrzeichentext">}} + {\HCode{</text:span>}} +\Configure{ihrzeichen} + {\HCode{<text:span text:style-name="ihrzeichen">}} + {\HCode{</text:span>}} +\Configure{ihrschreibentext} + {\HCode{<text:span text:style-name="ihrschreibentext">}} + {\HCode{</text:span>}} +\Configure{ihrschreiben} + {\HCode{<text:span text:style-name="ihrschreiben">}} + {\HCode{</text:span>}} +\Configure{meinzeichentext} + {\HCode{<text:span text:style-name="meinzeichentext">}} + {\HCode{</text:span>}} +\Configure{meinzeichen} + {\HCode{<text:span text:style-name="meinzeichen">}} + {\HCode{</text:span>}} +\Configure{unserzeichentext} + {\HCode{<text:span text:style-name="unserzeichentext">}} + {\HCode{</text:span>}} +>>> + +\<configure ooffice g-brief\><<< +\Configure{adresse} + {\HCode{<text:span text:style-name="adresse">}} + {\HCode{</text:span>}} +\Configure{land} + {\HCode{<text:span text:style-name="land">}} + {\HCode{</text:span>}} +\Configure{name} + {\HCode{<text:span text:style-name="name">}} + {\HCode{</text:span>}} +\Configure{ort} + {\HCode{<text:span text:style-name="ort">}} + {\HCode{</text:span>}} +\Configure{postvermerk} + {\HCode{<text:span text:style-name="postvermerk">}} + {\HCode{</text:span>}} +\Configure{strasse} + {\HCode{<text:span text:style-name="strasse">}} + {\HCode{</text:span>}} +\Configure{zusatz} + {\HCode{<text:span text:style-name="zusatz">}} + {\HCode{</text:span>}} +>>> + + +\<configure oolatex g-briefNO\><<< +\Configure{anrede} + {\ifvmode \IgnorePar\fi \EndP \HCode{<text:p text:style-name="anrede">}} + {\HCode{</text:p>}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Polyglossia} +%%%%%%%%%%%%%%%%%% +\<configure polyglossia polyglossia\><<< +\Configure{PolyglossiaRtl}{\@rltrue}{\@rlfalse} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Babel} +%%%%%%%%%%%%%%%%%% + + +\<configure ooffice babel\><<< +|<quotedblbase|> +\Configure{accent}\lower@umlaut\lower@umlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + +% \Configure{accent}\lower@umlaut\lower@umlaut{A{A}E{E}I{I}O{O}U{U}Y% +% {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}{}{34}} +% {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} + + +\<configure ooffice babelNO\><<< +|<T1 old iso-8859-2 accents|> +|<old iso-8859-2 accents|> +>>> + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname + \csname T1\string\`\endcsname{|<grave iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname{|<acute iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname + \csname T1\string\^\endcsname{|<circumflex iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{circ}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname + \csname T1\string\~\endcsname{|<tilde iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{tilde}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\"\expandafter\endcsname + \csname T1\string\"\endcsname{|<diaeresis iso-8859-2|>{}{34}} + {\HChar{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\r\endcsname}% + \csname T1\string\r\endcsname{|<ring iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{ring}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\c\endcsname}% + \csname T1\string\c\endcsname{|<cedilla iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\t\endcsname}% + \csname T1\string\t\endcsname{{}{}} + {\HChar{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\H\endcsname}% + \csname T1\string\H\endcsname{|<double acute iso-8859-2|>{}{}} + {\HChar{#1}}{\b:accents{Huml}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\b\endcsname}% + \csname T1\string\b\endcsname{{}{}} + {\HChar{#1}} {\b:accents{b}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\d\endcsname}% + \csname T1\string\d\endcsname{{}{}} + {\HChar{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + +\<T1 old iso-8859-2 accents\><<< +\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname + \csname T1\string\.\endcsname + {|<dot iso-8859-2|>{}{}} + {\HChar{#1}}{\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname + \csname T1\string\u\endcsname + {|<breve iso-8859-2|>{}{}} + {\HChar{#1}}{\b:accents{breve}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\vec\expandafter\endcsname + \csname T1\string\vec\endcsname + {|<vec iso-8859-2|>{}{}} + {\HChar{#1}}{\b:accents{vec}{#1}{#2}} +\expandafter\let\csname T1\string\v\endcsname\:UnDef +\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname + \csname T1\string\v\endcsname + {|<caron iso-8859-2|>{}{}} + {\HChar{#1}}{\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname + \csname T1\string\=\endcsname + {|<bar iso-8859-2|>{}{}} + {\HChar{#1}}{\b:accents{bar}{#1}{#2}} +>>> + + + +\<old iso-8859-2 accents\><<< +\Configure{accent}\`\grave{|<grave iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{|<acute iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{|<circumflex iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{|<tilde iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{|<diaeresis iso-8859-2|>{}{34}} + {\HChar{#1}} {\b:accents{uml}{#1}{#2}} +>>> + +\<old iso-8859-2 accents\><<< +\Configure{accent}\c\c{|<cedilla iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\HChar{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{|<double acute iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{Huml}{#1}{#2}} +\Configure{accent}\b\b{{}{}} + {\HChar{#1}} {\b:accents{b}{#1}{#2}} +\Configure{accent}\d\d{{}{}} + {\HChar{#1}} {\b:accents{d}{#1}{#2}} +>>> + + +\<old iso-8859-2 accents\><<< +\Configure{accent}\.\.{|<dot above iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\dot\dot{|<dot above iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{|<breve iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}} + {\HChar{#1}} {\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\v{|<caron iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{check}{#1}{#2}} +\Configure{accent}\check\check{|<caron iso-8859-2|>{}{}} + {\HChar{#1}} {\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} + {\HChar{#1}} {\b:accents{bar}{#1}{#2}} +>>> + +Accents for Plain TeX + +\<plain accents\><<< +\Configure{accent}\`\grave{A{00C0}E{00C8}I{00CC}N{01F8}O{00D2}U{00D9}W{1E80}% +Y{1EF2}a{00E0}e{00E8}i{00EC}n{01F9}o{00F2}u{00F9}% +w{1E81}y{1EF3}\i{00EC}% +{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{A{00C1}C{0106}D{010E}E{00C9}G{01F4}I{00CD}L{0139}N{0143}% +O{00D3}R{0154}S{015A}U{00DA}Y{00DD}Z{0179}a{00E1}c{0107}% +d{010F}e{00E9}g{01F5}i{00ED}l{013A}n{0144}o{00F3}r{0155}% +s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}% +{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{A{00C2}E{00CA}I{00CE}O{00D4}U{00DB}a{00E2}e{00EA}% +i{00EE}o{00F4}u{00FB}C{0108}c{0109}G{011C}g{011D}% +H{0124}h{0125}J{0134}j{0135}S{015C}s{015D}W{0174}% +w{0175}Y{0176}y{0177}Z{1E90}z{1E91}\i{00EE}\j{0135}% +{}{}} + {\a:accents{circ}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{A{00C3}N{00D1}O{00D5}a{00E3}n{00F1}o{00F5}I{0128}% +i{0129}U{0168}u{0169}V{1E7C}v{1E7D}E{1EBC}e{1EBD}% +Y{1EF8}y{1EF9}\i{0129}% +{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}% +t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}% +a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}% +Y{0178}\i{00EF}% +{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +\Configure{accent}\c\c{C{C}c{c}{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{O{0150}o{0151}U{0170}u{0171}Y{04F2}y{04F3}{}{}} + {\a:accents{Huml}{#1}} {\b:accents{Huml}{#1}{#2}} +\Configure{accent}\b\b{{}{}} + {\a:accents{b}{#1}} {\b:accents{b}{#1}{#2}} +\Configure{accent}\d\d{{}{}} + {\a:accents{d}{#1}} {\b:accents{d}{#1}{#2}} +\Configure{accent}\.\.{{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\dot\dot{{}{}} + {\a:accents{dot}{#1}} {\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{{}{}}{\a:accents{breve}{#1}} + {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}}{\a:accents{vec}{#1}} + {\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\v{{}{}}{\a:accents{check}{#1}} + {\b:accents{check}{#1}{#2}} +\Configure{accent}\check\check{{}{}}{\a:accents{check}{#1}} + {\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} + {\a:accents{bar}{#1}} {\b:accents{bar}{#1}{#2}} +\Configure{accent}\widetilde\widetilde{{}{}} + {\a:accents{widetilde}{#1}} {\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {\a:accents{widehat}{#1}} {\b:accents{widehat}{#1}{#2}} + + \Configure{accents} + {\ht:special{t4ht@+\string&{35}x#2{59}}x} + {\Picture+{ \:Picture:{#1}}#2{#3}\EndPicture} + +>>> + +\<configure ooffice frenchb\><<< +\Configure{frenchb-thinspace}{\HCode{\string&\:sharp x202F;}\setbox\tmp:bx=\hbox\bgroup}{\egroup} +\Configure{frenchb-nbsp}{\:nbsp\setbox\tmp:bx=\hbox\bgroup}{\egroup} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{ElsArt} +%%%%%%%%%%%%%%%%%% + +\<configure ooffice elsart\><<< +\ConfigureEnv{frontmatter} + {\IgnorePar + \HCode{<!--begin frontmatter-->% + <text:section text:name="frontmatter">}\ShowPar} + {\ifvmode\IgnorePar\fi \EndP \IgnorePar + \HCode{</text:section><!--end frontmatter-->}\ShowPar} + {}{} +>>> + +\<configure ooffice elsart\><<< +\Configure{thanks author date and} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="Text-body|<cond rtl class|>">}} + {\HCode{</text:p>}\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="author|<cond rtl class|>">}\IgnorePar} + {\HCode{</text:p>}\IgnorePar} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="date|<cond rtl class|>">}} + {\HCode{</text:p>}\IgnorePar} + {} + {}% {\HCode{<text:line-break/>}} +>>> + +\<configure ooffice elsart\><<< +\Configure{address} + {\IgnorePar \EndP + \HCode{<text:p\Hnewline text:style-name="address">}\IgnorePar} + {\IgnorePar\EndP \HCode{</text:p>}\IgnorePar} +\NewConfigureOO{address} +\ConfigureOO{address}{% +<style:style style:name="address" + style:family="paragraph" + style:parent-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="12pt" + fo:font-style="italic" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style>\Hnewline |<author rtl|>} +>>> + +\<configure ooffice elsart\><<< +\Configure{abstract} +{\HCode{<text:p\Hnewline + text:style-name="abstract-title">}\par\IgnorePar} + { \HCode{</text:p>}} + {\IgnorePar\EndP} +\ConfigureOO{abstract-title}{\Hnewline +<style:style style:name="abstract-title" + style:family="paragraph" + style:parent-style-name="abstract" + style:next-style-name="abstract">\Hnewline +<style:paragraph-properties fo:margin-top="0.499cm" + fo:margin-bottom="0cm" + fo:font-weight="bold" + fo:font-size="10pt" + fo:text-align="left" + fo:border-top="0.01cm solid \#000000" + style:justify-single-word="false"/>\Hnewline +</style:style>\Hnewline +} +\ConfigureOO{abstract}{\Hnewline +<style:style style:name="abstract" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="10pt" + fo:text-indent="0cm" + fo:text-align="left" + style:auto-text-indent="false"/>\Hnewline +</style:style>\Hnewline |<abstract rtl|> } +>>> + + +\<configure ooffice elsart\><<< +\Configure{keyword} + {\IgnorePar\EndP + \HCode{<text:p\Hnewline text:style-name="keyword">}\IgnorePar} + {\IgnorePar\EndP \HCode{</text:p>}\IgnorePar} +\NewConfigureOO{keyword} +\ConfigureOO{keyword}{\Hnewline +<style:style style:name="keyword" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="10pt" + fo:font-style="italic" + fo:text-indent="0cm" + fo:text-align="left" + fo:border-bottom="0.01cm solid \#000000" + style:auto-text-indent="false"/>\Hnewline +</style:style>\Hnewline > } +>>> + +\<configure ooffice elsart\><<< + +>>> + +\<configure ooffice elsart\><<< + +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Foils} +%%%%%%%%%%%%%%%%%% + + +\<configure ooffice foils\><<< +\Configure{foilhead} + {\IgnorePar\EndP \HCode{<!--start of foilhead-->}} + {\IgnorePar\EndP \HCode{<!--end of foilhead-->}} + {\HCode{<text:h text:style-name="foilhead|<cond rtl class|>" + \text:outlinelevel="3" >}% + \IgnoreIndent} + {\HCode{</text:h>\Hnewline}\par\ShowPar} +>>> + +\<configure ooffice foils\><<< +\NewConfigureOO{foilhead} +\ConfigureOO{foilhead}{\Hnewline +<style:style style:name="foilhead" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="12pt" + fo:font-weight="bold" + style:font-size-asian="14pt" + style:font-weight-asian="bold" + style:font-size-complex="14pt" + style:font-weight-complex="bold" + fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:text-align="center" + style:justify-single-word="false" +/> +</style:style> +} +>>> + + + + + + + + + + +\<configure ooffice foils\><<< +\Configure{thank} + {\setbox\tmp:bx=\hbox\bgroup} + {\egroup} + {\NoFonts \leavevmode \bgroup \protect\Configure{$}{}{}{}% + \hbox{\HCode{<text:note\Hnewline text:note-class="footnote" + text:id="}|<thank id|>% + \HCode{"><text:note-citation>}}% + } + {\egroup \EndNoFonts + \HCode{</text:note-citation><text:note-body> + <text:p\Hnewline text:style-name="Footnote" ><text:s/>}} + {\HCode{</text:p></text:note-body></text:note>}} +>>> + + + +\<configure ooffice foils\><<< +\def\:temp#1{{\stepcounter{footnote}% + \a:thank\@fnsymbol\c@footnote\b:thank + \a:thanks + \c:thank \@fnsymbol\c@footnote\d:thank #1\e:thank + \b:thanks +}} +\HLet\thanks\:temp +>>> + + + + +\<configure ooffice foils\><<< +\Configure{maketitle} + {\bgroup + \Configure{newpage}{}% + \HCode{<!--begin maketitle-->} + \Configure{tabular}{}{}{}{}{\ifnum \HRow>1 + \HCode{<text:line-break\Hnewline/>}\fi}{}% + \ConfigureEnv{tabular}{}{}{}{}% + } + {\HCode{<!--end maketitle-->}\egroup \par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="Title|<cond rtl class|>" >}} + {\HCode{</text:p>}} +\OOstyles{% + <style:style style:name="maketitle-tabular" + style:family="table">\Hnewline + <\style:tableproperties + fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:font-size="20pt" + fo:font-weight="normal" + fo:text-align="center" + style:justify-single-word="false" + table:align="margins"/>\Hnewline + </style:style>\Hnewline +} +\NewConfigureOO{title} +\ConfigureOO{title}{% +<style:style style:name="Title" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="author" + style:class="chapter">\Hnewline +<style:paragraph-properties fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:font-size="20pt" + fo:font-weight="normal" + style:font-size-asian="18pt" + style:font-weight-asian="bold" + style:font-size-complex="18pt" + style:font-weight-complex="bold" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style> \Hnewline <style:style style:name="Title-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="author-rtl" + style:class="chapter">\Hnewline +<style:paragraph-properties fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:font-size="20pt" + fo:font-weight="normal" + style:font-size-asian="18pt" + style:font-weight-asian="bold" + style:font-size-complex="18pt" + style:font-weight-complex="bold" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> \Hnewline + } +>>> + + + +\<configure ooffice foils\><<< +\Configure{author date} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="author|<cond rtl class|>">}} + {\HCode{</text:p>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="date|<cond rtl class|>">}} + {\HCode{</text:p>}} +\NewConfigureOO{author} +\ConfigureOO{author}{% +<style:style style:name="author" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="date">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.2cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style>\Hnewline <style:style style:name="author-rtl" + style:family="paragraph" + style:parent-style-name="Text-body-rtl" + style:next-style-name="date-rtl">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.2cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style>\Hnewline +} +\NewConfigureOO{date} +\ConfigureOO{date}{% +<style:style style:name="date" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-top="0.6cm" + fo:margin-bottom="0.2cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style>\Hnewline <style:style style:name="date-rtl" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style>\Hnewline +} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Packages} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%% +\section{Pstricks} +%%%%%%%%%%%%%%%%%% + + +\<configure ooffice pst-all\><<< +\ConfigureEnv{psmatrix} + {\Picture*{}} + {\EndPicture} + {}{} +>>> + +\<configure ooffice pstricks\><<< +\Configure{pspicture} + {\ifvmode \ifinner\else \vfill\break\fi + \leavevmode\fi + \bgroup + \ifdim \pst@dimh<\z@ \pst@dimh=-\pst@dimh \fi + \HCode{<!--width="\ifdim \wd\pst@hbox=\z@ \the\pst@dimg + \else\the\wd\pst@hbox\fi" + height="\ifdim \ht\pst@hbox=\z@ \the\pst@dimh + \else \the\ht\pst@hbox\fi"-->}% + \egroup + \Picture+[\a:pspictureAlt]{ class="pspicture"}} + {\EndPicture} +\NewConfigure{pspictureAlt}{1} +\Configure{pspictureAlt}{PIC} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Fancyvrb} +%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice fancyvrb\><<< +\HAssign\fancyvrbNo=0 +\Configure{fancyvrb} + {\IgnorePar \EndP \gHAdvance\fancyvrbNo by 1 + \gHAssign\fancyvrb:cnt0 + \HCode{<text:p text:style-name="fancyvrb\fancyvrbNo">}} + {\EndP\HCode{</text:p>}} + {\gHAdvance\fancyvrb:cnt by 1 + \ifnum \fancyvrb:cnt>1 + \HCode{<text:line-break />}\fi} {} + {}{} +>>> + + +\<configure ooffice fancyvrb\><<< +\Configure{BVerbatimInput} + {\ifvmode \IgnorePar \fi \EndP + \gHAssign\HRow=0 + \HCode{<text:p text:style-name="BVerbatimInput">}} + {\ifvmode \IgnorePar \fi \EndP \HCode{</text:p>}} + {\gHAdvance\HRow by 1 \ifnum \HRow>1 \HCode{<text:line-break />}\fi}{} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Ulem} +%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice ulem\><<< +\Configure{uline} + {\ifmmode \HCode{<\a:mathml mrow class="uline">}% + \else \HCode{<text:span text:style-name="uline">}\fi} + {\ifmmode \HCode{</\a:mathml mrow>}\else \HCode{</text:span>}\fi} +\NewConfigureOO{uline} +\ConfigureOO{uline}{|<oo uline style|>} +>>> + +\<oo uline style\><<< +<style:style style:name="uline" style:family="text"> + <style:text-properties style:text-underline-style="solid" + style:text-underline-width="auto" + style:text-underline-color="font-color" + /> +</style:style> +>>> + + + +\<configure ooffice ulem\><<< +\Configure{uuline} + {\ifmmode \HCode{<\a:mathml mrow class="uuline">}% + \else \HCode{<text:span text:style-name="uuline">}\fi} + {\ifmmode \HCode{</\a:mathml mrow>}\else \HCode{</text:span>}\fi} +\NewConfigureOO{uuline} +\ConfigureOO{uuline}{|<oo uuline style|>} +>>> + +\<oo uuline style\><<< +<style:style style:name="uuline" style:family="text"> + <style:text-properties style:text-underline-style="solid" + style:text-underline-width="auto" + style:text-underline-color="font-color" + /> +</style:style> +>>> + + +\<configure ooffice ulem\><<< +\Configure{uwave} + {\ifmmode \HCode{<\a:mathml mrow class="uwave">}% + \else \HCode{<text:span text:style-name="uwave">}\fi} + {\ifmmode \HCode{</\a:mathml mrow>}\else \HCode{</text:span>}\fi} +\NewConfigureOO{uwave} +\ConfigureOO{uwave}{|<oo uwave style|>} +>>> + +\<oo uwave style\><<< +<style:style style:name="uwave" style:family="text"> + <style:text-properties style:text-underline-style="wave" + style:text-underline-width="auto" + style:text-underline-color="font-color" + /> +</style:style> +>>> + +% <style:text-properties style:text-underline="single" /> + + + +\<configure ooffice ulem\><<< +\Configure{sout} + {\ifmmode \HCode{<\a:mathml mrow class="sout">}% + \else \HCode{<text:span text:style-name="sout">}\fi} + {\ifmmode \HCode{</\a:mathml mrow>}\else \HCode{</text:span>}\fi} +\NewConfigureOO{sout} +\ConfigureOO{sout}{|<oo sout style|>} +>>> + +\<oo sout style\><<< +<style:style style:name="sout" style:family="text"> + <style:text-properties style:text-line-through-style="solid" + style:text-underline-style="none" /> +</style:style> +>>> + + + + +\<configure ooffice ulem\><<< +\Configure{xout} + {\ifmmode \HCode{<\a:mathml mrow class="xout">}% + \else \HCode{<text:span text:style-name="xout">}\fi} + {\ifmmode \HCode{</\a:mathml mrow>}\else \HCode{</text:span>}\fi} +\NewConfigureOO{xout} +\ConfigureOO{xout}{|<oo xout style|>} +>>> + +\<oo xout style\><<< +<style:style style:name="xout" style:family="text"> + <style:text-properties style:text-line-through-style="solid" + style:text-underline-style="none" /> +</style:style> +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{German} +%%%%%%%%%%%%%%%%%% + + + +\<configure ooffice german\><<< +|<quotedblbase|> +>>> + +\<configure ooffice ngerman\><<< +|<quotedblbase|> +>>> + + + + + +\<quotedblbase\><<< +\Configure{quotedblbase}{\leavevmode\ht:special{t4ht@+&{35}x201E;}x} +\Configure{quotesinglbase}{\leavevmode\ht:special{t4ht@+&{35}x201A;}x} +>>> + + +\<configure ooffice german\><<< +\Configure{accent}\grmn@OTumlaut + \grmn@OTumlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + +\<configure ooffice ngerman\><<< +\Configure{accent}\grmn@OTumlaut + \grmn@OTumlaut{|<diaeresis codes|>{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + +\<diaeresis codes\><<< +H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}% +t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}% +a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}% +Y{0178}\i{00EF}% +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Hyperref} +%%%%%%%%%%%%%%%%%% + + + + +\<configure ooffice hyperref\><<< +\ifx \@baseurl\@empty \else + \Configure{@HEAD} + {\HCode{<!--base href="\:baseurl" /-->}} + \let\:baseurl\@baseurl + \let\@baseurl=\@empty +\fi +>>> + + + + +%%%%%%%%%%%%%%%%%%%%% +\section{Listings} +%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice listings\><<< +\Log:Note{to ensure proper alignments use + fixed size fonts (see listings.dtx)} +\Configure{listings} + {\ifvmode \IgnorePar\fi \EndP + {\everypar{}\leavevmode}\HCode{<!--l. \the\inputlineno-->}% + \HCode{<text:p text:style-name="Preformatted-Text">}% + } + {{\everypar{}\leavevmode}\HCode{</text:p>}\par} + {}{} +>>> + +\<configure ooffice listings\><<< +\ConfigureEnv{lstlisting} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno lstlisting-->}% + \HCode{<text:p\Hnewline text:style-name="Preformatted-Text">}% + \bgroup \special{t4ht@(}% + \Configure{listings} + {{\everypar{}\leavevmode}} + {{\everypar{}\leavevmode}} + {\HCode{<text:s/><text:line-break/>}}{}% + } + {\special{t4ht@)}\egroup + \ifvmode \IgnorePar\fi \EndP \HCode{</text:p>}\par} + {} {} +>>> + +\<configure ooffice listings\><<< +\Configure{lstinputlisting} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<!--l. \the\inputlineno lstinputlisting-->}% + \HCode{<text:p\Hnewline text:style-name="Preformatted-Text">}% + \bgroup \tt \special{t4ht@(}% + \Configure{listings} + {{\everypar{}\leavevmode}} + {{\everypar{}\leavevmode}} + {\HCode{<text:s/><text:line-break/>}} + {\HCode{<text:line-break/>}}% + } + {\special{t4ht@)}\egroup + \ifvmode \IgnorePar\fi \EndP \HCode{</text:p>}\par} +>>> + + + +\<configure ooffice-mml latex\><<< +\def\:nbsp{\ifmtext |<unicode space|>\else\ifmathml + \Tg<\a:mathml mspace />\else |<oo space|>\fi\fi} +>>> + +\<unicode space\><<< +\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x% +>>> + +\<oo space\><<< +\ht:special{t4ht@+\string&{35}x00A0{59}}x% +>>> + +Nonbraking spaces may go to aux files and need protect the colon and +semicolons from catcode changes when loaded, e.g., in french. + + + + + + +%%%%%%%%%%%%% +\section{Linguistics} +%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{linguex} +%%%%%%%%%%%%% + + + +\<configure ooffice linguex\><<< +\Configure{a.list} + {\ConfigureList{list}% + {\EndP\HCode{<text:list + text:style-name="list|<cond rtl class|>" + text:name="list"\Hnewline>}% + \PushMacro\end:itm + \global\let\end:itm=\empty + \SaveHtmlPar \HTML:PAR{dd}{dd}% + } + {\PopMacro\end:itm \global\let\end:itm \end:itm + \EndP + \RecallHtmlPar + \HCode{</text:list-item></text:list>}\ShowPar} + {\end:itm \global\def\end:itm{\EndP\HCode{</text:list-item>}}% + \HCode{<text:list-item><text:h + text:style-name="dt|<cond rtl class|>"\Hnewline >}\bgroup \bf} + {\egroup\HCode{</text:h>}\par\ShowPar}% + } +>>> + +%%%%%%%%%%%%% +\subsection{cgloss4e} +%%%%%%%%%%%%% + + + +\<configure ooffice cgloss4e\><<< +\Configure{tsent} + {\HCode{<table:table-cell table:style-name="tsent-td">% + <text:p text:style-name="tsent-p">}% + \gHAdvance\tsent:cnt by 1 + } + {\HCode{</text:p></table:table-cell>}} + {\HCode{<text:line-break />}} +>>> + +\<configure ooffice cgloss4e\><<< +\Configure{gll} + {\ifvmode \IgnorePar\fi \EndP + \bgroup + \ConfigureEnv{flushleft} + {\ifvmode \IgnorePar\fi \EndP} + {\ShowPar} + {\EndP\IgnorePar + |<boxed env|>% + \HCode{<table:table table:style-name="gll-table"\Hnewline>% + }\IgnorePar} + {\IgnorePar\EndP\HCode{</table:table-row></table:table>}% + |<end boxed env|>}% + \Configure{HtmlPar}{}{}{}{}% + \gHAssign\tsent:cnt=0 + } + {\tmp:cnt=0 + \loop + \advance\tmp:cnt by 1 + \HCode{<table:table-column table:style-name="gll-col"/>}% + \ifnum \tsent:cnt>\tmp:cnt + \repeat + \HCode{<table:table-row table:style-name="gll-tr">}% + } + {\egroup} +>>> + +%%%%%%%%%%%%% +\subsection{covington} +%%%%%%%%%%%%% + + + +\<configure ooffice covington\><<< +\Configure{tsent} + {\HCode{<table:table-cell table:style-name="tsent-td">% + <text:p text:style-name="tsent-p">}% + \gHAdvance\tsent:cnt by 1 + } + {\HCode{</text:p></table:table-cell>}} + {\HCode{<text:line-break />}} +>>> + + +\<configure ooffice covington\><<< +\HAssign\gll:Cnt = 0 +\Configure{gll} + {\ifvmode \IgnorePar\fi \EndP + \gHAdvance\gll:Cnt by 1 + \bgroup + \ConfigureEnv{flushleft} + {\ifvmode \IgnorePar\fi \EndP} + {\ShowPar} + {\EndP\IgnorePar + |<boxed env|>% + \HCode{<table:table table:name="gll-\gll:Cnt" + table:style-name="gll-table"\Hnewline>}% + \ifnum 0<0\LikeRef{gll-\gll:Cnt} + |<set gll's table-column|>% + \fi + \HCode{<table:table-row table:style-name="gll-tr">}% + \IgnorePar + } + {\IgnorePar\EndP + \csname :glend\endcsname + \HCode{</table:table-row></table:table>}% + |<end boxed env|>}% + \Configure{HtmlPar}{}{}{}{}% + \gHAssign\tsent:cnt=0 + } + {} + {\Tag{gll-\gll:Cnt}{\tsent:cnt}\egroup} +>>> + + + +\<set gll's table-column\><<< +\tmp:cnt=0 +\loop + \advance\tmp:cnt by 1 + \HCode{<table:table-column table:style-name="gll-col"/>}% + \ifnum \LikeRef{gll-\gll:Cnt}>\tmp:cnt +\repeat +>>> + +\<configure ooffice covington\><<< +\Configure{glt} + {\expandafter\ifx\csname :glend\endcsname\relax\else + \HCode{</text:p></table:table-cell>}% + \fi + \HCode{</table:table-row><table:table-row + table:style-name="glt"><table:table-cell + table:number-columns-spanned="\tsent:cnt"><text:p + text:style-name="p-glt">}% + \gdef\:glend{\global\let\:glend\relax + \HCode{</text:p></table:table-cell>}}% + } +\NewConfigureOO{p-glt} +\ConfigureOO{p-glt}{\Hnewline +<style:style style:name="p-glt" + style:family="paragraph" + style:parent-style-name="Standard" > + <style:paragraph-properties fo:margin-top="0.2cm"/> +</style:style> +} +>>> + +\<configure ooffice covington\><<< +\Configure{gln} + {\expandafter\ifx\csname :glend\endcsname\relax\else + \HCode{</text:p></table:table-cell>}% + \fi + \gHAdvance\tsent:cnt by 1 + \HCode{<table:table-cell><text:p + text:style-name="p-gln">}% + \gdef\:glend{\global\let\:glend\relax + \HCode{</text:p></table:table-cell>}}% + } +\NewConfigureOO{p-gln} +\ConfigureOO{p-gln}{\Hnewline +<style:style style:name="p-gln" + style:family="paragraph" + style:parent-style-name="Standard" > + <style:paragraph-properties fo:text-align="end"/> +</style:style> +} +>>> + +\<configure ooffice covington\><<< +\NewConfigureOO{gll-table} +\ConfigureOO{gll-table}{\Hnewline +<style:style style:name="gll-table" style:family="table"> + <style:table-properties + fo:margin-top="0.3cm" + fo:margin-bottom="0.3cm" + /> +</style:style> +} +>>> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Right to Left} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<cond rtl class\><<< +\if@rl-rtl\fi +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Title Page} +%%%%%%%%%%%%%%%%%% + + + + + +\<Title rtl\><<< +<style:style style:name="Title-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="author-rtl" + style:class="chapter">\Hnewline +<style:paragraph-properties fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:font-size="20pt" + fo:font-weight="normal" + style:font-size-asian="18pt" + style:font-weight-asian="bold" + style:font-size-complex="18pt" + style:font-weight-complex="bold" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> \Hnewline +>>> + +\<author rtl\><<< +<style:style style:name="author-rtl" + style:family="paragraph" + style:parent-style-name="Text-body-rtl" + style:next-style-name="date-rtl">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style>\Hnewline +>>> + + + +\<date rtl\><<< +<style:style style:name="date-rtl" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style>\Hnewline +>>> + + + + +\<abstract rtl\><<< +<style:style style:name="abstract-rtl" + style:family="paragraph" + style:parent-style-name="Text-body-rtl" + style:next-style-name="Text-body-rtl">\Hnewline +<style:paragraph-properties fo:margin-left="3cm" + fo:margin-right="3cm" + fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="10pt" + fo:text-indent="0cm" + style:auto-text-indent="false" + style:writing-mode="rl-tb" />\Hnewline +</style:style>\Hnewline +>>> + + +\<configure ooffice amsart\><<< +\Configure{keywords} + {\par\IgnorePar\EndP + \HCode{<text:p\Hnewline text:style-name="keywords">}\ShowPar} + {\ifvmode \IgnorePar\fi \EndP \HCode{</text:p>}} +\Configure{subjclass} + {\par\IgnorePar + \HCode{<text:p\Hnewline text:style-name="subjclass">}\par\ShowPar} + {\ifvmode \IgnorePar \fi\EndP \HCode{</text:p>}} +\Configure{@maketitle} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p\Hnewline text:style-name="submaketitle"></text:p>}\IgnoreIndent + |<start nested pars|>} + {|<end nested pars|>\ifvmode \IgnorePar \fi\EndP + \HCode{<text:p\Hnewline text:style-name="end-submaketitle"></text:p>}} +>>> + + + + +\<configure ooffice amsart\><<< +\NewConfigureOO{submaketitle} +\ConfigureOO{submaketitle}{\Hnewline +<style:style style:name="submaketitle" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:border-bottom="0.01cm solid \#000000" + style:auto-text-indent="false"/>\Hnewline +</style:style>\Hnewline > +<style:style style:name="end-submaketitle" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:border-top="0.01cm solid \#000000" + style:auto-text-indent="false"/>\Hnewline +</style:style>\Hnewline > } +>>> + + +\<boxed subjclass\><<< +\hbox{\HCode{<text:p><draw:frame + draw:name="subjclass" + draw:style-name="subjclass" + text:anchor-type="as-char" + draw:z-index="0" + > + <draw:text-box + >}}% +>>> + + +\<end boxed subjclass\><<< +\hbox{\HCode{</draw:text-box> +</draw:frame></text:p> }}% +>>> + + + + +\<configure ooffice amsart\><<< +\Configure{maketitle} + {\ifvmode \IgnorePar\fi \EndP |<ams title for TITLE|>% + \HCode{<!--begin maketitle-->}% + \ConfigureEnv{center} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi} + {\ifvmode \IgnorePar\fi} {\ifvmode \IgnorePar\fi}% + |<footnote for ams title|>% + } + {\ifvmode \IgnorePar\fi \EndP \HCode{<!--end maketitle-->}\par} + {\NoFonts\IgnorePar \EndP + \HCode{<text:p text:style-name="Title\if@rl-rtl\fi">}\IgnorePar + \bgroup \Configure{HtmlPar}{}{}{}{}} + {\egroup \HCode{</text:p>}\IgnoreIndent\EndNoFonts} +>>> + + + +\<configure ooffice amsart\><<< +\Configure{thanks author date and} + {\par\IgnorePar\EndP \HCode{<text:p text:style-name="thanks">}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</text:p>}} + {\ifvmode \IgnorePar\fi\EndP + \HCode{<text:p text:style-name="authors"><text:span text:style-name="author">}} + {\ifvmode \IgnorePar\fi\EndP \HCode{</text:span></text:p>}} + {\par\IgnorePar\EndP \HCode{<text:p text:style-name="date">}\par\ShowPar} + {\ifvmode \IgnorePar\fi\EndP \HCode{</text:p>}} + {\lowercase{\HCode{</text:span><text:span text:style-name="and">}}and~% + \lowercase{\HCode{</text:span><text:span text:style-name="xxxx">}}} + {}%{\HCode{<text:line-break />}} +>>> + + + +\<configure ooffice amsart\><<< +\NewConfigureOO{authors} +\ConfigureOO{authors}{% +<style:style style:name="authors" + style:family="paragraph" + >\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="14pt" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style> +} +>>> + +\<configure ooffice amsart\><<< +\NewConfigureOO{abstract-title} +\ConfigureOO{abstract-title}{\Hnewline +<style:style style:name="abstract-title" + style:family="paragraph" + style:parent-style-name="abstract-title"> + <style:paragraph-properties + fo:margin-left="0.3in" + fo:margin-right="0.2799in" + fo:text-indent="0in" + fo:margin-top="0in" + fo:margin-bottom="0.0783in" + fo:text-align="start" + style:justify-single-word="false" + style:auto-text-indent="false" + /> +</style:style>\Hnewline +} +>>> + + + +\<configure ooffice amsart\><<< +\NewConfigureOO{keywords} +\ConfigureOO{keywords}{\Hnewline +<style:style style:name="keywords" + style:family="paragraph" + style:parent-style-name="Text-body" + style:next-style-name="Text-body">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0cm" + fo:margin-bottom="0.199cm" + fo:font-size="10pt" + fo:font-style="italic" + fo:text-indent="0cm" + fo:text-align="left" + style:auto-text-indent="false"/>\Hnewline +</style:style>\Hnewline > } +>>> + + + +\<configure ooffice amsart\><<< +\Configure{addresses} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="addresses"></text:p>}\ShowPar + |<start nested pars|>} + {|<end nested pars|>\ifvmode \IgnorePar\fi \EndP + \HCode{<text:p text:style-name="end-addresses"></text:p>}} +\Configure{address} + {\HCode{<text:span text:style-name="address-title">}} + {\ifvmode \IgnorePar\fi \HCode{</text:span><text:span text:style-name="address">}} + {\HCode{</text:span>}} +\Configure{curraddr} + {\HCode{<text:span text:style-name="curraddr-title">}} + {\ifvmode \IgnorePar\fi \HCode{</text:span><text:span text:style-name="curraddr">}} + {\HCode{</text:span>}} +\Configure{email} + {\HCode{<text:span text:style-name="email-title">}} + {\ifvmode \IgnorePar\fi \HCode{</text:span><text:span text:style-name="email">}} + {\HCode{</text:span>}} +\Configure{urladdr} + {\HCode{<text:span text:style-name="urladdr-title">}} + {\ifvmode \IgnorePar\fi \HCode{</text:span><text:span text:style-name="urladdr">}} + {\HCode{</text:span>}} +>>> + +\<configure ooffice amsart\><<< +\NewConfigureOO{address} +\ConfigureOO{address}{ +<style:style style:name="address" style:family="text"> + <style:text-properties fo:text-transform="capitalize" + /> +</style:style> +} +>>> + + + +\<start nested pars\><<< +\bgroup +\HTML:PAR{nested-p-\ifHCond nopar\else noindent\fi}% + {nested-p-\ifdim \parindent=\z@ no\fi indent}% +>>> + +\<end nested pars\><<< +\ifvmode \IgnorePar \fi \EndP \egroup +>>> + +%%%%%%%%%%%%%%%%%% +\section{Lists} +%%%%%%%%%%%%%%%%%% + + + +\<oo+ itemize style rtl\><<< +<text:list-style style:name="Itemize-rtl">\Hnewline + <text:list-level-style-bullet + \list:text:level="1" + text:style-name="Bullet-Symbols" + text:bullet-char="\string&\:sharp x2022;" >\Hnewline + <style:text-properties + text:space-before="0.15in" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-bullet>\Hnewline + <text:list-level-style-bullet + \list:text:level="2" + text:bullet-char="\string&\:sharp x25E6;" >\Hnewline + <style:text-properties + text:space-before="0.1972in" + text:min-label-width="0.2965in"/>\Hnewline + </text:list-level-style-bullet>\Hnewline + <text:list-level-style-bullet + \list:text:level="3" + text:bullet-char="\string&\:sharp x25AA;" >\Hnewline + <style:text-properties + text:space-before="0.3937in" + text:min-label-width="0.4965in"/>\Hnewline + </text:list-level-style-bullet>\Hnewline + <text:list-level-style-bullet + \list:text:level="4" + text:bullet-char="\string&\:sharp x25AB;" >\Hnewline + <style:text-properties + text:space-before="0.5909in" + text:min-label-width="0.6965in"/>\Hnewline + </text:list-level-style-bullet>\Hnewline +</text:list-style>\Hnewline +>>> + +\<oo+ itemize style rtl\><<< +<style:style style:name="Inside-itemize-rtl" + style:family="paragraph" + style:list-style-name="Itemize-rtl">\Hnewline + <style:paragraph-properties + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb"/>\Hnewline +</style:style>\Hnewline +>>> + + + + + + +\<oo2+ enumerate style rtl\><<< +<text:list-style style:name="Enumerate-rtl">\Hnewline + <text:list-level-style-number + text:level="1" + text:style-name="Numbering-Symbols" + style:num-prefix="\csname b:enumerate:1\endcsname" + style:num-suffix="\csname c:enumerate:1\endcsname" >\Hnewline + <style:list-level-properties + text:space-before="0.15in" + style:num-format="\csname a:enumerate:1\endcsname" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="2" + text:style-name="Numbering-Symbols" + style:num-prefix="\csname b:enumerate:2\endcsname" + style:num-suffix="\csname c:enumerate:2\endcsname">\Hnewline + <style:list-level-properties + text:space-before="0.35in" + style:num-format="\csname a:enumerate:2\endcsname" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="3" + text:style-name="Numbering-Symbols" + style:num-prefix="\csname b:enumerate:3\endcsname" + style:num-suffix="\csname c:enumerate:3\endcsname">\Hnewline + <style:list-level-properties + text:space-before="0.6in" + style:num-format="\csname a:enumerate:3\endcsname" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline + <text:list-level-style-number + text:level="4" + text:style-name="Numbering-Symbols" + style:num-prefix="\csname b:enumerate:4\endcsname" + style:num-suffix="\csname c:enumerate:4\endcsname">\Hnewline + <style:list-level-properties + text:space-before="0.8in" + style:num-format="\csname a:enumerate:4\endcsname" + text:min-label-distance="0.05in"/>\Hnewline + </text:list-level-style-number>\Hnewline +</text:list-style>\Hnewline +>>> + +\<shared oo+ enumerate style rtl\><<< +<style:style style:name="Inside-enumerate-rtl" + style:family="paragraph" + style:list-style-name="Enumerate-rtl">\Hnewline + <style:paragraph-properties + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb"/>\Hnewline +</style:style>\Hnewline +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Sectioning} +%%%%%%%%%%%%%%%%%% + + + +\<Heading 1 rtl\><<< +<style:style style:name="Heading-1-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="Text-body-rtl" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="17.2999992370605pt" + fo:font-weight="bold" + style:font-size-asian="115\%" + style:font-weight-asian="bold" + style:font-size-complex="115\%" + style:font-weight-complex="bold" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + + + +\<Heading 2 rtl\><<< +<style:style style:name="Heading-2-rtl" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="14.3999996185303pt" + style:font-size-complex="14pt" + style:font-style-complex="italic" + style:font-weight-complex="bold" + fo:margin-top="0.42cm" + fo:margin-bottom="0cm" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + + +\<Heading 3 rtl\><<< +<style:style style:name="Heading-3-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="Text-body-rtl" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="12pt" + fo:font-weight="bold" + style:font-size-asian="14pt" + style:font-weight-asian="bold" + style:font-size-complex="14pt" + style:font-weight-complex="bold" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + +\<Heading 4 rtl\><<< +<style:style style:name="Heading-4-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="Text-body-rtl" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="12pt" + fo:font-weight="bold" + fo:margin-top="0.42cm" + fo:margin-bottom="0cm" + style:font-size-complex="85\%" + style:font-style-complex="italic" + style:font-weight-complex="bold" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" +/> +</style:style> +\Hnewline +>>> + + +\<Heading 5 rtl\><<< +<style:style style:name="Heading-5-rtl" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0.42cm" + fo:margin-bottom="0cm" + fo:font-size="12pt" + fo:font-style="italic" + fo:font-weight="normal" + style:font-size-complex="85\%" + style:font-weight-complex="bold" + fo:text-indent="0cm" + style:auto-text-indent="false" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + + +\<Heading 6 rtl\><<< +<style:style style:name="Heading-6-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="Text-body-rtl" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + + +\<Heading 7 rtl\><<< +<style:style style:name="Heading-7-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="Text-body-rtl" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + +\<Heading 8 rtl\><<< +<style:style style:name="Heading-8-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="Text-body-rtl" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + + +\<Heading 9 rtl\><<< +<style:style style:name="Heading-9-rtl" + style:family="paragraph" + style:parent-style-name="Heading" + style:next-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + +\<Heading 10 rtl\><<< +<style:style style:name="Heading-10-rtl" + style:family="paragraph" + style:parent-style-name="Heading-rtl" + style:next-style-name="Text-body-rtl" + style:class="text">\Hnewline +<style:paragraph-properties fo:font-size="75\%" + fo:font-weight="bold" + style:font-size-asian="75\%" + style:font-weight-asian="bold" + style:font-size-complex="75\%" + style:font-weight-complex="bold"/> +</style:style> +\Hnewline +>>> + +\subsection{mdwlist} + +\<configure ooffice mdwlist\><<< + +\ConfigureList{itemize*}% + {\EndP\HCode{|<input line num|><\text:unorderedlist + text:style-name="Itemize|<cond rtl class|>" + >\Hnewline}\def\end@Item{}\bgroup + \Configure{HtmlPar} + {\EndP\HCode{<text:p + text:style-name="Inside-itemize|<cond rtl class|>" + >}} + {\EndP\HCode{<text:p + text:style-name="Inside-itemize|<cond rtl class|>" + >}} + {\HCode{</text:p>\Hnewline}} + {\HCode{</text:p>\Hnewline}}% + \gHAdvance\BegEnd:D by 1 + } + {\gHAdvance\BegEnd:D by -1 + \EndP\IgnorePar \egroup \HCode{</text:list-item>\Hnewline + </\text:unorderedlist>\Hnewline}\ShowPar} + {\EndP\end@Item\DeleteMark} + {\HCode{<text:list-item>}\par\ShowPar + \def\end@Item{\HCode{</text:list-item>\Hnewline}}} + +\ConfigureList{enumerate*}% + {\EndP\HCode{<\text:orderedlist + text:style-name="Enumerate|<cond rtl class|>" + >\Hnewline}\def\end@Item{}\bgroup + \Configure{HtmlPar} + {\EndP\HCode{<text:p + text:style-name="Inside-enumerate|<cond rtl class|>" + >}} + {\EndP\HCode{<text:p + text:style-name="Inside-enumerate|<cond rtl class|>" + >}} + {\HCode{</text:p>\Hnewline}} {\HCode{</text:p>\Hnewline}}} + {\EndP\IgnorePar \egroup \HCode{</text:list-item>\Hnewline + </\text:orderedlist>\Hnewline}\ShowPar} + {\EndP\end@Item\DeleteMark} + {\HCode{<text:list-item>}\par\ShowPar + \def\end@Item{\HCode{</text:list-item>\Hnewline}}} +>>> + +%%%%%%%%%%%%%%%%%% +\section{Verbatim} +%%%%%%%%%%%%%%%%%% + + + +\<Preformatted Text rtl\><<< +<style:style style:name="Preformatted-Text-rtl" + style:family="paragraph" + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties +% fo:font-family="monospace" +% fo:wrap-option="no-wrap" +% style:font-name="Courier" + fo:margin-top="0.2cm" + fo:margin-bottom="0.2cm" + fo:text-indent="0cm" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" + />\Hnewline + <style:text-properties fo:font-family="monospace"/>\Hnewline +</style:style>\Hnewline +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Paragraphs} +%%%%%%%%%%%%%%%%%% + + +\<First-line-indent rtl\><<< +<style:style style:name="First-line-indent-rtl" + style:family="paragraph" + style:parent-style-name="Text-body" + style:class="text">\Hnewline +<style:paragraph-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:text-indent="0.499cm" + style:auto-text-indent="false" + fo:text-align="end" + style:justify-single-word="false" + style:writing-mode="rl-tb" /> +</style:style>\Hnewline +>>> + + +\<Text-body rtl\><<< +<style:style style:name="Text-body-rtl" + style:family="paragraph" + style:parent-style-name="Standard" + style:next-style-name="First-line-indent" + style:class="text" + style:master-page-name="">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:line-height="120\%" + style:justify-single-word="false" + fo:hyphenate="true" + fo:hyphenation-remain-char-count="2" + fo:hyphenation-push-char-count="2" + fo:hyphenation-ladder-count="no-limit" + style:page-number="0" + fo:text-align="end" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +<style:style style:name="Like-Text-body-rtl" + style:family="paragraph" + style:parent-style-name="Standard" + style:next-style-name="First-line-indent" + style:class="text" + style:master-page-name="">\Hnewline +<style:paragraph-properties fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:line-height="120\%" + style:justify-single-word="false" + fo:hyphenate="true" + fo:hyphenation-remain-char-count="2" + fo:hyphenation-push-char-count="2" + fo:hyphenation-ladder-count="no-limit" + style:page-number="0" + fo:text-align="end" + style:writing-mode="rl-tb" /> +</style:style> +\Hnewline +>>> + + + +\<p-nopar rtl\><<< + <style:style style:name="p-nopar-rtl" + style:family="paragraph" + style:parent-style-name="Text-body">\Hnewline + <style:paragraph-properties + style:auto-text-indent="false" + fo:margin-top="0.3cm" + fo:margin-bottom="0.3cm" + style:justify-single-word="false" + fo:text-align="end" + style:writing-mode="rl-tb" />\Hnewline + </style:style>\Hnewline +>>> + + +%%%%%%%%%%%%%%%%%% +\section{List-Based Environments} +%%%%%%%%%%%%%%%%%% + + + +\<quote rtl\><<< +<style:style style:name="quote-rtl" + style:family="paragraph" + style:parent-style-name="Text-body-rtl" + style:next-style-name="Text-body-rtl">\Hnewline +<style:paragraph-properties fo:margin-left="1cm" + fo:margin-right="1cm" + fo:margin-top="0.199cm" + fo:margin-bottom="0.199cm" + fo:text-indent="0cm" + style:auto-text-indent="false" + fo:text-align="end" + style:writing-mode="rl-tb" />\Hnewline +</style:style> +\Hnewline +>>> + + +\<quotation rtl\><<< + <style:style style:name="quotation-rtl" + style:family="paragraph" + style:parent-style-name="Standard">\Hnewline + <style:paragraph-properties + fo:margin-left="1cm" + fo:margin-right="1cm" + fo:margin-top="0cm" + fo:margin-bottom="0cm" + fo:text-indent="0.499cm" + style:auto-text-indent="true" + fo:text-align="end" + style:writing-mode="rl-tb" />\Hnewline + </style:style>\Hnewline +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Math} +%%%%%%%%%%%%%%%%%% + + + +\<mathml rlbabel\><<< +\if@rl\else\beginR\fi +>>> + + +%%%%%%%%%%%%%%%%%% +\chapter{Math} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Envelops} +%%%%%%%%%%%%%%%%%% + +\<configure mathml rlbabel\><<< +\Configure{[]} + {\Configure{@math}{|<block display|>}\csname a:mathml[]\endcsname + \CenteredFrametrue \DviMath \CenteredFramefalse + \Tg<\a:mathml mrow\Hnewline>$$\DisplayMathtrue } + {$$\Tg</\a:mathml mrow>\EndDviMath\csname b:mathml[]\endcsname + |<mathml rlbabel|> } +>>> + + +\<block display\><<< +% \a:mathml display="block" +>>> + + +\<inline display\><<< +%\a:mathml display="inline" +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Underline and Overline} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice-mml latex\><<< +\Configure{overline} + {\bgroup\ifmathml |<mathml overline|>\else + \HCode{<text:span text:style-name="overline" >}\fi} + {\ifmathml |<end mathml overline|>\else \HCode{</text:span>}\fi\egroup} +\Configure{underline} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<text:span text:style-name="underline" >}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</text:span>}\fi \egroup} +>>> + + + +\<configure ooffice-mml ushort \><<< +\Configure{ushort} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<text:span text:style-name="underline" >}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</text:span>}\fi \egroup} +\Configure{ushortw} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<text:span text:style-name="underline" >}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</text:span>}\fi \egroup} +\Configure{ushortd} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<text:span text:style-name="underline" >}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</text:span>}\fi \egroup} +\Configure{ushortdw} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<text:span text:style-name="underline" >}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</text:span>}\fi \egroup} +\Configure{ushortdline} + {\bgroup + \ifmathml |<mathml underline|>% + \else |<nomath underline|>\HCode{<text:span text:style-name="underline" >}\fi} + {\ifmathml |<end mathml underline|>\else \HCode{</text:span>}\fi \egroup} +>>> + + + +\<mathml overline\><<< +\HCode{<\a:mathml mover accent="false"\Hnewline +\mml:class="mml-overline"><\a:mathml mrow>}% +>>> + +\<end mathml overline\><<< +\HCode{</\a:mathml mrow><\a:mathml mo\Hnewline + accent="true">&\#x00AF;</\a:mathml mo>% +</\a:mathml mover>}% +>>> + + +\<mathml underline\><<< +\HCode{<\a:mathml munder \a:mathml accentunder="false"\Hnewline +\mml:class="mml-underline"><\a:mathml mrow>}% +>>> + +\<nomath underline\><<< +\expandafter\everymath +\expandafter{\expandafter\everymath + \expandafter{\the\everymath}}% +\let\o::@underline:\o:@@underline: +\def\o:@@underline:{\let\o:@@underline:\o::@underline:}% +>>> + +\<end mathml underline\><<< +\HCode{</\a:mathml mrow><\a:mathml mo\Hnewline +accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% +>>> + + + +\<configure ooffice fontmath\><<< +\NewConfigureOO{overline} +\ConfigureOO{overline}{|<oo overline style|>} +\NewConfigureOO{underline} +\ConfigureOO{underline}{|<oo underline style|>} +>>> + +\<oo underline style\><<< +<style:style style:name="underline" style:family="text"> + <style:text-properties style:text-underline-style="solid" + style:text-underline-width="auto" + style:text-underline-color="font-color" + /> +</style:style> +>>> + +Overline?? + +\<oo overline style\><<< +<style:style style:name="overline" style:family="text"> + <style:text-properties style:text-underline="dotted" /> +</style:style> +>>> + + +%%%%%%%%%%%%%%%%%% +\section{mfenced} +%%%%%%%%%%%%%%%%%% + +OO doesn't seem to hono mfenced + +\begin{verbatim} +\documentclass{article} +\begin{document} +\[ +\sin\left(x\right)\] +\end{document} +\end{verbatim} + +\<configure ooffice-mml latex\><<< +>>> + +\<configure ooffice-mml plain\><<< +>>> + + + + + + +\<mfenced patches\><<< +\Configure{left} + {} + {\HCode{<\a:mathml mrow>\expandafter + \ifx \csname \string#1:lr del\endcsname\relax + <\a:mathml mo form="prefix" >#1</\a:mathml mo\space>\else + \expandafter\ifx \csname \string#1:lr del\endcsname\empty \else + <\a:mathml mo form="prefix" >\csname + \string#1:lr del\endcsname</\a:mathml mo>\fi + \fi<\a:mathml mrow>}} +>>> + + + + + +\<mfenced patches\><<< +\Configure{right} + {\HCode{</\a:mathml mrow>\expandafter + \ifx \csname \string#1:lr del\endcsname\relax + <\a:mathml mo form="postfix" >#1</\a:mathml mo>\else + \expandafter\ifx \csname \string#1:lr del\endcsname\empty \else + <\a:mathml mo form="postfix" >\csname + \string#1:lr del\endcsname</\a:mathml mo>\fi + \fi + }} + {\HCode{</\a:mathml mrow>}} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{???????????????????????} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%% +\section{Long Tables} +%%%%%%%%%%%%%%%%%% + + +\<configure ooffice longtable\><<< +\Configure{halignTB<>}{longtable}{\HCode{\Hnewline + table:style-name="longtable" + }<>\HAlign} +\Configure{longtable} + {\IgnorePar\EndP \HCode{|<show input line no|>}% + \halignTB{longtable}% + |<list the grouping of columns|>} + {|<insert Clr|>\HCode{</table:table>}} + {\HCode{<table:table-row \Hnewline}\halignTR\HCode{ + table:style-name="TBL-\TableNo-\HRow-">}} + {\HCode{</table:table-row>}} + {\HCode{<table:table-cell + \ifnum \HMultispan>1 table:number-columns-spanned="\HMultispan"\fi + \space table:style-name="TBL-\TableNo-\HRow-\HCol" ><text:p>}|<td save EndP|>% + |<start array par box|>\PushStack\Table:Stck\TableNo} + {\PopStack\Table:Stck\TableNo + |<end array par box|>\HCode{</text:p></table:table-cell>}} +>>> + + + + + + +\<show input line no\><<< +<!--l. \the\inputlineno-->% +>>> + + + +\<td save EndP\><<< +\SaveEndP +>>> + +\<td recall EndP\><<< +\RecallEndP +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Curve} +%%%%%%%%%%%%%%%%%% + + + + + + + + + + +\<configure ooffice curve\><<< +\ConfigureEnv{rubric} + {\bgroup |<rubric table|>} {\egroup} {} {} +>>> + + +\<rubric table\><<< +\Configure{table-column-style} + {table:style-name="|<rubric col num|>"} +\Configure{longtable} + {\IgnorePar\EndP \HCode{|<show input line no|>}% + \halignTB{longtable}% + |<list the grouping of columns|>} + {|<insert Clr|>\HCode{</table:table>}} + {\HCode{<table:table-row \Hnewline}\halignTR\HCode{ + table:style-name="TBL-\TableNo-\HRow-">}} + {\HCode{</table:table-row>}} + {\HCode{<table:table-cell + \ifnum \HMultispan>1 table:number-columns-spanned="\HMultispan"\fi + \space table:style-name="|<rubric cell num|>" ><text:p + text:style-name="|<rubric par num|>" >}|<td save EndP|>% + |<start array par box|>\PushStack\Table:Stck\TableNo} + {\PopStack\Table:Stck\TableNo + |<end array par box|>\HCode{</text:p></table:table-cell>}} +>>> + +\<rubric col num\><<< +\ifcase \ar:cnt\relax +\or %1 + keyCol% +\or %2 + markCol% +\else + bodyCol% TBL-\TableNo -\ar:cnt +\fi +>>> + +\<rubric cell num\><<< +\ifcase \HMultispan\relax +\or %1 + \ifcase \HCol\relax + \or %1 + keyCell% + \or %2 + markCell% + \else + TBL-\TableNo-\HRow-\HCol + \fi +\or %2 + \ifnum \HCol=2 + subrubricCell% + \else + TBL-\TableNo-\HRow-\HCol + \fi +\or %3 + \ifnum \HCol=1 + rubricheadCell% + \else + TBL-\TableNo-\HRow-\HCol + \fi +\else + TBL-\TableNo-\HRow-\HCol +\fi +>>> + + +\<rubric par num\><<< +\ifcase \HMultispan\relax +\or %1 + \ifcase \HCol\relax + \or %1 + keyP% + \or %2 + markP% + \else + TBL-\TableNo-\HRow-\HCol + \fi +\or %2 + \ifnum \HCol=2 + subrubricP% + \else + TBL-\TableNo-\HRow-\HCol + \fi +\or %3 + \ifnum \HCol=1 + rubricheadP% + \else + TBL-\TableNo-\HRow-\HCol + \fi +\else + TBL-\TableNo-\HRow-\HCol +\fi +>>> + + + +\<configure ooffice curve\><<< +\OOstyles{% +\Hnewline +<style:style + style:name="markCol" + style:family="table-column" + > \Hnewline + <style:table-column-properties + style:rel-column-width="180*"/> +</style:style> \Hnewline +<style:style style:name="keyCol" style:family="table-column"> + <style:table-column-properties + style:rel-column-width="1546*"/> +</style:style> \Hnewline +<style:style style:name="bodyCol" style:family="table-column"> + <style:table-column-properties + style:rel-column-width="6914*"/> +</style:style> \Hnewline +} +>>> + + + +\<configure ooffice curve\><<< +\Configure{maketitle} + {}{} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:h text:style-name="curveTitle" text:outline-level="1" + >}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</text:h>}} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:h text:style-name="curveSubTitle" text:outline-level="2" + >}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</text:h>}} +>>> + + + +\<configure ooffice curve\><<< +\OOstyles{% +\Hnewline +<style:style + style:name="curveTitle" + style:family="paragraph" + > \Hnewline + <style:paragraph-properties + fo:text-align="center" + style:justify-single-word="false" + fo:margin-top="0.4cm" + fo:margin-bottom="0.1cm" + /> \Hnewline + <style:text-properties + fo:font-size="145\%" + fo:font-weight="bold" + /> \Hnewline +</style:style> \Hnewline +} +>>> + + + +\<configure ooffice curve\><<< +\OOstyles{% +\Hnewline +<style:style + style:name="curveSubTitle" + style:family="paragraph" + > \Hnewline + <style:paragraph-properties + fo:text-align="center" + style:justify-single-word="false" + fo:margin-top="0.1cm" + fo:margin-bottom="0.2cm" + /> \Hnewline + <style:text-properties + fo:font-size="130\%" + fo:font-weight="normal" + fo:font-style="italic" + /> \Hnewline +</style:style> \Hnewline +} +>>> + + +\<configure ooffice curve\><<< +\Configure{makeheaders} + {\ifvmode \IgnorePar\fi \EndP + \HCode{% + <table:table table:name="makeheaders" > + <table:table-column table:number-columns-repeated="2"/> + <table:table-row> + <table:table-cell table:style-name="leftheader" + office:value-type="string"> + <text:p text:style-name="Pleft" >}} + {\HCode{</text:p> + </table:table-cell> + <table:table-cell table:style-name="rightheader" + office:value-type="string"> + <text:p text:style-name="Pright" >}} + {\HCode{</text:p> + </table:table-cell> + </table:table-row> + </table:table>}} +>>> + +\<configure ooffice curve\><<< +\OOstyles{% +<style:style + style:name="leftheader" + style:family="table-cell"> + <style:table-cell-properties + fo:padding="0.0382in" + fo:border="none"/> +</style:style> +<style:style + style:name="rightheader" + style:family="table-cell"> + <style:table-cell-properties + fo:padding="0.0382in" + fo:border="none"/> i +</style:style> +<style:style style:name="Pleft" + style:family="paragraph" > + <style:paragraph-properties + fo:text-align="left" + style:justify-single-word="false"/> + <style:text-properties + fo:font-style="normal" /> +</style:style> +<style:style style:name="Pright" + style:family="paragraph" > + <style:paragraph-properties + fo:text-align="end" + style:justify-single-word="false"/> + <style:text-properties + fo:font-style="normal" /> +</style:style> +} +>>> + + + +\<configure ooffice curve\><<< +\Configure{rubrichead} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:span text:style-name="rubrichead" >}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</text:span>}} +>>> + + +\<configure ooffice curve\><<< +\OOstyles{% +\Hnewline +<style:style + style:name="rubrichead" + style:family="text" + > \Hnewline + <style:text-properties + fo:font-size="110\%" + fo:font-weight="bold" + /> \Hnewline +</style:style> \Hnewline +} +>>> + + + +\<configure ooffice curve\><<< +\OOstyles{% +\Hnewline +<style:style + style:name="rubricheadP" + style:family="paragraph" + > \Hnewline + <style:paragraph-properties + fo:text-align="center" + style:justify-single-word="false" + fo:margin-top="0.2cm" + fo:margin-bottom="0.2cm" + /> \Hnewline +</style:style> \Hnewline +} +>>> + + + + +\<configure ooffice curve\><<< +\Configure{subrubric} + {\ifvmode \IgnorePar\fi \EndP + \HCode{<text:span text:style-name="subrubric" >}} + {\ifvmode \IgnorePar\fi \EndP \HCode{</text:span>}} +>>> + + +\<configure ooffice curve\><<< +\OOstyles{% +\Hnewline +<style:style + style:name="subrubric" + style:family="text" + > \Hnewline + <style:text-properties + fo:font-weight="normal" + fo:font-style="italic" + fo:font-size="130\%" + /> \Hnewline +</style:style> \Hnewline +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{wrapfig} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooffice wrapfig\><<< +\pend:def\WFclear{% +\let\orig:par\par% +\def\par{\let\par\orig:par}% +}% +\append:def\WFclear{\let\par\orig:par} + +\Configure{wrapfloat} +{\ifvmode \IgnorePar\fi \EndP% +\HCode{<text:section text:name="wrapfig-\WFplace" ><text:p>}\bgroup\HtmlParOff} +{\ifvmode \IgnorePar\fi\EndP% + \HCode{</text:p></text:section>}% + \HtmlParOn\egroup% + \csname par\endcsname\ShowPar% +} + +>>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{subscript} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooffice subscript\><<< +\Configure{textsubscript} + {\HCode{<text:span text:style-name="textsubscript">}} + {\HCode{</text:span>}} +\OOstyles{% +<style:style style:name="textsubscript" style:family="text">\Hnewline + <style:text-properties style:text-position="sub"/>\Hnewline +</style:style>\Hnewline +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Notes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%% +\section{References} +%%%%%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item Accessibility + +\begin{itemize} + +\item Peter Korn's Weblog, Testing ODF document accessibility +\url{http://blogs.sun.com/korn/entry/testing_odf_document_accessibility_and} + +\item +eDesigner, +\url{http://www.alphaworks.ibm.com/tech/adesigner} + + +\item +OASIS OpenDocument - Accessibility +\url{http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office-accessibility} +\end{itemize} + + +\item \href{http://books.evc-cit.info/odbook/book.html}{OASIS OpenDocument Essentials} + +\item OpenDocument: +\href{http://www.oasis-open.org/committees/download.php/12572/OpenDocument-v1.0-os.pdf}{OASIS} + +\item OpenDocument: +\href{http://www.oasis-open.org/specs/index.php}{OASIS} + + + +DTD?, relaxng schema provided + +\item OpenOffice : + \href{http://xml.openoffice.org/source/browse/xml/xmloff/dtd/}{DTD}, + \href{http://books.evc-cit.info/book.php}{book}, + \href{http://books.evc-cit.info/odbook/book.html}{OASIS OpenDocument Essentials}, + \href{http://books.evc-cit.info/}{OpenOffice.org XML Essentials} book, + \href{http://xml.openoffice.org/xml_specification.pdf}{OpenOffice.org XML + File Format + 1.0} Technical Reference Manual Version 2 December 2002, + \href{http://www.xml.com/pub/a/2001/02/07/openoffice.html}{Adventures + with OpenOffice and XML} (Matt Sergeant ), + \href{http://xml.openoffice.org/}{home page}, + \href{http://www.ccsd1.k12.wy.us/Training/Help_Desk/StarOffice/816-7367.pdf}{user's + guide}, + \href{http://xml.coverpages.org/OpenOfficeXMLSpec200207.pdf}{Technical + reference}, + \href{http://ooo.ximian.com/lxr/source/xml/xmloff/dtd/}{some online + dtds} + +\item +Publication: +Maarten Wisse, "Hacking TEX4ht for XML Output: The Road towards a TEX +to Word Convertor", MAPS 28 (2002), pp. 28-35. +(\url{http://home.wanadoo.nl/pmwisse/hpmwissese3.html}.) + +\item Samples: + \url{http://www.xml.com/2001/02/07/adventure.sxw}, + \url{http://cvs.berlios.de/cgi-bin/viewcvs.cgi/od2f/study/content.xml?annotate=1.2} + +\item +\url{http://www.oasis-open.org/committees/download.php/10765/office-spec-1.0-cd-2.pdf} +\url{http://xml.coverpages.org/ni2005-01-04-a.htm} + +\item +\url{http://docs.oasis-open.org/office/v1.1/OS/} + +\item See NeoOffice/J for Macs + +\item +Sun ODF Plugin 1.1 for Microsoft Office: +\url{http://www.sun.com/software/star/odf_plugin/} +\end{itemize} + +%%%%%%%%%%%%%%%%%%% +\section{To Do} +%%%%%%%%%%%%%%%%%%% + +\begin{itemize} +\item Activate groups of columns? +\item Vertical Borders + +Why the following doesn't work? + +\begin{verbatim} +\OOstyles{% + <style:style style:name="hline-cell" style:family="table-cell"> + <style:text-properties fo:padding="0.097cm" + fo:border-left="none" + fo:border-right="none" + fo:border-top="none" + fo:border-bottom="0.002cm solid \#000000"/> + </style:style> +} +\end{verbatim} + +\item Margins on sides of tables +\end{itemize} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Writer2LaTeX} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{verbatim} +Another thing with built-in styles in OOo: You use the style "Quotations", +but the definition is not included in styles.xml. This is not a problem +for OOo, but it will be a problem for other applications reading the file +(Writer2LaTeX, KWord,...). To fix that you should always include the +definition of a style. + + +w2l in-file +\end{verbatim} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Supporting Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{verbatim} +The .sxw file is a .JAR file (which is basically the same as a .ZIP file). + +The manifest.xml file is the difference between .ZIP and .JAR, +apparently. It makes searching the files easier, and the documentation +claims that this file is uncompressed, so that it can be easily +read. I have not tested this, but it seems like a good idea. + +content.xml - the text of the document +styles.xml - the styles used by the document +meta.xml - various meta-information (author, etc) +settings.xml - the Word Processor settings used. +META-INF/manifest.xml - a list of all these files, plus any others used in the document + +\end{verbatim} + +%%%%%%%%%%%%%%%%%% +\section{How-To Examples} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{New Pages} +%%%%%%%%%%%%% + + + +\<configure ooffice latex\><<< +\Configure{newpage}{\par \EndP \IgnorePar + \HCode{<text:p text:style-name="newpage"></text:p>}% + \par\ShowPar} +\OOstyles{% + <style:style style:name="newpage" style:family="paragraph" > + <style:paragraph-properties fo:break-after="page"/> + </style:style> +} +>>> + + + + + + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-ooimpress.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-ooimpress.tex new file mode 100644 index 00000000000..ff2efa11cc4 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-ooimpress.tex @@ -0,0 +1,436 @@ +% $Id: tex4ht-ooimpress.tex 65 2010-11-17 19:16:45Z karl $ +% compile 3 times: latex tex4ht-ooimpress +% htlatex tex4ht-ooimpress "xhtml,4,sections+" +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) 2001-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{ooimpress}%,ooimpress-mml} + \def\PREAMBLE{% + \usepackage{url}% + \usepackage{hyperref}% + } + \def\OPTIONS{html,sections+,3}% + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari, + James Naughton, and Maarten Wisse}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common} +\input{tex4ht-cpright} + +See ch 7 of \cite{odbook} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{The Code} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The Root} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Imported Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure ooimpress tex4ht\><<< +\if:latex |<Hinclude latex|> +\else |<Hinclude plain|> \fi +>>> + + +\<configure ooimpress plain\><<< +|<Hinclude plain lib|> +|<Hinclude plain + latex lib|> +>>> + +\<configure ooimpress latex\><<< +|<Hinclude latex lib|> +|<Hinclude plain + latex lib|> +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Common Code Fragments} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<par del\><<< +!*?: >>> + +\<tag of Tag\><<< + cw:>>> + +\<tail\><<< +tail>>> + +\<addr for Tag and Ref of Sec\><<< +\xdef\:cursec{|<section html addr|>}% +>>> + +\<utilities\><<< +\newif\ifHCond +\def\:gobbleM#1->{} +>>> + + +\<try env inline par\><<< +\ShowPar +>>> + +\<try inline par\><<< +\ShowPar\par{\HCondtrue\noindent}% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%% +\subsection{Copyright} +%%%%%%%%%%%%%%%%%%%%%% + +\<ooimpress\><<< +% ooimpress.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.2001. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +\<configure ooimpress tex4ht\><<< +|<utilities|> +>>> + +%%%%%%%%%%%%%%%%%%%%%% +\section{The XML Files} +%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%% +\subsection{content.xml (= jobname.xml)} +%%%%%%%%%%%%%%%%%%%%%% + +\<configure ooimpress foils\><<< +\Configure{BODY} + {\HCode{<office:body><office:presentation>}% + \let\end:rootslide\empty + \start:slide + \gdef\end:rootslide{\end:slide \global\let\end:rootslide=\empty}% + \par\ShowPar} + {\IgnorePar\EndP + \end:rootslide + \HCode{</office:presentation></office:body>\Hnewline}} +>>> + + +\<configure ooimpress foils\><<< +\Configure{maketitle} + {\bgroup + \Configure{newpage}{}% + \IgnorePar\EndP\HCode{<!--begin maketitle-->} + \Configure{tabular}{}{}{}{}{\ifnum \HRow>1 + \HCode{<text:line-break\Hnewline/>}\fi}{}% + \ConfigureEnv{tabular}{}{}{}{}% + } + {\ifvmode \IgnorePar\fi \EndP + \HCode{|<end page body|><!--end maketitle-->}\egroup \par} + {\ifvmode \IgnorePar\fi \EndP + \HCode{|<start document title|>% + <text:p text:style-name="Title|<cond rtl class|>" >}} + {\HCode{</text:p>|<end document title|>|<start maketitle page body|>}} +>>> + +\<start maketitle page body\><<< +<draw:frame presentation:style-name="pr1" + draw:layer="layout" + svg:width="25.199cm" +% svg:height="3.256cm" + svg:x="1.4cm" + svg:y="6.0cm" + presentation:class="notes"> + <draw:text-box>\Hnewline +>>> + + + +\<start page body\><<< +<draw:frame presentation:style-name="pr1" + draw:layer="layout" + svg:width="25.199cm" +% svg:height="3.256cm" + svg:x="1.4cm" + svg:y="2.0cm" + presentation:class="notes"> + <draw:text-box>\Hnewline +>>> + + +\<end page body\><<< + </draw:text-box> +</draw:frame>\Hnewline +>>> + + + +\<start document title\><<< +<draw:frame presentation:style-name="pr1" + draw:layer="layout" + svg:width="25.199cm" +% svg:height="3.256cm" + svg:x="1.4cm" + svg:y="3.0cm" + presentation:class="title"> + <draw:text-box>\Hnewline +>>> + +\<end document title\><<< + </draw:text-box> +</draw:frame>\Hnewline +>>> + + + +\<configure ooimpress foils\><<< +\HAssign\PageN=0 +\Configure{foilhead} + {\IgnorePar\EndP \start:slide } + {\IgnorePar\EndP + \HCode{|<end page body|>}\end:slide } + {\HCode{|<start foilhead title|>% + <text:p text:style-name="|<cond rtl class|>" >}% + \IgnoreIndent} + {\HCode{</text:p>\Hnewline + |<end foilhead title|>|<start page body|>}\par\ShowPar} + +\def\start:slide{\end:rootslide + \HAdvance\PageN by 1 + \HCode{<!--start of foilhead--> + <draw:page draw:name="page\PageN" + draw:style-name="dp1" + draw:master-page-name="Default"> \Hnewline}} +\def\end:slide{\HCode{ + </draw:page> + <!--end of foilhead-->}} +>>> + + +\<cond rtl class\><<< +\if@rl-rtl\fi +>>> + + + +\<start foilhead title\><<< +<draw:frame presentation:style-name="pr1" + draw:layer="layout" + svg:width="25.199cm" +% svg:height="3.256cm" + svg:x="1.4cm" + svg:y="0.962cm" + presentation:class="subtitle"> + <draw:text-box>\Hnewline +>>> + +\<end foilhead title\><<< + </draw:text-box> +</draw:frame>\Hnewline +>>> + +\<configure ooimpress foils NO\><<< +\NewConfigureOO{slide} +\ConfigureOO{slide}{% +<style:style style:name="dp1" style:family="drawing-page"> + <style:drawing-page-properties + presentation:background-visible="true" + presentation:background-objects-visible="true" + presentation:display-footer="true" + presentation:display-page-number="false" + presentation:display-date-time="true"/> +</style:style> +<style:style style:name="gr1" + style:family="graphic" + style:parent-style-name="standard"> + <style:graphic-properties + draw:stroke="none" + svg:stroke-color="\#000000" + draw:fill="none" + draw:fill-color="\#ffffff" + draw:textarea-horizontal-align="left" + draw:auto-grow-height="true" + draw:auto-grow-width="true" + fo:min-height="0cm" + fo:min-width="0cm"/> +</style:style> +} +>>> + + + + +\<configure ooimpress foils\><<< +\ConfigureOO{foilhead}{\Hnewline +<style:style style:name="foilhead" + style:family="paragraph" + >\Hnewline +<\style:par:properties fo:font-size="12pt" + fo:font-weight="bold" + style:font-size-asian="14pt" + style:font-weight-asian="bold" + style:font-size-complex="14pt" + style:font-weight-complex="bold" + fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:text-align="center" + style:justify-single-word="false" +/> +</style:style> +} +>>> + + +\<configure ooimpress foils\><<< +\ConfigureOO{title}{% +<style:style style:name="Title" + style:family="paragraph" + >\Hnewline +<\style:par:properties fo:margin-top="0.42cm" + fo:margin-bottom="0.51cm" + fo:font-size="20pt" + fo:font-weight="normal" + style:font-size-asian="18pt" + style:font-weight-asian="bold" + style:font-size-complex="18pt" + style:font-weight-complex="bold" + fo:text-align="center" + style:justify-single-word="false"/> +</style:style> \Hnewline + } +>>> + + + +\<configure ooimpress foils\><<< +\Configure{thank} + {\setbox\tmp:bx=\hbox\bgroup} + {\egroup} + {\NoFonts \leavevmode \bgroup \protect\Configure{$}{}{}{}% + \hbox{\HCode{<!--text:note\Hnewline text:note-class="footnote" + text:id="}|<thank id|>% + \HCode{"><text:note-citation>}}% + } + {\egroup \EndNoFonts + \HCode{</text:note-citation><text:note-body> + <text:p\Hnewline text:style-name="Footnote" ><text:s/>}} + {\HCode{</text:p></text:note-body></text:note-->}} +>>> + + + + + +%%%%%%%%%%%%% +\subsection{Undo ooffice} +%%%%%%%%%%%%% + + +\<configure ooimpress tex4ht\><<< +\def\media:type{application/vnd.oasis.opendocument.presentation} +>>> + +%%%%%%%%%%%%%%%%%% +\subsection{Remove `reference-mark'} +%%%%%%%%%%%%%%%%%% + +Introduced in xtpipes for \verb=\Link= + + +\<configure ooimpress latex\><<< +\Odef\Link[#1]#2#3{} +\let\EndLink\empty +>>> + + +%%%%%%%%%%%%%%%%%% +\subsection{Remove `style:columns'} +%%%%%%%%%%%%%%%%%% + + +OpenOffice impress chocks on `style:columns' (why?) + +\<configure ooimpress latex\><<< +\ConfigureOO{Sect1}{\Hnewline + <style:style style:name="Sect1" + style:family="section"> + <\style:sectionproperties> + <!--style:columns fo:column-count="1" + fo:column-gap="0cm"> + <style:column fo:margin-top="0.5cm" + fo:margin-left="0cm" + fo:margin-right="0cm" + /> + </style:columns--> + </\style:sectionproperties> + </style:style> +\Hnewline } +>>> + + +\<configure ooimpress latex\><<< +\ConfigureOO{Sect2}{\Hnewline +<style:style style:name="Sect2" + style:family="section"> + <\style:sectionproperties> + <!--style:columns fo:column-count="0" fo:column-gap="0cm"/--> + </\style:sectionproperties> +</style:style> +\Hnewline } +>>> + +\<configure ooimpress tex4ht\><<< +\Configure{figure-style}{% + <style:style style:name="Figure" style:family="section">\Hnewline + <style:section-properties + fo:margin-left="0.25in" + fo:margin-right="0.25in" + style:editable="true">\Hnewline + <!--style:columns fo:column-count="0" + fo:column-gap="0in"/--> + </style:section-properties> + </style:style>\Hnewline +} +>>> + + +\<configure ooimpress g-brief\><<< +\ConfigureOO{g-brief-header}{\Hnewline +<style:style style:name="header-style" style:family="section">\Hnewline + <\style:properties text:dont-balance-text-columns="false" + fo:margin-bottom="2cm">\Hnewline + <!--style:columns fo:column-count="2" + fo:column-gap="1in">\Hnewline + <style:column fo:margin-left="0in" + fo:margin-right="0in"/>\Hnewline + <style:column fo:margin-left="0in" + fo:margin-right="0in"/>\Hnewline + </style:columns-->\Hnewline + </\style:properties>\Hnewline +</style:style>\Hnewline +} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{thebibliography}{9} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\bibitem{odbook} +OASIS OpenDocument Essentials, +Using OASIS OpenDocument XML +\url{http://books.evc-cit.info/odbook/book.html} + + +\end{thebibliography} + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-options.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-options.tex new file mode 100644 index 00000000000..36405052508 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-options.tex @@ -0,0 +1,493 @@ +% $Id: tex4ht-options.tex 724 2020-06-05 17:34:50Z karl $ +% latex tex4ht-options or xhlatex tex4ht-options +% +% Copyright 2009-2020 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +%%%%%%%%%%%%%%%%%% definitions %%%%%%%%%%%%%%%%%%%%%%%%% + +\input{common.tex} +\input{common-code.tex} +\input{tex4ht-cpright.tex} + +\def\.{\string\a:mathml:\space} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Shared} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<par del\><<< +!*?: >>> + + +\<tag of Tag\><<< + cw:>>> + +\<tail\><<< +tail>>> + +\<addr for Tag and Ref of Sec\><<< +\xdef\:cursec{|<section html addr|>}% +>>> + + + + + +\<tex4ht.4ht\><<< +\ifnum\the\catcode`\%=14\else \expandafter\edef\csname + \string:RestoreCatcodes\endcsname{\catcode`\%|=\the + \catcode`\%}\catcode`\%|=14\fi +% tex4ht.4ht (|version), generated from |jobname.tex +% Copyright 2009-2018 TeX Users Group +% Copyright |CopyYear.1997. Eitan M. Gurari +|<TeX4ht copywrite|> +|<save catcodes|> +|<note about tex4ht.usr|> + +\:CheckOption{info}\if:Option + \Hinclude[*]{info4ht.4ht} + \Log:Note{For additional information, + compile `xhlatex mktex4ht.4ht'^^J and review the appropriate + pointers under mktex4ht.html => index} +\else + \Log:Note{for additional information, use + the command line option `info'} +\fi +\writesixteen{::::::::::::::::::::::::::::::::::::::::::} +\writesixteen{ TeX4ht info is available in the log file } +\writesixteen{::::::::::::::::::::::::::::::::::::::::::} +|<redefine Configure|> +|<built-in settings|> +|<user's configuration files|> +|<recall Configure|> +\:tempc + +\:RestoreCatcodes +\endinput +>>> + +\<redefine Configure\><<< +\let\:tempd|=\Configure +\def\Configure#1#2{% + \:CheckOption{#1}\if:Option \def\:tempc{#2}\fi} +>>> + +\<recall Configure\><<< +\let\Configure|=\:tempd +>>> + + +\<user's configuration files\><<< +\openin15=tex4ht.usr \ifeof15 \else \closein15 + \input tex4ht.usr +\fi +>>> + +\<note about tex4ht.usr\><<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% It is highly recommended NOT TO CHANGE THIS FILE. Options +% ^^^^^^^^^^^^^^^^^^^^^^^ +% defined in this file may be redefined, and new ones may be +% added, within a user supplied file named tex4ht.usr. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +>>> + + +\<built-in settings\><<< +|<html4 settings|> +|<0.0 and 3.2 settings|> +|<mozilla settings|> +|<html5 settings|> +|<tei settings|> +|<jats settings|> +|<docbook settings|> +|<html for word settings|> +|<open office settings|> +|<html mathltx settings|> +|<html jsmath settings|> +|<html emacspeak settings|> +>>> + + + +\<html4 settings\><<< +\def\:tempc{\:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}% + \:CheckOption{javahelp}\if:Option + \Hinclude[*]{infojh.4ht}\fi + \fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{html4-math.4ht}% + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option + \Hinclude[*]{svg-option.4ht}% + \Hinclude[*]{html4-svg.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi +} +\Configure{uni-html4}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{html4-math.4ht}% + \Hinclude[*]{unicode.4ht} + \Hinclude[*]{html4-uni.4ht}% + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi + } +\Configure{mathml}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \:CheckOption{info}\if:Option + \Hinclude[*]{infomml.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{html-mml.4ht}% + \Hinclude[*]{html4-uni.4ht}% + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi + \:CheckOption{mathplayer}\if:Option + \:CheckOption{pmathml}\if:Option \else + \:CheckOption{pmathml-css}\if:Option \else + \Hinclude[*]{mathplayer.4ht} + \fi\fi + \else + \Log:Note{For MathML on MSIE + MathPlayer use + the command line option `mathplayer'} + \fi +} +>>> + +\<html for word settings\><<< +\Configure{word}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{html4-math.4ht}% + \Hinclude[*]{htmlw.4ht}% + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi +} +>>> + +\<0.0 and 3.2 settings\><<< +\Configure{0.0}{% + \Hinclude[*]{html0.4ht}% +} +\Configure{3.2}{% + \:CheckOption{info}\if:Option + \:CheckOption{javahelp}\if:Option + \Hinclude[*]{infojh.4ht}\fi\fi + \Hinclude[*]{html32.4ht}% + \Hinclude[*]{html32-math.4ht}% + \:CheckOption{javahelp}\if:Option + |<option javahelp|>% + \fi + \:CheckOption{unicode}\if:Option \Hinclude[*]{unicode.4ht}\fi +} +>>> + + + + +Allows cleanup using xtpipes. + + +\<option javahelp\><<< +\Hinclude[*]{javahelp.4ht}% +\:CheckOption{jh-} \if:Option +\else + \edef\Preamble{\Preamble,xml}% + \Log:Note{for sources failing to produce + XML versions of HTML, try the command line option `jh-'}% +\fi +>>> + + + +\<mozilla settings\><<< +\Configure{mozilla}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \:CheckOption{info}\if:Option + \Hinclude[*]{infomml.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{html-mml.4ht}% + \Hinclude[*]{mozilla.4ht}% + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi + \:CheckOption{mathplayer}\if:Option + \Hinclude[*]{mathplayer.4ht} + \else + \Log:Note{For MathML on MSIE + MathPlayer use + the command line option `mathplayer'} + \fi +} +>>> + + +\<html5 settings\><<< +\Configure{html5}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \:CheckOption{info}\if:Option + \Hinclude[*]{infomml.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{unicode.4ht}% + \:CheckOption{mathml}\if:Option% + \else\:CheckOption{mathml-}\fi% + \if:Option% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{html-mml.4ht}% + \else + \Hinclude[*]{html4-math.4ht}% + \fi + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi + \Hinclude[*]{html5.4ht}% +} +>>> + +\<tei settings\><<< +\Configure{tei}{% + \Hinclude[*]{tei.4ht}% + \Hinclude[*]{unicode.4ht}% + \:CheckOption{mathml}\if:Option% + \else\:CheckOption{mathml-}\fi% + \if:Option% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{tei-mml.4ht}% + \else + \Hinclude[*]{tei-math.4ht}% + \fi + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi +} +\Configure{tei-mml}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infomml.4ht}\fi + \Hinclude[*]{tei.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{tei-mml.4ht}% + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi +} +>>> + +\<jats settings\><<< +\Configure{jats}{% + \Hinclude[*]{html4.4ht}% we will build upon HTML + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{html-mml.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{jats.4ht}% +} +>>> + +\<docbook settings\><<< +\Configure{docbook}{% + \Hinclude[*]{docbook.4ht}% + \Hinclude[*]{unicode.4ht}% + \:CheckOption{mathml}\if:Option% + \else\:CheckOption{mathml-}\fi% + \if:Option% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{docbook-mml.4ht}% + \else + \Hinclude[*]{docbook-math.4ht}% + \fi + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi +} +\Configure{docbook-mml}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infomml.4ht}\fi + \Hinclude[*]{docbook.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{docbook-mml.4ht}% + \:CheckOption{svg}% + \if:Option \else\:CheckOption{svg-}\fi + \if:Option \else\:CheckOption{svg-obj}\fi + \if:Option \else\:CheckOption{svg-inline}\fi + \if:Option \Hinclude[*]{svg-option.4ht}% + \:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi + \fi +} +>>> + + +\<open office settings\><<< +\Configure{ooffice}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}% + \Hinclude[*]{infomml.4ht}% + \Hinclude[*]{infoof.4ht}\fi + \Hinclude[*]{ooffice.4ht}% + \:CheckOption{1}\if:Option\else + \:CheckOption{2}\if:Option\else + \:CheckOption{3}\if:Option\else + \:CheckOption{4}\if:Option\else + \:CheckOption{5}\if:Option\else + \:CheckOption{6}\if:Option\else + \:CheckOption{7} + \fi + \fi + \fi + \fi + \fi + \fi + \if:Option + \Hinclude[*]{ooimpress.4ht}% + \fi + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{ooffice-mml.4ht}% +} +>>> + +\<save catcodes\><<< +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else + \csname :RestoreCatcodes\endcsname \fi + \catcode`\noexpand :|=\the\catcode`:% + \ifnum \the\catcode`\#=6 \else + \catcode`\noexpand \#|=\the\catcode`\#\fi + \ifnum \the\catcode`\^=7 \else + \catcode`\noexpand \^|=\the\catcode`\^\fi + \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|= + \noexpand\UnDefcS} +\catcode`\:|=11 \catcode`\#|=6 \catcode`\^|=7 +>>> + + + + + +\<html mathltx settings\><<< +\Configure{mathltx}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{html4-uni.4ht}% + \Hinclude[*]{mathltx.4ht}% + \Hinclude[*]{html-mltx.4ht}% +} +>>> + +\<html jsmath settings\><<< +\Configure{jsmath}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{html4-uni.4ht}% + \Hinclude[*]{mathltx.4ht}% + \Hinclude[*]{html-mltx.4ht}% + \Hinclude[*]{jsmath.4ht}% + \Hinclude[*]{html-jsmath.4ht}% +} +>>> + + + + +\<html emacspeak settings\><<< +\Configure{emspk}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{html4-uni.4ht}% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{html-mml.4ht}% + \Hinclude[*]{html-speech.4ht}% + \Hinclude[*]{html-speech-math.4ht}% + \Hinclude[*]{emacspeak.4ht}% +} +>>> + + +\<html emacspeak settings\><<< +\Configure{jsml}{% + \:CheckOption{info}\if:Option + \Hinclude[*]{infoht4.4ht}\fi + \Hinclude[*]{html4.4ht}% + \Hinclude[*]{unicode.4ht}% + \Hinclude[*]{html4-uni.4ht}% + \Hinclude[*]{mathml.4ht}% + \Hinclude[*]{html-mml.4ht}% + \Hinclude[*]{jsml.4ht}% + \Hinclude[*]{jsml-math.4ht}% +} +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \OutputCodE\<tex4ht.4ht\> + + +\endinput +\subsection{Accents} diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-sty.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-sty.tex new file mode 100644 index 00000000000..58e98796265 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-sty.tex @@ -0,0 +1,11285 @@ +% $Id: tex4ht-sty.tex 893 2021-03-06 00:10:06Z michal_h21 $ +% tex tex4ht-sty or ht tex tex4ht-sty +% +% Copyright 2009-2020 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\input common +\input DraTex.sty +\input AlDraTex.sty + +\DrawOff + +\writesixteen{----------Verify length of lines!!!!------------} +\writesixteen{----------Verify length of lines!!!!------------} +\writesixteen{----------Verify length of lines!!!!------------} +\writesixteen{----------Verify length of lines!!!!------------} + + +\newif\ifalprotex \alprotexfalse + +\hbadness=10000 \vbadness=10000 \hfuzz=99in \vfuzz=99in + + +\def\Link#1\EndLink{} + +\openin15=./tex4ht.sty + \ifeof15 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% replacement for TeX4ht %%%%%%%%%%%%%%%%%% +\writesixteen{........dvi mode} +\csname newif\endcsname\ifHtml \Htmlfalse +\def\-#1{\ifx#1-\expandafter\TEMP\else\expandafter#1\fi} +\expandafter\let\csname bye\endcsname=\end +\def\TEMP#1/#2/#3/{} +\def\HTable#1{} +\def\'#1'{} +\def\`#1'{} +\let\TableOfContents=\relax +\def\Part#1{} +\def\Chapter#1{} +\def\Appendix#1{} +\def\Section#1{} +\def\SubSection#1{} +\def\Margin#1{} +\def\HCode#1{} +\def\LinkPort#1\EndLink{} +\def\EndLink{} +\expandafter\let\csname bye\endcsname=\end +\def\TagSec#1{} +\def\RefSec#1{} +\def\List#1{} \let\ShortList=\List +\def\EndList{} +\def\item{} +\expandafter\let\expandafter\ifOption\csname iffalse\endcsname +\let\IgnorePar\empty +\let\EndP\empty +\catcode`\:=11 +\def\Verb{\bgroup \catcode`\^=10 \catcode`\\=10 \catcode`\%=10 + \catcode`\{=10 \catcode`\}=10 \catcode`\#=10 \catcode`\#=10 + \leavevmode \:ctgs} +\def\:ctgs#1{\def\:eat##1#1{\egroup}\:eat } +\csname newcount\endcsname\tmp:cnt + \def\no:catcodes#1#2#3{% + \tmp:cnt=#1 + \def\no::catcodes{% + \catcode\tmp:cnt=#3 + \ifnum\tmp:cnt<#2 + \advance\tmp:cnt by 1 \expandafter\no::catcodes + \fi }% + \no::catcodes } + \let\:oldlq=\` +\let\:oldrq=\' +\def\'{\leavevmode \:cats \::cats} +\def\::cats#1{\if #1"\expandafter\:oldrq + \else \def\:eat##1#1{\tt ##1\egroup}\expandafter\:eat\fi} +\def\`{\leavevmode \:cats \:::cats} +\def\:::cats#1{\if #1"\expandafter\:oldlq + \else \def\:eat##1#1{`{\tt ##1}'\egroup}\expandafter\:eat\fi} +\def\:cats{\bgroup \no:catcodes0{255}{12}\catcode`\ = 10 + \catcode`\^^M = 10 \catcode`\^^I = 10 +} + +\def\HPage{} \def\EndHPage{} +\def\Verbatim{\bgroup\catcode`\\=12 \catcode`\#=12 + \catcode`\^=12 \catcode`\_=12 + \catcode`\{=12 \catcode`\}=12 \catcode`\%=12 \:vrb} +\long\def\:vrb#1EndVerbatim{\egroup} + + + \closein15 + \def\next{%\input DraTex.sty +\writesixteen{.................requesting non-html mode}% + \input ProTex.sty + \AlProTex{sty,<<<>>>,|,title,list,[],ClearCode}} + \catcode`\:=12 +\else + \closein15 + \def\next{%\input DraTex.sty +\writesixteen{.................requesting html mode}% + \input tex4ht.sty + \Preamble{xhtml,th4,family,sections+} + \Configure{@HEAD}{\HCode{<link rev="made"\Hnewline + href="mailto:gurari@cse.ohio-state.edu" />}} +%% + \input ProTex.sty + \AlProTex{sty,<<<>>>,|,title,list,[],ClearCode} + \EndPreamble} + +\fi + +\next + + +\def\`{\Verb} +\def\'{\Verb} + + +\ifHtml + \TocAt{Chapter,Section,SubSection,LikeSection,/Appendix,/Part} + \TocAt{LikeChapter,Section,SubSection,LikeSection,/Appendix,/Part} + \TocAt{Appendix,Section,SubSection,LikeSection,/Appendix,/Part} + \CutAt{Chapter,LikeChapter,Appendix,Part} + \CutAt{LikeChapter,Chapter,Appendix,Part} + \CutAt{Appendix,Chapter,LikeChapter,Part} +\else + \def\ParentOf#1{} + \csname TableOfContents\endcsname +\fi + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\def\by{by}\def\={=} +\let\pReModifyOutputCode=\ModifyOutputCode +\def\ModifyOutputCode{% + \def\by{}\def\={}% + \pReModifyOutputCode} + +\csname NoOutputCode\endcsname + +\let\coDE=\< +\def\<{\vfil\par\coDE} + +\tracingstats=1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\IgnorePar \EndP +\HCode{<h1>A Literate View of tex4ht.sty</h1>} + + + + + + +\csname TableOfContents\endcsname[ParentOf,Part,Chapter,% + Appendix,LikeChapter,Section,LikeSection] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Chapter{Outline of the Code} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\Section{TeX4ht} + +\<tex4ht\><<< +\ifnum\the\catcode`\%=14\else\expandafter\edef\csname + \string:RestoreCatcodes\endcsname{\catcode`\%|=\the + \catcode`\%}\catcode`\%|=14\fi +|<copyright|> +\ifx \Preamble\UnDef \else + % fix for LaTeX hook system, \AtBeginDocument is not available at this moment + \let\origatbegindocument\AtBeginDocument + \def\AtBeginDocument#1{\AddToHook{begindocument/end}{#1}} + \csname expand:after\endcsname{\csname + BeforeTeXIVht\endcsname\let\BeforeTeXIVht|=\UnDef} + \let\AtBeginDocument\origatbegindocument + +\fi +\def\writesixteen#1{\immediate\write99999{#1}} +|<save cat codes|> +|<ifs for TeX4ht|> +|<check if latex|> +\ifx \Preamble\UnDef + \ifx \PLATFORM\:UnDef \else + \message{ [\PLATFORM] }\let\PLATFORM|=\:UnDef\fi + |<early utilities|> + |<first pass|> + |<first pass for latex|> + \expandafter\ifx \csname tex4ht\endcsname\relax + \let\:temp|=\empty + \else + |<temp := auto load Preamble|> + \fi + \let\:tempc|=\:temp + |<def early latex ifOption|> + \pend:def\:tempc{\:RestoreCatcodes } + \append:def\:tempc{\endinput} + \let\:temp|=\:tempc + \expandafter\:temp +\fi +|<second pass|> +\ifx \Hinput\:UnDef \else + \Hinput{tex4ht2} + |<load protex|> +\fi +|<TeXivht = user file requests|> +|<html-end of style file|> +\rmv:ifs \let\rmv:ifs|=\:UnDef +\:RestoreCatcodes \TeXivht +\endinput + >>> + + + + + + + + + + +\<load sub tex4ht styles\><<< +\ifHtml \def\:tempa{\:Hinclude} +\else + \:CheckOption{th4}\if:Option \def\:tempa{\input th4.4ht} + \else \let\:tempa|=\empty \fi +\fi +\:CheckOption{core} \if:Option \let\:tempa|=\empty \fi +\:CheckOption{base} \if:Option \let\:tempa|=\empty \fi +\:tempa +>>> + + + + + + + + + +We have in amsmath + + +\<utilities\><<< +\def\HLet#1{% + \expandafter\ifx + \csname o:\expandafter\:gobble\string#1:\endcsname\relax + |<save old def of macro|>% + \fi + |<selector between old and new def|>% + \expandafter\let + \csname n:\expandafter\:gobble\string#1:\endcsname} +>>> + + +The original definition of \`'\.....' is stored in \`'\o:...:', and +the new one in \`'\n:....:'. + The selector is outside the \''\ifx' so that the \''\HLet' will + work also on macros restored with \''\HRestore'. + + +\<utilities\><<< +\def\HRestore#1{\relax + \expandafter\ifx + \csname o:\expandafter\:gobble\string#1:\endcsname\relax + \:warning{\string\HRestore\noexpand#1?}% + \else + \expand:after{\let#1|=}\csname o:\expandafter + \:gobble\string#1:\endcsname + \fi}% +>>> + +Don't erase the \`'o:...:', just in case a saving with let +is done before restoring. + + +\<save old def of macro\><<< +\expandafter\let + \csname o:\expandafter\:gobble\string#1:\endcsname|=#1% +>>> + +\<selector between old and new def\><<< +\edef#1{\noexpand\ifx \noexpand\EndPicture\noexpand\:UnDef + \noexpand\expandafter \expandafter\noexpand + \csname n:\expandafter\:gobble\string#1:\endcsname + \noexpand\else \noexpand\expandafter \expandafter\noexpand + \csname o:\expandafter\:gobble\string#1:\endcsname + \noexpand\fi}% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Support for ProTex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<first pass\><<< +\NewConfigure{ProTex}[1]{\def\a:ProTex{#1}} +>>> + + +\<load protex\><<< +\ifx \a:ProTex\:UnDef +\else \input ProTex.4ht \fi +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Support for httex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<temp := auto load Preamble\><<< +|<util for extracting options|> +|<options from /tex4ht|> +\expandafter\expandafter\expandafter + \:temp\csname tex4ht\endcsname |<par del|>% +\ifx \:temp\relax + |<temp := load tex /Preample|> + \if:latex \let\:temp|=\empty \fi +\else + \if:latex + \let\config:file|=\:temp \let\:temp|=\empty + \else + \edef\:temp{\noexpand\input \:temp\space} +\fi \fi +>>> + + +\<extract tex4ht options\><<< +\ifx \:temp\relax + \let\:tempd|=\:temp + \let\:tempc|=\empty \config:opt #1,#2,|<par del|>% +\else \:temp + \let\:tempd|=\:temp + \let\:tempc|=\empty \config:opt #2,|<par del|>% +\fi +\let\config:opt|=\:tempc +\let\:temp|=\:tempd +>>> + +\<util for extracting options\><<< +\def\:tempc#1#2.#3|<par del|>{\edef\:tempa{#3}\edef\:temp{% + #1\ifx \:tempa\empty .cfg\fi}} +\def\config:opt#1,#2|<par del|>{\def\:temp{#1}\ifx \:temp\empty + \else \ifx \:tempc\empty + \def\:tempc{#1}% + \else + \append:def\:tempc{,#1} + \fi\fi + \def\:temp{#2}\ifx \:temp\empty + \else \def\:temp{\config:opt #2|<par del|>}\fi + \:temp} +>>> + + + +\<temp := load tex /Preample\><<< +\ifx \config:opt\:UnDef + \edef\config:opt{\ifx \config:file\empty html\fi}\fi +\def\:temp{\expandafter\expandafter\expandafter + \Preamble\expandafter{\config:opt}\EndPreamble} +>>> + + +\Section{First Pass} + +\<first pass\><<< +\ifx \Log:Needs\:UnDef \else + \:warning{Again `\noexpand\input tex4ht.sty'?}\fi +|<check that TeX4ht is not loaded after protex|> |%still necessary?|% +|<define for /Preamble|> +|<define /Preamble|> +>>> + + + +\<check if latex\><<< +\expandafter\ifx \csname @latex@error\endcsname\relax + \:latexfalse \tracingstats|=1 +\else + \if:latex\else |<usepackage for latex|>\fi + \:latextrue + \ifx \:providesfile \:UnDef + \let\:providesfile\@providesfile + \def\@providesfile#1{% + \expandafter\ifx\csname @filelist\endcsname\relax + \let\@providesfile\:providesfile + \else \xdef\@filelist{\@filelist,#1}% + \fi + \:providesfile{#1}% + } + \fi +\fi +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Start Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<define /Preamble\><<< +\def\:Preamble{\ifx \:next[% + \def\Preamble[##1]##2{\egroup + |</def/Preamble(@@2)|>\input ##1 + } + \else + \def\Preamble##1{\egroup |</def/Preamble(@@1)|>% + \input |<TeX4ht name|>.sty } + \fi \let\:Preamble|=\:UnDef \Preamble } +\def\Preamble{\bgroup \catcode`\@|=12 \catcode`\_|=8 \catcode`\^|=7 + \futurelet\:next\:Preamble} +>>> + + +With the following definitions we can replace +\`'\input tex4ht.sty \Htmltrue .... \Htmlfalse \Preamble{html,...}' +with \`'\input tex4ht.sty \Htmltrue .... \Preamble{...}' +for defining html-enabled code between the \''\input' and the +\''\Preamble'. That is, for using code that employs the +\''\ifHtml' command. + + + +\</def/Preamble(@@1)\><<< +|<def :CheckOption|>% +\ifHtml \Htmlfalse + \def\Preamble{html,##1}\else \def\Preamble{##1}\fi +|<config options for /usepackage and httex|>% +|<extract Hinclude|>% +>>> + +\</def/Preamble(@@2)\><<< +|<def :CheckOption|>% +\ifHtml \Htmlfalse + \def\Preamble{html,##2}\else \def\Preamble{##2}\fi +|<config options for /usepackage and httex|>% +|<extract Hinclude|>% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{End Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<define /Preamble\><<< +\def\EndPreamble{\b:Preamble \global\let\missing:endpream\empty + \csname |<live|>\file:id\endcsname \B:DY} +\def\B:DY{|<html paragraph breaks at entry to file|>% + \HtmlEnv \IgnorePar \IgnoreIndent {\ht:everypar{}\leavevmode}\a:BODY + \csname a:@BODY\endcsname} +\def\missing:endpream{\:warning{Missing \string\EndPreamble}} +>>> + + +\<close html doc\><<< +\missing:endpream +>>> + +\<define /Preamble\><<< +\NewConfigure{@HTML}[1]{\concat:config\a:@HTML{#1}} +\let\a:@HTML|=\empty +>>> + +\<needs preamble\><<< +\:tempb +>>> + + +\<html config util\><<< +\NewConfigure{Preamble}{2} +>>> + + + +\<remove garbage\><<< +\ifHtml \else \let\EndPreamble|=\empty \fi +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Selecting Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<def :CheckOption\><<< +\def\:CheckOption####1{\def\:temp{####1}% + \:Optionfalse + \expandafter\:ScanOptions\Preamble,,//} +\def\:ScanOptions####1,####2//{\def\:next{####1}% + \ifx \:next\empty + \else \ifx \:temp\:next \:Optiontrue \let\:next|=\relax + \else \def\:next{\:ScanOptions####2//}% + \fi \fi \:next } +>>> + + + + + +\<Hinput Configs\><<< +\def\:temp{\def\ifOption##1} +\expandafter\expandafter\expandafter\:temp + \expandafter{\Preamble,,//\if:Option + |<ifOption true|>\else |<ifOption false|>\fi \tmp:toks=} +\pend:defI\ifOption{\def\:temp{##1}\:Optionfalse\:ScanOptions} +>>> + + +\<ifOption false\><<< +\def\:temp{% + \def\:temp{\the\tmp:toks}% + \afterassignment\:temp \tmp:toks=}% +\afterassignment\:temp +>>> + + +\<ifOption true\><<< +\def\:temp{\the\tmp:toks + \def\:temp{\tmp:toks={}}% + \afterassignment\:temp \tmp:toks=}% +\afterassignment\:temp +>>> + + + +The \''\ifOption' is implemented through a token list variable to +allow for nesting in macros and if statements. The older definition +hid the \''\if' under \''\ifOption' and exposed just the +\''\else' and \''\fi'. + + + + +\<new ifs\><<< +\:tempa{if:Option} +>>> + + + +The following code defines \`'\ifOption' just for flags defined in the +comamnd line (that is, flags known the first time tex4ht.sty is +loaded). It doesn't yet see those options introduced by \`'\Preamble' +and the *.4ht files. + + +\<def early latex ifOption\><<< +\ifx \config:opt\:UnDef \else + \ifx\tmp:toks\:UnDeF \csname newtoks\endcsname\tmp:toks\fi + \def\:temp{\def\ifOption##1} + \expandafter\expandafter\expandafter\:temp + \expandafter{\config:opt,,//\if:Option + |<ifOption true|>\else |<ifOption false|>\fi \tmp:toks=} + \pend:defI\ifOption{\def\:temp{##1}\:Optionfalse\:ScanOptions} +\fi +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{LaTeX at First Pass} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<first pass for latex\><<< +\if:latex + |<try taking care of hyperref.sty|> + |<early latex subs/sups|> +\fi +|<block package loading|> +|<xetex active characters|> +|<hook at usepackage|> +>>> + +The following is a temporary patch, waiting fo a fix in hyperref.sty. + + +\<try taking care of hyperref.sty\><<< +\expandafter\def\csname opt@hyperref.sty\endcsname{tex4ht} +>>> + +\<block package loading\><<< +\def\:dontusepackage#1{% + \typeout{tex4ht warning: package #1 was prevented from loading} + \@namedef{ver@#1.sty}{9999/12/31}% + \@namedef{opt@#1.sty}{\:currentoptions} +} +>>> + +Input definitions for Unicode blocks in XeLaTeX. It loads full Latin by +default, others must be activated using \`'xeuniuseblock{blockname}' + +\<xetex active characters\><<< +\ifx\XeTeXversion\@undefined\else +\ifx\xeuniuseblock\@undefined +\input tuenc-xetex-input.4ht +\fi\fi +>>> + +Add support for package commands redefining + +\<hook at usepackage\><<< +\def\:AtEndOfPackage{\expandafter\g@addto@macro\csname pkg:end:hook:\@currname.sty\endcsname} +\def\init:package:hooks#1{\expandafter\def\csname pkg:end:hook:#1\endcsname{}} +\def\package:hooks#1{\csname pkg:end:hook:#1\endcsname} +>>> + +\<hook at usepackage\><<< +\let\:onefilewithoptions\@onefilewithoptions +\def\@onefilewithoptions#1[#2][#3]#4{% +\init:package:hooks{#1.#4}% + \let\:temp\@reset@ptions + \def\@reset@ptions{% + \let\@reset@ptions\:temp + |<cats for usepackage|>\a:usepackage% + \a:usepackage:lthooks{#1}{#4} + |<recall usepackage cats|>}% + \def\:currentoptions{#2} +\:onefilewithoptions#1[#2][#3]{#4}\package:hooks{#1.#4}} +\def\a:usepackage{\input usepackage.4ht } +>>> +\<cats for usepackage\><<< +\edef\TivhTcats{% + \catcode`:=\the\catcode`:% + \catcode`@=\the\catcode`@}% +\catcode`\:=11 \catcode`\@=11 +>>> + +\<recall usepackage cats\><<< +\TivhTcats +>>> + +In October 2020, LaTeX kernel added new hook support. It can be used +for lot of stuff, including execution of code when a package is loaded. +It is more efficient and clean than the current TeX4ht system of package +handling. We can use it to execute code before and after package loading. + +Files that contain code that should be executed before the package is loaded +can be requested using PackageHooks configuration. It needs to be included +in the "add to usepackage" placeholder that is available in tex4ht-4ht.tex. + +Example: + +\Verbatim +\<add to usepackage\><<< +\Configure{PackageHooks}{packagename.sty}{packagename-hooks.4ht} +>>> + +\<packagename-hooks.4ht\><<< +% Some stuff executed before the package is loaded +\:AtEndOfPackage{ + % stuff executed after package is loaded + % macro redefinitions and so on +} +>>> \AddFile{9}{packagename-hooks} + +\EndVerbatim + +\<hook at usepackage\><<< +\NewConfigure{PackageHooks}[2]{\expandafter\def\csname package:hooks:#1\endcsname{\input #2}} +\def\a:usepackage:lthooks#1#2{% + \expandafter\ifcsname package:hooks:#1.#2\endcsname + \csname package:hooks:#1.#2\endcsname + \fi +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Second Pass} +%%%%%%%%%%%%%%%%%%%%%%%%% + + +The definitions of the configurations should be ready before +\''\Hinput' is called for loading their values. The cross references +also need to be resolved at that point (for the TITLE+, and possibly +other usages). + +\<second pass\><<< +|<html option|> |%should be first|% +|<html+nohtml common to TeX4ht and protex|> +|<utilities|> +|<cross references|> +\ifHtml + |<Hinput Configs|> + \Hinput{Preamble} \ht:special{t4ht.\:html} + |<scripting commands|> + |<html Configure's|> + \Hinput{tex4ht} + |<hook on end|> +\fi +|<divisions|> +|<files|> +|<cut points|> +|<imports|> +|<lists|> +|<blocs for tocs|> +\ifHtml + |<halign-based tables|> +\fi +|<streams|> +|<gif|> +|<fonts|> +|<math|> +|<core tex|> +|<at doc start|> |%after Preamble|% +\ifHtml + |<dvi-based hooks|> + |<more html tex|> +\fi +|<local env|> |% after accents, {\vrb:tt\`} in particular|% +\ifx\beginL\@undefined \else + \ifHtml + |<e tex|> + \Hinput{etex4ht} +\fi\fi +|<load sub tex4ht styles|> +|<debug|> +|<remove garbage|> +\ifHtml |<start html doc|> \fi |%should be last|% +>>> + + + +\Section{Copyright Note} + +\input tex4ht-cpright.tex + +\<copyright\><<< +% tex4ht.sty (|version), generated from |jobname.tex +% Copyright 2009-|the|year|empty TeX Users Group +% Copyright |CopyYear.1996. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + + +\Section{Category Codes} + + +\<save cat codes\><<< +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else + \csname :RestoreCatcodes\endcsname \fi + \ifnum \the\catcode`\ =10 \else + \catcode`\noexpand\ =\the\catcode`\ \fi + \ifnum \the\catcode`<=12 \else + \catcode`\noexpand <|=\the\catcode`<\fi + \ifnum \the\catcode`>=12 \else + \catcode`\noexpand >|=\the\catcode`>\fi + \ifnum \the\catcode`\?=12 \else + \catcode`\noexpand \?|=\the\catcode`\?\fi + \ifnum \the\catcode`+=12 \else + \catcode`\noexpand +|=\the\catcode`+\fi + \ifnum \the\catcode`*=12 \else + \catcode`\noexpand *|=\the\catcode`*\fi + \ifnum \the\catcode`;=12 \else + \catcode`\noexpand ;|=\the\catcode`;\fi + \ifnum \the\catcode`~=13 \else + \catcode`\noexpand ~|=\the\catcode`~\fi + \ifnum \the\catcode`$=3 \else + \catcode`\noexpand $|=\the\catcode`$\fi + \ifnum \the\catcode`&=4 \else + \catcode`\noexpand &|=\the\catcode`&\fi + \ifnum \the\catcode`\#=6 \else + \catcode`\noexpand \#|=\the\catcode`\#\fi + \catcode`\noexpand :|=\the\catcode`:% + \catcode`\noexpand "|=\the\catcode`"% + \catcode`\noexpand @|=\the\catcode`@% + \catcode`\noexpand _|=\the\catcode`_% + \catcode`\noexpand ^|=\the\catcode`^% + \catcode`\noexpand |||=\the\catcode`||% + \csname no:restore\endcsname + |<sp and sb for catcode 13|>% + \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|= + \noexpand\UnDefcS} +\catcode`~|=13 \catcode`$|=3 \catcode`&|=4 \catcode`\#|=6 +\catcode`\:|=11 \catcode`\@|=11 \catcode`;|=12 \catcode`\ |=10 +\catcode`\<|=12 \catcode`\>|=12 \catcode`+|=12 \catcode`*|=12 +\catcode`\?|=12 +|<record external sub-sup|> +\catcode`\^|=7 \catcode`\||=12 \catcode`"|=12 +>>> + + + + + + +\Section{Ifs} + + +\<ifs for TeX4ht\><<< + \def\:temp{\csname newif\endcsname} + \def\:tempa#1{% + \expandafter\ifx \csname #1\endcsname\relax + \expandafter\:temp \csname #1\endcsname + \fi} +|<new ifs|> + \def\:tempa#1{% + \expandafter\ifx \csname #1\endcsname\relax + \expandafter\:temp \csname #1\endcsname + \expandafter\expandafter\expandafter\expandafter\expandafter + \def\expandafter\expandafter\expandafter + \rmv:ifs\expandafter{\rmv:ifs + \expandafter\let \csname #1\endcsname |= \:UnDef} + \fi} + \let\rmv:ifs|=\empty +|<temp tex ifs|> +>>> + + +The temporary ifs are needed only for loading time to allow +TeX to scan material that will not be loaded. + + + +\<new ifs\><<< +\:tempa{if:latex} +>>> + +\Section{User File Requests} + +\<TeXivht = user file requests\><<< +\def\:usersty#1,#2|<par del|>{\def\:temp{#1}% + \ifx \:temp\empty \else + \expandafter\ifx \csname #1\endcsname\relax + \expandafter\let \csname #1\endcsname=\empty + \input #1 + \fi + \def\:temp{#2}\expandafter\:temp + \fi} +\edef\TeXivht{\expandafter\ifx \csname TeXivht\endcsname\relax + \else \noexpand\:usersty\TeXivht,|<par del|>\fi + \let\noexpand\TeXivht|=\noexpand\:UnDef + \let\noexpand\:usersty|=\noexpand\:UnDef } +>>> + + + + +\Section{Usepackage Interface for LaTeX} + + +\<usepackage for latex\><<< +\ifx \@currname\empty + |<requires /Preamble.../EndPreamble|> +\else + |<TeX4ht loaded with /usepackage|> +\fi +>>> + +Three ways for loading TeX4ht in LaTeX + +\List{a} +\item With \`'\usepackage{tex4ht}'. + +\Verbatim +\usepackage{tex4ht} +\begin{document} +\EndVerbatim + +It assumes a configuration file named \`latex4ht.cfg'. If none +is offered, the following code is available. + + +\Verbatim +\Preamble{html} + \begin{document} +\EndPreamble +\EndVerbatim + + +\item With \`'\usepackage[file-name]{tex4ht}'. As before, but with a + configuration file \`'file-name', instead of in \`'latex4ht.cfg'. + The extension \`'.cfg' is assumed, if none is provided. + +\item With inline (instead of off-line) configurartion file, e.g., +like \`'\input tex4ht.sty \Preamble{html} + \begin{document} +\EndPreamble' + +\EndList + +The indirection below on \''\enddocument' is needed for AmsTeX; there +the command is defined as outer. + + + +\<TeX4ht loaded with /usepackage\><<< +\ProvidesPackage{tex4ht} +\let\config:file|=\empty +|<options from /usepackage|> +\DeclareOption*{\load:cfg} +\ProcessOptions +\let\o:document|=\document +\def\document{% + |<check irregularities|>% + \ifdefined\AddToHook% + \def\document{\endgroup\o:document}% + % use new LaTeX hook system to execute \Configure{AtBeginDocument} + \AddToHook{begindocument/before}[tex4ht]{\csname a:AtBeginDocument\endcsname} + \AddToHook{begindocument/end}[tex4ht]{\csname b:AtBeginDocument\endcsname} + \else% + %\expandafter\let\csname enddocument\endcsname|=\empty + %\end{document}% + %\let\document|=\o:document + |<protect AtBeginDocument|>% + \let\document\o:document% + \fi% + \let\:latex@error|=\@latex@error + \def\@latex@error##1{\:latex@error{##1 in `\config:file'}}% + |<load latex /Preample|>% + \let\@latex@error|=\:latex@error +} +>>> + +\<check irregularities\><<< +\let\ht:empty|=\:UnDef +\def\:temp{}\ifx \:temp\empty \else + \gdef\:temp{}\ifx \:temp\empty \else + \:warning{Redefined \string\empty?} + \global\let\ht:empty|=\empty \gdef\empty{}% +\fi\fi +>>> + + + + +\<load latex /Preample\><<< +|</document recall sub/sup|>% +\ifx \config:file\empty + \def\:temp{|<default latex cfg file|>}% +\else + \def\:temp{|<user config file|>}% +\fi \:temp +>>> + + + + + + +\<early Configure\><<< +|<concat config|> +\NewConfigure{AtBeginDocument}[2]{% + \def\:temp{#1#2}\ifx \:temp\empty + \concat:config\a:AtBeginDocument{} + \concat:config\b:AtBeginDocument{}% + \else + \concat:config\a:AtBeginDocument{#1\relax}% + \concat:config\b:AtBeginDocument{#2\relax}% + \fi + \global\let\a:AtBeginDocument=\a:AtBeginDocument + \global\let\b:AtBeginDocument=\b:AtBeginDocument +} +\Configure{AtBeginDocument}{}{} +>>> + +\<protect AtBeginDocument\><<< +\let\:begindocumenthook|=\@begindocumenthook +\def\@begindocumenthook{\csname a:AtBeginDocument\endcsname +\:begindocumenthook \csname b:AtBeginDocument\endcsname }% +>>> + + + + +In optional parameters, the first one is assumed to be a +file name. A fake file name should be inserted, when we +want none. + +\<default latex cfg file\><<< +\ifx \config:opt\:UnDef + \edef\config:opt{\ifx \config:file\empty html\fi}\fi +\expandafter\Preamble\expandafter{\config:opt + }\csname begin\endcsname{document}\EndPreamble +>>> + +\''\begin' is defined as outer in texi, hence thr \''\csname'. + +\<default tex cfg file\><<< +\ifx \config:opt\:UnDef + \edef\config:opt{\ifx \config:file\empty html\fi}\fi +\expandafter\Preamble\expandafter{\config:opt + }\EndPreamble +>>> + + +\<user config file\><<< +\input \config:file\relax +>>> + +\<config options for /usepackage and httex\><<< +\ifx \config:opt\:UnDef + \let\:temp|=\Preamble +\else + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\:temp + \expandafter\expandafter\expandafter{% + \expandafter\config:opt\expandafter,\Preamble}% +\fi +\let\Preamble|=\empty +\expandafter\set:Preamble\:temp,|<par del|>% +>>> + + +The following removes duplications in \''\Preamble'. Important, in +particular, when 4ht configuration files are included in the +list of options. + +\<define for /Preamble\><<< +\def\set:Preamble#1,#2|<par del|>{% + \def\:temp{#1}\ifx \:temp\empty \else + \:CheckOption{#1}\if:Option \else + \ifx \Preamble\empty \def\Preamble{#1}% + \else \append:def\Preamble{,#1}% + \fi \fi \fi + \def\:temp{#2}\ifx \:temp\empty \let\set:Preamble|=\:UnDef + \else \expand:after{\set:Preamble#2|<par del|>}\fi +} +>>> + + +\''\ProcessOptions' calls \''\cfg:fl' repeatedly for each option. + +\List{} +\item{Empty, or Cfg File} + +\<options from /usepackage\><<< +\def\load:cfg{|<2nd option|>% + \def\:temp{\expandafter\cfg:fl\CurrentOption.|<par del|>}% + \def\:tempa{html}\ifx \:tempa\CurrentOption \let\:temp|=\load:cfg \fi + \def\:tempa{xhtml}\ifx \:tempa\CurrentOption \let\:temp|=\load:cfg \fi + \def\:tempa{htm}\ifx \:tempa\CurrentOption \let\:temp|=\load:cfg \fi + \def\:tempa{htm3}\ifx \:tempa\CurrentOption \let\:temp|=\load:cfg \fi + \def\:tempa{htm4}\ifx \:tempa\CurrentOption \let\:temp|=\load:cfg \fi + \def\:tempa{htm5}\ifx \:tempa\CurrentOption \let\:temp|=\load:cfg \fi + \:temp +} +\def\cfg:fl#1.#2|<par del|>{\edef\:tempa{#2}\edef\config:file{% + \CurrentOption \ifx \:tempa\empty .cfg\fi}} +>>> + +\<options from /tex4ht\><<< +\def\:temp#1,#2|<par del|>{% + \def\:temp{\:tempc{#1}#1.|<par del|>}% + \def\:tempb{#1}\ifx \:tempb\empty \let\:temp|=\relax \fi + \def\:tempa{html}\ifx \:tempa\:tempb \let\:temp|=\relax \fi + \def\:tempa{xhtml}\ifx\:tempa\:tempb \let\:temp|=\relax \fi + \def\:tempa{htm}\ifx \:tempa\:tempb \let\:temp|=\relax \fi + \def\:tempa{htm3}\ifx \:tempa\:tempb \let\:temp|=\relax \fi + \def\:tempa{htm4}\ifx \:tempa\:tempb \let\:temp|=\relax \fi + \def\:tempa{htm5}\ifx \:tempa\:tempb \let\:temp|=\relax \fi + |<extract tex4ht options|>% +} +>>> + + +\item{First Option for /Preamble} + +\<2nd option\><<< +\def\load:cfg{\let\config:opt|=\CurrentOption + |<options 3...|>}% +>>> + +\item{Non-First Option for /Preamble} + +\<options 3...\><<< +\def\load:cfg{\edef\config:opt{\config:opt,\CurrentOption}}% +>>> + +\EndList + + + +\def\gt:laopt#1,#2|<par del|>{\def\:temp{#1}\ifx \:temp\empty + \else \cfg:fl#1.|<par del|>\fi + \def\:temp{#2}\ifx \:temp\empty \else \let\config:opt|=\:temp \fi} + + + + +The following case arises for loading the +file with the \`'\input tex4ht.sty' command. + +\<requires /Preamble.../EndPreamble\><<< +\def\:temp{\ifx \HCode\:UnDef + \:warning{Missing \string\Preamble...\string\EndPreamble?}\fi} +\edef\:tempa{% + \noexpand\expandafter + \noexpand\expandafter + \noexpand\expandafter + \noexpand \def + \noexpand\expandafter + \noexpand\expandafter + \noexpand\expandafter + \expandafter\noexpand\csname enddocument\endcsname + \noexpand\expandafter + \noexpand\expandafter + \noexpand\expandafter + {\noexpand \expandafter + \noexpand \:temp + \expandafter\noexpand \csname enddocument\endcsname + }% +} \:tempa +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Utilities} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<html utilities\><<< +\csname newskip\endcsname\tmp:dim +>>> + + +\<early utilities\><<< +|<def Configure|> +|<early Configure|> +>>> + + + + +\<utilities\><<< + |<general utilities|> +\ifHtml |<html utilities|> \fi +>>> + +There are files, like mathml.4ht, that need to be loaded piecewise +because the configuration commands might vary during the loading time. +For instance, the \`'\Configure{cases}' uses two parameters in plain +tex, and the go up into four parameters in amstex. + +\<first pass\><<< +\let\:Hincl|=\empty +\def\Hinclude[#1]#2{\xdef\:Hincl{\:Hincl{#1}{#2}}} +>>> + + + +The following extracts \''\Hinclude' frm preamble. For instance, +\''\Preamble{mathml.4ht,foo.4ht,...}' is the same as +\''\Hinclude[*]{mathml.4ht}\Hinclude{foo.4ht}\Preamble{...}'. The +file extensions must be \''.4ht'. + +\<extract Hinclude\><<< +\def\:temp####1.4ht####2|<par del|>{\def\:temp{####2}% + \ifx \:temp\empty + \def\:temp{th4}\ifx \:temp\Preamble \else + \ht:special{t4ht@[}% + \input tex4ht.4ht \ht:special{t4ht@]}% + \fi \fi}% +\expandafter\:temp\Preamble.4ht|<par del|>% +\expandafter\xtrct:hin\Preamble,,|<par del|>% +|<redefine Hinclud|>% +>>> + + + +\<define for /Preamble\><<< +\def\xtrct:hin#1,{\def\:temp{#1}\ifx \:temp\empty + \def\xtrct:hin##1|<par del|>{\let\xtrct:hin|=\:UnDef}\else + \def\:tempa##1.4ht##2|<par del|>{% + \def\:temp{\Hinclude[*]{##1.4ht}}\def\:tempa{##2}}% + \expandafter\:tempa\:temp .4ht|<par del|>% + \ifx \:tempa\empty \else \:temp \fi + \fi \xtrct:hin} +>>> + + +Until \''\Preamble' is encountered, \''\Hinclude' requrests +`vertiv=cal' 4ht files (html4,html0, mathml, unicode,...), during +\''\Preamble' if requests `horizontal' files (latex, plain,etc), and +after the \''\Preamble' it is undefined. + + + +\<redefine Hinclud\><<< +\:Hinclude +>>> + +\<define for /Preamble\><<< +\def\Use:N{0} +\let\:USE|=\empty +\def\:Use#1{\:USe #1,,\HAdvance\Use:N |by 1 } +\def\:USe#1,{\def\:temp{#1}\ifx\:temp\empty + \edef\:temp{\noexpand\append:def\noexpand\:USE{\let\expandafter + \noexpand\csname Use:\Use:N\endcsname\noexpand\:UnDef}}\:temp + \else + \edef\:temp{\noexpand\append:def\noexpand\:USE{\expandafter + \noexpand\csname Use:\Use:N\endcsname}}\:temp + \append:def\:USE{{#1}}% + \expandafter\:USe\fi} +\def\:Hinclude{% + \def\Hinclude{\afterassignment\:Use + \expandafter\def\csname Use:\Use:N\endcsname ####1}% + \def\:Hinclude{\ifx \:USE \empty + \let\Hinclude|=\:UnDef + \let\:Hinclude|=\:UnDef + \let\:Use|=\:UnDef + \let\:USe|=\:UnDef + \let\:USE|=\:UnDef + \else + \pend:def\:USE{\let\:USE|=\empty}% + \expand:after{\:USE \:Hinclude}\fi}% +} +>>> + + + + +Do we want the push/pop below? + + +\<Hinput Configs\><<< +\let\:Hin|=\empty +\def\Hinput#1{\PushStack\:Hinputs\:Hin \def\:Hin{#1}% + \expandafter\:Hinput\:Hincl{}{}\PopStack\:Hinputs\:Hin} +\def\:Hinput#1#2{\def\:temp{#2}\ifx \:temp\empty \else + \let\:temp|=\empty \def\:tempa{*}\def\:tempb{#1}% + \ifx \:tempa\:tempb \def\:temp{\input #2}% + \else \ifx \:Hin\:tempb \def\:temp{\input #2}% + \else \def\:tempb{#1.4ht}\ifx \:Hin\:tempb \def\:temp{\input #2}% + \fi\fi\fi + \expand:after{\:temp + |<system NewConfigure|>\:Hinput}\fi} +>>> + + + + + +\<html utilities\><<< +\def\exit:ifnot#1{% + \edef\:temp{\def\noexpand\:temp####1,\:Hin,####2..//{% + \noexpand\if !####2!\noexpand\else + \noexpand\expandafter\noexpand\:gobble\noexpand\fi + }\noexpand\:temp,#1,\:Hin,..//}\:temp\endinput } +>>> + +\<html utilities\><<< + \catcode`\@|=0 + \catcode`\\|=12 +@def@ConfigureHinput{% + @def@:temp##1{% + @def@:temp{##1}@ifx@:temp@:Hin @else @:tempb @fi }% + @def@:tempb{@fi@bgroup @no:catcodes0{255}{12}% + @no:catcodes{101}{101}{11}% + @no:catcodes{109}{109}{11}% + @no:catcodes{112}{112}{11}% + @no:catcodes{116}{116}{11}% + @no:catcodes{121}{121}{11}% + @:tempa} + @def@:tempa##1\empty\empty\empty\empty\empty\empty{@egroup}% + @:temp +} + @catcode`@\=0 + \catcode`\@=11 +>>> + + + + + +\<early utilities\><<< +\catcode`\#=12 \def\#{#} \catcode`\#=6 +>>> + +The starred command is for immediate expansion + +Can we avoid the following file? + +\<general utilities\><<< +\immediate\openout15=\jobname.tmp +\bgroup \escapechar=`\\ + \immediate\write15{\def\string\Jobname{\jobname}} +\egroup +\immediate\closeout15 +\input \jobname.tmp + +\def\get:input#1{% + \openin15=#1 + \ifeof15 \closein15 \:warning{No file #1}% + \else \closein15 \expand:after{\input #1 }% + \fi} +>>> + + +\<general utilities\><<< +\def\if:notempty#1#2{% + \def\:temp{#1}\ifx \:temp\empty \else \expand:after{#2}\fi } +>>> + + +\Chapter{Configurations} + + +\Section{Contributes} + + +\<early utilitiesNO\><<< +\long\def\Contribute#1#2{% + \expandafter\ifx \csname :#1:\endcsname\relax + \:warning{\string\Contribute{#1}?}\fi + \long\expandafter\def\csname :#1:\endcsname{#2}} +>>> + +\<utilitiesNO\><<< +\long\def\Contribute#1#2{% + \expandafter\ifx \csname :#1:\endcsname\relax + \:warning{\string\Contribute{#1}?}\else + \long\expandafter\def\csname :#1:\endcsname{#2}\fi } +>>> + + +\Section{Configurations} + + +\SubSection{Configure} + + + +The following assumes a definition \`'\Odef\c:#2:[#1]...' + +\<def Configure\><<< +\def\Configure#1{% + \expandafter\ifx \csname c:#1:\endcsname\relax + \:warning{\string\Configure{#1}?} + \fi + \csname c:#1:\endcsname} +\let\c:def|=\def +\let\d:def|=\def +>>> + + + + + + + + + + +\SubSection{NewConfigure} + + + + + + + +\<def Configure\><<< +\def\NewConfigure#1{\def\:tempa{#1}\futurelet\:temp\Nw:cnf} +\def\Nw:cnf{\ifx [\:temp \edef\:tempa{\noexpand\N:wCnfga{\:tempa}}\else + \edef\:tempa{\noexpand\N:wCnfgb{\:tempa}}\fi \:tempa} +\def\N:wCnfga#1[#2]{% + \edef\:temp{|</long/def/c:...:|>}\:temp } +\def\N:wCnfgb#1#2{% + \edef\:temp{|</long/def/c:...:|>{\New:Conf{\aNew:Conf#1}{####1}% + \ifnum #2>1 \New:Conf{\bNew:Conf#1}{####2}\fi + \ifnum #2>2 \New:Conf{\cNew:Conf#1}{####3}\fi + \ifnum #2>3 \New:Conf{\dNew:Conf#1}{####4}\fi + \ifnum #2>4 \New:Conf{\eNew:Conf#1}{####5}\fi + \ifnum #2>5 \New:Conf{\fNew:Conf#1}{####6}\fi + \ifnum #2>6 \New:Conf{\gNew:Conf#1}{####7}\fi + \ifnum #2>7 \New:Conf{\hNew:Conf#1}{####8}\fi + \ifnum #2>8 \New:Conf{\iNew:Conf#1}{####9}\fi + }}\:temp} +>>> + +\</long/def/c:...:\><<< +\long\def\expandafter + \noexpand\csname c:#1:\endcsname####1% + \ifnum #2>1 ####2\fi \ifnum #2>2 ####3\fi + \ifnum #2>3 ####4\fi \ifnum #2>4 ####5\fi + \ifnum #2>5 ####6\fi \ifnum #2>6 ####7\fi + \ifnum #2>7 ####8\fi \ifnum #2>8 ####9\fi +>>> + + + + + +\<def Configure\><<< +\def\New:Conf#1{\noexpand\c:def + \expandafter\noexpand\csname#1\endcsname}% +\def\c:NewConfigure:#1#2#3#4#5#6#7#8#9{% + \def\aNew:Conf{#1}\def\bNew:Conf{#2}\def\cNew:Conf{#3}% + \def\dNew:Conf{#4}\def\eNew:Conf{#5}\def\fNew:Conf{#6}% + \def\gNew:Conf{#7}\def\hNew:Conf{#8}\def\iNew:Conf{#9}} +|<system NewConfigure|> +>>> + + +After each loading of the vertical 4ht files, the coefficients +of newconfigure assume their initial definitions. + +\<system NewConfigure\><<< +\Configure{NewConfigure}{a:}{b:}{c:}{d:}{e:}{f:}{g:}{h:}{i:}% +>>> + + + +\Section{Tracing Configurations} + + + +See also LaTeX part + + +\<trace configurations\><<< +\:CheckOption{hooks++} \if:Option + |<trace+ comamnds|> + \def\edit:p#1#2{\let#2|=\empty \:gobble}% +\else \:CheckOption{hooks+} \if:Option + \def\trc:wrt{\writesixteen} + \else \:CheckOption{hooks} \if:Option + \let\trc:wrt|=\:gobble + \fi\fi + \if:Option + |<trace commands|> + \let\edit:p|=\empty +\fi \fi +\if:Option + |<trace and trace+|> + \NewConfigure{hooks}[4]{\def\a:trc{#1}\def\b:trc{#2}% + \def\c:trc{#3}\def\d:trc{#4}% + \ifx \a:trc\empty \def\a:trc##1\b:trc{\b:trc}\fi + \ifx \c:trc\empty \def\c:trc##1\d:trc{\d:trc}\fi + } + \def\d:def{\advance\tmp:cnt |by1\def} + \Configure{hooks}{}{}{}{} +\else + \let\c:hooks:|=\:gobbleIV + |<no trace and trace+|> +\fi +>>> + +\<trace+ comamnds\><<< + \pend:defI\Configure{\tmp:cnt|=0 + \long\def\c:def####1####2{\advance\tmp:cnt |by1 + |<tempb = number of parameters|> + \def####1{####2}% + \edef\:temp{\noexpand\pend:def\noexpand####1{\noexpand\ifx + \noexpand\EndPicture\noexpand\:UnDef \hbox{\noexpand\a:trc + ##1\the\tmp:cnt :\:tempb\noexpand\b:trc}\noexpand\fi}}\:temp + \edef\:temp{\noexpand\append:def\noexpand####1{\noexpand\ifx + \noexpand\EndPicture\noexpand\:UnDef\hbox{\noexpand\c:trc + ##1\the\tmp:cnt :\:tempb\noexpand\d:trc}\noexpand\fi}}\:temp + }} +>>> + + +\<trace commands\><<< +\pend:defI\Configure{\tmp:cnt|=0 + \long\def\c:def####1####2{\advance\tmp:cnt |by1 + |<tempb = number of parameters|> + \def####1{####2}% + \ifx ####1\empty + \edef\:temp{\noexpand\pend:def\noexpand####1{\hbox{\noexpand + \a:trc ##1\the\tmp:cnt :\:tempb\noexpand\b:trc}}}\:temp + \edef\:temp{\noexpand\append:def\noexpand####1{\hbox{\noexpand + \c:trc ##1\the\tmp:cnt :\:tempb\noexpand\d:trc}}}\:temp + \else + \trc:wrt{...##1\the\tmp:cnt....\meaning####1}% + \fi +}} +>>> + +\<trace and trace+\><<< +\edef\:tempb{\def\noexpand + \par:N##1\string :##2->##3////{\noexpand\par:NN?##2//}} +\:tempb +\def\par:NN#1#2//{\def\:tempb{#2}\ifx\:tempb\empty + \def\:tempb{#1}\else \def\:tempb{\par:NN#2//}\expandafter\:tempb\fi} +>>> + +\<tempb = number of parameters\><<< +\edef\:tempb{\expandafter \meaning\csname c:##1:\endcsname}% +\expandafter\par:N \:tempb////% +>>> + + + + + +\Section{Editing and Xml} + + + + + +Note that \`'edit' is not the option \`'tty'! + + + +\<trace configurations\><<< +\def\Tg<#1>{% + \expandafter\ifx + \csname\try:tagend <#1</|<par del|>\endcsname\is:empty + \:tagend#1|<par del|>\else + \expandafter\ifx + \csname\try:tagempty #1>/>|<par del|>\endcsname\is:empty + \:tag{#1}\else \:tagempty #1>\fi\fi} +\def\try:tagend#1</#2|<par del|>{#1is:empty} +\def\try:tagempty#1/>#2|<par del|>{#2is:empty} +\def\is:empty{\empty\empty} +\:CheckOption{edit} \if:Option + |<tg and TG|> + |<edit* option|> +\else + |<no-edit tg and TG|> + \:CheckOption{verify}\if:Option\else \:CheckOption{verify+}\fi + \if:Option + |<edit- code|> + \else + |<no-edit option|> + \fi +\fi +>>> + +The \''\tg' is also part of mex. + +\<tg and TG\><<< +% \def\tg<#1>{\c:edit#1\d:edit} +\def\TG<#1>{\a:edit#1\b:edit} +>>> + +\<no-edit tg and TG\><<< +% \def\tg<#1>{<#1>} +\def\TG<#1>{\HCode{<#1>}} +>>> + + + +The \`'edit+' is a pseudo-browser mode showing a possible +view of the code. + +\<no-edit option\><<< +\def\:tag#1{\hbox{\HCode{<#1>}}} +\def\:tagend#1#2|<par del|>{\hbox{\HCode{</#2>}}} +\def\:tagempty#1/>{\hbox{\HCode{<#1/>}}} +\expandafter\def\csname c:<:\endcsname#1>{\:gobbleII} +>>> + + +The \`'\hbox' above is to avoid creating extra paragraphs with +extra tags, which can also introduce extra paragraph ends. + +The definiions of \''\c:<...>:' are broken into two parts +to avoid the spaces after the closing angular bracket \''>'. + +\<edit+ option\><<< +\def\tag:of#1 #2|<par del|>{#1} +\def\pl:s{+} +\def\:tag#1{\VerifyOpen{#1}\expandafter\ifx + \csname A:\tag:of#1 |<par del|>\endcsname\pl:s\else + \hbox{\a:edit\HCode{#1}\b:edit}% + \fi \csname B:\tag:of#1 |<par del|>\endcsname + } +\def\:tagend#1#2|<par del|>{\VerifyClose{#2}\expandafter\ifx + \csname A:/\tag:of#2 |<par del|>\endcsname\pl:s\else + \hbox{\a:edit\HCode{/#2}\b:edit}% + \fi \csname B:/\tag:of#2 |<par del|>\endcsname + } +\def\:tagempty#1/>{\VerifyEmpty{#1}\expandafter\ifx + \csname A:\tag:of#1 |<par del|>/\endcsname\pl:s\else + \hbox{\a:edit\HCode{#1/}\b:edit}% + \fi \csname B:\tag:of#1 |<par del|>/\endcsname + } +\expandafter\def\csname c:<:\endcsname#1>{\edef\:temp{#1}\:gat} +\long\def\:gat#1#2{\expandafter + \def\csname A:\:temp\endcsname{#1}% + \expandafter\def\csname B:\:temp\endcsname{#2}} +\NewConfigure{edit}{4} +\Configure{edit}{\HCode{<strong class="edit"><}} + {\HCode{></strong>}} +>>> + + +\<edit option\><<< +\def\tag:of#1 #2|<par del|>{#1} +\def\:tag#1{\csname A:\tag:of#1 |<par del|>\endcsname + \VerifyOpen{#1}\a:edit\HCode{#1}\b:edit + \csname B:\tag:of#1 |<par del|>\endcsname + } +\def\:tagend#1#2|<par del|>{\csname A:/\tag:of#2 |<par del|>\endcsname + \VerifyClose{#2}\a:edit\HCode{/#2}\b:edit + \csname B:/\tag:of#2 |<par del|>\endcsname + } +\def\:tagempty#1/>{\csname A:\tag:of#1 |<par del|>/\endcsname + \VerifyEmpty{#1}\a:edit\HCode{#1/}\b:edit + \csname B:\tag:of#1 |<par del|>/\endcsname + } +\expandafter\def\csname c:<:\endcsname#1>{\edef\:temp{#1}\:gat} +\long\def\:gat#1#2{\expandafter + \def\csname A:\:temp\endcsname{#1}% + \expandafter\def\csname B:\:temp\endcsname{#2}} +\NewConfigure{edit}{4} +\Configure{edit}{\HCode{<strong><}}{\HCode{></strong>}} + {<strong><}{></strong>} +>>> + +\<edit- code\><<< +\def\:tag#1{\VerifyOpen{#1}\hbox{\HCode{<#1>}}} +\def\:tagend#1#2|<par del|>{\VerifyClose{#2}\hbox{\HCode{</#2>}}} +\def\:tagempty#1/>{\VerifyEmpty{#1}\hbox{\HCode{<#1/>}}} +\expandafter\def\csname c:<:\endcsname#1>{\:gobbleII} +>>> + + +The \`'\hbox' above is to avoid creating extra paragraphs with +extra tags, which can also introduce extra paragraph ends. + + + + +\<edit* option\><<< +\def\tag:of#1 #2|<par del|>{#1} +\def\mn:s{-} +\def\:tag#1{\VerifyOpen{#1}\expandafter\ifx + \csname A:\tag:of#1 |<par del|>\endcsname\mn:s\else + \csname A:\tag:of#1 |<par del|>\endcsname + \hbox{\a:edit\HCode{#1}\b:edit}% + \fi \csname B:\tag:of#1 |<par del|>\endcsname + } +\def\:tagend#1#2|<par del|>{\VerifyClose{#2}\expandafter\ifx + \csname A:/\tag:of#2 |<par del|>\endcsname\mn:s\else + \csname A:/\tag:of#2 |<par del|>\endcsname + \hbox{\a:edit\HCode{/#2}\b:edit}% + \fi \csname B:/\tag:of#2 |<par del|>\endcsname + } +\def\:tagempty#1/>{\VerifyEmpty{#1}\expandafter\ifx + \csname A:\tag:of#1 |<par del|>/\endcsname\mn:s\else + \csname A:\tag:of#1 |<par del|>/\endcsname + \hbox{\a:edit\HCode{#1/}\b:edit}% + \fi \csname B:\tag:of#1 |<par del|>/\endcsname + } +\expandafter\def\csname c:<:\endcsname#1>{\edef\:temp{#1}\:gat} +\long\def\:gat#1#2{\expandafter + \def\csname A:\:temp\endcsname{#1}% + \expandafter\def\csname B:\:temp\endcsname{#2}} +\NewConfigure{edit}{4} +>>> + + +\Section{Logical commands} + +\<html Configure's\><<< +\def\InsertTagStart#1#2{% + \edef\local:properties{\ifx\relax#2\relax\else\space#2\fi} + \HCode{<\get:tag{#1}\get:block:properties{#1}\local:properties>}% +} +\def\InsertTagEnd#1{\HCode{</\get:tag{#1}>}} + +\long\def\InlineElementStart#1#2{\InsertTagStart{#1}{#2}} +\long\def\InlineElementEnd#1{\InsertTagEnd{#1}} + +\long\def\BlockElementStart#1#2{\ifvmode\IgnorePar\fi\EndP\InsertTagStart{#1}{#2}} +\long\def\BlockElementEnd#1{\ifvmode\IgnorePar\fi\EndP\InsertTagEnd{#1}} + +% define default values for a new logical block +\def\NewLogicalBlock#1{% + \SetTag{#1}{span}% + \expandafter\def\csname #1:properties\endcsname{} +} + +\def\SetTag#1#2{\expandafter\xdef\csname #1:tagname\endcsname{#2}} +\def\get:tag#1{\expandafter\expandafter\csname #1:tagname\endcsname} + +\def\SetBlockProperty#1#2#3{% + \expandafter\ifcsname #1:property:#2\endcsname\else% + \expandafter\edef\csname #1:properties\endcsname{\csname #1:properties\endcsname\space\csname #1:property:#2\endcsname } + \fi% + \expandafter\def\csname #1:property:#2\endcsname{#2="#3"} +} + +\def\get:block:properties#1{% +\expandafter\csname #1:properties\endcsname% +} + +>>> + +\Section{Verify Elements} + +\<html Configure's\><<< +\:CheckOption{verify} \if:Option + |<chk no trace|> +\else \:CheckOption{verify+} \if:Option + |<chk trace|> +\fi \fi +\if:Option + |<check utilities|> +\else + \let\VerifyOpen|=\:gobble + \let\VerifyClose|=\:gobble + \let\VerifyEmpty|=\:gobble + \long\def\Verify#1\EndVerify{} + \def\trace:chk#1 #2|<par del|>{} +\fi +>>> + +\<chk no trace\><<< +\let\:chk:trc|=\:gobble +>>> + +\<chk trace\><<< +\def\:chk:trc#1{% + \writesixteen{\the\inputlineno\space(\:ChkLevel) #1}} +>>> + +The \`'\PushStack\:CHK\empty' is needed because whenever a pop occurs, +we temporarily take one more pop to check who was the old parent. + +\<check utilities\><<< +\HAssign\:ChkLevel|=0 +\let\:CurrentChk|=\empty +\PushStack\:CHK\empty +\def\VerifyOpen#1{\Protect\trace:chk#1 |<par del|>} +\def\trace:chk#1 #2|<par del|>{% + \gHAdvance\:ChkLevel |by 1 \:chk:trc{Open......#1}% + \expandafter\ifx \csname #1Level:\endcsname\relax + \expandafter\gHAssign\csname #1Level:\endcsname|=0 + \fi + \expandafter\gHAdvance\csname #1Level:\endcsname |by 1 + \PushStack\:CHK{#1}% + \expandafter\ifx \csname \:CurrentChk +#1\endcsname\relax + \expandafter\gdef \csname \:CurrentChk +#1\endcsname{}% + \writesixteen{\the\inputlineno. + --- warning --- \:CurrentChk\space --> #1 ?}% + \fi + \xdef\:CurrentChk{#1}% +} +\def\VerifyClose#1{\Protect\trace:endchk#1 |<par del|>} +\def\trace:endchk#1 #2|<par del|>{% + \:chk:trc{Close......#1}% + \expandafter\ifx \csname #1Level:\endcsname\relax + \writesixteen{\the\inputlineno. + --- warning --- </#1> witout <#1>}% + \expandafter\gHAssign\csname #1Level:\endcsname|=0 + \else + \expandafter\gHAdvance\csname #1Level:\endcsname |by -1 + \gHAdvance\:ChkLevel |by -1 + \PopStack\:CHK\:temp + \edef\:tempa{#1}% + \ifx \:temp\:tempa + \PopStack\:CHK\:CurrentChk + \PushStack\:CHK\:CurrentChk + \else + \writesixteen{\the\inputlineno. + --- warning --- </\:temp> instead of </#1>}% + \fi + \fi +} +\def\VerifyEmpty#1{\Protect\trace:emptychk#1 |<par del|>} +\def\trace:emptychk#1 #2|<par del|>{% + \:chk:trc{Empty......#1}% + \expandafter \ifx \csname \:CurrentChk +#1\endcsname\relax + \expandafter\gdef \csname \:CurrentChk +#1\endcsname{}% + \writesixteen{\the\inputlineno. + --- warning --- \:CurrentChk\space --> #1 ?}% + \fi +} +\begingroup + \catcode`\^|=7 + \gdef\Verify{\bgroup \catcode`\ |=9 \catcode`\^^M|=9 \:dtd} +\endgroup +\def\:dtd#1\EndVerify{\egroup\dtd:rule#1,-->,} +\def\dtd:rule#1-->#2,{\def\:temp{#1#2}\ifx \:temp\empty\else + \expandafter\gdef \csname #1+#2\endcsname{}% + \expandafter\dtd:rule + \fi} +>>> + + +\Chapter{Html Environment} + +\Section{Initiating} + + +The \`'\special{t4ht.\:html}' gives the extension to the root file. To +be recognized, Must appear before the openning of any file, and +outputing of any content. + +\<html option\><<< +\def\:tempa#1#2#3#4|<par del|>{#1#2#3} +\:CheckOption{htm} \if:Option + \edef\:html{\expandafter\:tempa\:html\empty\empty|<par del|>} + |<base 2 names for htm|> +\else \:CheckOption{htm5} \if:Option + \edef\:html{\expandafter\:tempa\:html\empty\empty|<par del|>} + |<base 5 names for htm|> +\else \:CheckOption{htm4} \if:Option + \edef\:html{\expandafter\:tempa\:html\empty\empty|<par del|>} + |<base 4 names for htm|> +\else \:CheckOption{htm3} \if:Option + \edef\:html{\expandafter\:tempa\:html\empty\empty|<par del|>} + |<base 3 names for htm|> +\else \:CheckOption{xhtml} \if:Option + \let\j:bname|=\jobname +\else \:CheckOption{html} + \if:Option \let\j:bname|=\jobname \fi +\fi \fi \fi \fi \fi +\if:Option + |% \ht:special{t4ht.\:html} |% + |<default html env|> + |<disregard html:par from protex|> + |<html TeX4ht protex|> +\fi +>>> + + + +\<first pass\><<< +\NewConfigure{ext}[1]{% + \def\:temp##1ext=##2,##3|<par del|>{% + \if !##2!\edef\:html{#1}% + \else \edef\:html{##2}\fi}% + \expandafter\:temp\Preamble ,ext=,|<par del|> +} +\Configure{ext}{html} +>>> + +\<base 2 names for htm\><<< +\def\:temp#1#2#3|<par del|>{\def\j:bname{#1\ifx ?#2\else #2\fi}} +\expandafter\:temp \jobname ?|<par del|> +>>> + +\<base 3 names for htm\><<< +\def\:temp#1#2#3#4|<par del|>{\def\j:bname{#1\ifx ?#2\else + #2\ifx ?#3\else #3\fi\fi}} +\expandafter\:temp \jobname ??|<par del|> +>>> + +\<base 4 names for htm\><<< +\def\:temp#1#2#3#4#5|<par del|>{\def\j:bname{#1\ifx ?#2\else + #2\ifx ?#3\else #3\ifx ?#4\else #4\fi\fi\fi}} +\expandafter\:temp \jobname ???|<par del|> +>>> + + +\<base 5 names for htm\><<< +\def\:temp#1#2#3#4#5#6|<par del|>{\def\j:bname{#1\ifx ?#2\else + #2\ifx ?#3\else #3\ifx ?#4\else #4\ifx ?#5\else #5\fi\fi\fi\fi}} +\expandafter\:temp \jobname ????|<par del|> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{\TeX{} Parameters} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\`'\html:rightskip' is already defined in AlProTex, but we need it early here. + +\<def /HtmlEnv\><<< +\def\html:rightskip{\rightskip|=\z@ plus 0.5\hsize minus0.5\hsize } +\def\HtmlEnv{% + \html:rightskip |<html penalties|>% + \def\magnification{% + \def\:temp{\:warning{Insert \string\magnification + =\the\tmp:cnt\space before tex4ht}}% + \afterassignment\:temp\tmp:cnt}% + \ht:everypar{\HtmlPar}} +\let\HtmlPar|=\empty +>>> + + + +The \''\output' variable might hold a script +with +a \''\par', as is the case in LaTeX. + +\<def /HtmlEnv\><<< +\edef\:temp{% + \output={\noexpand\SaveEverypar \noexpand\ht:everypar{}\the\output + \noexpand\RecallEverypar}} +\:temp +>>>> + + + + +% \let\HtmlENV|=\:gobble + +Inhibit streching and shrinking of spaces between words to help tex4ht, +and let flexibility in line length to compensate for fixed spaces and +discouraged word breaks. + +\<html penalties\><<< +\frenchspacing |%no extra space after punctuation marks|% +\let\nonfrenchspacing|=\relax +\spaceskip|=\z@ |%override inter word glue|% +\xspaceskip|=\z@ |%same but for words ending with punctuation marks|% +\linepenalty|=0 |%charged on each line break|% +\adjdemerits|=0 |%charged on adj lines of diff length|% +\pretolerance|=10000 |%max penalty pts per line without hyphenation|% +\hyphenpenalty|=10000 |%for line break within word|% +\exhyphenpenalty|=10000|%for line break after hyphen|% +\clubpenalty|=0 |%for page break after first line of parag|% +\widowpenalty|=0 |%for page break before last line of parag|% +\interlinepenalty|=50 |%for page break within a paragraph|% +\displaywidowpenalty|=0 +\predisplaypenalty|=-10 +\postdisplaypenalty|=1000 +\abovedisplayskip|=30pt plus 10pt +\belowdisplayskip|=\abovedisplayskip +\abovedisplayshortskip|=\abovedisplayskip +\belowdisplayshortskip|=\abovedisplayskip +>>> + +We don't want a page break after a display, because the +\''\aftergroup' material for the equation may be detached from the +equation. A possible prolem for math into figures. + + +\<default html env\><<< +|<def /HtmlEnv|> +\edef\:temp{\meaning\everypar} +\edef\:tempa{\string\everypar} +\ifx \:temp\:tempa + \let\ht:everypar|=\everypar +\else + % LaTeX kernel will patch \everypar in future releases, + % so this test will always fail. We should define \ht:everypar + % anyway, paragraph handling would fail otherwise + \let\ht:everypar|=\everypar + \:warning{nonprimitive \string\everypar} +\fi +\edef\NoHtmlEnv{% + \sfcode `\noexpand\noexpand\noexpand\.3000 |%nonfrenchspacing|% + \sfcode `\noexpand\noexpand\noexpand\?3000 + \sfcode `\noexpand\noexpand\noexpand\!3000 + \sfcode `\noexpand\noexpand\noexpand\:2000 + \sfcode `\noexpand\noexpand\noexpand\;1500 + \sfcode `\noexpand\noexpand\noexpand\,1250 + \rightskip|=\the\rightskip + \spaceskip|=\the\spaceskip + \xspaceskip|=\the\xspaceskip + \linepenalty|=\the\linepenalty + \adjdemerits|=\the\adjdemerits + \pretolerance|=\the\pretolerance + \hyphenpenalty|=\the\hyphenpenalty + \exhyphenpenalty|=\the\exhyphenpenalty + \clubpenalty|=\the\clubpenalty + \widowpenalty|=\the\widowpenalty + \interlinepenalty|=\the\interlinepenalty + \displaywidowpenalty|=\the\displaywidowpenalty + \predisplaypenalty|=\the\predisplaypenalty + \postdisplaypenalty|=\the\postdisplaypenalty + \abovedisplayskip|=\the\abovedisplayskip + \belowdisplayskip|=\the\belowdisplayskip + \abovedisplayshortskip|=\the\abovedisplayshortskip + \belowdisplayshortskip|=\the\belowdisplayshortskip + \noexpand\ht:everypar{\noexpand\the\noexpand\ht:everypar}} +>>> + + +\<activate html env\><<< +\edef\NoHtmlEnv{\NoHtmlEnv}% +\append:def\NoHtmlEnv{\SUBOff \SUPOff}\HtmlEnv +>>> + +\<html utilities\><<< +\let\:noindent|=\noindent +\def\noindent{\ifx \EndPicture\:UnDef + \ifvmode \IgnoreIndent\leavevmode\fi + \else \:noindent \fi} +>>> + +\Section{Paragraphs} + +We want to push specials at start of lines, and merge the space before +and after specials. + +\<html utilities\><<< +\let\skip:Par|=\empty +>>> + + + + +\<html paragraph breaks at entry to file\><<< +\def\HtmlPar{\HtmlPar:Off{% + \if:nopar \ShowPar \ShowIndent + \ifx \skip:Par\empty\else \hskip -\parindent \skip:Par\fi + \else + \if:removeindent \ShowIndent \hskip -\parindent \a:Par + \else + \ifdim \parindent>\z@ \hskip -\parindent \fi + \html:par + \ifdim \parindent>\z@ \hskip \parindent \fi + \fi\fi \relax +}}% +>>> + + +\<general utilities\><<< +\def\IgnorePar{\ifx \EndPicture\:UnDef \Protect\gl:nopartrue \fi} +\def\ShowPar{\ifx \EndPicture\:UnDef \Protect\gl:noparfalse \fi} +\def\IgnoreIndent{\ifx \EndPicture\:UnDef + \Protect\gl:removeindenttrue \fi} +\def\ShowIndent{\ifx \EndPicture\:UnDef + \Protect\gl:removeindentfalse \fi} +\def\gl:nopartrue{\global\:nopartrue} +\def\gl:noparfalse{\global\:noparfalse} +\def\gl:removeindenttrue{\global\:removeindenttrue} +\def\gl:removeindentfalse{\global\:removeindentfalse} +\def\HtmlParOff{\global\let\HtmlPar:Off|=\:gobble} +\def\HtmlParOn{\gdef\HtmlPar:Off##1{##1}} +\HtmlParOn +>>> + + + + + +\<new ifs\><<< +\:tempa{if:removeindent} +\:tempa{if:nopar} +>>> + + + + +\<first pass\><<< +\def\c:HtmlPar:#1#2#3#4{% + \def\:temp{#3}\ifx \:temp\empty \c:def\a:Par{#1}\else + \c:def\a:Par{#1\Next:EndP{#3}}\fi + \def\:temp{#4}\ifx \:temp\empty \c:def\html:par{#2}\else + \c:def\html:par{#2\Next:EndP{#4}}\fi +} +\def\EndP{\Protect\par:end} +\let\par:end|=\empty +\def\Next:EndP{\Protect\next:endp} +\def\next:endp#1{\gdef\par:end{#1\global\let\par:end|=\empty}} +\def\SaveHtmlPar{\PushMacro\a:Par \PushMacro\html:par} +\def\RecallHtmlPar{\PopMacro\a:Par \PopMacro\html:par} +>>> + + +The following is neded for debugging, to detect skipped paragraps. +Delete it, or just make it active for debugging mode!!!!! + + +\<shared config\><<< +\NewConfigure{HtmlPar*}[2]{% + \def\:temp{#2}\ifx \:temp\empty \c:def\skip:Par{#1}\else + \c:def\skip:Par{#1\Next:EndP{#2}}\fi} +>>> + +\<first pass\><<< +\def\gl:let{\global\let} +\def\EndP:cnt{0} +\def\SaveEndP{% + \expandafter\gl:let\csname \EndP:cnt :sv\endcsname |=\par:end + \gl:let\par:end|=\empty + \gHAdvance \EndP:cnt |by 1 } +\def\RecallEndP{% + \ifnum \EndP:cnt>0 + \gHAdvance \EndP:cnt |by -1 + \expand:after{\gl:let\par:end|=}\csname\EndP:cnt :sv\endcsname + \else + \:warning{extra \string\RecallEndP} + \fi} +>>> + +\<disregard html:par from protex\><<< +\ifx \html:par\:UnDef \let\html:par|=\empty \fi +>>> + +User's input, and the following in case of no such input, +determine how files will initially treat paragraphs. + + + + + + +Display math formulas can be in-line or between paragraph. +The ``.nopar'' is for forced paragraph starts after the +end of in-line display paragraphs. HTML 4.0 requires opening +of such paragraphs. + + + +\<html paragraph breaks at entry to fileNO\><<< +\Configure{HtmlPar}{\sva:Par}{\svhtml:par} {}{} +>>> + + + + +\<empty html paragraph breaks\><<< +\Configure{HtmlPar}{}{}{}{}% +>>> + + + + + +\<general utilities\><<< +\def\SaveEverypar{% + \expandafter\ifx\csname ht:everypar\endcsname\relax + \expand:after{\expandafter\gdef\csname \n:list L\endcsname }% + \expandafter{\expandafter\everypar + \expandafter{\the\everypar}}% + \else + \expand:after{\expandafter\gdef\csname \n:list L\endcsname }% + \expandafter{\expandafter\ht:everypar + \expandafter{\the\ht:everypar}}% + \fi + \expandafter\xdef\csname \n:list X\endcsname{% + \if:removeindent \global\noexpand\:removeindenttrue + \else \global\noexpand\:removeindentfalse \fi + \if:nopar \global\noexpand\:nopartrue + \else \global\noexpand\:noparfalse \fi}% + \HtmlEnv \csname \n:list X\endcsname + \csname \n:list L\endcsname + \gHAdvance\n:list |by 1 +} +\def\RecallEverypar{\ifnum \n:list<1 + \:warning{\noexpand\RecallEverypar without \noexpand\SaveEverypar}% + \else + \HtmlEnv + \gHAdvance\n:list |by -1 + \csname \n:list X\endcsname + \csname \n:list L\endcsname + \fi +} +\def\n:list{0} +>>> + + + + + +\Chapter{Cross References} + + +Should be consistent with the corresponding features in ProTeX. + + +\<cross references\><<< +|<common cross references|> +\ifHtml |<html cross references|> +\fi +>>> + +\Section{The Commands} + +\SubSection{Ref} + +The implementations of \''\Ref' and \''\Tag' view the crosswords $\alpha$ as +pointers to macros that carry the names `\''\cw:'$\alpha$'. + +\<common cross references\><<< +\def\Ref#1{\expandafter\ifx + \csname |<tag of Tag|>#1\endcsname \relax \:NoTag{#1}% + \else \csname |<tag of Tag|>#1\endcsname \fi} +>>> + + +\<general utilities\><<< +\def\ifTag#1#2#3{\expandafter\ifx + \csname |<tag of Tag|>#1\endcsname \relax #3\else #2\fi} +>>> + + + + + + + +\SubSection{LikeRef} + +The \`'\:LikeRef' command is a stripped down version of +\`'\Ref'; it doesn't check whether the tag is defined. + +The space in \`'\space' is needed for carrying MAME tags +in (mosaic) html files. + +\<common cross references\><<< +\def\LikeRef#1{\expandafter\ifx + \csname |<tag of Tag|>#1\endcsname \relax \space% + \else \csname |<tag of Tag|>#1\endcsname \fi} +\def\:LikeRef#1{\csname |<tag of Tag|>#1\endcsname} +>>> + + +Read file from previous compilation. + + + + +\SubSection{Tag} + +A command \''\Tag{'$\alpha$\''}{'$\beta$\''}' introduces into the +reference file a record + of the form +\''\:CrossWord{'$\alpha$\''}{'$\hat\beta$\''}{'$i$\''}'. + + +\<common cross references\><<< +\let\:SUPOff|=\empty \let\:SUBOff|=\empty +\def\Tag#1#2{\begingroup \:SUPOff \:SUBOff \a:xref \escapechar=`\\% + \edef\:head{\string\:CrossWord{#1}{#2}}% + \expandafter \expandafter \expandafter + \:writeref\expandafter{\:head{\folio}\prcnt:ch}% +\endgroup} +\NewConfigure{xref}{1} +>>> + +The \''\:SUBSUPOff' will be redefined latter with subscripts and +superscripts. The current definition is sufficient for the +tags that in the meantime are created by the system. + + +\<common cross references\><<< +\def\:writeref{\write\:refout}% +>>> + +\<general utilities\><<< +\catcode`\%|=12 \def\prcnt:ch{%} \catcode`\%|=14 +>>> + +\<html utilities\><<< +\catcode`\%|=12 \def\%{%} \catcode`\%|=14 +>>> + +\Section{Internal References} + + + +\SubSection{Loading} + +\<common cross references\><<< +\def\load:ref#1{% + |<set catcodes for info in ref file|>% + \get:input{#1}% + \re:call \let\:CrossWord|=\sv:crs } +|<interpretation for entries in ref file|> +\ifx \:refout\:UnDef + |<check the existence of jobname.xref|> + \load:ref{\jobname.xref} + \csname newwrite\endcsname\:refout + |<if latex then latex/write sol|>\openout\:refout=\jobname.xref +\fi +>>> + +\<check the existence of jobname.xref\><<< +\openin15=\jobname.xref +\ifeof15 \def\:NoTag#1{\hbox{$???$}} +\else \def\:NoTag#1{\hbox{$???$} + \:warning{\string\Ref\string{\string#1\string}?}} + |<warnings for missing /Link|> +\fi +\closein15 +>>> + + + + + + +\<set catcodes for info in ref file\><<< +\edef\re:call{\catcode`\noexpand\:|=\the\catcode`\: }% +\catcode`\:|=11 +\let\sv:crs|=\:CrossWord +\def\:CrossWord{\bgroup + \no:catcodes{128}{255}{12}% + \catcode`\:|=12 \catcode`\@|=11 + \catcode`\^^M|=11 \:CrsWrd}% +\def\:CrsWrd##1##2##3{\egroup \sv:crs{##1}{##2}{##3}}% +>>> + +Aborted compilations tend to leave incimplete \`':CrossWord' commands +in the xref file, missing the last page-number parameter. The +\`'\catcode`\^^M=11' allows such commands to be loaded without +terminating the compilation. + +\Section{External References} + +References to information in other files can be achieved with +the following file-loading command +\`'\LoadRef-[prefix]+{filename.ext}{...}'. + + + +The \`'.ext', \`'+', \`'-', and \`'[...]' components are +optional. A missing \`'.ext' stands for \`'.xref'. When \`'-[prefix]+' +is empty the component \`'{...}' should also be omitted (and the +comamnd assume the form \`'\LoadRef{filename.ext}'). + +A \`'+' asks that \`'\Ref' and \`'LikeRef' commands will refer to +expanded tags of the form \`'filename::tag' instead of just \`'tag'. +A \`'[prefix]' asks that only tags which start with the given prefix +will be loaded. When \`'[prefix]' is omitted, an empty prefix is +assumed and all the tags are loaded. A \`'-' asks that \`'\Ref' and +\`'LikeRef' commands will refer to truncated tags in which the +specified prefixes are omitted. + +Intuitively, a tag can be viewed as a triplet \`'<from>:<to><tag>' +which encodes information together with source and destination +addresses. The \`'{...}' specifies how the information should be +included, where \`'#1' represents the information being loaded. + +\SubSection{Scanning the Preamble} + + + +\<common cross references\><<< +\def\LoadRef{\futurelet|<-?|>\:LoadRef} +\def\:LoadRef{{% + \if \bgroup|<-?|> + \aftergroup\loadr:ef + \else + \aftergroup\Load:Ref \if -|<-?|> \else + \aftergroup-\fi + \fi +}} +\def\Load:Ref#1{\futurelet|<[?|>\LoadRef:} +\def\LoadRef:{{% + \aftergroup\:loadref \ifx [|<[?|> \else + \aftergroup[\aftergroup]\fi}} +>>> + + +%%%%%%%%%%%%% WAS if[ + +\<common cross references\><<< +\def\:loadref[#1]{% + \let\sv:cros|=\:CrossWord + \edef|<prefix|>{#1}\ifx |<prefix|>\empty \let|<[?|>|= N\fi + \futurelet|<+?|>\l:oadref } +\def\l:oadref{% + {\aftergroup\lo:adref \if +|<+?|> \else \aftergroup+\fi }} +\def\lo:adref#1#2#3{% + \def\cw:format##1{#3}% + \edef\:temp{#2}\expandafter \get:ext\:temp .|<par del|>% + \ifx \:temp\empty + \set:CrossWord#2.|<par del|>{|<prefix|>}\load:ref{#2.xref}% + \else \set:CrossWord#2|<par del|>{|<prefix|>}\load:ref{#2}\fi + \let\:CrossWord|=\sv:cros } +\def\get:ext#1.#2|<par del|>{\def\:temp{#2}} +\def\loadr:ef#1{\let|<+?|>=x \let|<prefix|>|=\empty \lo:adref{}{#1}{##1}} +>>> + + + +\<cs?\><<< +\:tempa>>> + +\<-?\><<< +\:tempa>>> + +\<[?\><<< +\:tempb>>> + +\<+?\><<< +\:tempc>>> + +\<prefix\><<< +\:tempd>>> + +\SubSection{Incorporating the Preamble} + +\<common cross references\><<< +\def\set:CrossWord#1|<par del|>#2{% + \edef\:temp{\noexpand\:setCrossWord#1|<par del|>{#2}}\:temp} +\def\:setCrossWord|<ref filename par|>.#2|<par del|>|<substr par|>{% + \ifx [|<[?|> + \def\:CrossWord##1##2##3{% + \cond:CrossWord##1|<substr par|>|<par del|>{##1}{##2}{##3}}% + \def\:tail|<substr par|>##1|<substr par|>{##1}% + \if +|<+?|> |<:CrossWord := extend selected words|>% + \else |<:CrossWord := selected words|>\fi + \else + \if +|<+?|> |<:CrossWord := extend all words|>\fi + \fi |%else :CrossWord := all words|% +} +>>> + +%%%%%%%%%%%%% WAS if[ + + +\<:CrossWord := extend all words\><<< +\def\:CrossWord{\Cross:Word{|<ref filename par|>::}}% +>>> + +\<:CrossWord := extend selected words\><<< +\if -|<-?|> + \def\cond:CrossWord##1|<substr par|>##2|<par del|>##3##4##5{% + \def\:temp{##1}\ifx \:temp\empty + \Cross:Word{|<ref filename par|>::}% + {\:tail##3|<substr par|>}{##4}{##5}\fi }% +\else + \def\cond:CrossWord##1|<substr par|>##2|<par del|>##3##4##5{% + \def\:temp{##1}\ifx \:temp\empty + \Cross:Word{|<ref filename par|>::}{##3}{##4}{##5}\fi }% +\fi +>>> + +\<:CrossWord := selected words\><<< +\if -|<-?|> + \def\cond:CrossWord##1|<substr par|>##2|<par del|>##3##4##5{% + \def\:temp{##1}\ifx \:temp\empty + \Cross:Word{}{\:tail##3|<substr par|>}{##4}{##5}\fi }% +\else + \def\cond:CrossWord##1|<substr par|>##2|<par del|>##3##4##5{% + \def\:temp{##1}\ifx \:temp\empty + \Cross:Word{}{##3}{##4}{##5}\fi }% +\fi +>>> + + + + + +\Section{Interpretation for Entries} + + + +For each crossword $\alpha$ the imported file contains a record of the +form \''\:CrossWord{'$\alpha$\''}{'$\hat{\beta}$\''}{'$i$\''}'. +In such a record, $\hat\beta$ and $i$ stand for the expanded token +list and HPage number that correspond to $\alpha$, respectively. + +A command +\''\:CrossWord{'$\alpha$\''}{'$\hat{\beta}$\''}{'$i$\''}' +introduces the macro +\''\def\cw:'$\alpha$\''{'$\hat\beta$\''}', if the label is not empty. +Otherwise, it introduces the macro \''\def\cw:'$\alpha$\''{'$i$\''}' +that holds the page number. + + +\<interpretation for entries in ref file\><<< +\def\:CrossWord#1#2#3{\Cross:Word{}{#1}{#2}{#3}} +\def\Cross:Word#1#2#3#4{% + \def\:temp{#3}\tmp:toks{#3}% + \expandafter\edef\csname |<tag of Tag|>\cw:format{#1#2}\endcsname{% + \expandafter\ifx\csname |<tag of Tag|>\cw:format{#1#2}\endcsname\relax + \else \csname |<tag of Tag|>\cw:format{#1#2}\endcsname , \fi + \ifx \:temp\empty #4\else \the\tmp:toks\fi}} +\def\cw:format#1{#1}% +>>> + + + + +\<par del\><<< +!*?: >>> + +\<substr par\><<< +#3>>> + +\<ref filename par\><<< +#1>>> + +%%%%%%%%%%%%%%%%%%% +\Section{Link} +%%%%%%%%%%%%%%%%%% + +Good for \''\Link{...}{...}' across files when we have +\''\LoadRef+{...}{#1}'. + +\<html cross references\><<< +\catcode`\:=12 + +\def\get@hfile#1{\get@hfil@ #1:::://} + +\def\get@hfil@#1::#2::#3//{% + \expandafter\ifx \csname + |<tag of Tag|>#1::|<HTag tag|>#2\endcsname \relax \else + \expandafter\expandafter\expandafter\get@@hfile + \csname |<tag of Tag|>#1::|<HTag tag|>#2\endcsname,//{#1}% + \fi} +\def\get@@hfile#1,#2//#3{% + \expandafter\ifx + \csname |<tag of Tag|>#3::|<auto file tag|>#1% + |<Tag/Ref: file-id -> file-name|>\endcsname \relax + \else + \csname |<tag of Tag|>#3::|<auto file tag|>#1% + |<Tag/Ref: file-id -> file-name|>\endcsname + \expandafter \expandafter \expandafter \expandafter + \expandafter \expandafter \expandafter \remove@fn + \fi } + +\def\remove@fn#1#2::{#1} + +\catcode`\:=11 +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Utilities} +%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Empty Anchors} +%%%%%%%%%%%%%%%%%%%%%%%%%% + +Change the following to standard space character when microsoft +explorer will let it. Currently it wiil go only for ubreakable +space. The last null anchor is obviously the most desirable one. + +\<html utilities\><<< +\def\hidden:anchor{} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Latex Anomalies} +%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<if latex then latex/write sol\><<< +\if:latex \expandafter\immediate\fi +>>> + + +Try to understand betetr what goes here, because I got +the following not workin in latex. It pushed the output +to the log file instead of the toc file. + +\Verbatim +\<latex/write sol\><<< +\immediate +>>> +\EndVerbatim + +Inserted for the differences in the output routines between TeX and +LaTeX. + +\Verbatim + -------ok----------------faulty------------------ok----------------- +| | | | +| | \documentstyle{book} | \documentstyle{book} | +| | \begin{document} | \begin{document} | +| \newwrite\y | \newwrite\y | \newwrite\y | +| \openout\y=f.xx | \openout\y=f.xx | \immediate\openout\y=f.xx | +| \write\y{....} | \write\y{....} | \immediate\write\y{....} | +| \closeout\y | \closeout\y | \immediate\closeout\y | +| \end | \end{document} | \end{document} | + -------------------------------------------------------------------- +\EndVerbatim + +La\TeX has a \''\clearpage' and \''\cleardoublepage'. + +\<latex /special sol\><<< +\ifx \clearpage\:UnDef \def\:clearpage{\vfil\penalty-20000} +\else + \let\real:par|=\par \def\eq:par{\par\real:par} + \def\:clearpage{\expandafter\ifx\eq:par\clearpage\fi} +\fi +>>> + +In LaTeX, \''\clearpage' embeds a \''\newpage', which in turns +embeds a \''\par'. The \''\EndPage', in turn, embeddes a +\''\:clearpage' which may cause a problem in places that +\''\par' might be a problem. Such is the case, for instance, +within \''\halign', where \''\par' has a different meaning +and may cause an infinite loop. The \''\footnote' produces +this bad situation. + + +\<general utilities\><<< +|<latex /special sol|> +>>> + +\Verbatim + ---------ok------------------faulty--------------------ok----------- +| | | | +| | \documentstyle{book} | \documentstyle{book} | +| | \begin{document} | \begin{document} | +| aaaaa | aaaaa | aaaaa | +| \special{t4ht>bbbbb} | \special{t4ht>bbbbb} | \special{t4ht>bbbbb} | +| ccccc | ccccc | ccccc | +| \vfil\penalty-20000 | \vfil\penalty-20000 | \vfil\penalty-10000 | +| ddddd | ddddd | ddddd | +| \end | \end{document} | \end{document} | +| | | | + -------------------------------------------------------------------- +\EndVerbatim + + + +\Verbatim + --------------------ok-------------------------------faulty------------------ +| |\documentstyle{book} | +| |\begin{document} | +|\leavevmode x\vfil \penalty-10000 |\leavevmode x\vfil \penalty-10000 | +|\leavevmode y\mark{\gdef\noexpand\z{}}|\leavevmode y\mark{\gdef\noexpand\z{}}| +|\end |\end{document} | + ----------------------------------------------------------------------------- + + -------------ok-----------------------faulty-------------- +| | \documentstyle{book} | +| | \begin{document} | +| y | y | +| \mark{\gdef\noexpand\zz{}} | \mark{\gdef\noexpand\zz{}} | +| \end | \end{document} | + ---------------------------------------------------------- +\EndVerbatim + +\SubSection{Other} + +\<general utilities\><<< +\ifx \folio\:UnDef + \def\folio{\ifx \pageno\:UnDef \z@ \else + \ifnum \pageno <0 \romannumeral -\pageno + \else \the \pageno \fi\fi} +\fi +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\Chapter{Html Files} +%%%%%%%%%%%%%%%%%%%%%%%%%% + +\''\HP:file' was before \''\:tempa', and it got screwed when +\''\PauseHFont' and \''\EndPauseHFont' have been defined +and introdued to \''\Configure{HtmlPar}'. The name is probably misused +at some of its occurences. + + +\<files\><<< +|<elements for file|> +\ifHtml |<html file commands|> \fi +>>> + +\Section{Open Files} + +The first optional parameter of \`'\FileStream' goes to the title of +the html file. For a second parabeter, one should be careful +of not providing an undefined \`'\csname...\endcsname' file name. An +empty second parameter refers to the root file. + +\<elements for file\><<< +\ifx \FileStream\:UnDef \else + \errmessage{--- TeX4ht error --- + \noexpand\FileStream is defined outside of TeX4ht}\endinput +\fi +\def\FileStream{\IgnorePar + \let|<needs preamble|>|=-\futurelet\:temp\F:le} +\def\F:le{\if +\:temp \let|<needs preamble|>|=+\expandafter\Fl:e + \else \expand:after{\Fl:e-}\fi} +\def\Fl:e#1{\futurelet\:temp\::File} +\def\::File{\ifx [\:temp \expandafter\:File + \else \expand:after{\:File[]}\fi } +\def\:File[#1]#2{} +>>> + +%%%%%%%%%%%%% WAS if[ + +\<html file commands\><<< +\def\:File[#1]#2{% + \no:pic\edef\file:name{#2}\yes:pic + \expandafter\ifx\csname + |<csname: file name -> file id|>\file:name\endcsname\relax + |<open html file name|>% + \else |<reopen html file|>% + \fi} +\HAssign\bs:fileid |= 1 +>>> + +The definition \`'\edef\file:name{#2}' is needed just in case the +parameter \`'#2' depends on \`'\file:id', because the latter is being +changed within the course of the code. + + + + +\<reopen html file\><<< +\xdef\file:id{\csname + |<csname: file name -> file id|>\file:name\endcsname}% +\ht:special{t4ht>\ifnum \file:id>\bs:fileid\space \file:name\fi }% +>>> + + + + +\<open html file name\><<< +\ht:special{t4ht>\file:name}% +\immediate\write-1{--- file \file:name\space ---}% +|<round ids before file|>% +\gHAdvance\maxfile:id |by 1 +\global\let\file:id|=\maxfile:id +\Tag{|<auto file tag|>\file:id + |<Tag/Ref: file-id -> file-name|>}{\file:name}% +\expandafter\xdef\csname + |<csname: file name -> file id|>\file:name\endcsname{\file:id}% +|<HPage TITLE|>% +|<remove par skip space|>% +\a:PROLOG \a:HTML \a:HEAD +\ifx +|<needs preamble|>% + |<initiate frames|>% + \xdef:cs{|<live|>\file:id}{\noexpand\a:TITLE + |<noexpanded configured title|>% + \noexpand\b:TITLE\noexpand\a:@HEAD\noexpand\b:HEAD}% +\else + \xdef:cs{|<live|>\file:id}{}% + \a:TITLE|<configured title|>\b:TITLE \a:@HEAD\b:HEAD\B:DY +\fi +>>> + +\<configured title\><<< +\bgroup \:TITLE: \c:TITLE \egroup +>>> + + + +\<noexpanded configured title\><<< +\bgroup \noexpand\:TITLE: \noexpand\c:TITLE \egroup +>>> + + +\<remove par skip space\><<< +\ht:special{t4ht@[}{\ht:everypar{}\leavevmode}\ht:special{t4ht@]}% +>>> + + + + +Titles need to be evaluated immediately to capture meanings that come +from sectioning commands, where the latter may include macro names +taht can change in time. + + +The following should appear before \''\Preamble'. + +\<first pass\><<< +\NewConfigure{HTML}[2]{\c:def\a:HTML{#1}\c:def\b:HTML{#2}} +\NewConfigure{HEAD}[2]{\c:def\a:HEAD{#1}\c:def\b:HEAD{#2}} +\NewConfigure{BODY}[2]{\c:def\a:BODY{#1}% + \c:def\b:BODY{\csname a:@/BODY\endcsname#2}} +\NewConfigure{TITLE}[2]{\c:def\a:TITLE{#1}\c:def\b:TITLE{#2}} +\NewConfigure{TITLE+}[1]{\c:def\c:TITLE{#1}} +\NewConfigure{@TITLE}[1]{\concat:config\:TITLE:{#1}} +\NewConfigure{@HEAD}[1]{\concat:config\a:@HEAD{#1}} +\let\a:@HEAD|=\relax +>>> + +\<concat config\><<< +\long\def\concat:config#1#2{\def\:temp{#2}% + \ifx \:temp\empty \let#1|=\empty + \else \ifx #1\relax \let#1|=\empty\fi + \append:def#1{#2}\fi +} +>>> + +\''\Configure{@HEAD}{}' empties the content. +\''\Configure{@HEAD}{...}' appends the content. + +Same for the following + +\<first pass\><<< +\NewConfigure{@BODY}[1]{\concat:config\a:@BODY{#1}} +\let\a:@BODY\relax +\NewConfigure{@/BODY}[1]{\expandafter + \concat:config\csname a:@/BODY\endcsname{#1}} +\expandafter\let\csname a:@/BODY\endcsname\relax +>>> + +Why the \''\noexpand' above. Put a \`'\special' instead. + +\<utilities\><<< +\:CheckOption{hshow} \if:Option + \def\hshow#1{\writesixteen + {..#1.......\expandafter\meaning\csname #1\endcsname}} + |<Show Configure|> +\fi +>>> + +\<Show Configure\><<< +\def\ShowConfigure#1{% + \edef\:tempb{\expandafter \meaning\csname c:#1:\endcsname}% + \expandafter\par:N \:tempb////% + \writesixteen{\string\Configure{#1}}% + {\show:Arg{1}{a:#1}% + \show:Arg{2}{b:#1}% + \show:Arg{3}{c:#1}% + \show:Arg{4}{d:#1}% + \show:Arg{5}{e:#1}% + \show:Arg{6}{f:#1}% + \show:Arg{7}{g:#1}% + \show:Arg{8}{h:#1}% + \show:Arg{9}{i:#1}}% +} +\edef\:temp{\def\noexpand + \par:N##1\string :##2->##3////{\noexpand\par:NN?##2//}} +\:temp +\def\par:NN#1#2//{\def\:tempb{#2}\ifx\:tempb\empty + \def\:tempb{#1}\else \def\:tempb{\par:NN#2//}\expandafter\:tempb\fi} +\def\show:Arg#1#2{% + \ifnum \:tempb=#1 \let\show:Arg=\:gobbleII \fi + \expandafter\let\expandafter\:temp \csname #2\endcsname + \writesixteen{ {\ifx \:temp\relax ???\else + \expandafter\:gobbleM \meaning \:temp\fi}}} +\def\:gobbleM#1->{} +>>> + + + + + + +The following tag is for recording files that are still alive, and for +keeping a status location for HEAD/FRAMESET/BODY entity types. + +\<live\><<< +Lv >>> + + + +\Section{Close Files} + +\<html file commands\><<< +\def\EndFileStream#1{% + \expandafter\ifx + \csname |<csname: file name -> file id|>#1\endcsname\relax + \:warning{\string\EndFileStream{#1}?}% + \else + \ifnum\csname |<csname: file name -> file id|>#1\endcsname=\bs:fileid + \:warning{\string\EndFileStream{\jobname .\:html}?}% + \else \expandafter\ifnum |<file not overided by /ChildOf|>% + |<close html file name|>% + \fi\fi\fi } +>>> + +Note thta \`'\EndFileStream' might get fake calls due to end of HPages. Hence, +\`'\RecallEverypar' should be invoked only when real HPageas are closed. +Well, we can't put \''\SaveEverypar' and + \''\RecallEverypar' in \''\FileStream' and \''\EndFileStream' +because they are not structured. We can reopen and close files randomly. + + + An extra empty line at end of file (for some reason, some settings +of emacs prompt the user for such a line). + +\<close html file name\><<< +{\let\inputlineno|=\tmp:cnt \tmp:cnt|=1 \root:next }% +|<end body and frames|>% +\ht:special{t4ht<#1}% +\g:delete{\empty |<csname: file name -> file id|>#1}% +|<round ids after file|>% +>>> + +Why the \''\edef' above + + +Upon closing a file with \`\special{t4ht<#1}', the program +\`'tex4ht.c' moves to the youngest file that is still openned. + +\<close html file name\><<< +\expandafter\expandafter\expandafter\global \expandafter + \let\csname |<live|>\file:id\endcsname|=\:UnDef +\global\let\file:id|=\maxfile:id +\find:fileid +>>> + +\<html file commands\><<< +\def\find:fileid{% + \expandafter\ifx \csname |<live|>\file:id\endcsname \relax + \gHAdvance\file:id |by -1 \expandafter\find:fileid + \fi +} +>>> + + + +\Section{Cross References} + + + + +The commands referencing files are defined for use also within +restricted environments (\`'\edef', \`'\write'). + +\<html file commands\><<< +\def\TagFile#1{% + \expandafter\ifx \csname + |<tag of Tag|>|<file name for TagFile|>\endcsname \relax \else + \Tag{#1|<File tag|>}{\LikeRef{|<file name for TagFile|>}}% + \fi +} +\def\RefFile#1{\LikeRef{#1|<File tag|>}} +\def\FileName{\LikeRef + {|<auto file tag|>\file:id |<Tag/Ref: file-id -> file-name|>}} +>>> + + + + + +\<file name for TagFile\><<< +|<auto file tag|>\file:id |<Tag/Ref: file-id -> file-name|>% +>>> + + +\`'\def\RefFile#1{\Ref{#1|<File tag|>}} +\def\LikeRefFile#1{\LikeRef{#1|<File tag|>}}' + +\<html file commands\><<< +\def\RefFileNumber#1{% + \expandafter\ifx \csname + |<tag of Tag|>|<auto file tag|>#1% + |<Tag/Ref: file-id -> file-name|>\endcsname\relax + \else + \:LikeRef{|<auto file tag|>#1|<Tag/Ref: file-id -> file-name|>}% + \fi } +>>> + + +\Verbatim + + > Why is it that during the first run, \file:name returns the correct + > filename, but \FileName returns a blank? + +\file:name doesn't always return the correct + + \documentclass{article} + \begin{document} + + \writesixteen + {\csname file:name\endcsname...\csname FileName\endcsname} + + \end{document} + + > Is this a bug or a feature? + +\FileName gets its information through the xref file from the previous +compilation, in a similar manner that \ref gets its information from +\name in latex. The indirection is needed to allow communication +between different files that are to be compiled into a joint html +output. It was introduced at a time that I and others had no access to +large latex compilers, forcing the break up of large source (eg, +books) into smaller files. +\EndVerbatim + + + +\Section{Root File} + +\<html file commands\><<< +\xdef:cs{\empty |<csname: file name -> file id|>\jobname .\:html}{\file:id} +\xdef:cs{\empty |<csname: file name -> file id|>}{\file:id} +\Tag{|<auto file tag|>\file:id + |<Tag/Ref: file-id -> file-name|>}{\jobname .\:html} +\bgroup + |<protect from /special redef|>% + \xdef:cs{|<live|>\file:id}{\noexpand\a:TITLE + |<noexpanded configured title|>% + \noexpand\b:TITLE \noexpand\a:@HEAD\noexpand\b:HEAD}% +\egroup +>>> + + + + +\Section{Document Head} + +\<start html doc\><<< +\:startdoc +>>> + + + +\<at doc start\><<< +\def\at:startdoc{% + \let\:startdoc|=\:UnDef \let\at:startdoc|=\:UnDef + |<activate html env|>% + \a:Preamble + |<start html file|>} +\def\:startdoc{% + \at:startdoc + \edef\:temp{\pageno|=\the\pageno}% + {\let\HCode|=\:gobble \par\newpage}\:temp} +>>> + +The \''\let\HCode=\:gobble' is to prevent \`'<BR>' from +\''\line' activated by \'sty' and called upon from +a user-designed \''\output' routines taht have not been +adjusted yet for haeders and footers. + + + + +> The following is to ensure that no shipout of content is done before +> the header is out. + +Update 2020: patching of shipout is discouraged in LaTeX. I don't know what +use case the following code has, but it seems that TeX4ht can safelly work +without it. We can introduce it back in the case of problems. -- Michal + +\<start html doc\><<< +%\let\:shipout|=\shipout +%\def\shipout{\vfil\break\let\shipout|=\:shipout \shipout} +>>> + + + +\<start html file\><<< +\a:PROLOG \a:HTML \a:HEAD +|<initiate frames|>% +>>> + +The following empty line is to avoid lines that are too long +in the style file. + +The following is for the root file, and it can be overriden +by definitions before \''\EndPreamble'. + + + +\<concat config\><<< +\def\:prolog#1#2,#3|<par del|>{% + \if ,#2,\else + \edef\:tempc{\if*#2\fi}% + \ifx \:tempc\empty + \expandafter\append:def + \csname a:#1\endcsname{\csname a:#2\endcsname}% + \expandafter\ifx \csname c:#2:\endcsname\relax + \NewConfigure{#2}{1}% + \fi + \else + \expand:after{\pro:log{#1}}\expandafter{\:tempc}% + \fi\fi + \if ,#3,\else \expand:after{\:prolog{#1}#3|<par del|>}\fi +} +\def\pro:log#1#2{% + \expandafter\append:def + \csname a:#1\endcsname{\csname a:#2\endcsname}% + \expandafter\ifx \csname c:#2:\endcsname\relax + \NewConfigure{#2}[1]{\expandafter + \concat:config\csname a:#2\endcsname{##1}}% + \expandafter\let\csname a:#2\endcsname\relax + \fi +} +\def\seq:config#1#2{% + \expandafter\let\csname a:#1\endcsname=\empty + \:prolog {#1}#2,|<par del|>} +>>> + +The \''\seq:config' is for introducing a sequence of hooks, +where a star `*' before the hook name indicates it is to be +of accumulative kind. + +\<define /Preamble\><<< +\NewConfigure{PROLOG}[1]{\seq:config{PROLOG}{#1}} +>>> + + +\<html Configure's\><<< +\def\Goto:Configure{\long\def + \Goto:Configure##1\:Configure{\let\Goto:Configure + |=\:UnDef}\expandafter\Goto:Configure} +|<trace configurations|> +|<html config util|> +|<shared config|> +|<font config util|> +|<accents|> +|<math config util|> +>>> + + + + + + + + + + + +\Section{Document Tail} + + + +\<TeX4ht hook on end\><<< +\expand:after{\let\o:end|=}\csname end\endcsname +\expandafter\def\csname end\endcsname{% + \csname export:hook\endcsname \csname o:end\endcsname} +>>> + +This is not used, enddocument hook for LaTeX is defined in latex.4ht. + +\<latex hook on end\><<< +\let\o:enddocumenthook|=\@enddocumenthook +\def\@enddocumenthook{% + \o:enddocumenthook \csname export:hook\endcsname } +>>> + + + + + +\<hook on end\><<< +\def\at:docend{|<close html doc|>\global\let\at:docend=\empty} +\expand:after{\let\o:end|=}\csname end\endcsname +\expandafter\def\csname end\endcsname{\HtmlEnv + \at:docend + \csname export:hook\endcsname \csname o:end\endcsname} +>>> + + +\<close html doc\><<< +|<close HPages in @end|>% +\HAssign\op:fl|=\maxfile:id\space \close:files +|<buttons at end of child|>% +|<end body and frames|>% +>>> + + + +\<end body and frames\><<< +{\b:BODY \b:HTML}% +>>> + + +\<html file commands\><<< +\def\close:files{% + \ifnum \op:fl<\bs:fileid \else + \def\:warning##1{}% + \EndFileStream{\RefFileNumber\op:fl}% + \Advance:\op:fl |by -1 + \expandafter\close:files + \fi} +>>> + + +\Chapter{HPages and Cut Points} + + + +\<cut points\><<< +|<elements for cut points|> +\ifHtml |<html cut points|> + |<tex html cut points|> +\fi +>>> + +\Section{HPages} + + +\`'\HPage<block name>[tag]{title} ... \EndHPage{block name}' + +\List{$\button$} + +\item The \`'block name' is optional in \''\EndHPage', and it serves +for balancing delimiters of blocks. + +If included, it is compared against \`'block name' and \`'tag' +in the given order until a non-empty entity is encountered. +All the compared entities must be fully-expandable (i.e., edef). +(Note that for \`'[]', title is the tag.) + +\item The \`'[tag]' is used for \`'\RefFile', and it is optional. +An empty tag asks that the title will serve as a tag. + +\item The \`'{title}' is used for a HPage. If empty, the HPage is omitted. + +\EndList + +\`'\HPage<block name>-[tag]title\ContHPage ... \EndHPage{block +name}' + +A variant of the above in which tag must be non-empty if \`'[tag]' is +present, and \`'title' need not be expandable. Also, either \`'block +name' or \`'tag' must be present, if \`'\EndHPage{...}' has a +non-empty parameter. + + +\<html cut points\><<< +\def\HPage{\strt:bt\ch:HPage} +\def\ch:HPage{% + \ifx -\:temp \expandafter\m:HPage + \else \expand:after{\ifx [\:temp \expandafter\op:HPage + \else \expandafter\:HPage \fi}% + \fi} +>>> + +\<html cut points\><<< +\def\strt:bt#1{% + \def\:bgtr<##1>{|<page-name is a file name?|>% + |<push name if not HPageButton|>% + \futurelet\:temp#1}% + \futurelet\:temp\ch:btgr} +\def\ch:btgr{\ifx <\:temp \expandafter\:bgtr + \else \expand:after{\:bgtr<>}\fi}% +>>> + + +\<push name if not HPageButton\><<< +\ifx #1\ch:bbtf \else \PushStack\:btid{##1}\fi +>>> + +\<html cut points\><<< +\def\HP:Link{\Link[\HP:file + \a:LinkHPage]{}{\HP:file}\global\let\a:LinkHPage|=\empty} +\NewConfigure{LinkHPage}[1]{\def\a:LinkHPage{ #1}} +\let\a:LinkHPage=\empty +\def\op:HPage[#1]#2{% + |<entring file of hpage|>% + \:hookI{BeforeHPageButton}{}{#2}% + \hpg:wrn{#1}{#2}\HPage \TagFile{|<fr bt fl|>\:temp}% + \Save:HPageTag\:temp + \Save:HPage{#2}% + \NewFileName\HP:file \Save:Link\HP:file + \if:notempty{#2}{\HP:Link#2\EndLink}% + \:hookI{AfterHPageButton}{}{#2}% + \:btfile{#2}% + \:buttrc\HPage{[#1]{#2}}% + \PushStack\:afterbt{x}% + |<:temp = but name|>% + \TagFile{\:temp}} +\def\:HPage#1{% + |<entring file of hpage|>% + \:hookI{BeforeHPageButton}{}{#1}% + \NewFileName\HP:file \Save:Link\HP:file \Save:Temp\HP:file + \TagFile{|<fr bt fl|>\HP:file}% + \Save:HPageTag\HP:file + \Save:HPage{#1}% + \def\:temp{#1}\ifx \:temp\empty + \else \HP:Link#1\EndLink + \fi + \:hookI{AfterHPageButton}{}{#1}% + \:btfile{#1}% + \:buttrc\HPage{{#1}}% + \PushStack\:afterbt{x}% + \Recall:Temp\:tempa \TagFile{\:tempa}} +>>> + + +\<html cut points\><<< +\def\hpg:wrn#1#2#3{% + |<:temp = but name|>% + \ifx \:temp\empty \:warning{\string#3[]{}?}\fi} +>>> + + +\<:temp = but name\><<< +\edef\:temp{#1}\ifx \:temp\empty \no:pic + \edef\:temp{\noexpand\yes:pic + \def\noexpand\:temp{#2}}\:temp \fi +>>> + + +\<html cut points\><<< +\def\Save:Temp{\PushStack\sv:Temp} +\def\Recall:Temp{\PopStack\sv:Temp} +>>> + +Can't go for \`' \def\:temp{#1}' because \`'#1' is just a title and +not a tag. + + +\<html cut points\><<< +\def\m:HPage#1{\futurelet\:temp\ch:mbut} +\def\ch:mbut{\ifx [\:temp \expandafter\op:mbut + \else \expandafter\:mbut \fi} +\def\op:mbut[#1]{% + |<entring file of hpage|>% + \:hookI{BeforeHPageButton}{}{}% + \edef\:temp{#1}% + \ifx \:temp\empty \:warning{\string\HPage-[]?}\fi + \TagFile{|<fr bt fl|>\:temp}% + \Save:HPageTag\:temp + \Save:HPage{}% + \NewFileName\HP:file \Save:Link\HP:file + \HP:Link% + \def\ContHPage{\:ContHPage{x}{#1}}} +\def\:mbut{% + |<entring file of hpage|>% + \:hookI{BeforeHPageButton}{}{}% + \NewFileName\HP:file \Save:Link\HP:file + \TagFile{|<fr bt fl|>\HP:file}% + \Save:HPageTag\HP:file + \Save:HPage{}% + \HP:Link% + \def\ContHPage{\:ContHPage{x}{\HP:file}}} +\def\:ContHPage#1#2{\EndLink + \Recall:Link\HP:file \Save:Link\HP:file + \:hookI{AfterHPageButton}{}{}% + \:btfile{}% + \:buttrc\HPage{...\string\ContHPage}% + \PushStack\:afterbt{#1}% + \TagFile{#2}} +>>> + + +\<html cut points\><<< +\def\:hookI#1#2#3{% + \expandafter\ifx \csname #1\endcsname\relax #2\else + \csname #1\endcsname{#3}\fi +} +>>> + +\<html cut points\><<< +\def\NewFileName#1{% + \HAssign#1|=\maxfile:id + \Advance:#1 |by 1 + \ifx \:NxtNwFN\:Undef + \edef#1{\j:bname \ifx \big:fn\:UnDef|<tail for file name|>#1% + \else \big:fn\fi .\:html}% + \else \let#1|=\:NxtNwFN \global\let\:NxtNwFN|=\:UnDef \fi + \global\let\big:fn|=\:UnDef +} +\def\NextFile#1{\xdef\:NxtNwFN{#1}} +>>> + + + + +\<html cut points\><<< +\def\:btfile#1{% + \SaveEverypar \FileStream[#1]{\HP:file} \IgnorePar + \gHAdvance\HPageDepth |by 1 + \AtEndHPage{\csname HPageFooter\endcsname}% + \:hookI{HPageHeader}{}{#1}% +} +>>> + + + + + +\SubSection{Specification Separated from Realization} + +Split HPages must appear with reference keys (brackets). + + + + +\<html cut points\><<< +\def\HPageButton{\strt:bt\ch:bbtf} +\def\ch:bbtf{\ifx -\:temp \expandafter\op:bbft + \else \expandafter\:bbtf \fi} +\def\:bbtf[#1]#2{% + \:hookI{BeforeHPageButton}{}{#2}% + \hpg:wrn{#1}{#2}\HPageButton + \TagFile{|<fr bt fl|>\:temp}% + \edef\HP:file{\RefFile\:temp}% + \def\:temp{#2}\ifx \:temp\empty + \else \HP:Link#2\EndLink \fi + \:hookI{AfterHPageButton}{}{#2}% + \csname AfterHPage\endcsname } + +\def\op:bbft#1[#2]{% + \:hookI{BeforeHPageButton}{}{}% + \edef\:temp{#2}% + \ifx \:temp\empty \:warning{\string\HPageButton-[]?}\fi + \TagFile{|<fr bt fl|>\:temp}% + \edef\HP:file{\RefFile\:temp}% + \HP:Link% + \def\ContHPage{\EndLink + \:hookI{AfterHPageButton}{}{}% + \csname AfterHPage\endcsname }} +>>> + + +\<html cut points\><<< +\def\BeginHPage{\futurelet\:temp\ch:bbbt} +\def\ch:bbbt{% + |<entring file of hpage|>% + \NewFileName\HP:file \Save:Link\HP:file + \ifx -\:temp \expandafter\op:bbbt + \else \expandafter\:bbbt \fi} +\def\:bbbt[#1]#2{% + \PushStack\:btid{#1}% |%aug 2003|% + \:btfile{#2}% + \:buttrc\BeginHPage{[#1]{#2}}% + \PushStack\:afterbt\empty + \hpg:wrn{#1}{#2}\BeginHPage \Save:HPageTag\:temp + \Save:HPage{#2}% + \TagFile{\:temp}} +\def\op:bbbt#1[#2]{% + \PushStack\:btid{#2}% |%aug 2003|% + \:hookI{AfterHPageButton}{}{}% + \:btfile{}% + \:buttrc\BeginHPage{[#2]}% + \PushStack\:afterbt\empty \edef\:temp{#2}% + \ifx \:temp\empty \:warning{\string\BeginHPage-[]?}\fi + \Save:HPageTag\:temp \Save:HPage{}% + \TagFile{\:temp}} +>>> + + + + + +\SubSection{End HPage} + +\`'\EndHPage[level]{bloc name}' + +\List{$\bullet$} + +\item \`'[level]' is optional. If present, all HPages, up to the +specified level, are closed. + +\item \`'block name'. If empty, a single HPage is closed. If +non-empty, all HPages up-and-including the one with the given name +are closed. + +\EndList + +\<html cut points\><<< +\def\EndHPage{\futurelet\:temp\chEnd:HPage} +\def\chEnd:HPage{\ifx [\:temp \expandafter\opEnd:HPage + \else \expandafter\End:HPage \fi} +\def\opEnd:HPage[#1]{% + \ifnum #1>\HPageDepth\space + \:warning{\string\EndHPage[#1]?}% + \let\:temp|=\:gobble + \else \ifnum #1<\HPageDepth\space + \def\:temp{\:EndHPage\EndHPage[#1]{}}% + \else \let\:temp|=\End:HPage \fi \fi + \:temp } + +\def\End:HPage#1{% + \ifnum \HPageDepth<1 \:warning{\string\EndHPage{#1}?}\let\:temp|=\:gobble + \else \ifinner\else\:clearpage\fi \PopStack\:btid\:tempa + \def\:tempb{#1}\ifx \:tempb\empty\let\:temp|=\:EndHPage + \else \ifx \:tempb\:tempa \let\:temp|=\:EndHPage + \else \Recall:HPageTag\:tempa + \Save:HPageTag\:tempa + \ifx \:tempb\:tempa \let\:temp|=\:EndHPage + \else \def\:temp{\:EndHPage\End:HPage{#1}}% + \fi\fi\fi\fi + \:temp } + +\def\:EndHPage{% + \csname EndHPage\HPageDepth \endcsname + \global\expandafter\let\csname EndHPage\HPageDepth\endcsname|=\:UnDef + \Recall:Link\HP:file \Recall:Link\:tempd \Save:Link\:tempd + \Recall:HPage\:tempb + \Recall:HPageTag\:tempc + \:buttrc\EndHPage{{\:tempb}}% + \EndFileStream{\HP:file}% + |<leaving actual file of hpage|>% + \FileStream{\:tempd}% + \RecallEverypar \gHAdvance\HPageDepth |by -1 + \PopStack\:afterbt\:temp + \ifx \:temp\empty \else \csname AfterHPage\endcsname \fi } +>>> + + +Overrides earlier defs, including the default. + + +\<html cut points\><<< +\def\AtEndHPage{% + \expandafter\gdef\csname EndHPage\HPageDepth\endcsname} +>>> + + +\<html cut points\><<< +\HAssign\HPageDepth|=0 +\PushStack\:btid{} +>>> + +%\NewStack\:btid + +\<close HPages in @end\><<< +\ifnum \HPageDepth> 0 \EndHPage[1]{}\fi +|<document end for non-cut logical units|>% +>>> + + +\SubSection{Debugging} + +\<html cut points\><<< +\def\Save:FileHPg{\PushStack\HPage:FlHg} +\def\Recall:FileHPg{\PopStack\HPage:FlHg} +>>> + +The \''\Recall:FileHPg' and \''Recall:Link' should give the +same file if HPages are not stored in files, and when the files are +not remote. CHECK!!! + + +The following works with the actual files containing the +hpages, instead of assuming that the files are of their parent +hpages. + + +\<leaving actual file of hpage\><<< +%\Recall:FileHPg\:tempd +>>> + +\''HPage''s are not natural children of \''\FileStream': +\''\EndHPage' don't touches pages, \''\FileStream' +has no button name, \''\ExitHPage' might not work, etc (Recall that +HPages must be consistent in seperated form of \''\HPageButton' with +\''\beginHPage' and unified form of \''\HPage'.) + + +\<entring file of hpage\><<< +%\chk:hpfl +>>> + +\<html cut points\><<< +\def\chk:hpfl{\Save:FileHPg\FileName \:FlHpg} +\def\No:FlHpg{{\Recall:Link\HP:file \Save:Link\HP:file + \edef\HP:file{\HP:file}\edef\FileName{\FileName}% + \edef\HP:file{\expandafter\string\csname \HP:file\endcsname}% + \edef\FileName{\expandafter\string\csname \FileName\endcsname}% + \ifx \HP:file\FileName \else + \:warning{HPage in a non-HPage file + `\expandafter\:gobble\FileName'}% + \fi}} +\def\HPageInFile{\global\let\:FlHpg|=\empty} +\def\NoHPageInFile{\global\let\:FlHpg|=\No:FlHpg} +\NoHPageInFile +>>> + + + +Had \`'\yes:trc' and changed to \`'\yes:pic' without checking what I'm doing. + +\<html debug\><<< +\def\HTraceHPageOn{% + \def\:buttrc##1##2{\no:pic \writesixteen{% + l.\the\inputlineno -[\HPageDepth]- \string##1##2}\yes:pic + }} +\def\HTraceHPageOff{\def\:buttrc##1##2{}} +\HTraceHPageOn +>>> + + + +\<no debug\><<< +\def\:buttrc#1#2{} +\let\HTraceHPageOn|=\empty +\let\HTraceHPageOff|=\empty +>>> + +\SubSection{Utilities} + + + +\<page-name is a file name?\><<< +\expand:after{\bt:fn##1.}\:html|<par del|>% +>>> + +\<html cut points\><<< +\expand:after{\def\bt:fn##1.}\:html#2|<par del|>{% + \def\:temp{#2}\ifx \:temp\empty + \else \NextFile{#1.\:html}\fi } +>>> + + +\`'\ExitHPage[mark]{title}'. The bracket mark is optional and +it is introduced for marking the HPage with an NAME. If +\`'\HPageButton'-\`'\BeginHPage' combination wouldn't have existed we +could have used simpler code of the form \`'\Recall:Link\HP:file + \Recall:Link\:tempb \Save:Link\:tempb \Save:Link\HP:file + \Link[\:tempb]{\HP:file}{#1}#2\EndLink'. +An empty title creates a default \`'exit <file title>'. + + + Whenever we have cross-references in a html file (might be +also indirect through a child) we want an exit HPage to save an +annoying backtract through the visited path. + +\<html cut points\><<< +\Odef\ExitHPage[#1]#2{% + \Recall:HPageTag\HP:file \Save:HPageTag\HP:file + \Link[\RefFile{|<fr bt fl|>\HP:file}]{\RefFile{\HP:file}}{#1}% + \def\:temp{#2}\ifx \:temp\empty + \Recall:HPage\:temp \Save:HPage\:temp + \ifx \:temp\empty \a:ExitHPage + \else \b:ExitHPage \:temp \c:ExitHPage \fi + \else #2\fi + \EndLink +} +>>> + +\<shared config\><<< +\NewConfigure{ExitHPage}{3} +>>> + + + + +\<fr bt fl\><<< +)B>>> + + +\`'\RefHPage' can be used for the filename and HPage location. + +\<html cut points\><<< +\def\RefHPage{\RefFile} +>>> + +\<html cut points\><<< +\def\Save:Link{\PushStack\HPageFiles} +\def\Recall:Link{\PopStack\HPageFiles} +\Save:Link{\jobname.\:html} +\def\Save:HPage{\PushStack\HPageAnchors} +\def\Recall:HPage{\PopStack\HPageAnchors} +\def\Save:HPageTag{\PushStack\HPage:Tags} +\def\Recall:HPageTag{\PopStack\HPage:Tags} +>>> + +%\NewStack\HPageFiles +%\NewStack\HPageAnchors +%\NewStack\HPage:Tags + +%\NewStack\:afterbt + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Requests for Cutpoints} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Requests are made with commands of the form +\`'\CutAt{division,terminators,...}'. A \`'division' that precedes +with a \`'+' asks that the HPage will be visible. + +\<html cut points\><<< +\def\CutAt#1{% + \if +\:firstch#1 //\:CutAt#1,//\else + \if |<- TITLE|>\:firstch#1 //\:CutAt#1,//\else + \:CutAt=#1,//\fi\fi +} +>>> + + +\<html cut points\><<< +\def\PauseCutAt#1{% + \expandafter\ifx\csname Cut:#1\endcsname\relax\else + \expandafter\ifx \csname NoCut:#1\endcsname\relax + \expand:after{\expandafter\let\csname NoCut:#1\endcsname=}% + \csname Cut:#1\endcsname + \fi + |<paused cut at|>% + \fi } +\def\ContCutAt#1{% + \expandafter\ifx \csname NoCut:#1\endcsname\relax\else + \expand:after{\expandafter\let\csname Cut:#1\endcsname=}% + \csname NoCut:#1\endcsname + \fi} +>>> + +e.g., \''PauseCutAt{section}' + +\<paused cut at\><<< +\expandafter\let\csname Cut:#1\endcsname=\null +\expandafter\def\csname Cut:#1\endcsname{% + \gHAdvance \TitleCount 1 + \null \:gobble +}% +>>> + + +% \expandafter\global \expandafter +% \let\csname #1:Count\endcsname\TitleCount + + + + +Intuitively, a conditional command \`'\UnCut:division' is prepended to +\`'\division' and \`'\terminator'. When defined, it has the meaning +of a EndHPage. Hence, implicity we have also a terminator at the end +of the document. + +The new commands are executed only if they are defined. The +\`'\Cut:division' is defined by \`'\CutAt', +the \`'\UnCut:division' is defined by \`'\Cut:division', and +\`'\UnCut:division' undefines \`'\UnCut:division'. The hook for +\`'Cut:division' is introduced in +\LinkPort\<button for cut at sect\>{\tt<button for cut at sect>}\EndLink. + + +\<html cut points\><<< +\def\:CutAt#1#2,#3//{% + \csname ltx:like\endcsname + \expandafter\ifx \csname #2\endcsname \relax + \:warning{\string\CutAt\space at undefined + `\expandafter\string\csname#2\endcsname'}% + \fi + \csname ltx:nolike\endcsname + |<modify current command|>% + |<notify current division to higher ones in the hierarchy|>% + |<overide default: open new file for current division|>% +} +>>> + +\<shared config\><<< +\NewConfigure{UndefinedSec}[1]{% + \ifx \ltx:like\:UnDef \let\ltx:like|=\empty \let\ltx:nolike|=\empty \fi + \append:def\ltx:like{\expandafter\let\csname #1\endcsname|=\empty}% + \append:def\ltx:nolike{\expandafter\let\csname #1\endcsname|=\:UnDef}% +} +>>> + +\<modify current command\><<< +\expandafter\ifx \csname #2:\endcsname\relax + \expand:after{\expandafter\let \csname #2:\endcsname |=}% + \csname #2\endcsname +\else \:warning{Again \string\CutAt{#2}?}% +\fi +\expandafter\def \csname #2\endcsname{% + \csname UnCut:#2\endcsname + \csname #2:\endcsname}% +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Connection to Super Divisions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<notify current division to higher ones in the hierarchy\><<< +\:UnCutAt#2,#3,//% +>>> + +\<html cut points\><<< +\def\:UnCutAt#1,#2,#3//{% + \def\:temp{#2}\ifx \:temp\empty \else + \def\:tempa{#1}\ifx \:tempa\:temp \else + \expandafter\ifx \csname#2:#1\endcsname\relax + |<uncut @1 at @2|>% + \else \:warning{#2 already assumed in \string\CutAt{#1,...}}\fi + \fi + \def\:temp{\:UnCutAt#1,#3//}% + \expandafter\:temp + \fi +} +>>> + + +\<uncut @1 at @2\><<< +\expand:after{\expandafter\let \csname #2:#1\endcsname |=}% + \csname #2\endcsname +\expandafter\def \csname #2\endcsname{% + \csname UnCut:#1\endcsname + \csname #2:#1\endcsname}% +>>> + +%%%%%%%%%%%%%%%%%%%% +\SubSection{HPages} +%%%%%%%%%%%%%%%%%%%% + +\<overide default: open new file for current division\><<< +\expandafter\edef \csname Cut:#2\endcsname##1{% + \noexpand\cut:at{#2}{##1}#1}% +>>> + +\<html cut points\><<< +\def\cut:at#1#2#3{{% + |<HPages for sec|>% + |<large file name for @2|>% + \if #3+\HPage<#1>{#2}% + \else + |<CutAt TITLE|>% + \HPage<#1>{}\fi + \ifx \prevCutAt\empty \else \TagFile{|<nxt but file|>\lastsec:id}\fi + \AtEndHPage{|<prev/next at end of hpage|>\UnCut:{#1}}% + \expandafter\xdef\csname UnCut:#1\endcsname{% + \noexpand\EndHPage[\HPageDepth]{}}% +}} +\HAssign\lastsec:id|=0 +\def\cut:TTL#1{#1} +>>> + + + + +The following is for cut pages (typically, from sectioning commands). + +\<CutAt TITLE\><<< +\if #3|<- TITLE|>\else + \let\cut:TTL|=\:gobble + \begingroup + \csname no:fonts\endcsname|<TITLE env|>\:CutAtTITLE: + \xdef\:temp{\noexpand\Configure{TITLE+}{\a:CutAtTITLE{#2}}}% + \endgroup \:temp +\fi +>>> + +\<HPage TITLE\><<< +\no:pic +\edef\:temp{\noexpand\yes:pic \def\noexpand\:temp{#1}}\:temp +\begingroup + |<TITLE env|>\:HPageTITLE: + \no:pic + \edef\:tempa{\noexpand\yes:pic \def\noexpand\:tempa{#1}}\:tempa + \xdef\:temp{\cut:TTL{\noexpand\Configure{TITLE+}{\a:HPageTITLE{\ifx + \:temp\empty \file:name\else \:tempa\fi}}}}% +\endgroup \:temp +>>> + +\<- TITLE\><<< +->>> + +\<TITLE env\><<< +\def\gobble:font##1##2{##2}% +\:TITLE: +>>> + +The \''\gobble:font' is to remove the primitive font definitions of latex. + +\<html cut points\><<< +\let\:TITLE:|=\empty +\let\:CutAtTITLE:|=\empty +\let\:HPageTITLE:|=\empty +>>> + +\<html config util\><<< +\NewConfigure{CutAtTITLE+}[1]{\def\a:CutAtTITLE{#1}} +\NewConfigure{HPageTITLE+}[1]{\def\a:HPageTITLE{#1}} +>>> + + + +%%\NewStack\:head + +\<nxt but file\><<< +)N >>> + + +\<html cut points\><<< +\def\UnCut:#1{% + |<disable empty delayed toc|>% + \global\expandafter\let\csname UnCut:#1\endcsname|=\:UnDef + \xdef\lastsec:id{\file:id}% + \PopStack\prv:fl\:temp + \bgroup + \ifx\b:crsbt\empty + \ifx\bb:crsbt\empty\else + \:hookI{Back#1}{\default:bts{|<tail|>}{|<front|>}}{}% + \fi + \else + \:hookI{Back#1}{\default:bts{|<tail|>}{|<front|>}}{}% + \fi + \csname b:CutAt#1\endcsname \let\after:endfl|=\EndFileStream + \def\EndFileStream##1{\after:endfl{##1}\egroup + |<AfterHPage for CutAt|>% + |<pop btons|>% + }} +>>> + + +We have here \`'\Configure{CutAt#1}{..}{..}' for any sectioning +part. The sectioning commands of LaTeX have a +\`'\Configure{section-type} {before-section} {after-section} +{before-title}{after-title}' command that calls +\`'\Configure{CutAt section-type} {before-section} {after-section}' +to insert code at the start and end of the hypertext pages. + +On the other hand \`'\Configure{+CutAt}{section-type}{before}{after}' +offers delimiters for the buttons. The +\`'\NewConfigure{CutAt}[1]{\Configure{CutAt#1}}' can be offered for +consistency. DO WE NEED IT? + +\<tail\><<< +tail>>> + + +\<disable empty delayed toc\><<< +\global\expandafter\let\csname TocAt*\endcsname|=\empty +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Prev/Next Cut Buttons} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<AfterHPage for CutAt\><<< +\PopStack\:afterbt\:temp +\ifx\:temp\empty\else\:hookI{After#1}{}{}\fi +\PushStack\:afterbt{}% +>>> + +\<HPages for sec\><<< +\def\BeforeHPageButton{\if #3+% + \def\:temp{\:hookI{Before#1Button}{\csname a:+CutAt#1\endcsname}}% + \expandafter\:temp\fi}% +\edef\prev:File{\ifnum \sec:lvl>\HPageDepth\space + \RefFileNumber\lastsec:id \fi}% +\def\AfterHPageButton{\if #3+% + \def\:temp{\:hookI{After#1Button}{\csname b:+CutAt#1\endcsname}}% + \expandafter\:temp\fi}% +\def\HPageHeader##1{% + |<prev/next at start of hpage|>% + \xdef\nextCutAt{\RefFile{|<nxt but file|>\file:id}}% + \global\let\prevCutAt|=\prev:File + |<push HPages|>% + \PushStack\prv:fl{#3}\csname a:CutAt#1\endcsname + \ifx\a:crsbt\empty + \ifx\aa:crsbt\empty\else + \:hookI{Front#1}{\default:bts{|<front|>}{|<tail|>}}{##1}% + \fi + \else + \:hookI{Front#1}{\default:bts{|<front|>}{|<tail|>}}{##1}% + \fi +}% +>>> + + +\<shared config\><<< +\NewConfigure{+CutAt}[3]{% + \expandafter\def\csname Before#1Button\endcsname##1{#2}% + \expandafter\def\csname After#1Button\endcsname##1{#3}} +>>> + + +\<push HPages\><<< +\sv:btns\nextCutAt +\sv:btns\prevCutAt +>>> + + +\<html utilities\><<< +\def\sv:btns#1{\ifx #1\space\global\let#1|=\empty \fi \PushStack\prv:fl#1} +>>> + +\<pop btons\><<< +\PopStack\prv:fl\prevCutAt +\PopStack\prv:fl\nextCutAt +\ifx \prv:fl\empty + \let\prevCutAt|=\:UndDef + \let\nextCutAt|=\:UndDef +\else + \PopStack\prv:fl\:tempb + \PopStack\prv:fl\prevCutAt + \PopStack\prv:fl\nextCutAt + \PushStack\prv:fl\nextCutAt + \PushStack\prv:fl\prevCutAt + \PushStack\prv:fl\:tempb +\fi +>>> + + +\<html config util\><<< +\NewConfigure{crosslinks}[8]{% + \def\default:bts##1##2{% + |<record cond buttons|>% + \def\:temp{##1}\ifx \:temp\empty + \ifx\a:crsbt\empty\ifx \aa:crsbt\empty |<remove buttons|>\fi\fi + \a:crsbt + \else + \ifx\b:crsbt\empty\ifx \bb:crsbt\empty |<remove buttons|>\fi\fi + \b:crsbt + \fi + \def\CLB:next{\expandafter\cond:bt\next:bt{}{#3}}% + |<prev for leading node in option `next'|>% + \def\CLB:prev{\expandafter\cond:bt\prev:bt{}{#4}}% + \def\CLB:prevtail{\expandafter\cond:bt\prev:bt{|<tail|>\prev:bt}{#5}}% + |<front/tail button|>% + \def\:temp{#8}\ifx \:temp\empty \else + \ifx \cond:bt\:gobbleIII + \else \def\CLB:up{\def\:temp{#8}#1\ExitHPage{#8}#2}\fi\fi + |<insert cross link buttons|>% + |<restore cond buttons|>% + \def\:temp{##1}\ifx \:temp\empty \aa:crsbt\else \bb:crsbt\fi + |<tail target|>}% + |<set linkless buttons|>% +} +\NewConfigure{crosslinks+}[4]{% + \def\a:crsbt{#1}\def\aa:crsbt{#2}\def\b:crsbt{#3}\def\bb:crsbt{#4}} +\NewConfigure{crosslinks-}[2]{% + \def\a:cond:bt{#1}\def\b:cond:bt{#2}} +>>> + + +\<set linkless buttons\><<< +\def\cond:bt##1##2##3{% + \expandafter\ifx\csname a:cond:bt\endcsname \relax + \ifx ##1\empty \else + \def\:temp{##3}\ifx \:temp\empty \else + #1\Link[##1]{##2}{}##3\EndLink #2% + \fi \fi + \else + \ifx ##1\empty + |<set a linkless button|>% + \else + \def\:temp{##3}\ifx \:temp\empty \else + #1\Link[##1]{##2}{}##3\EndLink #2% + \fi \fi + \fi +}% +>>> + + +\<set a linkless button\><<< +\def\:temp{next}\ifx \:temp\cur:bt \else + \ifx \c:next:\:gobbleII \else \let\:temp=\empty \fi +\fi +\ifx \:temp\empty \else + \ifx \a:cond:bt\empty \ifx \b:cond:bt\empty #1\else + \a:cond:bt\fi + \else \a:cond:bt\fi + ##3% + \ifx \a:cond:bt\empty \ifx \b:cond:bt\empty #2\else + \b:cond:bt\fi + \else \b:cond:bt\fi +\fi +>>> + + + +\<insert cross link buttons\><<< +\CLB:menu +>>> + +\<\><<< +\csname CLB:next\endcsname %1 +% +\csname CLB:prevup\endcsname %2 +\csname CLB:prev\endcsname %5 +% +\csname CLB:prevtailup\endcsname %3 +\csname CLB:prevtail\endcsname %6 +% +\csname CLB:tail\endcsname %7 +% +\csname CLB:front\endcsname %8 +% +\csname CLB:up\endcsname %9 +>>> + + +\<html config util\><<< +\expandafter\def\csname c:crosslinks*:\endcsname{% + \let\CLB:menu\empty \CLB:menuitem } +\def\CLB:menuitem#1{% + \def\:tempa{#1}\ifx \:tempa\empty \else + \append:def\CLB:menu{\csname a:crosslinks:#1\endcsname + \def\cur:bt{#1}\csname CLB:#1\endcsname + }% + \def\:temp{prev}\ifx \:temp\:tempa + \append:def\CLB:menu{\csname a:crosslinks:prev\endcsname + \csname CLB:prevup\endcsname + }% + \else + \def\:temp{prevtail}\ifx \:temp\:tempa + \append:def\CLB:menu{% + \csname a:crosslinks:prev\endcsname + |<prevtail hook|>% + \csname CLB:prevtailup\endcsname + }% + \fi \fi + \expandafter\CLB:menuitem + \fi +} +\Configure{crosslinks*} + {next} + {prev} + {prevtail} + {tail} {front} + {up} + {} +\NewConfigure{crosslinks:next}{1} +\NewConfigure{crosslinks:prev}{1} +\NewConfigure{crosslinks:prevtail}{1} +\NewConfigure{crosslinks:tail}{1} +\NewConfigure{crosslinks:front}{1} +\NewConfigure{crosslinks:up}{1} +>>> + + + +\<record cond buttons\><<< +\let\sv:cond:bt|=\cond:bt +>>> + +\<restore cond buttons\><<< +\let\cond:bt|=\sv:cond:bt +>>> + +\<remove buttons\><<< +\let\cond:bt|=\:gobbleIII +>>> + + + + +\`'\Configure{crosslinks+} + {before-front-links}{after-front-link} + {before-back-link}{after-back-link}' + + +\<front/tail button\><<< +\def\:temp{##2}% +\ifx \:temp\empty + \def\:temp{#6}% + \ifx \:temp\empty \else + \def\CLB:tail{\def\:temp{#6}#1\Link[\RefFileNumber\file:id]{}{}#6\EndLink #2}\fi +\else + \def\:temp{#7}% + \ifx \:temp\empty \else + \def\CLB:front{\def\:temp{#7}#1\Link{##2\RefFileNumber\file:id}{}#7\EndLink #2}\fi +\fi +>>> + +Neds the \''\expandafter' above because \''\Link' modifies \''\:te:mp'. + +\<tail target\><<< +\def\:temp{##1}\ifx \:temp\empty \else + \ifx\yes:tail\def + \Link{}{##1\RefFileNumber\file:id}\EndLink +\fi \fi +>>> + +\<prevtail hook\><<< +\ifx\a:crsbt\empty\else \let\yes:tail\def\fi +\ifx\aa:crsbt\empty\else \let\yes:tail\def\fi +\ifx\b:crsbt\empty\else \let\yes:tail\def\fi +\ifx\bb:crsbt\empty\else \let\yes:tail\def\fi +>>> + +%\NewStack\prv:fl + +\<html cut points\><<< +\let\prevCutAt|=\empty +>>> + + +\''french.sty' chages the definition of \''\special' and that creates +problems for tex4ht. Hence, the following redefdinition. When +\''french.sty' and the likes are not around we can't just go for +\''\let\ht:special=\special' because when the special is written out +we don't \''\ht:special' there. Hence the configure. + +\<early utilities\><<< +\NewConfigure{special}[1]{\def\ht:special{#1}} +\Configure{special}{|<default special|>} +>>> + +\<default special\><<< +\special +>>> + +%\let\real:special|=\special +%\NewConfigure{special}[1]{\def\ht:special{#1}} +%\Configure{special} +% {\ifx \real:special\special \expandafter\special +% \else \expandafter\real:special\fi} + + +\<html Configure's\><<< +\edef\:temp{\string\special} +\edef\:tempa{\meaning\special} +\ifx \:temp\:tempa \else + \def\:temp{|<default special|>} + \ifx \:temp\ht:special + \:warning{Redefined \string\special. Might + need \string\Configure{special}{<system-special>}} +\fi\fi +>>> + +\<protect from /special redef\><<< +\let\special|=\relax +>>> + + +\<early utilities\><<< +\long\def\expand:after#1{\def\e:tmp{#1}\expandafter\e:tmp} +>>> + + + +\<tempa := new file; tempb := old file\><<< +\tmp:cnt|=\maxfile:id \advance\tmp:cnt |by 1 +\edef\HP:file{\j:bname |<tail for file name|>\tmp:cnt }% +\xdef:cs{in:fid:#1}{\file:id}% +\edef\:tempb{\RefFileNumber{\file:id}}% +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{The `next' Option} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\<html cut points\><<< +\:CheckOption{next} \if:Option + \def\next:bt{\nextCut} + \def\prev:bt{\prevCut} +\else + \Log:Note{for linear crosslinks of pages, + use the command line option `next'}% + \def\next:bt{\nextCutAt} + \def\prev:bt{\prevCutAt} +\fi +>>> + +\<early utilities\><<< +\def\Log:Note#1{% + \immediate\write-1{--------------------------------------}% + \immediate\write-1{--- Note --- #1}% + \immediate\write-1{--------------------------------------}% +} +>>> + +\<prev/next at end of hpage\><<< +\ct:btn +>>> + +\<prev/next at start of hpage\><<< +\ct:btn +\gHAdvance\C:tAtN |by 1 +\Tag{fileidcut \file:id}{\C:tAtN}% +\TagFile{cutfile \C:tAtN}% +>>> + +\<html cut points\><<< +\HAssign\C:tAtN |= 0 +\def\ct:btn{{% + \HAssign\C:tAtN |= 0\LikeRef{fileidcut \file:id}% + \Advance:\C:tAtN |by -1 + \xdef\prevCut{\RefFile{cutfile \C:tAtN}}% + \ifx \prevCut\space \global\let\prevCut|=\empty \fi + \Advance:\C:tAtN |by 2 + \xdef\nextCut{\RefFile{cutfile \C:tAtN}}% + \ifx \nextCut\space \global\let\nextCut|=\empty \fi +}} +>>> + +\<prev for leading node in option `next'\><<< +\ifx \prevCut\empty + \def\:temp{\prevCut}\ifx \:temp\prev:bt + \Recall:HPageTag\HP:file \Save:HPageTag\HP:file + \def\:temp{#4}\ifx \:temp\empty \else + \def\CLB:prevup{% + \def\:temp{#4}#1\Link[\RefFile{|<fr bt fl|>\HP:file}]{}{}#4\EndLink #2}% + \fi + \def\:temp{#5}\ifx \:temp\empty \else + \def\CLB:prevtailup{% + \def\:temp{#5}#1\Link[\RefFile{|<fr bt fl|>\HP:file}]{tail\Jobname + }{}#5\EndLink #2}% + \fi + |<next button in root of `next' option|>% +\fi \fi +>>> + +% \expandafter\cond:bt\prev:bt{}{%... add march 25, 2005 + +\<next button in root of `next' option\><<< +\long\def\:tempb####1####2{\gdef\root:next{% + \def\:temp{####2}\edef\HP:file{\RefFileNumber\file:id}% + \ifx \:temp\HP:file + \global\let\root:next|=\empty + \def\:temp{#3}\ifx \:temp\empty + \Link{}{tail\Jobname}\EndLink + \else + \expandafter\ifx \csname a:next+\endcsname\relax #1\else + \csname a:next+\endcsname \fi + \expandafter\ifx \csname a:next\endcsname\relax + \def\:next{#3}% + \else \let\:next\a:next \fi + \ifx \:next\empty + \Link{}{tail\Jobname}\EndLink + \else + \Link[####1]{}{tail\Jobname}\:next\EndLink + \fi + \expandafter\ifx \csname b:next+\endcsname\relax #2\else + \csname b:next+\endcsname \fi + \fi \fi}}% +\edef\:temp{\noexpand\:tempb + {\RefFileNumber\file:id}{\RefFile{|<fr bt fl|>\HP:file}}}% +\:temp +>>> + +\<html cut points\><<< +\let\root:next|=\empty +>>> + + +\<html config util\><<< +\NewConfigure{next}[1]{\def\a:next{#1}} +\NewConfigure{next+}[2]{% + \expandafter\def\csname a:next+\endcsname{#1}% + \expandafter\def\csname b:next+\endcsname{#2}} +>>> + + + + + + + +\<elements for cut points\><<< +\:CheckOption{next} \if:Option \else + \let\c:next:|=\:gobbleII +\fi +>>> + + +%%%%%%%%%%%%% +\SubSection{File Naming} +%%%%%%%%%%%%% + + + +\<HPages for sec\><<< +\csname a:CutAt-filename\endcsname{#1}{#2}% +>>> + +\<early utilities\><<< +\NewConfigure{CutAt-filename}[1]{% + \expandafter\def\csname a:CutAt-filename\endcsname##1##2{#1}} +\Configure{CutAt-filename}{} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Grouping Mecahanism for CutAt} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +A \`'\CutGroup{ChGroup,Chapter,LikeChapter,Appendix}' allows unified +requests of the form \`'\CutAt{ChGroup,Part}'. + +\<html cut points\><<< +\def\CutGroup#1{\Cut:Group#1,,|<par del|>} +\def\Cut:Group#1,{% + \expandafter\ifx \csname #1\endcsname\relax + \expandafter\let\csname #1\endcsname|=\:gobble\fi + \def\HP:file{#1}% + \do:list \cut:gr,} +>>> + + + + +The \`'\CutGroup{group,division}' replaces \`'\division{#1}' +with \`'\group{#1}\division{#1}', and \`'\Cut:division{#1}' +with \`'\Cut:group{#1}\Cut:division{#1}'. + +\<tex html cut points\><<< +\def\cut:gr#1{% + \edef\:temp{% + \let\:csname \HP:file :#1\endcsname |=\:csname #1\endcsname + \let\:csname \HP:file :Cut:#1\endcsname |=\:csname Cut:#1\endcsname + \def\:csname #1\endcsname####1{% + \noexpand\cond:cs{\HP:file}{####1}% + \:csname \HP:file :#1\endcsname{####1}}% + \def\:csname Cut:#1\endcsname####1{% + \noexpand\cond:cs{Cut:\HP:file}{####1}% + \noexpand\cond:cs{\HP:file :Cut:#1}{####1}}% + }\:temp } +>>> + + +\SubSection{Utilities} + + +\<general utilities\><<< +\def\cond:cs#1#2{% + \expandafter\ifx \csname #1\endcsname\relax \else + \csname #1\endcsname{#2}% + \fi +} +\def\do:list#1,#2,{% + \def\:temp{#2}\ifx \:temp\empty \expandafter\stop:do + \else #1{#2}\fi + \do:list#1,} +\def\stop:do#1|<par del|>{} +>>> + + + + + + + + + + + + + + + +\Chapter{Coauthoring} + + + +\<imports\><<< +|<import-export interface|> +\:CheckOption{family} \if:Option + |<import-export commands|> + |<imports utilities|> +\else + |<no import-export|> +\fi +>>> + + + + + + + +\<general utilities\><<< +\def\BI:gbl{\ifx [\:temp \expandafter\bi:gbl\else + \expand:after{\bi:gbl[]}\fi} +\def\bi:gbl[#1]#2{} +>>> + + +\<html utilities\><<< +\def\ro:nd#1#2{% + \gHAdvance#1 |by #2 + \gHDivide#1 |by #2 + \gHMultiply#1 |by #2 } +>>> + +\Section{The Commands} + +The extension for the name should refer to the \`'xref' file, +and if omitted an \`'.xref' is aasumed. + +\<import-export interface\><<< +\def\ParentOf{\gHAdvance\TitleCount 1 + \global\let\mu:span|=\TitleCount \futurelet\:temp\:mprt} +>>> + +\<no import-export\><<< +\let\:mprt|=\BI:gbl +>>> + + +\<import-export commands\><<< +\def\:mprt{\fm:call\:Imprt} + +\def\:Imprt[#1]#2#3{% + \def\:temp{#2}\ifx \:temp\Jobname + \:warning{#2 \string\ParentOf\space#2?}\fi + \Needs-{child `#2'}% + \LoadRef[|<screen ref from child @2|>]{#3}{##1}% + \imp:var{#2}fstf:id,#1|<par del|>% + |<send links from parent to child|>% + \the\:tokwrite{\string\doTocEntry + \string\tocParentOf{#2}{}{}\relax}} + +\HAssign\fstf:id|=0 +>>> + + + + +\<import-export interface\><<< +\def\ChildOf{\futurelet\:temp\:xprt} +>>> + +\<no import-export\><<< +\Odef\ChildOf[#1]#2{\:warning{\string\ChildOf{#2} + without \string\Preamble{...,family,...}}} +\let\:xprt|=\BI:gbl +>>> + + + + +\<import-export commands\><<< +\def\:xprt{\fm:call\:Exprt} + +\def\:Exprt[#1]#2#3{% + \ifnum \maxfile:id>1 + \:warning{\string\ChildOf{#2} not at root file}\fi + \Needs-{parent `#2'}% + \ld:flxrf{#3}{|<toc tag|>}% + \LoadRef[|<screen ref from parent @2|>]{#3}{##1}% + \xp:var{#2}fstf:id,#1|<par del|>% + |<adjust file ids info up|>% + \def\export:hook{\exprt:tag{#2}fstf:id,#1|<par del|>}% + |<send links from child to parent|>% + \gdef\:Export[##1]##2{\:warning{\string\ChildOf + \string{##2\string}\space ignored (not 1st)}}% +} +>>> + + + + + +\<import-export commands\><<< +\def\rmv:ext#1.#2|<par del|>{#1} + +\def\fm:call#1{\ifx [\:temp \expand:after{\fm:cll#1}\else + \expand:after{\fm:cll#1[]}\fi} +\def\fm:cll#1[#2]#3{\edef\:temp{\noexpand\noexpand\noexpand + #1[#2]{\noexpand\rmv:ext#3.|<par del|>}{#3}}% + \edef\:temp{\:temp}\:temp} +>>> + + + +\SubSection{Links} + + +\<send links from parent to child\><<< +\Tag{|<screen tag to child @2|>-up}{\RefFileNumber\FileNumber}% +\Tag{|<screen tag to child @2|>-prev}{\childFile}% +\xdef\childFile{\LikeRef{|<screen ref from child @2|>-down}}% +\ifx \cld:n\:UnDef \else \Tag{\cld:n}{\childFile}\fi +\xdef\cld:n{|<screen tag to child @2|>-next}% +>>> + + + +\<send links from child to parent\><<< +\Tag{|<screen tag to parent @2|>-down}{\RefFileNumber\FileNumber}% +\ch:lnk\parentFile{#2}{up}% +\ch:lnk\prevChildFile{#2}{prev}% +\ch:lnk\nextChildFile{#2}{next}% +\global\let\nsrt:chlnks|=\nsrt:cldnks +\nsrt:chlnks{|<front|>}{|<tail|>}{FrontChild}% +>>> + +We need in \`'\childFile' initially a space and not empty, because +otherwise Ref will produce the page number. + + +\<import-export commands\><<< +\let\childFile|=\space +\def\ch:lnk#1#2#3{% + \xdef#1{\LikeRef{|<screen ref from parent @2|>-#3}}% + \ifx #1\space \let#1|=\empty\fi} +>>> + +Note that the following might be a problem for when HPage +is nested in regular file. + +\<import-export commands\><<< +\def\nsrt:cldnks#1#2#3{{% + \let\prevCutAt|=\prevChildFile + \let\nextCutAt|=\nextChildFile + \def\ExitHPage##1{\Link[\parentFile]{}{}##1\EndLink} + \:hookI{#3}{\default:bts{#1}{#2}}{}}} +>>> + +\<buttons at end of child\><<< +\root:next +\ifx \nsrt:chlnks\:UnDef +\else \nsrt:chlnks{|<tail|>}{|<front|>}{BackChild}\fi +>>> + +\Section{Values in Variables} + +\<import-export commands\><<< +\def\imp:var#1#2,#3|<par del|>{% + \gt:ops{#2}% + \Tag{|<screen tag to child @1|>-#2}{|<the|>\csname #2\endcsname}% + \edef|<temp|>{0\LikeRef{|<screen ref from child @1|>-#2}}% + \expand:after{\expandafter|<advance|>\csname + #2\endcsname |by }|<temp|>% + \if:notempty{#3}{\imp:var{#1}#3,|<par del|>}} +>>> + +A child transfers up the changes made to a counter, not an absolute +value. The entry value is recorded in \`'\csname :#2:\endcsname'. + +\<import-export commands\><<< +\def\xp:var#1#2,#3|<par del|>{% + \gt:ops{#2}% + \edef|<temp|>{0\LikeRef{|<screen ref from parent @1|>-#2}}% + \expandafter|<assign|>\csname #2\endcsname|=|<temp|> + \expandafter\HAssign\csname :#2:\endcsname|=|<temp|> + \if:notempty{#3}{\xp:var{#1}#3,|<par del|>}} +>>> + +\<import-export commands\><<< +\def\exprt:tag#1#2,#3|<par del|>{% + \tmp:cnt |= \csname #2\endcsname + \advance\tmp:cnt |by -\csname :#2:\endcsname + \Tag{|<screen tag to parent @1|>-#2}{\the\tmp:cnt}% + \if:notempty{#3}{\exprt:tag{#1}#3,|<par del|>}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Overide Previous Files} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +The \''\:clearpage' is needed below to clear the old tags and xref +files, before new ones start to come. The \''\Tag' few lines below can be lost. + +\<adjust file ids info up\><<< +\closeout\:refout +\openout\:refout|=\jobname.xref \:clearpage +|<fix point for file ids at child|>% +\gHAssign\maxfile:id |= \fstf:id +\gHAssign\bs:fileid |= \maxfile:id +\global\let\file:id|=\maxfile:id +\Tag{|<auto file tag|>\file:id |<Tag/Ref: file-id -> file-name|>}% + {\jobname.\:html}% +\expandafter\xdef\csname + |<csname: file name -> file id|>\jobname.\:html\endcsname{\file:id}% +\xdef:cs{|<live|>\file:id}{}% +>>> + + +\<file not overided by /ChildOf\><<< +\csname FN #1\endcsname > \bs:fileid +>>> + + +\SubSection{Contain Changes} + + +We want to reduce the number of compilations due to changes. We can't do +much with sectioning numbers, but we can do quite a lot with labels of +links. Note that the addresses are made up of file numbers + label numbers. + +We make the children `fix-points' with respect to file numbers, by +allocating them addresses that are equal to `child-id * 10000'. We +make here an assumption that a compilation will not generate more than +9999 files. + + +\<fix point for file ids at child\><<< +\gHAdvance\fstf:id |by 10000 +>>> + +It would be nice to have also fix-points for file ids within children, +but this will cause holes. The holes will result in fake names +\`'\csname filei-d\endcsname' which unneccesariliy consume ids and can +overflow the memory quite quickly. This names are inspected at points +that files are closed, and checking is performed for opened subfiles. + + +We can also ask that large files will provide fixed-points. We do so +with the following command, which so far is used only at cut +points. It requests distinguished automatically generated file names +for the class that is identified by the two leading characters of the +given parameter (i.e., sectioning type in case of the cut points). +These are really not fixed point, because they don't fix unique file +names (e.g., by rounding up file ids). + +\<large file name for @2\><<< +\fx:pt #1xxx|<par del|>% +>>> + +Do we want \`' \ro:nd\html:lbl{100000}%' below? + +\<html utilities\><<< +\def\fx:pt#1#2#3|<par del|>{% + \expandafter\ifx \csname big:#1:#2\endcsname\relax + \expandafter\gHAssign\csname big:#1:#2\endcsname |= 0 \fi + \expandafter\gHAdvance\csname big:#1:#2\endcsname |by 1 + \edef\big:fn{#1#2\csname big:#1:#2\endcsname}} +>>> + + + +On the other hands, we try to make sectioning commands fixed points +for labels. Hence, we try to reduce sensitivity of tocs to changes. +See \`'\<round ids between sections\>' + + + + +The validity of the above fixed points carries on as far as the +specified points are really fixed. If they become fluid, then +everything becomes fluid. + + + + + + + + +To get evrything working, we need 4 compilations (in modifications +less might be sufficient). + +\List{ord} + +\item A compilation to create the starting file number for each node +(child/ parent). That is, fix file numbers for children. + +\item A compilation for using the right file numbers, and to create +the correct tags within the tocs. +That is, to collect moveable information like tables of +contents and relationships between files. + +\item A compilation to use the right tags, and to create the right +xref for the tags in the tocs +That is, to collect cross-references from moveable info. + +\item A compilation to incorporate the cross refs + +\EndList + + + +\SubSection{Cross-Reference Screening} + +\''\Jobname' has been introduced for \''\LoadRef[..]' + +\<screen ref from child @2\><<< +#2-\Jobname>>> + +\<screen ref from child @1\><<< +#1-\Jobname>>> + +\<screen ref from parent @2\><<< +#2-\Jobname>>> + +\<screen ref from parent @1\><<< +#1-\Jobname>>> + +\<screen tag to child @1\><<< +\Jobname-#1>>> + +\<screen tag to child @2\><<< +\Jobname-#2>>> + +\<screen tag to parent @1\><<< +\Jobname-#1>>> + +\<screen tag to parent @2\><<< +\Jobname-#2>>> + + + + +\Section{Tables of Content} + + + + +The are needed because some variables are of TeX and others +are of TeX4ht. + + + +\<imports\><<< +\def\tocParentOf#1{{% + \def\:temp{#1}\ifx \:temp\Jobname + \:warning{#1 \string\ParentOf\space#1?} + \else \expand:after{\ld:flxrf{#1}{|<toc tag|>}\get:input{#1.4tc}}\fi}} +>>> + + +\Section{Load File and Link Xref of Relative} + + +\<imports\><<< +\def\ld:flxrf#1#2{% + \let\:CrsWd|=\Cross:Word + \def\Cross:Word##1##2{% + \expandafter\let\csname |<tag of Tag|>##2\endcsname|=\:UnDef + \:CrsWd{##1}{##2}}% + \LoadRef[|<auto file tag|>]{#1}{##1}% + \LoadRef[|<HTag tag|>#2]{#1}{##1}% + \let\Cross:Word|=\:CrsWd +} +>>> + + + + + + + +\SubSection{Local Utilities} + + + + + + + + + + + + + + + + + +The following are needed because some variables are of TeX and others +are of TeX4ht. + +\<imports utilities\><<< +\def\gt:vi#1#2#3#4#5#6#7|<par del|>{#1#2#3#4#5#6} +\def\gt:vr#1#2{\edef#1{\expandafter + \gt:vi\meaning#2 .......|<par del|>}} +\gt:vr\c:unt\tmp:cnt +\def\chk:vr#1#2{\expand:after{\gt:vr\:temp#2 #1\:temp\c:unt}} + +\def\gt:ops#1{% + \expand:after{\chk:vr\ifx}\csname#1\endcsname \let|<the|>|=\the + \let|<assign|>|=\empty \let|<advance|>|=\advance + \else \let|<the|>|=\empty + \let|<assign|>|=\HAssign \let|<advance|>|=\Advance: + \fi } +>>> + +\<assign\><<< +\:tempa>>> + +\<advance\><<< +\:tempb>>> + +\<temp\><<< +\:tempc>>> + +\<the\><<< +\:tempd>>> + + + + + + +\Chapter{Subdivisions} + + +\<divisions\><<< +|<elements for divs|> +|<no trace sec config|> +\ifHtml |<html divs|> + \:CheckOption{hooks+} \if:Option + \else \:CheckOption{hooks} \fi + \if:Option |<trace sec config|>\fi +\fi +|<tex divisions|> +>>> + + + +\Section{Interface} + +The first parameter of \`'\Def:Section' provides the command name, the +second gives a non-parametric code that produces the title number, and +the third gives a single-parameter code for producing the title +itself. + + + +\<elements for divs\><<< +\long\def\NewSection#1#2{% + \Def:Section#1{#2}{##1}% + \edef\:temp{\expandafter\:gobble\string#1}% + \Configure:Sec\:temp{}{}{}{}% + \ConfigureToc{\expandafter\:gobble\string#1}{\empty}{\empty}{}{}} +>>> + + +\`'\NewSection\DocChapter {counter}' + +The parameter \`'##1' holds the title head. + + +\<endsection config\><<< +\NewConfigure{end#1}[1]{\expandafter + \def\csname a:end#1\endcsname{##1}}% +\Configure{end#1}{} +>>> + + +\<elements for divs\><<< +\def\Def:Section#1{% + \edef\:tempc{{\expandafter\:gobble \string#1}}% + |<Configure for sectioning command|>% + \futurelet\:temp\ch:NewSec} +\def\ch:NewSec{\if *\:temp\let\if:toc|=\:gobble\expandafter\op:NewSec + \else \let\if:toc|=\empty \expand:after{\op:NewSec+}\fi} +\def\op:NewSec#1{\expandafter\:NewSec\:tempc} +|<def /:Every|>% +\def\:NewSec#1#2{% + |<endsection config|>% + \expandafter\def\csname #1\endcsname{% + \expand:after{\let\if:toc|=}\csname if:#1toc\endcsname + \:StartSec{#1}{#2}}% + |<c:TITLE: for Sec|>% + \expandafter\let\csname if:#1toc\endcsname|=\if:toc + |<initiate BeforeEvery/Every div|>% + \expandafter\def\csname #1:ttl\endcsname##1} +>>> + +\''\Def:Section' + \''\Configure' = \''\NewSection' + + +\SubSection{/Configure} + + +\<no trace sec config\><<< +\long\def\Configure:Sec#1#2#3#4#5{% + \expandafter\ifx\csname c:#1\endcsname\relax \let\:tempa|=\relax \else + \def\:tempa{#4#5}\fi \ifx\:tempa\empty \else + |<conf for sec boundaries|>\fi + \expandafter\ifx\csname a:#1\endcsname\relax \let\:tempa|=\relax \else + \def\:tempa{#2#3}\fi \ifx\:tempa\empty \else + \expandafter\def\csname a:#1\endcsname##1{#2}% + \expandafter\def\csname b:#1\endcsname##1{#3}% + \fi +} +>>> + +Note that in \`'\Configure{Section}{before}{after}{before head}{after +head}' a change occures only when before-after pair is not empty. + + +\<trace sec config\><<< +\long\def\Configure:Sec#1#2#3#4#5{% + \expandafter\ifx\csname c:#1\endcsname\relax \let\:tempa|=\relax \else + \def\:tempa{#4#5}\fi \ifx\:tempa\empty \else + |<conf for sec boundaries|>\fi + \expandafter\ifx\csname a:#1\endcsname\relax \let\:tempa|=\relax \else + \def\:tempa{#2#3}\fi \ifx\:tempa\empty \else + |<conf for sec heads|>\fi +} +>>> + + +\<conf for sec heads\><<< + \def\:tempa{#2}\ifx \:tempa\empty + \expandafter\def\csname a:#1\endcsname + ##1{\hbox{\a:trc #13:4\b:trc}#2\hbox{\c:trc #14:4\d:trc}}% + \else + \expandafter\def\csname a:#1\endcsname##1{#2}% + \fi + \def\:tempa{#3}\ifx \:tempa\empty + \expandafter\def\csname b:#1\endcsname + ##1{\hbox{\a:trc #13:4\b:trc}#3\hbox{\c:trc #14:4\d:trc}}% + \else + \expandafter\def\csname b:#1\endcsname##1{#3}% +\fi +>>> + +\<conf for sec boundaries\><<< +\expandafter\c:def\csname c:#1\endcsname{#4}% +\expandafter\c:def\csname d:#1\endcsname{#5}% +>>> + + +\<Configure for sectioning command\><<< +\edef\:temp{\long\def\expandafter\noexpand \csname + c:\expandafter\:gobble \string#1:\endcsname + ####1####2####3####4{\noexpand + \Configure:Sec\:tempc{####3}{####4}{####1}{####2}}% + \noexpand\NewConfigure{CutAt\expandafter\:gobble \string#1}2% + \noexpand\NewConfigure{+CutAt\expandafter\:gobble \string#1}2% + }\:temp \expandafter\Configure\:tempc{\empty}{}{\empty}{}% +>>> + + + +\Section{Insertions at Boundaries of Logical Units} + +\SubSection{Non Cut Ends} + +\<boundaries of non-cut sections\><<< +\def\:tempa{#1}\noct:Close:Until +\ifx \:tempb \empty \else + \csname d:\ifx \found:\empty #1\else \found:\fi\endcsname \fi +|<advance TitleCount|>\csname c:#1\endcsname +>>> + + +Any need +for \`'\def\:tempa{#1}'? + + + +\<document end for non-cut logical units\><<< +\Close:UntilEnd +>>> + +The following \''\Do:Close''s deal with sectioning unit +at levels deeper than one we are openning. The sectioning +unit at the latter level is closed with the code +\`'\csname d:\ifx \found:\empty #1\else \found:\fi\endcsname' +we just proccessed. + +\<html divs\><<< +\def\noct:Close:Until{% + \let\:tempA|=\sec:typ \let\found:|=\empty + \let\:tempd|=\:Sections \noct:Check:Until + \ifx \:tempb\sec:typ \expandafter\Do:Close \fi + \let\sec:typ|=\:tempA +} +\def\noct:Check:Until{% + \ifx \:tempd\empty |<exit non-cut check-until|>\else + \PopStack\:tempd\:tempb + |<search non-cut end|>% + \ifx \:tempb\sec:typ \else + \expandafter\expandafter\expandafter\noct:Check:Until + \fi\fi } +>>> + +We are about to open a new section unit, and we go as down as possible +in the stack of already openned section units searching for the lowest +unit in the stack that should be closed. The \''\found:' variable +holds the lowest oppened unit to be closed. + + +\<exit non-cut check-until\><<< +\ifx \found:\empty \let\:tempb\empty +\else \let\:tempb|=\found: \let\sec:typ|=\found:\fi +>>> + + +\<search non-cut end\><<< +\edef\:tempe{\:tempb,% + \expandafter\ifx \csname a:end\:tempb\endcsname\relax \else + \csname a:end\:tempb\endcsname \fi,,}% +\expandafter\mod:typ\:tempe|<par del|>% +>>> + + +\<html divs\><<< +\def\mod:typ#1,#2|<par del|>{% + \def\:temp{#1}\ifx \:temp\empty\else + \edef\:temp{\expandafter\expandafter\expandafter + \:gobble\expandafter\string \csname #1\endcsname}% + \ifx \sec:typ\:temp + \let\found:|=\:tempb \let\:temp|=\empty + \else \def\:temp{\mod:typ#2|<par del|>}\fi + \fi \:temp +} +>>> + + +\SubSection{Cut Ends} + +\<boundaries of cut sections\><<< +\Configure{CutAt#1}{|<advance TitleCount|>\csname c:#1\endcsname + }{\def\sec:typ{#1}\Close:Until \csname d:#1\endcsname}% +>>> + +\<html divs\><<< +\def\Close:Until{% + \let\:tempd|=\:Sections \Check:Until + \ifx \:tempb\sec:typ \expandafter\Do:Close \fi +} +\def\Check:Until{ + \ifx \:tempd\empty \let\:tempb|=\empty \else + \PopStack\:tempd\:tempb + \ifx \:tempb\sec:typ \else + \expandafter\expandafter\expandafter\Check:Until + \fi\fi } +>>> + + +\SubSection{Common Utilities} + +\<record sections hierarchy\><<< +\PushStack\:Sections{#1}% +>>> + + +\<html divs\><<< +\PushStack\:Sections{}% +\PopStack\:Sections\:temp +\def\Do:Close{% + \PopStack\:Sections\:tempb + \ifx \sec:typ\:tempb \else + \csname d:\:tempb\endcsname + \expandafter\Do:Close + \fi +} +>>> + +The following is for closing logical units at the end of the file, +when they don't have hypertext pages of their own. + +\<html divs\><<< +\def\Close:UntilEnd{% + \ifx \:Sections\empty \let\:tempb|=\empty + \else \PopStack\:Sections\:tempb \fi + \ifx \:tempb\empty \else + \csname d:\:tempb\endcsname + \expandafter\Close:UntilEnd + \fi +} +>>> + + + +\Section{Building Blocks} + +The \''\ref', \''\Tag', \''\@currentlabel', and \''\cur:th' are for +latex. Also note that \''label' and \''\ref' can appear within +titles, and there we nullify them except within the titles themselves +and tocs. +One problem with the \''\ref' is that +they may cause nested links. + + +\<html divs\><<< +\def\:StartSec#1#2#3{% + \def\title:chs##1##2{##2}% + \def\sec:typ{#1}% + |<delayed TocAt|>% + \a:NoSection + |<round ids between sections|>% + |<button for cut at sect|>% + |<BeforeEvery hook|>% + \expandafter\ifx \csname a:#1\endcsname\relax \else + \csname a:#1\endcsname{#3}% + \fi + \b:NoSection \:Ttle{#1}{#2}{\csname #1:ttl\endcsname{#3}}% + \a:NoSection + \expandafter\ifx \csname b:#1\endcsname\relax \else + \csname b:#1\endcsname{#3}% + \fi + |<Every hook|>% + \csname a:AfterTitle\endcsname \b:NoSection + \def\title:chs##1##2{##1}% +} +\def\title:chs#1#2{#1} +>>> + +\<shared config\><<< +\NewConfigure{NoSection}{2} +>>> + + + + + +The \''\par' before \''|<Every hook|>' is to ensure the use of +\''\ShowPar'. Well, the \''\par' turned out to be a pain in cases we +want no space at all. Hence, we took it out. + + + + + + +On the other hands, we try to make sectioning commands fixed points +for labels. Hence, we try to reduce sensitivity of tocs to changes. + +\<round ids between sections\><<< +\ro:nd\html:lbl{1000}% +>>> + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Title} +%%%%%%%%%%%%%%%%%%%%%%%%% + +\<elements for divs\><<< +\def\:Ttle#1#2#3{% + \html:addr + |<hook for ref/label|>% + {|<introduce `doTocEntry toc@1 (@2) (@3) (page no)' to toc|>}% + {|<typeset @3 and link to toc entry|>}% +} +\gHAssign\TitleCount|=0 \global\let\mu:span|=\TitleCount +>>> + +\<advance TitleCount\><<< +\gHAdvance + \TitleCount |by 1 \global\let\mu:span|=\TitleCount +\expandafter\expandafter\expandafter\global \expandafter + \let\csname #1:Count\endcsname|=\TitleCount +>>> + + +For some reason (what it is?) we can't put the set TitleMark +together with the TitleConunt within CutAt--e.g., tex4ht-html32 screams at +subsection about undefined TitleMark. + +\<set TitleMark\><<< +\expandafter + \let\expandafter\TitleMark\csname #1HMark\endcsname +>>> + +\<tex divisions\><<< +\def\ConfigureMark#1#2{\long\expandafter + \def\csname #1HMark\endcsname{#2}} +>>> + + + +We nulify \''\Link', but this causes no problem because we are +within a group. + +well, \`' \let\Link|=\no:lnk ' is a problem for \`'\Configure{ref}', +so we introduced the latter comamnd. + +\<typeset the html sec title\><<< +\csname a:InsertTitle\endcsname +\csname InsertTitle\endcsname{#1}% +>>> + + +Can't use \''\Title'. Already in maple2e.tex. + + + + + +\<typeset @3 and link to toc entry\><<< +|<href on sec head?|>% +\no:lbl:idx \csname Modify#1Title\endcsname +\html:sectoc{#3}% +>>> + + + +\<tex divisions\><<< +\let\no:lbl:idx|=\empty +\let\toc:lbl:idx|=\empty +>>> + +\Section{Table of Contents} + +The \''\:writetoc' command outputs the expansion of its parameter, and +the page number, into the file. The expanded definition \`'\edef' +provides records the parameter according to the conditions that exist +when the command is encountered. + +\<introduce `doTocEntry toc@1 (@2) (@3) (page no)' to toc\><<< +\escapechar=`\\% +\protect:wrtoc +\csname Modify#1ToToc\endcsname +\edef\:writetoc{\csname if:toc\endcsname{\the\:tokwrite + {\string\doTocEntry + \string\toc \expandafter\ifx\csname toToc:#1\endcsname\relax #1\else + \csname toToc:#1\endcsname\fi + {#2}{\html:tocsec{\ifx \TocTitle\:UnDef #3\else + \TocTitle\fi}}{\the\:tokpage}\relax}}}% +\:writetoc \global\let\TocTitle|=\:UnDef +>>> + +\<elements for divs\><<< +\NewConfigure{toToc}[2]{% + \if !#2!\expandafter\let\csname toToc:#1\endcsname\:UnDef + \else \if !#1!% + \expandafter\let\csname IF:#2toc\expandafter\endcsname + \csname if:#2toc\endcsname + \expandafter\let\csname if:#2toc\endcsname\:gobble + \else \edef\:temp{\string @}\edef\:tempa{\string#1}% + \ifx \:temp\:tempa + \expandafter\let\csname if:#2toc\endcsname\empty + \else \edef\:temp{\string ?}% + \ifx \:temp\:tempa + \expandafter\let\csname if:#2toc\expandafter\endcsname + \csname IF:#2toc\endcsname + \else + \expandafter\def\csname toToc:#1\endcsname{#2}% + \fi\fi\fi\fi} +>>> + +\<elements for divs\><<< +\ifx \:tokwrite\:UnDef + \csname newtoks\endcsname\:tokwrite +\fi +\ifx \:tokpage\:UnDef + \csname newtoks\endcsname\:tokpage +\fi +\:tokpage={\folio} +>>> + +\<html latex divs\><<< + +>>> + +\<elements for divs\><<< +\:tokwrite|={\write\:tocout} +>>> + + +\<html divs\><<< +\def\protect:wrtoc{% + |<no Hnewline|>\PictureOff + \def\%{\string\%}\a:writetoc} +>>> + + + +\<html config util\><<< +\NewConfigure{writetoc}[1]{\concat:config\a:writetoc{#1}} +\let\a:writetoc|=\empty +>>> + + +The following might be solved with protect(?). + + +\`' \let\Link|=\no:lnk ' is a problem for \`'\Configure{ref}'. + + + + +\Section{Links} + + +\<html divs\><<< +\def\html:sectoc#1{\csname if:toc\endcsname{% + \xdef\CurSecHaddr{|<section html addr|>}% + \edef\:attr{\noexpand\scp:Link{% + \ifTag{|<HTag tag|>|<toc-section html addr|>}% + {|<toc-section html addr|>}% + {|<section html addr|>}% + }}% + \:attr{|<section html addr|>}}% + \ifx \EndTitle:Link\:gobble \if:toc{\scp:EndLink}\fi + |<typeset the html sec title|>\EndTitle:Link{\if:toc{\scp:EndLink}}} +\def\html:tocsec#1{\string\csname\space a:TocLink\string\endcsname + {\FileNumber + }{|<section html addr|>}{|<toc-section html addr|>}{#1}} +\let\CurSecHaddr|=\empty +>>> + +If option \`'sections+' is active, the full title is an anchor. +Might be a problem, in particular when the title contains +a footnote. If the option is not active, the anchor for access from +the tocs is empty. + +% [ CLASS="\sec:typ Head"] +% [ CLASS="\sec:typ Toc"] + + + +The command \''\uppercase' is put outside the command \''\:toc' to +convert the lower case character tokens to uppercase characters before +they are inserted into the file. Within \''\:toc' the command \''\uppercase' +is written as is into the auxiliary file, and takes effect only when +the auxiliary file is imported. + + + + +\''\Get:SecAnchor' should provide an anchor in \''\:SecAnchor' for the +cross references. If none is provided, tex4ht will offer one. tex4ht +doesn't really need the address; the idea is to save on duplicated anchors. + +\<section html addr\><<< +\ifx \:SecAnchor\:UnDef + |<toc tag|>1-\file:id-\TitleCount +\else \:SecAnchor \fi >>> + + + +\<toc-section html addr\><<< +|<toc tag|>2-\file:id-\TitleCount >>> + + +\<toc tag\><<< +Q>>> + + +\<hook for ref/label\><<< +\Get:SecAnchor{#1}{#2}{#3}% +>>> + + +\<elements for divs\><<< +\def\Get:SecAnchor#1#2#3{} +>>> + + + + + + + +\Section{Control Links on Section Heads} + + + +Option for univerally no links from titles of sections. + +\<html divs\><<< +\:CheckOption{sections+}\if:Option + \def\Title:Link{\Link} + \def\EndTitle:Link#1{#1} +\else + \def\Title:Link#1{\Link{}} + \let\EndTitle:Link|=\:gobble + \Log:Note{for back links to toc, + use the command line option `sections+'}% +\fi +>>> + +\<shared config\><<< +\NewConfigure{toTocLink}[2]{\def\scp:Link{#1}\def\scp:EndLink{#2}} +\Configure{toTocLink}{\Title:Link}{\EndLink} +>>> + + +The above gives global control. The following local one. +E.g., \`'\NoLink{section}' asks that sections of type `section' +will not act as hot buttons. + +\<html divs\><<< +\def\NoLink#1{\expandafter + \gdef\csname #1:Href-\endcsname{\let\EndTitle:Link|=\:gobble}}% +>>> + + +\<href on sec head?\><<< +\csname #1:Href-\endcsname +>>> + + +\Section{Cut-Offs} + +The following makes a call to, e.g., \`'\cut:at{section}{title}-' + + + +\<button for cut at sect\><<< +|<set TitleMark|>% +\expandafter\ifx \csname Cut:#1\endcsname\relax + |<boundaries of non-cut sections|>% +\else + |<boundaries of cut sections|>% + |<TITLE for Sec|>% + \csname Cut:#1\endcsname{#3}% +\fi +\global\let\sec:lvl|=\HPageDepth +|<record sections hierarchy|>% +>>> + + +% \Configure{CutAtTITLE+} {|<TITLE for Sec|>}% + + +The \`'\let\sec:lvl|=\HPageDepth' is used to determine whether we have +prev-next links with next HPage. As we out from hypertext pages, +the value of \''\HPageDepth' decreases, and the values of +\''\sec:lvl' are kept one value behind. If just before entering +a hypertext page we have \`'\sec:lvl>\HPageDepth', it means +that the last HPage and the next one are at the same depth. Hence, +we allow for prev-next links. We want the \''\global' because +section titles can be within groups as is the case, for instance, +for tables of contents of tables or figures in LaTeX. Without +the global, will need to fix locally the values of \''\sec:lvl' for titles +that are nested in groups. + + +\<TITLE for Sec\><<< +\expandafter\ifx \csname a:\sec:typ TITLE\endcsname\relax\else + \expandafter\let\expandafter\a:CutAtTITLE + \csname a:\sec:typ TITLE\endcsname\fi +>>> + +\<TITLE for SecNO\><<< +\expandafter\ifx \csname a:\sec:typ TITLE\endcsname\relax + \expandafter\HCode \else +\expandafter\expandafter\csname a:\sec:typ TITLE\endcsname\fi +>>> + + + + +\<c:TITLE: for Sec\><<< +\expandafter\def\csname c:#1TITLE+:\endcsname{% + \expandafter\def\csname a:#1TITLE\endcsname####1}% +>>> + +\<html divs\><<< +\HAssign\sec:lvl|=0 +>>> + +\Section{Hooks} + +BeforEvery and Every are single-parameter macros. + +\<def /:Every\><<< +\def\:Every#1{% + \expandafter\edef\csname Every#1\endcsname{% + \def\expandafter\noexpand \csname :Every#1\endcsname####1}% + \expandafter\edef\csname BeforeEvery#1\endcsname{% + \def\expandafter\noexpand\csname :BeforeEvery#1\endcsname####1}% +} +>>> + +\''\Every...' and not \''\AfterEvery...', because we are not yet after the section, we are only after the title. + + +Default hooks are set to tables of contents. + +\<initiate BeforeEvery/Every div\><<< +\:Every{#1}% +\csname Every#1\endcsname{% + \expandafter\ifx\csname Toc:#1\endcsname \relax\else + \a:TocAt \csname Toc:#1\endcsname \b:TocAt + \fi + \ignorespaces}% +>>> + +\<delayed TocAt\><<< +\a:dTocAt \csname TocAt*\endcsname \b:dTocAt +\expand:after{\global\let}\csname TocAt*\endcsname|=\empty +>>> + + +\<html config util\><<< +\NewConfigure{TocAt*}[2]{% + \c:def\a:dTocAt{#1}\c:def\b:dTocAt{#2}} +\NewConfigure{TocAt}[2]{% + \c:def\a:TocAt{#1}\c:def\b:TocAt{#2}} +\Configure{TocAt*}{}{} +\Configure{TocAt}{}{} +>>> + + + + + + +The following occurs for sectioning commands without +subdivisions. + + +\<BeforeEvery hook\><<< +\expandafter\ifx \csname :BeforeEvery#1\endcsname\relax \else + \csname :BeforeEvery#1\endcsname{#3}% +\fi +>>> + + +\<Every hook\><<< +\expandafter\ifx \csname :Every#1\endcsname\relax \else + \csname :Every#1\endcsname{#3}% +\fi +>>> + + +\Section{Utilities} + + +Normally, the leading paragraphs in chapters and sections start with +no indentation, whereas the other paragraphs start with indentations. +To achieve this effect, we can allow a contribution of an indentation to +all the paragraphs, with provisions for removing the indentations from +selected paragraphs. + + + +Without the \''\immediate' we can get problems on boundary between pages. + + + +\Section{Configurations for CutAt} + + + + +The \`'\par\ShowPar' is to ensure that buttons at +end of a page will not get into the last entry of the table in case +of a cut-off situation. + + + + + + + + +\Chapter{Tables of Contents} + + + + + + + + + + +\Section{Archiving the Table} + +For a source document that is stored in file named \''abc.xyz' the +table is assumed to be stored in a file that carries the name +\''abc.4tc'. It is archived into \''abc.4ct'. + +\<blocs for tocs\><<< +\openin15=\jobname.4tc +\ifeof15 \closein15 + \def\:TableOfContents[#1]{\writesixteen{No file \jobname.4tc}} + |<undef /TableOfContents|> +\else + \ifHtml |<def html /TableOfContents|> + \fi + |<copy toc|> +\fi +>>> + + +\<copy toc\><<< +\begingroup + \catcode`^|=7 + |<define /:copytoc|> \ifHtml \catcode`\#|=12\relax \fi + \def\:next{\catcode\tmp:cnt|=12 + \ifnum \tmp:cnt=0 + \def\:next{% + \catcode`\^^M|=5 + \immediate\openout15=\jobname.4ct \:copytoc + \immediate\closeout15 + \endgroup \closein15 + }% + \fi + \advance\tmp:cnt |by -1 \:next + } + \tmp:cnt|=255 \:next +>>> + + +\<define /:copytoc\><<< +\def\:copytoc{% + \ifeof15 \else + \read15 to \:temp + {\escapechar=`\\\immediate\write15{\:temp}}% + \expandafter\:copytoc + \fi} +>>> + +\Section{Invoked Tables of Contents} + + +\SubSection{Listing the Entries} + + + + +The following pair of definitions are a degenerated case of the `sty' option +in which the parameters are required for a table to appear. + +\<undef /TableOfContents\><<< +\ifx \TableOfContents\:UnDef + \def\TableOfContents{\futurelet\:temp\:TOC} + \def\:TOC{\ifx [\:temp \expandafter\:TableOfContents\fi} +\fi +>>> + + + +\<def html /TableOfContents\><<< +|<undef /TableOfContents|> +\def\:TableOfContents[#1]{\SaveEverypar{% + \def\TocCount{0}% + |<interpretation for entries|>% + \def\InsertTitle##1##2##3{}% + \hsize|=4.5in \rightskip |= \z@ minus 1in \linepenalty|=1000 + \catcode`\#|=12 \catcode`\@|=11 \catcode`\:|=11 + |<Configure HtmlPar for TOC|>\everypar{\HtmlPar}% + |<before toc|>\input \jobname.4ct + {\ht:everypar{}\leavevmode}|<bottom toc|>% + \par }\RecallEverypar |<after toc|>} +>>> + +\<after toc\><<< +\ifx \c:tableofcontents\:UnDef + \csname c:TableOfContents\endcsname +\else \c:tableofcontents \fi +>>> + +\<before toc\><<< +\ifx \a:tableofcontents\:UnDef \csname a:TableOfContents\endcsname +\else \a:tableofcontents \fi +>>> + + + +\<bottom toc\><<< +\ifx \b:tableofcontents\:UnDef + \csname b:TableOfContents\endcsname +\else \b:tableofcontents \fi +>>> + + + + +\<par toc\><<< +\ifx \d:tableofcontents\:UnDef \csname d:TableOfContents\endcsname +\else \d:tableofcontents \fi +>>> + +\<noindent toc par\><<< +\ifx \e:tableofcontents\:UnDef + \csname e:TableOfContents\endcsname +\else \e:tableofcontents \fi +>>> + + + + + + + + + + +The following might be a problem LaTeX, in particular +with \''\IgnoreIndent/\ShowIndent' cases. A partial solution +to the problem used the code +\`'\if:latex \if:nopar \else + \Configure{HtmlPar}{}{\Configure + {HtmlPar}{|<noindent toc par|>}{|<par toc|>}{}{}}{}{}% +\fi\fi', but then we got problems elsewhere. + +\<Configure HtmlPar for TOC\><<< +\Configure{HtmlPar}{|<noindent toc par|>}{|<par toc|>}{}{}% +>>> + + + + + +\SubSection{Loading the Entries} + + +\<interpretation for entries\><<< +\:tocPreamble#1,,% +\let\doTocEntry|=\:doTocEntry +\def\contentsline##1##2##3{##2}% +\no:lbl:idx +>>> + + + + +\<blocs for tocs\><<< +\def\:doTocEntry#1#2#3#4{% + \Advance:\TocCount |by 1 + \expandafter\ifx \csname \string#1 \endcsname \relax \else + #1{#2}{#3}{#4}\fi +} +>>> + +\<shared config\><<< +\NewConfigure{TocLink}[1]{\def\a:TocLink##1##2##3##4{#1}} +>>> + +A field \`'[\ifnum \FileNumber=#1 + \else \RefFileNumber{#1}\fi]' buys nothing as far as memory +is concerned. + +\<def Configure\><<< +\long\def\ConfigureToc#1#2#3#4#5{% + \expandafter\def\csname toc#1\endcsname##1##2##3{#5}% + |<cond toc config|>% +} +>>> + + +\<trace commands\><<< +\long\def\ConfigureToc#1#2#3#4#5{% + \expandafter\def\csname toc#1\endcsname##1##2##3{#5}% + \edit:p\def\:temp{#2#3#4#5}\ifx \:temp\empty + \expandafter\pend:defIII\csname toc#1\endcsname{\hbox + {\a:trc Toc(#1)1\b:trc}####1\hbox{\a:trc Toc(#1)2\b:trc}####2\hbox + {\a:trc Toc(#1)3\b:trc}####3\hbox{\a:trc Toc(#1)4\b:trc}}% + \else + |<cond toc config|>% + \fi +} +>>> + + + +\<cond toc config\><<< +\def\:temp{#4}\ifx \:temp\empty \else + \expandafter\pend:defIII\csname toc#1\endcsname{#4####3}% +\fi +\def\:temp{#3}\ifx \:temp\empty \else + \expandafter\pend:defIII\csname toc#1\endcsname{#3####2}% +\fi +\def\:temp{#2}\ifx \:temp\empty \else + \expandafter\pend:defIII\csname toc#1\endcsname{#2####1}% +\fi +>>> + +\<blocs for tocs\><<< +\def\:tocPreamble#1,{% + \def\:temp{#1}\ifx \:temp\empty \else + \edef\:temp{\expandafter\string\csname toc#1 \endcsname}% + \expandafter\expandafter\expandafter\let + \expandafter\csname\:temp\endcsname|=\empty + \expandafter\:tocPreamble\fi} +>>> + + + + + + + + + + + + + + +\SubSection{Collecting the Entries} + +After producing the table of contents from the previous compilation, +a file is opened for collecting the entries of the table from the +current compilation. + +\<blocs for tocs\><<< +\ifx \:tocout\:UnDef + \csname newwrite\endcsname\:tocout +\fi +\def\:temp{% +|<if latex then latex/write sol|>\openout\:tocout|=\jobname.4tc + |<doTocEntry for dvi|>} +\:temp +>>> + +In case we switch from html to dvi mode, without the presence of +TeX4ht, we want to hide the \''\doTocEntry'.. +The \`'\escapechar' decides what is written out for escape character, +no matter what the actual symbol is. texinfo changes that symbol to +{\tt \string\escapechar=`\string\@}. + +\<doTocEntry for dvi\><<< +{\escapechar=`\\|<if latex then latex/write sol|>\write + \:tocout{\string\expandafter\string\ifx + \noexpand\csname doTocEntry\string\endcsname\relax + \string\expandafter\string\endinput + \string\fi}% +}% +>>> + + + + +\Section{Triggered Tables of Contents} + +The \`'\TocAt-{...}' command asks for no TOC, the \`'TocAt*{...}' +command asks for a TOC delayed until the next section, \`'\TocAt{...}' +asks for TOC in place, and a list of size one asks for no more local +TOC's for the given logical unit. + +\<blocs for tocs\><<< +\def\TocAt#1{% + \def\:next##1{\:TocAt##1,//}% + \def\:tempa{#1}\def\:temp{-}\ifx \:tempa\:temp \let\:temp|=-% + \else \def\:temp{*}\ifx \:tempa\:temp \let\:temp|=*% + \else \def\:next{\:TocAt#1,//}% + \fi \fi \:next } +>>> + + + + + +\<Toc:At>\><<< +\expandafter\edef\csname Toc:#1\endcsname{% + \gdef\expandafter\noexpand\csname TocAt*\endcsname{% + \noexpand \csname Toc#1\noexpand\endcsname }}% +>>> + +\<Toc:At\><<< +\expandafter\edef\csname Toc:#1\endcsname{% + \noexpand\csname Toc#1\noexpand\endcsname }% +>>> + +\<blocs for tocs\><<< +\def\:TocAt#1,#2//{% + \ifx -\:temp \else \ifx *\:temp + |<Toc:At>|>% + \else |<Toc:At|>\fi \fi + \def\:temp{#2}\ifx \:temp\empty + \expandafter\let\csname Toc#1\endcsname|=\:UnDef + \else |<extract the entries|>\fi } +>>> + +\SubSection{Process the Request} + +For \`'\TocAt{X,...,Y,...}' we define a \''\TocX' that includes the +interpretations for the different \''\tocY' w of Xithin commands of +the form \`'X::tocY'. + + + +\<extract the entries\><<< +\let\:include|=\empty +\::TocAt#1,/#1,#2,,//% +\edef\:include{\expandafter\:removecomma\:include}% +\expandafter\edef\csname Toc#1\endcsname{{% + \let\noexpand\TitleCount|=\expandafter\noexpand + \csname #1:Count\endcsname + \noexpand\:assgtoc\:include,//{#1}% + \:tocs[\:include]}}% +>>> + + + +\SubSection{Process the Request} + +\<blocs for tocs\><<< +\def\:tocs{\noexpand\TableOfContents} +>>> + + + + +\<blocs for tocs\><<< +\def\:removecomma#1{} +\def\:assgtoc#1,#2//#3{% + \expand:after{\expandafter\let\csname toc#1\endcsname |=}% + \csname #3::toc#1\endcsname + \if:notempty{#2}{\:assgtoc#2//{#3}}} +>>> + +\<blocs for tocs\><<< +\def\::TocAt#1,#2,#3//{\def\:temp{#2}% + \ifx \:temp\empty \else + \if /\:firstch#2 //% + |<stop toc for @1 at @2|>% + \else |<include @2 in toc for @1|>\fi + \expand:after{\::TocAt#1,#3//}% + \fi +} +>>> + +\SubSection{Interpretation for Included Entry} + +Also for \`'\TocAt{X,....,Y,...}' the interpretation is +defined in \`'X::tocY'. + + +\<include @2 in toc for @1\><<< +\edef\:include{\:include,#2}% +\expand:after{\expandafter\let\csname svtoc::#2\endcsname|=}% + \csname toc#2\endcsname +\expandafter\edef\csname #1::toc#2\endcsname##1##2##3{% + \noexpand\ifnum \noexpand\TitleCount<\noexpand\TocCount + \noexpand\space + \expandafter\noexpand \csname svtoc::#2\endcsname{##1}{##2}{##3}% + \noexpand\fi}% +>>> + + +Tex4ht relies on two counters \`'\TitleCount' and \`'\TocCount' to +decide which entries of the global TOC should go to the local TOC. +The first counter is increased when sectioning commands are +encountered. The second counter is increased when the global TOC is +traversed. + +A discrepancy will occur when the contributions of the sectioning +commands to the global TOC are not synchronized with the increments of +the first counter. That will normally be the case when sectioning +commands are introduced without tex4h being informed about their +designation as sectioning commands. + + +\SubSection{End Points} + + +Also for \`'\TocAt{X,....,/Y,...}' the termination point that we get is +defined in \`'X::tocY'. + +\<blocs for tocs\><<< +\def\:firstch#1#2 //{#1\def\:temp{#2}} +>>> + + +\<stop toc for @1 at @2\><<< +\edef\:include{\:include,\:temp}% +\expandafter\def\csname #1::toc\:temp\endcsname##1##2##3{% + \ifnum \TitleCount<\TocCount + \Advance:\TocCount |by -100000 \endinput + \fi}% +>>> + +The \''\endinput' is not required but it desired because it cuts off +the reading of the toc file. The \''-100000' is needed +forhierarchical toc's due to parent-child relashions. + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Chapter{halign-based tables} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<halign-based tables\><<< +|<all halign-based tables|> +|<html blocks for halign tables|> +|<html halign|> +\def\:temp{\let\:shrp|=##} \:temp +>>> + +The \''\:shrp' should be defined at the end so as not +to bother other definitions that will regard it as improper +\`'#' parameter. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Taming of halign} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The \''\halign' comamnds not defined within TeX4ht environment +can be problematic, and the same may be true to some within such +environnt. Specifically, comamnds of the form \`'\halign...{...}' +are translated well in TeX4ht, but cause a problem if defined +before TeX4ht was activated. Commands of the form +\`'\halign...\bgroup...' cause no problem in either mode, but they +also introduce no html code. Commands of the form +\''\halign...{...\egroup' cause problems in either way. + +TeX4ht takes care of the \''\halign' commands in TeX and LaTeX, +but not of those that are loaded earlier from other libraries. + + +The following tree shows the direct and indirect use of \''\halign' in +TeX and LaTeX. + +\Draw +\TreeAlign(H,1,0)(0,0,0) +\TreeSpace(D,10,10) +\Tree()( +5,halign// +12,ialign{(T,L)} & 0,displaylines{(T,L)} & + 0,eqalignno{(T)} & 0,leqalignno{(T)} & + 0,eqnarray{(L)}// +0,m@ketabbox{(T)} & 0,oalign{(T,L)} & 0,angle{(T,L)} & + 0,overrightarrow{(T,L)}~~\hfill overleftarrow{(T,L)}~~ + \hfill overbrace{(T,L)}~~\hfill underbrace{(T,L)} & + 0,@vereq{(T,L)} & 0,cases{(T,L)} & 0,matrix{(T)} & 0,bordermatrix{(T,L)} & + 0,eqalign{(T)} & 0,@array{(L)} & 0,@ishortstack{(L)} & + 0,table{(L)}// +) + +\EndDraw + + +The \`'\iffalse{\fi...\iffalse}\fi' is to hide the \`'\cr' from +\''\halign' when it scans for that command. + + +\<all halign-based tables\><<< +\let\TeXhalign|=\halign +\def\RecallTeXcr{\iffalse{\fi + \expand:after{\let\cr|=}\csname 0cr\endcsname + \expand:after{\let\crcr|=}\csname 0crcr\endcsname + \iffalse}\fi} +\expandafter\let\csname 0cr\endcsname|=\cr +\expandafter\let\csname 0crcr\endcsname|=\crcr +\def\TeXhalign:cr{% + \ifx \EndPicture\:UnDef \else \iffalse{\fi + \expandafter\let\expandafter\cr\csname \MkHalign:d cr\endcsname + \expandafter\let\expandafter\crcr\csname \MkHalign:d crcr\endcsname + \iffalse}\fi \fi \TeXhalign} +>>> + + + Save/recover \''\crcr' and \''\cr' causes problems, e.g., in nested arrays. +It seems also we don't really need such a feature. + + + + +\<tex4ht halign and cr/crcr\><<< +\let\halign|=\sv:halign +>>> + + + + +%\edef\TeXhalign:cr{% +% \noexpand\ifx \noexpand\EndPicture\noexpand\:UnDef \noexpand\else +% \let\cr|=\expandafter\noexpand\csname 0cr\endcsname +% \let\crcr|=\expandafter\noexpand\csname 0crcr\endcsname +% \noexpand\fi \noexpand\TeXhalign} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Building Blocks for Accessing Halign Tables} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +The next comamnd can be in use when the parameters \`'#' (i.e., +the first parameter \''#1') are in cat code 13. + + +We hade \''\:relax' instead of \''\relax' below. Where did it come +from? + + +The \''\MkHalign' takes the form +\`'\MkHalign#{...pattern...}...body...\EndHalign' and seeds the end +tags \''\a:halign' and \''\b:halign' around the construct, and +\''\c:halign' and \`'d:halign' in the pattern. The outcome is a seeded +\`'\halign{...}'. The \`'\Configure{MkHalign}...' places +\''a:MkHalign', \''b:MkHalign', \''c:MkHalign', \''d:MkHalign', +\''e:MkHalign', and \''\f:MkHalign' within \''\a:halign', +\''\b:halign', \''\c:halign', and \`'d:halign'. The \`'#' in the +pattern can be any character of category code 13. The \`'&' charaters +shouldn't be within braces. The \''\RecallTeXcr' should appear +before \''\MkHalign'; if it appears within the pattern, we loose +the row breaks. + + + +\<html blocks for halign tables\><<< +\def\MkHalign#1#2{% + \iffalse{\fi \let\sv:new:row|=\new:row + \def\relax:shrp{\let#1|=\relax}% + \def\new:halign{\TeXhalign \bgroup}% + \add:halign#2&|<par del|>\cr + \let#1|=\:shrp |<before TeXhalign|>% + \iffalse}\fi |<protection for $$|>% + \a:PauseMkHalign \new:halign\ext:cr} +\def\EndMkHalign{\egroup + \d:PauseMkHalign |<end protection for $$|>% + \iffalse{\fi |<after TeXhalign|>\relax:shrp \iffalse}\fi } +\def\PauseMkHalign#1{\cr\egroup + \hbox{\r:halign \global\let\new:row|=\R:halign}\b:PauseMkHalign + #1\c:PauseMkHalign\new:halign\ext:cr} +>>> + +\<shared config\><<< +\NewConfigure{PauseMkHalign}{4} +>>> + + +The PauseMkHalign provides a vehicle to decompose a +\''\halign\bgroup...0......1...\egroup' and recompose it in arbitrary order and +choise of components, as is the case in longtable: +\`'\setbox0=\hbox{\halign\bgroup...0...\egroup} +\setbox1=\hbox{\halign\bgroup...1...\egroup}\box0\box1'. In some +occasions, and may be all, the parameter of \''\PauseMkHalign' must be +just boxes. + +The \`'\iffalse ...\fi' above are for hiding \''\cr' in +nested cases (e.g., of \''\tabular' in LaTeX). + +Spans over N columns require many compilations to +realize them. + +The following is an application of \''\MkHalign'. +it allows for tables of the form \`'\MiniHalign...\EndMiniHalign' +instead of \`'\halign{...}'. + +\<html blocks for halign tables\><<< + \catcode`\#|=13 \catcode`\@|=6 +\def\MiniHalign{\begingroup \catcode`\#|=13 \let#|=\relax + \:MHalign} +\def\:MHalign@1\cr{\endgroup \SaveMkHalignConfig + \Configure{MkHalign}{\a:MiniHalign}{\b:MiniHalign}\c:MiniHalign + \d:MiniHalign{\e:MiniHalign\RecallMkHalignConfig}\f:MiniHalign + \MkHalign#{@1}} + \catcode`\#|=6 \catcode`\@|=11 +\def\EndMiniHalign{\EndMkHalign \RecallMkHalignConfig } +>>> + +\<shared config\><<< +\NewConfigure{MiniHalign}{6} +>>> + + + +\ifHtml[\HPage{test data}\Verbatim + + \documentclass{article} + + \input tex4ht.sty \Preamble{html} + \begin{document} + \EndPreamble + +\begin{tabular}{c|} +before + \begin{tabular}{c|} center \end{tabular} +after +\end{tabular} + +\end{document} +\EndVerbatim\EndHPage{}]\fi + + +\<protection for $$\><<< +\begingroup +\ifmmode \def\end:m{$$\egroup}\vtop\bgroup$$\else +\let \end:m|=\empty\fi +>>> + + +\<end protection for $$\><<< +\end:m\endgroup +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Build Expanded Pattern} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Break the pattern at \`'&'s and enclose with calls for html +code. + +\<html blocks for halign tables\><<< +\def\add:halign#1\cr{% + \def\:temp{#2}\def\:tempb{|<par del|>}% + \ifx \:temp\:tempb + \append:def\new:halign{\b:halign#1\c:halign}% + \else + \def\:temp{#1}\ifx\:temp\empty \append:def\new:halign{&}% + \else \append:def\new:halign{\b:halign#1\c:halign&}\fi + \add:halign#2\cr + \fi} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Html Insertions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<before TeXhalign\><<< +\global\let\new:row|=\R:halign +\Advance:\MkHalign:d |by 1 +\expandafter\let\csname \MkHalign:d cr\endcsname|=\cr +\expandafter\let\csname \MkHalign:d crcr\endcsname|=\crcr +\edef\cr{\noexpand\rR:halign + \expandafter\noexpand \csname \MkHalign:d cr\endcsname}% +\edef\crcr{\noexpand\rR:halign + \expandafter\noexpand \csname \MkHalign:d crcr\endcsname}% +\let\omit|=\om:t \def\TT:halign{\T:halign \global\let\TT:halign|=\empty}% +>>> + +Inserting \''\T:halign' here causes infinite loop in \''\@array' +of latex. Hence, we delay it to the stat of the first element. + +\<after TeXhalign\><<< +\expand:after{\let\cr|=}\csname \MkHalign:d cr\endcsname +\expand:after{\let\crcr|=}\csname \MkHalign:d crcr\endcsname +\let\omit|=\:omit +{\ht:everypar{}\r:halign}\t:halign +\Advance:\MkHalign:d |by -1 +>>> + +\<html blocks for halign tables\><<< +\def\rR:halign{\gdef\new:row{\r:halign \R:halign}} +\HAssign\MkHalign:d |= 0 +>>> + + + + + +\<html blocks for halign tables\><<< +\def\b:halign{\BB:halign \bgroup} +\def\c:halign{\egroup\d:halign} +\def\BB:halign{\expand:after{\global\let\new:row|=\empty }\new:row + \D:halign} +>>> + +The \''\Configure' may use the values of \''\:MULTISPAN', \''\halignTD', +\''\HRow'' and \''\HCol'. The \''\halignTD' gets its value from +\''\Configure{TD}{...}'. + + +\<html config util\><<< +\def\halignTD{\ifx \:mALIGN\empty \hT:D \else \:mALIGN \fi} +\def\halignTB#1{ + \expandafter\ifx \csname :#1:\endcsname\relax + \:warning{Missing \string\Configure{halignTB<>}{#1}}% + \else + \global\expandafter\let\expandafter\:MkHalign: + \csname :#1:\endcsname \a:halignTB \expandafter\expandafter + \expandafter\halign:TB \csname :#1:\endcsname|<par del|>\b:halignTB + \fi } +\NewConfigure{halignTB}{2} +\NewConfigure{halignTB<>}[2]{% + \expandafter\def\csname :#1:\endcsname{#2}} +|<init :MkHalign:|> +>>> + +\<html config util\><<< +\NewConfigure{MkHalign}[6]{% + \def\T:halign{\PushMacro\:MkHalign:|<init :MkHalign:|>#1}% + \def\t:halign{#2\PopMacro\:MkHalign: + \global\let\:MkHalign:|=\:MkHalign:}% + \def\R:halign{\TT:halign \gHAdvance\HRow |by 1 \gHAssign\HCol|=1 + #3}% + \def\r:halign{\end:omit#4}% + \def\D:halign{\:nopartrue + |<save dH|>% + |<cond TD for multispan|>% + \ifnum\MS:count=\ifx \:MULTISPAN\:UnDef \MS:count + \else \:MULTISPAN\fi + \expandafter\gdef\csname dH\MkHalign:d\endcsname + {|<cond /TD for multispan|>}\fi}% + \def\d:halign{\csname dH\ifnum \MkHalign:d<1 1\else \MkHalign:d\fi + \endcsname |<recall dH|>}} +\Configure{MkHalign}{}{}{}{}{}{} +\HAssign\dH:cnt|=0 +>>> + +\<save dH\><<< +\gHAdvance\dH:cnt by 1 +\edef\:tempa{\global\let\expandafter\noexpand\csname xc\dH:cnt\endcsname + \expandafter\noexpand\csname dH\MkHalign:d\endcsname}% +\:tempa +\expandafter\xdef\csname \dH:cnt :tempa\endcsname{% + \global\let \expandafter\noexpand\csname dH\MkHalign:d\endcsname + \expandafter\noexpand\csname xc\dH:cnt\endcsname}% +>>> + +\<recall dH\><<< +\csname \dH:cnt :tempa\endcsname +\gHAdvance\dH:cnt by -1 +>>> + +Nonleading \`'\csname dH\MkHalign:d\endcsname' produce improper closing +delimiters in \`'\multispan' of index $>$ 1. In such cases, only the +outcome of the first \`'\D:halign' contribute for the openning +delimiter---occuring in the iteration in which +\`'\MS:count=\:MULTISPAN'. + +The \`'\ifnum \MkHalign:d<1 1\else \MkHalign:d\fi' is needed because we +can get down to 0 if the last entry is a \''\multispan'. + + + + +\<math config util\><<< + +>>> + +\<init :MkHalign:\><<< +\Configure{halignTB<>}{MkHalign}{<>}% +>>> + + + +The saving \`'\csname dH\MkHalign:d\endcsname' and loading is to +protect from changes that may occur inside the entity in the meaning +of \''\d:halign'. Don't we need the same for \''\r:halign'? + +The following is for tracing users definitions to be used in extensions +that need to do reverse eng of the users input. + + +\<shared configNO\><<< +\NewConfigure{TraceTables}[8]{\def\trc:T{#1}\def\trc:eT{#2}% + \def\trc:t{#3}\def\trc:et{#4}\def\trc:R{#5}\def\trc:eR{#6}% + \def\trc:r{#7}\def\trc:er{#8}\d:TrcHlgn} +\def\d:TrcHlgn#1#2#3#4{\def\trc:D{#1}\def\trc:eD{#2}% + \def\trc:d{#3}\def\trc:ed{#4}} +>>> + + +The \''\:removeindenttrue' is important, for instance, in case of +a \''\noalign{...}'. + +When we meet \`'&&', which signals a loop. + + +We place \''#' under catcode 13. \''\noalign' is ignored. + + + +\<html blocks for halign tables\><<< +\def\SaveMkHalignConfig{\let\sT:halign|=\T:halign + \let\st:halign|=\t:halign + \let\sR:halign|=\R:halign + \let\sr:halign|=\r:halign + \let\sD:halign|=\D:halign + \let\sd:halign|=\d:halign} +\def\RecallMkHalignConfig{\let\T:halign|=\sT:halign + \let\t:halign|=\st:halign + \let\R:halign|=\sR:halign + \let\r:halign|=\sr:halign + \let\D:halign|=\sD:halign + \let\d:halign|=\sd:halign} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{/omit and /span} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<html blocks for halign tables\><<< +\let\:omit|=\omit +\def\om:t{\:omit \BB:halign + \gdef\end:omit{\gdef\end:omit{}\d:halign}} +\let\end:omit|=\empty +>>> + + +A \''\multispa' is a sequence of \''\span''s. Each \''\span' +puts \`'\HRow.\HCol;' in \''\new:span;'. Next compilation +retrieves this info to compute \''\:MULTISPAN'. + + +\<cond TD for multispan\><<< +\gHAdvance\MS:count |by -1 +\ifnum \MS:count > 0 \else + \end:omit \relax:shrp \derive:TD + \HAssign\:MULTISPAN|=1 \let\:mALIGN|=\empty + \expandafter\add:span\old:span \gHAssign\MS:count|=\:MULTISPAN + \relax #5% +\fi +\xdef\Step:Col{\ifx \HMultispan\:UnDef 1 \else \HMultispan\fi}% +>>> + +\<cond /TD for multispan\><<< +\ifnum \MS:count<2 #6\relax + \gHAdvance\HCol \Step:Col\relax \fi +>>> + + + + + + +% \ifnum \MS:count<2 #6 \gHAdvance\HCol |by 1 \fi + + +For some reason \`'\if:latex\@multicnt\else\mscount\fi' +didn't work for \''\MS:count>0' on + +\Verbatim +\halign{#\qquad& \$# each\cr +\omit\span\omit\hfil + Shipping Charges\hfil\cr +1--10&1.30\cr11--100&1.00\cr +111--&0.70\cr} +\EndVerbatim + + +Tried to put \`'\iffalse{\fi \let\cr|=\ext:cr \let\crcr|=\ext:crcr + \iffalse}\fi ' at start of cell. It didn't work, because I couldn't + restore the \''\cr' and \''\crcr' before the \''\cr' is read at end + of line. This doesn't look like an important because + the redefined version just has a \''\gdef' in it and produces no code + of itself. However, it is important because problems sometimes +arise if a nonnative instance is present, for instance, in +\`'\openup10pt \halign{ + $2^{#}$\quad& + $\overbrace{2\cdots 2}^{# + \rm times}$\quad& #\cr + 2&2&4\cr 3&3&8\cr } +'. + + +See Knuth 386 for the + hiding +\`'\iffalse{\fi\let\cr|=\ext:cr\iffalse}\fi ' of \''\cr'. + +\<html blocks for halign tables\><<< +\let\ext:cr|=\cr \let\ext:crcr|=\crcr +>>> + +\<html blocks for halign tables\><<< +\let\:span|=\span +\def\add:span#1;{\def\:tempa{#1}\edef\:temp{\HRow .\HCol}% + \ifx \:temp\:tempa \Advance:\:MULTISPAN |by 1 \fi + \ifx \:tempa\empty \let\HMultispan|=\:MULTISPAN + \else + |<align for multispan in latex|>% + \expandafter\add:span + \fi } +>>> + + + + + + + +\<align for multispan in latex\><<< +\let\:temp|=\relax +\def\:temp##1.{\def\:temp####1|<par del|>{\def\:temp{####1}}% + \afterassignment\:temp\tmp:cnt}% +\expandafter\expandafter\expandafter\:temp\expandafter\:tempa|<par del|>% +\edef\:tempb{\HRow.\HCol\:temp}\ifx\:tempa\:tempb + \expandafter\ifx \csname \expandafter\string\:temp :T:D\endcsname\relax + \else \edef\:mALIGN{\expandafter\noexpand + \csname \expandafter\string\:temp :T:D\endcsname}% +\fi\fi +>>> + +\<NO\><<< +\edef\:temp{\HRow .\HCol<}% +\ifx \:temp\:tempa \def\:mALIGN{\l:TD}\fi +\edef\:temp{\HRow .\HCol-}% +\ifx \:temp\:tempa \def\:mALIGN{\c:TD}\fi +\edef\:temp{\HRow .\HCol>}% +\ifx \:temp\:tempa \def\:mALIGN{\r:TD}\fi +>>> + + + +\<before TeXhalign\><<< +\let\sv:end:omit|=\end:omit \let\end:omit|=\empty +\let\ms:count|=\MS:count \HAssign\MS:count|=0 +\let\lgn:r|=\HRow \let\lgn:c|=\HCol \HAssign\HRow|=0 +\def\span{\xdef\new:span{\new:span\HRow.\HCol;}\:span}% +\let\sv:new:span|=\new:span \let\new:span|=\empty +\gHAdvance\Halgn:cnt |by 1 \edef\halign:id{\Halgn:cnt}% +\edef\old:span{\LikeRef{|<halign tag|>}}% +\ifx \old:span\space \def\old:span{;}\fi +>>> + +The \`'\ifx \old:span\space \def\old:span{;}\fi' is needed for first +runs when no info is yet available. + +\<after TeXhalign\><<< +\Tag{|<halign tag|>}{\new:span;}% +\global\let\new:span|=\sv:new:span +\iffalse{\fi \let\span|=\:span \iffalse}\fi +\global\let\HRow|=\lgn:r \global\let\HCol|=\lgn:c +\global\let\MS:count|=\ms:count +\global\let\new:row|=\sv:new:row +\global\let\end:omit|=\sv:end:omit +>>> + +\<html blocks for halign tables\><<< +\HAssign\Halgn:cnt|=0 +>>> + + + + +The \''\mu:span' Provides a little movement to +avoid oscilation of multi spans around incorrect values. +It is attached to \''\TitleCount' ingeneral, but not +within \`'\begin{longtable}...\end{longtable}'. +In that environment, \''\caption' may appear, and so change +the value of \''\TitleCount' in the middle of a table, within +a \''\multispan'. + + + + +\<halign tag\><<< +|<auto tag|>M\halign:id x\mu:span>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{TD Script} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Through \''\Configure{MkHalign}{....}' with entries of the form +\`'row col insertion ' (space at end: + \`'\Contribute{halignTD}{1 1 - }' is fine but +not \`'\Contribute{halignTD}{1 1 -}'. The first character may be a +code +\''<', \''-', \''>', \''^', \''=', \''-', or \''_'. A row of +value 0 applies for a full column, a column of 0 stands for a full +row, and row and col of 0 stand for a full table. + + + + +\<html blocks for halign tables\><<< +\def\derive:TD{% + \bgroup \no:actv + \xdef\:temp{\noexpand\expandafter\noexpand\:temp + \noexpand\halign:TD\:MkHalign: -0 0 1 |<par del|>}% + \egroup + \let\hT:D|=\:temp + \def\:temp##1 ##2 ##3 {\ifnum -1=##1##2##3 \else + |<process TD op|> \expandafter\:temp \fi}% + \def\:tempa##1\empty{}% + \edef\hT:D{\hT:D}} +>>> + + + + + +\<process TD op\><<< +\ifnum \HRow=##1 \ifnum \HCol=##2 \:TDcode ##3\fi\fi +\ifnum \HRow=##1 \ifnum 0=##2 \:TDcode ##3\fi\fi +\ifnum 0=##1 \ifnum \HCol=##2 \:TDcode ##3\fi\fi +\ifnum 0=##1 \ifnum 0=##2 \:TDcode ##3\fi\fi +>>> + +\<html blocks for halign tables\><<< +\def\:TDcode#1{|<process TD code|>\EndTD:CLASS} + \catcode`\_=13 \catcode`\^=13 +\pend:defI\:TDcode{\TD:CLASS}% +\let\:temp|=\relax \let\:tempa|=\relax +\edef\no:actv{\let\noexpand\noexpand\noexpand^|=\:temp + \let\noexpand\noexpand\noexpand_|=\:tempa} + \catcode`\_=8 \catcode`\^=7 +\def\:temp{^} \def\:tempa{_} +\edef\no:actv{\no:actv} +>>> + + +\<html blocks for halign tablesNOOO\><<< +\def\:TDcode#1{|<process TD code|>\EndTD:CLASS} + \catcode`\_=13 \catcode`\^=13 +\pend:defI\:TDcode{\TD:CLASS + \ifx _##1 \o:TD \expandafter\:tempa \fi + \ifx ^##1 \t:TD \expandafter\:tempa\fi}% +\let\:temp|=\relax \let\:tempa|=\relax +\edef\no:actv{\let\noexpand\noexpand\noexpand^|=\:temp + \let\noexpand\noexpand\noexpand_|=\:tempa} + \catcode`\_=8 \catcode`\^=7 +\def\:temp{^} \def\:tempa{_} +\edef\no:actv{\no:actv} +>>> + + + + + +\<process TD codeOLDTD\><<< +\ifx <#1 \l:TD \expandafter\:tempa \fi +\ifx -#1 \c:TD \expandafter\:tempa \fi +\ifx >#1 \r:TD \expandafter\:tempa \fi +\ifx ^#1 \t:TD \expandafter\:tempa \fi +\ifx =#1 \b:TD \expandafter\:tempa \fi +\ifx ||#1 \m:TD \expandafter\:tempa \fi +\ifx _#1 \o:TD \expandafter\:tempa \fi +\ifx p#1 \p:TD \expandafter\:tempa \fi +\expandafter#1\empty +>>> + + + +\<process TD code\><<< +\expandafter + \ifx \csname \string#1:T:D\endcsname\relax \else + \csname \string#1:T:D\endcsname \expandafter\:tempa \fi +\expandafter#1\empty +>>> + + +\<html config util\><<< +\NewConfigure{halignTD}[2]{\c:def\TD:CLASS{#1}% + \c:def\EndTD:CLASS{#2}\scan:halignTD} +\def\scan:halignTD#1{\def\:temp{#1}\ifx \:temp\empty\else + \expandafter \sc:halignTD\fi{#1}} +\def\sc:halignTD#1#2{\expandafter\def\csname + \string#1:T:D\endcsname{#2}\scan:halignTD} +>>> + + +We could also have used \`'\Configure{halignTD} {CLASS="NOWRAP}{"} + { LEFT}{ CENTER}{ RIGHT} + { TOP}{ BASELINE}{ MIDDLE}{ BOTTOM}' fot DTD4.0s. + + +\<html config util\><<< +\NewConfigure{halignTR}[1]{\def\halignTR{#1}} +\Configure{halignTR}{} +>>> + +\<html config util\><<< +\def\halignTBL{\expandafter\ifx \csname v:TBL\endcsname\relax + \else \expandafter\ifx \csname \v:TBL :T:BL\endcsname\relax\else + \csname \v:TBL :T:BL\endcsname + \fi\fi} +\NewConfigure{halignTBL}[1]{\scan:halignTBL{#1}} +\def\scan:halignTBL#1{\def\:temp{#1}\ifx \:temp\empty\else + \expandafter \sc:halignTBL\fi{#1}} +\def\sc:halignTBL#1#2{\expandafter\def\csname + \string#1:T:BL\endcsname{#2}\scan:halignTBL} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Utilities} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +The global is because the table starts within the first entry. + +\<html blocks for halign tables\><<< +\def\halign:TB#1<>#2|<par del|>{#1} +\def\halign:TD#1<>#2|<par del|>{#2} +>>> + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{A Realization for halign} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<html halign\><<< +\:CheckOption{no-halign} \if:Option \else + |<halign tables from TeX|> +\fi +>>> + + + +This is the corner stone for deciding the case. + + +\HTable{ +[C10]Witin Picture Environment?\cr +Y&[C10]tex:align\cr +N&[10]within edef (:halign)?\cr + &Y&tex halign\cr + &N&[C10]remove `to dim' (:hlgn: + hl:gn)\cr + &&[C10]change catcode of {\tt \char`\#} (hlg:n)\cr + &&[C10]within a parameter or a def? (hal:gn)\cr + &&Y&[C10]tex:align + PRE\cr + &&N&[C10]open delimiter? (:Hlign)\cr + &&&{\tt\string\bgroup}&[C10]tex:align + PRE\cr + &&{\tt\char`\{}&[C10]go for hypertext table\cr +} + + + + + + +Check whether we are in \''\Picture' environment. This can happen +implicitly through environment \`'\[...\]' or through nesting in a +construct that explicitly activates the picture mode. + +\<halign tables from TeX\><<< +\def\h:halign{\ifx \EndPicture\:Undef + \let\to:dim|=\empty \expandafter\:halign + \else \expandafter\TeXhalign:cr\fi} +\:CheckOption{base} \if:Option \else + \def\:temp{\Protect\h:halign} + \HLet\halign|=\:temp +\fi +>>> + +\SubSection{Check for /edef Environment} + +ENSURE that for cases that reduce to \`'\TeXhalign:cr' the +macro get into edef. + + + + + + +\<halign tables from TeX\><<< +\let\r:lax|=\relax +\def\r:relax{\r:lax} +\let\rl:x|=\relax +\def\:halign{% + \let\rl:x|=\r:relax + \ifx \rl:x\r:relax \expandafter\nodim:hlgn: |%halign not in edef|% + \else \expandafter\TeXhalign:cr |%halign in edef|% + \fi +} +>>> + +\SubSection{Remove Dimension} + +Remove the dimension in case of \`'\halign to dim{...}' +or \`'\halign spread dim{...}' and store in \''\to:dim'. +The dimension can be nested within another macro + +\<halign tables from TeX\><<< +\def\nodim:hlgn:{\futurelet\:temp\hl:gn} +\def\hl:gn{\ifx \:temp\bgroup \let\:tempa|=\hlg:n + \else \def\:tempa##1{\append:def\to:dim{##1}\nodim:hlgn:}\fi + \:tempa} +>>> + + +Without recording, and using the dimension, +some pictures can get corrupted. For instance, +an overlap of index with the picture may +%% +\ifHtml[\HPage{occur}\Verbatim + \input tex4ht.sty \Preamble{html} + \EndPreamble + +\catcode`\@=11 + +\def\eqalignno#1{\displ@y \tabskip\centering + \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\llap{$\@lign##$}\tabskip\z@skip\ crcr #1\ crcr}} + +\eqalignno{ +li&= 1\ cr +&> line 2& (7)} + +\ bye +\EndVerbatim\EndHPage{}]\fi + +\SubSection{Check for Embedded Def} + +Within macros and parameters, and definitions, the catcode of +characters in general, and \`'#' in particular, can't change. Hence, +in such cases \`'@2' is empty. + +\<halign tables from TeX\><<< + \catcode`\#|=13 \catcode`\~|=6 +\def\hlg:n{\begingroup \catcode`\#|=13 \let#|=\relax \hal:gn}% +|<process pattern of halign tbl|> +|<halign defs in catcode 13|> + \catcode`\#|=6 \catcode`\~|=13 +>>> + + +If catcodes don't change, we can't get +the catcode 13 for processing the parameters, and the empty flag +comes up. + +\<halign defs in catcode 13\><<< +\long\def\hal:gn~1{\p:lgn~1#|<par del|>% + \ifx \:temp\empty + |<embedded halign|>% + \else \def\:temp{\endgroup\:hlign{~1}}\fi \:temp} +\long\def\p:lgn~1#~2|<par del|>{\def\:temp{~2}} +>>> + +\SubSection{/halign Not Within Parameters} + +By now we know that we are not within a picture or embeded in other +macro or a parameter, and that we have \`'\halign\bgroup...\egroup' or +\`'\halign{...}'. We are going to scan \''\bgroup' or +\`'{...}'. + +\<halign tables from TeX\><<< +\long\def\:hlign#1{% + \def\:temp{#1}\def\:tempa{\bgroup}\ifx \:temp\:tempa + \endgroup |<halign into pre|>% + \expand:after{\HRestore\noalign \TeXhalign:cr\bgroup}% + \else |<halign into MkHalign|>% + \fi} +>>> + + + +\<halign into pre\><<< +\:warning{\noexpand\halign translated into linear text}% +>>> + + +In the above if statement, \''\expandafter' does not work for nested +halign in the true part. + +If we scan \''\bgroup' we are going after all to use the original +definition of \''\halign'. Otherwise, we are going for \''\HTable', +and for such a case we want the following environment. The variable +\`'#' controls where patterns should be included in entries and it is +used for spliting the patterns into the two parameters of +\`'\HTableScript'. + + + + + +\SubSection{Embedded /halign} + +The \''\halign' are transformed into pictures +or \''\TeXhalign:cr'. + +We now have a command of the form \`'\halign\bgroup...' or +a break up on a case of the form \`'\halign{...body...'. +The parameter \`'~1' is either \''\bgroup' or \`'...body...'. +If we are lucky, the body doesn't start with a \`'#' or \''\bgroup'. + +\<embedded halign\><<< +\expandafter\chs:halgn\string ~1|<par del|>% +\:tempb{% + \csname a:embedded-halign\endcsname + \ifmmode + \vbox{|<recall sharp|>$$\TeXhalign:cr \to:dim{~1}$$}% + \else \vbox{|<recall sharp|>\TeXhalign:cr \to:dim{~1}}\fi + \:nopartrue + \csname b:embedded-halign\endcsname + }% +\let\:temp|=\endgroup +\:tempb|<par del|>% +\:tempb\:temp{\endgroup + |<halign into pre|>% + \HRestore\noalign \TeXhalign:cr~1}\:tempa|<par del|>% +>>> + +\<halign tables from TeX\><<< +\NewConfigure{embedded-halign}{2} +\Configure{embedded-halign} + {\expand:after{\Picture+}\pic:hlng{ \a:@Picture{pic-halign}}} + {\EndPicture} +>>> + +The \`'\vbox{|<recall sharp|>\TeXhalign:cr \to:dim{@1}}' is needed to +keep the picture in one page. Without this we get from tex4ht.c +\ifHtml\HPage{complaints}\Verbatim +\documentclass{book} + +\input tex4ht.sty + \Preamble{html} +\begin{document} + +\EndPreamble + +\halign{\empty{#}&&{#}\cr phi&varphi\cr} +\end{document} + +\EndVerbatim \EndHPage{}\fi{} of mismatches \`'\specals{+}' (due to split +over pages?). + +An \''\halign{...}' can be in math mode \`'$$....$$', but +not within inline math mode. If it is there, there are quite +a few restctions (not clear of which kind) on what can appear in the math +code outside the \`'\halign'. Hence, we put everything into math mode +in a sepearte box just for an extra precaution. + +% \:warning{\noexpand\halign translated into a picture} + + +\''\TeXhalign:cr' reestablishes the meaning of \''\cr' and \''\crcr' +for picture-mode, but not for the second one. The later case +may cause problems. + + +Pictures might be called for also with \`'#' having catcode 13, +as is the case with \`'\halign{\empty{#}&&{#}\cr phi&varphi\cr}' +(but not with +\`'\halign{\empty #&& #\cr phi&varphi\cr}'). +In this case, the scanning in \`'\p:lgn@1#|<par del|>%' can't detect +the sharp characters that are embedded in braces. That is, a neccesary +condition for getting tabular representation is at least one \`'#' out +of braces, to ensure that such characters can get catcode 13. + + + +\<recall sharp\><<< +\Rc:sharp +>>> + +\<halign tables from TeX\><<< +\catcode`\#=13 +\def\Rc:sharp{\let#=\sv:sharp} +\catcode`\#=6 +\def\:temp{\let\sv:sharp=##}\:temp +>>> + +\SubSection{Utilities fo Embedded /halign} + +\<halign tables from TeX\><<< +\def\chs:halgn#1{\def\:temp{#1}% + \def\:tempa##1##2##3##4##5{\def\:tempa{##1}\def\:tempb{##2}% + \def\:tempc{##3}\def\:tempd{##4}\def\:tempe{##5}}% + \expandafter\:tempa\string\bgro + \ifx \:temp\:tempa \expand:after{\expandafter\try:b\string}% + \else \expandafter\brc:halign \fi} +\def\try:b{\try:ch\:tempb\try:g} +\def\try:g{\try:ch\:tempc\try:r} +\def\try:r{\try:ch\:tempd\try:o} +\def\try:o#1{\def\:temp{#1}% + \ifx \:temp\:tempe \def\:tempb{|<bgroup halign|>}% + \else \let\:temp|=\empty + \def\:tempb{|<braced halign|>}\fi + |<tempa = consume the rest of @1|>\:tempa} +\def\try:ch#1#2#3{\def\:temp{#3}% + \ifx \:temp#1 \expand:after{\expandafter#2\string}% + \else \expandafter\brc:halign \fi} +>>> + +\<halign tables from TeX\><<< +\def\brc:halign{% + \let\:temp|=\empty \def\:tempb{|<braced halign|>}% + |<tempa = consume the rest of @1|>\:tempa} +>>> + +\<tempa = consume the rest of @1\><<< +\long\def\:tempa##1|<par del|>{}% +>>> + +\<bgroup halign\><<< +\let\:tempb|=\def\:tempa +>>> + +\<braced halign\><<< +\let\:tempb|=\:tempa +>>> + + +\SubSection{/halign into {\tt <PRE>}} + + + + + We temporariliy get out from display mode, because we want the + \`'<PRE>' before \''\halign' and nothing is allowed before + \''\halign' in display mode. The enclosure within table is +to group the content for protection from embedding \''<CENTER>' commands and +the like. + + +\SubSection{/halign into /MkHalign} + + +We now have a command of the form \`'\halign{....}' or +a break up on a case of the form \`'\halign{....\egroup'. + + + +\<halign into MkHalign\><<< +\let\tabskip|=\tmp:dim \let\hrulefill|=\empty +\let\hidewidth|=\empty +\expand:after{\h:align#1\cr|<par del|>#1|<par del|>}% +>>> + + + +The pattern of \''\halign' can end with a \''\cr' or a \''\crcr'. We +first check whether \''\cr' present, and if so whether or not it is +preceded by a \''\crcr'. + +\<halign tables from TeX\><<< +\catcode`\#|=13 \catcode`\@|=6 +\long\def\h:align@1\cr@2|<par del|>{\def\:temp{@2}\ifx \:temp\empty + \expandafter\h:alignII \else \crcr:align@1\crcr|<par del|>\fi} +\def\crcr:align@1\crcr@2|<par del|>{\def\:temp{@2}\ifx \:temp\empty + \expandafter\expandafter\expandafter\h:alignI \else + \expandafter\expandafter\expandafter\h:alignII \fi} +\long\def\h:alignI@1\cr@2|<par del|>{% + \SaveMkHalignConfig |<halign configuration for halign|>% + \MkHalign#{@1}@2\EndMkHalign \RecallMkHalignConfig} +\def\h:alignII@1\crcr{\h:alignI@1\cr} +\catcode`\#|=6 \catcode`\@|=11 +>>> + + + + + +\<halign configuration for halign\><<< +\Configure{MkHalign}{\hlg:a}{\hlg:b} + \hlg:c\hlg:d{\hlg:e\RecallMkHalignConfig}\hlg:f +>>> + + + +\<html config util\><<< +\NewConfigure{halign}[6]{\c:def\hlg:a{#1}% + \c:def\hlg:b{#2}\c:def\hlg:c{#3}\c:def\hlg:d{#4}% + \c:def\hlg:e{#5}\c:def\hlg:f{#6}} +\NewConfigure{pic-halign}[1]{\def\pic:hlng{#1}} +>>> + + +\<math config util\><<< +\def\:halign:{<>} +>>> + + + + + +We must put in at least the \`'<>'. + + +% [[gif\r:brk] + +%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{noalign} +%%%%%%%%%%%%%%%%%%%%%%%%% + +In TeX4ht \`'\everycr\noalign' causes a loop because the definition of +\''\halign' includes \''\cr'. We declare a loop when 100 cycles are +encountered. Another possible problem is due to \''\hline' +which contains \''noalign' at its start.\ifHtml[\HPage{more}\Verbatim +\begin{tabular}{||l|c|c|c||} \hline +\multicolumn{4}{|c|}{\LaTeX\ size changing commands}\\ \hline +Style option & 10pt (default) & \tt 11pt & \tt 12pt\\ \hline +\end{tabular} +\EndVerbatim\EndHPage{}]\fi + +If we want to go for optional \''\noalign' with response to a parameter +in \''\Preamble', we need to take care of places that needs it html interpretation +(in tables?). + + + +\<halign tables from TeX\><<< +|<noalign|> +>>> + + + + +\<noalign\><<< +\HAssign\noalign:N|=0 +\def\:tempc#1{|<cycle protection fo noalign|>% + \vtop{\IgnorePar\a:noalign\vtop{\IgnorePar#1}\b:noalign}\cr + \global\tmp:toks|=\everycr \global\everycr{}\cr + \o:noalign:{\global\everycr|=\tmp:toks \gHAssign\noalign:N|=0 }% + } +\HLet\noalign|=\:tempc +|<another alternative for noalign|> +>>> + +We probbaly can remove the cycle protection. + +The internal \''\top' is to ensure vertical mode for material which +assumes it. In the extreem, that also prevents infinite loops. + +% \h:noalign + +\<shared config\><<< +\NewConfigure{noalign-}[2]{\c:def\a:noalign{#1}\c:def\b:noalign{#1}} +>>> + +Any reason left for keeping both cases? + +\<shared config\><<< +\:CheckOption{no-halign} \if:Option \else + \NewConfigure{noalign}{2} +\fi +>>> + + + + + + + + + + + +The \''\Protect' is needed, for instance, in \''\endalignat' +of amstex.tex during a pre-edef stage. + +The looping can happen in +\''\displaylines', \''\eqalignno', and \''\leqalignno' +due to the first command below (\''\@align'?.). + + +\<cycle protection fo noalign\><<< +\gHAdvance\noalign:N by 1 + \ifnum \noalign:N>100 + \global\let\noalign|=\o:noalign: + \:warning{TeX4ht can't handle + \string\everycr{...\string\noalign...}}% + \fi +>>> + + +Removed \`'\let\dotfill|=\empty'. Did I have any reason +to put it there in first place? + + + +\Chapter{Verbatim Enviroments} + + +\<local env\><<< +|<blocs for local env|> +\ifHtml |<html local env|> +\fi +|<verbatim|> +>>> + + + +\Section{Verbatim Text} + + + + +NOTE: VERBATIM WAS THERE for javascript and the like???? + + + + + + + + + + +\SubSection{Between Paragraphs} + +For the option \`'\Verbatim-', it should be noted the requested +special character should not come from the word \`'EndVerbatim'. +Letters within the environment carry categoty code 11, space, tab and +end-of-line characters carry category code 13, and the other +characters have category code 12. {CHECK TABS} + +\<verbatim\><<< +\def\V:rbatim{\begingroup \begin:Verb \Verb:env } +\def\:EndVerbatim{\end:Verb \endgroup } +>>> + +\<the /EndVerbatim delimiter\><<< +{ +\xdef\Verb:atim#1\EndVerbatim{\noexpand\vrb:tt + \leavevmode#1\noexpand\:EndVerbatim} +\catcode`\/|=0 /catcode`/\|=12 +/xdef/Ver:batim#1\EndVerbatim{/noexpand/vrb:tt + /leavevmode#1/noexpand/:EndVerbatim} +} +>>> + +Without the \''/leavevmode' the header is lost when +\''\Verbatim' is followed by empty line. +\ifHtml[\HPage{test}\Verbatim +\Verbatim + +x + +y + +\ EndVerbatim + + +\Verbatim +x + +y + +\ EndVerbatim + +\EndVerbatim\EndHPage{}]\fi + + + +\Verbatim + +> > 5. Also, why did you go in the first place to `alltt' and +> > not `verbatim'? +> +> Verbatim is an ugly beast. It can't be placed in the argument of +> another environment - e.g., I can't create a new environment like this: +> +> \newenvironment{\test} +> {\fontsize{11}{12}\selectfont\begin{verbatim}} +> {\end{verbatim}} + +\EndVerbatim + + + + + + + + +\<html config util\><<< +\NewConfigure{tt}[1]{\let\vrb:tt|=#1} +\let\vrb:tt|=\tt +>>> + +\<verbatim\><<< +\def\Verb:env{\no:catcodes0{64}{12}\no:catcodes{65}{90}{11}% + \no:catcodes{91}{96}{12}\no:catcodes{97}{122}{11}% + \no:catcodes{123}{255}{12}% + \catcode`\^^M|=13 \catcode`\ |=13 \catcode`\^^I|=13 + \:Verbatim \::Verbatim }% +\def\::Verbatim{\futurelet\:temp\V:erbatim} +\def\V:erbatim{% + \ifx -\:temp \expandafter\Ve:rbatim + \else \let\start:verb|=\Ver:batim \expandafter\Ver:sp \fi } +\def\Ver:sp{% + \ifx \ver:sp\:temp \expandafter\Ver:assg + \else \expandafter\Ver:ln \fi } +\def\Ver:ln{% + \ifx \ver:ln\:temp \expandafter\Ver:assg + \else \expandafter\start:verb \fi } +\def\Ver:assg{\afterassignment\start:verb\let\:temp|=} +|<optional control char in /Verbatim|> +|<space and eoln chars in /Verbatim|> +|<the /EndVerbatim delimiter|> +>>> + + +\<optional control char in /Verbatim\><<< +{ +\catcode`\/|=0 +/catcode`/\|=12 +/gdef/Ve:rbatim#1#2{/catcode`#2|=0 + /ifx #2\/let/start:verb|=/Verb:atim + /else /let/start:verb|=/Ver:batim /fi + /futurelet/:temp/Ver:sp} +} +>>> + + +\<space and eoln chars in /Verbatim\><<< +{ +\catcode`\^^I|=13 \catcode`\/|=0 \catcode`\\|=12 +/catcode`/.|=10 /catcode`/^^M|=13 /catcode`/ |=13% +/gdef/:Verbatim{% +.../def^^M{/ht:everypar{/Verb:eoln}/Verb:boln/par/leavevmode}% +.../def {/Verb:sp}% +.../let/ver:sp|= % +.../let/ver:ln|=^^M% +.../def^^I{/leavevmode }}} +>>> + +The following establishes a configurartion according to +what should appear at the start, end, and each end-of-ln. + + + + +% \def\Verb:eoln{\hfil\break\null} + +\<verbatim\><<< +\NewConfigure{VerbatimEnv}[2]{\def\begin:Verb{#1}\def\end:Verb{#2}} +\Configure{VerbatimEnv} + {\par \edef\leftsk:p{\hskip\Verb:Left}% + \leftskip|=\z@ \parindent|=\z@ \ht:everypar{\verb:config}} + {\aft:Verb\par} +\def\verb:config{\bef:Verb\csname leftsk:p\endcsname + \def\verb:config{\Verb:boln \def\Verb:eoln{\leavevmode\par}\leftsk:p}} +>>> + +% \def\Verb:eoln{\par \everypar{\verb:config}% +% \def\Verb:eoln{\par}} +% + + +The following uses the above vehicle to establish a configuration +in accordance to what should appear at the start, end, and +before each of the non-leading lines. + + + + + +\<html config util\><<< +\NewConfigure{HVerbatim}[4]{\c:def\bef:Verb{#1\Verb:eoln}% + \c:def\aft:Verb{\ht:everypar{}#2}% + \c:def\Verb:eoln{#3}\c:def\Verb:boln{#4}} +\NewConfigure{HVerbatim+}[2]{\d:def\Verb:Left{#1}% + \def\Verb:sp{#2}} +>>> + + + + + + + +The above has left margin of \''\Verb:Left' and typically has +inappropriate space above and below the code. The following takes the +left margin of the html code. + +\Verbatim + \Configure{HVerbatim} + {\HtmlPar\HCode{<NOBR><CODE>}} + {\HChar{160}\HCode{</CODE></NOBR>}} + {\HChar{160}\HCode{</CODE></NOBR><BR><NOBR><CODE>}} +\EndVerbatim + + + +% +%\Configure{HVerbatim} +% {\IgnoreIndent \HObey \par \leavevmode} +% {\EndHObey\IgnoreIndent \par} +% {\hfil\break\null \HCode{\html:invisible}\nobreak \hskip +% \ifdim \leftskip>0pt \leftskip \else 2em \fi} + + +The \`'\leavevmode' is needed for the case that the commands start +paragrphs, to ensure that \`'\everypar' operations would be performed +outside the groups of the commands. + + + + + + + + + +\Section{JavaScript} +Note that the first parameter of \''\ScriptCommand' must be in +braces, without surrounding spaces. + +\<scripting commands\><<< +\def\ScriptCommand{\begingroup \catcode`\\|=12 + \:DefScript} +\def\:DefScript#1{\endgroup \Def:Script#1|<par del|>} +\def\Def:Script#1#2|<par del|>{% + \expandafter\let\csname :#2:\endcsname|=\empty + \edef\:temp{\long\def\expandafter\noexpand\csname a:#2\endcsname + ####1\expandafter\noexpand\csname End#2\endcsname + {####1\noexpand\:EndVerbatim}}\:temp + \long\expandafter\def\csname + b:#2\endcsname##1#1End#2{##1\:EndVerbatim}% + \edef\:temp{\noexpand\DefScript: + \expandafter\noexpand\csname #2\endcsname + {\expandafter\noexpand\csname a:#2\endcsname}% + {\expandafter\noexpand\csname b:#2\endcsname}}\:temp +} +>>> + +The \''\long' above is for cases that the new command is embeded +in other commands as is the case, for instance, in \''\CssFile'. + + + +\`'\begin{keep}-\ +AAAAAAAAAAAAAAAAA +BBBBB +\end{keep}' +or +\`'\begin{keep} +AAAAAAAAAAAAAAAAA +BBBBB +\end{keep}' + + + +\<scripting commands\><<< +\def\DefScript:#1#2#3#4#5{\def#1{\call:script{#2}{#3}{#4}{#5}}} +\def\call:script#1#2#3#4{\begingroup \vrb:tt + \leftskip|=\z@ \parindent|=\z@ + \Configure{HVerbatim}{\empty}{\empty}% + {\special{t4ht=}\empty}{\empty}% + \Configure{HVerbatim+}{\z@}{\hbox{ }}% + #3\ht:special{t4ht@@}% + \let\Verb:atim|=#1\let\Ver:batim|=#2% + \def\:EndVerbatim{\ht:special{t4ht@@}% + #4\endgroup\ignorespaces}\Verb:env} +>>> + +% \let\html:invisible|=\empty + + + + +A \`'\Configure{HVerbatim}{}{}{}{}' above will be problematic for +the \`'hooks' option. The \`'\special{t4ht=}'is to ensure +pseudo code at empty lines. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Cascade Style Sheets} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<scripting commands\><<< +\def\a:rootfont:{-} +\:CheckOption{fonts+} \if:Option \def\a:rootfont:{+} +\else + \Log:Note{for marking of the base font, + use the command line option `fonts+'}% +\fi +>>> + +The above option requests css font information for the root font of +the file. + + + + + + + + + + + + + + + +\''\xml:empty' is for inserting the \''/' at end of tags by demand. + +The \''\edef\Preamble{\Preamble}' is needed for context where the +command line arguments come indirectly through an \''\env' macro. + +\<utilities\><<< +\ifx \xml:empty\:UnDef + \edef\Preamble{\Preamble} + \:CheckOption{xhtml} + \if:Option \else \:CheckOption{xml}\fi + \if:Option + \def\xml:empty{ /} + \long\def\:xhtml#1{#1} + \else + \Log:Note{for XML code, use the command line option + `xml' or `xhtml'}% + + \let\:xhtml|=\:gobble + \let\xml:empty|=\empty +\fi \fi +>>> + + + + + +Default font (the extra code is neded in order to activate it +within the dvi file before a change in font, e.g., for a title): + +\<start html file\><<< +\ht:special{t4ht>\jobname.tmp}{\everyhbox{}\hbox + {x\ht:special{t4ht;\a:rootfont:}x}}% +\ht:special{t4ht<\jobname.tmp}% +>>> + + + + + + + + + + + + + + + + + + +\<early Configure\><<< +\NewConfigure{Css}[1]{\def\aa:Css{#1}} +>>> + + + +\<html utilitiesNO\><<< +\tmp:cnt|=\time \divide\tmp:cnt |by 60 +\edef\:temp{\the\tmp:cnt} +\multiply\tmp:cnt |by -60 \advance\tmp:cnt |by \time +\edef\:today{\the\year-\ifnum \month<10 0\fi + \the\month-\ifnum \day<10 0\fi\the\day + \space\ifnum \:temp<10 0\fi \:temp + :\ifnum \tmp:cnt<10 0\fi\the\tmp:cnt :00} +>>> + + + +\Chapter{Ditto: Positioned Elements and Gifs} + +\<gif\><<< +\ifHtml |<html gif|> +\fi +>>> + + +\Section{Positioned Elements} + +\<shared config\><<< +\NewConfigure{Canvas}[3]{} +>>> + + + + +\Verbatim +% * can be replaced by any distinguished character +% \special{ +% * before-all +% * after-all %right %left %height %depth +% * before-char %x %y +% * after-char +% * line %x %y %thickness %length +% * x-coefficients %A(x) + %B +% * y-coefficients %C(y) + %D +% } +\EndVerbatim + +\<html gif\><<< +\def\Canvas{\ht:special{t4ht"}} +\let\EndCanvas|=\Canvas +>>> + + + + + + + + + + + +The attached source tries three renderings for `A<sub>x</sub>'. My +understanding of the positioning mechanism is that, in all three cases, +the reference point for `x' should be 0.7ex under the right leg of A. +Moreover, the measurement 0.7ex should be with respect to the +dimension of the font of A. + +\Verbatim + + /\ + /--\ + / \........... + \/ } 0.7ex within font of A + ./\.......} + + + A<SPAN +STYLE="position:relative"><SPAN +STYLE="position:absolute; top:0.7ex"><SPAN +STYLE="font-size: 70% ;">x</SPAN></SPAN></SPAN> +\EndVerbatim + + + + + + + + + + +\Section{/Picture Comamnd} + + + + + +\<html gif\><<< +\def\:img{% + \ifx *\:temp \let\:temp|=\i:mgif \let\:next|=\:GIf + \else \ifx +\:temp \let\:temp|=\i:mgif \let\:next|=\:Gif + \else \ifx [\:temp \let\:temp|=\im:g + \else \def\:temp{\im:g[{\csname + a:Picture-alt\endcsname}]}% + \fi \fi \fi \:temp} +>>> + +\<html config util\><<< +\NewConfigure{Picture-alt}{1} +\Configure{Picture-alt}{} +>>> + + + + +\''\Configure{Picture-alt}' is for \''\Picture{...}' commands; it +provides the default content. The other two commands tell whether the +bit maps and given alyternate values, respictively, are to be used. +The are used, iff the argument has non empty value (the argument +itself is not used). + + + + +Without the \''\leavevmode' above, the start of paragraph can +\HPage{enter} +\Verbatim +\Picture{OSU.gif xx yy} + +\Picture{OSU.gif xx yy } + +\Picture{OSU.gif} + + +\Picture{OSU.gif } + + + +\Picture[xx]{OSU.gif xx yy} + +\Picture[xx]{OSU.gif xx yy } + +\Picture[xx]{OSU.gif} + +\Picture[xx]{OSU.gif } +\EndVerbatim +\EndHPage{} +into the \''<IMG ..>' tag. + + + + +Empty file name is a request for a default name of the form +\`'\jobname%\romannumeral +\P:ctureCount'. + + + +\<gif\><<< +\def\P:ct{\leavevmode \futurelet\:temp\:img} +\let\Picture|=\P:ct +\def\yes:pic{\PictureOn} +\def\no:pic{\PictureOff} +>>> + + + + +\Section{Call to Specials of Gif} + + +\<gif\><<< +\def\i:mgif#1{\futurelet\:temp\:gif} + +\def\:gif{% + \ifx \:temp[\expandafter\:GifText + \else \expandafter\:next \fi } +>>> + +The following macro is for imported pictures \`'\Picture{....}' and +\`'\Picture[...]{...}'. + +\<html gif\><<< +\def\xim:g[#1]#2{{\cond:pic{% + \def\gif:nm{\edef\gif:nm}\gif:name{#2}% + \expandafter\get:ext\gif:nm.|<par del|>% + \edef\PictureFile{\gif:nm\ifx\:temp\empty \PictExt\fi}% + \Needs-\PictureFile \ht:special{t4ht@-}% + \a:IMG\ht:special{t4ht=\PictureFile}\b:IMG + \a:PictureAlt{#1}\b:PictureAlt \d:IMG + \a:PictureAttr{\at:IMG}\e:IMG}}\After:Picture} +\def\noim:g[#1]#2{} +\let\im:g|=\xim:g +>>> + +\<html config util\><<< +\NewConfigure{PictureAlt}{2} +\NewConfigure{PictureAttr}[1]{\def\a:PictureAttr##1{#1}} +\Configure{PictureAlt} {\NoFonts} {\EndNoFonts} +\Configure{PictureAttr} {\HCode{\Hnewline #1}} +>>> + + + +The following macro is for labeled bit pictures \`'\Picture+{....}' +and \`'\Picture*{...}'. + + + +\<html gif\><<< +\def\strt:gf#1#2{#2% + \csname a:PictureAlt*+\endcsname + \let\sv:sp\sp + \let\sv:sb\sb + \ifx \s:p\:UnDef \else \let\sp\s:p \fi + \ifx \s:b\:UnDef \else \let\sb\s:b \fi + \if #1!\ht:special{t4ht!\:AltPicture:}% + \global\let\:AltPicture:|=\empty \fi |% send to char map|% + \ht:special{t4ht||}% + \ht:special{t4ht++\PictureFile}% + \iprt:special +} +\def\nd:gf#1#2{% + \let\ht:special|=\tex:special + \ht:special{t4ht+}% + \if #1!\ht:special{t4ht!}\fi |%stop sending to char map|% + \let\sp\sv:sp + \let\sb\sv:sb + \ht:special{t4ht||}% + \csname b:PictureAlt*+\endcsname + \ifx #2\relax \else \csname a:PictureAttr*+\endcsname{#2}\e:IMG\fi +} +\def\img:alt{\ht:special{t4ht@-}% + \a:IMG\ht:special{t4ht=\PictureFile}\b:IMG} +>>> + + + + + + + + +\<shared config\><<< +\NewConfigure{PictureAlt*+}{2} +\NewConfigure{PictureAttr*+}[1]{% + \expandafter\def\csname a:PictureAttr*+\endcsname##1{#1}% +} +\Configure{PictureAttr*+}{\ht:special{t4ht=#1}} +>>> + + + + + + +\Verbatim +flag ){ `<make a special for dvi driver`> } + else switch( get_char() ){ + case '+': { `<out gif filename`> + case '@': { `<write to lg file`> break; } + + case '+': { while( special_n-- > 0 ) (void) get_char(); break; } + case '=': Contribution of text (\''\HCode'). + case '<': + case '>': { `<redirect html output`> break; } + case '!': { `<handle char map mode`> break; } + case '|': { gif_ch = !gif_ch; break; } + + case "..." : Positioned dvi code + +\item \`'.extension for root file' + + +\item \`'@@' for char mode (what is this????) e.g., javascript +\item \`'@+' for note to lg file (where is this???) +\item \`'@-' for removing left margins from char maps + + +\HCode{<HR>} + +\item \`'@%P' --- On-off modes for traceing of POP, PUSH in DVI +\item \`'@%D' --- On-off modes for traceing CHAR...RAHC in DVI +\item \`'@%H' --- On-off modes for traceing h spaces +\item \`'@%V' --- On-off modes for traceing v spaces +\item \`'@%R' --- On-off modes for traceing x rulers + + +In all the above, uppercase for plus, lowercase for minus 1 + +\item \`'@%%x...pre...x...post...' --- Group tracing. + Default \`'<!-- DVI ' and \`'\n-->', where \''\n' represents + new line char (i.e., \`'\Hnewline'). + \`'x' can be any character. if it is not there, + the postfix is assumed to be empty. +\item \`'@%...' --- Not used, if not of the above format + +\HCode{<HR>} + +\item \`':+...' increment by 1( define, if not defined) +\item \`':-...' decrement by 1 +\item \`':>...' push current value +\item \`':<...' pop current value +\item \`':!...' display current value +\item \`':|...' display top value + +\item \`';-' --- yes default font +\item \`';+' --- no default font +\item \`';%' --- insert font size +\item \`';=' --- insert css name of ch + + +\item \`';i' --- i=1 (before ch-name),2 (between ch-name and ch),3 + (after ch), 4 (before img-src), 5 (between img-src and alt), 6 + (between alt and name), 7(after name). +\item \`';8' --- PauseFontStyle +\item \`';9' --- ContFontStyle + +\item \`'~' --- on/off for transport data to group boundaries +\item \`'~<....' --- transport back +\item \`'~>....' --- transport forward + +\EndVerbatim + + + + + + +\Section{The Environment of Gif} + + + +\<html config util\><<< +\NewConfigure{IMG}{5} +>>> + + +The third and forth parameters are separated by user +cotributed attr-list. + + + + +\<html config util\><<< +\NewConfigure{Picture}[1]{\def\PictExt{#1}} +\Configure{Picture}{.png} +>>> + +\<picture off\><<< +\let\im:g|=\noim:g +>>> + +\<picture on\><<< +\let\im:g|=\xim:g +>>> + + + +GIF: +\List{*} + +\item + Lossless compression +\item Supports 256 colors. Good for pictures that use only a few colors +\item Relies on an algorithm copyrighted by Unisys. However, the patent +expired (20 June 2003 in US; a year later in Canada, Germany, +France, Italy, Japan, UK). +\item Supports animation +\item +The name stands for Graphics Interchange Format +\item Doesn't support unicode +\EndList + + +PNG: + +\List{*} +\item Losless compression superior to GIF +\item Recommendation status at W3C: + \Link[http://www.w3.org/Graphics/PNG/]{}{}{\tt + http://www.w3.org/Graphics/PNG/}\EndLink{}. +\item Developed as a patent-free alternative GIF +\item Doesn't support animation +\item The name stands for Portable Network Graphics +\item Supports unicode +\EndList + + + +JPG: +\List{*} +\item +Uses lossy compression that discards information the human eye cannot detect. +\item +Supports 16 million colors +\item +Good for photographs and complex graphics +\item +Noticeable reduction in quality for line drawings +\item Named after the committee Joint Photographic Experts Group +that defined the standard. +\EndList + + +\SubSection{With Char Map} + +Independent block: no brackets. + +Resolution can be an integer number or a pair of integer numbers +separated by a comma. The first for x-resolution, the second for +y-resolution. Then we can have a map for boundary characters made +up of pairs: character to be replaced followed by replcment. + + +For \`'\Picture+{}': (no box, no pre) + +\<html gif\><<< +\def\:Gif#1{\cond:pic{% + \gif:name{#1}\csname a:Picture+\endcsname + \strt:gf!\img:alt + \def\EndPicture{\nd:gf!{\c:IMG\Pic:Img}% + \let\EndPicture|=\:UnDef \csname b:Picture+\endcsname + \After:Picture}}} +>>> + +\<html config util\><<< +\NewConfigure{Picture+}{2} +>>> + + + + + + + + +For \`'\Picture*{}': Vertical box + pre. Might be a problem because +vertical boxes assume the width of the page, and a few of them in a +line may cause a picture to go out of the page boundaies---a problem +for convert. If the content of the box is just a box, or boxes, as is +the case in DraTeX, they the ebeded boxes induce the width. +The \`'\hfill\break' may handle some of these cases. + +\`'\Picture*{}.....\EndPicture' will go to \''\:GIf'. +\`'\Picture*[..]{}.....\EndPicture' will go to \''\:GifText'. + + +\<html gif\><<< +\def\:GIf#1{\cond:pic{\ifvmode\vfill\break\else + \ht:special{t4ht@[}\hfill\break.\ht:special{t4ht@]}\fi + \gif:name{#1}\csname a:Picture*\endcsname + \strt:gf!\img:alt + \ifmmode \expandafter\vcenter\else \expandafter\vtop\fi + \bgroup \let\EndPicture|=\:EndGIf \NoHtmlEnv }} +\def\:EndGIf{% + \egroup \nd:gf!{\c:IMG \Pic:Img}\csname b:Picture*\endcsname + \After:Picture} +>>> + +\<html config util\><<< +\NewConfigure{Picture*}{2} +>>> + + +\<html gif\><<< +\def\After:Picture{\After:EndPicture + \global\let\After:EndPicture|=\empty} +\let\After:EndPicture|=\empty +\def\AfterPicture#1{\append:def\After:EndPicture{#1}% + \global\let\After:EndPicture|=\After:EndPicture} +>>> + + +\''<PRE>'s force line breaks also in visual browsers, and we don't +want these breaks within formulas. + +The \`'\let\:Gif|=\:gobble' is no good in the foolowing because it +does not take care of the presence of \`'\EndPicture'. It is also not +needed because \''\:Gif' has \''\cond:pic' to take care of it. + + +\<html gif\><<< +\def\iprt:special{% + \def\ht:special##1{\tex:special{t4ht+##1}}} +\let\tex:special|=\ht:special +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{With Given Text and Inline Text} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\`'\Picture*{}.....\EndPicture' will go to \''\:GIf'. +\`'\Picture+{}.....\EndPicture' will go to \''\:Gif'. +\`'\Picture*[..]{}.....\EndPicture' will go to \''\:GifText' with \`'\:next=\:GIf'. +\`'\Picture+[..]{}.....\EndPicture' will go to \''\:GifText' with \`'\:next=\:Gif'. + +Given text: \`'[non empty]'. Inline text: \`'[]'. + + + +The following macro is for imported pictures \`'\Picture*+{....}' and +\`'\Picture*+[...]{...}'. + + +\<html gif\><<< +\def\x:GifText[#1]#2{\cond:pic{% + \ifx \:next\:GIf + \def\gif:box{\vtop\bgroup \NoHtmlEnv \let\gif:box|=\egroup}% + \else \let\gif:box|=\empty \fi + \gif:name{#2}% + \img:alt \def\:temp{#1}% + \ifx \:temp\empty \else + \csname a:PictureAlt*+[]\endcsname + {#1}\csname b:PictureAlt*+[]\endcsname\fi + \ht:special{t4ht>\jobname.tmp}% |%dump|% + \strt:gf-\empty \gif:box + \def\EndPicture{% + \gif:box \nd:gf-\relax \ht:special{t4ht<\jobname.tmp}% + \csname a:PictureAttr*+[]\endcsname{\c:IMG\Pic:Img}\e:IMG + \After:Picture}% +}} +\let\:GifText|=\x:GifText +\def\no:GifText[#1]{\:gobble} +>>> + + + +\<shared config\><<< +\NewConfigure{PictureAlt*+[]}{2} +\NewConfigure{PictureAttr*+[]}[1]{% + \expandafter\def\csname a:PictureAttr*+[]\endcsname##1{#1}% +} +\Configure{PictureAlt*+[]} {\NoFonts} {\EndNoFonts} +\Configure{PictureAttr*+[]} {\ht:special{t4ht=#1}} +>>> + + + +\<html gif\><<< +\ifx \:DraCatCodes\:UnDef + |<set basic Pic:Img|> +\fi +>>> + +\<set basic Pic:Img\><<< +\def\Pic:Img{\at:IMG} +>>> + + + +The \`'\everypar{t4ht="#1"}' can't be +\List{disc} +\item \`'{\everypar{}\HCode{#1}} --- the \''\leavevmode' can be +ruinful (e.g., in \`'$$ \underbrace{1,...,1} + s_{aaaaaaa}\underbrace{1,...,1} +$$') + +\item \`'{\IgnorePar\HCode{#1}} --- Besides of the above, it +also ruins the paragraph break-up info (e.g., with \''\L' having a definition \`'\def\L{\Picture+[]...\EndPicture'). +\EndList + + + +CHECK ISSUE OF ATTRIBUTES FOR IMAGES + +\<picture off\><<< +\let\:GifText|=\no:GifText +>>> + +\<picture on\><<< +\let\:GifText|=\x:GifText +>>> + + +\SubSection{File Name} + +We have a command of the form \''\gif:name{file-name attributes}' + + + +\<html gif\><<< +\def\gif:name#1{\edef\at:IMG{\noexpand\get:gfnm#1 |<par del|>}\at:IMG} +>>> + +The material within the if is for eliminating the extra space +introduced before \`'|<par del|>'. + +\<html gif\><<< +\def\get:gfnm#1 #2|<par del|>{\def\at:IMG{#2}% + \ifx \at:IMG\empty\else + \expandafter\aT:IMG\at:IMG|<par del|>% + \fi + \gif:nm{#1}} +\def\aT:IMG#1 |<par del|>{\def\at:IMG{#1}} +>>> + +It used to be as follows, which caused extra space at end of arguments. + +\Verbatim +\def\gif:name#1{\edef\at:IMG{\noexpand\get:gfnm#1 |<par del|>}\at:IMG} +\def\get:gfnm#1 #2|<par del|>{\def\at:IMG{#2}\gif:nm{#1}} + +\EndVerbatim + + + + +\<html gif\><<< +\def\NextPictureFile{\def\Next:PictureFile} +\NextPictureFile{} +\def\gif:nm#1{% + \gHAdvance\P:ctureCount |by 1 + \xdef\PictureFile{#1}\ifx \PictureFile\empty + \xdef\PictureFile{\Next:PictureFile}\fi + \global\let\Next:PictureFile|=\empty + \ifx \PictureFile\empty + \bgroup \Advance:\P:ctureCount |by -\Pic:Cnt + \xdef\PictureFile{\j:bname|<tail for file name|>\P:ctureCount + x\Pic:Dm\PictExt}% + \egroup + \else + \expandafter\get:ext\PictureFile.|<par del|>% + \ifx\:temp\empty \xdef\PictureFile{\PictureFile\PictExt}\fi + \fi + \immediate\write-1{l. \the\inputlineno\space Writing + \jobname.idv[\P:ctureCount] (\PictureFile)}% + }% +>>> + +\<html gif\><<< +\def\SavePicture#1{\def\:tempa{#1}\SaveP:cture} +\Odef\SaveP:cture[#1]{% + \edef\:tempb{\noexpand\Odef\expandafter\noexpand\:tempa[####1]{{% + \let\noexpand\Log:Needs|=\noexpand\:gobble + \noexpand\Picture[\HCode{#1}]{\PictureFile\space####1}}}}% + \:tempb \expand:after{\global\expandafter\let\:tempa|=}\:tempa } +>>> + +Without the \''\HCode{#1}' above things like \''-->' expand. Why +the \''\HCode' is not a problem? + + +\<html gif\><<< +\def\NewPictureDomain#1{% + \global\let\Pic:Cnt|=\P:ctureCount + \def\Pic:Dm{#1} \ifx \Pic:Dm\empty + \xdef\Pic:Dm{\P:c:Dm}% + \gHAdvance\P:c:Dm |by 1 + \fi } +\HAssign\P:c:Dm |= 0 +\let\Pic:Dm|=\empty +\HAssign\Pic:Cnt|=1 +>>> + + +\SubSection{Counter} + +\<html gif\><<< +\HAssign\P:ctureCount|=0 +\let\:AltPicture:|=\empty |%100 = default size|% +>>> + +\SubSection{Non-Html} + + + +Don't do \''\let\EndPicture=\relax'. Within \''\PictureOff' it is treated as +undefined. + + + +\Section{Utilities for Gif} + + +In \`'\pic:cond\a\b' the \`'\b' refers to the command to be used when +already within a gif-picture. The \`'\a' is to be used if a +gif-picture is to be opened. + + +\<html gif\><<< +\def\pic:gobble{\ifx \EndPicture\:UnDef \else \expandafter\:gobble\fi} +\def\pic:gobbleII{\ifx \EndPicture\:UnDef \else \expandafter\:gobbleII\fi} +\def\nopic:gobble#1{\ifx \EndPicture\:UnDef \else #1\fi} +\def\pic:cond#1#2{% + \ifx\EndPicture\:UnDef \def\end:condpic{\EndPicture}\expandafter#1% + \else \let\end:condpic|=\empty \expandafter#2% + \fi } +\def\cond:pic#1{% + \ifx \EndPicture\:UnDef #1\else + \let\E:pic|=\EndPicture \PushMacro\E:pic + \def\EndPicture{\PopMacro\E:pic \let\EndPicture|=\E:pic}\fi} +>>> + + + +\SubSection{Disabled Math} + +Global on and off for some reason fails sometimes. + + +\<html gif\><<< +\def\PictureOff{% + \expandafter\let\csname Pic:\Pic:On\endcsname|=\EndPicture + \ifx \EndPicture\:UnDef \let\EndPicture|=\empty \fi + |<picture off|>% + \Advance:\Pic:On |by 1 } +\def\PictureOn{% + \ifnum \Pic:On>0 + \Advance:\Pic:On |by -1 + \ifnum \Pic:On=0 |<picture on|>% + \fi + \expand:after{\let\EndPicture|=}\csname Pic:\Pic:On\endcsname + \ifx \EndPicture\relax \let\EndPicture|=\:UnDef\fi + \else + \:warning{\string\PictureOn\space without \string\PictureOff}% + \fi } +\HAssign\Pic:On |= 0 +>>> + + + + + + + + + + + + + + + +Don't go directly for \`'\PushMacro\EndPicture', just in case the +user wants to use this stack. + +Smash is most often used to produce comples patterns, so +let su go and make them pictures. + +\<html gif\><<< +\def\:temp#1{\ifx \EndPicture\:Undef + \relax\ifmmode\hbox{$#1$}\else \hbox{#1}\fi + \else \o:smash:{#1}\fi} +\HLet\smash|=\:temp +>>> + + + +The definition \''\def\HCode#1{\leavevmode\special{t4ht=#1}}' can be +problematic for grouping in pictures because of the \''\leavevmode' +that in immediate environment produces some side code. + + +It looks like the following problems, or most +of them, have been resolved with a fix to \''\noalign'. + + +The \`'\openup10pt' causes too much space in +% +\ifHtml[\HPage{some pictures}\Verbatim +\openup10pt \halign{ + $2^{#}$\quad&\( + \overbrace{2\cdots 2}^{#\ + \rm times}\)\quad& #\ cr + 3&3&8\ cr } +\EndVerbatim\EndHPage{}]\fi +% +and too much memory in +% +\ifHtml[\HPage{others}\Verbatim +% \input tex4ht.sty \Preamble{html} +% \EndPreamble +% +%\catcode`\@=11 +% +%\def\eqalign#1{\null\,\vcenter{\openup\jot\m@th +% \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil +% \ crcr#1\ crcr}}\,} +% +%\def\eqalignno#1{\displ@y \tabskip\centering +% \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip +% &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering +% &\llap{$\@lign##$}\tabskip\z@skip\ crcr #1\ crcr}} +% +%\def\displ@y{\global\dt@ptrue\openup\jot\m@th +% \everycr{% +% \noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000\p@ +% \vskip-\lineskiplimit \vskip\normallineskiplimit \fi +% \else \penalty\interdisplaylinepenalty \fi}}} +% +% +%\def\displ@y{\global\dt@ptrue +% \everycr{\noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000\p@ +% \vskip-\lineskiplimit \vskip\normallineskiplimit \fi +% \else \penalty\interdisplaylinepenalty \fi}}} +% +%\def\openup{\afterassignment\@penup\dimen@=} +%\def\@penup{\advance\lineskip\dimen@ +% \advance\baselineskip\dimen@ +% \advance\lineskiplimit\dimen@} +% +%\openup10pt \halign{ +% $2^{#}$\quad&\( +% \overbrace{2\cdots 2}^{#\ +% \rm times}\)\quad& #\ cr +% 3&3&8\ cr } +% +%\eqalignno{ +%li&= 1\ cr +%&> line 2& (7)} +% +%\bye +\EndVerbatim\EndHPage{}]\fi +% +Putting a \''\offinterlineskip' solves sometimes the problem +in some pictures of getting too much vertical +spcace, but may create +\ifHtml[\HPage{improper pictures}\Verbatim +% \input tex4ht.sty \Preamble{html} +% \EndPreamble +% +%\catcode`\@=11 +% +%\def\eqalignno#1{\displ@y \tabskip\centering +% \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip +% &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering +% &\llap{$\@lign##$}\tabskip\z@skip\ crcr #1\ crcr}} +% +%\eqalignno{ +%li&= 1\ cr +%&> line 2& (7)} +%\bye +\EndVerbatim\EndHPage{}]\fi{} with depth and hiehgt 0 (put +in TeX4ht1.sty the picture in box0 and measure). The problem +is because \''\def\offinterlineskip{\baselineskip-1000\p@ + \lineskip\z@ \lineskiplimit\maxdimen}' puts too much space +in \''\lineskiplimit'. + + + +\Chapter{Math} + + +\<math config util\><<< +\:CheckOption{base} +\if:Option \else + |<config math end-points|> + |<sub and sup|> + |<math classes|> + |<grouped math classes|> + |<built-in tex math ops|> +\fi +>>> + + +\Section{End Points of Math Environments} + + +The following become active only when they are being configured. + + + +\<config math end-points\><<< + \NewConfigure{$}[3]{% + \def\a:mth{\bgroup#1}\def\b:mth{#2\egroup}% + \def\c:mth{|<empty script base trap|>#3}% + \everymath{\ifx \EndPicture\:UnDef + $\a:mth\everymath{}\everydisplay{}$% + \aftergroup\b:mth \c:mth \fi}} +>>> + + + + +\<config math end-points\><<< + \NewConfigure{$$}[3]{% + \def\a:display{\bgroup#1}% + \def\b:display{#2\egroup}% + \def\c:display{#3}% + \everydisplay{\ifx \EndPicture\:UnDef + $$\a:display\everymath{}\everydisplay{}$$% + \aftergroup\b:display \c:display\fi}} + +>>> + + +Can't put \Verb'|<empty script base trap|>' into \Verb+\def\c:display{#3}%+ +because of cases such as \Verb+$$\halign{#\cr a\cr}$$+ + + +\<empty script base trap\><<< +{\csname HCode\endcsname{}}% +>>> + +Tex4ht translate each \`'$$...$$' into \`'$$ +$$$$...$$' and upon +reaching the second environment the mode is already horizontal. For +such case, the above approach of distinguishing in-line and off-line +display math don't work. This is a place where an implimentation +within the tex engine can do a better work. On the other hand, all of +this can be fixed within and XSL-like transformations on the final +output of tex4ht. + + +\''\halign' doesn't allow expansion into content to precede +it within the math mode. Hence, the \''\aftergroup' below. + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Math into Pictures} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<config math end-points\><<< +\def\PicDisplay{\pic:gobble\env:PD + \def\:temp{$$}\pic:cond\Pic:math\:temp} +\def\EndPicDisplay{\end:condpic\pic:gobble\endenv:PD} +\def\Pic:math{\hfil\break + \expand:after{\Picture*}\alt:Mth{ \c:Math}} +>>> + + +\<config math end-points\><<< +\def\PicMath{\leavevmode\pic:gobble\env:PM\hbox\bgroup + \everymath{}\everydisplay{}\pic:cond\pic:math$} +\def\EndPicMath{\end:condpic\egroup\pic:gobble\endenv:PM} +\def\pic:math{\expand:after{\Picture+}\alt:mth{ \c:math}} +>>> + + + + +\<config math end-points\><<< +\NewConfigure{PicDisplay}[4]{\def\alt:Mth{#3}% + \ifx \alt:Mth\empty\else \def\alt:Mth{[#3]}\fi\def\c:Math{#4}% + \c:def\env:PD{#1}\c:def\endenv:PD{#2}} +\NewConfigure{PicMath}[4]{\def\alt:mth{#3}% + \ifx \alt:mth\empty\else \def\alt:mth{[#3]}\fi\def\c:math{#4}% + \c:def\env:PM{#1}\c:def\endenv:PM{#2}} +>>> + +\`'\Configure{PicDisplay}{}{}{[ALT]}{extra-attributes}' +\`'\Configure{PicMath}{}{}{[ALT]}{extra-attributes}' + + +\Section{Non-Pictorial Math} + + +\SubSection{Dvi Math} + + +\<config math end-points\><<< +\def\DviMath{\a:DviMath\leavevmode \MathClass |<same page|> \DviSend} +\def\EndDviMath{\EndDviSend |<end same page|>\EndMathClass \b:DviMath} +\NewConfigure{DviMath}{2} +>>> + + + +The above need to be boxed to prevent page breaks within the send +environment \`'\special{t4ht~}...\special{t4ht~}'.. + +\<same page\><<< +\ht:special{t4ht@(}\vbox + \bgroup{\expandafter\ifx\csname ht:everypar\endcsname\relax + \expandafter\everypar + \else \expandafter\ht:everypar\fi{}\leavevmode\ht:special{t4ht@)}}% + \relpenalty=10000 + \binoppenalty=10000 +>>> + +\<end same page\><<< +\ht:special{t4ht@(}\egroup\ht:special{t4ht@)}% +>>> + +The penalty is to prohibit line breaks. For instance, the following +formula under the mathml mode. + +\Verbatim +\documentclass{scrartcl} +\begin{document} +$a^{n_{1}+n_{2}+n_{3}} + (1-p_{1})^{n_{4} +n_{6} +n_{7} +(N-n_{1}-...b- n_{7})} + p_{2}^{n_{1} +n_{2} +n_{4} +n_{6}} + (1-p_{2})^{n_{3} +n_{5} +n_{7} +(N-n_{1}-...b- n_{7})} + p_{3}^{n_{1} +n_{3}+n_{4} +n_{7}} + (1-p_{3})^{n_{2} +n_{5} +n_{6} +(N-n_{1}-...b- n_{7})}$ +\end{document} +\EndVerbatim + + +The specials remove the space at the start and end points of the box. + + + +Examples: + +\Verbatim +\Configure{$} {\Tg<math>\DviMath} {\EndDviMath\Tg</math>} {} +\Configure{$$} {\Tg<display>\DviMath} {\EndDviMath\Tg</display>} {} + +\Configure{()} {\Tg<math>\DviMath$} {$\EndDviMath\Tg</math>} +\Configure{[]} {\Tg<display>\DviMath$$} {$$\EndDviMath\Tg</display>} +\EndVerbatim + + + + +\SubSection{Positioned Math} + + + +\<config math end-points\><<< +\def\PMath{\bgroup\Canvas \x:SUBOff \x:SUPOff + \let\Picture|=\empty \everymath{}\everydisplay{}} +\def\EndPMath{\EndCanvas\egroup} +\:CheckOption{PMath} \if:Option + \def\:Pmath{$\PMath$\aftergroup\EndPMath} + \def\:Pdisp{$$\PMath$$\aftergroup\EndPMath} + \everymath{\:Pmath} + \everydisplay{\:Pdisp} +\fi +>>> + + +Example: \`' \def\({\PMath$} \def\){$\EndPMath} \def\[{\PMath$$} +\def\]{$$\EndPMath}'. + + + +\ifHtml[\HPage{positioned math} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +\Verbatim +\Css{.Canvas { position:absolute; }} +\Css{.Canvas { font-size:100\%; }} +\Css{.Canvas .cmr-7{ font-size:70\%; }} +\Css{.Canvas .cmmi-7{ font-size:70\%; font-style: italic;}} + +$ a \over b + c $ +\EndVerbatim + + +\Tg<hr /> + + +\Verbatim +\input tex4ht.sty \Preamble{html,sty,4.0s,PMath} + +\Css + BODY{ font-size : 200% } + .Canvas { position: relative; } + SPAN.cmr-7 .Canvas-char , + SPAN.cmmi-7 .Canvas-char , + SPAN.cmsy-7 .Canvas-char { font-size: 70% ; } + SPAN.cmr-5 .Canvas-char , + SPAN.cmmi-5 .Canvas-char { font-size: 50% ; } +\EndCss + + + \EndPreamble +aa +$ +{{A+C \over B+D}+F \over X*Y} +$ + +\bye +\EndVerbatim +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\EndHPage{}]\fi + + + + + +\Section{Subscripts and Superscripts} + + +\<sp and sb for catcode 13\><<< +\ifnum \the\catcode`^=13 + \let\expandafter\noexpand + \csname x:SUPOff\endcsname|=\noexpand\empty + \let\expandafter\noexpand + \csname x:SUPOn\endcsname|=\noexpand\empty + \catcode`\noexpand ^|=\the\catcode`^\fi +\ifnum \the\catcode`_=13 + \let\expandafter\noexpand + \csname x:SUBOff\endcsname|=\noexpand\empty + \let\expandafter\noexpand + \csname x:SUBOn\endcsname|=\noexpand\empty + \catcode`\noexpand _|=\the\catcode`_\fi +>>> + +The \''\x:SUBOff' (and \''\x:SUPOff') are activated only if the catcodes +of \`'^' and \`'_', respectively, were not 13 when tex4ht.sty was +loaded. If the catcode were 13, we need a user intervention, in which +\`'\sp' and \`'\sb' should be referenced for math mode. That is, +something along the lines \`'\ifmmode \expandafter\sp\else +\expandafter current^\fi' will probably work most of the times. + +TRY: Replace SUBOn with HSUBOn, SUBOff with HSUBOff, Ditto for SUP + +\<sub and sup\><<< +\let\s:b|=\sb +\let\:sbb|=\sb |%DraTeX already uses \:sb|% +\def\sb{\m:op\:sbb{SUB}} +\catcode`\_|=8 +\:CheckOption{no_} \if:Option + \let\s:b|=\:UndFi + |<old SUB 0|> + |<new SUB 0|> + \def\no:restore{\let\no:restore|=\:UnDef} +\else + \Log:Note{for non active \string_, + use the command line option `no\string_'}% + |<old SUB 1|> + |<new SUB 1|> + \catcode`\_|=13 + |<math sb|> + \def\x:SUBOff{\let_|=\s:b} + \def\pr:sb{\ifx \EndPicture\:UnDef + \expandafter\Protect\expandafter\S:b + \else \expandafter\s:b \fi} + |<old SUB 2|> + |<new SUB 2|> + |<old SUB 3|> + |<new SUB 3|> + \catcode`\_|=8 + \:CheckOption{_13} \if:Option + \def\no:restore{\let\no:restore|=\:UnDef + \mathcode`\_|="8000 \catcode`\_|=13 } + \append:def\SUBOn{\mathcode`\_|="8000 \catcode`\_|=13 |<let sb|>} + \else + \Log:Note{for \string_ of catcode 13, + use the command line option `\string_13'} + \def\no:restore{\let\no:restore|=\:UnDef + \mathcode`\_|="8000 \catcode`\_|=12 } + \append:def\SUBOn{\mathcode`\_|="8000 \catcode`\_|=12 |<let sb|>} + \fi + \bgroup + \SUBOn \def\:temp{|<let sb|>} + \expandafter \egroup \:temp +\fi +>>> + + +\<old SUB 0\><<< +\let\x:SUBOff|=\empty \let\x:SUBOn|=\empty +>>> +\<new SUB 0\><<< +\let\SUBOff|=\empty \let\SUBOn|=\empty +>>> + +\<old SUB 1\><<< +\ifx \sys:sb\:UnDef \def\:tempaa{_} +\else \def\:tempaa{\noexpand\sys:sb}\fi +>>> +\<new SUB 1\><<< +\ifx \sys:sb\:UnDef \def\:tempa#1{\append:def\SUBOff{\let#1|=_}} +\else \def\:tempa#1{\append:def\SUBOff{|<HSUBOff op|>}}\fi +>>> + +\<HSUBOff op\><<< +\def#1{% + \ifmmode \expandafter\s:b \else \expandafter\sys:sb \fi +}% +>>> + +\<old SUB 2\><<< +\edef\:SUBOff{\def\noexpand_{\:tempaa}} +>>> + +\<new SUB 2\><<< +\:tempa_ +>>> + +\<old SUB 3\><<< +\def\x:SUBOn{\def_{\ifmmode \expandafter\pr:sb + \else \expandafter\sys:sb\fi}|<let sb|>} +\x:SUBOn +>>> + +\<new SUB 3\><<< +\def\SUBOn{\catcode`\_|=8 + \def_{\ifmmode \expandafter\pr:sb + \else \expandafter\sys:sb\fi}} +\SUBOn +>>> + + + + + + + + + + + + +\<record external sub-sup\><<< +\edef\SUPOff{% + \catcode`\noexpand ^|=\the\catcode`^\relax +} +\edef\SUBOff{% + \catcode`\noexpand _|=\the\catcode`_\relax +} +\bgroup + \catcode`\^|=13 \global\let\sys:sp|=^ + \catcode`\_|=13 \global\let\sys:sb|=_ +\egroup +>>> + + +\<sub and sup\><<< +\let\s:p|=\sp +\let\:spp|=\sp +\def\sp{\m:op\:spp{SUP}} +\catcode`\^|=7 +|<default sup sup config|> +\:CheckOption{no^} \if:Option + \let\s:p|=\:UndFi + |<old SUP 0|> + |<new SUP 0|> +\else + \Log:Note{for non active \string^, + use the command line option `no\string^'}% + |<old SUP 1|>% + |<new SUP 1|>% + \catcode`\^|=13 + |<math sp|> + \def\x:SUPOff{\let^|=\s:p } + \def\pr:sp{\ifx \EndPicture\:UnDef + \expandafter\Protect\expandafter\S:p + \else \expandafter\s:p \fi} + |<old SUP 2|> + |<new SUP 2|> + |<old SUP 3|> + |<new SUP 3|> + |<sup 13|> + \catcode`\^|=7 + \:CheckOption{^13} \if:Option + |<sup sup 13 config|> + \append:def\no:restore{\mathcode`\^|="8000 \catcode`\^|=13 } + \append:def\SUPOn{\mathcode`\^|="8000 \catcode`\^|=13 |<let sp|>} + \else + \Log:Note{for \string^ of catcode 13, + use the command line option `\string^13'}% + \append:def\no:restore{\mathcode`\^|="8000 \catcode`\^|=12 } + \append:def\SUPOn{\mathcode`\^|="8000 \catcode`\^|=12 |<let sp|>} + \fi + \bgroup + \SUPOn \def\:temp{|<let sp|>} + \expandafter \egroup \:temp +\fi +>>> + + +\<default sup sup config\><<< +\NewConfigure{\string^\string^}[2]{% + \def\:tempa##1>{}\def\:temp{#1}\:warning{\string + \Configure{\string\string\string ^\string\string + \string^}{\expandafter\:tempa\meaning \:temp}{...} + ignored; option \string^13 is not on}} +>>> + + + +\<sup 13\><<< +\def\:sUp{% + \let\:sUp|=^% + \def^{\futurelet\:temp\next:hat} + \def\next:hat{\ifx ^\:temp \expandafter\:dblhat\else + \expandafter\:sUp\fi}% +} +>>> + +\<sup sup 13 config\><<< +\:sUp +\def\:dblhat#1#2{\def\:temp{#2}% + \def\:tempc{\def\:tempa####1>{}\:warning{\string^\string + ^\expandafter\:tempa\meaning\:temp? \string\Configure{\string + \string\string ^\string\string\string^}{\expandafter\:tempa + \meaning \:temp}{...} or use option no\string^}}% + \ext:chr \:tempc} +\let\ext:chr|=\empty +\NewConfigure{\string^\string^}[2]{% + \NewConfigure{\string^\string^}{2}% + \append:def\ext:chr{\def\:tempa{#1}\ifx \:temp\:tempa + \def\:tempc{#2}\fi}} +>>> + + + +\<old SUP 0\><<< +\let\x:SUPOff|=\empty \let\x:SUPOn|=\empty +>>> +\<new SUP 0\><<< +\let\SUPOff|=\empty \let\SUPOn|=\empty +>>> +\<old SUP 1\><<< +\ifx \sys:sp\:UnDef \def\:tempbb{^} +\else \def\:tempbb{\noexpand\sys:sp}\fi +>>> +\<new SUP 1\><<< +\ifx \sys:sp\:UnDef \def\:tempb#1{\append:def\SUPOff{\let#1|=^}} +\else \def\:tempb#1{\append:def\SUPOff{|<HSUPOff op|>}}\fi +>>> + + + + + +\<HSUPOff op\><<< +\def#1{% + \ifmmode \expandafter\s:p \else \expandafter\sys:sp \fi +}% +>>> + + +\<old SUP 2\><<< +\edef\:SUPOff{\def\noexpand^{\:tempbb}} +>>> +\<new SUP 2\><<< +\:tempb^ +>>> + +\<old SUP 3\><<< +\def\x:SUPOn{\def^{\ifmmode \expandafter\pr:sp + \else \expandafter\sys:sp\fi}|<let sp|>} +\x:SUPOn +>>> + +\<new SUP 3\><<< +\def\SUPOn{% + \def^{\ifmmode \expandafter\pr:sp + \else \expandafter\sys:sp\fi}} +\SUPOn +>>> + + + +\<let sp\><<< +\let\sp=^ +>>> + +\<let sb\><<< +\let\sb=_ +>>> + + + +\<math sp\><<< +\if:Option + \def\S:p{\m:op\s:p{SUP}} +\else + \def\S:p#1{\def\SuP:{#1}\futurelet\:temp\sup:sub} + \:CheckOption{^13} \if:Option \catcode`\_|=13 + \else \catcode`\_|=12\fi + \def\blank:space{ + } + \def\sup:sub{\expandafter + \ifx \blank:space\:temp \expandafter\sup:subA + \else \expandafter\sup:subB\fi} + \expandafter\def + \expandafter\sup:subA\blank:space{\futurelet\:temp\sup:sub} + \def\sup:subB{\ifx _\:temp \expandafter\SUP:SUB + \else \expandafter\a:putSUP \fi } + \catcode`\_|=8 + \def\a:putSUP{\sup:I \SuP:} + \def\sup:I{\m:op\s:p{SUP}} +\fi +>>> + + +\<math sb\><<< +\if:Option + \def\S:b{\m:op\s:b{SUB}} +\else + \def\S:b#1{\def\SuB:{#1}\futurelet\:temp\sub:sup} + \def\blank:space{ + } + \def\sub:sup{\expandafter + \ifx \blank:space\:temp \expandafter\sub:supA + \else \expandafter\after:sub\fi} + \expandafter\def + \expandafter\sub:supA\blank:space{\futurelet\:temp\sub:sup} + |<extension of sub|> + \def\a:putSUB{\sub:I \SuB:} + \def\sub:I{\m:op\s:b{SUB}} +\fi +>>> + + +% \def\sub:supB{\ifx ^\:temp \expandafter\SUB:SUP +% \else \expandafter\after:sub\fi} + + +\<utilities\><<< +\NewConfigure{afterSUB}[2]{\expandafter + \def \csname \meaning#1sb\endcsname{#2}} +\NewConfigure{putSUB}[1]{\def\a:putSUB{#1}} +\NewConfigure{putSUP}[1]{\def\a:putSUP{#1}} +\:CheckOption{no^} \if:Option \else + \:CheckOption{^13} \if:Option \catcode`\^|=13 + \else \catcode`\^|=12 \fi + \Configure{afterSUB}^{\SUB:SUP} + \catcode`\^|=7 +\fi +>>> + +The following is needed for a math prime after sub. For instance, \'+a_1'$+. + +\<extension of sub\><<< +\def\after:sub{\futurelet\:temp\choose:sub} +\def\choose:sub{\expandafter + \ifx \csname \meaning\:temp sb\endcsname\relax + \expandafter \a:putSUB + \else + \expandafter\expandafter\csname \meaning\:temp sb\endcsname + \fi +} +>>> + + +We need to catch cases like the blank space appearing after the b +within AmsTeX in an equation like: +\Verbatim +\begin{equation} +a^b +_c +\end{equation} +\EndVerbatim +We can't use a declaration of the form + \''\def\sub:supA#1{...' +because the macro consumes the parameter following the space, +and that parameter can a forbidden token. + + + +The \`'\edef\:SUBSUPOff' doesnt wotk with \''\let' instead +of \''\def' in the body. Why? + + +\<sub and sup\><<< +\def\m:op{\ifx \EndPicture\:UnDef \expandafter\:mop + \else \expandafter\:m:p\fi} +\def\:mop{\relax\ifmmode \expandafter \mo:p \else \expandafter\mop:\fi} +\def\mo:p#1#2#3{{\csname a:#2\endcsname + #1{#3}\csname b:#2\endcsname}} +\def\mop:#1#2#3{#1} +\def\:m:p#1#2{#1} +>>> + +\<sub and sup\><<< +\NewConfigure{SUB}{2} +\NewConfigure{SUP}{2} +>>> + +We need to pause the hyperext font for the case that the +subscript itself comes with a font change. Without the +pause we'll get a partial overlap with the \''<SUB/SUP>' +font (e.g., \`'\it $\A_{\mathbf{R}}$'). + + +In case that \`'^' looses its original meaning, TeX will complain +about double exponnet if it follows a quote symbol.\ifHtml[\HPage{'}\Verbatim +\input tex4ht.sty \Preamble{html} \EndPreamble + +$\overline{a'^b}$ + +\csname bye\endcsname + +\EndVerbatim\EndHPage{}]\fi. + +\SubSection{Merging Subscripts and Superscripts} + +Two options \`'\Configure{SUBSUP}{ before }{ between }{ after }' +and +\`'\Configure{SUPSUB}{ before }{ between }{ after }', differing in the +way the reorder the superscript and subscript. However, if the +three parameters are empty, or just a single subscript / superscript +is present, then \`'\Configure{SUB}{ before }{ after }' +and \`'\Configure{SUP}{ before }{ after }' get into effect. + +\<sub and sup\><<< +\:CheckOption{no^} \if:Option \else \:CheckOption{no_}\fi +\if:Option + \NewConfigure{SUBSUP}[3]{} + \NewConfigure{SUPSUB}[3]{} + \NewConfigure{SUB/SUP}[6]{} +\else + \def\SUP:SUB#1#2{\let\chs:sbsp|=\:gobble\def\SuB:{#2}\SUBSUP:} + \def\SUB:SUP#1#2{\def\chs:sbsp##1##2{##1}\def\SuP:{#2}\SUBSUP:} + \let\SUBSUP:|=\empty + \NewConfigure{SUBSUP}[3]{% + \def\:temp{#1#2#3}\ifx \:temp\empty + \def\SUBSUP:{\sub:I\SuB:\sup:I\SuP:}% + \else \def\SUBSUP:{#1\s:b{\SuB:}#2\s:p{\SuP:}#3}\fi} + \NewConfigure{SUPSUB}[3]{% + \def\:temp{#1#2#3}\ifx \:temp\empty + \def\SUBSUP:{\sup:I\SuP:\sub:I\SuB:}% + \else \def\SUBSUP:{#1\s:p{\SuP:}#2\s:b{\SuB:}#3}\fi} + \NewConfigure{SUB/SUP}[6]{% + \def\:temp{#1#2#3#4#5#6}\ifx \:temp\empty + \def\SUBSUP:{\sub:I\SuB:\sup:I\SuP:}% + \else \def\SUBSUP:{\chs:sbsp + {#1\s:b{\SuB:}#2\s:p{\SuP:}#3}% + {#4\s:p{\SuP:}#5\s:b{\SuB:}#6}}\fi} +\fi +>>> + + + +\SubSection{Early Activation of Sub/Sup Scripts} + + +\<early latex subs/sups\><<< +\ifx \config:opt\:UnDef \else + |<defs for early latex subs/sups|> +\fi +>>> + +\<defs for early latex subs/sups\><<< +\append:def\:RestoreCatcodes{\early:sub\early:sup} +\let\:IfFileExists\IfFileExists +\long\def\IfFileExists#1#2#3{% + \csname recall:sub\endcsname + \csname recall:sup\endcsname + \expandafter\let\csname #1:sub\endcsname=\early:sub + \expandafter\let\csname #1:sup\endcsname=\early:sup + \let\early:sub=\relax \let\recall:sub\relax + \let\early:sup=\relax \let\recall:sup\relax + \:IfFileExists{#1}{#2}{#3}% + \expandafter\let\expandafter\early:sub\csname #1:sub\endcsname + \expandafter\let\expandafter\early:sup\csname #1:sup\endcsname + \early:sub \early:sup +} +\ifx \o:document\:UnDef + \pend:def\Preamble{% + \csname recall:sub\endcsname + \csname recall:sup\endcsname} +\fi +>>> + +\</document recall sub/sup\><<< +\csname recall:sub\endcsname +\csname recall:sup\endcsname +>>> + +\<defs for early latex subs/sups\><<< +\def\:CheckOption#1{\def\:temp{#1}% + \:Optionfalse + \expandafter\:ScanOptions\config:opt,,//} +\def\:ScanOptions#1,#2//{\def\:next{#1}% + \ifx \:next\empty + \else \ifx \:temp\:next \:Optiontrue \let\:next\relax + \else \def\:next{\:ScanOptions#2//}% + \fi \fi \:next } +|<cats early latex subs/sups|> +\let\:CheckOption|=\:UnDef +>>> + + + +\<cats early latex subs/sups\><<< +\let\early:sub=\empty +\:CheckOption{early_} \if:Option + \:CheckOption{no_} \if:Option \else + \:CheckOption{_13} \if:Option + \def\early:sub{% + \xdef\recall:sub{% + \mathcode`\noexpand\_=\the\mathcode`\_ + \catcode`\noexpand\_=\the\catcode`\_ + } + \mathcode`\_="8000 \catcode`\_=13 + } + \else + \def\early:sub{% + \xdef\recall:sub{% + \mathcode`\noexpand\_=\the\mathcode`\_ + \catcode`\noexpand\_=\the\catcode`\_ + % \writesixteen{.....sub \the\catcode`\_}% + }% + \mathcode`\_="8000 \catcode`\_=12 + % \writesixteen{.....sub 12} + } + \fi + \fi +\else + \Log:Note{for \string_ at preamble, + use the command line option `early\string_'}% +\fi +>>> + +\<cats early latex subs/sups\><<< +\let\early:sup=\empty +\:CheckOption{early^} \if:Option + \:CheckOption{no^} \if:Option \else + \:CheckOption{^13} \if:Option + \def\early:sup{% + \xdef\recall:sup{% + \mathcode`\noexpand\^=\the\mathcode`\^ + \catcode`\noexpand\^=\the\catcode`\^ + } + \mathcode`\^="8000 \catcode`\^=13 + } + \else + \def\early:sup{% + \xdef\recall:sup{% + \mathcode`\noexpand\^=\the\mathcode`\^ + \catcode`\noexpand\^=\the\catcode`\^ + % \writesixteen{.....sup \the\catcode`\^}% + }% + \mathcode`\^="8000 \catcode`\^=12 + % \writesixteen{.....sup 12}% + } + \fi + \fi +\else + \Log:Note{for \string^ at preamble, + use the command line option `early\string^'}% +\fi +>>> + + +\Section{Math Classes} + + + + + +The requests are placed on symbols of the fonts, which might be a +problem for symbols not used in math. + +\<math classes\><<< +\def\MathClass{\ht:special{t4ht\string^}} +\let\EndMathClass|=\MathClass +\def\PauseMathClass{\ht:special{t4ht\string^-}} +\def\EndPauseMathClass{\ht:special{t4ht\string^+}} +>>> + + + + +Math classes: Ordinary (0), large operators (1), binary operators (2), +relation (3), opening del (4), closing delimiter (5), +punctuation (7). + + + +\SubSection{Configure Characters} + + +Set the class delimiters for the symbols. + +\<math classes\><<< +\catcode`\^=7 +\NewConfigure{MathClass}[5]{\NoFonts \ht:special{t4ht@[}% + \def\:temp{#2}\ifx \:temp\empty \else + \ht:special{t4ht\string^#1#2#3#2#4}\fi + \def\:temp{#5}\ifx \:temp\empty \else + \bgroup \everypar{}\everymath{}\everydisplay{}% + \hbox{${\ht:special{t4ht\string^#1}% + {#5}^{{#5}^{#5}}\ht:special{t4ht\string^}}$}% + \vbox{$${\ht:special + {t4ht\string^#1}{#5}^{{#5}^{#5}}\ht:special{t4ht\string^}}$$}\egroup + \fi + {\everypar{}\noindent\vfill\break}% + \ht:special{t4ht@]}\EndNoFonts +} +\NewConfigure{MathDelimiters}[2]{\NoFonts \ht:special{t4ht@[}% + \bgroup \everypar{}\everymath{}\everydisplay{}% + \hbox{${\ht:special + {t4ht\string^4}#1\ht:special{t4ht\string^5}#2% + \ht:special{t4ht\string^4}{}^{#1}\ht:special{t4ht\string^5}{}^{#2}% + \ht:special{t4ht\string^4}{}^{{}^{#1}}\ht:special + {t4ht\string^5}{}^{{}^{#2}}% + \ht:special{t4ht\string^}}$}% + \vbox{$${\ht:special + {t4ht\string^4}#1\ht:special{t4ht\string^5}#2% + \ht:special{t4ht\string^4}{}^{#1}\ht:special{t4ht\string^5}{}^{#2}% + \ht:special{t4ht\string^4}{}^{{}^{#1}}\ht:special + {t4ht\string^5}{}^{{}^{#2}}% + \ht:special{t4ht\string^}}$$}% + {\everypar{}\noindent\vfill\break}% + \ht:special{t4ht@]}\egroup + \EndNoFonts} +\catcode`\^=12 +>>> + + + +\<math classes\><<< +\HAssign\New:MathClass|=7 +\catcode`\/=0 +\catcode`\\=12 +/def/NewMathClass#1{/relax + /expandafter/ifx /csname /expandafter/:gobble/string#1/endcsname/relax + /gHAdvance/New:MathClass by 1/relax + /ifnum /New:MathClass>78 + /:warning{Too many math classes} + /else + /HAssign#1/New:MathClass /def/:tempc{#1}/:NewMC + 0123456789:;<=>?% + @ABCDEFGHIJKLMNO% + PQRSTUVWXYZ[\]{/string^}{/string_}% + `abcdefghijklmno% + pqrstuvwxyz{/string{}||{/string}}{/string~}|<par del|>% + /fi + /else + /:warning{/string#1 is already defined} + /fi} +/catcode`/\=0 +\catcode`\/=12 +\def\:NewMC#1{% + \ifnum \:tempc=0 \expandafter\xdef\:tempc{#1}\expandafter\stop:do + \else + \expandafter\HAdvance\:tempc |by -1\relax + \expandafter\:NewMC + \fi +} +>>> + +79 math classes: 0--78. + + +\<math classes\><<< +\NewConfigure{nolimits}[1]{\def\:temp{#1}\ifx \:temp\empty + \let\nolimits|=\o:nolimits: \else + \def\:temp{\o:nolimits:\futurelet\:temp\:nolimits}% + \def\:nolimits{\ifx \:temp\limits \else + \ifx \:temp\nolimits \else #1\fi\fi}% + \HLet\nolimits|=\:temp \fi} +\let\o:nolimits:|=\nolimits +\NewConfigure{limits}[1]{\def\:temp{#1}\ifx \:temp\empty + \let\limits|=\o:limits: \else + \def\:limits{\ifx \:temp\nolimits \else#1\fi}% + \def\:temp{\o:limits:\:l:mits}% + \HLet\limits|=\:temp \fi} +\let\o:limits:|=\limits + +\def\::limits{\expandafter\ifx \blank:spc\:temp + \afterassignment\:l:mits \tmp:cnt0% + \else + \ifx \limits\:temp\else + \expandafter\expandafter\expandafter\:limits + \fi + \fi} +\def\:l:mits{\futurelet\:temp\::limits} +\catcode`\ =13\relax\def\blank:spc{\let\blank:spc= }\blank:spc% +\catcode`\ =10\relax +>>> + + +Test case to check: \Verb=\[\sum\nolimits\limits_a^b u_s^2 \]= + + +The assignment \`'\tmp:cnt0%' also consumes the space that follows. + + + + +\<math classes\><<< +\NewConfigure{displaylimits}[1]{\def\:temp{#1}\ifx \:temp\empty + \let\displaylimits|=\o:displaylimits: \else + \def\:displaylimits{\ifx \:temp\nolimits \else + \ifx \:temp\limits \else #1\fi\fi}% + \def\:temp{\o:displaylimits:\display:l:mits}% + \HLet\displaylimits|=\:temp \fi} +\let\o:displaylimits:|=\displaylimits +\def\::displaylimits{\expandafter\ifx \blank:spc\:temp + \afterassignment\display:l:mits \tmp:cnt0% + \else\expandafter\:displaylimits \fi} +\def\display:l:mits{\futurelet\:temp\::displaylimits} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Configure Grouped Classes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\`'\mathord{...}' et al request delimiters for their arguments. The +\`'\special{t4ht^X}' , for `~'-`0' (digit) greater than 79, request +the delimiters of class 0 to apply to the next group (created by the +math ord). The \`'0' asks to ignore nested delimiters; can be +replaced by \`'1' to request the sub delimiters. + + + + +A \`'\special{t4ht\string^)*...*...}' is variant of +\`'\Send{Group}{1}... \Send{EndGroup}{1}' for delimiters, without +subdelimiters. Taking \`'(' (or any other character which below a +digit and not + or -) instead of \`')' gives also the subdelimiters. + +A \`'\special{t4ht\string^i)}' takes the delimiters from +the characters of class i. + + +\<grouped math classes\><<< +\def\:temp{\a:mathord \o:mathord:} \HLet\mathord|=\:temp +\let\a:mathord|=\empty +\def\:temp{\a:mathop \o:mathop:} \HLet\mathop|=\:temp +\let\a:mathop|=\empty +\def\:temp{\a:mathbin \o:mathbin:} \HLet\mathbin|=\:temp +\let\a:mathbin|=\empty +\def\:temp{\a:mathrel \o:mathrel:} \HLet\mathrel|=\:temp +\let\a:mathrel|=\empty +\def\:temp{\a:mathopen \o:mathopen:} \HLet\mathopen|=\:temp +\let\a:mathopen|=\empty +\def\:temp{\a:mathclose \o:mathclose:} \HLet\mathclose|=\:temp +\let\a:mathclose|=\empty +\def\:temp{\a:mathpunct \o:mathpunct:} \HLet\mathpunct|=\:temp +\let\a:mathpunct|=\empty +>>> + + + +\<grouped math classes\><<< +\NewConfigure{FormulaClass}[4]{% + \def\:temp{#2}% + \expandafter\edef\csname a:\ifcase #1 mathord\or mathop\or + mathbin\or mathrel\or mathopen\or mathclose\else + mathpunc\fi\endcsname{\noexpand\ht:special + {t4ht\string^\ifx\:temp\empty#1)\else )#2#3#2#4\fi}}} +>>> + + + + +\`'\Configure{FormulaClass}{class number}{char}{before}{after}': +char+before+after=empty implies same markings as for single +characters. In fact, can do the same for any sub formula with any function, +not just the math functions. + +\<grouped math classes\><<< +\NewConfigure{FormulaClass*}[4]{% + \def\:temp{#2}% + \expandafter\edef\csname a:\ifcase #1 mathord\or mathop\or + mathbin\or mathrel\or mathopen\or mathclose\else + mathpunc\fi\endcsname{\ht:special + {t4ht\string^\ifx\:temp\empty#1(\else (#2#3#2#4\fi}}} +>>> + +The following are generalizations, introduced for allowing temporary +changs, like in \`' +\renewcommand{\opname}[1]{% + \Configure{mathop*}{*}{<mrow>}{</mrow>}{\Configure{FormulaClass}{0}{}{}{}} + \mathop{\fam0#1}}'. + +\<grouped math classes\><<< +\NewConfigure{mathord}[4]{\Configure{FormulaClass}{0}{#1}{#2}{#3}% + \pend:def\a:mathord{#4}} +\NewConfigure{mathop}[4]{\Configure{FormulaClass}{1}{#1}{#2}{#3}% + \pend:def\a:mathop{#4}} +\NewConfigure{mathbin}[4]{\Configure{FormulaClass}{2}{#1}{#2}{#3}% + \pend:def\a:mathbin{#4}} +\NewConfigure{mathrel}[4]{\Configure{FormulaClass}{3}{#1}{#2}{#3}% + \pend:def\a:mathrel{#4}} +\NewConfigure{mathopen}[4]{\Configure{FormulaClass}{4}{#1}{#2}{#3}% + \pend:def\a:mathopen{#4}} +\NewConfigure{mathclose}[4]{\Configure{FormulaClass}{5}{#1}{#2}{#3}% + \pend:def\a:mathclose{#4}} +\NewConfigure{mathpunct}[4]{\Configure{FormulaClass}{6}{#1}{#2}{#3}% + \pend:def\a:mathpunct{#4}} +>>> + + + +\<grouped math classes\><<< +\NewConfigure{mathord*}[4]{\Configure{FormulaClass*}{0}{#1}{#2}{#3}% + \pend:def\a:mathord{#4}} +\NewConfigure{mathop*}[4]{\Configure{FormulaClass*}{1}{#1}{#2}{#3}% + \pend:def\a:mathop{#4}} +\NewConfigure{mathbin*}[4]{\Configure{FormulaClass*}{2}{#1}{#2}{#3}% + \pend:def\a:mathbin{#4}} +\NewConfigure{mathrel*}[4]{\Configure{FormulaClass*}{3}{#1}{#2}{#3}% + \pend:def\a:mathrel{#4}} +\NewConfigure{mathopen*}[4]{\Configure{FormulaClass*}{4}{#1}{#2}{#3}% + \pend:def\a:mathopen{#4}} +\NewConfigure{mathclose*}[4]{\Configure{FormulaClass*}{5}{#1}{#2}{#3}% + \pend:def\a:mathclose{#4}} +\NewConfigure{mathpunct*}[4]{\Configure{FormulaClass*}{6}{#1}{#2}{#3}% + \pend:def\a:mathpunct{#4}} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Renewed Commands} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Math Symbols from Macros} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The \`'\MathSymbol' works on empty when the symbol comes from a font. +That is, when the macro is defined as \`'\mathchar"xxxx'. A +\`'\MathSymbol+' variant may be applied to force definitions. Warning +messages are not helpful as the symbols may have nultiple definitions +dependent on the style files being loaded. + +\<built-in tex math ops\><<< +\def\MathSymbol{\futurelet\:temp\:::MathSymbol} +\def\:::MathSymbol{\if +\:temp + \expandafter\:MathSymbol \else + \expandafter\::MathSymbol \fi +} +\def\::MathSymbol#1#2{% + \def\:tempb##1"##2///{##1}% + \edef\:tempa{\expandafter\expandafter\expandafter\:tempb + \expandafter\meaning\csname#2\endcsname"///}% + \edef\:tempc{\string\mathchar}% + \ifx \:tempa\:tempc + \NewConfigure{#2}{1}\Configure{#2}{\csname o:#2:\endcsname}% + \else + \:MathSymbol{}{#1}{#2}% + \fi +} +\def\:MathSymbol#1#2#3{% + \def\:temp{{\math:sym#2{#3}}}% + \expandafter\HLet\csname #3\endcsname\:temp + \NewConfigure{#3}{1}\Configure{#3}{\csname o:#3:\endcsname}% +} +\def\math:sym#1#2{{\relax\ifmmode \expandafter#1\fi + {\csname a:#2\endcsname}}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{/left and /right} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Again, we don't want line breaks from \''<PRE>'s within +formulas in visual browsers. + +\<built-in tex math ops\><<< +\def\:temp#1{\a:left{#1}\o:left:#1\b:left{#1}} +\HLet\left|=\:temp +\def\:temp#1{\a:right{#1}\o:right:#1\b:right{#1}} +\HLet\right|=\:temp +\NewConfigure{left}[2]{\def\a:left##1{#1}\def\b:left##1{#2}} +\NewConfigure{right}[2]{\def\a:right##1{#1}\def\b:right##1{#2}} +\Configure{left}{}{} +\Configure{right}{}{} +>>> + + + +\SubSection{Fractions} + + +\<built-in tex math ops\><<< +\def\:tempc{\pic:gobble\a:over \o:over: \pic:gobble\b:over} +\HLet\over|=\:tempc +\NewConfigure{over}{2} +\def\:tempc{\pic:gobble\a:atop \o:atop: \pic:gobble\b:atop} +\HLet\atop\:tempc +\NewConfigure{atop}{2} +\def\::above{\pic:gobble\a:above \o:above:\tmp:dim + \pic:gobble\b:above } +\def\:above{\afterassignment\::above} +\def\:tempc{\Protect\:above \tmp:dim|=} +\HLet\above\:tempc +\NewConfigure{above}{2} +>>> + +\<built-in tex math ops\><<< +\def\::abovewithdelims#1#2{\pic:gobble\a:abovewithdelims + \o:abovewithdelims:#1#2\tmp:dim\pic:gobble\b:abovewithdelims} +\def\:abovewithdelims#1#2{\def\:temp{\::abovewithdelims#1#2}% + \afterassignment\:temp\tmp:dim=} +\def\:tempc{\Protect\:abovewithdelims } +\HLet\abovewithdelims\:tempc + \NewConfigure{abovewithdelims}{2} +\def\:overwithdelims#1#2{\pic:gobble\a:overwithdelims + \o:overwithdelims:#1#2\pic:gobble\b:overwithdelims} +\def\:tempc{\Protect\:overwithdelims} +\HLet\overwithdelims\:tempc + \NewConfigure{overwithdelims}{2} +\def\:atopwithdelims#1#2{\pic:gobble\a:atopwithdelims + \o:atopwithdelims:#1#2\pic:gobble\b:atopwithdelims} +\def\:tempc{\Protect\:atopwithdelims} +\HLet\atopwithdelims\:tempc + \NewConfigure{atopwithdelims}{2} +>>> + + + +\`'\Configure{over} + {\Send{GROUP}{0}{[before]}[before-rule]} + {[before-argument]\Send{EndGROUP}{0}{[after]}}' + + + +\`' +\Configure{over} + {\special{t4ht\string~<<NOMINATOR>}\HCode + {</NOMINATOR><DENOMINATOR>}} + {\special{t4ht\string~></DENOMINATOR>}}' + + + + Beware of nested formulas for proper arrangments of + \`'\special{t4ht\string~...}' + + + + + + +\SubSection{Radical's} + +\<built-in tex math ops\><<< +\def\:temp{\pic:gobble\a:radical\o:radical:} +\HLet\radical|=\:temp +\NewConfigure{radical}{1} +>>> + +\Verbatim +\Configure{radical}{% + [before-sign]% + \Send{EndGROUP}{2}{[after-sign]}% + \Send{GROUP}{3}{[before-body]}% + \Send{EndGROUP}{3}{[after-body]}% +} +\EndVerbatim + + +\SubSection{Mathchoice} + +The following is disabled because \TeX{} evaluates the four parameters +and then keeps one and throws away the other. With the picture +environment enabled, we'll get messages in the log file of the form +\`'--- needs --- a.idv[1] ==> ai.gif ---' for pictures that are not +included in the code. + + +\<built-in tex math ops\><<< +\def\:temp#1#2#3#4{\a:mathchoice + \o:mathchoice:{#1}{#2}{#3}{#4}\b:mathchoice } +\HLet\mathchoice|=\:temp +\NewConfigure{mathchoice}{2} +>>> + + + +The following, for \''\?phantom', is not needed because it is already +covered by \''\mathchoice'. + +\Verbatim +\def\makeph@nt#1{\PictureOff + \setbox\z@\hbox{#1}\finph@nt \PictureOn} +\def\mathph@nt#1#2{\PictureOff + \setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt \PictureOn} +\EndVerbatim + + + + +\SubSection{Equation Numbers} + +The \''\eqno' and \''\leqno' refer to what follow them in the math +environment as left and right equation numbers, respectively. Tex +typesets them within groups, so material can be sent to the end of the +number with a \`'\Send{GROUP}{0}{...}'. + +\<built-in tex math ops\><<< +\def\:temp{\o:eqno:\a:eqno} +\HLet\eqno|=\:temp +\def\:temp{\o:leqno:\a:leqno} +\HLet\leqno|=\:temp +\NewConfigure{eqno}{1} +\NewConfigure{leqno}{1} +>>> + + + + + + +In addition, +\`'1140. We get into ordinary math mode from display math mode when +the equation numbers \eqno and \leqno appear'. +Hence, the \`'\everymath{}' is needed also for the display case. +To be on the sure side, we also put \`'\everydisplay{}' in the math mode. + + + + +\Chapter{Decorated Symbols} + + + +\Section{Htf Classes: Requesting BackEnd Fonts through /specials} + + +\<font config util\><<< +\NewConfigure{htf}[9]{{% + \tmp:cnt|=#1 \ifnum \tmp:cnt>255 \:warning{Code larger than + 255 in \string\Configure{htf}}\else + \ht:special{t4ht;||\ifnum \tmp:cnt<10 00\else + \ifnum \tmp:cnt<100 0\fi\fi + \the\tmp:cnt#2#3#2#4#2#5#2#6#2#7#2#8#2#9#2\the\tmp:cnt}% + \fi}} +>>> + + +A \`'\%x' requests character code in hexadecimal representation. + + +\`'\Configure{htf}' is essentially a configuration on +fonts, where even cases, for instance, the \`'\special{t4ht;|004...}' +extra independent information for characters. +Odd cases like \`'\special{t4ht;|003...}', on the other hand, are +addition to the \`'IMG' and not an independent info !!! + +\SubSection{Pausing} + +\<font config util\><<< +\def\NoFonts{\ht:special{t4ht;8}} +\def\EndNoFonts{\ht:special{t4ht;9}} +>>> + + +Nesting is allowed. + +\SubSection{Configurations} + +Code for calls made from htf fonts. Should start with three +digits defining a number smaller than 256. Odd numbers apply +to gifs, and even to text. The odd are intended for insertion into +IMG marks, the odd are not used yet. + +The character part is prented for codes that are not given in +cases of characters and image-characters, respectively. +Code 000 is created to groups of non image characters, and the +codes 002, 004, 006, add extras to individual characters. The +od codes deal only with specific characters, not groups. + +The corresponding formatting instructions in the css +file are determined in the `Font' option within the +perl script. + + + +\<font config util\><<< +\NewConfigure{FontCss}[2]{\def\a:FontCss:{#1}\def\a:FontCssPlus:{#2}} +>>> + +\<font config util\><<< +\NewConfigure{htf-css}[2]{{% + \def\:temp##1|<par del|>{\def\:tempa{##1}}% + \afterassignment\:temp\tmp:cnt|=0#1|<par del|>% + \def\:temp{\Configure{Needs}}% + \ifx \:tempa\empty + \expandafter\:temp\expandafter{\a:FontCss:}\Needs{("#1"): #2}% + \else + \expandafter\:temp\expandafter{\a:FontCssPlus:}\Needs{#1 #2}% + \fi}} +\NewConfigure{htf-attr}[2]{{% + \Configure{Needs}{##1}% + \Needs{Font\string_css\string_base: #1Font\string_css\string_mag: #2}}} +>>> + + +\`'\NewConfigure{htf-css}{number}{...}' for a class; +\`'\NewConfigure{htf-css}{not-number}{...}' for a htf font. + + + + +\`'\Configure{htf}{even}{+}{open}{name}{size}{mag}{ord}{ch}{end}{gif-id}' + + + +\`'\Configure{htf}{odd}{+}{open}{alt}{class}{size}{mag}{ord}{end}': mag and +ord must be integer patterns. + + +\`'\Configure{htf-css}{4}{.underline{text-decoration:underline; }}' is +alredy covered. + + + +HOW \`'\Configure{htf-css}{4}{.small-caps{font-variant: small-caps; }}' +differs from \`'\Css{.small-caps{font-variant: small-caps; }}'? +The latter is alway introduced into the +css file, wheras the earlier only conditionally when the font/class is in use. + + +% \special{t4ht;||003"\Hnewline ALIGN="MIDDLE} + + +% \special{t4ht;||003-MIDDLE} + + + + + +We have +\Verbatim +\Configure{htf} + {odd-for-img-chr} + {distinguished delimiter ch+id} + {prefix for file name, if the latter is desired} + {prefix for alt, if the latter is desired} + {c-template, if family name is desired} + {c-template, if font size is desired} + {c-template, if font mag is desired} + {c-template, if ch ord is desired} + {close of tag} +\Configure{htf} + {even-for-reg-chr} + {distinguished delimiter ch+id} + {prefix} + {c-template, if family name is desired} + {c-template, if font size is desired} + {c-template, if font mag is desired} + {c-template, if ch ord is desired} + {postfix} + {closing tag} +\EndVerbatim + + + +The id is to be used in Needs fo associating styles to the +character decorations. Also, due to the id, we can assign to the +same code of font different styles. +\ifHtml[\HPage{example}\Verbatim +\Configure{htf}{6}{+a}{}{}{<a.. + FONT="\%s}{\%s"}{MAG="\%d"}{ORD="\%d"}{>} +$\leq$ +\Configure{htf}{6}{+b}{}{}{<b... + FONT="\%s}{\%s"}{MAG="\%d"}{ORD="\%d"}{>} +$\leq$ + +\Needs{a .......} +\Needs{b .......} +\EndVerbatim + +produces + +\Verbatim +Font class 6 a: <a.. FONT="%s%s"MAG="%d"ORD="%d"> +Font class 6 b: <b... FONT="%s%s"MAG="%d"ORD="%d"> +l. 27 --- needs --- a ....... --- +l. 28 --- needs --- b ....... --- +\EndVerbatim\EndHPage{}]\fi + +Newer: + +\Verbatim +Css: TD.caption{white-space: nowrap; } +Font("cmex","10","100") +Font("cmmi","10","100") +Font("cmmi","5","100") +Font("cmmi","7","100") +Font("cmr","10","100") +Font("cmr","5","100") +Font("cmr","7","100") +Font("cmsy","10","100") +Font("cmsy","7","100") +Font("cmti","10","100") +Font("cmtt","10","100") +Font_Class(1,""): <IMG SRC=""ALT=""CLASS="%s%s-%d--%x"> +Font_Class(3,"mva"): <IMG SRC=""ALT=""CLASS="%s-%d--%x"ALIGN="MIDDLE"> +Font_Class(6,"ul"): <SPAN CLASS="underline"></SPAN> +Font_Css("sc"): .small-caps{font-variant: small-caps; } +Font_Css("ul"): .underline{text-decoration:underline; } +\EndVerbatim + +The \`'Font(...)' indicates the fonts in use; it's format is determined +by the system variable LGFNT, and can be changed within the env file +through a `f' flagged field. The indicated fonts are used for deciding +which entries in \`'htf.sty' should be introduced into the css file. + +The \`'Font_Class(...)' indicates the classes in use within the fonts; +it's format is determined by the system variable LGCLS, and can be +changed within the env file through a `c' flagged field. + +The \`'Font_Css' is a contribution from the TeX file, from +\`'\Configure{htf-css}{...}' commands. +It overides info found in \`'htf.sty'. + Its format can be +changed by \`'\Configure{FontCss}{...##1...}', before the +\''\Preamble' command. + +The \`'Css' is a contribution from the TeX file, from \`'\Css{...}' +comamnds that preced the \''\CssFile' command. Its format can be changed +by \`'\Configure{Css}{...##1...}', before the \''\Preamble' command. + +The \`'\special{t4ht;,}' prevents notification to the +log file of the change requested by \`'\Configure{htf}'. + +\`'\Configure{htf-css}{cmmi}{font-style: italic;}' +produces +\`'Font_Css_Plus cmmi font-style: italic;' +and that appears also in \`'htf.sty'. +The following are already in \`'htf.sty'. + + +%%%%%%%%%%%%%%%%%%%%%% +\Section{New Accents} +%%%%%%%%%%%%%%%%%%%%%% + +\<accents\><<< +\:CheckOption{new-accents} \if:Option + |<new accents|> +\else + |<tools for accents|> + |<old accents|> +\fi +>>> + + + + + +Some accents of TeX are defined through commands of the form +\`'\accent <number> <char>', and some throught macros (e.g., \''\b', +\''\c', and \''\d'). Moreover,the \`'\accent <number> <char>' reduces +to \`'\char <number>', whenever \''<char>' doesn't immediately follows +\''<number>' (however, font changes, etc, are possible in between). + +We can't decide the content of accented charaters without looking at +the htf fonts. The accented characters of the source (la)tex files +may go through transformations due to \''\uppercase' and +\''\lowercase' operations (e.g., \'+\uppercase \'a+). + +\<new accents\><<< +\def\:temp{\leavevmode\ifx \d:mathaccent\empty + \else \ht:special{t4ht\string~>1\d:mathaccent}\fi + \ht:special{t4ht*\string^m}\o:mathaccent:} +\HLet\mathaccent|=\:temp +\def\:temp{\leavevmode\ht:special{t4ht*\string^t}\o:accent:} +\HLet\accent|=\:temp +\NewConfigure{accent}[6]{\ht:special{t4ht*\string^t#1#2#1#3#1#4#1#5#1#6}} +\NewConfigure{mathaccent}[6]{\ht:special{t4ht#1\string + ^m#1#2#1#3#1#4#1#5#1}\edef\d:mathaccent{#6}} +\let\d:mathaccent|=\empty +\NewConfigure{accented}[6]{\ht:special + {t4ht*\string^a#1#2#1#3#1#4#1#5#1#6}} +\NewConfigure{accenting}[3]{\ht:special{t4ht*\string^i#1#2#1#3#1#1}} +>>> + +%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Screening} +%%%%%%%%%%%%%%%%%%%%%% + +The following feature is used as in + +\`'\Configure{HAccent}\hat{AEIOUaeiou{}}{\Picture+{}}{\EndPicture}' + +and it screens which characters are allowed to use the native +definitions of the accents, and which one the commands tailored for +the hooks. + + + + +\<new accents\><<< +\NewConfigure{HAccent}[1]{\pic:Accent#1} +\def\pic:Accent#1#2#3#4{\edef\:tempb##1{{\expandafter\:gobble\string#1}}% + \pend:defI\:tempb{\choose:accent{####1}#2\relax|<par del|>}% + \append:defI\:tempb{{#3}{#4}}% + \expandafter\let\csname \string#1:\endcsname|=\:tempb + \edef\:tempb{\noexpand\Protect\noexpand\acc:nm{\string#1}}% + \HLet#1|=\:tempb} +\def\acc:nm#1{\csname \string#1:\endcsname} +>>> + +The following sub-utilities iteratively search the dictionary to check +whether the parameter is known. + +\<new accents\><<< +\def\choose:accent#1{\def\:accented{#1}\cs:accent} +\def\realx:par{\relax} +\def\cs:accent#1{\def\:tempa{#1}% + \ifx \:tempa\realx:par \expandafter\pic:accent + \else + \ifx \:tempa\:accented + \expandafter\expandafter\expandafter\nopic:accent + \else \expandafter\expandafter\expandafter\cs:accent\fi + \fi} +\def\pic:accent#1|<par del|>#2#3#4{% + #3\nopic:accent|<par del|>{#2}{}{}#4} +\def\nopic:accent#1|<par del|>#2#3#4{\expandafter\expandafter + \csname o:#2:\endcsname\expandafter{\:accented}} +>>> + +%%%%%%%%%%%%%%%%%%%%%% +\Section{Old Accents} +%%%%%%%%%%%%%%%%%%%%%% + + + +For entries not in the given font tables (not specified in the +\`'\Configure{accent}'), problems can arise for cases such as +\`'csname \ifmmode m\else t\fi :\acn:no\endcsname{#2}' and +\`'\hat{\char o}' when they don't go into pictures. + +\SubSection{Accents through `accents' Configurations} + +The +\`'\Configure{accent}\^\hat{{A-in}{A-out}{B-in}{B-out}...{}{last-out}} +{do-found} {do-not-found}' defines the text accent \''\^' and math +accent \''\hat'. In cases that the text or math accent has no counter math +accent, we fake \''\null' for the math part. + +When \''\hat{foo}' is encountered, a search is made for an \`'??-i' +that equals \`'foo' in the given accent table. If found, do-found is +executed; otherwise, do-not-found is executed. The do-found can reference the +??-out through \`'#1'. The do-not-found can reference the +old definition of \`'\hat' through \`'#1' and the foo through \`'#2'. + + + +\SubSection{Foundation for Accents} + + + + +\<tools for accents\><<< +\NewConfigure{accent}[5]{% + \expandafter\ifx \csname x:\string#2\endcsname\relax + \expandafter\edef + \csname x:\string#2\endcsname{\accent:cnt}% + |<save old accent comamnd|>% + |<new accent command|>% + \Advance:\accent:cnt by 1 + \fi + \edef\:tempa{\csname x:\string#2\endcsname}% + |<get accent config|>% + } +\def\accent:cnt{0} +>>> + +The \`'\csname t:\accent:cnt\endcsname' part is for the text mode, +and the \`'\csname m:\accent:cnt\endcsname' part is for math mode. + + +\<save old accent comamnd\><<< +\expandafter\let\csname t:\accent:cnt\endcsname|=#1% +\expandafter\let\csname m:\accent:cnt\endcsname|=#2% +>>> + + +\<new accent command\><<< +\edef\:temp{\ifx \accent:def\:UnDef \noexpand\def \else + \noexpand\accent:def \fi + \noexpand\:temp{\noexpand\ac:pc{\accent:cnt}}% + \noexpand\HLet\noexpand#1|=\noexpand\:temp + |<hook accent table|>}% +\:temp +\def\:temp{#1}\def\:tempa{#2}\ifx \:temp\:tempa \else \HLet#2|=#1\fi +>>> + +The search starts at \`'\ac:pc{\accent:cnt}'. +The accent table is stored in \`'\csname\accent:cnt :ac\endcsname'. +The table is searched by \''\acpc:', which puts the result in \''\end:accent'. + +\<hook accent table\><<< +\noexpand\pend:defI + \noexpand\:accnts{\noexpand\ifnum ########1=\accent:cnt + \noexpand\expandafter \noexpand\acpc: + \expandafter\noexpand\csname\accent:cnt :ac\endcsname + \noexpand\expandafter \noexpand\end:accent \noexpand\fi}% +>>> + +The pend above is just: +\`'\pend:defI\:accnts{\ifnum ########1=\accent:cnt + \expandafter\acpc: \csname\accent:cnt :ac\endcsname + \expandafter\end:accent\fi}' + + + +\<get accent config\><<< +\def\:temp{#3}\ifx \:temp\empty \else + \expandafter\def\csname \:tempa :ac\endcsname{#3} +\fi +\long\def\:temp##1##2{#4#5}\ifx \:temp\:gobbleII \else + \expandafter\def\csname C:\:tempa\endcsname##1{#4}% + \expandafter\def\csname MT:\:tempa\endcsname##1##2{#5}% +\fi +>>> + + + +\''\acp:c' might go to the aux file of latex, where \`':' has standard +cat code. Hence, the the protection on \''\csname' and not the command +itself (as was the case at the beginning). + + +\<old accents\><<< +\def\ac:pc{\Protect\csname acp:c\endcsname} +\def\acp:c#1#2{{\def\acn:no{#1}\def\:temp{#2}\ifx \:temp\empty + |<accent on empty arg|>% + \else |<tabacckludge|>% + \def\ac:pc{\ac:nt{#2}}\a:cpc{#1}\fi }} +\def\ac:nt{\csname \ifmmode m\else t\fi :\acn:no\endcsname} +>>> + +\<accent on empty arg\><<< +\ac:nt{}% +>>> + +\<old accents\><<< +\def\Ac:nt{\edef\:temp{\ifx \EndPicture\:UnDef + \def\noexpand\ac:pc{\noexpand\Protect \noexpand\acp:c}% + \expandafter\noexpand \csname MT:\acn:no\endcsname + \fi + \expandafter\noexpand + \csname\ifmmode m\else t\fi :\acn:no\endcsname}\:temp +} +>>> + +The second line above is for nested accents in nonpictorial +environments (e.g., \''\hat{\hat{x}}'). Otherwise, we are +getting an infinite loop because by now \''\ac:pc' has been +modified to equal \''\Ac:nt'. + + +\`' \def\acp:c#1#2{{\def\:temp{#2}\def\ac:pc{\accent#1 #2}\a:cpc{#1}}}' + +We can't have braces around \`'#2' in \`'\accent#1 #2' because they +get TeX \ifHtml[\HPage{confused}\Verbatim +\Draw \Text(--Ra\'ul--) \EndDraw +\EndVerbatim\EndHPage{}]\fi{} on the exact location of the mark. + + +\<old accents\><<< +\def\a:cpc#1{% + \ifx \EndPicture\:UnDef + \def\AC:PC{|<default accent|>% + }% + \:accnts{#1}\empty + \else \ac:pc \fi } +>>> + + +The \''\empty' is for the skiping over the leftover of the fonts, once +a font is found. It is used in \''\end:accent'. + +\<tools for accents\><<< +\def\end:accent#1\empty{} +\def\:accnts#1{} +>>> + + + + + + + +Latex has \`'\def\@tabacckludge#1{\csname #1\endcsname}'. + +\<tabacckludge\><<< +\let\@tabacckludge|=\:tabacckludge +>>> + +\SubSection{Getting the Html Replacement} + + +\<old accents\><<< +\def\acpc:#1#2{% + \def\:tempa{#1}\ifx \:tempa\empty + |<char/pic accent|>% + \else \ifx \:tempa\:temp \let\AC:PC|=\empty + |<accent for table entry|>\fi + \expandafter\acpc: + \fi} +>>> + +/:temp below is the parameter of the accent, and it can be empty +(e.g. \''\^{}'). If the parameter is empty, the accent is just a +character, given in the last parameter of \''\acpc:'. The recursive +macro \''\acpc:' eats two parameters at a time, and it terminates +when the first in the pair of parameters is empty. + +\<char/pic accent\><<< +\ifx \:temp\empty + \def\:tempa{#2}\ifx \:tempa\empty \AC:PC + \else |<accent for ?|>\fi +\else \AC:PC \fi +>>> + + +\<accent for ?\><<< +\csname \ifmmode m\else t\fi :\acn:no\endcsname{#2}% +>>> + + +\<accent for table entry\><<< +\csname C:\acn:no\endcsname{#2}% +>>> + + +The else \`'\csname \ifmmode m\else t\fi :\acn:no\endcsname{}' is for +the case that the parameter is empty, in which case the accent needs +to be converted into a stand alone character (e.g., \`'\={}'). + + +Default is needed for symbols not found in initiation tables. + + +\<default accent\><<< +{\let\AC:PC|=\ACP:C \let\ac:nt|=\Ac:nt \ac:pc}% +>>> + + + + + +The \`'\let\AC:PC=\ACP:C' above is for recursive cases like in +\`'$A\hat{B\hat{x}}$'. + + +\<config nonspecified accent\><<< + \def\:temp##1##2{#5#6}\ifx \:temp\:gobbleII \else +\expandafter\def\csname C:#3\endcsname##1{#5}% +\expandafter\def\csname MT:#3\endcsname##1##2{#6}% + \fi +>>> + + + + + + + + +\Section{End-of-Line Ch Characters} + +\<html utilities\><<< +\def\Hnewline{\:newlnch} +>>> + +Without the following, we get in toc things like \`'^^J' +that don't go together with catcode 13 for \`'^'. + +\<no Hnewline\><<< +\let\:newlnch|=\space +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Symbols} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Check that all the symbols belong to TeX and LaTeX + + +\<shared config\><<< +\def\HChar#1{{\leavevmode |%\ifmmode\else\expandafter\immediate\fi|% +\ht:special{t4ht@#1}\ifnum #1>-1 \a:HChar\fi}} +\NewConfigure{HChar}{1} +\Configure{HChar}{x} +>>> + + + +There is a boundary case of \''\HChar{0}' we didn't +handle above. Do we want to take care of it? + + +\`'\HChar{i}' inserts the character code i, with its font info, if +i is positive. If i is negative, the font info is not included. The +first case is obtained with a special that inserts its content +directly, and the second by a special sending its content as override +on top of the next character. + +The \''\Configure' tells from where the font info comes. With the +presence of regular and pictorial symbols, we should be careful +not to get here into a mess. + +Without checking for the math mode the immediate becomes problematic in math mode (why?). + +\Verbatim +\documentclass{article} +\begin{document} +$\_$ vs \_ +\end{document} +\EndVerbatim + + +Same problem for tables (why?) + +\Verbatim +\documentclass{article} +\begin{document} +\begin{tabular}{l} \_ \end{tabular} +\end{document} +\EndVerbatim + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Symbols} +%%%%%%%%%%%%%%%%%%%%%%%%%% + +% After |<dvi-based hooks|> + +% |<html math and non-math symbols|> |%after <math>|% + +% \<html math and non-math symbols\><<< +% \ifHtml +% \let\:copyright|=\copyright +% \def\::copyright{\gt:ch\:copyright{copy}} +% \def\copyright{\Protect\::copyright} +% \def\gt:ch#1#2{\ifx \EndPicture\:Undef \HCode{}\else #1\fi } +% \fi +% >>> +% + + +\<shared config\><<< +\NewConfigure{@Picture}[1]{\def\a:@Picture{#1}} +\let\a:@Picture|=\:gobble +>>> + + + + + +\Chapter{Dvi-Based Hooks} + +\<dvi-based hooks\><<< +|<tracing dvi|> +|<sent to dvi|> +>>> + + + +\Section{Tracing Dvi} + +\<tracing dvi\><<< +\def\HTrace#1{\csname #1:T\endcsname} +\def\EndHTrace#1{\csname #1:t\endcsname} +>>> + +\<tracing dvi\><<< +\def\RULE:T{\ht:special{t4ht@\%R}} \def\RULE:t{\ht:special{t4ht@\%r}} +>>> + +\<shared config\><<< +\NewConfigure{RULE}[5]{\ht:special{t4ht@\%\%R#1#2#1#3} + \ht:special{t4ht@\%\%r#1#4#1#5}} +>>> + +\<tracing dvi\><<< +\def\GROUP:T{\ht:special{t4ht@\%P}} \def\GROUP:t{\ht:special{t4ht@\%p}} +>>> + + +\<shared config\><<< +\NewConfigure{GROUP}[5]{\ht:special{t4ht@\%\%P#1#2#1#3} + \ht:special{t4ht@\%\%p#1#4#1#5}} +>>> + + +\<tracing dvi\><<< +\def\CHAR:T{\ht:special{t4ht@\%C}} \def\CHAR:t{\ht:special{t4ht@\%c}} +>>> + +\<shared config\><<< +\NewConfigure{CHAR}[5]{\ht:special{t4ht@\%\%C#1#2#1#3} + \ht:special{t4ht@\%\%c#1#4#1#5}} +>>> + +\<tracing dvi\><<< +\def\HSPACE:T{\ht:special{t4ht@\%H}} \def\HSPACE:t{\ht:special{t4ht@\%h}} +>>> + +\<shared config\><<< +\NewConfigure{HSPACE}[3]{\ht:special{t4ht@\%\%H#1#2#1#3}} +>>> + + +\<tracing dvi\><<< +\def\VSPACE:T{\ht:special{t4ht@\%V}} \def\VSPACE:t{\ht:special{t4ht@\%v}} +>>> + +\<shared config\><<< +\NewConfigure{VSPACE}[3]{\ht:special{t4ht@\%\%V#1#2#1#3}} +>>> + + + +tex4ht.c has implicit \`'\Configure{VSPACE}{.}{}{}', etc. for the +above. + + +Comamnd line `-p' requests tracings of specials. \`'\special{t4ht@/}' +for flip-floping requests of such tracings. + +The switch `-c' in the command line asks for context dump into the log +when dvi errors/ warning are provided. + +\Section{Sent to Dvi} + +All the control flow commads should be located within the +\`'\Send' environment. The \`'\send:special' takes care +of killing casses not obeying this requirement. + +\<sent to dvi\><<< +\def\Send#1{\Configure{Send:#1}} +\def\DviSend{\let\send:special|=\ht:special + \ht:special{t4ht\string~}\EndPauseBACK\ht:special{t4ht\string~}% + \ht:special{t4ht\string~}} +\def\EndDviSend{\send:special{t4ht\string~}% + \send:special{t4ht\string~}\PauseBACK\send:special{t4ht\string~}% + \let\send:special|=\:gobble} +\def\PauseBACK{\send:special{t4ht\string~<(}} +\def\EndPauseBACK{\send:special{t4ht\string~<)}} +\def\HideBACK{\send:special{t4ht\string~<[}} +\def\EndHideBACK{\send:special{t4ht\string~<]}} +\def\MiniBACK{\send:special{t4ht\string~<-}} +\def\EndMiniBACK{\send:special{t4ht\string~<+}} +>>> + +\<shared config\><<< +\let\send:special=\:gobble +\NewConfigure{Send:GROUP}[2]{\send:special{t4ht\string~<#1#2}} +\NewConfigure{Send:EndGROUP}[2]{\send:special{t4ht\string~>#1#2}} +\NewConfigure{Send:BACK}[1]{\send:special{t4ht\string~<*#1}} +>>> + + + +What \`'\MiniBACK...\EndMiniBACK' do here. + +\`'{\special{t4ht=}}' ----forcing a group +i.e. use \`'{\special{t4ht=}}^x' instead of \`'{}^x'. + + +\Section{Observations} + +\List{*} +\item \`'\HChar{...}' sends forward a character to the next printable +char (can be refined to specific characters). That is, it uses the +character of the command, with the decoration of the character that +follows. +\item \`'\special{t4ht@+...}' sends forward a string to the next printable +chr + + + +\item +\Verbatim + \special{t4ht@+. ...string...} configure insertions at eoln + \special{t4ht@+(} ignore spaces + \special{t4ht@+)} end ignore spaces + \special{t4ht@+[} ignore chs and spaces + \special{t4ht@+]} end ignore chs and spaces (but not the content of some + of the specials) + \special{t4ht@+!} get last ignored space (none, if from previous lines). +\EndVerbatim + + +\EndList + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Chapter{Loose Ends} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%% +\Section{Hyphenation} +%%%%%%%%%%%%%%%%%% + +\<core tex\><<< +\def\hyphenation#1{} +>>> + + + + + + + + +%%%%%%%%%%%%% +\Section{String Encode} +%%%%%%%%%%%%% + +\<html config util\><<< +\expandafter\def\csname c:string-encoder:\endcsname#1{% + \expandafter\def\csname c:#1:\endcsname{% + \csname #1:String\endcsname + \expandafter\let\csname #1:String\endcsname=\empty + \expandafter\let\expandafter\Char:dic + \csname #1Char:dic\endcsname + \cnf:transString} + \expandafter\def\csname #1\endcsname##1##2|<par del|>{% + \if !##1!\expandafter\gob:par + \else + \expandafter\ifx \csname \string##1:#1EnCoDe\endcsname\relax + \string ##1\else + \csname \string##1:#1EnCoDe\endcsname + \fi + \if !##2!\expandafter\expandafter\expandafter\gob:par + \else + \expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter + \csname #1\endcsname + \fi + \fi + ##2|<par del|>% + } + \expandafter\def\csname #1Char:dic\endcsname##1##2{% + \def\:temp{##1}\ifx \:temp\empty \egroup + \else \egroup + \expandafter\append:def\csname #1:String\endcsname + {\expandafter\let + \csname \string##1:#1EnCoDe\endcsname=\:UnDef}% + \expandafter\def\csname \string##1:#1EnCoDe\endcsname{##2}% + \expandafter \cnf:transString + \fi + } +} +\def\cnf:transString{\bgroup + \catcode`\%=12 + \catcode`\~=12 + \catcode`\$=12 + \catcode`\&=12 + \catcode`\#=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\?=12 \Char:dic } +\def\gob:par#1|<par del|>{} +>>> + + +Offers applications similar to the following one. + +\Verbatim +\Configure{string-encoder}{urlEncoder} + +\Configure{urlEncoder} + {!}{%21} + {"}{%22} + {#}{%23} + {$}{%24} + {%}{%25} + {&}{%26} + {'}{%27} + {(}{%28} + {)}{%29} + {+}{%2B} + {,}{%2C} + {<}{%3C} + {>}{%3E} + { }{+} + {}{} + + + + + \catcode`\%=11 + \catcode`\~=11 + \catcode`\$=11 + \catcode`\&=11 + \catcode`\#=11 + \catcode`\^=11 + \catcode`\_=11 + \catcode`\ =12 + + +\urlEncoder ! " # $ % & ' ( ) + , < > |<par del|> + +\Configure{urlEncoder}{}{} + +\urlEncoder ! " # $ % & ' ( ) + , < > |<par del|> +\EndVerbatim + + + +%%%%%%%%%%%%% +\Section{Moveright} +%%%%%%%%%%%%% + +\<shared config\><<< +\def\:temp{\a:moveright \o:moveright:} +\HLet\moveright|=\:temp +\NewConfigure{moveright}{1} +>>> + +The \''\leavevmode' is to force paragraph break, but we might end +here with extra one because of the internal content of the +parameter. An \''\IgnoreIndent' after \''\par' may solve the problem +of extra paragraph breaks, but it might also have adverse effect of +loosing paragraph breaks. + + +\Section{Debugging Mode} + + +\<debug\><<< +\:CheckOption{debug} +\if:Option |<html debug|> +\else |<no debug|> \fi +>>> + + + + + + + + + + + + + + + + +\Chapter{e tex/latex} + + +\Link[http://www.vms.rhbnc.ac.uk/e-TeX/v1/etex\string + _ref.html]{}{}e-TeX\EndLink + +\<e tex\><<< +\def\:temp{\o:beginL:\a:Lregion} +\HLet\beginL=\:temp +\def\:temp{\b:Lregion\o:endL:} +\HLet\endL=\:temp +\NewConfigure{Lregion}{2} +\def\:temp{\o:beginR:\a:Rregion} +\HLet\beginR=\:temp +\def\:temp{\b:Rregion\o:endR:} +\HLet\endR=\:temp +\NewConfigure{Rregion}{2} +>>> + + + + + + +\Chapter{Utilities} + + + +\Section{Vertical Break Points} + +La\TeX{} already has a \''\newpage'. Do we want the following to +be \''\clear:page'? + +\<general utilities\><<< +\ifx \newpage\:UnDef +\def\newpage{\vfil\penalty-10000 } +\fi +>>> + + + + + + + + + +\Section{Counters} + +With packages like pictex around, counters become scarce resources. +Hence, their use is minimized here in favor of macros. The tradeoff +in time is minor because counters are scarcely needed in TeX4ht. + + +NOTE: /g:advance in wripro...????????????????????? + + +\<general utilities\><<< +\ifx\tmp:toks\:UnDeF \csname newtoks\endcsname\tmp:toks\fi +\ifx\tmp:cnt\:UnDeF \csname newcount\endcsname\tmp:cnt\fi +\def\Advance:{\ip:op\advance\:Advance} +\def\Multiply:{\ip:op\multiply\:Advance} +\def\Divide:{\ip:op\divide\:Advance} +\def\gHAdvance{\ip:op\advance\g:Advance} +\def\gHMultiply{\ip:op\multiply\g:Advance} +\def\gHDivide{\ip:op\divide\g:Advance} +>>> + + +psfig already has /Multiply and /Divide + +When defined, \''\HAdvance' is the same as \''\Advance:'. + +\<general utilities\><<< +\def\DefOp#1#2{ + \ifx #1\:UnDef + \expandafter \ifx \csname #2:\endcsname\relax + \:warning{\string\DefOp...\string{#2\string}?}% + \else \expand:after{\let#1|=}\csname #2:\endcsname + \fi + \else \:warning{\string\DefOp\string#1\string{#2\string} + can't redefine \string#1}% + \fi +} +\DefOp\HAdvance{Advance} +\DefOp\HMultiply{Multiply} +\DefOp\HDivide{Divide} +>>> + + + +\<general utilities\><<< +\def\ip:op#1#2{\let\mth:op|=#1\let\adv:c|=#2\adv:} + +\def\adv:#1{\def\:var{#1}\futurelet\:temp\Advanc:} +\def\Advanc:{\ifx [\:temp \expandafter\Advanc:e + \else \expand:after{\expandafter\adv:c\:var}\fi} +\def\Advanc:e[#1]{\expandafter\adv:c\csname + \expandafter\string\:var[#1]\endcsname} + +\def\g:Advance#1{\bgroup \def\:temp{#1}% + \tmp:cnt|=#1\afterassignment\:gplus \mth:op\tmp:cnt} +\def\:gplus{\expandafter\xdef\:temp{\the\tmp:cnt}\egroup} +\def\:Advance#1{\bgroup \def\:temp{#1}% + \tmp:cnt|=#1\afterassignment\:aplus \mth:op\tmp:cnt} +\def\:aplus{\xdef\:temp{\def\expandafter\noexpand\:temp{\the\tmp:cnt}}% + \egroup \:temp} +>>> + +\<general utilities\><<< +\def\HAssign{\:ssg\edef} +\def\gHAssign{\:ssg\xdef} + +\def\:ssg#1#2{\let\d:fn|=#1\def\:var{#2}\futurelet\:temp\:Assgn} +\def\:Assgn{% + \ifx [\:temp + \expandafter\d:fn\:var[##1]{% + \noexpand\csname \expandafter + \string\:var[##1]\noexpand\endcsname}% + \expandafter\assg:m + \else \afterassignment\assg:v \expandafter \tmp:cnt \fi } + +\def\assg:v{\expandafter\d:fn\:var{\the\tmp:cnt}} +\def\assg:m[#1]{% + \def\:temp{\expandafter\d:fn + \csname \expandafter\string\:var[#1]\endcsname{\the\tmp:cnt}}% + \afterassignment\:temp \tmp:cnt} +>>> + + + +\Section{Pushdowns} + +\SubSection{Expanded Lists} + +\<utilities\><<< +\def\PushStack#1#2{% + \ifx #1\:UnDef \global\let#1|=\empty\fi + {\let\Picture|=\relax \xdef#1{{#2}{#1}}}} +\def\PopStack#1#2{% + \ifx #1\empty \:warning{empty \string\PopStack\string#1\string#2?}% + \global\let#2|=\empty + \else \def\:temp{\:recall#1#2}\expandafter\:temp#1\fi} +\def\:recall#1#2#3#4{\gdef#1{#4}\gdef#2{#3}} +>>> + +\SubSection{Control Sequences} + +\<utilities\><<< +\def\PushMacro#1{% + \expandafter\ifx \csname c:\string#1\endcsname\relax + \expandafter\gHAssign \csname c:\string#1\endcsname |= 0 + \fi + \HAssign\:temp |= \csname c:\string#1\endcsname + \let\:tempa|=#1% + \ifx \:tempa\:UnDef \let\:tempa|=\like:unDef\fi + \global\expandafter\let\csname \:temp\string#1\endcsname |= \:tempa + \expandafter\gHAdvance \csname c:\string#1\endcsname |by 1 } +>>> + +\<utilities\><<< +\def\PopMacro#1{% + \expandafter\gHAdvance \csname c:\string#1\endcsname |by -1 + \HAssign\:temp |= \csname c:\string#1\endcsname\relax + \ifnum \:temp < 0 + \expandafter\gHAssign \csname c:\string#1\endcsname |= 0 + \:warning{ignored \string\PopCs\string#1 on empty stack}% + \else + \expand:after{\let#1|=}\csname \:temp\string#1\endcsname + \ifx #1\like:unDef \let#1|=\:UnDef\fi + \fi + } +\def\like:unDef{\:UnDef\:CS} +>>> + + +\<utilities\><<< +\def\PushConfigure#1{\def\cf:name{#1}\expandafter + \expandafter\expandafter\Push:Configure\expandafter + \meaning\csname c:#1:\endcsname|<par del|>} +\def\PopConfigure#1{\def\cf:name{#1}\expandafter + \expandafter\expandafter\Pop:Configure\expandafter + \meaning\csname c:#1:\endcsname|<par del|>} +\def\do:undef#1->#2|<par del|>{% + \if :#2:\:warning{\string\PushConfigure{\cf:name}?}\fi +} +\catcode`\@=6 +\catcode`\#=12 +\def\Push:Configure@1|<par del|>{% + \do:undef@1->|<par del|>% + \do:para@1#1|<par del|>\push:config + \do:parb@1#2|<par del|>\push:config + \do:parc@1#3|<par del|>\push:config + \do:pard@1#4|<par del|>\push:config + \do:pare@1#5|<par del|>\push:config + \do:parf@1#6|<par del|>\push:config + \do:parg@1#7|<par del|>\push:config + \do:parh@1#8|<par del|>\push:config + \do:pari@1#9|<par del|>\push:config +} +\def\Pop:Configure@1|<par del|>{% + \do:pari@1#9|<par del|>\pop:config + \do:parh@1#8|<par del|>\pop:config + \do:parg@1#7|<par del|>\pop:config + \do:parf@1#6|<par del|>\pop:config + \do:pare@1#5|<par del|>\pop:config + \do:pard@1#4|<par del|>\pop:config + \do:parc@1#3|<par del|>\pop:config + \do:parb@1#2|<par del|>\pop:config + \do:para@1#1|<par del|>\pop:config +} +\def\do:para@1#1@2|<par del|>@3{@3{a}{@2}} +\def\do:parb@1#2@2|<par del|>@3{@3{b}{@2}} +\def\do:parc@1#3@2|<par del|>@3{@3{c}{@2}} +\def\do:pard@1#4@2|<par del|>@3{@3{d}{@2}} +\def\do:pare@1#5@2|<par del|>@3{@3{e}{@2}} +\def\do:parf@1#6@2|<par del|>@3{@3{f}{@2}} +\def\do:parg@1#7@2|<par del|>@3{@3{g}{@2}} +\def\do:parh@1#8@2|<par del|>@3{@3{h}{@2}} +\def\do:pari@1#9@2|<par del|>@3{@3{i}{@2}} +\catcode`\@=11 +\catcode`\#=6 +\def\push:config#1#2{% + \if :#2:\else + \expandafter\expandafter\expandafter\ifx \expandafter + \csname \csname#1New:Conf\endcsname\cf:name\endcsname\relax + \:warning{\string\PushConfigure{\cf:name} Failed}% + \else + \expandafter\expandafter\expandafter\PushMacro \expandafter + \csname \csname#1New:Conf\endcsname\cf:name\endcsname + \fi + \fi } +\def\pop:config#1#2{% + \if :#2:\else + \expandafter\expandafter\expandafter\ifx \expandafter + \csname \csname#1New:Conf\endcsname\cf:name\endcsname\relax \else + \expandafter\expandafter\expandafter\PopMacro \expandafter + \csname \csname#1New:Conf\endcsname\cf:name\endcsname + \fi + \fi } +>>> + + +\Section{Catergory Codes} + +We need category code 12, and not 11, because the latter +choise would cause control sequences of unbounded length within +the option \`'\Verbatim-'. + +\<general utilities\><<< +\def\no:catcodes#1#2#3{% + \tmp:cnt|=#1 + \def\no::catcodes{% + \catcode\tmp:cnt|=#3 + \ifnum\tmp:cnt<#2 + \advance\tmp:cnt |by 1 \expandafter\no::catcodes + \fi }% + \no::catcodes } +>>> + + +\Section{/pend:def and /append:def} + +The \''\long' below is to allow \''\par' in the second argument. + +\<early utilities\><<< +\long\def\append:def#1#2{% + \long\def\:temp{\long\def#1}% + \expandafter\expandafter\expandafter\:temp\expandafter{#1#2}} +\long\def\pend:def#1#2{% + \long\def\:temp{#2}% + \long\def\:tempa{\long\def#1}% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\:tempa + \expandafter\expandafter\expandafter{\expandafter\:temp #1}} +\long\def\pend:defI#1#2{% + \long\def\:tempa{\long\def#1####1}% + \ex:pend{#2}{\expandafter\:temp #1{##1}}} +\long\def\ex:pend#1{\long\def\:temp{#1}% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\:tempa + \expandafter\expandafter\expandafter} +>>> + +\<early utilities\><<< +\long\def\append:defI#1#2{% + \long\def\:temp{\long\def#1####1}% + \expandafter\expandafter\expandafter\:temp\expandafter{#1{##1}#2}} +\long\def\pend:defII#1#2{% + \long\def\:tempa{\long\def#1####1####2}% + \ex:pend{#2}{\expandafter\:temp #1{##1}{##2}}} +\long\def\append:defII#1#2{% + \long\def\:temp{\long\def#1####1####2}% + \expandafter\expandafter\expandafter\:temp\expandafter{#1{##1}{##2}#2}} +\long\def\pend:defIII#1#2{% + \long\def\:tempa{\long\def#1####1####2####3}% + \ex:pend{#2}{\expandafter\:temp #1{##1}{##2}{##3}}} +\long\def\append:defIII#1#2{% + \long\def\:temp{\long\def#1####1####2####3}% + \expandafter\expandafter\expandafter + \:temp\expandafter{#1{##1}{##2}{##3}#2}} +>>> + +\SubSection{/Odef} + +\<general utilities\><<< +\HAssign\def:cnt=0 +\def\Odef#1{\gHAdvance\def:cnt |by 1 + \edef#1{\noexpand\with:op + \expandafter\noexpand\csname \def:cnt \string#1\endcsname }% + \expandafter\gdef\csname\def:cnt\string#1\endcsname} +\def\with:op#1{\let\n:xt|=#1\futurelet\:temp\wth:opt} +\def\wth:opt{\ifx [\:temp + \expandafter\n:xt\else \expand:after{\n:xt[]}\fi} +>>> + +The +\`' \expandafter\gdef\csname\def:cnt\string#1\endcsname}' +allo \`'\global\let#1=#1'. + + + + + +\Section{/Needs} + +\<general utilities\><<< +\def\Log:Needs#1{{\escapechar=`\\\immediate\write-1{\:Neds{#1}}}} +>>> + +\<html config util\><<< +\def\c:Needs:{\def\:Needs##1} +\expandafter\def\csname c:Needs-:\endcsname{\def\:Neds##1} +>>> + + + + + +Put the following in a group so that the temporary variables +will not interfere with other usages. + +\<html utilities\><<< +\def\Needs{\bgroup\catcode`\"=12 \cat:Needs} +\def\cat:Needs#1{\def\:temp{-}\def\:tempa{#1}\ifx \:temp\:tempa + \aftergroup\Log:Needs \else \ht:special{t4ht+@\:Needs{#1}}\fi + \egroup} +>>> + + + + + +\Section{/HCommand and /LinkCommand} + + + + + + +The following is introduced at the end of the style file, to +allow for \''\Contribute{name}{...}' commands that check +for the legality of \`'name'. Otherwise, it +is identical to the above. + + + + +\`'\LinkCommand\Frame{FRAME,SRC,ID} +\Frame{a}{A}...\EndFrame +\LinkCommand\FRAME{FRAME,SRC,ID,attr} +\LinkCommand\FRAME{FRAME,SRC,ID,attr,/,sharp} +\FRAME{a}{A} +\FRAME[b 1]{c}{d}' + + + + +\<html utilities\><<< +\def\LinkCommand#1#2{\L:Com#1#2,,,,,,|<par del|>{#1}} +\let\:Link|=\Link +\def\L:Com#1#2,#3,#4,#5,#6,#7,#8|<par del|>#9{\def\:tempe{#7}% + \def\:tempa{#2}\def\:tempb{#3}\def\:tempc{#4}\def\:tempd{#6}% + \expandafter\edef\csname + End\expandafter\:gobble\string #9\endcsname{% + \ifx\:tempd\empty \noexpand\HCode + {\Hbrakets</\ifx\:tempa\empty \tag:A\else#2\fi>}\fi }% + \edef\:temp{% + \noexpand\Odef\noexpand#1[####1]####2####3{{% + \def\noexpand\tag:A{\ifx\:tempa\empty\tag:A\else#2\fi}% + \def\noexpand\HREF:{ \ifx\:tempb\empty\HREF:\else#3=\fi}% + \def\noexpand\NAME:{ \ifx\:tempc\empty\NAME:\else#4=\fi}% + \def\noexpand\empty:lnk{\ifx\:tempd\empty\else#6\fi}% + \def\noexpand\:sharp{\ifx\:tempe\empty\:sharp\else#7\fi}% + \noexpand\M:link[####1 #5]{####2}{####3}}}}\:temp + |<add - opt to command|>% + } +>>> + + +\<add - opt to command\><<< +\expandafter\let\csname \string#1 :\endcsname|=#1 +\def#1{\bgroup\LD:Link{#1}\futurelet#1\M:link} +>>> + +\<html utilities\><<< +\def\LD:Link#1{% + \def\M:link{\ifx -#1\egroup \def\M:link{\:Link-}\expandafter\gob:lnk + \else \egroup \let\M:link|=\:Link \fi + \csname \string#1 :\endcsname }} +\def\gob:lnk#1-{#1} +>>> + +\<html Configure's\><<< +\NewConfigure{Link}[4]{% + \def\empty:lnk{#4}\ifx\empty:lnk\empty\else \def\:sharp{#4}\fi + \let\empty:lnk|=\empty \def\tag:A{#1}% + \def\HREF:{#2}\def\NAME:{#3}} +\Configure{Link}{}{}{}{} +\let\NOHREF:|=\:gobble +>>> + + + +The \`'\let\:Link|=\Link' is to allow for the redefinition of +\`'\Link' and hadling -. An \`'\if !#4!\else' will not work +for the case that \''\empty' is given to \''#4'. + + +% \`+\Attribute\onSelect{onSelect="loc='#1'"} +% \HCommand\Option{OPTION,\onSelect}+ +% +% \<html utilities\><<< +% \def\Attribute#1{% +% \def#1{\expandafter\noexpand\csname\string#1\endcsname}% +% \expandafter\def\csname\string#1\endcsname="##1"} +% >>> + + + + +\Section{Loose Ends} + + + +\<general utilities\><<< +\def\g:delete#1{% + \expandafter\expandafter\expandafter\global + \expandafter\let\csname #1\endcsname|=\:UnDef +} +\def\xdef:cs#1{\expandafter\xdef \csname #1\endcsname}% +\def\:csname{\expandafter\noexpand\csname} +>>> + + +\<general utilities\><<< +\long\def\:gobble#1{} +\long\def\:gobbleII#1#2{} +\long\def\:gobbleIII#1#2#3{} +\long\def\:gobbleIV#1#2#3#4{} +\long\def\:gobbleV#1#2#3#4#5{} +\long\def\:gobbleVI#1#2#3#4#5#6{} +\long\def\:gobbleVIII#1#2#3#4#5#6#7#8{} +>>> + + + + + + + + + + + +\ifHtml[\HPage{more}\Verbatim +change CutAt{a,b} to CutAt{a,/b} and add exercises here. +\EndVerbatim\EndHPage{}]\fi + + +\ifHtml[\HPage{more}\Verbatim + +In TeX4ht, \''\begin{...}' and \''\end{...}' are redefined +to \''\SaveEverypar\begin{...}' and \''\end{...}\RecallEverypar' +so it is pointless to directly deal with paragraph breaks +and saving. Since the saving and recalling are global +operations (in a pushdown fashion), the following +redefine the saved environment to eliminate +paragraph breaks after the environment. + + +WE HAVE here a problem if someone goes directly, e.g., for +\''\quotation...\endquotation' instead of +\''\begin{quotation}...\end{quotation}'. On the other hand, +LaTeX doesn't mention the first case as an option. +\EndVerbatim\EndHPage{}]\fi + + + +\<html utilities\><<< +\ifx\tmp:dim\:UnDeF \csname newdimen\endcsname\tmp:dim\fi +>>> + + + + +\SubSection{Protection} + +Fonts in sectioning titles can be a problem, when delivered to tocs. Hence, +we need to protect them from early expansions. + +Without the space, we can have in toc file expanded control +sequences (e.g., \`'\protect\tt x' becomming \''\ttx'). + +The following is for preveting expansions in edef environments while +preserving the meaning within standard environments. We need it, in +particular, for writing into toc and for (i.e., HPage?) CutAt when +titles of sections are referenced. + +\<html utilities\><<< +\def\pr:tc{\relax} +\let\prOteCt|=\relax +\def\Protect{% + \let\prOteCt|=\pr:tc + \ifx \prOteCt\pr:tc \let\prOteCt|=\relax + \else \noexpand\Protect\expandafter\noexpand\fi +} +>>> + +LaTeX has \`'\def\@unexpandable@protect{\noexpand\protect\noexpand}' to be included in immediate defines. + + +\Section{Tags} + +\SubSection{Html} + + +The following create \`'<A HREF="aav.\:html#Q1-5-1" +NAME="Q2-5-1">.........</A>' in the table of contents and +\`'<A HREF="a.\:html#Q2-5-1" NAME="Q1-5-1">..........</A>' in the +title. The address \`'Qi-j-m' tells that we deal with tag of type +\`'Qi', in file \`'j', for title \`'m' in the file. + + + +\<toc tag\><<< +Q>>> + + +The prefix \`'\<toc tag\>' is required for distinguishing the tocs tags +from other tags to allow for selective loading of cross references +when communicating toc info. + + + + + +\<csname: file name -> file id\><<< + FN >>> + + + + +\SubSection{Standard} + + +\FreeCode\<tag of Tag\> % to avoid duplication + +\<tag of Tag\><<< + cw:>>> + + + + + + + + + +\<File tag\><<< +(L >>> + + + + +\<next HPage tag\><<< +|<auto tag|>N >>> + + + +\<bib tag\><<< +|<auto tag|>B >>> + + + +\SubSection{Internal} + +\<tag MarkCurFile\><<< +cf: >>> + + + + + + +\Chapter{wripro.tex: HTML Stuff Shared by TeX4ht and AlProTex} + + + +TeX4ht writes its tags into \`+.ref+ files until ProTex takes over +and gets the tags into \`+.xref+ files. + + + + +\<check that TeX4ht is not loaded after protex\><<< +\def\:warning#1{\writesixteen{l.\the\inputlineno\space + --- TeX4ht warning --- #1 ---}} +\ifx \:ShowCode\:UnDeF \else + \:warning{|<TeX4ht name|>.sty loaded after ProTeX?} +\fi +>>> + + + +\`'\NewHaddr' provides an address that encodes a location +together with its file name. + +Is the followint true? We can have for hadresses +\`'\Link{Haddr}{} \Link{}{Haddr}' without worrying about +extracting the file names as long as we use HAddress we get from +\`'\NewHaddr'!!! That is, in \`'\Link'the [] option is needed +just for external files compiled separately. WELL, it seems to be true +for any tags because they are resolved indirectly through thr REF +file!!!! Great , how could I have forgotten about this pearl? + + +AlProTex used something like the following. +Create saving at direct programming of HREF and HTAG in \`'<A>' coomands, because we don't need now Ref/Tag intermediates. + +\<html utilities\><<< +\def\NewHaddr#1{\html:addr \let#1|=\last:haddr} +\def\GetHref#1{\expandafter\get:href#1-} +\def\GetHname#1{\expandafter\get:htag#1-} +\ifx \make:addr\:UnDeF + \def\make:addr#1{|<tail for file name|>#1} \fi +>>> + +\`'make:addr' may already be defined from AlProTex. It had\''\space' after \`'#1' that has been removed (see AlProTex). + + +\<html utilities\><<< +\def\FileNumber{\file:id} +\def\c:XrefFile:#1{\def\aXrefFile{#1}} +>>> + + +\openin15= wripro.tex +\ifeof15 \closein15 + \writesixteen{*********************************} + \writesixteen{* - error - missing wripro.tex *} + \writesixteen{*********************************} +\else \closein15 \input wripro.tex \fi + +\<warnings for missing /Link\><<< +\ifx \:::HRefTag\:UnDef\else + \pend:defII\:::HRefTag{% + \if \relax##1\relax\else + \expandafter\ifx\csname cw:)Q\aXrefFile ##1\endcsname\relax + \:warning{\string\Link{##1}?}\csname a:?Link\endcsname + \fi\fi } +\fi +>>> + +\<cross references\><<< +\NewConfigure{?Link}{1} +>>> + + +\Chapter{Background Material} +\Link[http://www.diku.dk/students/turtle/trick.html]{}{}Tricks for TeX +and LaTeX\EndLink{} (Collected by Peter M\o{}ller Neergaard) + + + +%------------------------------------------------------ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<TeX4ht name\><<< +tex4ht>>> + + + + +%------------------------------------------------------- +\openin15= wripro.tex +\ifeof15 \closein15 + \writesixteen{***********************************} + \writesixteen{* -- error -- missing wripro.tex -*} + \writesixteen{* Making a broken tex4ht.sty file.*} + \writesixteen{* Don't use this tex4ht.sty file! *} + \writesixteen{***********************************} +\else \closein15 \fi +%------------------------------------------------------- + +\OutputCode\<tex4ht\> + + +\bye diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-svg.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-svg.tex new file mode 100644 index 00000000000..685ad4c4b7e --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-svg.tex @@ -0,0 +1,309 @@ +% $Id: tex4ht-svg.tex 472 2018-12-30 17:39:42Z karl $ +% compile 3 times: latex tex4ht-svg +% or xhlatex tex4ht-svg "html,3,sections+" +% +% Copyright 2009-2018 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{svg-option,html4-svg} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common.tex} +\input{tex4ht-cpright.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<svg-option\><<< +% svg-option.4ht (|version), generated from |jobname.tex +% Copyright 2009-2018 TeX Users Group +% Copyright |CopyYear.2001. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +% 2017-05-05 Michal +% Change DTD and other stuff only for svg-inline +% this is legacy option which will hold the original `svg` option behaviour +\<configure svg-option tex4ht\><<< +\:CheckOption{svg-inline}\if:Option +\Configure{VERSION} + {\IgnorePar\HCode{<?xml version="1.0" |<xml encoding|> ?> \Hnewline}} +\Configure{DOCTYPE}{\HCode + {<!DOCTYPE html PUBLIC + "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//|<dtd lang|>"\Hnewline + "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">\Hnewline + <!--http://www.w3.org/TR/XHTMLplusMathMLplusSVG/-->\Hnewline +}} +>>> + +\<xml encoding\><<< + encoding="\expandafter\ifx \csname a:charset\endcsname\relax + \expandafter\:encoding\A:charset + \else \expandafter\:encoding\a:charset\fi" +>>> + +\<configure svg-option tex4ht\><<< +\Configure{@DOCTYPE} + {<!ENTITY \% svg.dtd PUBLIC "-//W3C//DTD SVG 20010719//|<dtd lang|>"\Hnewline + "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">\Hnewline + \%svg.dtd; \Hnewline} +>>> + + +\<configure html4-svg tex4ht\><<< +% hmtl-svg.4ht (|version), generated from |jobname.tex +% Copyright 2009-2018 TeX Users Group +% Copyright |CopyYear.2001. Eitan M. Gurari +|<TeX4ht copywrite|> +\Configure{@DOCTYPE} + {<!ENTITY \% misc "ins || del || script || noscript || svg">\Hnewline} +>>> + + +\<dtd lang\><<< +\expandafter +\ifx \csname a:dtd-lang\endcsname\relax EN\else + \csname a:dtd-lang\endcsname +\fi +>>> + +\<configure svg-option tex4ht\><<< +\Configure{@HTML} + {\Hnewline xmlns:svg="http://www.w3.org/2000/svg"\Hnewline } +\fi +>>> + + + +%%%%%%%%%%%%%%%%%% +\chapter{Code} +%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%% +\section{DVI Images} +%%%%%%%%%%%%%%%%%% + + + + + +\<configure svg-option tex4ht\><<< +\Configure{Picture}{.svg} +\:CheckOption{svg-obj} \if:Option + |<object svg-obj|> +\else \:CheckOption{svg-} \if:Option + |<object svg|> +\else + \Log:Note{for external SVG files + try the command line options `svg-obj' and 'svg-'} +\:CheckOption{svg-inline}\if:Option + |<internal svg|> +\fi +\fi\fi +>>> + + + +\<object svg-obj\><<< +\Configure{IMG} + {\special{t4ht=<object type="image/svg+xml" data="}} + {\special{t4ht=" name="}} + {" } + {\special{t4ht=" }} + {\special{t4ht=></object>}} +>>> + + + + + +\<object svg\><<< +\Configure{IMG} + {\special{t4ht=<object type="image/svg+xml"><img src="}} + {\special{t4ht=" alt="}} + {" } + {\special{t4ht=" }} + {\special{t4ht=/></object>}} +>>> + + +\<internal svg\><<< +\Configure{IMG} + {\special{t4ht=<!-- src="}} + {\special{t4ht=" alt="}} + {" } + {\special{t4ht=" }} + {\special{t4ht=-->}% + \openin15=\PictureFile \relax + \ifeof15 \:warning{\PictureFile\space is not available}% + \else \closein15 \special{t4ht*<\PictureFile}\fi + } +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Include graphics} +%%%%%%%%%%%%%%%%%% + +\<configure svg-option graphics\><<< +\Configure{graphics*} + {svg} + {{\Configure{Needs}{File: \csname Gin@base\endcsname.svg}\Needs{}}% + \special{t4ht=<object type="image/svg+xml" + data="\Gin@base.svg" + name="picture \Gin@base" + class="graphics"></object><!--tex4ht:graphics |<graphics dim|>-->}} +>>> + +\<graphics dim\><<< +\csname a:Gin-dim\endcsname +>>> + +%%%%%%%%%%%%%%%%%% +\section{Support for th4:draw} +%%%%%%%%%%%%%%%%%% + + + + +\<configure svg-option th4\><<< +\:CheckOption{draw} \if:Option \:CheckOption{th4} \if:Option + \Configure{Fig} + {\Svg} + {\EndSvg} + \:CheckOption{svg-} \if:Option + |<embed svg draw|> + \else + |<internal svg draw|> + \fi +\fi \fi +>>> + + + +\<external svg draw\><<< +\HAssign\:svgN = 0 +\def\Svg{% + \gHAdvance\:svgN by 1 + \HCode{<embed src="\jobname\:svgN.svg"\Hnewline + name="svg\:svgN" type="image/svg+xml" +% height="600" width="600" + \Hnewline pluginspage="http://www.adobe.com/svg/viewer/install/">}% + |<open embeded file|>% + |<open embeded svg|>% + \bgroup\Canvas \x:SUBOff \x:SUPOff + \let\Picture=\empty \everymath{}\everydisplay{}% +} +\def\EndSvg{\EndCanvas\egroup + |<close embeded svg|>% + |<close embeded file|>} +>>> + + + + + +\<internal svg draw\><<< +\def\Svg{\HCode{<svg:svg>\Hnewline + <svg:g style="stroke:black; stroke-width:1; + stroke-opacity:1;">\Hnewline}% + \bgroup\Canvas \x:SUBOff \x:SUPOff + \let\Picture=\empty \everymath{}\everydisplay{}% +} +\def\EndSvg{\EndCanvas\egroup + \HCode{</svg:g></svg:svg>}} +>>> + + + + +\<embed svg draw\><<< +\let\:svg=\empty +\NewConfigure{Canvas}[4]{\ht:special{t4ht"% + *% + *d\Hnewline<!--width="\%.1f#4" % + *D height="\%.1f#4" % + *y above-baseline="\%.1f#4" -->% + **\Hnewline<\:svg text x="\%.1f" y="\%.1f" >% + *</\:svg text>% + *\Hnewline<\:svg rect x="\%.1f#4" y="\%.1f#4" + width="\%.1f#4" height="\%.1f#4" />% + *#1*#2*#1*#2*#3}} +\Configure{Canvas}{0.0000152587890625}{0.0}{0.5}{} +>>> + + +65536 scaled units = 1 pt. 1 / 65536 = 0.0000152587890625. + +\<\><<< +\NewConfigure{Canvas}[4]{\ht:special{t4ht"% + *% + *d\Hnewline<!--width="\%.0f#4;" % + *D height="\%.0f#4;" -->\Hnewline % +% **<svg:text x="\%.0f" y="\%.0f" >% +% *</svg:text>\Hnewline % + **<svg:foreignObject x="\%.0f" y="\%.0f" >% + *</svg:foreignObject>\Hnewline % +% *\Hnewline<svg:rect x="\%.0f#4" y="\%.0f#4" +% width="\%.0f#4" height="\%.0f#4" +% fill="black" stroke-width="0" />% + *\Hnewline<svg:polyline points="\%.0f#4 \%.0f#4 \%.0f#4 \%.0f#4" + style="stroke-width:\%.0f#4" />% + *#1*#2*#1*#2*#3*2}} +>>> + + + + + +\<open embeded file\><<< +\ht:special{t4ht>\jobname\:svgN.svg}% +\HCode{<?xml version="1.0" encoding="iso-8859-1"?>\Hnewline +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//|<dtd lang|>"\Hnewline + "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +\Hnewline} +>>> + +\<close embeded file\><<< +\ht:special{t4ht<\jobname\:svgN.svg}% +>>> + +\<open embeded svg\><<< +\HCode{<\:svg svg>\Hnewline + <\:svg g style="stroke-width:0; fill:black;">\Hnewline}% +>>> + +\<close embeded svg\><<< +\HCode{</\:svg g></\:svg svg>}% +>>> + + + + + + +%%%%%%%%%%%%%%%%%% +\chapter{Notes} +%%%%%%%%%%%%%%%%%% + + +Requires two compilations (e.g., with \verb!mzlatex try "html,svg"!) +for importing the SVG code. + + + + +\endinput + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-t4ht.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-t4ht.tex new file mode 100644 index 00000000000..9b534c9490b --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-t4ht.tex @@ -0,0 +1,4521 @@ +% $Id: tex4ht-t4ht.tex 418 2018-07-03 17:37:07Z karl $ +% tex tex4ht-t4ht or ht tex tex4ht-t4ht +% +% Copyright 2009-2018 TeX Users Group +% Copyright 1998-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +% bcc32 -DBCC32 t4ht.c +% gcc -O2 -DKPATHSEA -I/usr/local/teTeX/include -L/usr/local/teTeX/lib -o t4ht t4ht.c -DHAVE_DIRENT_H -lkpathsea + +\input common.tex +\input tex4ht.sty + +\Preamble{xhtml,th4,sections+,xhtml}\EndPreamble + + \input ProTex.sty + \AlProTex{c,<<<>>>,`,title,list,_^,CodeLineNo} + +%\input tex4ht-cpright.tex + +\Comment{ +}{} +\def\CodeId#1#2{} + + +\def\UnderLine#1{\ifHtml + \HCode{<strong>}#1\HCode{</strong>}\else\underbar{#1}\fi} +\let\CModifyShowCode=\ModifyShowCode +\let\CModifyOutputCode=\ModifyOutputCode +\def\ModifyShowCode{\def\[##1({##1\UnderLine{(}}\def + \;{\UnderLine{;}}\CModifyShowCode} + \catcode`\^=7 \catcode`\@=6 \catcode`\#=12 \catcode`\^^M=13\relax% +\def\ModifyOutputCode{% +\def\;{ SEP }% +\def\[@@1(@@2)@@3;{@@1 +#ifdef ANSI +#define SEP , +(@@3) +#undef SEP +#else +#define SEP ; +(@@2)@@3; +#undef SEP +#endif +}% +\CModifyOutputCode}% + \catcode`\^^M=5 \catcode`\@=12 \catcode`\#=6 \catcode`\^=13 + + + + +\let\'=\Verb +\def\`{\expandafter\expandafter\expandafter\qts\Verb} +\def\qts#1{`#1\aftergroup'} + +\def\FTP{http://www.cis.ohio-state.edu/\string~gurari/tpf/} + +\TocAt{Section,SubSection} +\CutAt{Section} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\LikeChapter{t4ht: postprocessor for tex4ht} + +The compilation of this file requires the packages +\Link[\FTP ProTex.sty]{}{}Pro\TeX\EndLink{} +and \Link[\FTP AlProTex.sty]{}{}AlPro\TeX\EndLink. + +\TableOfContents[Section,SubSection] + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Outline} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{The Cases} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +The post-processor \`'tex4ht.c' prepares a \`'.lg' file in which it +lists the pictures that need to be generated, and the entries +encountered in \''\Needs{...}'. The \`'.log' file contains the entries +encountered in the \''\Needs-{...}'. The t4ht program (used to be a +Perl script?) treats as commands the entries that are enclosed between +double-quote (\''"') characters, and the other entries as comments. It +first works on the \`'.lg' file and then on the \`'.log' file. +The main output is a new \`'.css'. + + +\<main's body\><<< +`<load env file`> +lg_file = open_file(lg_name,LG_EXT); +if( lg_file ) { + `<mark start lg file`> + `<rewind lg file`> `<stop, if tex4ht.c err`> + `<rewind lg file`> `<CopyTo files`> + `<rewind lg file`> `<htfcss from lg`> + `<rewind lg file`> `<font=(...) from lg`> + `<rewind lg file`> `<identify the empty pictures`> + `<rewind lg file`> `<process gif's`> + `<rewind lg file`> `<process css`> + `<rewind lg file`> `<post-process ext files`> + `<rewind lg file`> `<post-process files`> + `<rewind lg file`> `<mv lg/File to dir and chmod`> + `<rewind lg file`> `<process user commands`> + (IGNORED) fclose(lg_file); +} +>>> + +\<mv lg/File to dir and chmod\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_str("File: ", TRUE, lg_file); + status = scan_until_end_str("", 1, status, lg_file); + status = status && !eq_str(match[1],tmp_name); + if( status ){ + FILE* file; + file = fopen(match[1], READ_TEXT_FLAGS); + if( file ){ + (IGNORED) fclose(file); + } else { status = FALSE; } + } + if( status ){ + if( dir ){ + (void) execute_script(copy_script, match[1], + dir? dir :"",".",""); + } + if( ch_mod ){ + (void) execute_script(chmod_script, ch_mod, + dir? dir:"",match[1], ""); + } +} } +>>> + +% Need to input tex4ht-cpright.tex at this point, +% if not, it causes an error while expanding the +% macros like `jobname.tex, `version, ... +% Still greek to me. :( CVR/2010/02/11 +% +\input tex4ht-cpright.tex + + +\<t4ht.c\><<< +/* t4ht.c (`version), generated from `jobname.tex + Copyright (C) 2009-2018 TeX Users Group + Copyright (C) `CopyYear.1998. Eitan M. Gurari +`<TeX4ht copyright`> +*/ +`<t4ht.h`> +`<defines`> +`<vars`> +`<header functions`> +`<functions`> +`[ +int `<CDECL`> main(argc, argv) + int argc`; + Q_CHAR **argv +;{ `<main's vars`> + `<resplit argv for windows`> + `<set signals`> + `<program signature`> + `<main's init`> + + `<scan job args`> + `<main's body`> + return 0; +} +>>> + + +\<program signature\><<< +(IGNORED) printf("----------------------------\n"); +#ifndef KPATHSEA +#ifdef PLATFORM + (IGNORED) printf("t4ht.c (`version %s)\n",PLATFORM); +#else + (IGNORED) printf("t4ht.c (`version)\n"); +#endif +#else +#ifdef PLATFORM + (IGNORED) printf("t4ht.c (`version %s kpathsea)\n",PLATFORM); +#else + (IGNORED) printf("t4ht.c (`version kpathsea)\n"); +#endif +#endif + +`<handle quoted arguments`> +{ int i; + for(i=0; i<argc; i++){ + (IGNORED) printf("%s%s ", (i>1)?"\n " : "", argv[i]); } + (IGNORED) printf("\n"); +} +>>> + + + +\SubSection{char, signed char, unsigned char (gcc man)}: + + + Each kind of machine has a default for what char should + be. It is either like unsigned char by default or like + signed char by default. + + Ideally, a portable program should always use signed + char or unsigned char when it depends on the signedness + of an object. But many programs have been written to + use plain char and expect it to be signed, or expect it + to be unsigned, depending on the machines they were + written for. This option, and its inverse, let you + make such a program work with the opposite default. + + The type char is always a distinct type from each of + signed char and unsigned char, even though its behavior + is always just like one of those two. + + + + +\<definesNO\><<< +#define Q_CHAR signed char +#define U_CHAR unsigned char +#define C_CHAR char +#define Q_NULL (Q_CHAR *) 0 +#define U_NULL (U_CHAR *) 0 +#define C_NULL (C_CHAR *) 0 +>>> + +Pointers to strings must use \`'C_CHAR', since we don't +know how string constants are treated there. + + +\<defines\><<< +#define Q_CHAR char +#define U_CHAR char +#define C_CHAR char +#define Q_NULL (Q_CHAR *) 0 +#define U_NULL (U_CHAR *) 0 +#define C_NULL (C_CHAR *) 0 +>>> + +\SubSection{EOF Character} + + +\<vars\><<< +static int eoln_ch; +>>> + +\Verbatim +OBTW: when compiling t4ht.c, I get messages about the uselessness of comparing +chars (which are unsigned, at least on a IRIX 6.5) to EOF which is defined as +-1 in stdio.h).... and indeed it program loops endlessly. +Adding the lines + #undef EOF + #define EOF 255 +after the last #include gets the effect that you probably want (or perhaps +better would be to define a constant EOFCHAR or something.) +\EndVerbatim + +The getc returns the next character as an unsigned char converted to int. +This is so to allow all characters to be return as well as end-of-file +indicators (-1 in stdio) and error indicator. + + + + +%%%%%%%%%%%%% +\Section{Stop on tex4ht.c Err} +%%%%%%%%%%%%% + + + +\<stop, if tex4ht.c err\><<< +if( check_tex4ht_c_err ){ + eoln_ch = (int) 'x'; + while( eoln_ch != EOF ) { + status = scan_str("tex4ht.c error: ", TRUE, lg_file); + if( status ){ + (IGNORED) fprintf(stderr, + "--- Error --- tex4ht.c ran into problems\n" + ); + exit(EXIT_FAILURE); + } + status = scan_until_end_str("", 1, status, lg_file); +} } +>>> + + + + +\<vars\><<< +static BOOL check_tex4ht_c_err = FALSE; +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Platform-dependent Code} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + + + + + + + + + + + + + + + + + +\SubSection{PreProcessor Directives} + + +Symantec C++ for wid95: +\''sc t4ht.c -mn -o+time -WA -3 -a8 -c -D_CONSOLE=1 -ot4ht.obj' + + +\<defines\><<< +#define IGNORED void +>>> + + + +\<t4ht.h\><<< +/* ********************************************** + Compiler options * + (uncommented | command line) * +------------------------------------------------* + Classic C (CC) default +#define ANSI ansi-c, c++ +#define DOS_C +#define HAVE_STRING_H <string.h> +#define HAVE_DIRENT_H <dirent.h> +#define HAVE_SYS_NDIR_H <sys/ndir.h> +#define HAVE_SYS_DIR_H <sys/dir.h> +#define HAVE_NDIR_H <ndir.h> +#define HAVE_IO_H <io.h> +#define HAVE_UNISTD_H <unistd.h> +#define WIN32 +#define KPATHSEA +#define SYSTEM_FUNCTION_OK +#define CDECL .......... +#define BCC32 bordland c++ + +************************************************* + Tex4ht variables * + (uncommented | command line) * +----------------------------------------------- */ +`<h-defines`> +/* ******************************************** */ +`<define MSVC-1-52`> +`<bordland: bcc32 -DBCC32 t4ht`> +`<bordland: bcc -DBCC tex4ht`> +`<DJGPP`> +#ifdef DOS_C +#define DOS +#endif +#ifdef DOS +#define DOS_WIN32 +#ifndef HAVE_STRING_H +#define HAVE_STRING_H +#endif +#endif +#ifdef WIN32 +#define DOS_WIN32 +#endif +`<h-defines DOS-WIN32`> +`<h-defines KWIN32`> +`<h-include`> +`<h-defines 2`> +>>> + + +\<bordland: bcc32 -DBCC32 t4ht\><<< +#ifdef BCC32 +#define WIN32 +#define ANSI +#define HAVE_IO_H +#define HAVE_STRING_H +#define PLATFORM "ms-win32" +#endif +>>> + +% + +\<bordland: bcc -DBCC tex4ht\><<< +#ifdef BCC +#define DOS_C +#define ANSI +#define HAVE_IO_H +#define PLATFORM "ms-dos" +#endif +>>> + + +\<h-include\><<< +#ifdef KPATHSEA +#include <kpathsea/config.h> +#endif +#include <stdio.h> `% EOF, FILE `% +#include <stdlib.h> `% EXIT_FAILURE `% +>>> + + + + Under ANSI C, all malloc stuff is declared in \`'<stdlib.h>' (which you +also include), hence this non-standard header is redundant. + + + +\<defines\><<< +#ifndef EXIT_FAILURE +#define EXIT_FAILURE 1 +#endif +>>> + +\<h-include\><<< +#ifdef HAVE_STRING_H +#include <string.h> +#endif +>>> + + + + +\<h-defines DOS-WIN32\><<< +#ifdef DOS_WIN32 +#define STRUCT_DIRENT +#endif +>>> + + +\<h-include\><<< +#ifdef HAVE_DIRENT_H +`<needs dirent.h`> +#else +#ifndef STRUCT_DIRENT +#define STRUCT_DIRECT +#endif +`<needs simulated dirent.h`> +#endif +>>> + + + +\<needs dirent.h\><<< +#include <dirent.h> +>>> + + +\<needs simulated dirent.h\><<< +#ifdef HAVE_SYS_NDIR_H +#include <sys/ndir.h> +#endif +#ifdef HAVE_SYS_DIR_H +#include <sys/dir.h> +#endif +#ifdef HAVE_NDIR_H +#include <ndir.h> +#endif +>>> + + +REPLACE EXIT with somthing that DOS also accept. + + + + +\<t4ht.h\><<< +#ifdef DOS +#define PROTOTYP +#endif +#ifdef ANSI +#define PROTOTYP +#endif +#ifdef KWIN32 +#define PROTOTYP +#endif +>>> + +\<defines\><<< +#ifdef PROTOTYP +#define MYVOID void +#define ARG_I(x) x +#define ARG_II(x,y) x,y +#define ARG_III(x,y,z) x,y,z +#define ARG_IV(x,y,z,w) x,y,z,w +#define ARG_V(x,y,z,w,u) x,y,z,w,u +#else +#define MYVOID +#define ARG_I(x) +#define ARG_II(x,y) +#define ARG_III(x,y,z) +#define ARG_IV(x,y,z,w) +#define ARG_V(x,y,z,w,u) +#endif +>>> + + + + + +\SubSection{KPATHSEA} + +\<h-defines 2NO\><<< +`<h-include before KPATHSEA`> +#ifdef KPATHSEA +#ifndef HAVE_STRCHR +#define strchr index +#endif +#ifndef HAVE_STRRCHR +#define strrchr rindex +#endif +#include <kpathsea/c-errno.h> +#include <kpathsea/c-ctype.h> +#include <kpathsea/c-fopen.h> +#include <kpathsea/c-pathmx.h> +#include <kpathsea/proginit.h> +#include <kpathsea/tex-file.h> +#include <kpathsea/tex-make.h> +#include <kpathsea/variable.h> +#include <signal.h> +#if !defined(_AMIGA) && !defined(WIN32) +#include <sys/time.h> +#endif +#include <fcntl.h> +#include <setjmp.h> +#endif `%/* KPATHSEA */`% +`<h-include after KPATHSEA`> +>>> + +\<h-defines 2\><<< +`<h-include before KPATHSEA`> +#ifdef KPATHSEA +#include <kpathsea/c-errno.h> +#include <kpathsea/c-ctype.h> +#include <kpathsea/c-fopen.h> +#include <kpathsea/c-pathmx.h> +#include <kpathsea/proginit.h> +#include <kpathsea/tex-file.h> +#include <kpathsea/tex-make.h> +#include <kpathsea/variable.h> +#include <signal.h> +#if !defined(_AMIGA) && !defined(WIN32) +#include <sys/time.h> +#endif +#include <fcntl.h> +#include <setjmp.h> +#endif `%/* KPATHSEA */`% +`<h-include after KPATHSEA`> +>>> + + +The \`'__cdecl' is defined in KPATHSEA: kpathsea/c-protos.h +is defined to nothing for compilers +other than MS. + +\<t4ht.h\><<< +#ifdef KPATHSEA +#ifdef WIN32 +#undef CDECL +#define CDECL __cdecl +#else +#define CDECL +#endif +#endif +>>> + +\<h-defines KWIN32\><<< +#ifdef KPATHSEA +#ifdef WIN32 +#define KWIN32 +#endif +#endif +>>> + + + + + +\SubSection{Compilers} + + +\List{} +\item {BCC32} + +For Win 95. + +Options (\''bcc32' comamnd): + +\Verbatim +Borland C++ 5.0 for Win32 Copyright (c) 1993, 1996 Borland International +Syntax is: BCC32 [ options ] file[s] * = default; -x- = turn switch x off + -3 * 80386 Instructions -4 80486 Instructions + -Ax Disable extensions -B Compile via assembly + -C Allow nested comments -Dxxx Define macro + -Exxx Alternate Assembler name -Hxxx Use pre-compiled headers + -Ixxx Include files directory -K Default char is unsigned + -Lxxx Libraries directory -M Generate link map + -N Check stack overflow -Ox Optimizations + -P Force C++ compile -R Produce browser info + -RT * Generate RTTI -S Produce assembly output + -Txxx Set assembler option -Uxxx Undefine macro + -Vx Virtual table control -X Suppress autodep. output + -aN Align on N bytes -b * Treat enums as integers + -c Compile only -d Merge duplicate strings + -exxx Executable file name -fxx Floating point options + -gN Stop after N warnings -iN Max. identifier length + -jN Stop after N errors -k * Standard stack frame + -lx Set linker option -nxxx Output file directory + -oxxx Object file name -p Pascal calls + -tWxxx Create Windows app -u * Underscores on externs + -v Source level debugging -wxxx Warning control + -xxxx Exception handling -y Produce line number info + -zxxx Set segment names +\EndVerbatim + + +\item {BCC} + +For DOS. + +\item {MSVC++} + +For DOS. + +\`'c:\msvc\bin\cl -Ic:\msvc\include -DDOS t4ht.c' + +In tex-live \`' cl -D_X86_=1 -DWINVER=0x0400 -DWIN32 -D_WIN32 +-DWIN32_LEAN_AND_MEAN -D_MT -D_DLL -DKPATHSEA +-D_IMPORT -DANSI -I. -I. -I.. -IG:\fptex\source\web2c-7.2 -c -W3 +-DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -O2x -G5rs -Gy +-c /Fodynamic\t4ht.obj .\t4ht.c' + +The following are the available flags (\''c:\msvc\bin\cl -help'). + +\Verbatim + C COMPILER OPTIONS + + -MEMORY MODEL- +/AS small model (default) /AC compact model +/AM medium model /AL large model +/AH huge model /AT tiny model (.COM files) +/A<string> (custom memory model) + -OPTIMIZATION- +/O enable optimization (same as /Ot) /O1 minimize space +/O2 maximize speed /Oa assume no aliasing +/Ob<n> inline expansion (default n=0) /Oc local common subexpression opt. +/Od disable optimization (default) /Oe enable registers allocation +/Of[-] toggle p-code quoting /Og global common subexpression opt. +/Oi enable intrinsic functions /Ol enable loop optimizations +/On disable ``unsafe'' optimizations /Oo[-] toggle post code-gen. opt. +/Op[-] improve floating-pt consistency /Oq enable maximum p-code optimization +/Or gen. common exit code (CodeView) /Os favor code size +/Ot favor code speed /Ov[-] toggle p-code frame sorting +/OV<n> control inlining by func. size /Ow assume cross-function aliasing +/Ox maximum opts. (/Ob1cegilnot /Gs) /Oz enable ``unsafe'' optimizations + -CODE GENERATION- +/G0 8086 instructions (default) /G1 186 instructions +/G2 286 instructions /G3 386 instructions + (press <return> to continue) +/GA protected-mode Win entry/exit code /GD protected-mode Win entry/exit code +/GE<x> customize Windows entry/exit /Gq backwards compatibility with v. 6 +/Gc Pascal style calling conventions /Gd C style calling conventions +/Ge use stack-check calls /Gf enable string pooling +/Ge use stack-check calls /Gf enable string pooling +/Gs remove stack-check calls /Gn remove p-code native entry points +/Gp<num> specify p-code entry tables /Gr _fastcall style calling convention +/Gt[num] data size threshold /GW real-mode Windows entry/exit code +/Gw real-mode Windows entry/exit code /Gx assume that data is near +/Gx- assume that data is far /Gy separate functions for linker +/Zr check null pointers (/f only) + -OUTPUT FILES- +/Fa[file] name assembly listing file /Fc[file] name source/object listing +/Fd[file] name .PDB filename /Fe<file> name executable filename +/Fl[file] name object listing filename /Fm[file] name map filename +/Fo<file> name object filename /Fr[file] name .SBR filename +/Fp<file> name .PCH filename /FR[file] name extended .SBR filename +/Fs[file] name source listing filename + -PREPROCESSOR- +/C don't strip comments /D<name>[=|#text] define macro +/E preprocess to stdout /EP same as /E but no #line +/I<directory> add #include path /P preprocess to file +/U<name> remove predefined macro /u remove all defined macros + (press <return> to continue) +/X ignore "standard places" + -LANGUAGE- +/vd{0|1} disable/enable vtordisp /vm<x> type of pointers to members +/Z7 C 7 style CodeView information /Za disable extensions (implies /Op) +/Zd line number information /Ze enable extensions (default) +/Zg generate function prototypes /Zi prepare for debugging (CodeView) +/Zl omit default library name in .OBJ /Zp[n] pack structs on n-byte boundary +/Zs check syntax only + -FLOATING POINT- +/FPa calls with altmath /FPc calls with emulator +/FPc87 calls with 8087 library /FPi inline with emulator (default) +/FPi87 inline with 8087 + -SOURCE LISTING- +/Sl<columns> set line width /Sp<lines> set page length +/St<string> set title string /Ss<string> set subtitle string + -MISCELLANEOUS- +/batch specify batch mode compilation /Bm<num> set compiler's available mem. +/c compile only, no link /H<num> external name length +/J default char type is unsigned /f select fast compiler (default) +/f- select optimizing compiler /Yc create .PCH file +/Yd put debug info in .PCH file /Yu use .PCH file +/YX automatic precompiled header /nologo suppress copyright message + (press <return> to continue) +/Mq compile for QuickWin /ND<name> name data segment +/NM<name> name code segment /NQ<name> combine p-code temp segments +/NT<name> name code segment /NV<name> name far v-table segment +/Tc<file> compile file without .c /Tp<file> compile file without .cpp +/V<string> set version string /W<n> warning level (default n=1) +/w disable all warnings /WX treat all warnings as errors +/Zn turn off SBRPACK for .SBR files + -MASM SUPPORT- +/MA<MASM switch> /Ta<file> assemble file without .asm + -LINKING- +/F <hex_num> stack size (hex. bytes) /Lr append 'r' to default lib in .OBJ +/link [lib] give lib name to linker /Ln do not link CRT.LIB +/Ld select dynamically-linked library /Lw select statically-linked library +\EndVerbatim + + +\EndList + +\SubSection{DJGPP} + + + + +\Verbatim + + * tex4ht.c [__DJGPP__] (ANSI, DOS_GIF_FILE): Define. + (WRITE_BIN_FLAGS, READ_BIN_FLAGS): Use binary mode with DJGPP. + (dos_file_names): New variable. + (sig_err): If got fatal signal other than SIGINT or SIGQUIT, don't + return to caller, since the program will be aborted otherwise. + (main) [KPATHSEA]: If input is from stdin which is not a console + device, switch it to binary mode. Set dos_file_names to TRUE for + all DOS platforms, FALSE on Unix and WIN32, and compute at runtime + for DJGPP. Simplify logic of finding the init file by pushing + HOME=C: into environment if $HOME isn't defined on DOSISH systems. +\EndVerbatim + + + +\<DJGPP\><<< +#ifdef __DJGPP__ +#define DOS_WIN32 +#define ANSI +#endif +>>> + + + + +\<DJGPP signals\><<< +#ifdef __DJGPP__ + if (s != SIGINT && s != SIGQUIT) + exit(EXIT_FAILURE); +#endif +>>> + + + + +\SubSection{Slashes n Directory Pathes} + + + + +\<defines\><<< +#if defined(DOS_WIN32) || defined(__DJGPP__) +#define dir_path_slash(str) (is_forward_slash(str)? '/' : '\\') +#else +#define dir_path_slash(str) '/' +#endif +>>> + + + +\<header functions\><<< +#if defined(DOS_WIN32) || defined(__DJGPP__) + static BOOL is_forward_slash( ARG_I(Q_CHAR *) ); +#endif +>>> + +\<functions\><<< +#if defined(DOS_WIN32) || defined(__DJGPP__) +`[ +static BOOL is_forward_slash(str) + Q_CHAR * str +;{ + while( *str ){ if( *(str++) == '/' ) { return TRUE; } } + return FALSE; +} +#endif +>>> + + + + + + + + +\Section{Command-Line Options} + + +\SubSection{Available Options} + +\List{disc} +\item \`'.../'---Directory where files should be sent +\item \`'-mXXX'---\`'chmod XXX' for files +\item \`'-e...'---Name of invisible gif +\item \`'-d'---Directory for config files +\item \`'-p'---Ignore pictures (but not pictorial symbols) +\item \`'-i'---Debugging info +\item Other---Name of dvi file +\EndList + + +\Verbatim + dvips -mode ibmvga -D 110 -f foo.idv -pp 92 > tmp.ps + convert -crop 0x0 -density 110x110 -transparent '#FFFFFF' tmp.ps foo.gif + mv foo.gif /WWW/temp/. + cp foo.html /WWW/temp/. + chmod 644 /WWW/temp/foo.* +\EndVerbatim + + +\<command line options\><<< +"\n--------------------------------------------------------------------\n" +"t4ht [-f<dir char>]filename ...\n" +" -b ignore -d -m -M for bitmaps\n" +" -c... choose named segment in env file\n" +" -d... directory for output files (default: current)\n" +" -e... location of tex4ht.env\n" +" -i debugging info\n" +" -g ignore errors in system calls\n" +" -m... chmod ... of new output files (reused bitmaps excluded)\n" +" -p don't convert pictures (default: convert)\n" +" -r replace bitmaps of all glyphs (default: reuse old ones)\n" +" -M... chmod ... of all output files\n" +" -Q quit, if tex4ht.c had problems\n" +" -S... permission for system calls: *-always, filter\n" +" -X... content for field %%3 in X scripts\n" +" -.... content for field %%2 in . scripts\n\n" +"Example: \n" +" t4ht name -d/WWW/temp/ -etex4ht-32.env -m644\n" +"--------------------------------------------------------------------\n" +>>> + + +If option \`'-e' is present, empty pictures are replaced +with the named file (e.g., \`'empty.gif'). + + + + + +\SubSection{Scanning the Options} + + + + +\<vars\><<< +static Q_CHAR *ch_mod = Q_NULL; +static Q_CHAR *debug = Q_NULL; +static Q_CHAR *Xfield = Q_NULL; +static Q_CHAR *Dotfield = Q_NULL; +static Q_CHAR *dir = Q_NULL; +static Q_CHAR *lg_name = Q_NULL, tmp_name[255], job_name[255]; +static Q_CHAR *nopict = Q_NULL; +static Q_CHAR *bitmaps_no_dm = Q_NULL; +static BOOL newchmod = FALSE; +static Q_CHAR *noreuse = Q_NULL; +>>> + + +\<scan job args\><<< +{ int i; + Q_CHAR *p, *q; + `<kpathsea arg 0`> + `<default args`> + if( argc == 1 ){ bad_arg; } + for(i=1; i<argc; i++){ + if( *( p=argv[i] ) == '-' ){ `<scan flaged args`> } + else + { lg_name = argv[i]; } + } + if( lg_name == NULL ){ bad_arg; } + `<set tmp file name`> + `<set job file name`> +} +>>> + + +\<handle quoted arguments\><<< +{ int i, count = 0; + for(i=0; i<argc; i++){ + Q_CHAR *p = argv[i]; + count++; + if( (*p == '\'') || (*p == '\"') ){ + int cnt; + int len = 0; + for( cnt=i; cnt < argc; cnt++ ){ + len += (int) strlen((char *) argv[cnt]); + if( *(argv[cnt] + (int) strlen((char *) argv[cnt]) -1) == *p ){ + Q_CHAR * arg = m_alloc(char, len + cnt - i + 1); + Q_CHAR * toArg = arg; + Q_CHAR *pp; + i--; + do { + pp = argv[++i]; + while( *pp != '\0' ){ + if( *pp != *p ){ *(toArg++) = *pp; } + pp++; + } + *(toArg++) = ' '; + } while ( i != cnt ); + *(toArg-1) = '\0'; + argv[count-1] = arg; + break; + } } } } + argc = count; +} +>>> + + + + +\<set tmp file name\><<< +{ Q_CHAR *p, *q; + FILE* file; + (IGNORED) strcpy((char *) (char *) tmp_name, (char *) (char *) lg_name); + p = q = tmp_name + strlen((char *) tmp_name ); + while( p != tmp_name ){ + if( *p == '.' ){ + if( eq_str( p+1,LG_EXT ) ) { *p = '\0'; } + else { + (IGNORED) strct( tmp_name, LG_EXT); + file = fopen( tmp_name, READ_TEXT_FLAGS ); + if( file ){ + (IGNORED) fclose(file); *q = '\0'; + } else { *p = '\0'; } + } + break; + } + p--; + } + (IGNORED) strct(tmp_name, ".tmp"); +} +>>> + + +\<set job file name\><<< +(IGNORED) strcpy((char *) job_name, (char *) tmp_name); +*(job_name + strlen((char *) job_name) - 4) = '\0'; +>>> + + + +\Verbatim +I found that I couldn't compile t4ht.c with KPATHSEA defined, and then noticed +that it doesn't include any of the kpathsea headers. So I have patched t4ht.c +to create two versions: one with the necessary kpathsea headers and one +without. This is the output produced by 'diff'. Let me know if you want to +merge my changes into your t4ht.c, and/or if you notice any errors! I have +changed the second argument of 'kpse_set_program_name' from NULL (which would +effectively mean argv[0]) to 'tex4ht', as that saves having to add a +'T4HTINPUTS' (or 'T4HTKINPUTS') variable into the kpathsea configuration file +'texmf.cnf' pointing to the same place for 'tex4ht.env' as the 'TEX4HTINPUTS' +variable. + +For t4ht.c, the kpathsea library is only useful for locating the tex4ht.env +configuration file. But as it can be used for this purpose for tex4ht.c, it +seems a pity not to enable it for its companion program too. + +> 94a99,102 +> > #ifdef KPATHSEA +> > #include <kpathsea/progname.h> +> > #include <kpathsea/tex-file.h> +> > #endif +> 943c951 +> < kpse_set_program_name (argv[0], NULL); +> --- +> > kpse_set_program_name (argv[0], "tex4ht"); +\EndVerbatim + +\<kpathsea arg 0\><<< +#ifdef KPATHSEA + kpse_set_program_name (argv[0], "tex4ht"); +#endif +>>> + + + +If \`'strlen((char *) argv[i] ) == 2' the switch is followed by a +space to be deleted when more input is awaited. + + +\<scan flaged args\><<< +if( (int) strlen((char *) argv[i] ) == 2 ){ + if( `<not a single char option?`> ) + { if( ++i == argc ) bad_arg; } + q = argv[i]; +} else q = p+2; +switch( *(p+1) ){ + case 'M':{ ch_mod = q; newchmod = TRUE; break; } + case 'S':{ `<permission for system calls`> break; } + case 'X':{ Xfield = q; break;} + case 'b':{ bitmaps_no_dm = q-1; break;} + case 'c':{ `<env blocks selector`> break;} + case 'd':{ dir = (*q=='~')? abs_addr(q,NULL) : q; break; } + case 'e':{ `<get .env directory from com ln`> break; } + case 'f':{ `<get file name wo dir`> break; } + case 'i':{ debug = q-1; break;} + case 'g':{ always_call_sys = TRUE; break;} + case 'm':{ ch_mod = q; break; } + case 'p':{ nopict = q-1; break;} + case 'Q':{ check_tex4ht_c_err = TRUE; break;} + case 'r':{ noreuse = q-1; break;} + case '.':{ Dotfield = q; break;} + default:{ bad_arg; } +} +>>> + + +\<not a single char option?\><<< + (*(p+1) != 'i') +&& (*(p+1) != 'p') +&& (*(p+1) != 'r') +&& (*(p+1) != 'b') +&& (*(p+1) != 'g') +&& (*(p+1) != 'Q') +>>> + + + +The following is to allow for commands \`'htlatex +-f/../source/foo.tex' which draw files from other directories for +latex, but use the current directory for tex4ht.c (and t4ht.c). The +character immediately after \`'-f' is a directory indicator character. + + +\<get file name wo dir\><<< +p = p + 2; +lg_name = p + (int) strlen((char *) p ); +while( *lg_name != *p ){ lg_name--; } +lg_name++; +>>> + + + + + +\<header functions\><<< +static char * abs_addr( ARG_II( U_CHAR *, U_CHAR *) ); +>>> + +\<functions\><<< +`[ +static char * abs_addr( dir, base) + U_CHAR *dir`; + U_CHAR *base + +;{ U_CHAR *p; + p = m_alloc(char, (int) strlen((char *) dir ) + + (base? (int) strlen((char *) base ):0) + + (int) strlen((char *) HOME_DIR )); + *p = '\0'; + if( (*(dir+1) == '~') && base ){ + if( *base == '~' ){ + (IGNORED) strct(p, HOME_DIR); + (IGNORED) strct(p, base+1); + } else { + (IGNORED) strct(p, base); + } + (IGNORED) strct(p, dir+2); + } else { + (IGNORED) strct(p, HOME_DIR); + (IGNORED) strct(p, dir+1); + } + return p; +} +>>> + +\<vars\><<< +U_CHAR *HOME_DIR; +>>> + +\<main's init\><<< +HOME_DIR = getenv("HOME"); +>>> + + + + +\Section{Identify the Empty Pictures} + + +Messages about figures that don't exist are treated as requests for +empty figures. Typically, they shouldn't be present unless they are +programmed into \''\setbox'-like commands. tex4ht-c identifies in the +\''.lg' file the empty figures it finds. + +The messages in the ``.lg'' file look like +\`'--- empty picture --- aa.idv[1] ---'. + + + +\<identify the empty pictures\><<< +{ struct empty_pic_struct *last; + last = empty_pic = (struct empty_pic_struct *) 0; + while( TRUE ) { + status = scan_str("--- empty picture --- ", TRUE, lg_file); + status = scan_until_str( ".idv[" , 1, status, lg_file); + status = scan_until_end_str("] ---", 1, status, lg_file); + if( status ){ `<add empty pic`> } + if ( eoln_ch == EOF ){ break; } + } + `<add empty pic`> + last->next = (struct empty_pic_struct *) 0; + last->n = 100000; +} +>>> + + +\<add empty pic\><<< +if( last == (struct empty_pic_struct *) 0 ){ + last = empty_pic = (struct empty_pic_struct *) + m_alloc(struct empty_pic_struct, (int) 1); +} else { + last = last->next = (struct empty_pic_struct *) + m_alloc(struct empty_pic_struct, (int) 1); +} +last->next = (struct empty_pic_struct *) 0; +last->n = get_long_int(match[1]); +>>> + + +\<main's vars\><<< +struct empty_pic_struct *empty_pic; +>>> + +\<defines\><<< +struct empty_pic_struct{ + long int n; + struct empty_pic_struct *next; +}; +>>> + + + +The list of empty pictures is stored in \`'emptypic'. + +%%%%%%%%%%%%%%%%%%%%%%% +\Section{Process Gifs} +%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{The Scripts} +%%%%%%%%%%%%%%%%%%%%%%% + +\<script for dvigif\><<< +if( debug ){ (IGNORED) printf(".......'G' script\n"); } +dvigif_script = add_script(dvigif_script); +>>> + + +\Verbatim +--- needs --- aa.idv[80] ==> aa79x.gif --- +--- characters --- +--- needs --- aa.idv[81] ==> foo.gif --- +\EndVerbatim + + +\<process gif's\><<< +{ BOOL characters, skip; + characters = skip = FALSE; + while( TRUE ) { + status = scan_until_str("--- ", 1, TRUE, lg_file); + status = scan_until_str( " ---" , 2, status, lg_file); + if( status ) { + if( eq_str(match[1],"--- ") ){ + if( eq_str(match[2],"needs ---") ){ + `<--- needs ---...`> + } else if( eq_str(match[2],"characters ---") ){ + `<--- characters ---...`> + } else { `<--- ??? ---...`> } + } else { `<???--- needs ---...`> } + } + if ( eoln_ch == EOF ){ break; } +} } +>>> + + +\<--- ??? ---...\><<< +status = scan_until_end_str("", 1, status, lg_file); +>>> + +\<???--- ??? ---...\><<< +status = scan_until_end_str("", 1, status, lg_file); +>>> + + +\<--- characters ---...\><<< +status = scan_until_end_str("", 1, status, lg_file); +characters = eq_str(match[1],""); +>>> + + +\SubSection{Identifying the requests} + + + +\<--- needs ---...\><<< +status = scan_until_str(" ", 1, status, lg_file); +status = scan_until_str(".idv", 1, status, lg_file); +status = scan_until_str("[", 2, status, lg_file); +status = scan_until_str("] ==> ", 2, status, lg_file); +status = scan_until_str(" ", 3, status, lg_file); + *(match[3] + (int) strlen((char *) match[3]) - 1) = '\0'; +status = scan_until_end_str("---", 4, status, lg_file); +if( status ) { + `<dvi2gif vars`> + long int gif_i; + Q_CHAR *p; + gif_i = get_long_int(match[2]); + p = match[2]; + *(p + (int) strlen((char *) p) - 6) = '\0'; + if( characters ){ + `<translate symbol gifs`> + } else { `<translate non-symbol gifs`> } +} +>>> + + +\SubSection{General Pictures} + + +\`'--- needs --- aa.idv[80] ==> aa79x.gif ---' + +\<translate non-symbol gifs\><<< +if( gif_i == `<empty picture`> ) { + `<insert empty picture`> +} else { `<insert non-empty picture`> } +>>> + + +\<insert non-empty picture\><<< +if( !nopict && !skip ){ + `<dvi into gif`> +} +>>> + + +\<insert empty picture\><<< +if( !skip ){ + (void) execute_script(empty_fig_script, + (dir && !bitmaps_no_dm )? dir :"", match[3],"",""); + if( ch_mod && !bitmaps_no_dm && !system_return ){ + (void) execute_script(chmod_script, ch_mod, + dir?dir:"",match[3], ""); + } +} +empty_pic = empty_pic->next; +>>> + + + +\<empty picture\><<< +empty_pic->n +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Pictorial Symbols} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<translate symbol gifs\><<< + Q_CHAR filename[255]; + FILE* file; +(IGNORED) strcpy((char *) filename, ""); +if( dir && !bitmaps_no_dm ){ (IGNORED) strct(filename, dir); } +(IGNORED) strct(filename, match[3]); +file = fopen(filename, READ_TEXT_FLAGS); +if( !file || noreuse ){ + `<dvi symbols into gif`> +} else { + (IGNORED) fclose(file); + if( newchmod ) + { `<chmod for glyphs`> } + (IGNORED) printf("%s already in %s\n", match[3], + dir? dir : "current directory" ); +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{The Conversion Code} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<dvi into gif\><<< +filtered_dvigif_script = filterGifScript(dvigif_script, match[3]); +(void) execute_script( + filtered_dvigif_script,match[1],match[2],match[3],job_name); +(void) free_script( filtered_dvigif_script ); +if( dir && !bitmaps_no_dm && !system_return ){ + (void) execute_script(move_script,match[3],dir,".",""); +} +if( ch_mod && !bitmaps_no_dm && !system_return ){ + (void) execute_script(chmod_script, ch_mod, dir?dir:"",match[3], ""); +} +>>> + +\<dvi symbols into gif\><<< +filtered_dvigif_script = dvigif_glyp_script? + filterGifScript(dvigif_glyp_script, match[3]): + filterGifScript(dvigif_script, match[3]); +(void) execute_script( + filtered_dvigif_script,match[1],match[2],match[3],job_name); +(void) free_script( filtered_dvigif_script ); +if( dir && !bitmaps_no_dm && !system_return ){ + (void) execute_script(move_script,match[3],dir,".",""); +`<chmod for glyphs`> +} +>>> + + +\<chmod for glyphs\><<< +if( ch_mod && !bitmaps_no_dm && !system_return ){ + (void) execute_script(chmod_script, ch_mod, dir?dir:"",match[3], ""); +} +>>> + + +\<dvi2gif vars\><<< +struct script_struct + * filtered_dvigif_script = NULL_SCRIPT; +>>> + + + + + + + + + + + + + + + + + + + + + + +\<header functions\><<< +static void execute_script( + ARG_V(struct script_struct*,const Q_CHAR *,const Q_CHAR *,const Q_CHAR *,const Q_CHAR *) ); +>>> + +\<functions\><<< +`[ +static void execute_script(script,match_1,match_2,match_3,match_4) + struct script_struct* script`; + const Q_CHAR * match_1`; + const Q_CHAR * match_2`; + const Q_CHAR * match_3`; + const Q_CHAR * match_4 + +;{ struct script_struct* temp; + Q_CHAR *p, *q; + const Q_CHAR *t; + `<texmf := ...`> + temp = script; system_return = 0; + while( temp ){ + `<command = temp-command`> + if( (command[0] != '\0') && !system_return ){ + `<execute system command`> } + temp = temp->next; +} } +>>> + + +We went to \`'%%%', \`'%%1', ... instead of \`'%%', \`'%1', ... +to accomodate some needds of dos. Example (yet, where exactly the +conflict is?): + +\Verbatim +if exist %1.dvi goto yes_dvi +goto end +yes_dvi: +DEL tmp.ps +call dvips32 -f %1 -p %2 -l %2 -o tmp.ps -mode ibmvga -D 110 +DEL %3 +call convert -crop 0x0 -density 110x110 -transparent '#FFFFFF' tmp.ps %3 +end: +\EndVerbatim + + + +\<command = temp-command\><<< +p = temp->command; +q = command; +while( *p != '\0' ){ + *q = *(p++); + if( (*q == '%') && (*p == '%') + && ( (*(p+1) == '%') + || (*(p+1) == '~') + || ( (*(p+1) >= '0') && (*(p+1) < '5') ) ) + ){ p++; + switch( *(p++) ){ + case '%':{ q++; break; } + case '0':{ t = job_name; + while( *t != '\0' ){ *(q++) = *(t++); } break; } + case '1':{ t = match_1; + while( *t != '\0' ){ *(q++) = *(t++); } break; } + case '2':{ t = match_2; + while( *t != '\0' ){ *(q++) = *(t++); } break; } + case '3':{ t = match_3; + while( *t != '\0' ){ *(q++) = *(t++); } break; } + case '4':{ t = match_4; + while( *t != '\0' ){ *(q++) = *(t++); } break; } + case '~':{ `<q += texmf path`> break; } + default: { } + }} else { q++; } +} +*q = '\0'; +>>> + +The argument `\Verb=%%~=' is replaced with the value of +\Verb=${TEXMFDIST}= under Kpathsea. If such a value +is not available, the character `\Verb=~=' is used. The variable +offers the parent directory of where tex4ht resides, e.g., +\Verb=/usr/local/texlive/2018/texmf-dist=. We use TEXMFDIST in +preference to SELFAUTOPARENT (as was done until June 2018), or +TEXMFROOT, because in practice it works on both \TeX\ Live and MiK\TeX, +while the others do not. + +\<texmf := ...\><<< +#ifdef KPATHSEA +const char * texmf = kpse_var_value( "TEXMFDIST" ); +#endif +>>> + +\<q += texmf path\><<< +#ifdef KPATHSEA + if( texmf ){ + t = texmf; + while( *t != '\0' ){ *(q++) = *(t++); } + } else { + *(q++) = '~'; + } +#else + *(q++) = '~'; +#endif +>>> + + + + +\Verbatim + +> > help tinkering with the code. If you'll have a chance at some +> > point to pass on the kind of changes you are doing, I'll be interested +> > to hardwire them in the code as compile/run-time options. +> for instance, I add -Pem to the dvips command line to access the EM +> fonts instead of EC (faster) +> +> i also change the name of "convert.exe" to "iconvert.exe" because it +> conflicts with a native NT utility to convert file systems :-} + +\EndVerbatim + +\Verbatim +dvips -mode $mf -D $density -f $_[0] -pp $_[1] > tmp.ps +\EndVerbatim + +\<defines\><<< +#ifndef HTFDIR +#define HTFDIR "" +#endif +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Filter} +%%%%%%%%%%%%%%%%%%%%%%%% + + + +Three cases for `G' and `F' scripts. + +\List{} +\item +{The first record doesn't start with a period} +Use the script until its end or a period command +\item +{The first record starts with a period without an extension} +Use the script until its end or a period command +\item +{The first record starts with a period with an extension} +Use the script until its end or a period command, if the extension +fits the output figure. + +\EndList + + +\<header functions\><<< +static struct script_struct * filterGifScript( + ARG_II( struct script_struct *, Q_CHAR *) ); +>>> + +\<functions\><<< +`[ +static struct script_struct * filterGifScript( script, file) + struct script_struct *script`; + Q_CHAR *file +;{ + struct script_struct *filtered_script, *scr, + *old_script, + *new_script; + Q_CHAR *command, *ext; + filtered_script = NULL_SCRIPT; + if( script == NULL_SCRIPT ) + return filtered_script; + old_script = script; + command = old_script->command; + if( *command != '.' ){ + `<script until dot`> + } else { + `<script from dot`> + } +} +>>> + +\<script until dot\><<< +new_script = NULL_SCRIPT; +while( old_script != NULL_SCRIPT ){ + command = old_script->command; + if( *command == '.' ){ return filtered_script; } + scr = (struct script_struct *) + m_alloc(struct script_struct, (int) 1); + scr->command = old_script->command; + scr->next = NULL_SCRIPT; + if( new_script == NULL_SCRIPT ){ + filtered_script = new_script = scr; + } else { + new_script = new_script->next = scr; + } + old_script = old_script->next; +} +return filtered_script; +>>> + +\<script from dot\><<< +`<ext = file ext`> +while( TRUE ){ + if( old_script == NULL_SCRIPT ){ + return NULL_SCRIPT; + } + command = old_script->command; + if(*command != '.') { + old_script = old_script->next; + continue; + } + old_script = old_script->next; + if( (*(command+1) == '\0') || eq_str(ext,command) ){ + break; + } +} +`<script until dot`> +>>> + + +\<ext = file ext\><<< +ext = file; +while( *ext != '\0' ){ ext++; } +while( (*ext != '.') && (ext != file) ){ ext--; } +>>> + + +\<header functions\><<< +void free_script( + ARG_I( struct script_struct *) ); +>>> + +\<functions\><<< +`[ +void free_script(script) + struct script_struct *script +;{ + struct script_struct *temp; + while( script != NULL_SCRIPT ){ + temp = script; + script = script->next; + free( temp ); + } +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Ignore/Noignore Commands} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<???--- ??? ---...\><<< +status = scan_until_end_str("", 1, status, lg_file); +>>> + + +\Verbatim +l. 10 --- needs --- ignore --- +l. 11 --- needs --- end ignore --- +\EndVerbatim + + +We didn't check below the \`'l. dddd ' part. + +\<???--- needs ---...\><<< +status = scan_until_end_str(" ignore ---", 2, status, lg_file); +if( status ){ + skip = eq_str(match[2]," ignore ---") ? TRUE : + ( eq_str(match[2]," end ignore ---") ? FALSE : skip ); +} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%% +\Section{CopyTo files} +%%%%%%%%%%%%%%%%%%%%%%% + + +There are 6 supporting dvi variations of the +`CopyTo to-file op group' + dvi command: + +\List{} +\item{From} Start copying (at current address) +\item{Until} End copying (at current address) +\item{Skip} Start skipping (from current address) +\item{Cont} End skipping (at current-address) +\item{Addr integer-label} Associate current + address with the integer-label of the given group +\item{Set integer-label} + Replace the `current address' in the following Skip/Cont (and + From/Until ?) commands with the address associated to the + integer-label of the given group by an Addr command +\EndList + +The code +\Verbatim +B0 + \ht:special {t4ht@DCopyTo: \jobname-js.tex From bib } +B1 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Skip bib } +B2 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Addr1 bib } +B3 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Addr2 bib } +B4 + \ht:special {t4ht@DCopyTo: \jobname-js.tex Set1 bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Cont bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Set2 bib } + \ht:special {t4ht@DCopyTo: \jobname-js.tex Skip bib } +B5 +\ht:special {t4ht@DCopyTo: \jobname-js.tex Until bib } +B6 +\EndVerbatim + +produces the string ` B1 B3 '. + + + + +\<CopyTo files\><<< +{ `<CopyTo vars`> + eoln_ch = (int) 'x'; + while( eoln_ch != EOF ) { + status = scan_str("CopyTo: ", TRUE, lg_file); + status = scan_until_str(" ", 1, status, lg_file); + status = scan_until_str(" ", 2, status, lg_file); + status = scan_until_str(" ", 3, status, lg_file); + status = scan_until_str(" ", 4, status, lg_file); + status = scan_until_end_str("", 5, status, lg_file); + if( status ){ + if( debug ){ + (IGNORED) printf("...CopyTo: %s%s%s%s%s...\n", + match[1], match[2], match[3], match[4], match[5]); + } + rec_op = eq_str(match[2],"From ")? From_op : + ( eq_str(match[2],"Until ")? Until_op : + ( eq_str(match[2],"Skip ")? Skip_op : + ( eq_str(match[2],"Cont ")? Cont_op : No_op ))); + if( rec_op == No_op ){ `<try Addr and Set ops`> } + if( rec_op == No_op ){ + (IGNORED) fprintf(stderr,"--- warning --- "); + (IGNORED) fprintf(stderr,"CopyTo: %s%s%s%s%s?\n", + match[1], match[2], match[3], match[4], match[5]); + } else { + `<find file records`> + `<find to-from record`> + `<find group record`> + `<enter op record`> + `<act on op`> + } } } + `<release CopyTo resources`> +} +>>> + + +\<try Addr and Set ops\><<< +ch = match[2]; +if( (ch[0]=='S') && (ch[1]=='e') && (ch[2]=='t') ){ + ch += 3; rec_op = Set_op; +} else if( (ch[0]=='A') && (ch[1]=='d') && (ch[2]=='d') && (ch[3]=='r') ){ + ch += 4; rec_op = Addr_op; +} +if( rec_op != No_op ){ + addr = 0; while( (*ch>='0') && (*ch<='9') ){ + addr = addr*10 + *ch - '0'; ch++; +} } +>>> + +\<release CopyTo resources\><<< +for( p = opened_files; p != (struct files_rec*) 0; ){ + (IGNORED) fclose(p->file); + free((void *) p->name); + `<free to-from records`> + p1= p; p = p->right; free((void *) p1); +} +>>> + +\<free to-from records\><<< +for( p1 = p->down; p1 != (struct files_rec*) 0; ){ + `<free group records`> + p2 = p1; p1 = p1->right; free((void *) p2); +} +>>> + +\<free group records\><<< +for( p2 = p1->down; p2 != (struct files_rec*) 0; ){ + `<free op records`> + p3 = p2; p2 = p2->right; free((void *) p3); +} +>>> + +\<free op records\><<< +for( p3 = p2->down; p3 != (struct files_rec*) 0; ){ + p4 = p3; p3 = p3->down; free((void *) p4); +} +>>> + + + + + +\<act on op\><<< +if( rec_op == Until_op ){ + for( p = to_rec->down; + p != (struct files_rec*) 0; p = p->down ){ + if( p->op == From_op ){ from_op = p; break; } + } + if( p == (struct files_rec*) 0 ){ + `<missing From for CopyTo`> + } else { + `<perform ops`> + `<remove ops`> + } +} +>>> + + + + +\<perform ops\><<< +in_file = from_rec->file; +out_file = to_rec->file; +start_loc = from_op->loc; +write_on = TRUE; +(IGNORED) fseek(in_file, (long) start_loc, `<abs file addr`>); +for( p= from_op; p != to_rec; p = p->up ){ + switch( p->op ){ + case Until_op:{ `<Until op`> break; } + case Skip_op:{ `<Skip op`> break; } + case Cont_op:{ `<Cont op`> break; } + case Set_op:{ `<Set op`> break; } + default: { } +} } +>>> + + +\<Until op\><<< +if( write_on ){ + end_loc = p->loc; + for(; start_loc<end_loc; start_loc++) { + (IGNORED) putc( getc(in_file), out_file ); +} } +>>> + + +\<Skip op\><<< +if( write_on ){ + end_loc = p->loc; + for(; start_loc<end_loc; start_loc++) { + (IGNORED) putc( getc(in_file), out_file ); + } +} +write_on = FALSE; +>>> + + +\<Cont op\><<< +end_loc = p->loc; +if( write_on ){ + for(; start_loc<end_loc; start_loc++) { + (IGNORED) putc( getc(in_file), out_file ); + } +} else { + start_loc = end_loc; + (IGNORED) fseek(in_file, (long) end_loc, `<abs file addr`>); +} +write_on = TRUE; +>>> + + +\<Set op\><<< +addr = -1; +for( p1 = from_op->up; p1 != to_rec; p1 = p1->up ){ + if( (p1->op == Addr_op) && (p1->label == p->label) ){ + addr = p1->loc; break; +} } +if( addr != -1 ){ (p->up)->loc = addr; } +>>> + + +\<remove ops\><<< +to_rec->down = from_op->down; +if( from_op->down != (struct files_rec*) 0){ + (from_op->down)->up = to_rec; +} +for( p = from_op; p != to_rec; ){ + p1 = p; p = p->up; free((void *) p1); +} +if( to_rec->down == (struct files_rec*) 0){ + if( to_rec->left == (struct files_rec*) 0 ){ + (to_rec->up)->down = to_rec->right; + } else { + (to_rec->left)->right = to_rec->right; + } + if( to_rec->right != (struct files_rec*) 0 ){ + (to_rec->right)->left = to_rec->left; + } + p1 = to_rec; to_rec = to_rec->up; free((void *) p1); +} +>>> + +\<missing From for CopyTo\><<< +(IGNORED) fprintf(stderr,"%sMissing ``CopyTo From':\n", "--- warning --- "); +for( p = to_rec->down; p != (struct files_rec*) 0; p = p->down ){ + (IGNORED) fprintf(stderr," %s %s%d %s\n", to_rec->name, + p->op == From_op ? "From " : + ( p->op == Until_op ? "Until " : + ( p->op == Skip_op ? "Skip " : + ( p->op == Cont_op? "Cont " : + ( p->op == Addr_op? "Addr " : + ( p->op == Set_op? "Set " : "No_op " ))))), + p->loc, from_rec->name + ); +} +>>> + + + + +\<enter op record\><<< +p = m_alloc(struct files_rec, 1); +p->down = to_rec->down; to_rec->down = p; +p->up = to_rec; +if( p->down != (struct files_rec*) 0 ){ + (p->down)->up = p; +} +*(match[4] + (int) strlen((char *) match[4]) - 1) = '\0'; +p->loc = (int) get_long_int(match[4]); +p->op = rec_op; +p->label = addr; +>>> + +\<find group record\><<< +if( to_rec->down == (struct files_rec*) 0 ){ + `<add first group record`> +} else { + to_rec = to_rec->down; + for( p = to_rec->right; p != (struct files_rec*) 0; p = p->right ){ + if( eq_str(to_rec->group,match[3]) ){ break; } + to_rec = p; + } + if( !eq_str(to_rec->group,match[3]) ){ + `<add next group record`> +} } +>>> + + + +\<add first group record\><<< +to_rec->down = p = m_alloc(struct files_rec, 1); +p->up = to_rec; +p->right = p->left = p->down = (struct files_rec*) 0; +p->name = to_rec->name; +p->file = to_rec->file; +p->from_rec = from_rec; +p->loc = -1; +p->op = No_op; +p->group = m_alloc(char, (int) strlen((char *) match[3]) + 1); +(IGNORED) strcpy((char *) p->group, (char *) match[3] ); +to_rec = p; +>>> + +\<add next group record\><<< +to_rec->right = p = m_alloc(struct files_rec, 1); +p->left = to_rec; +p->right = p->down = (struct files_rec*) 0; +p->up = to_rec->up; +p->name = to_rec->name; +p->file = to_rec->file; +p->from_rec = from_rec; +p->loc = -1; +p->group = m_alloc(char, (int) strlen((char *) match[3]) + 1); +(IGNORED) strcpy((char *) p->group, (char *) match[3] ); +to_rec = p; +>>> + + + +\<find to-from record\><<< +if( to_rec->down == (struct files_rec*) 0 ){ + `<add first to-from record`> +} else { + to_rec = to_rec->down; + for( p = to_rec->right; p != (struct files_rec*) 0; p = p->right ){ + if( to_rec->from_rec == from_rec ){ break; } + to_rec = p; + } + if( to_rec->from_rec != from_rec ){ + `<add next to-from record`> +} } +>>> + +\<add first to-from record\><<< +to_rec->down = p = m_alloc(struct files_rec, 1); +p->up = to_rec; +p->right = p->left = p->down = (struct files_rec*) 0; +p->name = to_rec->name; +p->file = to_rec->file; +p->from_rec = from_rec; +p->loc = -1; +p->op = No_op; +to_rec = p; +>>> + +\<add next to-from record\><<< +to_rec->right = p = m_alloc(struct files_rec, 1); +p->left = to_rec; +p->right = p->down = (struct files_rec*) 0; +p->up = to_rec->up; +p->name = to_rec->name; +p->file = to_rec->file; +p->from_rec = from_rec; +p->loc = -1; +to_rec = p; +>>> + + +\<find file records\><<< +file_name = match[1]; +*(file_name + (int) strlen((char *) file_name) - 1) = '\0'; +strcpy((char *) file_mode, WRITE_TEXT_FLAGS); +for(i=1; i<=2; i++){ + `<search CopyTo file`> + file_name = match[5]; + strcpy((char *) file_mode, `<CopyTo read flags`>); +} +>>> + + + + + + + + + +\<search CopyTo file\><<< +for( p = opened_files; p != (struct files_rec*) 0; p = p->right ){ + if( eq_str(file_name,p->name) ) { break; } +} +if( p == (struct files_rec*) 0 ){ + p = m_alloc(struct files_rec, 1); + p->right = opened_files; opened_files = p; + p->down = (struct files_rec*) 0; + strcpy((char *) p->file_mode, (char *) file_mode); + p->name = m_alloc(char, (int) strlen((char *) file_name) + 1); + (IGNORED) strcpy((char *) p->name, (char *) file_name ); + if( (p->file = fopen(file_name, file_mode)) == NULL ) + { (IGNORED) warn_i_str(5,file_name); } +} +to_rec = from_rec; from_rec = p; +>>> + + +\<defines\><<< +struct files_rec{ + FILE* file; + char *name, *group, op; + Q_CHAR file_mode[5]; + int loc, label; + struct files_rec *from_rec, *right, *left, *down, *up; +}; +#define No_op 0 +#define From_op 1 +#define Until_op 2 +#define Skip_op 3 +#define Cont_op 4 +#define Addr_op 5 +#define Set_op 6 +>>> + +\<CopyTo vars\><<< +Q_CHAR *file_name, file_mode[5]; +int i, start_loc, end_loc, addr = 0; +char rec_op, *ch; +static struct files_rec *to_rec, *from_rec, + *opened_files = (struct files_rec *) 0, + *p, *p1, *p2, *p3, *p4, *from_op; +FILE *in_file, *out_file; +BOOL write_on; +>>> + + + + + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\Section{post-process ext files} +%%%%%%%%%%%%%%%%%%%%%%% + +\<post-process ext files\><<< +if( `<ext-script`> ){ + eoln_ch = (int) 'x'; + while( eoln_ch != EOF ) { + status = scan_str("File: ", TRUE, lg_file); + status = scan_until_str(".", 1, status, lg_file); + status = scan_until_end_str("", 2, status, lg_file); + if( status ){ Q_CHAR *ext; + struct script_struct *cur_script; + ext = match[1]; + (IGNORED) strct( ext, match[2] ); + ext += strlen((char *) ext); + while( *(--ext) != '.' ){ ; } + *ext = '\0'; ext++; + `<get script for ext`> + (void) execute_script(cur_script, + match[1], Dotfield? Dotfield : "", "", ""); + `<release script for ext`> +} } } +>>> + + +\<get script for ext\><<< +{ + struct script_struct *cur, *add, *temp; + Q_CHAR extPlus[256]; + cur = `<ext-script`>; + add = cur_script = NULL_SCRIPT; + while( cur ){ + `<ext = ext + choise`> + if( strpre(extPlus, cur->command) ){ + `<temp = ext command`> + if( cur_script == NULL_SCRIPT ){ + cur_script = add = temp; + } else { + add = add->next = temp; + } } + cur = cur->next; +} } +>>> + + + +\<ext = ext + choise\><<< +(IGNORED) strcpy((char *) extPlus, (char *) ext); +/* + if ( envChoice ) { + (IGNORED) strct ( extPlus, envChoice ); + } +*/ +(IGNORED) strct ( extPlus, " " ); +>>> + +\<temp = ext command\><<< +temp = (struct script_struct *) + m_alloc(struct script_struct, (int) 1); +temp->command = m_alloc(char, (int) strlen((char *) cur->command) + 1); +temp->next = NULL_SCRIPT; +(IGNORED) strcpy((char *) temp->command, + (char *) cur->command + (int) strlen((char *) extPlus) ); +>>> + +\<release script for ext\><<< +while( cur_script != (struct script_struct*) 0 ){ + struct script_struct *temp; + temp = cur_script; cur_script = cur_script->next; free((void *) temp); +} +>>> + + +\<header functions\><<< +static BOOL strpre( ARG_II(char *,char *) ); +>>> + +\<functions\><<< +`[ +static BOOL strpre(s1,s2) + char * s1`; + char * s2 +;{ int i; + for( i=0; i < (int) strlen((char *) s1); i++){ + if( *(s1+i) != *(s2+i) ){ return FALSE; } + } + return TRUE; +} +>>> + + + +\<ext-script\><<< +ext_script +>>> + + + +\<defines\><<< +struct env_c_rec{ + Q_CHAR *option; + struct env_c_rec *next; +}; +>>> + +\<vars\><<< +static struct env_c_rec *envChoice + = (struct env_c_rec*) 0; +>>> + + +\<env blocks selector\><<< +struct env_c_rec *temp = (struct env_c_rec*) + m_alloc(struct env_c_rec, (int) 1); +temp->option = q; +temp->next = envChoice; +envChoice = temp; +>>> + +\<env-skip = skip segment match[1]\><<< +if( envChoice == (struct env_c_rec*) 0 ){ + env_skip = !eq_str(match[1], "default" ); +} else { + struct env_c_rec *p; + env_skip = TRUE; + for( p=envChoice; p!=(struct env_c_rec*) 0 ; p = p->next ){ + if( eq_str(match[1], p->option ) ){ env_skip = FALSE; } +} } +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%% +\Section{post-process files} +%%%%%%%%%%%%%%%%%%%%%%% + + +\<post-process files\><<< +if( `<file-script`> ){ + eoln_ch = (int) 'x'; + while( eoln_ch != EOF ) { + status = scan_str("File: ", TRUE, lg_file); + status = scan_until_str(".", 1, status, lg_file); + status = scan_until_end_str("", 2, status, lg_file); + if( status ){ Q_CHAR *p; + p = match[1]; + (IGNORED) strct( p, match[2] ); + p += strlen((char *) p); + while( *(--p) != '.' ){ ; } + *p = '\0'; p++; + (void) execute_script(file_script, match[1], + p, Xfield? Xfield : "", ""); +} } } +>>> + +\<file-script\><<< +file_script +>>> + +%%%%%%%%%%%%%%%%%%%%%%% +\Section{User Commands} +%%%%%%%%%%%%%%%%%%%%%%% + +\`'l. 10 --- needs --- "ls *" ---' + +\<process user commands\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { Q_CHAR *command, ch; + int n; + struct sys_call_rec *p; + BOOL flag; + status = scan_str("l. ", TRUE, lg_file); + status = scan_until_str(" --- needs --- \"", 1, status, lg_file); + status = scan_until_str("\" ---", 2, status, lg_file); + if( status ){ + command = match[2]; + *(command + (int) strlen((char *) command) - 5) = '\0'; + `<flag = permission for system calls`> + if( flag ){ + `<execute system command`> + } else { (IGNORED) printf( + "No permission for system call: %s\n", command); } +} } +>>> + + +\<env permissions for system calls\><<< +{ struct sys_call_rec *q; + q = m_alloc(struct sys_call_rec, 1); + q->next = system_calls; + q->filter = match[1]; + match[1] = (Q_CHAR *) malloc(70); max_match[1] = 70; + system_calls = q; +if( debug ){ + (IGNORED) printf(".......'S' script: '%s'\n", + q->filter); } +} +>>> + +\<permission for system calls\><<< +{ struct sys_call_rec *q; + q = m_alloc(struct sys_call_rec, 1); + q->next = system_calls; + q->filter = p + 2; + system_calls = q; +} +>>> + + +\<flag = permission for system calls\><<< +flag = FALSE; +p = system_calls; +while( p ){ + if( (n = (int) strlen((char *) p->filter)) == 1 ) { + if( *(p->filter) == '*' ){ + flag = TRUE; break; + } + } + if( strlen((char *) command) >= (unsigned int) n ) { + ch = command[n]; command[n] = '\0'; + flag = flag || eq_str(p->filter,command); + command[n] = ch; + } + p = p->next; +} +>>> + +\<defines\><<< +struct sys_call_rec{ + Q_CHAR * filter; + struct sys_call_rec *next; +}; +>>> + + +\<vars\><<< +static BOOL system_yes; +static struct sys_call_rec *system_calls = (struct sys_call_rec *) 0; +>>> + + + + + + + + +From log files \`'l. # --- needs --- "command" ---' + + + + + + + + + + +%%%%%%%%%%%%% +\Section{CSS} +%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Record HTFCSS Entries from the lg File} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +The htfcss records are stored in the following linked list, and used +when the font entries `Font("key","...","...","...")' are loaded +(Section~'\Link{usehtfcc}{}\Ref{usehtfcc}\EndLink'). + +\<vars\><<< +static struct htf_struct *htf_rec = (struct htf_struct *) 0; +>>> + + +\<defines\><<< +struct htf_struct{ + Q_CHAR *key, *body, *media; + struct htf_struct *next; +}; +>>> + + + + + +\<htfcss from lg\><<< +{ struct htf_struct *last_rec, *p; + last_rec = (struct htf_struct *) 0; + eoln_ch = (int) 'x'; + while( eoln_ch != EOF ) { + status = scan_str("htfcss: ", TRUE, lg_file); + status = scan_until_end_str("", 1, status, lg_file); + `<remove leading spaces`> + if( status ){ Q_CHAR *key, *body, *media; + media = body = key = match[1]; + `<process htfcss line`> + } } +} +>>> + +\<remove leading spaces\><<< +if( status ){ + Q_CHAR *s, *t; + int i; + s = t = match[1]; + for( i=0; *s == ' '; s++ ) { i++; } + if( i>0 ){ + while( *s != 0 ){ + *(t++) = *(s++); + } + *t = 0; +} } +>>> + + +?? How the case `append prev htfcss rec' can be reached ?? + +\<process htfcss line\><<< +while( *body && (*body != ' ') ){ body++; } +if( *body == ' ' ){ media = body; *(body++) = '\0'; } +`<extract media info`> +if( *body ){ + if( *key ){ `<add new htfcss rec`> } +#if 0 /* unreachable */ + else if( last_rec ){ `<append prev htfcss rec`> } +#endif /* 0, unreachable */ +} +>>> + +\<extract media info\><<< +if( (int) strlen((char *) body) > 6 ){ + if( (*(body) == '@') + && (*(body+1) == 'm') + && (*(body+2) == 'e') + && (*(body+3) == 'd') + && (*(body+4) == 'i') + && (*(body+5) == 'a') ) + { + body += 6; + while( *body == ' ' ){ body++; } + media = body; + while( (*body != ' ') && (*body != '\0') ){ body++; } + if( *body == ' ' ){ *(body++) = '\0'; } + while( *body == ' ' ){ body++; } +} } +>>> + +\<add new htfcss rec\><<< +p = m_alloc(struct htf_struct, 1); +p->next = (struct htf_struct *) 0; +p->key = m_alloc(char, (int) strlen((char *) key) + 1); +(IGNORED) strcpy((char *) p->key, (char *) key ); +p->media = m_alloc(char, (int) strlen((char *) media) + 1); +(IGNORED) strcpy((char *) p->media, (char *) media ); +p->body = m_alloc(char, (int) strlen((char *) body) + 1); +(IGNORED) strcpy((char *) p->body, (char *) body ); +if( last_rec ){ + last_rec->next = p; last_rec = p; +} else { + htf_rec = last_rec = p; +} +if( debug ){ + (IGNORED) printf(".......%s...%s...%s\n", key, media, body); +} +>>> + +\<append prev htfcss rec\><<< +last_rec->body = (Q_CHAR *) r_alloc((void *) last_rec->body, + (size_t) strlen((char *) last_rec->body) + + (size_t) strlen((char *) body) + + 2); +(IGNORED) strct(last_rec->body,"\n"); +(IGNORED) strct(last_rec->body,body); +if( debug ){ + (IGNORED) printf(".......%s\n", body); +} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Font-Css-Plus Entries from The lg File} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The command \`'\Configure{htf-css}{cmmi}{font-style: italic;}' +provides in the lg file an entry of the form +\`'Font_Css_Plus cmmi font-style: italic;'. + +\<font=(...) from lg\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_str("Font_Css_Plus ", TRUE, lg_file); + status = scan_until_str(" ", 1, status, lg_file); + status = scan_until_end_str("", 2, status, lg_file); + if( status ){ Q_CHAR *key; + key = match[1]; + *(key + (int) strlen((char *) key) - 1) = '\0'; + `<store font style of lg`> +} } +>>> + + + +\<store font style of lg\><<< +if( (*key != '\0') && (*key != '\n') ) { + struct htf_struct *p; + p = m_alloc(struct htf_struct, 1); + p->next = htf_rec; + htf_rec = p; + p->key = m_alloc(char, (int) strlen((char *) key) + 1); + (IGNORED) strcpy((char *) p->key, (char *) key ); + p->body = m_alloc(char, (int) strlen((char *) match[2]) + 1); + (IGNORED) strcpy((char *) p->body, (char *) match[2] ); + if( debug ){ + (IGNORED) printf(".......%s...%s\n", key, match[2]); +} } +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Imported Css File} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%Css: TD.caption{white-space: nowrap; } +%Font("cmex","10","100") +%Font("cmmi","10","100") +%Font("cmmi","5","100") +%Font("cmmi","7","100") +%Font("cmr","10","100") +%Font("cmr","5","100") +%Font("cmr","7","100") +%Font("cmsy","10","100") +%Font("cmsy","7","100") +%Font("cmti","10","100") +%Font("cmtt","10","100") +%Font_Class(1,""): <IMG SRC=""ALT=""CLASS="%s%s-%d--%x"> +%Font_Class(3,"mva"): <IMG SRC=""ALT=""CLASS="%s-%d--%x"ALIGN="MIDDLE"> +%Font_Class(6,"ul"): <SPAN CLASS="underline"></SPAN> +%Font_Css("sc"): .small-caps{font-variant: small-caps; } +% Font_Css("ul"): .underline{text-decoration:underline; } + + + + +\<process css\><<< +{ + Q_CHAR css_name[255]; + FILE *css_file, *tmp_file; + BOOL css_sty; + `<css-file = open file ...`> + if( css_file ){ + (IGNORED) printf ("Entering %s\n", css_name); + tmp_file = fopen(tmp_name, WRITE_TEXT_FLAGS); + if( !tmp_file ) { + (IGNORED) warn_i_str(5,tmp_name); + } else { `<c: tex4ht.tmp := css file`> } + tmp_file = open_file(tmp_name, ".tmp"); + css_file = fopen(css_name, WRITE_TEXT_FLAGS); + if( !tmp_file ) { + (IGNORED) warn_i_str(5,tmp_name); + } else if( !css_file ) { + (IGNORED) warn_i_str(5,css_name); + } else { + `<c: css file = header of tex4ht.tmp`> + if( css_sty ){ + `<css file = css.sty`> + `<css file = tail of tex4ht.tmp`> + } + } + (IGNORED) fclose(tmp_file); + (IGNORED) fclose(css_file); +} } +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Preliminary Processing of the CSS File} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<c: tex4ht.tmp := css file\><<< + int ch; +while( (ch = getc(css_file)) != EOF ) { + (IGNORED) putc( ch, tmp_file ); +} +(IGNORED) fclose(tmp_file); +(IGNORED) fclose(css_file); +>>> + + +\<css-file = open file ...\><<< +(IGNORED) strcpy((char *) css_name, (char *) job_name); +(IGNORED) strct(css_name, ".css"); +css_file = fopen(css_name, READ_TEXT_FLAGS); +>>> + +\SubSection{Cotributors to the Css File} + +Copy until insertion point: + +\`'/* css.sty */' + +\<c: css file = header of tex4ht.tmp\><<< +css_sty = FALSE; +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_until_end_str("", 1, TRUE, tmp_file); + `<match[2] := compressed match[1]`> + if( eq_str(match[2], "/*css.sty*/") ){ css_sty = TRUE; break; } + (IGNORED) fprintf(css_file, "%s\n", match[1]); +} +>>> + +\<vars\><<< +static BOOL status; +>>> + + + +\<match[2] := compressed match[1]\><<< +{ Q_CHAR *p, *q; + int n; + n = 0; p = match[1]; q = match[2]; + while ( (*p != '\0') ){ + if (n == 13) { *(q-10) = '\0'; break;} + if( *p != ' ' ){ *(q++) = *p; n++; } + p++; + } + *q = '\0'; +} +>>> + +Contribution from lg File + + + +\<css file = css.sty\><<< +(IGNORED) fprintf(css_file, "/* start css.sty */\n"); +`<rewind lg file`> `<Font_css_base: ...`> +`<rewind lg file`> `<process Font_Size: ...`> +`<rewind lg file`> `<process Font(...)`> +`<rewind lg file`> `<process Font_Css(...):...`> +`<rewind lg file`> `<process Css:...`> +(IGNORED) fprintf(css_file, "/* end css.sty */\n"); +>>> + + +The \`'<process Css:...>' should be after the other two's to allow +the user to overide with \''\Css' commands the +other contributions. + + + + +We want to remove the non-leading \`'/* css.sty */', just +in case t4ht.perl is called consequtively more than once. + +\<css file = tail of tex4ht.tmp\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_until_end_str("", 1, TRUE, tmp_file); + `<match[2] := compressed match[1]`> + if( !eq_str(match[2], "/*css.sty*/") ){ + (IGNORED) fprintf(css_file, "%s\n", match[1]); + } +} +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Contributions from /Css Commands} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\`'Css: P.noindent { text-indent: 0em }' + +\<process Css:...\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_str("Css: ", TRUE, lg_file); + status = scan_until_end_str("", 1, status, lg_file); + if( status ){ + (IGNORED) fprintf(css_file, "%s\n", match[1]); +} } +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Contributions From Font-Size} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\`'\Needs{"Font_Size: 12"}' + + + +\<process Font_Size: ...\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_str("Font_Size: ", TRUE, lg_file); + status = scan_until_end_str("", 1, status, lg_file); + if( status ){ + base_font_size = (int) get_long_int(match[1]); +} } +>>> + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Contributions to Fonts} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Link{}{usehtfcc}\EndLink\Tag{usehtfcc}{Contributions to Fonts} + +\`'Font("family_name", "font_size", "design_sz * 100 / 655360 / 10", "mag")' +(e.g., \`'Font("cmr","10","10","100")', +\`'Font("aptmri","8t",??,"100")', +\`'Font("ecti","1095","10","100")') + + + + + + + +\<process Font(...)\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_str("Font(\"", TRUE, lg_file); + status = scan_until_str("\",\"", 1, status, lg_file); + status = scan_until_str("\",\"", 2, status, lg_file); + status = scan_until_str("\",\"", 3, status, lg_file); + status = scan_until_end_str("\")", 4, status, lg_file); + if( status ){ + Q_CHAR *p; + struct htf_struct *font_sty; + int second; + p = match[1]; + *(p + (int) strlen((char *) p) - 3) = '\0'; + p = match[2]; + *(p + (int) strlen((char *) p) - 3) = '\0'; + p = match[3]; + *(p + (int) strlen((char *) p) - 3) = '\0'; + p = match[4]; + *(p + (int) strlen((char *) p) - 2) = '\0'; + `<get font size`> + `<get font style`> +} } +>>> + + + + + +\<get font style\><<< +font_sty = htf_rec; +while ( font_sty ) { + if( eq_str(font_sty->key,match[1]) ){ + if( *(font_sty->media) == '\0' ){ + `<print font style css`> + second = 100; + } else { + `<print media style`> + } + } + font_sty = font_sty->next; +} +if( second != 100 ){ `<print font style css`> } +>>> + + + + +\<get font size\><<< +{ Q_CHAR *p; + second = (int) + ( (int) get_long_int(match[3]) + * (int) get_long_int(match[4]) + / base_font_size + ); + while( second > 700 ){ second /= 10; } + p = match[3]; + while( *p != '\0' ){ + if( (*p < '0') || (*p > '9') ){ second = 100; break; } + p++; + } + `<inspect font-size argument`> +} +>>> + +The following case handles cases like that of \`'Font("ecti","1095","10","100")', where +\Verb=base_font_size= is 11. + +\<inspect font-size argument\><<< +if( (int) ( (double) get_long_int(match[2]) + / (int) get_long_int(match[4]) + + 0.5 + ) + == base_font_size +){ + second = 100; +}; +>>> + + + + + + + + +\<Font_css_base: ...\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_str("Font_css_base: ", TRUE, lg_file); + status = scan_until_str("Font_css_mag: ", 1, status, lg_file); + status = scan_until_end_str("", 2, status, lg_file); + if( status ){ + Font_css_base = match[1]; + *(Font_css_base + (int) strlen((char *) Font_css_base) - 14) = '\0'; + match[1] = (Q_CHAR *) malloc(70); max_match[1] = 70; + Font_css_mag = match[2]; + match[2] = (Q_CHAR *) malloc(70); max_match[2] = 70; +} } +>>> + + + + +\<vars\><<< +static char *Font_css_base = NULL, + *Font_css_mag = NULL; +static int base_font_size = 10; +>>> + + + +\<print font style css\><<< +(IGNORED) fprintf(css_file, + (Font_css_base == NULL)? ".%s-%s" : Font_css_base, + match[1], match[2]); +if( !eq_str(match[4],"100") ){ + (IGNORED) fprintf(css_file, + (Font_css_mag == NULL)? "x-x-%s" : Font_css_mag, + match[4]); +} +(IGNORED) fprintf(css_file, "{"); +if( (second < 98) || (second > 102) ){ + (IGNORED) fprintf(css_file, "font-size:%d%c;", second, '%'); +} +if( font_sty ) { + (IGNORED) fprintf(css_file, "%s", font_sty->body); +} +(IGNORED) fprintf(css_file, "}\n"); +>>> + + +\<print media style\><<< +(IGNORED) fprintf(css_file, "@media %s{", font_sty->media); +(IGNORED) fprintf(css_file, + (Font_css_base == NULL)? ".%s-%s" : Font_css_base, + match[1], match[2]); +if( !eq_str(match[4],"100") ){ + (IGNORED) fprintf(css_file, + (Font_css_mag == NULL)? "x-x-%s" : Font_css_mag, + match[4]); +} +(IGNORED) fprintf(css_file, "{"); +if( font_sty ) { + (IGNORED) fprintf(css_file, "%s", font_sty->body); +} +(IGNORED) fprintf(css_file, "}}\n"); +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Font-Css Contributions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\`'Font_Css("4"): .small-caps{font-variant: small-caps; }' + +\<process Font_Css(...):...\><<< +{ char *font_class [256]; + int last_class; + `<find usage`> + eoln_ch = (int) 'x'; + while( eoln_ch != EOF ) { + status = scan_str("Font_Css(\"", TRUE, lg_file); + status = scan_until_str("\"): ", 1, status, lg_file); + status = scan_until_end_str("", 2, status, lg_file); + if( status ){ int i; + for(i=0; i<last_class; i++){ + if( eq_str(match[1],font_class[i]) ){ + (IGNORED) fprintf(css_file, "%s\n", match[2]); + break; +} } } } } +>>> + + + +\<find usage\><<< +last_class = 0; +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { + status = scan_str("Font_Class(", TRUE, lg_file); + status = scan_until_str(",\"", 1, status, lg_file); + status = scan_until_str("\"): ", 1, status, lg_file); + status = scan_until_end_str("", 2, status, lg_file); + if( status ){ + font_class[last_class++] = match[1]; + match[1] = (Q_CHAR *) malloc(7); max_match[1] = 7; +} } +`<rewind lg file`> +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Section{Load Env File} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Retrieve Info} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<load env file\><<< +{ FILE* file; + U_CHAR env_loc[512]; + env_loc[0] = '\0'; + `<find tex4ht.env`> + if( file ){ + `<get info from env file`> + (IGNORED) fclose(file); +} } +>>> + + +% (IGNORED) printf("Entering %s\n", env_loc[0]? &env_loc[0] +% :"tex4ht.env"); + + + +\<get info from env file\><<< +eoln_ch = (int) 'x'; +while( eoln_ch != EOF ) { Q_CHAR ch; + ch = (char) (eoln_ch = getc(file)); + if( eoln_ch != (int) '\n' ){ + status = scan_until_end_str("", 1, TRUE, file); + if( status ){ + switch( ch ){ + case 'A':{ `<script for chmod`> break;} + case 'C':{ `<script for copy`> break;} + case 'E':{ `<script for empty gifs`> break;} + case 'F':{ `<script for dvigif of glyps`> break;} + case 'G':{ `<script for dvigif`> break;} + case 'M':{ `<script for move`> break;} + case 'S':{ `<env permissions for system calls`> break;} + case 'X':{ `<script for file`> break;} + case '.':{ `<script for file ext`> break;} + case '<':{ `<env selector`> break;} + default:{ } +} } } } +>>> + + + + + +\<script for dvigif of glyps\><<< +if( debug ){ + (IGNORED) printf(".......'F' script\n"); } +dvigif_glyp_script = add_script(dvigif_glyp_script); +>>> + + +\<script for move\><<< +if( debug ){ + (IGNORED) printf(".......'M' script\n"); } +move_script = add_script(move_script); +>>> + + +\<script for copy\><<< +if( debug ){ + (IGNORED) printf(".......'C' script\n"); } +copy_script = add_script(copy_script); +>>> + + + + + +\<script for file\><<< +if( debug ){ + (IGNORED) printf(".......'X' script\n"); } +`<file-script`> = add_script(`<file-script`>); +>>> + +\<script for file ext\><<< +if( debug ){ + (IGNORED) printf(".......'.' script\n"); } +`<ext-script`> = add_script(`<ext-script`>); +>>> + + + + +\<script for chmod\><<< +if( debug ){ + (IGNORED) printf(".......'A' script\n"); } +chmod_script = add_script(chmod_script); +>>> + +\<script for empty gifs\><<< +if( debug ){ + (IGNORED) printf(".......'E' script\n"); } +empty_fig_script = add_script(empty_fig_script); +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Utilities for Retrieving Info} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<env selector\><<< +if( *(match[1]) != '/' ){ + U_CHAR *p; + BOOL env_skip; + for( p = match[1]; + (*p != '>') && (*p != '\n') && (*p != EOF ) ; + p++ ){} + if( *p == '>' ){ *p = '\0'; } + `<env-skip = skip segment match[1]`> + if( env_skip ){ + `<skip env segment`> + } else { + if( debug ){ + (IGNORED) printf("....... <%s>\n", match[1]); + } + } +} else if( debug ){ + (IGNORED) printf("....... <%s\n", match[1]); +} +>>> + +\<skip env segment\><<< + U_CHAR cur_block[90]; +if( debug ){ + (IGNORED) printf("....... <%s> skipping ...\n", match[1]); +} +(IGNORED) strcpy((char *) cur_block, (char *) match[1]); +status = FALSE; +while( !status && (eoln_ch != EOF) ){ + status = scan_str("</", TRUE, file); + status = scan_until_str(">", 1, status, file); + status = scan_until_end_str("", 2, status, file); + if( status ){ + *(match[1] + strlen((char *) match[1]) - 1) = '\0'; + status = eq_str(match[1], cur_block); + if( debug ){ + (IGNORED) printf("....... </%s>\n", match[1]); +} } } +>>> + + + +\<header functions\><<< +static struct script_struct * add_script( ARG_I(struct script_struct *) ); +>>> + +\<functions\><<< +`[ +static struct script_struct * add_script(script) + struct script_struct * script +;{ + struct script_struct* temp, * q; + temp = (struct script_struct *) + m_alloc(struct script_struct, (int) 1); + temp->command = match[1]; + if( debug ){ + (IGNORED) printf("....... %s\n", temp->command); } + temp->next = NULL_SCRIPT; + match[1] = (Q_CHAR *) malloc(70); + max_match[1] = 70; + if( script ){ + q = script; + while( q->next ){ q = q->next; } + q->next = temp; + } else { + script = temp; + } + return script; +} +>>> + + + + + + + + + +\<defines\><<< +struct script_struct{ + Q_CHAR *command; + struct script_struct *next; +}; +>>> + +\<vars\><<< +static struct script_struct + * dvigif_script = NULL_SCRIPT, + * dvigif_glyp_script = NULL_SCRIPT, + * move_script = NULL_SCRIPT, + * empty_fig_script = NULL_SCRIPT, + * copy_script = NULL_SCRIPT, + * `<file-script`> = NULL_SCRIPT, + * `<ext-script`> = NULL_SCRIPT, + * chmod_script = NULL_SCRIPT; +>>> + +\<defines\><<< +#define NULL_SCRIPT (struct script_struct *) 0 +>>> + + + + + + + + +% case 'H':{ `<env-htf-sty = htfcss.env file`> break;} +% +% \<env-htf-sty = htfcss.env file\><<< +% env_htf_sty = match[1]; +% match[1] = (Q_CHAR *) malloc(70); +% max_match[1] = 70; +% if( debug ){ +% (IGNORED) printf(".......'H' script: '%s'\n", +% env_htf_sty); } +% >>> +% +% \<vars\><<< +% static Q_CHAR* env_htf_sty = Q_NULL; +% >>> + + + +\Verbatim +% dvips -mode ibmvga -D 110 -f foo.idv -pp 92 > tmp.ps +% convert -crop 0x0 -density 110x110 -transparent '#FFFFFF' tmp.ps foo.gif +Gdvips -mode ibmvga -D 110 -f %1 -pp %2 > tmp.ps +Gconvert -crop 0x0 -density 110x110 -transparent '#FFFFFF' tmp.ps %3 +% t4ht -d%2 +Mmv %1 %2%3 +Ccp %1 %2%3 +% t4ht -d%2 -m%1 +Achmod %1 %2%3 +H/n/gold/5/gurari/tex4ht.dir/ +\EndVerbatim + + + +\SubSection{Open Directory} + +\<env file at work dir\><<< +if( !file ) { + if( debug ){ + (IGNORED) printf("tex4ht.env?\n"); + } + file = f_open("tex4ht.env", READ_TEXT_FLAGS); + (IGNORED) strcpy((char *) &env_loc[0], "tex4ht.env"); + if( debug && file ){ + (IGNORED) printf(".......Open: ./tex4ht.env\n"); } +} +>>> + +\<find tex4ht.env\><<< +{ Q_CHAR str[512], + *TEX4HTENV; + `<env file from command switch`> + `<env file at work dir`> + `<env file .tex4ht`> + `<TEX4HTENV env`> + `<env file at root dir`> + `<ENVFILE env`> + if( !file ) { `<env file from prog loc`> } + `<kpathsea env file`> + if( !file ) warn_i_str( 5, `<warn 1`>); +} +>>> + + + + + + + + +\<TEX4HTENV env\><<< +if( !file ){ + TEX4HTENV = getenv("TEX4HTENV"); + if( TEX4HTENV ){ + if( debug ){ + (IGNORED) printf("%s?\n", TEX4HTENV); + } + file = f_home_open(TEX4HTENV,READ_TEXT_FLAGS); + } +} +>>> + + + + + + +\<env file .tex4ht\><<< +#ifndef DOS_WIN32 + if( !file ) { + if( debug ){ + (IGNORED) printf(".tex4ht?\n"); + } + file = f_open(".tex4ht", READ_TEXT_FLAGS); + (IGNORED) strcpy((char *) &env_loc[0], ".tex4ht"); + if( debug && file ){ + (IGNORED) printf(".......Open: ./.tex4ht\n"); } + } +#endif +>>> + +\<ENVFILE env\><<< +#ifdef ENVFILE + if( !file ) { + if( debug ){ + (IGNORED) printf("%s?\n", ENVFILE); + } + file = f_home_open( ENVFILE,READ_TEXT_FLAGS); + (IGNORED) strcpy((char *) &env_loc[0], (char *) ENVFILE); + if( debug && file ){ + (IGNORED) printf(".......Open: %s\n", ENVFILE); } + } +#endif +>>> + + + +\<h-defines\><<< +#ifndef ENVFILE + +#endif +>>> + + + +\<warn 1\><<< +#ifdef DOS_WIN32 + "tex4ht.env" +#endif +#ifndef DOS_WIN32 + "tex4ht.env | .tex4ht" +#endif +>>> + + + + +\<kpathsea env file\><<< + +#ifdef KPATHSEA +if( !file ) { U_CHAR * envfile; + char *arch, *p, str[256]; + `<arch = tail of SELFAUTOLOC`> + envfile = (char *) 0; + `<envfile = kpse-find-file architecture/tex4ht.env`> + if ( !envfile ){ `<envfile = kpse-find-file tex4ht.env`> } + if ( !envfile ){ `<envfile = kpathsea tex4ht.env`> } + if ( envfile ){ + file = kpse_open_file (envfile, kpse_program_text_format); + (IGNORED) printf("(%s)\n", envfile); + } + if( debug && file ){ + (IGNORED) printf(".......Open kpathsea %s\n", envfile); + } +} +if( debug ){ + U_CHAR *p, *q; + `<trace T4HTINPUTS`> +} +#endif +>>> + +%%%<-- + +\<arch = tail of SELFAUTOLOC\><<< +p = arch = (char *) kpse_var_value( "SELFAUTOLOC" ); +while( *p != '\0' ){ + if( (*p == '/') || (*p == '\\') ){ + arch = p; + } + p++; +} +>>> + + +\<envfile = kpse-find-file architecture/tex4ht.env\><<< +if( arch ){ + (IGNORED) sprintf(str,"%s%ctex4ht.env", arch+1, *arch); + if( debug ){ + (IGNORED) printf( + "kpse_open_file (\"%s\", kpse_program_text_format)?\n", str ); + } + envfile= kpse_find_file (str, kpse_program_text_format, 0); +} +>>> + + +\<envfile = kpse-find-file tex4ht.env\><<< +if( debug ){ + (IGNORED) printf( + "kpse_open_file (\"tex4ht.env\", kpse_program_text_format)?\n"); +} +envfile= kpse_find_file ("tex4ht.env", kpse_program_text_format, 0); +>>> + + +% if( debug ){ +% (IGNORED) printf( "kpse_open_file (\"tex4ht.env\", ...)?\n"); +% } +% envfile= kpse_find_file ("tex4ht.env", kpse_program_text_format, 0); + + + + + + +\<trace T4HTINPUTS\><<< +p = (U_CHAR *) kpse_var_value( "T4HTINPUTS" ); +if( p ){ + (IGNORED) printf("T4HTINPUTS = %s\n", p); +} +q = getenv("T4HTINPUTS"); +if( q ){ (IGNORED) printf( + "Environmet var T4HTINPUTS: %s\n", q); +} +if( !p && !q ){ + (IGNORED) printf( "Missing T4HTINPUTS for kpathsea\n" ); +} +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{kpathsea vs kpse-find-file} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +The kpathsea utility might succeed where kpse-find-file fails. Maybe due to: +``Kpathsea's subdirectory searching has an + irremediable deficiency: If a directory D being searched for + subdirectories contains plain files and symbolic links to other + directories, but no true subdirectories, D will be considered a + leaf directory, i.e., the symbolic links will not be followed.'' +[\Link[http://www.tug.org/svn/texlive/trunk/Build/source/texk/kpathsea/kpathsea.info?view=markup]{}{}kpathsea.info\EndLink] + + + + +\<envfile = kpathsea tex4ht.env\><<< +if( system("kpsewhich --progname=tex4ht tex4ht.env > tex4ht.tmp") == 0 ){ + `<fileaddr = read tex4ht.tmp`> + envfile= kpse_find_file (fileaddr, kpse_program_text_format, 0); +} +>>> + + + +Don't know how to avoid the use of intermediate file: popen(...) and +fork() are not stadard utilities. Also the redirection \Verb+>+ might +need to be changed, e.g., to \Verb+>&+. + +\<fileaddr = read tex4ht.tmp\><<< +char fileaddr [256]; +int loc = 0; +FILE* file = f_open("tex4ht.tmp", READ_TEXT_FLAGS); +if( file ){ + while( (fileaddr[loc] = getc(file)) >=0 ){ + if( fileaddr[loc] == '\n' ){ fileaddr[loc] = '\0'; break; } + loc++; + } + (IGNORED) fclose(file); +} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Root Directory} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<env file at root dir\><<< +if( !file ){ + if( HOME_DIR ){ (IGNORED) sprintf(str,`<"s/tex4ht.env"`>, HOME_DIR); + if( debug ){ + (IGNORED) printf("%s?\n", str); + } + file = f_open(str,READ_TEXT_FLAGS); + (IGNORED) strcpy((char *) &env_loc[0], (char *) str); + if( debug && file ){ + (IGNORED) printf(".......Open: %s\n", str); } + } +} +#ifndef DOS_WIN32 + if( !file ){ + if( HOME_DIR ){ + (IGNORED) sprintf(str,"%s/.tex4ht", HOME_DIR); + if( debug ){ + (IGNORED) printf("%s?\n", str); + } + file = f_open(str,READ_TEXT_FLAGS); + (IGNORED) strcpy((char *) &env_loc[0], (char *) str); + if( debug && file ){ + (IGNORED) printf(".......Open: %s\n", str); } + } + } +#endif +#if defined(DOS_WIN32) || defined(__MSDOS__) + if( !file ){ + if( debug ){ + (IGNORED) printf("C:/tex4ht.env?\n"); + } + file = f_open("C:/tex4ht.env",READ_TEXT_FLAGS); + (IGNORED) strcpy((char *) &env_loc[0], "C:/tex4ht.env"); + if( debug && file ){ + (IGNORED) printf(".......Open: C:/tex4ht.env\n"); } + } +#endif +>>> + +\<"s/tex4ht.env"\><<< +#if defined(DOS_WIN32) || defined(__DJGPP__) + is_forward_slash(HOME_DIR)? "%s/tex4ht.env" : "%s\\tex4ht.env" +#else + "%s/tex4ht.env" +#endif +>>> + + + + + + + + + + + +\SubSection{Env File from Command Line} + +\<env file from command switch\><<< +if( tex4ht_env_file ){ + if( debug ){ + (IGNORED) printf("%s?\n", tex4ht_env_file); + } + file = f_home_open( tex4ht_env_file, READ_TEXT_FLAGS ); +} else { + file = NULL; +} +if( tex4ht_env_file ){ + (IGNORED) strcpy((char *) &env_loc[0], (char *) tex4ht_env_file); +} +if( debug && file ){ + (IGNORED) printf(".......Open: %s\n", tex4ht_env_file); } +>>> + +\<env file from prog loc\><<< +if( dos_env_file ){ + if( debug ){ + (IGNORED) printf("%s?\n", dos_env_file); + } + file = f_open( dos_env_file, READ_TEXT_FLAGS ) ; + (IGNORED) strcpy((char *) &env_loc[0], (char *) dos_env_file); + if( debug && file ){ + (IGNORED) printf(".......Open: %s\n", dos_env_file); } +} +>>> + + + +Search along the path: command line file $\rightarrow$ work +directory $\rightarrow$ home directory $\rightarrow$ system file. + +\<get .env directory from com ln\><<< +tex4ht_env_file = q; +>>> + +% if( !access(p+2,F_OK) ) tex4ht_env_file = q; +% else warn_i_str(6,q); + + +The function \`'int access(const char *pathname, int mode)', and the mode +\`'F_OK' that tests for the existence of file, are defined in the +following directory. The function returns 0 if ok and -1 on error . + +Where access comes from in dos? + +\<h-include before KPATHSEA\><<< +#ifndef __DJGPP__ +`<h-include near KPATHSEA`> +#endif +>>> + + + +The following is because \`'<unistd.h> +defines F_OK in DJGPP'. + +\<h-include after KPATHSEA\><<< +#ifdef __DJGPP__ +`<h-include near KPATHSEA`> +#endif +>>> + +\<h-include near KPATHSEANO\><<< +#ifndef F_OK +#ifdef DOS_WIN32 +#define F_OK 0 `% does file exist `% +#endif +#ifndef DOS_WIN32 +#define HAVE_UNISTD_H +#endif +#endif +#ifdef HAVE_IO_H +#include <io.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +>>> + +\<h-include near KPATHSEA\><<< +#ifndef F_OK +#ifdef DOS_WIN32 +#define F_OK 0 `% does file exist `% +#endif +#ifndef KPATHSEA +#ifndef DOS_WIN32 +#define HAVE_UNISTD_H +#endif +#endif +#endif +#ifdef HAVE_IO_H +#include <io.h> +#endif +#ifndef KPATHSEA +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#endif +>>> + + + +\SubSection{Env File from Location of t4ht.c} + +\<main's vars\><<< +Q_CHAR * tex4ht_env_file = (Q_CHAR *) 0; +Q_CHAR * dos_env_file = +#if defined(__MSDOS__) + `<get dos env file`>; +#endif +#if !defined(__MSDOS__) + (Q_CHAR *) 0; +#endif + +>>> + + Under DOS, argv[0] usually includes the full path to the program - +even if it wasn't typed in. This can be used to find the program's own +directory, and hence the configuration file. I've implemented this +already as follows: + +\<get dos env file\><<< +get_env_dir(argv[0]) +>>> + +\<functions\><<< +#if defined(__MSDOS__) +`<get tex4ht.env in dos`> +#endif +>>> + +\<get tex4ht.env in dos\><<< +`[ +static char *get_env_dir(progname) + Q_CHAR *progname + +;{ int i; + Q_CHAR *p; + if(! progname || ! *progname) return NULL; `% Safety `% + i = (int) strlen((char *) progname); + while( (progname[--i] != (int) dir_path_slash(progname) ) + && i > 0) ; `%Search for slash`% + if(i == 0) return NULL; `%Not found? Give up`% + p = (Q_CHAR *) malloc(i+12); + if(p == NULL) return NULL; `%Space for new extention after dot`% + strncpy(p, progname, i+1); `%Copy up to slash`% + (IGNORED) strcpy((char *) &p[i+1], + "tex4ht.env"); `%Append new extention`% + return p; +} +>>> + + + + + + +The 12 above is for accomodating \''tex4ht.env'. + + Then, in main(), I changed: + +\`''char* tex4ht_env_file = (Q_CHAR *) 0;' + + to: + +\`'char* tex4ht_env_file = get_env_dir(argv[0]);' + + This works like a charm here, and allows me to use tex4ht from a +different directory without typing a single commandline option. + + + + +\Section{Open Files} + + +\<header functions\><<< +static FILE* f_open( ARG_II(const char*,const char*) ); +>>> + +\<functions\><<< +`[ +static FILE* f_open( name, flags ) + const char* name `; + const char* flags +;{ FILE* file; + if( (file = fopen(name,flags) ) != NULL ) { + (IGNORED) printf("(%s)\n",name); + } + return file; +} +>>> + + + + + +\<header functions\><<< +static FILE* f_home_open( ARG_II(const char*,const char*) ); +>>> + +\<functions\><<< +`[ +static FILE* f_home_open( name, flags ) + const char* name `; + const char* flags +;{ FILE* file; + U_CHAR *str; + if( *name == '~' ){ + if( HOME_DIR ){ + str = m_alloc(char, strlen((char *) HOME_DIR)+strlen(name)); + (IGNORED) sprintf(str,"%s%s", HOME_DIR, name+1); + file = f_open(str,flags); + free((void *) str); + return file; + } else { return NULL; } + } else { return f_open( name, flags ); } +} +>>> + + + + + + +\SubSection{General} + +\<header functions\><<< +static FILE* open_file( ARG_II(const C_CHAR *, const C_CHAR *) ); +>>> + +\<functions\><<< +`[ +static FILE* open_file(name,ext) + const C_CHAR *name`; const C_CHAR *ext +;{ FILE* file; + C_CHAR filename[255], *p; + if( eq_str( ext,LG_EXT ) ) { + (IGNORED) strcpy((char *) filename, (char *) job_name); + (IGNORED) strct(filename, ext); + } else { + (IGNORED) strcpy((char *) filename, name ); + p = filename; + while( TRUE ){ + if( *p == '.' ){ break; } + if( *p == '\0' ){ (IGNORED) strcpy((char *) p, ext); break; } + p++; + } + } + file = fopen(filename, READ_TEXT_FLAGS); + if( !file ) { + (IGNORED) warn_i_str(5,filename); + } else { (IGNORED) printf ("Entering %s\n", filename); } + + return file; +} +>>> + + +We have here a little inconsistency with tex4ht.c. There the input file +name is appended with the extension .dvi, allowing double extensions. +Here, if an extension is present, we remove it before putting .lg on +top of the name. Should we fix that? + + + + +\<defines\><<< +#define LG_EXT ".lg" +>>> + + + + + +% +% \SubSection{htfcss.env} +% +% +% \<file = open htfcss.env\><<< +% if( htf_cfg ){ +% file = open_file(htf_cfg, ".env"); +% } else { C_CHAR filename[255]; +% file = fopen("htfcss.env", READ_TEXT_FLAGS); +% if ( !file && env_htf_sty ){ +% (IGNORED) strcpy((char *) filename, (char *) env_htf_sty); +% (IGNORED) strct(filename, "htfcss.env"); +% file = fopen(filename, READ_TEXT_FLAGS); +% } +% if ( !file ){ +% (IGNORED) strcpy((char *) filename, (char *) HTFDIR ); +% (IGNORED) strct(filename, "htfcss.env"); +% file = fopen(filename, READ_TEXT_FLAGS); +% } +% `<htfcss.env in KPATHSEA`> +% if( !file ) { (IGNORED) warn_i_str(5,"htfcss.env"); } +% else { (IGNORED) printf ("Entering htfcss.env\n"); } +% } +% >>> +% +% + + + +\<mark start lg file\><<< +begin_lg_file = ftell(lg_file); +>>> + +\<rewind lg file\><<< +(IGNORED) fseek(lg_file, begin_lg_file, `<abs file addr`>); +>>> + +\<abs file addr\><<< +0>>> + + + + +\<vars\><<< +static FILE* lg_file; +static long begin_lg_file; +>>> + + + + + +\''open(file, ..._FLAGS)': All +text files should be opened with "r" or "w"; all binary files with "rb" +or "wb". This is the portable way and will work both under Unix and DOS; +as Unix doesn't distinguish between text and binary files, its compilers +will simply ignore the "b" part. + + On the subject of the .lg file: you open the tex4ht.env file in binary +mode ("rb"), which results in strange line endings in the .lg file +(CR/CR/LF). Changing the mode to "r" fixes this. + + +\<t4ht.h\><<< +#if defined(DOS_WIN32) || defined(__MSDOS__) +#define READ_BIN_FLAGS "rb" +#define READ_TEXT_FLAGS "r" +#define WRITE_BIN_FLAGS "wb" +#ifdef WIN32 +#define WRITE_TEXT_FLAGS "wb" +#else +#define WRITE_TEXT_FLAGS "w" +#endif +#else +#define READ_BIN_FLAGS "r" +#define READ_TEXT_FLAGS "r" +#define WRITE_BIN_FLAGS "w" +#define WRITE_TEXT_FLAGS "w" +#endif +>>> + + + +\Verbatim +I've been held up a bit by a +bug in tex4ht.c that caused emTeX to complain that the created .idv file +was corrupt: + +*** Fatal error 2106: corrupt DVI file (postamble not found) + + I found the cause, though: you open it with mode "w", which is text +mode. Changing this to "wb" solved the problem. +\EndVerbatim + + + + + + + + + +\Section{Utilities} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Error and Warning Messages} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<signals messages: 2--4\><<< +"Illegal storage address\n", `%2 segmentation`% +"Floating-point\n", `%3 `% +"Interrupt with Cntr-C\n", `%4 `% +>>> + +\<warn and err messages\><<< +`<command line options`>, `%0`% +"Insufficient memory\n", `%1`% +`<signals messages: 2--4`> +"Can't find/open file ``%s'\n", `%5`% +>>> + + + +\<defines\><<< +#define bad_arg err_arg(0) +#define bad_mem err_i(1) +>>> + + + + + + +\<header functions\><<< +static void err_i( ARG_I(int) ); +>>> + +\<functions\><<< +`[ +static void err_i(n) int n + +;{ (IGNORED) fprintf(stderr,"--- error --- "); + (IGNORED) fprintf(stderr, "%s", warn_err_mssg[n]); + exit(EXIT_FAILURE); +} +>>> + + + +\<header functions\><<< +static void err_arg( ARG_I(int) ); +>>> + +\<functions\><<< +`[ +static void err_arg(n) int n + +;{ (IGNORED) fprintf(stderr,"--- error --- "); + (IGNORED) fprintf(stderr, "%s", warn_err_mssg[n]); + exit(EXIT_FAILURE); +} +>>> + + + + + +\<header functions\><<< +static void warn_i_str( ARG_II(int,const Q_CHAR *) ); +>>> + +\<functions\><<< +`[ +static void warn_i_str(n,str) + int n`; + const Q_CHAR *str + +;{ (IGNORED) fprintf(stderr,"--- warning --- "); + (IGNORED) fprintf(stderr,warn_err_mssg[n], str); +} +>>> + + +% +% \<vars\><<< +% static C_CHAR warning[] = "--- warning --- "; +% >>> + + + + + +\<vars\><<< +static const C_CHAR *warn_err_mssg[]={ `<warn and err messages`> "" }; +>>> + +\<resplit argv for windows\><<< +#ifdef WIN32 + /* See comments in tex4ht */ + if (argc > 2) { + int i, nargc; + char **nargv, **pnargv, **pargv; + + nargv = (char **) xmalloc (2 * argc * sizeof (char *)); + pnargv = nargv; + pargv = argv; + *pnargv++ = xstrdup (*pargv++); + *pnargv++ = xstrdup (*pargv++); + nargc = 2; + + for (i=2; i < argc; i++) { + char *p, *q, *r; + p = q = *pargv++; + while (*p == ' ' || *p == '\t') { + p++; + q++; + } + while (*p != ' ' && *p != '\t' && *p) { + p++; + if (*p == '\0') { + *pnargv++ = xstrdup(q); + nargc++; + } else if (*p == ' ' || *p == '\t') { + r = p; + while (*p == ' ' || *p == '\t') + p++; + if (*p == '-' || *p == '\0') { + *r = '\0'; + *pnargv++ = xstrdup(q); + nargc++; + q = p; + } + } + } + } + + nargv[nargc] = NULL; + argv = nargv; + argc = nargc; + } +#endif +>>> + + + +\SubSection{Signals} + +\<h-include\><<< +#include <signal.h> +>>> + +\<header functions\><<< +static void +`<CDECL`> +sig_err(ARG_I(int)); +>>> + + + + +\<functions\><<< +`[ +static void +`<CDECL`> +sig_err(s) int s +;{ + (void) signal(s,SIG_IGN); `%ignore the signal`% + switch( s ){ +#ifdef SIGSEGV + case SIGSEGV: err_i(2); +#endif + case SIGFPE : err_i(3); +#if defined(SIGINT) && !defined(WIN32) + case SIGINT : err_i(4); +#endif + } + `<DJGPP signals`> +} +>>> + + + + +Forgetting \`'_pascal' and \`'_cdecl' modifiers: Each C function may +be either \`'_pascal' or \`'_cdecl'. This modifier defines how +parameters are passed to it. Default for Smalltalk definition is +\`'_cdecl'. Default for C functions depends on compiler settings, and +you can use other types uncompatible with Smalltalk. In Windows API +16-bit functions are \`'_pascal' and 32-bit \`'_cdecl'. + + + +\<CDECL\><<< +#ifdef CDECL +CDECL +#endif +>>> + + + + +\<set signals\><<< + +#ifdef SIGSEGV + (void) signal(SIGSEGV,sig_err); +#endif + (void) signal(SIGFPE,sig_err); +#ifdef KWIN32 + `<KWIN32 signals`> +#else +#ifdef SIGINT + (void) signal(SIGINT,sig_err); `%Control-c, user interrupt`% +#endif +#endif +>>> + + + +SIGFPE is handled by the C library, SIGSEGV too but not generated by +the system, so it does nothing but is harmless + +SetConsoleCtrlHandler is need to catch Ctrl+C and Ctrl+Break under +Windows, SIGINT is not generated by the system. + +\<KWIN32 signals\><<< +SetConsoleCtrlHandler((PHANDLER_ROUTINE)sigint_handler, TRUE); +>>> + + + +SIGSEGV, SIGILL, SIGTERM not implemented in MS-DOS. They are supplied just for +compatibility. Looks like that SIGINT is defined for windows but not for dos. +\ifHtml[\HPage{more}\Verbatim + Eitan> I also wonder whether the WIN32 really needs to discard the + Eitan> following code fragment. + +signal() is supported through the standard libc, but is mostly +ineffective. An example of the kind of code needed is attached. + + +/* Interrupt handler. mt_exit() is a cleanup_and_exit function */ +#ifdef _WIN32 +BOOL sigint_handler(DWORD dwCtrlType) +{ + mt_exit(3); + return FALSE; /* return value obligatory */ +} +#else +void sigint_handler (int sig) +{ + mt_exit(3); +} +#endif + + /* Catch signals, so we clean up if the child is interrupted. + This emulates "trap 'whatever' 1 2 15". */ +#ifdef _WIN32 + SetConsoleCtrlHandler((PHANDLER_ROUTINE)sigint_handler, TRUE); +#else +# ifdef SIGINT + signal (SIGINT, sigint_handler); +# endif +# ifdef SIGHUP + signal (SIGHUP, sigint_handler); +# endif +# ifdef SIGTERM + signal (SIGTERM, sigint_handler); +# endif +#endif +\EndVerbatim\EndHPage{}]\fi + +Msvc recommends not using printf, but we ignoring this recommendation +here with the assumption that the recommendation relates to I/O +interrupts that are not considered here. + + + + +\<header functions\><<< +#ifdef KWIN32 +static BOOL sigint_handler(ARG_I(DWORD)); +#endif +>>> + +\<functions\><<< +#ifdef KWIN32 +`[ +static BOOL sigint_handler(dwCtrlType) DWORD dwCtrlType +;{ + err_i(32); + return FALSE; `% return value obligatory `% +} +#endif +>>> + + +\SubSection{System Calls} + + + +\<vars\><<< +static Q_CHAR command[255]; +static int system_return; +>>> + + +The library \`'<stdlib.h>' includes a function +\`'int system(const char *cmdstring);'. When cmdstring is NULL, +the return value is 0 iff the platform does not support system calls. + + +\<vars\><<< +static BOOL system_yes; +>>> + +\<main's init\><<< +{ C_CHAR *yes = NULL; + system_yes = (`<system exist?`>); +} +>>> + + +Solaris-? issues the command \`'-c: bad option(s)' if we check for the +presence of the system function. + + + +\<system exist?\><<< +#ifdef SYSTEM_FUNCTION_OK +0 +#else +system( yes ) != 0 +#endif +>>> + +\<execute system command\><<< +(IGNORED) call_sys(command); +>>> + + + + +\<header functions\><<< +static void call_sys(ARG_I(Q_CHAR *)); +>>> + + + + +\<functions\><<< +`[ +static void call_sys(command) Q_CHAR * command +;{ + if( *command ){ + (IGNORED) printf("System call: %s\n", command); + system_return = system_yes? (int) system(command) : -1; + (IGNORED) printf("%sSystem return: %d\n", + system_return? "--- Warning --- " : "", system_return ); + if( always_call_sys ){ system_return = 0; } + } +} +>>> + + +\<vars\><<< +static BOOL always_call_sys = FALSE; +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Strings Concat and compare} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<defines\><<< +#define eq_str(x,y) (!strcmp(x,y)) +>>> + + + +strcat should be in string.h, but c++ doesn't find it there. +We use it just for concatenating an extension of +file name. Should have the interface +\`'char *strcat( ARG_II(C_CHAR *, const Q_CHAR *) );'. + +\<header functions\><<< +static void strct( ARG_II(C_CHAR *, const C_CHAR *) ); +>>> + +\<functions\><<< +`[ +static void strct( str1, str2 ) + C_CHAR * str1`; + const C_CHAR * str2 + +;{ Q_CHAR * ch; + ch = str1 + (int) strlen((char *) str1); + (IGNORED) strcpy((char *) ch, str2 ); +} +>>> + + + +\SubSection{String into Int} + +\<header functions\><<< +static long int get_long_int( ARG_I(Q_CHAR *) ); +>>> + +\<functions\><<< +`[ +static long int get_long_int(str) + Q_CHAR *str +;{ long int i; + Q_CHAR *ch; + ch = str; i = 0; + while( (*ch>= '0') && (*ch <='9') ){ + i = 10*i + *(ch++) - '0'; + } + return i; +} +>>> + + + +\SubSection{Dynamic Memory Alloc} + + +\<defines\><<< +#define m_alloc(typ,n) (typ *) malloc_chk((int) ((n) * sizeof(typ))) +>>> + + + +\<header functions\><<< +static void* malloc_chk(ARG_I(int)); +>>> + +\<functions\><<< +`[ +static void* malloc_chk( n ) int n +;{ void* p; + if((p = (void *) malloc( (size_t) n)) == NULL ) bad_mem; + return p; +} +>>> + + + + + +\<header functions\><<< +static void* r_alloc(ARG_II(void *, size_t)); +>>> + +\<functions\><<< +`[ +static void* r_alloc( q, n ) + void *q`; + size_t n +;{ void* p; + if((p = (void *) realloc( q, (size_t) n)) == NULL) bad_mem; + return p; +} +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{myfseek} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +The ftell() and fseek() are not consistent in ms-windows. The ftell() +accounts for \Verb=<cr>= and \Verb=<lf>= in the byte stream, where +fseek() ignore the <cr> bytes. A \Verb=READ_BIN_FLAGS= instead of +\Verb=READ_TEXT_FLAGS= seems to solve the problem. + +\<CopyTo read flags\><<< +READ_BIN_FLAGS +>>> + +A possible alternative is to define a private fseek. + + + +% +% +% (IGNORED) myfseek(in_file, (long) end_loc, `<abs file addr`>); +% +% +% \<header functions\><<< +% static BOOL scan_str( ARG_III(C_CHAR *, BOOL, FILE *) ); +% >>> +% +% \<functions\><<< +% `[ +% static BOOL scan_str(str,flag,file) +% Q_CHAR *str`; +% BOOL flag`; +% FILE* file +% ;{ Q_CHAR *p; +% +% >>> +% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Pattern Recognition Functions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +When failure (false \''status') arises, the input line is consumed to +its end. +The \''_until' functions place in ''match[i]' the string found. + +\<header functions\><<< +static BOOL scan_until_end_str( ARG_IV(const C_CHAR *, int, BOOL, FILE *) ); +>>> + +\<functions\><<< +`[ +static BOOL scan_until_end_str(str,n,flag,file) + const C_CHAR *str`; + int n`; + BOOL flag`; + FILE* file +;{ Q_CHAR *p; + int i; + if( !flag ) { return flag; } + p = match[n]; i = 0; + while( TRUE ){ + if( (i+1) >= max_match[n] ){ + max_match[n] += 10; + p = match[n] = (Q_CHAR *) + r_alloc((void *) match[n], (size_t) max_match[n]); + } + p[i] = (char) (eoln_ch = getc(file)); + if( (eoln_ch == (int) '\n') || (eoln_ch == EOF) ){ break; } + i++; + } + p[i] = '\0'; + i -= (int) strlen(str); + if( i>= 0 ){ return eq_str(p+i,str); } + return FALSE; +} +>>> + + + +\<vars\><<< +static Q_CHAR* match[10]; +static int max_match[10]; +>>> + + +\<main's init\><<< +{ int i; + for( i=0; i<=9; i++){ + match[i] = (Q_CHAR *) malloc(70); + max_match[i] = 70; + } +} +>>> + + +\<header functions\><<< +static BOOL scan_until_str( ARG_IV(const C_CHAR *, int, BOOL, FILE *) ); +>>> + +\<functions\><<< +`[ +static BOOL scan_until_str(str,n,flag,file) + const C_CHAR *str`; + int n`; + BOOL flag`; + FILE* file +;{ Q_CHAR *p, ch; + int i, j; + if( !flag ) { return flag; } + p = match[n]; i = 0; + while( TRUE ){ + ch = (char) (eoln_ch = getc(file)); + if( (eoln_ch == (int) '\n') || (eoln_ch == EOF) ){ return FALSE; } + if( (i+1) >= max_match[n] ){ + max_match[n] += 10; + p = match[n] = (Q_CHAR *) + r_alloc((void *) match[n], (size_t) max_match[n]); + } + p[i++] = ch; + j = i - (int) strlen(str); + if( j>= 0 ){ + p[i] = '\0'; + if( eq_str(p+j,str) ) { return TRUE; } + } + } +} +>>> + + + + + + +\<header functions\><<< +static BOOL scan_str( ARG_III(const C_CHAR *, BOOL, FILE *) ); +>>> + +\<functions\><<< +`[ +static BOOL scan_str(str,flag,file) + const C_CHAR *str`; + BOOL flag`; + FILE* file +;{ const Q_CHAR *p; + int temp_eoln_ch; + if( !flag ) { return flag; } + p = str; + while( *p != '\0' ){ + if( *(p++) != (temp_eoln_ch = getc(file)) ) { + while( (temp_eoln_ch != (int) '\n') + && (temp_eoln_ch != EOF) ){ temp_eoln_ch = getc(file); } + eoln_ch = temp_eoln_ch; return FALSE; + } + } + return TRUE; +} +>>> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +\SubSection{Shorthands and Mnemonics} + + + +\<defines\><<< +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef BOOL +#define BOOL int +#endif +>>> + + + +\<defines\><<< +#define eq_str(x,y) (!strcmp(x,y)) +>>> + + + +%---------------------------------------------------- + +\OutputCodE\<t4ht.c\> + +\bye + + + diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-tei.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-tei.tex new file mode 100644 index 00000000000..385f8d4e368 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-tei.tex @@ -0,0 +1,1716 @@ +% $Id: tex4ht-tei.tex 768 2020-07-10 13:13:51Z michal_h21 $ +% compile 3 times: latex tex4ht-tei +% or xhlatex tex4ht-tei "html,3,sections+" +% +% Copyright 2009-2019 TeX Users Group +% Copyright 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{tei,tei-mml,tei-mmltei,tei-math} + \def\CONFIG{\jobname} + \def\MAKETITLE{\title{Source for TEI}% + \author{Eitan M. Gurari \& Sebastian Rahtz}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common.tex} +\input{tex4ht-cpright.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{File Organization} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<tei\><<< +% tei.4ht (|version), generated from |jobname.tex +% Copyright 2009-2019 TeX Users Group +% Copyright |CopyYear.2000. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + +\<configure tei tex4ht\><<< +\if:latex |<Hinclude latex|> +\else |<Hinclude plain|> \fi +>>> + +\<configure tei plain\><<< +|<Hinclude plain lib|> +|<Hinclude plain + latex lib|> +>>> + +\<configure tei latex\><<< +|<Hinclude latex lib|> +|<Hinclude plain + latex lib|> +>>> + +\<configure tei Preamble\><<< +\Configure{ext}{xml} +\edef\Preamble{\Preamble,refcaption} +>>> + +\<tei-mml\><<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tei-mml.4ht (|version), generated from |jobname.tex +% Copyright (C) |CopyYear.2000. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + +\<tei-math\><<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tei-math.4ht (|version), generated from |jobname.tex +% Copyright (C) |CopyYear.2000. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + +\<tei-mmltei\><<< +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tei-mmltei.4ht (|version), generated from |jobname.tex +% Copyright (C) |CopyYear.2000. Eitan M. Gurari +|<TeX4ht copywrite|> +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Origin of Hooks} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%% +\section{tex4ht} +%%%%%%%%%%%%%%%%%% + +\<configure tei tex4ht\><<< +|<tex4ht wrapper|> +|<tex4ht paragraphs|> +|<tex4ht cross-linking|> +|<tex4ht math|> +>>> + + + +%%%%%%%%%%%%%%% +\section{latex} +%%%%%%%%%%%%%%% + +\<configure tei latex\><<< +|<special latex environments|> +|<revised TITLE for latex|> +|<latex environments|> +|<latex lists|> +|<latex tables|> +|<latex env|> +|<latex,plain accents|> +|<latex accents|> +|<latex math|> +|<obey lines|> +|<latex etc|> +>>> + + + + +%%%%%%%%%%%%%%% +\section{plain} +%%%%%%%%%%%%%%% + +\<configure tei plain\><<< +|<latex,plain accents|> +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{article, report, book} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<configure tei article\><<< +|<article,report,book utilities|> +|<article,report maketitle|> +|<article sections|> +|<article,report,book lists|> +|<article,report,book figures|> +|<article tocs|> +|<article,report|> +>>> + + +\<configure tei report\><<< +|<article,report,book utilities|> +|<article,report maketitle|> +|<article,report,book lists|> +|<article,report,book figures|> +|<report,book tocs|> +|<article,report|> +>>> + + + +\<configure tei book\><<< +|<article,report,book utilities|> +|<book maketitle|> +|<article,report,book lists|> +|<article,report,book figures|> +|<report,book tocs|> +>>> + + +\<configure tei amsart\><<< +|<sectioning utilities|> +|<article,report maketitle|> +|<ams article,report maketitle|> +|<ams art,proc,book|> +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{TUG Boat/Proc} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<configure tei ltugboat\><<< +\Configure{address} + {\HCode{<byline rend="address">}} + {\HCode{</byline>}} +\Configure{netaddress} + {\HCode{<byline rend="netaddress">}} + {\HCode{</byline>}} +\Configure{PersonalURL} + {\HCode{<byline rend="PersonalURL">}} + {\HCode{</byline>}} +>>> + + +\<configure tei ltugproc\><<< +|<ltugproc maketitle|> +\Configure{thanks author date and}{}{} + {|<tag proc author|>\HCode{<docAuthor>}} + {\HCode{</docAuthor>}} + {\HCode{<docDate>}} {\HCode{</docDate>}} + {\HCode{<!--and-->}} + {} +>>> + +\<tag proc author\><<< +{\Configure{thanks author date and}{}{}{}{}{}{}{}{}% +|<disable latex fonts|>|<proc title @author|>\Tag{)author)}{\@author}}% +>>> + +\<proc title @author\><<< +\count@\authornumber +\@tempcnta0 +\let\:temp\relax +\let\@author\empty +\loop + \ifnum\count@>0 + \advance\@tempcnta by \@ne + \edef\@author{\@author \ifx\@author\empty\else, \fi + \:temp{\number\@tempcnta}}% + \advance\count@ by \m@ne +\repeat +\let\ignorespaces\empty +\let\unskip\empty +\def\:temp##1{\csname theauthor##1\endcsname}% +>>> + + +\<configure tei ltugproc\><<< +\ConfigureEnv{abstract} + {}{} {}{} +\Configure{abstract} + {\bgroup + \HCode{<epigraph rend="abstract"><p>}\IgnoreIndent\par} + {\ifvmode\IgnorePar\fi \EndP\HCode{</p></epigraph>}\egroup} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Configurations} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Front and Back Matter} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\begin{verbatim} +<TEI.2> + <teiHeader> [ TEI Header information ] </teiHeader> + <text> + <front> [ front matter ... ] </front> + <body> [ body of text ... ] </body> + <back> [ back matter ... ] </back> + </text> +</TEI.2> +\end{verbatim} + +The front and back elements are optional. + +\<tex4ht wrapper\><<< +\Configure{HTML} + {\HCode{<TEI.2>}} + {\HCode{</TEI.2>}} +\Configure{HEAD} + {\HCode{<teiHeader type="text" status="new"><fileDesc>}} + {\HCode{</fileDesc>\Hnewline + <revisionDesc><list + type="simple"><item></item></list></revisionDesc>\Hnewline + </teiHeader>}} +\Configure{TITLE} + {\HCode{<titleStmt><title>\Hnewline}} + {} +\Configure{TITLE+} + {\HCode{

        \Hnewline +

        \FileName\space from \jobname.tex + (TeX4ht)

        \Hnewline + }} +>>> + + + +\<<< +\Configure{HTML} + {\HCode{}|} + {\HCode{}} +>>> + + +The \verb++ is for clean-tei.xsl. + + + +\<<< +\Configure{TITLE} + {\HCode{\Hnewline + \ifTag{TITLE+}{\LikeRef{TITLE+}}{}\Hnewline + \ifTag{)author)}{\LikeRef{)author)}}{}\Hnewline + \Hnewline + }} + {}% +>>> + +\<<< +{\Configure{thanks author date and}{}{}{}{}{}{}{}{}% +|\Tag{)author)}{\@author}}% +>>> + + +\<<< +{\Configure{maketitle}{}{}{}{}{}{}{}{}% +|\Tag{TITLE+}{\@title}}% +>>> + +% \let\thanks=\:gobble +% +% \def\TeX{TeX}% +%\def\gobble:font##1##2{##2}\:TITLE: + +\<<< +\let\leavevmode=\empty \let\not@math@alphabet=\:gobbleII +\def\text@command##1{##1}\let\selectfont=\empty \let\\=\empty +\no:fonts \def\check@icl ##1\check@icr{}% +\:TITLE: \a:NoSection +>>> + +\<<< +\Configure{@TITLE}{\def\LaTeX{LaTeX}\let\fontencoding=\:gobble + \let\fontfamily=\:gobble \let\fontseries=\:gobble + \let\fontshape=\:gobble \let\usefont=\:gobbleIV } +>>> + + + + + + + + +\<<< +\Configure{InsertTitle}{\let\label=\lb:l + \let\ref=\o:ref \Configure{ref}{}{}{}} +\Configure{AfterTitle}{\let\index=\:index + \let\ref=\:ref \let\label=\lb:l } +\Configure{NoSection} + {\let\sv:index=\index \let\sv:label=\label \let\sv:ref=\ref + \let\sv:newline=\newline \def\newline{ }% + \let\sv:setfontsize=\@setfontsize \let\@setfontsize=\:gobbleIII + \let\index=\@gobble \let\label=\@gobble \let\ref=\@gobble + } + {\let\index=\sv:index \let\label=\sv:label \let\ref=\sv:ref + \let\newline=\sv:newline \let\@setfontsize=\sv:setfontsize + } +>>> + + + +\<<< +\Configure{maketitle} + {|\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} +\Configure{thanks author date and}{}{} + {|\HCode{}} + {\HCode{}} + {\HCode{}} {\HCode{}} + {\HCode{}} + {} +>>> + +\<<< +\Configure{maketitle} + {|\HCode{}} + {\HCode{}} + {\HCode{}} + {\HCode{}} +\Configure{thanks author date and}{}{} + {|\HCode{}} + {\HCode{}} + {\HCode{}} {\HCode{}} + {\HCode{}} + {} +>>> + + +\<<< +\Configure{BODY} + {\ifTag{TITLE+}% + {\HCode{}\PushStack\text:stack{front}}% + {\HCode{}\PushStack\text:stack{body}\ShowPar + \csname par\endcsname}% + } + {\IgnorePar\EndP \PopStack\text:stack\:temp \def\:tempa{front}% + \HCode{\ifx\:temp\:tempa

        \fi
        }} +>>> + +\<<< +\Configure{authors} + {\HCode{}} {\HCode{}} +\Configure{setdate} + {\HCode{}} {\HCode{}} +\Configure{thanks author date and}{}{} + {|\HCode{}} + {\HCode{}} + {\HCode{}} {\HCode{}} + {\HCode{}} + {} +>>> + + + + +\<<< +\Configure{maketitle} + {|\HCode{}% + \bgroup \Configure{centerline} + {\HCode{}} + {\HCode{}} + } + {\egroup \HCode{}} + {\HCode{}} + {\HCode{}} +>>> + +%%%%%%%%%%%%%%%%%% +\subsection{DTD's} +%%%%%%%%%%%%%%%%%% + + + + + +\<<< +\Configure{PROLOG}{VERSION,DOCTYPE,*XML-STYLESHEET} +\:CheckOption{no-DOCTYPE} \if:Option + \Configure{PROLOG}{VERSION,*XML-STYLESHEET} +\fi +>>> + + + +\<<< +\Configure{VERSION} + {\HCode{\Hnewline}} +\Configure{VERSION} + {\HCode{\Hnewline}} +\Configure{DOCTYPE} + {\HCode{]>}} +>>> + +\<<< +\Configure{VERSION} + {\HCode{\Hnewline}} +\Configure{VERSION} + {\HCode{\Hnewline}} +\Configure{DOCTYPE} + {\HCode{]>\Hnewline}} +>>> + +\<<< +\Configure{VERSION} + {\HCode{\Hnewline}} +\Configure{VERSION} + {\HCode{\Hnewline}} +\Configure{DOCTYPE} + {\HCode{ >\Hnewline}} +>>> + + +\<<< +|% +}\writesixteen{--- file \jobname.ent ---}\HCode{% +|% +>>> + +\<<< +|% +|% +|% +>>> + + +\<<< +SYSTEM "teimml.dtd" [\Hnewline} +|\HCode{% +] +>>> + +\<<< +\Hnewline +>>> + +% \Hnewline + +\<<< +"\Hnewline + "teixlite.dtd"> +\Hnewline \%TEI.dtd; \Hnewline +>>> + +\<<< +"\Hnewline\space\space + "mathml2.dtd"> + \Hnewline \%mathml.dtd;\Hnewline +>>> + + +\<<< +\HCode{}% +>>> + +\<<< + + \Hnewline \%ENT-\jobname.ent; \Hnewline +>>> + + + +\<<< +\bgroup + \def\toctei##1##2##3{\HCode{##2\Hnewline}}% + \no:catcodes{34}{36}{12}\no:catcodes{94}{95}{12}\catcode`\~=12 + \Configure{tableofcontents} {} {} {}{}{}% + \:TableOfContents[tei]% +\egroup +>>> + + + +Instead of \verb=SYSTEM= earlier we had +\verb=PUBLIC\Hnewline "-//TEI U5-1995//DTD TEI Lite 1.0 Extensions//|"\Hnewline=. + + +\<<< +\let\:NOTATIONs=\empty +\def\Decl#1{\edef\:NOTATIONs{\:NOTATIONs#1\Hnewline}} +>>> + + +\<<< +\def\Decl#1{\edef\:temp{\the\:tokwrite{\string\doTocEntry + \string\toc tei{}{#1}{}}}\:temp +} +>>> + +\
        <<< + \def\Decl##1{{\everypar{}% + \ht:special{t4ht>\jobname.ent}\hbox{\HCode{##1\Hnewline}}% + \ht:special{t4ht>\FileName}}} + \Decl{\:NOTATIONs}\let\:NOTATIONs=\:UnDef +>>> + + +\begin{verbatim} +> oh yes. I copied the entity declaration into a comment after , +> because xsl has no access to the document subset... + +Consider this: + + + +" +"teixlite.dtd"> +%TEI.dtd; + +%ENT-1-3.ent; + " + "mathml2.dtd"> +%mathml.dtd; +]> + + +the entities are read in from an external file via the %ENT-1-3.ent; +unfortunately such parameter entities do not have to be expanded by +XML processors, so the file can not get read. xmltex is an example of +a system which fails to do so... + +we need to textually include the entity file, not reference it. +\end{verbatim} + + +\<<< +\HAssign\ent:cnt = 0 +\Configure{Preamble} + {} + {{\ifdim \lastskip>\z@ \unskip\fi + \IgnorePar\parindent\z@ \leavevmode}% + |
        % + } +| +>>> + + +\<<< +\Configure{Preamble} + {} + {{\ifdim \lastskip>\z@ \unskip\fi + \IgnorePar\parindent\z@ \leavevmode}% + } +| +>>> + +%%%%%%%%%%%%%%%%%%%% +\section{Css} +%%%%%%%%%%%%%%%%%%%% + +The following code has been copied from tex4ht-docbook.tex. It provides basic +support for writing to the CSS file produced by tex4ht. + +\<<< +| +\Configure{Preamble} + {|} {} +\Configure{CssFile}{\jobname.css} + {/* \aa:CssFile\space from \jobname.tex (TeX4ht) */} +\Configure{Needs}{l. + \the\inputlineno\space--- needs --- #1 ---} +\Configure{Needs-}{l. + \the\inputlineno\space--- needs --- #1 ---} +>>> + +\<<< +{\ifdim \lastskip>\z@ \unskip\fi \IgnorePar\parindent\z@ +\leavevmode}% +\immediate\write-1{--- file \aa:CssFile\space ---}% +\ht:special{t4ht>\aa:CssFile}\ht:special{t4ht=\Hnewline /* css.sty */}% +\ht:special{t4ht<\aa:CssFile}% +>>> + + +\<<< +\ScriptCommand{\CssFile}{% + \immediate\write-1{--- file \aa:CssFile\space ---}% + \def\FontSize##1##2{\:Context{##1}\ht:special{t4ht;\%##2}\%}% + \def\FontName##1{\:Context{##1}\ht:special{t4ht;=}}% + \def\:Context##1{\ht:special{t4ht>\jobname.tmp}##1\ht:special + {t4ht>\aa:CssFile}}% + \ht:special{t4ht>\jobname.tmp}\ht:special{t4ht>\aa:CssFile}\bb:CssFile + \hfil\break\NoFonts}{\EndNoFonts + \ht:special{t4ht<\aa:CssFile}\ht:special{t4ht<\jobname.tmp}} +\let\Css:File|=\CssFile +\def\CssFile{\futurelet\:temp\Css:Fl} +\def\Css:Fl{\ifx [\:temp \expandafter\Css:fl + \else \expand:after{\Css:File \space}\fi} +\def\Css:fl[#1]{\Css:File\space \css:files #1,,|} +\def\css:files#1,#2|{\def\:temp{#1}\ifx \:temp\empty + \else \def\:temp{\in:css#1.|\css:files#2,,|}\fi + \:temp } +\def\in:css#1.#2|{\def\:temp{#2}\ifx \:temp\empty \input #1.css + \else \inc:ss#1.#2|\fi} +\def\inc:ss#1.|{\input #1 } +\NewConfigure{CssFile}[2]{\def\aa:CssFile{#1}\def\bb:CssFile{#2}} +>>> + + + +\<<< +\def\Css#1{{\def\:temp{\Configure{Needs}}% + \expandafter\:temp\expandafter{\aa:Css}\Needs{#1}}} + +\expandafter\ifx \csname aa:Css\endcsname\relax + \Configure{Css}{Css: ##1} +\fi +>>> + +%%%%%%%%%%%%%%%%%% +\section{HTF} +%%%%%%%%%%%%%%%%%% + +Basic support for HTF fonts. I am not sure if this method is the best, +there seems to be no direct equivalent to HTML class and corresponding CSS. + +\<<< +\Configure{htf}{0}{+}{}{} +\Configure{htf}{4}{+}{}{}{}{}{}{}{} +\Configure{htf}{6}{+}{}{}{}{}{}{}{} +\Configure{htf}{8}{+}{}{}{}{}{}{}{} +\Configure{htf}{10}{+}{}{}{}{}{}{}{} +\Configure{htf}{12}{+}{}{}{}{}{}{}{} +\Configure{htf}{14}{+}{}{}{}{}{}{}{} +\Configure{htf}{16}{+}{}{}{}{}{}{}{} +\Configure{htf}{18}{+}{}{}{}{}{}{}{} +\Configure{htf}{20}{+}{}{}{}{}{}{}{} +\Configure{htf}{22}{+}{}{}{}{}{}{}{} +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Sections} +%%%%%%%%%%%%%%%%%% + +\
        <<< +\Configure{part} + {\OpenDiv{part}} {\CloseDiv{part}} + {\HCode{}} {\CloseHead} +\Configure{section} + {\OpenDiv{section}} {\CloseDiv{section}} + {\HCode{}} {\CloseHead} +\Configure{subsection} + {\OpenDiv{subsection}} {\CloseDiv{subsection}} + {\HCode{}} {\CloseHead} +\Configure{subsubsection} + {\OpenDiv{subsubsection}} {\CloseDiv{subsubsection}} + {\HCode{}} {\CloseHead} +\Configure{paragraph} + {\OpenDiv{paragraph}} {\CloseDiv{paragraph}} + {\HCode{}} {\CloseHead} +\Configure{subparagraph} + {\OpenDiv{subparagraph}} {\CloseDiv{subparagraph}} + {\HCode{}} {\CloseHead} +>>> + + + + +\
        <<< +\Configure{likepart} + {\OpenDiv{likepart}} {\CloseDiv{likepart}} + {\HCode{}} {\CloseHead} +\Configure{likesection} + {\OpenDiv{likesection}} {\CloseDiv{likesection}} + {\HCode{}} {\CloseHead} +\Configure{likesubsection} + {\OpenDiv{likesubsection}} {\CloseDiv{likesubsection}} + {\HCode{}} {\CloseHead} +\Configure{likesubsubsection} + {\OpenDiv{likesubsubsection}} {\CloseDiv{likesubsubsection}} + {\HCode{}} {\CloseHead} +\Configure{likeparagraph} + {\OpenDiv{likeparagraph}} {\CloseDiv{likeparagraph}} + {\HCode{}} {\CloseHead} +\Configure{likesubparagraph} + {\OpenDiv{likesubparagraph}} {\CloseDiv{likesubparagraph}} + {\HCode{}} {\CloseHead} +>>> + + + +\<<< +|
        +>>> + + +%\let\contentsname|=\empty + +\
        <<< +\Configure{tableofcontents} + {\ifvmode\IgnorePar\fi \EndP + \HCode{}} + {} {}{}{} +>>> + + + +\<<< +|
        +\ConfigureToc{appendix}{}{}{}{} +\ConfigureToc{chapter}{}{}{}{} +\ConfigureToc{likechapter}{}{}{}{} +>>> + +\
        <<< +\ConfigureToc{likeparagraph}{}{}{}{} +\ConfigureToc{likepart}{}{}{}{} +\ConfigureToc{likesection}{}{}{}{} +\ConfigureToc{likesubparagraph}{}{}{}{} +\ConfigureToc{likesubsection}{}{}{}{} +\ConfigureToc{likesubsubsection}{}{}{}{} +\ConfigureToc{paragraph}{}{}{}{} +\ConfigureToc{part}{}{}{}{} +\ConfigureToc{section}{}{}{}{} +\ConfigureToc{subparagraph}{}{}{}{} +\ConfigureToc{subsection}{}{}{}{} +\ConfigureToc{subsubsection}{}{}{}{} +>>> + + + + + + + +\<<< +\Configure{TocEntry}{\Link{#2}{#3}#4\EndLink} +>>> + + + +\
        <<< +\Configure{tableofcontents} + {\HCode{}} + {\HCode{}} + {}{}{} +>>> + + +\<<< +|
        +\ConfigureToc{appendix} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +\ConfigureToc{chapter} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +\ConfigureToc{likechapter} + {} {\HCode{\Hnewline}} + {} {\HCode{}} +>>> + +\
        <<< +\ConfigureToc{likeparagraph} + {} {\HCode{\Hnewline}} + {} {\HCode{}} +\ConfigureToc{likepart} + {} {\HCode{\Hnewline}} + {} {\HCode{}} +\ConfigureToc{likesection} + {} {\HCode{\Hnewline}} + {} {\HCode{}} +\ConfigureToc{likesubparagraph} + {} {\HCode{\Hnewline}} + {} {\HCode{}} +\ConfigureToc{likesubsection} + {} {\HCode{\Hnewline}} + {} {\HCode{}} +\ConfigureToc{likesubsubsection} + {} {\HCode{\Hnewline}} + {} {\HCode{}} +\ConfigureToc{paragraph} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +\ConfigureToc{part} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +\ConfigureToc{section} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +\ConfigureToc{subparagraph} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +\ConfigureToc{subsection} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +\ConfigureToc{subsubsection} + {\HCode{\Hnewline}} + {\ }{} {\HCode{}} +>>> + + + + + + + + + + + +\subsection{Mapping Utilities} + + +\begin{verbatim} + \section{...} + + + ............................. + + \subsection{...} + + ............................. + + ............................. + + \section{...} + + ............................. + +\end{verbatim} + + + + + + + + + + +\<<< +| +>>> + +\<<< +\HAssign\DivLevel=0 +\HAssign\DivCount=0 +\def\OpenDiv#1{% + \IgnorePar\EndP \PopStack\text:stack\:temp \def\:tempa{body}% + \ifx \:temp\:tempa \else \HCode{}\fi + \PushStack\text:stack{body}% + |% + \gHAdvance\DivLevel by 1 + \HCode{}\gHAdvance\P:level by 1 } +\def\CloseDiv#1{% + \IgnorePar\EndP \gHAdvance\P:level by -1 \HCode{
        }% + \gHAdvance\DivLevel by -1 +} +\def\CloseHead{\HCode{}% + |\ShowPar\par} +>>> + + +\<<< +\ifnum \DivLevel>0 \ifnum \DivLevel=0\LikeRef{dv)\DivCount}\relax + \gHAdvance\P:level by 1 + \HCode{}% +\fi\fi +>>> + +\<<< +\gHAdvance\DivCount by 1 +\Tag{dv)\DivCount}{\DivLevel}% +\HAdvance\DivLevel by 1 +\HAdvance\DivCount by 1 +\ifnum \DivLevel=0\LikeRef{dv)\DivCount}\relax + \HCode{

        }% + \gHAdvance\P:level by 1 +\fi +\HAdvance\DivLevel by -1 +\HAdvance\DivCount by -1 +>>> + + +The \verb+

        + is to ensure at least one paragaph in the preamble, e.g., +between the section heads of +\begin{verbatim} +................. +\section{Distributions}% +\subsection{Definitions} +............... +\end{verbatim} + + +\<<< +\gHAssign\P:level=0 +>>> + + + + + + + + + + + + + +\subsection{End Points} + +\
        <<< +\Configure{endsection} + {likesection,chapter,likechapter,appendix,part,likepart} +\Configure{endlikesection} + {section,chapter,likechapter,appendix,part,likepart} +\Configure{endsubsection} + {likesubsection,section,likesection,chapter,% + likechapter,appendix,part,likpart} +\Configure{endlikesubsection} + {subsection,section,likesection,chapter,% + likechapter,appendix,part,likpart} +\Configure{endsubsubsection} + {likesubsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikesubsubsection} + {subsubsection,subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endparagraph} + {likeparagraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikeparagraph} + {paragraph,subsubsection,likesubsubsection,subsection,% + likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endsubparagraph} + {likesubparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\Configure{endlikesubparagraph} + {subparagraph,likeparagraph,subsubsection,likesubsubsection,% + subsection,likesubsection,section,% + likesection,chapter,likechapter,appendix,part,likpart} +\ifx \part\:UnDef \else + \Configure{endpart}{likepart} + \Configure{endlikepart}{endpart} +\fi +>>> + + + + + +%%%%%%%%%%%%%%% +\section{Lists} +%%%%%%%%%%%%%%% + + +\<<< +\ConfigureList{trivlist}% + {\EndP\HCode{}\let\end:itm=\empty} + {\EndP\HCode{}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg}\HCode{}} +\ConfigureList{list}% + {\EndP\HCode{}\let\end:itm=\empty} + {\EndP\HCode{}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg}\HCode{}} +\ConfigureList{itemize}% + {\EndP\HCode{}\let\end:itm=\empty} + {\EndP\HCode{}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg}\DeleteMark} + {\HCode{}} +\ConfigureList{enumerate}% + {\EndP\HCode{}\let\end:itm=\empty} + {\EndP\HCode{}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg}\DeleteMark} + {\HCode{}\AnchorLabel} +>>> + + +\<<< +\ConfigureList{thebibliography}% + {\IgnorePar\EndP + \HCode{
        }\let\en:bib=\empty} + {\en:bib\HCode{
        }} + {\en:bib\def\en:bib{\HCode{}}% + \HCode{}} +>>> + + +\<<< +\Configure{HtmlPar} + {\HCode{}} + {\HCode{}} + {} {} +>>> + + + + + +\<<< +\Configure{cite}{}{}{\Link}{\EndLink} +\Configure{bibitem}{\Link}{\EndLink} +>>> + + + +%%%%%%%%%%%%%%%% +\section{Tables} +%%%%%%%%%%%%%%%% + + +\<<< +\Configure{tabular} + {||% + \HCode{ >}} + {\HCode{}% + |} + {|\HCode{}} + {\HCode{}} + {|% + \HCode{}} + {\HCode{}} +\HAssign\tabularN=0 +>>> + +\<<< +\gHAdvance\tabularN by 1 \PushStack\tabular:N\tabularN +\let\prevR:max=\R:max \let\prevC:max=\C:max \gHAssign\C:max=0 +>>> + +\<<< +\PopStack\tabular:N\i:var |% +\Tag{rc-\i:var}{rend="|" rows="\R:max" cols="\C:max"} +\global\let\R:max=\prevR:max \global\let\C:max=\prevC:max +>>> + + + +\<<< +\expandafter\tmp:toks\expandafter{\Clr}% +>>> + +\<<< +\the\tmp:toks +>>> + + + + + +\<<< +\HAssign\i:var=\HCol \HAdvance\i:var by \HMultispan +\HAdvance\i:var by -1 \ifnum \C:max<\i:var \gHAssign\C:max=\i:var \fi +>>> + +\<<< +\gHAssign\R:max=\HRow +>>> + +\<<< +\expandafter\ifx \csname cw:rc-\tabularN\endcsname \relax + \tmp:toks{ }% +\else + \expandafter\expandafter\expandafter\tmp:toks + \expandafter\expandafter\expandafter{\csname + cw:rc-\tabularN\endcsname}% +\fi +>>> + +\<<< +\the\tmp:toks +>>> + +\<<< +\Configure{hline}{} +\Configure{//[]}{} +>>> + + +\<<< +\Configure{verb}{}{} +\Configure{obeylines} + {\ifvmode \EndP + \HCode{
        }% + \gdef\ob:ln{div}% + \else \HCode{}% + \gdef\ob:ln{emph}% + \fi + } + {\ht:special{t4ht=}\ShowPar} {\hbox{\HCode{
        }}} +>>> + + +\<<< +\ifx \deferred@thm@head\:UnDef\else + \Configure{newtheorem} + {\par\HCode{}\IgnorePar\par} + {\HCode{}} + {} +\fi +>>> + + + + +%%%%%%%%%%%%%%%%% +\section{Figures} +%%%%%%%%%%%%%%%%% + +\<<< +\ConfigureEnv{figure} + {\ifvmode \IgnorePar\fi\EndP \HCode{}} + {\ifvmode \IgnorePar\fi\EndP \HCode{}} + {}{} +\Configure{caption} + {}{} + {\HCode{}} {\HCode{}} +>>> + + +%%%%%%%%%%%%%%%%% +\section{Accents} +%%%%%%%%%%%%%%%%% + + +\<<< +\Configure{centerline} + {\ifvmode \IgnorePar \fi \EndP\HCode{

        }} + {\EndP\HCode{

        }\ShowPar} +\Configure{leftline} + {\ifvmode \IgnorePar \fi \EndP\HCode{

        }} + {\EndP\HCode{

        }\ShowPar} +\Configure{rightline} + {\ifvmode \IgnorePar \fi \EndP\HCode{

        }} + {\EndP\HCode{

        }\ShowPar} +>>> + + +%%%%%%%%%%%%%%%%% +\section{Accents} +%%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{new-accents} \if:Option + | +\else + | +\fi +\let\^^_=\v +>>> + + +\<<< +\let\@acci=\' \let\@accii=\` \let\@acciii=\= +>>> + +\<<< +\:CheckOption{accent-} \if:Option + \Configure{HAccent}\acute{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\bar{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\breve{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\check{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\ddot{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\dot{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\grave{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\hat{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\tilde{AOaoNn{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\vec{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widehat{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\widetilde{}{\Picture+{}}{\EndPicture} +\fi +\:CheckOption{mathaccent-} \if:Option + \Configure{HAccent}\"{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\'{AEIOUYaeiouy{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\.{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\={}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\H{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\^{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\`{AEIOUaeiou{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\b{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\c{Cc{}}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\d{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\t{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\u{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\v{}{\Picture+{}}{\EndPicture} + \Configure{HAccent}\~{AOaoNn{}}{\Picture+{}}{\EndPicture} +\fi +>>> + + +\<<< +\Configure{accent}{*} + {} + {} +\Configure{mathaccent}{*} + {} + {} +\Configure{accented}{*} + {} + {} +\Configure{accenting}{*} + {} + {} +>>> + + + + +\<<< +\Configure{accent}\`\grave{A{A}E{E}I{I}O{O}U{U}% + a{a}e{e}i{i}\i{i}o{o}u{u}{}{}} + {\a:accents{grave}{#1}} {\b:accents{grave}{#1}{#2}} +\Configure{accent}\'\acute{A{A}E{E}I{I}O{O}U{U}Y% + {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}{}{}} + {\a:accents{acute}{#1}} {\b:accents{acute}{#1}{#2}} +\Configure{accent}\^\hat{A{A}E{E}I{I}O{O}U{U}a{a}% + e{e}i{i}\i{i}o{o}u{u}{}{}} + {\a:accents{circ}{#1}} {\b:accents{hat}{#1}{#2}} +\Configure{accent}\~\tilde{A{A}O{O}a{a}o{o}N{N}n{n}{}{}} + {\a:accents{tilde}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\"\ddot{A{A}E{E}I{I}O{O}U{U}Y% + {Y}a{a}e{e}i{i}\i{i}o{o}u{u}y{y}{}{34}} + {\a:accents{uml}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + + + + +The following are also placed under accents configuration. + +\<<< +\Configure{accent}\c\c{C{C}c{c}{}{}} + {\a:accents{cedil}{#1}} {\b:accents{cedil}{#1}{#2}} +\Configure{accent}\t\t{{}{}} + {\a:accents{udot}{#1}} {\b:accents{udot}{#1}{#2}} +\Configure{accent}\H\H{{}{}} {}{\b:accents{Huml}{#1}{#2}} +>>> + +The following originally have been defined to be parameter-less. + + + +\<<< +\Configure{accent}\.\dot{{}{}} {}{\b:accents{dot}{#1}{#2}} +\Configure{accent}\u\breve{{}{}}{}{\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}}{}{\b:accents{vec}{#1}{#2}} +\Configure{accent}\v\check{{}{}}{}{\b:accents{check}{#1}{#2}} +\Configure{accent}\=\bar{{}{}} {}{\b:accents{bar}{#1}{#2}} +>>> + + +% \= macron + +\<<< +\Configure{accent}\widetilde\widetilde{{}{}} + {}{\b:accents{widetilde}{#1}{#2}} +\Configure{accent}\widehat\widehat{{}{}} + {}{\b:accents{widehat}{#1}{#2}} +>>> + + +\verb'\vec', \verb'\widetilde', and \verb'\widehat' are for math mode. +\verb'\b', \verb'\c', \verb'\d', \verb'\t', and \verb'\H' are for text mode. + + + + +\<<< +| +>>> + +\<<< +| +>>> + +\<<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|% + \ht:special{t4ht@[}#2\ht:special{t4ht@]}}} + {\ifmmode \expandafter\mathord\fi + {\HCode{}#3\HCode{}}} +\fi +>>> + + + +\<<< +\HCode{&\#x\expandafter \ifx\csname U#2#1\endcsname\relax + #2#1\else \csname U#2#1\endcsname\fi;}% +>>> + + +%\HCode{#1;}% + +%%%%%%%%%%%%%%%%%%%% +\section{Math} +%%%%%%%%%%%%%%%%%%%% + + + + +\<<< +\Configure{equation} + {} {\HCode{}} {\HCode{}} +\ConfigureEnv{equation} + {\IgnorePar\EndP + \HCode{

        }} + {\HCode{

        }\ShowPar\par} + {}{} +>>> + +\<<< +\Configure{$$} + {\Configure{@math}{display="block"}\DviMath} + {\EndDviMath{\csname HCondtrue\endcsname\noindent}}{} +\Configure{DviMath} + {\mathmltrue \NoFonts\IgnoreRule\HCode{}\a:math + |\IgnorePar} + {\HCode{}\EndIgnoreRule\EndNoFonts + |\mathmlfalse} +\def\:rend#1=#2=#3//{\if !#1!\else rend=#2\fi} +\def\m:rend#1=#2=#3//{\if !#1!\else display=#2\fi} +>>> + +\<<< +\sv:ignore +>>> + +\<<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + + +\<<< +\ConfigureEnv{gather} + {\ShowPar\par} {\ShowPar\par} + {}{} +>>> + + + + + + +\<<< +\ConfigureEnv{align*} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi} {}{} +\ConfigureEnv{alignat*} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{alignat} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{align} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{eqxample} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{flalign*} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{flalign} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{gather} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{gather*} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{gathered} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{matrix} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{xalignat*} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{xalignat} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +\ConfigureEnv{xxalignat} + {\ifmmode\else \IgnorePar\EndP \HCode{}\fi} + {\ifmmode\else \HCode{}\par\ShowPar\fi}{}{} +>>> + + + + + +%%%%%%%%%%%%%%%%%%%% +\section{Loose Ends} +%%%%%%%%%%%%%%%%%%%% + + + + + +\<<< +\ConfigureEnv{verbatim} + {\ifinner\else \vfill\break\fi + \IgnorePar\EndP\HCode{

        }\EndNoFonts} + {\NoFonts \ht:special{t4ht=

        }\ShowPar\par} + {} {} +\ConfigureEnv{verbatim*} + {\ifinner\else \vfill\break\fi + \IgnorePar\EndP\HCode{

        }\EndNoFonts} + {\NoFonts \HCode{

        }\ShowPar\par} + {} {} +\Configure{verbatim}{\:nbsp}{\a:sp} +>>> + + +\<<< +\ConfigureEnv{flushleft} + {\IgnorePar\EndP\HCode{

        }% + \gHAdvance\P:level by 1 } + {\IgnorePar\EndP\gHAdvance\P:level by -1 \HCode{
        }} + {}{} +\ConfigureEnv{flushright} + {\IgnorePar\EndP\HCode{
        }% + \gHAdvance\P:level by 1 } + {\IgnorePar\EndP\gHAdvance\P:level by -1 \HCode{
        }} + {}{} +\ConfigureList{flushleft} + {}{} + {} {\par\ShowPar} +\ConfigureList{flushright} + {}{} + {} {\par\ShowPar} +>>> + + +\<<< +\ConfigureEnv{abstract} + {\IgnorePar\EndP\HCode{
        }% + \gHAdvance\P:level by 1 } + {\IgnorePar\EndP\gHAdvance\P:level by -1 \HCode{
        }} + {\HCode{}} + {\HCode{}} +>>> + + +\<<< +\newif\ifHCond +\Configure{HtmlPar} + {\EndP\HCode{% + \ifnum\P:level=0
        \fi +

        }\gHAdvance\P:level by 1 } + {\EndP\HCode{% + \ifnum\P:level=0

        \fi +

        }\gHAdvance\P:level by 1 } + {\gHAdvance\P:level by -1 \HCode{

        \ifnum\P:level=0
        \fi }} + {\gHAdvance\P:level by -1 \HCode{

        \ifnum\P:level=0
        \fi }} +>>> + + + + + + +\<<< +\Configure{newline}{\HCode{}} +>>> + +\<<< +\Configure{newline} + {\ifmtext \HCode{}% + \else \HCode{}\fi} +>>> + + + +\<<< +\ConfigureEnv{minipage} + {\IgnorePar\EndP\HCode{}} + {\IgnorePar\EndP\HCode{}\ShowPar} + {}{} +\Configure{newtheorem} + {\IgnorePar\EndP\HCode{}} + {\HCode{}\ShowPar\par} + {\IgnorePar\EndP\HCode{}\ShowPar\par} +>>> + + + + +\<<< +\ifx \deferred@thm@head\:UnDef\else + | +\fi +>>> + +\<<< +| +>>> + +\<<< +\Configure{proof} + {\IgnorePar\EndP\HCode{}} + {\HCode{}\ShowPar\par} + {\IgnorePar\EndP\HCode{}\ShowPar\par} +>>> + + + + +\<<< +\Configure{Link}{ref}{ target=}{ id=}{\empty} +>>> + +\<<< +\Decl{} +\Configure{url}{% + \urlLink[xr-ent\ent:cnt]{}{}#1\EndurlLink + \Decl{}% + \gHAdvance\ent:cnt by 1 +} +\LinkCommand\urlLink{xref,doc} +>>> + + xr-ent has to be a notation-type entity to fit with TEI's demand + of `\verb+doc ENTITY #IMPLIED+'. For instance, + +\begin{verbatim} + + +\end{verbatim} + +% \Decl{} +% \Decl{} + + +\<<< +\def\:tempc#1{% + \Configure{graphics*} + {#1} + {\HCode{
        }% + \Decl{}% + \gHAdvance\ent:cnt by 1 + }} +| +>>> + + +\<<< +\def\:tempc#1{% + \Decl{} + \Configure{graphics*} + {#1} + {\HCode{
        % + }% + \Decl{}% + \gHAdvance\ent:cnt by 1 + }} +| +>>> + +\<<< +\:tempc{eps} +\:tempc{jpg} +\:tempc{pdf} +\:tempc{png} +\:tempc{tif} +\:tempc{gif} +>>> + + +\<<< +\Configure{mathit}{\ifmathml\else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} +\Configure{mathbf}{\ifmathml\else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} +\Configure{mathtt}{\ifmathml\else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} +\Configure{mathsf}{\ifmathml\else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} +\Configure{mathrm}{\ifmathml\else \HCode{}\fi} + {\ifmathml\else \HCode{}\fi} +>>> + +\<<< +\Configure{textbf}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +\Configure{textit}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +\Configure{textrm}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +\Configure{textup}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +\Configure{textsc}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +\Configure{textsf}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +\Configure{textsl}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +\Configure{texttt}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +\Configure{emph}{\ifmathml\else + |\HCode{}\fi} + {\ifmathml\else + \HCode{}|\fi} +>>> + + + +\<<< +\leavevmode\SaveEndP\bgroup +\Configure{HtmlPar} + {\HCode{}} + {\HCode{}} + {}{}% +>>> + +\<<< +\egroup \RecallEndP +>>> + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-unicode.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-unicode.tex new file mode 100644 index 00000000000..4f87c827e00 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-unicode.tex @@ -0,0 +1,1258 @@ +% $Id: tex4ht-unicode.tex 912 2021-04-25 12:43:36Z michal_h21 $ +% latex tex4ht-unicode or xhlatex tex4ht-unicode "html,3,sections+" +% +% Copyright 2009-2021 TeX Users Group +% Copyright 1998-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\ifx \HTML\UnDef + \def\HTML{unicode} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common.tex} +\input{common-code.tex} +\input{tex4ht-cpright.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Needs{"ls -l tex4ht-*.tex > ls-links.log"} +\openin15=ls-links.log +\ifeof15 \else \closein15 +\bgroup + \catcode`\-=13 + \def-#1tex4ht-{\bgroup \catcode`\-=12 + \def-##1.tex{\egroup + [\Link[tex4ht\string-##1.html]{}{}##1\EndLink]} + -} + \input ls\string-links.log +\egroup +\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +\Link[http://www.hclrss.demon.co.uk/unicode/]{}{}Alan Wood's Unicode Resources\EndLink + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{General} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\Link[http://lists.w3.org/Archives/Public/www-math/]{}{}mailing list\EndLink + +\section{Unicode Values} + +See also +\Link[http://www.unicode.org/Public/UNIDATA/NamesList.txt]{}{}unicode alias names\EndLink + +\<<< +\def\UAacute{00C1} +\def\UCacute{0106} +\def\UDacute{010E} +\def\UEacute{00C9} +\def\UGacute{01F4} +\def\UIacute{00CD} +\def\ULacute{0139} +\def\UNacute{0147} +\def\UOacute{00D3} +\def\URacute{0154} +\def\USacute{015A} +\def\UUacute{00DA} +\def\UYacute{00DD} +\def\UZacute{0179} +\def\Uacute{00B4} +\def\Uaacute{00E1} +\def\Ucacute{0107} +\def\Udacute{010F} +\def\Ueacute{00E9} +\def\Ugacute{01F5} +\def\Uiacute{00ED} +\def\Ulacute{013A} +\def\Unacute{0144} +\def\Uoacute{00F3} +\def\Uracute{0155} +\def\Usacute{015B} +\def\Uuacute{00FA} +\def\Uyacute{00FD} +\def\Uzacute{017A} +\def\Ujacute{FFFD} +\def\UJacute{FFDD} + + +\def\UAbar{0100} +\def\UCbar{FFFD} +\def\UDbar{FFFD} +\def\UEbar{0112} +\def\UIbar{012A} +\def\ULbar{FFFD} +\def\UNbar{FFFD} +\def\UObar{014C} +\def\URbar{FFFD} +\def\USbar{FFFD} +\def\UTbar{FFFD} +\def\UUbar{016A} +\def\UYbar{FFFD} +\def\UZbar{FFFD} +\def\Uabar{0101} +\def\Ubar{00A7} +\def\Ucbar{FFFD} +\def\Uebar{0113} +\def\Uibar{012B} +\def\Unbar{FFFD} +\def\Uobar{014D} +\def\Urbar{FFFD} +\def\Uubar{016B} +\def\Uybar{FFFD} +\def\Ubreve{02D8} + +\def\UCcheck{010C} +\def\UEcheck{011A} +\def\URcheck{0158} +\def\UScheck{0160} +\def\UTcheck{0164} +\def\UZcheck{017D} +\def\Uccheck{010D} +\def\Ucheck{02C7} +\def\Uecheck{011B} +\def\Uncheck{0148} +\def\Uocheck{00F4} +\def\Uscheck{0161} +\def\Uucheck{0159} +\def\Uzcheck{017E} + +\def\UAddot{00C4} +\def\UOddot{00D6} +\def\UUddot{00DC} +\def\Uaddot{00E4} +\def\Uddot{00A8} +\def\Uoddot{00F6} +\def\Uuddot{00FC} + +\def\UUodot{016E} + +\def\UAgrave{00C0} +\def\Uagrave{00E0} +\def\Ugrave{0060} + +\def\UOhat{00D4} + +\def\Utilde{0098} + +\def\UAuml{00C4} +\def\UEuml{00CB} +\def\UIuml{00CF} +\def\UOuml{00D6} +\def\UUuml{00DC} +\def\UYuml{0178} +\def\Uauml{00E4} +\def\Ueuml{00EB} +\def\Uiuml{00EF} +\def\Uouml{00F6} +\def\Uuml{00A8} +\def\Uuuml{00FC} +\def\Uyuml{00FF} +>>> + + +\section{Odd Ends} + +\<<< +xmlns="http://www.w3.org/1999/xhtml" +>>> + + + + + +\subsection{TeX Engine} + +The \verb'\trap:base' is to catch empty bases of exponents like, e.g., +in \verb'$a^{^b}$'. + + + + + + + +\<<< +\def\MathRow#1{% + \Configure{\expandafter\:gobble\string#1*}{*}% + {<|.mrow\Hnewline + class="\expandafter\:gobble\string#1">}{}% + {\Configure{\expandafter\:gobble\string#1}{}{}{}{}}#1}% +>>> + + +\<<< +\sv:ignore +>>> + +\<<< +\edef\sv:ignore{\if:nopar + \noexpand\IgnorePar\else \noexpand\ShowPar\fi}% +>>> + + +The \verb'\MathRow' requests a \verb'<|.mrow\Hnewline>...', instead of the contributions +of \verb'\mathop', \verb'\mathrel',...., for the next parameter. + + + + + +\subsection{latex.ltx} + + + + + + + + + + + + + +\section{Unicode} + + +\<<< +% unicode.4ht (|version), generated from |jobname.tex +% Copyright 2009-2021 TeX Users Group +% Copyright |CopyYear.1998. Eitan M. Gurari +| +>>> + + +\<<< +| +| +| +| +| +\def\:nbsp{\ifx\EndPicture\:UnDef\protect\leavevmode\ht:special{t4ht@+\string&{35}x00A0{59}}\a:HChar\else\leavevmode\nobreak\ \fi} +>>> + +\<<< +| +| +| +| +| +>>> + +\<<< +\ifx \mathdisplay@@pop\:UnDef + \ifx \emdf@La\:UnDef + | + \else + | + \fi +\else + | +\fi +\:CheckOption{new-accents} \if:Option \else + | +\fi +>>> + +\<<< +| +>>> + + + +\<<< +\def\:tempc{\arrowfill@ \relax \relax \rightarrow} +\HLet\rightarrowfill@\:tempc +\def\:tempc{\arrowfill@ \leftarrow \relax \relax} +\HLet\leftarrowfill@\:tempc +\def\:tempc{\arrowfill@ \relax \relax {\mathchar"3224}} +\HLet\leftrightarrowfill@\:tempc +>>> + +\<<< +\HLet\:tempc\rightarrowfill@ +\pend:defI\:tempc{\bgroup \let\relbar=\relax} +\append:defI\:tempc{\egroup} +\HLet\rightarrowfill@\:tempc +\let\:tempc\leftarrowfill@ +\pend:defI\:tempc{\bgroup \let\relbar=\relax} +\append:defI\:tempc{\egroup} +\HLet\leftarrowfill@\:tempc +\def\:tempc#1{\bgroup + \let \relbar =\relax \m@th + \setboxz@h {$#1\relax $}\ht \z@ \z@ $#1\mathord {\mathchar"3224}% + \mkern -6mu\cleaders \hbox {$#1\mkern -2mu\copy \z@ \mkern -2mu$}\hfill + \mkern -6mu\box \z@ $\egroup} +\HLet\leftrightarrowfill@\:tempc +>>> + + +\<<< +\Configure{accent}\dddot\dddot{{}{}} + {\a:accents{}{#1}} {\b:accents{dddot}{#1}{#2}} +\Configure{accent}\ddddot\ddddot{{}{}} + {\a:accents{}{#1}} {\b:accents{ddddot}{#1}{#2}} +\def\:dddot:over{\mathord{\HCode{...}}} +\def\:ddddot:over{\mathord{\HCode{....}}} +>>> + + +Three ways to apply \verb+ddots{x}+: + +\begin{verbatim} + + x + ¨ + +, + , + +\end{verbatim} + + + + \<<< + | +>>> + + + \<<< + | +\ifx \EnditemitemList\:UnDef + | +\fi +>>> + +\<<< +\Configure{itemitem}{}{}{\par\leavevmode}{} +>>> + + \<<< + | +>>> + + +Used to have also a \verb'\special{t4ht@[}...\special{t4ht@]}', +where the specials asked to igore the enclosed +content. It is provided for getting `realistic' measurements in mathml +applets. a candidadte for delition. + +\<<< + +% This will be redefined in mathml.4ht to produce a better markup +\def\unicode:mathop#1{\mathop{#1}} + +\:CheckOption{new-accents} \if:Option \else + | + \ifx \mathml:on\:UnDef + \Configure{accents} + {\ifmmode \expandafter\mathord\fi + {|% + \ht:special{t4ht@[}x\ht:special{t4ht@]}}} + {\ifmmode \expandafter\mathord\fi + {\HCode{}#3\HCode{}}} + \else + \:warning{unicode.4ht loaded after mathml.4ht} + \fi + \expand:after{\Configure{accent}}\csname OT1\string\b\endcsname + \b{|{}{}} + {\a:accents{}{#1}} {\b:accents{b}{#1}{#2}} + \def\:vec:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{2192}}} + \def\:grave:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{0060}}} + \def\:acute:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00B4}}} + \def\:hat:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{005E}}} + \def\:widehat:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{005E}}} + \def\:tilde:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{007E}}} + \def\:widetilde:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{007E}}} + \def\:bar:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00AF}}} + \def\:breve:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02D8}}} + \def\:dot:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02D9}}} + \def\:ddot:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00A8}}} + \def\:uml:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00A8}}} + \def\:ring:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02DA}}} + \def\:Huml:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02DD}}} + \def\:check:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02C7}}} + \def\:d:under{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{02D9}}} + \def\:cedil:under{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00B8}}} + \def\:b:under{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{00AF}}} + \def\:udot:over{\ifmmode\expandafter\unicode:mathop\fi{\x:unicode{0361}}} % inverted breve exists only as combined character +\fi +>>> + + +\<<< +\Configure{AA}{\ifmmode \expandafter\mathord\fi + {\x:unicode{212B}}} |%angstrom|% +>>> + +\<<< +\:CheckOption{new-accents} \if:Option \else + | + \expand:after{\Configure{accent}}\csname T1\string\b\expandafter\endcsname + \csname T1\string\b\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{b}{#1}{#2}} +\fi +>>> + + + + + + +\<<< +\leavevmode +\if !#1!\ht:special{t4ht@+&\#x#2;}% +\else \expandafter \ifx\csname U#2#1\endcsname\relax + \ht:special{t4ht@+&{35}x#2;}% +\else + \ht:special{t4ht@+&{35}x\csname U#2#1\endcsname;}% +\fi \fi x% +>>> + +The special replaces the `x' character. + +% {\ht:special{t4ht@+\string#1;}#2} +\section{Configured Symbols} + + + + +\<<< +\Configure{L} {\x:unicode{0141}} +\Configure{l} {\x:unicode{0142}} +>>> + +\<<< +\Configure{Longrightarrow} {\x:unicode{21D2}} +\Configure{bowtie} {\x:unicode{22C8}} +\Configure{doteq} {\x:unicode{2250}} +\Configure{cong} {\x:unicode{2245}} +\Configure{ddots} {\x:unicode{22F1}} +\Configure{hookleftarrow} {\x:unicode{21A9}} +\Configure{hookrightarrow} {\x:unicode{21AA}} +\Configure{longleftarrow} {\x:unicode{2190}} +\Configure{longleftrightarrow} {\x:unicode{2194}} +\Configure{Longleftrightarrow} {\x:unicode{21D4}} +\Configure{longmapsto} {\x:unicode{21A6}} +\Configure{longrightarrow} {\x:unicode{2192}} +\Configure{mid} {\x:unicode{2223}} +\Configure{models} {\x:unicode{22A7}} +\Configure{mapsto} {\x:unicode{21A6}} +\Configure{neq} {\x:unicode{2260}} +\Configure{notin} {\x:unicode{2209}} +\Configure{vdots} {\x:unicode{22EE}} +\Configure{angle} {\x:unicode{2220}} +\Configure{rightleftharpoons} {\x:unicode{21CC}} +\Configure{leftrightharpoons} {\x:unicode{21CB}} +>>> + +\<<< +\Configure{longleftarrow} {\x:unicode{2190}} +\Configure{longrightarrow} {\x:unicode{2192}} +>>> + + +\<<< +>>> + + + +\<<< +\Configure{cdots} {\x:unicode{22EF}} +\Configure{ldots} {\x:unicode{2026}} +>>> + +\<<< +\Configure{mathellipsis} {\textellipsis} +\Configure{cdots} {\x:unicode{22EF}} +\Configure{hbar} {\x:unicode{210F}} +| +>>> + + +\<<< +\Configure{@cdots} {\x:unicode{22EF}} +\Configure{iint} {\x:unicode{222C}} +\Configure{iiint} {\x:unicode{222D}} +\Configure{iiiint} {\iint\iint} +\Configure{idotsint} {\int\cdots\int} +\Configure{doteq} {\x:unicode{2250}} +| +>>> + + + +\<<< +\Configure{qedsymbol}{\x:unicode{25A1}} +>>> + +\<<< +\Configure{qedsymbol}{\x:unicode{25A1}} +>>> + + +\<<< +| +>>> + + +\<<< +\Configure{dotsc} {\x:unicode{2026}} +\Configure{dotso} {\x:unicode{2026}} +>>> + + + + +\<<< +\Configure{REV@lesssim }{\x:unicode{2272}} +\Configure{REV@gtrsim }{\x:unicode{2273}} +\Configure{openone }{\x:unicode{1D7D9}} +\Configure{altsuccsim }{\x:unicode{227F}} +\Configure{altprecsim }{\x:unicode{227E}} +\Configure{corresponds }{\x:unicode{225C}} +>>> + + +\section{Accents} + + +\<<< +A{00C1}C{0106}D{010E}E{00C9}G{01F4}I{00CD}L{0139}N{0143}% +O{00D3}R{0154}S{015A}U{00DA}Y{00DD}Z{0179}a{00E1}c{0107}% +d{010F}e{00E9}g{01F5}i{00ED}l{013A}n{0144}o{00F3}r{0155}% +s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}% +>>> + + +\<<< +o{0151}O{0150}U{0170}u{0171}% +>>> + + + + +\<<< +A{00C0}E{00C8}I{00CC}N{01F8}O{00D2}U{00D9}W{1E80}% +Y{1EF2}a{00E0}e{00E8}i{00EC}n{01F9}o{00F2}u{00F9}% +w{1E81}y{1EF3}\i{00EC}% +>>> + +\<<< +A{00C2}E{00CA}I{00CE}O{00D4}U{00DB}a{00E2}e{00EA}% +i{00EE}o{00F4}u{00FB}C{0108}c{0109}G{011C}g{011D}% +H{0124}h{0125}J{0134}j{0135}S{015C}s{015D}W{0174}% +w{0175}Y{0176}y{0177}Z{1E90}z{1E91}\i{00EE}\j{0135}% +>>> + +\<<< +A{00C3}N{00D1}O{00D5}a{00E3}n{00F1}o{00F5}I{0128}% +i{0129}U{0168}u{0169}V{1E7C}v{1E7D}E{1EBC}e{1EBD}% +Y{1EF8}y{1EF9}\i{0129}% +>>> + + +\<<< +H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}% +t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}% +a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}% +Y{0178}\i{00EF}% +>>> + +\<<< +K{0136}k{0137}L{013B}l{013C}N{0145}n{0146}% +R{0156}r{0157}S{015E}s{015F}T{0162}t{0163}% +E{0228}e{0229}D{1E10}d{1E11}H{1E28}h{1E29}% +C{00C7}c{00E7}G{0122}g{0123}% +>>> + +\<<< +C{010A}c{010B}E{0116}e{0117}G{0120}g{0121}% +I{0130}Z{017B}z{017C}A{0226}a{0227}O{022E}% +o{022F}B{1E02}b{1E03}D{1E0A}d{1E0B}F{1E1E}% +f{1E1F}H{1E22}h{1E23}M{1E40}m{1E41}N{1E44}% +n{1E45}P{1E56}p{1E57}R{1E58}r{1E59}S{1E60}% +s{1E61}T{1E6A}t{1E6B}W{1E86}w{1E87}X{1E8A}% +x{1E8B}Y{1E8E}y{1E8F}% +>>> + +\<<< +g{011F}I{012C}i{012D}O{014E}o{014F}% +U{016C}u{016D}A{0102}a{0103}E{0114}% +e{0115}G{011E}\i{012D}% +>>> + + +\<<< +C{010C}c{010D}D{010E}d{010F}% +E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}% +S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}% +i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}% +j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}% +>>> + + + +\<<< +A{0100}a{0101}E{0112}% +e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}% +y{0233}G{1E20}g{1E21}% +>>> + +\<<< +A{00C5}a{00E5}U{016E}u{016F}% +>>> + +\<<< +A{1EA0}a{1Ea1}B{1E04}b{1E05}D{1E0C}d{1E0D}% +E{1EB8}e{1EB9}H{1E24}h{1E25}I{1ECA}i{1ECB}% +K{1E32}k{1E33}L{1E36}l{1E37}M{1E42}m{1E43}% +N{1E46}n{1E47}O{1ECC}o{1ECD}R{1E5A}r{1E5B}% +S{1E62}s{1E63}T{1E6C}t{1E6D}U{1EE4}u{1EE5}% +V{1E7E}v{1E7F}W{1E88}w{1E89}Y{1EF4}y{1EF5}% +>>> + + +\<<< +B{1E06}b{1E07}% +D{1E0E}d{1E0F}K{1E34}k{1E35}L{1E3A}l{1E3B}N{1E48}n{1E49}% +R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}% +>>> + + +\<<< +\expand:after{\Configure{accent}}\csname OT1\string\`\endcsname + \grave{|{}{}} + {\a:accents{}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname + \acute{|{}{}} + {\a:accents{}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\^\endcsname + \hat{|{}{}} + {\a:accents{}{#1}} {\b:accents{hat}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\~\endcsname + \tilde{|{}{}} + {\a:accents{}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\ddot\ddot{|{}{34}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\"\expandafter + \endcsname + \csname OT1\string\"\endcsname{|{}{34}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\r\endcsname + \mathring{|{}{}} + {\a:accents{}{#1}} {\b:accents{ring}{#1}{#2}} +>>> + +\<<< +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\d\endcsname}% + \csname OT1\string\d\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + + + + + +\<<< +\expand:after{\Configure{accent}}\csname T1\string\`\expandafter\endcsname + \csname T1\string\`\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{grave}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\'\expandafter\endcsname + \csname T1\string\'\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{acute}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\^\expandafter\endcsname + \csname T1\string\^\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{hat}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\~\expandafter\endcsname + \csname T1\string\~\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{tilde}{#1}{#2}} +\Configure{accent}\ddot\ddot{|{}{34}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\"\expandafter + \endcsname + \csname T1\string\"\endcsname{|{}{34}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\r\endcsname + \mathring{|{}{}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +>>> + + +\<<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\d\endcsname}% + \csname T1\string\d\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{d}{#1}{#2}} +>>> + + +The following are also placed under accents configuration. + +\<<< +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\c\endcsname}% + \csname OT1\string\c\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\t\endcsname}% + \csname OT1\string\t\endcsname{c{22C5}{}{}} + {\a:accents{}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname OT1\string\H\endcsname}% + \csname OT1\string\H\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{Huml}{#1}{#2}} +>>> + + +\<<< +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\c\endcsname}% + \csname T1\string\c\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{cedil}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\t\endcsname}% + \csname T1\string\t\endcsname{c{22C5}{}{}} + {\a:accents{}{#1}} {\b:accents{udot}{#1}{#2}} +\expand:after{\expand:after{\Configure{accent}}% + \csname T1\string\H\endcsname}% + \csname T1\string\H\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{Huml}{#1}{#2}} +>>> + +% + + + + + + + + +The following originally have been defined to be parameter-less. + +\<<< +\Configure{accent}\dot\dot{|{}{}} + {\a:accents{}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\.\expandafter + \endcsname + \csname OT1\string\.\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\u\endcsname + \breve{|{}{}} + {\a:accents{}{#1}} {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}} + {\a:accents{}{#1}} {\b:accents{vec}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\v\endcsname + \check{|{}{}} + {\a:accents{}{#1}} {\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname OT1\string\=\endcsname + \bar{|{}{}} + {\a:accents{}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + + +\<<< +\expand:after{\Configure{accent}}\csname T1\string\.\expandafter\endcsname + \csname T1\string\.\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{dot}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\u\expandafter\endcsname + \csname T1\string\u\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{breve}{#1}{#2}} +\Configure{accent}\vec\vec{{}{}} + {\a:accents{}{#1}} {\b:accents{vec}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\v\expandafter\endcsname + \csname T1\string\v\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{check}{#1}{#2}} +\expand:after{\Configure{accent}}\csname T1\string\=\expandafter\endcsname + \csname T1\string\=\endcsname{|{}{}} + {\a:accents{}{#1}} {\b:accents{bar}{#1}{#2}} +>>> + + + + + +%%%%%%%%%%%%%%%%%% +\section{Odd Ends} +%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{degree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + + + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + +\<<< +\Configure{textdegree}{{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x}} +>>> + + + +%%%%%%%%%%%%% +\subsection{Sistyle} +%%%%%%%%%%%%% + + +\<<< +\Configure{degC}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}xC} +\Configure{degF}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}xF} +\Configure{arcdeg}{\leavevmode\ht:special{t4ht@+&{35}x00B0;}x} +\Configure{arcmin}{\leavevmode\ht:special{t4ht@+&{35}x2032;}x} +\Configure{arcsec}{\leavevmode\ht:special{t4ht@+&{35}x2033;}x} +\Configure{ohm}{\leavevmode\ht:special{t4ht@+&{35}x2126;}x} +\Configure{micro}{\leavevmode\ht:special{t4ht@+&{35}x00B5;}x} +\Configure{angstrom}{\leavevmode\ht:special{t4ht@+&{35}x212B;}x} +>>> + + +\<<< +!*?: >>> + + +\<<< + cw:>>> + +\<<< +tail>>> + +\<<< +\xdef\:cursec{|
        }% +>>> + + +\<<< +\expandafter\edef\csname :RestoreCatcodes\endcsname{% + \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else + \csname :RestoreCatcodes\endcsname \fi + \catcode`\noexpand :|=\the\catcode`:% + \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname|= + \noexpand\UnDefcS} +\catcode`\:|=11 +>>> + + + +\verb+\#+ instead of \verb+\HChar{35}+ is problematic +when sent to aux file as \verb+#+. + +We had also \verb'\append:def\@begindocumenthook{\HLet\"|=\ddot}' in +babel. It gets russian and brazil into infinite loop. Why it was +inserted. + +\`'\def\x:unicode#1{\HCode{&}\HChar{-35}\HCode{x#1;}}' is not a slution +because the mathml marking on it get confused. + +We use \`'\protect' with LaTeX, because compilation can fail in temporary files, +especially in TOC like environments. + + +\<<< +\ifdefined\protect% +\def\x:unicode#1{\protect\leavevmode\ht:special{t4ht@+\string&{35}x#1{59}}x} +\else +\def\x:unicode#1{\leavevmode\ht:special{t4ht@+\string&{35}x#1{59}}x} +\fi + +\Configure{htf}{12}{+} + {}{}{}{}{}{}{} +>>> + + + + + + +%%%%%%%%%%%%%%%%%%%%% +\section{babel.sty} +%%%%%%%%%%%%%%%%%%%%% + +\<<< +\Configure{quotedblbase}{\x:unicode{201E}} +\Configure{quotesinglbase}{\x:unicode{201A}} +>>> + + +\<<< +\:CheckOption{new-accents}\if:Option\else +\Configure{accent}\bbl@umlauta + \bbl@umlaute{|{}{34}} + {\a:accents{}{#1}} {\b:accents{uml}{#1}{#2}} +\fi +>>> + + +\<<< +\expand:after{\Configure{accent}}\csname OT1\string\"\endcsname + \ddot{} + {\a:accents{|}{#1}} + {\def\:temp{>}\def\:tempa{#2}\ifx \:temp\:tempa\HCode{»}% + \else \def\:temp{<}\ifx \:temp\:tempa\HCode{«}% + \else \b:accents{uml}{#1}{#2}\fi\fi} +>>> + +\<<< +A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}Y{0178}% +a{00E4}e{00EB}i{00EF}\i{00EF}o{00F6}u{00FC}y{00FF}% +>>> + + + + + + +\<<< +\expand:after{\Configure{accent}}\csname OT1\string\'\endcsname + \acute{|{}{}} + {\a:accents{}{#1}} {\b:accents{acute}{#1}{#2}} +>>> + +\<<< +|% +{\@use@text@encoding \@curr@enc a}{03AC}% +{\@use@text@encoding \@curr@enc e}{03AD}% +{\@use@text@encoding \@curr@enc h}{03AE}% +{\@use@text@encoding \@curr@enc i}{03AF}% +{\@use@text@encoding \@curr@enc o}{03CC}% +{\@use@text@encoding \@curr@enc u}{03CD}% +{\@use@text@encoding \@curr@enc w}{03CE}% +>>> + + + + +\subsection{Questions} + +\begin{verbatim} + + +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\end{verbatim} + + +%%%%%%%%%%%%% +\subsection{Cancellation Operation} +%%%%%%%%%%%%% + +Check also `Negated Mathematical Characters' in the mathml specifications. + +\<<< +\:CheckOption{new-accents} \if:Option \else + \Configure{accent}\not\not{|}% + {\ht:special{t4ht@+\string&{35}x#1;}=} + {\ht:special{t4ht@*\string&{35}x0338;}#2} +\fi +>>> + +The following symbols have mathrel settings. + +\<<< +\equiv{2262}% +\exists{2204}% +\in{2209}% +\ni{220C}% +\vert{2224}% +\parallel{2226}% +\sim{2241}% +\simeq{2244}% +\cong{2247}% +\approx{2249}% +={2260}% +\asymp{226D}% +<{226E}% +>{226F}% +\leq{2270}% +\geq{2271}% +\prec{2280}% +\succ{2281}% +\subset{2284}% +\supset{2285}% +\subseteq{2288}% +\supseteq{2289}% +\vdash{22AC}% +\models{22AD}% +\sqsubseteq{22E2}% +\sqsupseteq{22E3}% +{}{\ht:special{t4ht@+\string&{35}x2044;}x}% +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Redefined Macros} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%% +\subsection{eurosym} +%%%%%%%%%%%%% + +\<<< +\Configure{geneuro}{\ht:special{t4ht@+\string&{35}x20AC{59}}x} +\Configure{geneuronarrow}{\ht:special{t4ht@+\string&{35}x20AC{59}}x} +\Configure{geneurowide}{\ht:special{t4ht@+\string&{35}x20AC{59}}x} +>>> + + +%%%%%%%%%%%%% +\subsection{????} +%%%%%%%%%%%%% + + +\<<< +\def\textellipsis{\x:unicode{2026}} +>>> + + + +\<<< +\Configure{roman} + {\x:unicode{2170}}{\x:unicode{2174}}{\x:unicode{2179}} + {\x:unicode{217C}}{\x:unicode{217D}}{\x:unicode{217E}} + {\x:unicode{217F}} +\Configure{Roman} + {\x:unicode{2160}}{\x:unicode{2164}}{\x:unicode{2169}} + {\x:unicode{216C}}{\x:unicode{216D}}{\x:unicode{216E}} + {\x:unicode{216F}} +>>> + + + + + + + + + + + +\<<< +>>> +\<<< +>>> + +\<<< +\:CheckOption{new-accents} \if:Option \else + | +\fi +>>> + + +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> + +\<<< +| +>>> + +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> + +\<<< +\:CheckOption{new-accents} \if:Option \else + | +\fi +>>> + + +\<<< +>>> +\<<< +>>> + +\<<< +\:CheckOption{new-accents} \if:Option \else + | +\fi +>>> + + +\<<< +\:CheckOption{new-accents} \if:Option \else + | +\fi +>>> + + + + +\<<< +\def\A:charset{charset=iso-8859-1} +\Configure{es@accents}{\es:accents}{} +\def\es:accents#1\b:es@accents{\HCode{&\#x#1;}} +\Configure{es@accent} + {\string\OT1\string\'} + {|} +| +>>> + + + +\<<< +\Configure{guillemotleft}{\HCode{&\#x00AB;}} +\Configure{guillemotright}{\HCode{&\#x00BB;}} +>>> + +\<<< +\Configure{spanish"a}{\HCode{&\#x00AA;}} +\Configure{spanish"o}{\HCode{&\#x00BA;}} +\Configure{spanish"e}{\HCode{e}} +\Configure{spanish"A}{\HCode{A}} +\Configure{spanish"O}{\HCode{O}} +\Configure{spanish"E}{\HCode{E}} +\Configure{spanish'i}{\HCode{&\#x00ED;}} +>>> + + + + +\<<< +\Configure{es@accent} + {\string\OT1\string\'} + {|} +>>> + + +\<<< +\Configure{es@accent} + {\string\OT1\string\"} + {|{}{34}} +>>> + +\<<< +\Configure{es@accent} + {\string\OT1\string\~} + {|} +>>> + + + + +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> +\<<< +>>> + +\<<< +>>> + +\<<< +>>> + +\<<< +>>> + +%%%%%%%%%%%%%%%%%% +\section{Latin1} +%%%%%%%%%%%%%%%%%% + + +\<<< +\def\:tempc{\special{t4ht@+\string&{35}xAE{59}}x} +\HLet\textregistered\:tempc +>>> + + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-word.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-word.tex new file mode 100644 index 00000000000..2bd6fd14754 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-word.tex @@ -0,0 +1,549 @@ +% $Id: tex4ht-word.tex 65 2010-11-17 19:16:45Z karl $ +% compile 3 times: latex tex4ht-word +% or xhlatex tex4ht-word "html,3,sections+" + +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) 2000-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \HTML\UnDef + \def\HTML{htmlw} + \def\CONFIG{\jobname} + \def\MAKETITLE{\author{Eitan M. Gurari}} + \def\next{\input mktex4ht.4ht \endinput} + \expandafter\next +\fi + +\input{common.tex} +\input{tex4ht-cpright.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Preamble} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +% htmlw.4ht (|version), generated from |jobname.tex +% Copyright (C) 2009-2010 TeX Users Group +% Copyright (C) |CopyYear.2000. Eitan M. Gurari +| +>>> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{General} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +% \Configure{Picture}{.wmf} +>>> + +\<<< +\Css{body {text-align:both;}} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Char Set} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\<<< +\def\:temp#1#2{% + \def\:tempa{#1}\ifx \languagename\:tempa + \def\A:charset{#2}\ifx \A:charset\empty\else + \def\A:charset{charset=#2}% + \fi\fi} +\:temp{afrikaans}{windows-1252} +\:temp{arabic}{windows-1256} +\:temp{austrian}{windows-1252} +\:temp{brazilian}{windows-1252} +\:temp{brazil}{windows-1252} +\:temp{catalan}{windows-1252} +\:temp{croatian}{windows-1251} +\:temp{czech}{windows-1251} +\:temp{danish}{windows-1252} +\:temp{dutch}{windows-1252} +\:temp{estonian}{windows-1251} +\:temp{finnish}{windows-1252} +\:temp{francais}{windows-1252} +\:temp{frenchb}{windows-1252} +\:temp{french}{windows-1252} +\:temp{galician}{windows-1252} +\:temp{germanb}{windows-1252} +\:temp{german}{windows-1252} +\:temp{greek}{windows-1253} +\:temp{hebrew}{windows-1255} +\:temp{hungarian}{windows-1250} +\:temp{ngerman}{windows-1252} +\:temp{norsk}{windows-1252} +\:temp{nynorsk}{windows-1252} +\:temp{polish}{windows-1252} +\:temp{polutonikogreek}{windows-1253} +\:temp{portuges}{windows-1252} +\:temp{portuguese}{windows-1252} +\:temp{romanian}{windows-1250} +\:temp{russian}{windows-1251} +\:temp{scottish}{windows-1252} +\:temp{slovak}{windows-1250} +\:temp{slovene}{windows-1250} +\:temp{spanish}{windows-1252} +\:temp{swedish}{windows-1252} +\:temp{ukrainian}{windows-1251} +\:temp{uppersorbian}{windows-1252} +\:temp{welsh}{windows-1252} +>>> + + +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1251} +>>> +\<<< +\def\A:charset{charset=windows-1251} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1251} +>>> +\<<< +\def\A:charset{charset=windows-1251} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1253} +>>> +\<<< +\def\A:charset{charset=windows-1255} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1250} +>>> +\<<< +\def\A:charset{charset=windows-1251} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1250} +>>> +\<<< +\def\A:charset{charset=windows-1250} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1251} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> +\<<< +\def\A:charset{charset=windows-1252} +>>> + + +\<<< +\def\A:charset{charset=windows-1255} +>>> + +\<<< +\def\A:charset{charset=windows-1252} +>>> + + +\<<< +\def\A:charset{charset=windows-1252} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Etc} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + +\<<< +\Configure{toclvld} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} +\Configure{toclvle} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} +\Configure{toclvlf} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} +\Configure{toclvlg} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} +\Configure{toclvlh} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} +\Configure{toclvli} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} +\Configure{toclvlj} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} +\Configure{toclvlk} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} +\Configure{toclvll} + {}{} + {\ifvmode \IgnorePar\fi \EndP\IgnorePar + \HCode{

        }\TitleMark\space\HtmlParOff} + {\HCode{

        }\HtmlParOn \IgnoreIndent \par} + +\Css{p.MsoHeading6 {margin-top:12.0pt; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:0cm; + font-size:11.0pt;}} +\Css{p.MsoHeading7 {margin-top:12.0pt; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:0cm; + font-size:12.0pt;}} +\Css{p.MsoHeading8 {margin-top:12.0pt; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:0cm; + font-size:12.0pt; + font-style:italic;}} +\Css{p.MsoHeading9 {margin-top:12.0pt; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:0cm; + font-size:11.0pt; + font-family:Arial;}} +>>> + + + +\begin{verbatim} +>> But they should go for h6, h7, h8 ... (which is not the case now). + +EG> But HTML does not recognize h* tags besides h1--h5. What we can do is +EG> to set diffent CSS code there--however, I didn't see differents in +EG> fonts there. -eitan + +This is true as far as plain html is concerned. But you can use higher +h? if you are planning to convert to *.doc because word interprets h1 as +heading 1 or h9 as heading 9 (presumably) as long as they are defined in +normal.dot. + +EG> Do you know how can I inspect the content of that file? Under +EG> emacs it all looks like junk. -eitan + +Which file do you mean? --- I suppose normal.dot. I do not think that +there is a possibility to view that file (apart from looking at it +with an hex editor). + +But you can see the result quite easily if you produce an html-file +with several headings (lets say h1 to h9) and load that file into +word. After saving that file in a word format (*.doc) you will realize +that your headings are assigned to word's styles Heading 1 to Heading +9. Start then a new document with a different template. Let's say +thesis. Copy the hole text by Edit/Select All, Edit/Copy and Edit/Paste +into the new document. Then you will realize that all headings are +formated according to the heading styles of the thesis template. + +This feature makes tex4ht even more interesting for converting +latex to word. Because you can write your texts with latex, convert +them to word and use then a template which is given to you by your +publisher. Unfortunately, German publishers do that quite often now +because nearly 90 % of all German lawyers are using word for writing +their essays these days. +\end{verbatim} + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Plain Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\<<< +\:CheckOption{fn-in}\if:Option + | + | +\fi +>>> + +\<<< +\Configure{vfootnote} + {|} + {|} + {|} +\Css{span.MsoFootnoteReference {vertical-align:super;}} +>>> + +\<<< +\Link{fn\FNnum}{fn\FNnum-bk}\HCode{}% + \ifx \FNmark\empty +\else \FNmark\fi\HCode{}\EndLink +>>> + + + +\<<< +| + \Link{fn\FNnum-bk}{fn\FNnum}\HCode{}% + \ifx \FNmark\empty +\else \FNmark\fi + \space\HCode{}\EndLink +>>> + +\<<< +| +>>> + +\<<< +\Configure{HtmlPar} + {\EndP\HCode{}\HCode{

        }} + {\EndP\HCode{}\HCode{

        }} + {\:xhtml{\Tg

        }} + {\:xhtml{\Tg

        }} +>>> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Latex Footnotes} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\<<< +\:CheckOption{fn-out}\if:Option \else + \Log:Note{for offline footnotes use + command line option `fn-out'} + \edef\Preamble{\Preamble,fn-in} +\fi +>>> + + + +\<<< +\:CheckOption{fn-in}\if:Option + | + | + | +\fi +>>> + + +\<<< +\Configure{footnotemark} + {\leavevmode |% + \NoFonts + \Tag{|}{}} + {\EndNoFonts + |% + \expandafter\global\expandafter + \let\csname (|-bk)\endcsname\def} +>>> + + +\<<< +\Configure{footnotetext} + {|% + \leavevmode |% + \NoFonts + \Tag{|-bk}{} + } + {\EndNoFonts |} + {\expandafter\global\expandafter + \let\csname (|)\endcsname\def + |} +>>> + + + +\<<< +\SaveEndP\global\setbox\fn:box=\vtop\bgroup\ShowPar + |% + \ifvoid\fn:box\else \csname unvbox\endcsname\fn:box\fi +>>> + +\<<< +\EndP\egroup\RecallEndP +>>> + + + + + + +\<<< +\ifTag{|} + {\expandafter\ifx\csname (|)\endcsname\def + \Link{|-bk}{}% + \HCode{}% + \else + \Link{|-bk}{|}% + \HCode{}% + \fi + } + {\expandafter\ifx\csname (|)\endcsname\def + \else + \Link{}{|}% + \HCode{}% + \fi + }% +>>> + +\<<< +\ifTag{|} + {\space\HCode{}\EndLink + } + {\expandafter\ifx\csname (|)\endcsname\def + \else + \space\HCode{}\EndLink + \fi + }% +>>> + + + +\<<< +|% +\ifTag{|-bk} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \Link[ |\Hnewline + ]{|}{}% + \else + \Link[ |\Hnewline + ]{|}{|-bk}% + \fi + } + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else \Link[ |\Hnewline + ]{}{|-bk}\fi + }% +>>> + + + + + + + +\<<< +\ifTag{|-bk} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \Link{|}{}% + \HCode{}% + \else + \Link{|}{|-bk}% + \HCode{}% + \fi + } + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else + \Link{}{|-bk} + \HCode{}% + \fi + }% +>>> + + +\<<< +\ifTag{|-bk} + {\HCode{}\EndLink} + {\expandafter\ifx\csname (|-bk)\endcsname\def + \else \HCode{}\EndLink\fi + }% +>>> + + + + +\<<< +\Css{span.footnotetext{ font-size:80\%; font-style:italic; } } +\Css{div.footnotes{border-bottom:0;}} +>>> + + +\<<< +\:CheckOption{fn-in}\if:Option + \Css{span.MsoFootnoteReference {vertical-align:super;}} +\fi +>>> + + +\<<< +fn\FNnum x\minipageNum +>>> + + +\<<< +| +>>> + +\<<< +| +>>> + +\<<< +| +>>> + + +\endinput diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-xhtml-xtpipes.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-xhtml-xtpipes.tex new file mode 100644 index 00000000000..f6bf5399488 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-xhtml-xtpipes.tex @@ -0,0 +1,659 @@ +% $Id: tex4ht-xhtml-xtpipes.tex 740 2020-06-13 22:35:32Z karl $ +% htlatex tex4ht-xhtml-xtpipes "xhtml,next,3" "" "-d./" +% +% Copyright 2009-2020 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\documentclass{article} + \Configure{ProTex}{log,<<<>>>,title,list,`,[[]]} + \usepackage{url} + \input{common.tex} +\begin{document} +\input tex4ht-cpright.tex +\input tex4ht-dir + + +%%%%%%%%%%%%%%%%%% +\part{Post Processing for Html Output Mode} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%% + +\AtEndDocument{\OutputCodE\} + +\Needs{"xmllint --valid --noout xhtml.4xt"} + +\<<< + + + + + + ` + ` + ` + ` + + +>>> + + +%%%%%%%%%%%%%%%%%% +\section{email script} +%%%%%%%%%%%%%%%%%% + +\<<< + +>>> + + + ` + ` + ` + + + + +\<<< + + + + + + +>>> + + +\<<< + +>>> + + + + +\<<< +(`version) +>>> + + +\AtEndDocument{% + \OutputCodE\ + } +\ifdojava + \Needs{" + javac -classpath \TEXMFTEXivBIN tex4ht.jar + XhtmlEmails.java + -d \XTPIPES +"} +\fi + +\<<< +package tex4ht; +/* XhtmlEmails.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2008. Eitan M. Gurari +` */ + +import xtpipes.XtpipesUni; +import org.xml.sax.*; +import org.xml.sax.helpers.DefaultHandler; +import java.io.*; +import java.lang.reflect.*; +import java.util.HashMap; + +public class XhtmlEmails extends DefaultHandler { + PrintWriter out = null; + String data = ""; + public XhtmlEmails(PrintWriter out, + HashMap scripts, + Method method, PrintWriter log, boolean trace) { + this.out = out; + } + public void characters(char[] ch, int start, int length) { + data += new String(ch, start, length); + +//XtpipesUni.toUni(ch, start, length, "<>&"); + } + + public void startElement(String ns, String sName, + String qName, + Attributes atts) { + String s = "<" + qName + "\n"; + for (int i = 0; i < atts.getLength(); i++) { + String name = atts.getQName(i); + s += (" " + name + "=\"" + + XtpipesUni.toUni(atts.getValue(i), "<>&\"") + + "\""); + } + s += ">"; + ` + out.print(XtpipesUni.toUni(data, "&") + s); + data = ""; + } + public void endElement(String ns, String sName, String qName) { + String s = ""; + ` + out.print( XtpipesUni.toUni(data, "&") + s); + data = ""; + } + +} +>>> + + +\<<< +while( data.indexOf('@') >0 ){ + ` + ` +} +data = XtpipesUni.toUni(data, "<>&"); +>>> + + + + +\<<< +String [] pre = data.split( + "[`]*@" + , 2); +if( pre[0].endsWith("}") ){ + if( pre[0].indexOf("{") != -1 ){ + pre[0] = pre[0].substring( 0, pre[0].lastIndexOf("{") ); +} } +int len = pre[0] . length(); +if( len > 0 ){ + out.print( XtpipesUni.toUni(pre[0], "<>&") ); + data = data.substring(len); +} +>>> + +\<<< +String [] post = data.split( + "@[`]*" + , 2); +if( post[1] . length() > 0 ){ + data = data.substring(0, data.length() - post[1] . length()); +} +` +data = post[1]; +>>> + + +\<<< +if( data.indexOf("{") == -1 ){ + out.print( + "" + + XtpipesUni.toUni(data, "<>&") + + "" + ); +} else { + int idx = data.indexOf('@'); + String ext = data.substring(idx); + data = data.substring(0,idx); + ` +} +>>> + + + +\<<< +while( true ){ + pre = data.split( + "[`]+" + , 2); + if( pre.length < 2 ){ + out.print( XtpipesUni.toUni(data + ext, "<>&") ); + data = ""; + break; + } + len = pre[0] . length(); + if( len > 0 ){ + out.print( XtpipesUni.toUni(pre[0], "<>&") ); + data = data.substring(len); + } + data = data.substring(0, data.length() - pre[1].length()); + out.print( + "" + + XtpipesUni.toUni(data, "<>&") + + "" + ); + data = pre[1]; +} +>>> + +\<<< +\\p{javaLowerCase}\\p{javaUpperCase}\\d\\-_\\./&>>> + + +\url{http://tools.ietf.org/html/rfc2368} + +\begin{verbatim} +Alice Smith" +{alice, bob}@somewhere.com +alice@somewhere.com, bob@somewhere.com +\end{verbatim} + +%%%%%%%%%%%%%%%%%% +\section{Long Tables} +%%%%%%%%%%%%%%%%%% + + + +\<<< + +>>> + + +\<<< + + + + + + + +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Tabular} +%%%%%%%%%%%%%%%%%% + + + +\<<< + +>>> + + +\<<< + + + +OK 1 + + + + + + +OK 2 + + + + +>>> + + + + + +\<<< + + + +OK 1 + + + + + + +OK 2 + + + + +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Empty HTML Element Script} +%%%%%%%%%%%%%%%%%% + +\<<< + +>>> + + +\<<< + +>>> + + + + +\<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + \<<< + +>>> + + + + + + + + + + +\<<< + + + + =" + + " + +>>> + + + + +%%%%%%%%%%%%%%%%%% +\section{Shared} +%%%%%%%%%%%%%%%%%% + + + +\<<< + + +>>> + +\<<< + + + + + + +]]> +>>> + + + + +\ifdojava +\AtEndDocument{\Needs{% + "pushd \XTPIPES || exit 1 + ; + jar cf tex4ht.jar * + ; + popd + ; + if [ ! -d \TEXMFTEXivBIN\space]; then exit 1; fi + ; + mv \XTPIPES tex4ht.jar \TEXMFTEXivBIN + ; + if [ ! -d \TEXMFTEXivXTPIPES\space]; then exit 1; fi + ; + cp \XTPIPES xtpipes/lib/* + \TEXMFTEXivXTPIPES +"}} +\fi + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\end{document} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-xhtmml-xtpipes.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-xhtmml-xtpipes.tex new file mode 100644 index 00000000000..37461cd573c --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-xhtmml-xtpipes.tex @@ -0,0 +1,751 @@ +% $Id: tex4ht-xhtmml-xtpipes.tex 740 2020-06-13 22:35:32Z karl $ +% htlatex tex4ht-xhtmml-xtpipes "xhtml,next,3" "" "-d./" + +% Copyright 2009-2020 TeX Users Group +% Copyright 1996-2009 Eitan M. Gurari +% Released under LPPL 1.3c+. +% See tex4ht-cpright.tex for license text. + +\documentclass{article} + \Configure{ProTex}{log,<<<>>>,title,list,`,[[]]} + \usepackage{url} + \input{common.tex} +\begin{document} +\input tex4ht-cpright.tex +\input tex4ht-dir + +%%%%%%%%%%%%%%%%%% +\part{Post Processing for HTML Output Mode} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%% + +\AtEndDocument{\OutputCodE\} + +\Needs{"xmllint --valid --noout xhtmml.4xt"} + +\<<< + + + + + + `

        + `

      8. + ` + ` + ` + ` + + +>>> + + +% +\AtEndDocument{\OutputCodE\} + +\ifdojava + \Needs{" + if [ ! -d \XTPIPES\space]; then exit 1; fi + ; + javac XhtmmlUtilities.java -d \XTPIPES + "} +\fi + +\<<< +package tex4ht; +/* XhtmmlUtilities.java (`version), generated from `jobname.tex + Copyright (C) 2009-2010 TeX Users Group + Copyright (C) `CopyYear.2008. Eitan M. Gurari +` */ + +import org.w3c.dom.*; +public class XhtmmlUtilities { + ` + ` + ` + ` + ` + ` + ` +} +>>> + + + + + +\<<< + +>>> + + + + +\<<< +public static void mrow(Node dom) { + barsIntoFenced( dom ); + digitsIntoNumbers( dom ); +} +>>> + + +\<<< + +>>> + + + + +\<<< +public static void math(Node dom) { + barsIntoFenced( dom ); + digitsIntoNumbers( dom ); +} +>>> + + + + + + + + + + + + +%%%%%%%%%%%%% +\section{Empty Paragraphs} +%%%%%%%%%%%%% + +\

        <<< + +>>> + +\

        <<< + +>>> + + +\<<< +public static void p(Node dom) { + Node pNode = dom.getFirstChild(); + if( pNode.hasChildNodes() ){ + boolean drop = true; + Node child = pNode.getFirstChild(); + while( child != null ){ + short type = child.getNodeType(); + if( + (type == Node.ELEMENT_NODE) + || + (type == Node.CDATA_SECTION_NODE) + || + (type == Node.TEXT_NODE) + && + !((Text) child).getWholeText().trim().equals("") + ){ + drop = false; break; + } + child = child.getNextSibling(); + } + if( drop ){ + dom.removeChild( pNode ); + } + } else { + dom.removeChild( pNode ); + } +} +>>> + + + +%%%%%%%%%%%%% +\section{Tables} +%%%%%%%%%%%%% + + +Remove Empty Trailling Row + +\

        <<< + +>>> + + +\<<< +public static void table(Node dom) { + Node tableNode = dom.getFirstChild(); + if( tableNode.hasChildNodes() ){ + Node trChild = tableNode.getLastChild(); + while( (trChild != null) + && + !trChild.getNodeName().equals("tr") ){ + trChild = trChild.getPreviousSibling(); + } + if( (trChild != null) && trChild.hasChildNodes() ){ + Node tdChild = trChild.getLastChild(); + while( (tdChild != null) + && + !tdChild.getNodeName().equals("td") ){ + tdChild = tdChild.getPreviousSibling(); + } + if( !tdChild.hasChildNodes() ){ + tableNode.removeChild( trChild ); + } else { + Node child = tdChild.getFirstChild(); + if( + (child.getNodeType() == Node.TEXT_NODE) + && + ((Text) child).getWholeText().trim().equals("") + && + (child.getNextSibling() == null) + ){ + tableNode.removeChild( trChild ); +} } } } } +>>> + + + + + + + + +%%%%%%%%%%%%% +\section{List Items} +%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Outline} +%%%%%%%%%%%%% + + + +\
      9. <<< + +>>> + + + + +\<<< +public static void li(Node dom) { + Node liNode = dom.getFirstChild(); + Node liChild; + boolean hasBlock = false, hasInline = false; + ` + if( hasBlock && hasInline ){ + `

        + ` + } +} +>>> + + + + +%%%%%%%%%%%%% +\subsection{Place Inline Code into Paragraphs} +%%%%%%%%%%%%% + + + +\

        <<< +liChild = liNode.getLastChild(); +Element g = ((Document) dom).createElement("p"); +g.setAttribute("class", "noindent"); +while( liChild != null ){ + short type = liChild.getNodeType(); + if( ` ){ + ` + liChild = liChild.getPreviousSibling(); + } else { + Node nextChild = liChild; + liChild = liChild.getPreviousSibling(); + ` +} } +>>> + + +\<<< +nextChild = liNode.removeChild(nextChild); +type = nextChild.getNodeType(); +if( + (type != Node.COMMENT_NODE) + && + ( + (type != Node.TEXT_NODE) + || + !((Text) nextChild).getWholeText().trim().equals("") + ) +){ + if( g.hasChildNodes() ){ + g.insertBefore( nextChild, g.getFirstChild() ); + } else { + g.appendChild( nextChild ); +} } +>>> + +%%%%%%%%%%%%% +\subsection{Place Paragraphs into List Items} +%%%%%%%%%%%%% + +\<<< +if( liNode.hasChildNodes() ){ + liNode.insertBefore( g, liNode.getFirstChild() ); +} else { + liNode.appendChild( g ); +} +>>> + + +\<<< +if( g.hasChildNodes() ){ + Node nextChild = liChild.getNextSibling(); + if( nextChild == null ){ + liNode.appendChild( g ); + } else { + liNode.insertBefore( g, nextChild ); + } + g = ((Document) dom).createElement("p"); + g.setAttribute("class", "noindent"); +} +>>> + + + +%%%%%%%%%%%%% +\subsection{Check Nature of Item Content} +%%%%%%%%%%%%% + +\<<< +liChild = liNode.getFirstChild(); +while( liChild != null ){ + short type = liChild.getNodeType(); + if( ` ){ hasBlock = true; } + else if( type == Node.TEXT_NODE ){ + if( !((Text) liChild).getWholeText().trim().equals("") ){ + hasInline = true; + } } + else if( + (type != Node.COMMENT_NODE) + && + (type != Node.PROCESSING_INSTRUCTION_NODE ) + ){ + hasInline = true; + } + liChild = liChild.getNextSibling(); +} +>>> + + +\<<< +(type == Node.ELEMENT_NODE) +&& +( + liChild.getNodeName().equals("p") + || + liChild.getNodeName().equals("ol") + || + liChild.getNodeName().equals("ul") + || + liChild.getNodeName().equals("div") + || + liChild.getNodeName().equals("table") +) +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{Scripted Math |...|} +%%%%%%%%%%%%%%%%%% + + + + + +\<<< +static void barsIntoFenced(Node dom) { + Node rightBarNode = null; + Node mrowNode = dom.getFirstChild(); + Node mrowChild = mrowNode.getLastChild(); + while( mrowChild != null ){ + if( + mrowChild.getNodeName().equals("msub") + || + mrowChild.getNodeName().equals("msup") + || + mrowChild.getNodeName().equals("msubsup") + ){ + Node firstChild = mrowChild.getFirstChild(); + if( + (firstChild.getChildNodes().getLength() == 1) + && + firstChild.getTextContent().equals( "|" ) + ){ + rightBarNode = mrowChild; + } } + else + if( + (rightBarNode != null) + && + mrowChild.getNodeName().equals("mo") + && + (mrowChild.getChildNodes().getLength() == 1) + && + mrowChild.getTextContent().equals( "|" ) + ){ + if(mrowChild.getNextSibling() != rightBarNode){ + ` + } + rightBarNode = null; + } + mrowChild = mrowChild.getPreviousSibling(); +} } +>>> + + + + + + +\begin{verbatim} + A + |B|^2 + C + + A + + + | # + B # + # + # + | # + # + # + 2 # + # + # + + + C + +\end{verbatim} + + +\<<< +rightBarNode.removeChild( rightBarNode.getFirstChild() ); +Node sub = rightBarNode.getFirstChild(); +Node mfenced = ((Document) dom).createElement( "mfenced" ); +rightBarNode.insertBefore( mfenced, sub ); +((Element) mfenced).setAttribute("open","|"); +((Element) mfenced).setAttribute("close","|"); +((Element) mfenced).setAttribute("separator",""); +Node node = mrowChild.getNextSibling(); +while( node != rightBarNode ){ + Node next = node.getNextSibling(); + mrowNode.removeChild( node ); + mfenced.appendChild( node ); + node = next; +} +mrowNode.removeChild( mrowChild ); +mrowChild = mrowNode.getLastChild(); +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Digits into Numbers} +%%%%%%%%%%%%%%%%%% + +\<<< +static void digitsIntoNumbers(Node dom){ + Node mrowNode = dom.getFirstChild(); + Node mrowChild = mrowNode.getFirstChild(); + short state = `; + Node fromNode = null, + toNode = null; + while( mrowChild != null ){ + switch( state ){ + case `: + if( mrowChild.getNodeName().equals("mn") ){ + state = `; + fromNode = mrowChild; + toNode = mrowChild; + } + break; + case `: + boolean bool = true; + if( mrowChild.getNodeName().equals("mn") ){ + toNode = mrowChild; + bool = ( mrowChild.getNextSibling() == null ); + } + else + { ` } + if( bool ) + { ` + if( bool ){ + ` + node.replaceChild( ((Document) dom).createTextNode(num), + node.getFirstChild() + ); + } + state = `; + fromNode = null; + toNode = null; + } } + mrowChild = mrowChild.getNextSibling(); +} } +>>> + + +\<<< +0 +>>> + +\<<< +1 +>>> + +\<<< +Node next; +String num = ""; +Node node = fromNode; +while( node != toNode ){ + num += node.getTextContent(); + next = node.getNextSibling(); + mrowNode.removeChild( node ); + node = next; +} +num += node.getTextContent(); +>>> + +\<<< +for( Node node = fromNode; ; node = node.getNextSibling()){ + String str = node.getTextContent(); + if( str.length() > 1 ){ bool = false; break; } + if( !str.replaceAll("[0-9]","").equals("") ){ bool = false; break; } + if( node == toNode ){ break; } +} +>>> + + + +\<<< +String s = null; +Node base; +if( + ( mrowChild.getNodeName().equals("msub") + || + mrowChild.getNodeName().equals("msup") + || + mrowChild.getNodeName().equals("msubsup") + ) + && + ((s = (base = mrowChild.getFirstChild()) + . getTextContent()).length() == 1 ) + && + s.replaceAll("[0-9]","").equals("") +){ + ` + ` + mrowNode.removeChild( node ); + num += s; + Node mn = ((Document) dom).createElement("mn"); + mn.appendChild( ((Document) dom).createTextNode(num) ); + mrowChild.replaceChild( mn, base); + + bool = false; + state = `; + fromNode = null; + toNode = null; +} +>>> + + + +%%%%%%%%%%%%%%%%%% +\section{mstyle} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%% +\subsection{Mstyle as Parent of an Element} +%%%%%%%%%%%%% + +Merge mstyle into its child. For instance + +\begin{verbatim} + + F + +\end{verbatim} + +into + +\begin{verbatim} +F +\end{verbatim} + +\<<< + +>>> + +\<<< + + + + + + + + + +>>> + +%%%%%%%%%%%%% +\subsection{Mstyle as Parent of Text} +%%%%%%%%%%%%% + + +\begin{verbatim} + + div + +\end{verbatim} + +into + +\begin{verbatim} +div +\end{verbatim} + +\<<< + + ` + ` + ` + + +>>> + + +\<<< + + + + + + + +>>> + + +%%%%%%%%%%%%%%%%%% +\section{Shared} +%%%%%%%%%%%%%%%%%% + + + +\<<< + + +>>> + +\<<< + + + + + + +]]> +>>> + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% END END END END END END END END END END END END END END END END +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifdojava +\AtEndDocument{\Needs{% + "pushd \XTPIPES || exit 1 + ; + jar cf tex4ht.jar * + ; + popd + ; + if [ ! -d \TEXMFTEXivBIN\space]; then exit 1; fi + ; + mv \XTPIPES tex4ht.jar \TEXMFTEXivBIN + ; + if [ ! -d \TEXMFTEXivXTPIPES\space]; then exit 1; fi + ; + cp \XTPIPES xtpipes/lib/* + \TEXMFTEXivXTPIPES + ; +"}} +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\end{document} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Master/texmf-dist/source/generic/tex4ht/wripro.tex b/Master/texmf-dist/source/generic/tex4ht/wripro.tex new file mode 100644 index 00000000000..30d0c025f28 --- /dev/null +++ b/Master/texmf-dist/source/generic/tex4ht/wripro.tex @@ -0,0 +1,518 @@ +% $Id: wripro.tex 414 2018-06-12 23:04:41Z karl $ +% Used in tex4ht.sty. Not installed in runtime. +% +% Copyright (C)) 2009-2010 TeX Users Group +% Copyright (C) 1996-2009, 2018 Eitan M. Gurari +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any +% later version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions +% of LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work +% is the TeX4ht Project . +% +% If you modify this program, changing the +% version identification would be appreciated. + +%\openin15= wripro.tex +%\ifeof15 \closein15 \else \closein15 \input wripro.tex \fi + + + +\Section{Root Point} + +\<<< +\ifx\html:addr\:UnDeF + | + \Htmltrue +\fi +>>> + +\ifalprotex + +\<<< +| +| +| +>>> + +\fi + +\<<< +| +>>> + + +\SubSection{Directory for Files} + +\<<< +\writesixteen{--- needs --- tex4ht \jobname\space ---}% +>>> + + + + +\<<< +\ifx\HDir\:UnDef \let\HDir=\empty \fi +\let\:HDir=\HDir +\immediate\write16{--- needs --- TeX4ht \ifx\HDir\empty + \else-d \HDir\space\space\fi \jobname\space ---}% +>>> + + +\SubSection{Identifiers and Counters} + + +\<<< +\ifx \Htmltrue\:UnDef + \def\:temp{\csname newif\endcsname} + \expandafter\:temp \csname ifHtml\endcsname \Htmlfalse +\fi +>>> + + +\<<< +\ifx\tmp:cnt\:UnDeF \csname newcount\endcsname\tmp:cnt \fi +\def\g:advance#1{\bgroup \def\:temp{#1}% + \tmp:cnt=#1\afterassignment\:gplus \advance\tmp:cnt} +\def\:gplus{\expandafter\xdef\:temp{\the\tmp:cnt}\egroup} +\def\html:lbl{1} +\def\html:addr{\xdef\last:haddr{\file:id-\html:lbl}% + \g:advance\html:lbl by 1\relax } +>>> + +\<<< +\ifx \file:id\:UnDef + \gdef\file:id{|} + \global\let\maxfile:id=\file:id +\fi +>>> + +\<<< +1>>> + + + +\SubSection{Relax Right Margin} + +\<<< +\hbadness=10000 \vbadness=10000 +\:CheckOption{fussy} \if:Option \else + \hfuzz=99in \vfuzz=\hfuzz +\fi +\hyphenpenalty=1000 \exhyphenpenalty=1000 +\def\html:rightskip{\rightskip = 0pt plus 0.5\hsize minus0.5\hsize } +\html:rightskip +>>> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SubSection{Foot and Head Lines} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \<<< + +\<<< +\ifx \footline\:UnDef \else + \footline={\hfil} \headline={\hfil} +\fi +>>> + + +\Section{Html Commmands From Users} + +The \''\let\ht:special=\special' is for protection +against redefinitions of the \''\special', as is the case in french.sty. + + +\<<< +\ifx \ht:special\:UnDef + \let\ht:special=\special +\fi +\def\HCode#1{\ifx \EndPicture\:UnDef + \relax\ifvmode\leavevmode\fi\ht:special{t4ht=#1}\fi} +\let\:HCode=\HCode +\let\Hbrakets\empty +\def\NewLineChar{\bgroup \catcode`\^=7 \:NewLineChar} +\def\:NewLineChar#1{\egroup \def\:newlnch{ #1}} +\NewLineChar{^^J} +>>> + + +\<<< +\def\HCode#1{} +>>> + +The \`+\HCode+' starts a new paragraph if introduced in vertical mode. +The \`+\leavevmode+' is included for proper spacing in dviht. + + + +\Section{Cross References within Html} + + - NCSA Mosaic can't handle the + end-of-anchor {\tt} tag if it is not on one line. +For instance, in {\tt +...}, + Mosaic paints everything blue until the next {\tt }it finds that is + entirely on one line. + +\<<< +\def\EndLink{\ifx \empty:lnk\empty \HCode{\Hbrakets}\fi} +\def\:HRef{\ifx [\:temp \expandafter\::HRef + \else \expandafter\:::HRef \fi } +\def\HT:tag{\ifx -\let:val \expandafter\H:Tag + \else \expandafter\HTa:g\fi } +\def\HTa:g{\H:Tag-} +\def\Link{\let\:attr\empty \futurelet\let:val\HRefT:ag} +\def\HRefT:ag{\ifx -\let:val \expandafter\H:RefTag + \else \expandafter\HRefTa:g\fi } +\def\HRefTa:g{\H:RefTag-} +\def\H:RefTag#1{\futurelet\:temp\:HRefTag} +\def\:HRefTag{\ifx [\:temp \expandafter\::HRefTag + \else \expandafter\:::HRefTag \fi } +>>> + + +A \`'\Link-{..}{b}' asks that a \''\Tag' will not be produced for `b'. +A \`'\Link[\empty]{b}{..}' asks that a \''\Ref' will not be produced for +`a'. The same is true for any other non-empty replacement to \''\empty' +A `b' for which we neither have a \''\Tag' and a \''\Ref' provides +a memory save in `strings out of', `string characters out of', and +`multiletter control sequences' (see log files). + +\<<< +\def\::HRef[#1]{\get:attr{#1}\::hRef\:::HRef} +\def\::HRefTag[#1]{\get:attr{#1}\::hRefTag\:::HRefTag} +\def\get:attr#1{\edef\:attr{\noexpand\get:atr #1 |}\:attr} +\def\get:atr#1 #2|#3#4{\def\:attr{\space#2}% + \def\:te:mpa{#1}\ifx \:te:mpa\empty \let\:te:mpa#4\else + \def\:te:mpa{#3[#1]}\fi \:te:mpa} +>>> + + +\<<< +\def\H:Tag#1#2{\:TagHTag{#2}\HCode{\Hbrakets<\tag:A\:newlnch + \NAME:"#2"\empty:lnk>}} +\def\::hRef[#1]#2{% + \HCode{\Hbrakets<\tag:A\:newlnch \if\relax#1#2\relax \NOHREF:{}\else + \HREF:"#1\if\relax#1\relax \else\:sharp #2\fi"\fi + \:attr \empty:lnk>}} +\def\:::HRef#1{% + \HCode{\Hbrakets<\tag:A\:newlnch \if\relax#1\relax \NOHREF:{}\else + \HREF:"\get:hfile{#1}\:sharp #1"\fi \:attr \empty:lnk>}} +>>> + + + +\<\><<< +\def\::hRef[#1]#2{\def\:te:mp{#1}\def\:te:mpa{#1#2}% + \HCode{<\tag:A\:newlnch \ifx\:te:mpa\empty \NOHREF: \else + \HREF:"#1\ifx\:te:mp\empty \else\:sharp #2\fi"\fi + \:attr \empty:lnk>}} +\def\:::HRef#1{\def\:te:mpa{#1}% + \HCode{<\tag:A\:newlnch \ifx\:te:mpa\empty \NOHREF: \else + \HREF:"\get:hfile{#1}\:sharp #1"\fi \:attr \empty:lnk>}} +>>> + + + + +\<<< +\def\::hRefTag[#1]#2#3{% + \if\relax#3\relax\else\:TagHTag{#3}\fi + \HCode{\Hbrakets<\tag:A\:newlnch \if\relax#1#2\relax \NOHREF:{#3}\else + \HREF:"#1\if\relax#2\relax \else\:sharp #2\fi"\fi + \if\relax#3\relax\else\space \NAME:"#3"\fi + \:attr \empty:lnk>}} +\def\:::HRefTag#1#2{% + \if\relax#2\relax\else\:TagHTag{#2}\fi + \HCode{\Hbrakets<\tag:A\:newlnch \if\relax#1\relax \NOHREF:{#2}% + \else\HREF:"\get:hfile{#1}\:sharp #1"\fi + \if\relax#2\relax\else\space \NAME:"#2"\fi + \:attr \empty:lnk>}} +\let\empty:lnk=\empty +\def\NOHREF#1{\space} +>>> + +\<\><<< +\def\::hRefTag[#1]#2#3{\def\:te:mp{#2}\def\:te:mpa{#1#2}\def\:te:mpb{#3}% + \ifx\:te:mpb\empty\else\:TagHTag{#3}\fi + \HCode{<\tag:A\:newlnch \ifx\:te:mpa\empty \NOHREF: \else + \HREF:"#1\ifx\:te:mp\empty \else\:sharp #2\fi"\fi + \ifx\:te:mpb\empty\else\space \NAME:"#3"\fi + \:attr \empty:lnk>}} +\def\:::HRefTag#1#2{\def\:te:mp{#1}\def\:te:mpa{#2}% + \ifx\:te:mpa\empty\else\:TagHTag{#2}\fi + \HCode{<\tag:A\:newlnch \ifx\:te:mp\empty \NOHREF: + \else\HREF:"\get:hfile{#1}\:sharp #1"\fi + \ifx\:te:mpa\empty\else\space \NAME:"#2"\fi + \:attr \empty:lnk>}} +>>> + + + + + + + +\''\def\NOHREF:#1{\ifx \hrEF:\HREF: \space NOHREF \fi}' is not part of html! + +\<<< +\def\HREF:{ href=} +\def\tag:A{a} +\def\NAME:{ name=} +>>> + + +% \let\hrEF:=\HREF: + + +We don't use \`'^^J' to break lines in \''\write' because user may +change it, and because I had unexplained problem with it in emtex. + +\<<< +\def\:TagHTag#1{\ifx -\let:val\else \Tag{|#1}{\file:id}\fi} +>>> + +\<<< +\def\H:Tag#1#2{} +\def\::HRef[#1]#2{} +\def\:::HRef#1{} +\def\::HRefTag[#1]#2#3{} +\def\:::HRefTag#1#2{} +\def\:TagHTag#1{} +>>> + + + + +\Section{Html Addresses} + +\SubSection{Retrieving for HREF} + +\<<< +\def\get:href{\expandafter\get::href} +\def\get::href#1-#2-{\ifnum #1=\file:id\space \else + |\fi + \:sharp |} +>>> + + + +\<<< +\def\get:href{\expandafter\get::href} +\def\get::href#1-#2-{\ifnum #1=\file:id\space \else + \:HDir |\fi + \:sharp |} +>>> + +\SubSection{Retrieving for NAME} + +\<<< +\def\get:htag{\expandafter\get::htag} +\def\get::htag#1-#2-{|} +>>> + + +\SubSection{Generating} + +\<<< +\make:addr{#2}>>> + +\<<< +\def\make:addr#1{% + \ifnum\clearcode:id>0 \romannumeral\clearcode:id Q\else PrTx\fi + |#1} +\ifx\clearcode:id\:UnDef + \def\clearcode::id{0} \def\clearcode:id{0} +\fi +>>> + +We had before \`'\space' after \`'#1'. It was not a problem because +\`'|<<< +\def\make:addr#1{% + \ifnum\clearcode:id>0 \romannumeral\clearcode:id Q\fi + |#1\space} +\ifx\clearcode:id\:UnDef + \def\clearcode::id{0} \def\clearcode:id{0} +\fi +>>> + + + + +\<<< +>>> + +Originally, we had \`'\romannumeral' for tail, but it created named +that are too long, and cause memory overflow. + + +The condition \`'\ifnum\clearcode:id>0' is set to hold only for +references to code fragments. + +Romannumeral might be better tags then just numerals because they +might be less likely to be generater manually. + +\SubSection{File Names} + + +\`=\Ref= and \`=\Tag= are mechanisms to exchange information. The +following can be used to connect locations. (Note, however, that +\`=\Tag= may appear in more than one location sending a sequences of tags +separated by comma. In such cases, we arbitrarily go for the first +choise.) + + +\<<< +\ifx \aXrefFile\:UnDef \let\aXrefFile=\empty \fi +>>> + + +\<<< +| +\def\get:hfile#1{% + \expandafter\ifx\csname + ||#1\endcsname\relax + \get@hfile{#1}% + \else + \expandafter\expandafter\expandafter\get::hfile + \csname ||#1\endcsname,//% + \fi } +\def\get::hfile#1,#2//{% + \ifnum \file:id=0#1 \else + |% + \fi } +\ifx\get@hfile\:Undef \let\get@hfile=\:gobble \fi +>>> + + +\<<< +\expandafter\ifx + \csname ||#1% + | file-name|>\endcsname\relax \else + \:LikeRef{|#1| file-name|>}% +\fi >>> + + +\<<< +\expandafter\ifx + \csname ||#1% + | file-name|>\endcsname\relax \else + \:HDir \:LikeRef{|#1| file-name|>}% +\fi >>> + + + +\<<< +\:LikeRef{|#1| file-name|>}>>> + + +The following alternative can act as basis for retrieving all +the file names, instead of just the first one. + +\<<< +\def\get:hfile#1{% + \expandafter\ifx\csname + cw:|#1\endcsname\relax + \get@hfile{#1}% + \else + \expandafter\expandafter\expandafter\get::hfile + \csname cw:|#1\endcsname,\empty end:Links,/ + \fi } +\def\end:Links#1//{} + +\def\get::hfile#1,#2//{% +\expandafter \ifx \csname #1\endcsname\end:Links + \expandafter\end:Links +\else + \ifnum \file:id=0#1 \FileName\else + \expandafter\ifx + \csname cw:|#1% + \empty F-\endcsname\relax \else + \:LikeRef{|#1\empty F-}% +\fi % + \fi +\expandafter\get::hfileA +\fi #2//} + +\def\get::hfileA#1{% +\ifx #1\space + \expandafter\get::hfile\else +\ifx #1\empty \else \space\fi% + \expandafter\get::hfile\expandafter#1\fi} +>>> + + + + +\Section{Other} + + +Dviht produce new line only after nonempty lines. The following +can be used to force non empty lines. + +\<<< +|%\def\HComment#1{\def\html:src{#1}} +\HComment{} |% \let\html:src=\empty +\catcode`\#=12 \def\:sharp{#} \catcode`\#=6 +>>> + + + + +\<<< +\ifx \html:par\:UnDef \def\html:par{\HCode{

        }} \fi +\def\html:invisible{\string&\#x00A0;} +>>> + +The \`' ' is needed for blank lines in \`'

        '
        +within netscape. Opposite order of comment and non-breaking-space will
        +not work, and the same if one of the entities is sliminates. On the
        +other other, mosaic show the nobreaking space as strin. Well, ...
        +
        +\<<<
        +|%\def\HComment#1{}|%
        +>>>
        +
        +\`'\HComment' seems to have no real value, unless we want to
        +trace the input for debugging.
        +
        +
        +\SubSection{Tags}
        +
        +\FreeCode\  % to ensure agains duplication
        +
        +\<<<
        + cw:>>>
        +
        +\<<<
        +|Q\aXrefFile >>>
        +
        +
        +
        +\ file-name\><<<
        +\empty F->>>
        +
        +\<<<
        +)>>>
        +
        +\<<<
        +|F\aXrefFile >>>
        +
        +
        +\FreeCode\
        +
        +\<<<
        +!*?: >>>
        diff --git a/Master/texmf-dist/source/generic/tex4ht/xtpipes.tex b/Master/texmf-dist/source/generic/tex4ht/xtpipes.tex
        new file mode 100644
        index 00000000000..6d19f51a675
        --- /dev/null
        +++ b/Master/texmf-dist/source/generic/tex4ht/xtpipes.tex
        @@ -0,0 +1,4518 @@
        +% $Id: xtpipes.tex 740 2020-06-13 22:35:32Z karl $
        +
        +% htlatex xtpipes "xhtml,3,next" "" "-d./"
        +% htlatex xtpipes "xhtml,3,next,doc" "" "-d./"
        +% htlatex xtpipes "xhtml,3,next,win"
        +% htlatex xtpipes "xhtml,3,next,win,doc"
        +
        +% generalize -i attribute to accept multiple directories, like for -classpath
        +% gcj support these ``generics''  with a ``-5'' or ``-1.5'' switch
        +
        +% Copyright 2009-2020 TeX Users Group
        +% Copyright 1996-2009 Eitan M. Gurari
        +% Released under LPPL 1.3c+.
        +% See tex4ht-cpright.tex for license text.
        +
        +\documentclass{article}
        +   \usepackage{url}
        +   \usepackage{verbatim}
        +   \input{common.tex}
        +   % make ` be the escape character, instead of |
        +   \Configure{ProTex}{java,<<<>>>,title,list,`}
        +\begin{document}
        +\input tex4ht-cpright.tex
        +\input tex4ht-dir.tex
        +
        +\def\CNT{0}
        +\bgroup
        +   \catcode`\^=7
        +   \catcode`\^^M=13  %
        +   \gdef\OP#1{%
        +      \edef\temp{%
        +        \noexpand\<#1\noexpand\><<<
        +            \CNT
        +        >>> %
        +      } \temp %
        +      \immediate\write15{...... \CNT\space #1}
        +      \HAdvance\CNT by 1 %
        +   }   %
        +\egroup
        +
        +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        +% \AddFile[optional: target file name; default: given file name]
        +%         (optional: target home dir; default MYDIR)
        +%         {file name}{dir}
        +
        +\ifOption{win}
        +   {\def\mv{move }}
        +   {\def\mv{mv }}
        +
        +\def\Slash{/}
        +{
        +   \catcode`\/=0
        +   \catcode`\\=12
        +   /ifOption{win}{/gdef/Slash{\}}{}
        +}
        +\def\SLASH{/}
        +
        +\def\AddFile{\futurelet\ext\AddFileA}
        +\def\AddFileA{%
        +   \if [\ext \def\ext[##1]{\def\ext{##1}\futurelet\dir\AddFileB}%
        +   \else     \def\ext{\def\ext{}\futurelet\dir\AddFileB}\fi
        +   \ext}
        +\def\AddFileB{%
        +   \if (\dir \def\dir(##1){\def\dir{##1}\AddFileC}%
        +   \else     \def\dir{\let\dir\MYdir\AddFileC}\fi
        +   \dir}
        +
        +
        +\def\AddFileC#1#2{%
        +   \expandafter\setStartDir \dir #2!%
        +   \bgroup
        +     \def\Slash{/}%
        +     \xdef\EndDir{\dir
        +                #2\Slash
        +             \ifx\ext\empty
        +                  \if !#1!\else #1\fi
        +             \else \ext\fi}%
        +   \egroup
        +   \MakeDir
        +   \if !#1!\else
        +      \Needs{"\mv #1\space \dir #2\Slash
        +                    \ifx\ext\empty #1\else \ext\fi"}%
        +   \fi
        +}
        +
        +\ifOption{win}
        +{
        +   \def\MakeDir{\relax
        +      \expandafter \ifx  \csname !\StartDir\endcsname\relax
        +         \expandafter\let\csname !\StartDir\endcsname=\empty
        +         \Needs{"if NOT EXIST \StartDir \space mkdir -p \StartDir"}%
        +      \fi
        +      \ifx \EndDir\empty \else
        +          \expandafter\AppendDir \EndDir////*%
        +          \expandafter\MakeDir
        +      \fi
        +   }
        +}{
        +   \def\MakeDir{\relax
        +      \expandafter \ifx  \csname !\StartDir\endcsname\relax
        +         \expandafter\let\csname !\StartDir\endcsname=\empty
        +         \Needs{"mkdir -p \StartDir"}%
        +      \fi
        +      \ifx \EndDir\empty \else
        +          \expandafter\AppendDir \EndDir////*%
        +          \expandafter\MakeDir
        +      \fi
        +   }
        +}
        +
        +\def\AppendDir#1/#2/#3/*{%
        +   \def\temp{#2}\ifx \temp\empty
        +      \let\EndDir=\empty
        +   \else
        +      \edef\StartDir{\ifx \StartDir\empty\else
        +                     \ifx \StartDir\SLASH \Slash \else
        +                     \StartDir\Slash\fi   \fi
        +                     #1}%
        +      \def\EndDir{#2/#3}%
        +      \expandafter\MakeDir
        +   \fi
        +}
        +\def\setStartDir#1#2!{%
        +    \def\StartDir{#1}\ifx\StartDir\SLASH\else
        +    \def\StartDir{}\fi
        +}
        +
        +
        +
        +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        +% % \AddFile[optional: target file name; default: given file name]
        +% %         (optional: target home dir; default MYDIR)
        +% %         {file name}{dir}
        +%
        +% \def\AddFile{\futurelet\ext\AddFileA}
        +% \def\AddFileA{%
        +%    \if [\ext \def\ext[##1]{\def\ext{##1}\futurelet\dir\AddFileB}%
        +%    \else     \def\ext{\def\ext{}\futurelet\dir\AddFileB}\fi
        +%    \ext}
        +% \def\AddFileB{%
        +%    \if (\dir \def\dir(##1){\def\dir{##1}\AddFileC}%
        +%    \else     \def\dir{\let\dir\MYdir\AddFileC}\fi
        +%    \dir}
        +% \def\AddFileC#1#2{%
        +%    \expandafter\setStartDir \dir #2!%
        +%    \edef\EndDir{\ifx \dir\empty \else \dir/\fi
        +%                 #2/\ifx\ext\empty \if !#1!XXX\else #1\fi\else \ext\fi}\MakeDir
        +%    \if !#1!\else
        +%       \Needs{"mv #1\space \dir /#2/\ifx\ext\empty #1\else \ext\fi"}%
        +%    \fi
        +% }
        +% \def\MakeDir{\relax
        +%    \expandafter \ifx  \csname !\StartDir\endcsname\relax
        +%       \expandafter\let\csname !\StartDir\endcsname=\empty
        +%       \Needs{"mkdir -p \StartDir"}%
        +%    \fi
        +%    \ifx \EndDir\empty \else
        +%        \expandafter\AppendDir \EndDir////*%
        +%        \expandafter\MakeDir
        +%    \fi
        +% }
        +% \def\AppendDir#1/#2/#3/*{%
        +%    \def\temp{#2}\ifx \temp\empty  \let\EndDir=\empty
        +%    \else
        +%       \edef\StartDir{\ifx \StartDir\empty\else
        +%                      \ifx \StartDir\SLASH /\else
        +%                      \StartDir/\fi   \fi
        +%                      #1}\def\EndDir{#2/#3}%
        +%    \fi
        +% }
        +% \def\setStartDir#1#2!{%
        +%     \def\StartDir{#1}\ifx\StartDir\SLASH\else
        +%     \def\StartDir{}\fi
        +% }
        +% \def\SLASH{/}
        +
        +
        +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        +
        +% TODO : make \WORK MSDOS / Linux agnostic.
        +\def\MYdir{\WORK}
        +
        +
        +\expandafter\let\csname !/\endcsname\empty
        +\expandafter\let\csname !/\endcsname\empty
        +\expandafter\let\csname !/home\endcsname\empty
        +\expandafter\let\csname !/home/4\endcsname\empty
        +\expandafter\let\csname !/home/4/gurari\endcsname\empty
        +\expandafter\let\csname !/home/4/gurari/xtpipes.dir\endcsname\empty
        +%\expandafter\let\csname !/home/4/gurari/tex4ht.dir/texmf\endcsname\empty
        +%\expandafter\let\csname !/home/4/gurari/xtpipes.dir\endcsname\empty
        +
        +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\part{Core}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{Control}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\subsection{Outline}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +\AtEndDocument{
        +   \OutputCode[java]\  % double .java to avoid problems on MS
        +   \OutputCodE\
        +   \OutputCodE\
        +}
        +
        +% \Needs{"
        +%    mkdir -p work.dir
        +%    ;
        +%    mkdir -p work.dir/xtpipes
        +% "}
        +
        +\ifdojava
        +\ifOption{win} {}{
        +\AtEndDocument{\Needs{"
        +    find \WORK\space -type f -iname '*.java' -print0
        +    | xargs -0 javac -d \XTPIPES\space -sourcepath \WORK
        +    ;
        +"}}
        +}
        +\fi
        +
        +
        +\ifOption{win} {
        +    \def\BIN{}
        +}{
        +    \def\BIN{(\XTPIPES)}
        +}
        +
        +% 
        +\expandafter\AddFile\BIN{xtpipes.dtd}{xtpipes\Slash lib}
        +
        +\AddFile{Xtpipes.java}{xtpipes}
        +
        +\<<<
        +package xtpipes;
        +/* Xtpipes.java (`version), generated from `jobname.tex
        +   Copyright (C) 2009-2010 TeX Users Group
        +   Copyright (C) `CopyYear.2002. Eitan M. Gurari
        +` */
        +`
        +`
        +public class Xtpipes {
        +   `
        +   `
        +   `
        +   `
        +   `
        +   `
        +   `
        +   `
        +   `
        +   `
        +   `
        +   `
        +}
        +`
        +>>>
        +
        +\Needs{"\mv xtpipes.java.java \MYdir xtpipes.java"}
        +
        +NOTE: We can not place Xtpipes.class and xtpipes.class at the same
        +directory because MS Windows get confused between the two.
        +
        +
        +\<<<
        +/* xtpipes.java (`version), generated from `jobname.tex
        +   Copyright (C) 2009-2010 TeX Users Group
        +   Copyright (C) `CopyYear.2002. Eitan M. Gurari
        +` */
        +import xtpipes.*;
        +public class xtpipes {
        +  public static void main(String [] args) throws Exception {
        +    Xtpipes.main(args);
        +} }
        +>>>
        +
        +
        +\<<<
        +public static String execute( Node node, String xml )
        +                                      throws Exception {
        +  String name = ".";
        +  String old = (String) map.get(name);
        +  map.put( name, (Object) xml );
        +  execute( node.getFirstChild() );
        +  String s = (String) map.get(name);
        +  if( old != null ){ map.put( name, (Object) old ); }
        +  return s;
        +}
        +>>>
        +
        +
        +
        +
        +
        +
        +
        +\<<<
        +private static HashMap  map;
        +private static boolean needScript;
        +>>>
        +
        +
        +The members of xtpipes need to be initiated each time the methods of
        +the program are invoked from external point.  That can happen multiple
        +times for a given run. Hence, the fields are not initiated in the
        +declaration points, but within the main method.  All the external
        +calls go directly or indirectly through that method.
        +
        +
        +\<<<
        +map = new HashMap   ();
        +needScript = true;
        +>>>
        +
        +
        +\<<<
        +// import xtpipes.util.InputObject;
        +// import xtpipes.util.FileInfo;
        +import xtpipes.XtpipesPrintWriter;
        +import java.net.URLConnection;
        +import java.io.*;
        +import java.lang.reflect.*;
        +import java.util.HashMap;
        +import java.util.Stack;
        +import javax.xml.parsers.*;
        +import javax.xml.transform.*;
        +import javax.xml.transform.dom.DOMSource;
        +import javax.xml.transform.stream.*;
        +import org.w3c.dom.*;
        +import org.xml.sax.*;
        +import org.xml.sax.helpers.*;
        +import java.net.URL;
        +>>>
        +
        +%%%%%%%%%%%%%
        +\subsection{Invocation Interfaces}
        +%%%%%%%%%%%%%
        +
        +\<<<
        +public static void main(String args[]) throws Exception {
        +  `
        +  mainMethod(args);
        +}
        +>>>
        +
        +
        +
        +
        +\<<<
        +public static void xtpipes(String [] args,
        +                           OutputStream out,
        +                           PrintWriter log)
        +                                                throws Exception {
        +  `
        +  outPrintWriter = new XtpipesPrintWriter( out, true );
        +  logWriter = (log==null)? (new PrintWriter( System.err )) : log;
        +  mainMethod(args);
        +  outPrintWriter.flush();
        +}
        +>>>
        +
        +
        +
        +\<<<
        +public static void xtpipes(String [] args,
        +                           OutputStreamWriter out,
        +                           PrintWriter log)
        +                                                throws Exception {
        +  `
        +  outPrintWriter = new XtpipesPrintWriter( out );
        +  logWriter = (log==null)? (new PrintWriter( System.err )) : log;
        +  mainMethod(args);
        +  outPrintWriter.flush();
        +}
        +>>>
        +
        +\<<<
        +public static void xtpipes(String [] args,
        +                           XtpipesPrintWriter out,
        +                           PrintWriter log)
        +                                                throws Exception {
        +  `
        +  outPrintWriter = out;
        +  logWriter = (log==null)? (new PrintWriter( System.err )) : log;
        +  mainMethod(args);
        +  outPrintWriter.flush();
        +}
        +>>>
        +
        +
        +\<<<
        +private static boolean returnDom;
        +private static String result;
        +>>>
        +
        +\<<<
        +returnDom = false;
        +result = null;
        +>>>
        +
        +
        +\<<<
        +public static Document getDOM(String args[])
        +                               throws Exception {
        +  `
        +   returnDom = true;
        +   mainMethod(args);
        +   Document dom = null;
        +   if( result == null ){
        +     System.err.println(
        +       "--- xtpipes warning --- getDOM without  from 4xt file: "
        +         + scriptFile );
        +   } else {
        +      try{
        +         byte [] bytes = result.getBytes("UTF-8");
        +         InputStream is =  new ByteArrayInputStream( bytes );
        +         dom = domBuilder.parse (is);
        +      } catch ( org.xml.sax.SAXParseException e ){
        +         if( Xtpipes.trace ){
        +            Xtpipes.logWriter.println(
        +               "\n---------------------------------------------------\n"
        +                        + result +
        +               "\n---------------------------------------------------\n" );
        +         }
        +         String s = "";
        +         `
        +         if( scriptFile != null ){ s += "    script file: " + scriptFile; }
        +         instructionErr( null,
        +            "parsing error: " + e.getMessage() +s, 21 );
        +      } catch ( Exception e ){
        +         instructionErr( null, e.toString(), 5 );
        +      }
        +      `
        +   }
        +   return dom;
        +}
        +>>>
        +
        +\<<<
        +public static Document getDOM(String s, String args[])
        +                                           throws Exception {
        +   `
        +   returnDom = true;
        +   inData = s;
        +   mainMethod(args);
        +   Document dom = null;
        +   if( result == null ){
        +     System.err.println(
        +       "--- xtpipes warning --- getDOM without"
        +         + "  from 4xt file: "
        +         + scriptFile );
        +   } else {
        +      try{
        +         byte [] bytes = result.getBytes("UTF-8");
        +         InputStream is =  new ByteArrayInputStream( bytes );
        +         dom = domBuilder.parse (is);
        +      } catch ( org.xml.sax.SAXParseException e ){
        +         instructionErr( null, "improper xml: " + e.getMessage()
        +           + "\n code starts with: "
        +           + result.substring(0, Math.min(100,result.length()))
        +         , 17 );
        +      } catch ( Exception e ){
        +         instructionErr( null, e.toString(), 6 );
        +      }
        +      `
        +   }
        +   return dom;
        +}
        +>>>
        +
        +
        +\<<<
        +public static Document getDOM(String args[], PrintWriter log)
        +                               throws Exception {
        +   logWriter = (log==null)? new PrintWriter( System.err ) : log;
        +   return getDOM(args);
        +}
        +>>>
        +
        +\<<<
        +public static Document getDOM(String s, String args[], PrintWriter log)
        +                                           throws Exception {
        +   logWriter = (log==null)? (new PrintWriter( System.err )) : log;
        +   return getDOM(s, args);
        +}
        +>>>
        +
        +
        +
        +
        +\<<<
        +static PrintWriter logWriter = new PrintWriter( System.err );
        +>>>
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Core Entry Code}
        +%%%%%%%%%%%%%
        +g
        +
        +\<<<
        +private static void mainMethod(String args[]) throws Exception {
        +  try{
        +    `
        +    `
        +  } catch (Exception e){
        +     instructionErr( null, e.getMessage(), e.getStackTrace(), 31 );
        +  }
        +  try {
        +     DocumentBuilderFactory domFactory =
        +           DocumentBuilderFactory.newInstance();
        +     domFactory.setValidating(true);
        +     DocumentBuilder validatingDomBuilder =
        +                     domFactory.newDocumentBuilder();
        +     validatingDomBuilder.setEntityResolver(`);
        +     validatingDomBuilder.setErrorHandler(`);
        +     `
        +     `
        +     while( needScript ){
        +       if( scriptFile == null ){
        +          instructionErr( null, "Missing 4xt script file name", 32 );
        +       }
        +       `
        +       Document script = validatingDomBuilder.parse(scriptFile);
        +       `
        +       execute( script.getFirstChild() );
        +     }
        +     `
        +      Xtpipes.logWriter.flush();
        +  } catch( org.xml.sax.SAXParseException e ){
        +     String s = "Improper file " + scriptFile + ": " + e.getMessage();
        +     instructionErr( null, s, 2 );
        +  } catch( java.io.FileNotFoundException e ){
        +     String s;
        +     if( scriptFile.equals( e.getMessage() ) ){
        +        s =  "Could not find file: " + scriptFile;
        +     } else {
        +        s = "Problem at script " + scriptFile + ": Could not find file "
        +                                                     + e.getMessage();
        +     }
        +     instructionErr( null, s, 3 );
        +  } catch( Exception e ){
        +     String s = "Problems at file: " + scriptFile + "\n   " + e;
        +     instructionErr( null, s, 4 );
        +} }
        +>>>
        +
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Locate the Script File}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +\<<<
        +String f = FileInfo.searchFile( scriptFile );
        +if( f == null ){
        +   throw new java.io.FileNotFoundException( scriptFile );
        +} else {
        +   scriptFile = f;
        +}
        +>>>
        +
        +
        +
        +[\HPage{System Properties}
        +
        +\<<<
        +// `version
        +import java.util.*;
        +class sys{
        +  public static void main( String [] args ) {
        +     java.util.Properties p = System.getProperties();
        +     java.util.Enumeration keys = p.keys();
        +     while( keys.hasMoreElements() ) {
        +         String name = (String) keys.nextElement();
        +         String value = System.getProperty( name );
        +         logWriter.println( name + " : " + value );
        +} }  }
        +>>>
        +\EndHPage{}]
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Flow of Control}
        +%%%%%%%%%%%%%
        +
        +
        +\<<<
        +private static void execute( Node node ) throws Exception {
        +  while( node != null ){
        +    if( node.getNodeType()==Node.ELEMENT_NODE ){
        +      String instruction = node.getNodeName();
        +      `
        +      if( instruction.equals( "xtpipes" ) ){
        +         `
        +      } else if( instruction.equals( "set" ) ){
        +         `
        +      } else if( instruction.equals( "get" ) ){
        +         `
        +      } else if( instruction.equals( "print" ) ){
        +         `
        +      } else if( instruction.equals( "return" ) ){
        +         `
        +      } else if( instruction.equals( "if" ) ){
        +         `
        +      } else if( instruction.equals( "xslt" ) ){
        +         `
        +      } else if( instruction.equals( "dom" ) ){
        +         `
        +      } else if( instruction.equals( "sax" ) ){
        +         `
        +      } else {
        +         instructionErr( node, "Improper instruction: " + instruction, 11 );
        +    } }
        +    node = node.getNextSibling();
        +} }
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Comamnd Line Options: Outline}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +if( args[n] == null ){}
        +else if( args[n].equals("") ){}
        +else if( args[n].charAt(0)!='-' ){ inFile = args[n]; }
        +else if( args[n].equals("-m") ){
        +  messages = true;
        +  `
        +}
        +else if( args[n].equals("-s") ){
        +  `
        +}
        +else if( args[n].equals("-S") ){
        +  `
        +}
        +else if( args[n].equals("-i") ){
        +  `
        +}
        +else if( args[n].equals("-o") ){
        +  `
        +}
        +else if( args[n].startsWith("-x") ){
        +  `
        +}
        +else if( args[n].equals("-E") ){
        +  exceptionErrs = true;
        +}
        +else if( args[n].equals("-d") ){
        +  `
        +}
        +else if( args[n].equals("-trace") ){ trace=true; }
        +else if( args[n].equals("-help") ){ help=true; }
        +else { ` }
        +>>>
        +
        +
        +\<<<
        +System.err.println( xtpipes_call );
        +>>>
        +
        +\<<<
        +String xtpipes_call =
        +     "   xtpipes (`version)"
        +   + "\n   Command line options: "
        +   + "\n     java xtpipes [-trace] [-help] [-m] [-E] [-s script_file]"
        +   +                                               " [-S script_map]"
        +   + "\n                  [-i script_dir] [-o out_file] "
        +   + "\n                  [-x...ml2xml_arg...]  "
        +   +                     "(-d in_data | in_file)"
        +   + "\n     -m        messages printing mode"
        +   + "\n     -E        error messages into exception calls"
        +   + "\n     in_data   XML data directly into the command line\n"
        +;
        +>>>
        +
        +
        +
        +At least one  `-x'  command line option is required for ml2xml
        +to be called.  An empty postfix is also fine.
        +
        +
        +
        +\<<<
        +for( int n=0; n>>
        +
        +%%%%%%%%%%%%%
        +\subsection{Comamnd Line Options: Processing}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +boolean help=false;
        +for( int n=0; n
        +}
        +`
        +`
        +new FileInfo(logWriter, i_scriptDir, trace);
        +if( inFile != null ){
        +   inputObject = new InputObject( inFile, logWriter );
        +   if( inputObject.getInputStream() == null ){
        +      instructionErr( null, "Could not find or open file: " + inFile, 28 );
        +   }
        +   inFile = inputObject.getFilename();
        +} else {
        +   inputObject = new InputObject( inData.getBytes("UTF-8"), logWriter );
        +}
        +inputObject.buildProfile( trace );
        +>>>
        +
        +\<<<
        +if( !returnDom ){
        +   if( help || ((inFile == null) && (inData == null)) ){
        +     `
        +     if( (inFile == null) && (inData == null) ){
        +        System.exit(0);
        +}  } }
        +>>>
        +
        +\<<<
        +if( !exceptionErrs ){
        +  for(int i=n+1; i>>
        +
        +
        +
        +
        +\<<<
        +n++;
        +if( n < args.length ){
        +   inData = args[n];
        +} else {
        +   System.err.println(
        +       "--- Error --- Missing field for -d argument" );
        +   inFile = null; inData = null; break;
        +}
        +>>>
        +
        +
        +
        +
        +
        +
        +\<<<
        +private static String     inFile,
        +                          inData;
        +private static boolean exceptionErrs, messages;
        +public static InputObject inputObject;
        +>>>
        +
        +
        +\<<<
        +inFile = null;
        +inData = null;
        +exceptionErrs = false;
        +messages = false;
        +>>>
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Output File}
        +%%%%%%%%%%%%%
        +
        +
        +The output file name mentioned in the input command line `-o file.out' is
        +employed in the following cases.
        +
        +\begin{itemize}
        +\item
        +Within sax commands without `name' argument
        +
        +\item Within the return instruction, if none of the sax commands wrote
        +  into the file.  The returnToFile field is used for book keeping of
        +  whether a sax command used the file earlier for an output target.
        +
        +
        +NOTE: check the case of `cond copy input preamble' ??
        +\end{itemize}
        +
        +
        +\<<<
        +n++;
        +if( n < args.length ){
        +   outFileName = args[n];
        +} else {
        +   System.err.println(
        +       "--- Error --- Missing field for -o argument" );
        +   inFile = null; inData = null; break;
        +}
        +>>>
        +
        +
        +\<<<
        +private static String outFileName;
        +private static PrintWriter outPrintWriter;
        +private static boolean returnToFile = false;
        +>>>
        +
        +\<<<
        +outFileName = null;
        +outPrintWriter = null;
        +>>>
        +
        +
        +
        +\<<<
        +if( outFileName != null ){
        +   try {
        +      FileWriter fw = new FileWriter( outFileName );
        +      outPrintWriter = new XtpipesPrintWriter( fw );
        +      returnToFile = true;
        +   } catch(Exception e){
        +      instructionErr( null, e.toString(), 12 );
        +}  }
        +>>>
        +
        +\<<<
        +if( outFileName != null ){
        +   outPrintWriter.close();
        +}
        +>>>
        +
        +\<<<
        +if( outPrintWriter == null ){
        +   outPrintWriter = new XtpipesPrintWriter(System.out,true);
        +}
        +>>>
        +
        +% 
        +\AtEndDocument{
        +   \OutputCodE\
        +}
        +\AddFile{XtpipesPrintWriter.java}{xtpipes}
        +
        +\<<<
        +package xtpipes;
        +/* XtpipesPrintWriter.java (`version), generated from `jobname.tex
        +   Copyright (C) 2009-2010 TeX Users Group
        +   Copyright (C) `CopyYear.2002. Eitan M. Gurari
        +` */
        +import java.io.*;
        +public class XtpipesPrintWriter extends PrintWriter {
        +   public XtpipesPrintWriter() {
        +     super(System.out, true);
        +   }
        +   public XtpipesPrintWriter (PrintStream ps, boolean b){
        +     super(ps, b);
        +   }
        +   public XtpipesPrintWriter (OutputStream ps, boolean b){
        +     super(ps, b);
        +   }
        +   public XtpipesPrintWriter (FileWriter fw){
        +     super(fw);
        +   }
        +   public XtpipesPrintWriter (Writer wr){
        +     super(wr);
        +   }
        +   public void print(String str) {
        +     super.print( XtpipesUni.toUni(str, "") );
        +   }
        +   public void println(String str) {
        +     super.println( XtpipesUni.toUni(str, "") );
        +}  }
        +>>>
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{The xtpipes Script}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +The translation of a file is driven by a script that determines the
        +transformations to be applied to the diffrent fragments of the input
        +data.  The name of the script may be found in different locations.
        +
        +\begin{itemize}
        +\item
        +A xtpipes processing instruction within the input
        +\item
        +Command line option `-s'
        +\item
        +A .map  file that checks the data characteristics to determine the
        +script. Currently available only to input files, not to input strings.
        +\end{itemize}
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Command Line Options}
        +%%%%%%%%%%%%%
        +
        +
        +A script should satisfy  the rules of `xtpipes.dtd',
        +and a map should satisfy the rules of `xtpipes-map.dtd'.
        +
        +
        +
        +
        +\<<<
        +n++;
        +if( n < args.length ){ scriptFile=args[n]; }
        +else {
        +  System.err.println(
        +      "--- Error --- Missing field for -s argument" );
        +  inFile = null; inData = null;  break;
        +}
        +>>>
        +
        +
        +\<<<
        +n++;
        +if( n < args.length ){ scriptMap=args[n]; }
        +else {
        +  System.err.println(
        +      "--- Error --- Missing field for -S argument" );
        +  inFile = null; inData = null;  break;
        +}
        +>>>
        +
        +
        +\<<<
        +n++;
        +if( n < args.length ){
        +   i_scriptDir=args[n];
        +} else {
        +  System.err.println(
        +      "--- Error --- Missing field for -i argument" );
        +  inFile = null; inData = null; break;
        +}
        +>>>
        +
        +
        +
        +
        +\<<<
        +public static String scriptFile;
        +private static String scriptMap;
        +static String i_scriptDir;
        +>>>
        +
        +
        +\<<<
        +scriptFile = null;
        +i_scriptDir = null;
        +scriptMap = null;
        +>>>
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Getting the Start Up Script}
        +%%%%%%%%%%%%%
        +
        +The command line arguments may provide a pointer to
        +a `scriptFile' and a pointer to an algorithm `scriptMap'
        +for getting the script file name.
        +
        +With and without ml2xml
        +
        +\<<<
        +if( scriptMap != null ){
        +   try{
        +      String f = FileInfo.searchFile( scriptMap );
        +      if( f == null ){
        +         throw new java.io.FileNotFoundException( scriptMap );
        +      } else {
        +         scriptMap = f;
        +      }
        +      `
        +      saxReader.setContentHandler( new DefaultHandler(){
        +         `
        +        } );
        +      InputStream inputStream =
        +           (InputStream) (new File(scriptMap).toURI().toURL().openStream());
        +      saxReader.parse( new InputSource(inputStream) );
        +      saxReaderStack.push( saxReader );
        +   } catch( java.io.FileNotFoundException e ){
        +      instructionErr( null,
        +                      "File not found: " + e.getMessage()
        +                      + "; command line option -i",
        +                      33 );
        +   } catch( Exception e ){
        +      instructionErr( null, e.toString(), e.getStackTrace(), 27 );
        +   }
        +}
        +if( scriptFile == null ){
        +    scriptFile = "xtpipes-default.4xt";
        +}
        +>>>
        +
        +
        +\<<<
        +private Stack  condition = new Stack  ();
        +>>>
        +
        +\<<<
        +public void startDocument () {
        +   condition.push( Boolean.valueOf(true) );
        +}
        +>>>
        +
        +\<<<
        +public void startElement(String ns, String sName,
        +                        String qName, Attributes atts) {
        +   if( condition == null ){ return; }
        +   `
        +   boolean cond = ((Boolean) condition.peek()).booleanValue();
        +   if( qName.equals("when") ){
        +      if( cond ){ ` }
        +   }
        +   else
        +   if( qName.equals("command-line") ){
        +      if( scriptFile != null ){
        +        `
        +        condition = null;
        +        return;
        +   }  }
        +   else
        +   if( qName.equals("processing-instruction") ){
        +      if( cond ){
        +         String s = inputObject.getXtpipes();
        +         if( s != null ){
        +           Xtpipes.scriptFile = s;
        +           `
        +           condition = null;
        +           return;
        +   }  }  }
        +   else
        +   if( qName.equals("select") ){
        +      if( cond ){
        +        Xtpipes.scriptFile = atts.getValue("name");
        +        `
        +        condition = null;
        +        return;
        +   }  }
        +   condition.push( Boolean.valueOf(cond) );
        +}
        +>>>
        +
        +
        +
        +
        +\<<<
        +public void endElement(String ns, String sName, String qName) {
        +   if( condition == null ){ return; }
        +   `
        +   condition.pop();
        +}
        +>>>
        +
        +
        +
        +\<<<
        +String name = atts.getValue("name");
        +String value = atts.getValue("value");
        +if( name.equals("system-id") ){
        +   cond = value.equals(inputObject.getSystemId());
        +}
        +else
        +if( name.equals("public-id") ){
        +   cond = value.equals(inputObject.getPublicId());
        +}
        +else
        +if( name.equals("dtd-root") ){
        +   cond = value.equals(inputObject.getDtdRoot());
        +}
        +else
        +if( name.equals("root") ){
        +   cond = value.equals(inputObject.getRoot());
        +}
        +else
        +if( name.equals("ext") ){
        +   cond = inputObject.getFilename().endsWith("." + value);
        +}
        +else
        +if( name.equals("prefix") ){
        +   name = inputObject.getFilename();
        +   if( name != null ){
        +      int i = name.lastIndexOf('/');
        +      if( (i != -1) && ((i+1) < name.length()) ){
        +         name = name.substring(i+1);
        +      }
        +      i = name.lastIndexOf('\\');
        +      if( (i != -1) && ((i+1) < name.length()) ){
        +         name = name.substring(i+1);
        +      }
        +      cond = name.startsWith(value);
        +}  }
        +else
        +if( name.equals("meta-type") ){
        +   cond = value.equals(inputObject.getMetaType());
        +}
        +else
        +if( name.equals("content-type") ){
        +   cond = value.equals(inputObject.getContentType());
        +}
        +>>>
        +
        +
        +
        +
        +
        +
        +
        +\<<<
        +if( trace ){
        +   Xtpipes.logWriter.println( " Found script file in map: "
        +                                + Xtpipes.scriptFile );
        +}
        +>>>
        +
        +
        +\<<<
        +if( Xtpipes.trace ){
        +   String s =  "<" + qName + "\n";
        +   for(int i=0; i>>
        +
        +\<<<
        +if( Xtpipes.trace ){
        +   String s =  "";
        +   Xtpipes.logWriter.println( s );
        +}
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{DTDs}
        +%%%%%%%%%%%%%
        +
        +
        +
        +%%%%%%%%%%%%%
        +\immediate\openin15=xtpipes.dtd
        +\ifeof15 \else
        +   \immediate\closein15
        +   [\HPage{xtpipes.dtd}
        +     \verbatiminput{xtpipes.dtd}
        +   \EndHPage{}]
        +\fi
        +%%%%%%%%%%%%%
        +%
        +%%%%%%%%%%%%%
        +\immediate\openin15=xtpipes-map.dtd
        +\ifeof15 \else
        +   \immediate\closein15
        +   [\HPage{xtpipes-map.dtd}
        +     \verbatiminput{xtpipes-map.dtd}
        +   \EndHPage{}]
        +\fi
        +%%%%%%%%%%%%%
        +
        +\begin{verbatim}
        + ... 
        +\end{verbatim}
        +
        +\<<<
        +
        +)* >
        +
        +>>>
        +
        +
        +% 
        +\AtEndDocument{
        +   \OutputCodE\
        +}
        +
        +\expandafter\AddFile\BIN{xtpipes-map.dtd}{xtpipes\Slash lib}
        +
        +\<<<
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +>>>
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Indirect Scripts}
        +%%%%%%%%%%%%%
        +
        +
        +
        +If the root xtpipes element has no children, the input file is
        +searched for an alternative script within a processing instruction of
        +the form \verb++.
        +
        +\
        +   ...
        +   
        +
        +\end{verbatim}
        +
        +
        +If provided, the {\bf name attribute} is associated to the outcome.
        +If omitted, the output file name from the command line is assumed. If
        +such file name is not provided, the standard I/O stream is assumed.
        +
        +If the {\bf xml attribute} is not internally defined (within the hash
        +table), a file name is assumed.  If not provided, it stands for the
        +input file name provided in the command line.
        +
        +The \verb+content-handler+ attribute gets a comma seperated list of
        +classes names. The first argument refers to a content handler, the
        +other arguments refer to filters. A content handler gets five
        +arguments: output stream, an HashMap refering to the different scripts
        +enclosed by the sax instruction, a method, log stream, and a boolean
        +trace indicator.  A filter and a lexical-constractor gets three
        +arguments: output stream, log stream, and a boolean trace indicator.
        +
        +The sax instruction applies the filters and the content handler on the
        +provided xml string.  The script elements offer definitions of scripts
        +delivered to the content handler. The ScriptsManager content handler
        +of the distribution (Section~\ref{ScriptsManager}), for instance,
        +invokes these scripts when their corresponding named elemets are
        +encountered.
        +
        +
        +\<<<
        +| sax
        +>>>
        +
        +
        +\<<<
        +
        + )*  >
        +
        +
        +>>>
        +
        +\<<<
        +String errMsg = "";
        +try{
        +   `
        +   `
        +   `
        +   `
        +   XMLReader reader = saxReader;
        +   `
        +   errMsg = "setContentHandler( "
        +            + className[0].trim() + " )";
        +   saxReader.setContentHandler( (org.xml.sax.ContentHandler) ch );
        +   `
        +   `
        +   if( inputSource==null ){
        +       `
        +   } else {
        +       errMsg = "xtpipes sax parsing error";
        +       saxReader.parse( inputSource );
        +   }
        +   `
        +   saxReaderStack.push( reader );
        +} catch ( java.io.FileNotFoundException e ){
        +   instructionErr( node, errMsg
        +                   + "could not find file: " + e.getMessage(), 19 );
        +} catch ( ClassNotFoundException e ){
        +   instructionErr( node, errMsg
        +                   + " class not found: "
        +                   + e.getMessage() + "\n classpath = "
        +                   + System.getProperty("java.class.path")
        +                   + " ---", 22 );
        +} catch ( java.lang.reflect.InvocationTargetException e ){
        +   instructionErr( node, errMsg + ": " + e.getCause(), 23 );
        +} catch ( Exception e ){
        +   Xtpipes.logWriter.flush();
        +   e.printStackTrace();
        +   instructionErr( node, errMsg + ": " + e.toString(), 29 );
        +}
        +>>>
        +
        +\<<<
        +errMsg = "While parsing file " + xml + ": ";
        +InputStream inputStream = null;
        +if( Xtpipes.ml2xml == null ){
        +   if( Xtpipes.trace ){
        +       Xtpipes.logWriter.println(
        +         "No request for ml2xml configuration (command line option -x)" );
        +   }
        +   `
        +} else {
        +   `
        +}
        +saxReader.parse( new InputSource(inputStream) );
        +`
        +>>>
        +
        +\<<<
        +try{
        +    inputStream = (InputStream) (new File(xml).toURI().toURL().openStream());
        +} catch ( java.io.FileNotFoundException ioe ){
        +    try{
        +       URL url = null;
        +       try {
        +           url = new URL(xml);
        +       } catch ( java.net.MalformedURLException fnf ){
        +           url = new File(xml).toURI().toURL();
        +       }
        +       inputStream = (InputStream) (url.openStream());
        +    } catch ( java.io.FileNotFoundException fnf ){
        +        inputStream = (InputStream)
        +           (
        +              new File( new File(xml).toURI().toURL().toString() )
        +              . toURI().toURL()
        +              . openStream()
        +           );
        +}   }
        +>>>
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsubsection{SAX Reader}
        +%%%%%%%%%%%%%
        +
        +The sax reader is pushed into the stack when its job is done, for
        +use in other sax instructions.  The stack is needed because nested sax
        +instructions need unspecified number of readers. The filters may
        +change the sax readers, so the readers need saving for later storing
        +them in the stacks.
        +
        +\<<<
        +XMLReader saxReader;
        +if( saxReaderStack.empty() ){
        +   SAXParser saxParser = saxFactory.newSAXParser();
        +   saxReader = saxParser.getXMLReader();
        +   `
        +} else {
        +   saxReader = (XMLReader) saxReaderStack.pop();
        +}
        +>>>
        +
        +
        +
        +
        +\<<<
        +saxFactory = SAXParserFactory.newInstance();
        +saxFactory.setValidating(false);
        +>>>
        +
        +\<<<
        +private static Stack  saxReaderStack;
        +>>>
        +
        +
        +\<<<
        +saxReaderStack = new Stack  ();
        +>>>
        +
        +%%%%%%%%%%%%%
        +\subsection{Handling DOCTYPE Statements}
        +%%%%%%%%%%%%%
        +
        +
        +The following code hides the DOCTYPE entry when searching the xtpipes
        +processing instruction and when loading an input file.
        +
        +\<<<
        +saxReader.setEntityResolver(new org.xml.sax.EntityResolver() {
        +   public InputSource resolveEntity(
        +                          String publicId, String systemId) {
        +     if( (new File(systemId)).exists() ){
        +        return new org.xml.sax.InputSource( systemId );
        +      }
        +      StringReader strReader = new StringReader("");
        +      return new org.xml.sax.InputSource(strReader);
        +   }
        +});
        +>>>
        +
        +The default SAX behavior observes the DOCTYPE statement and assumes
        +the following setup.
        +
        +\begin{verbatim}
        +saxReader.setEntityResolver(new org.xml.sax.EntityResolver() {
        +   public InputSource resolveEntity(
        +      String publicId, String systemId) {
        +      return null;
        +   }
        +});
        +\end{verbatim}
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsubsection{Input}
        +%%%%%%%%%%%%%
        +
        +
        +\<<<
        +Node xmlNode = node.getAttributes().getNamedItem( "xml" );
        +InputSource inputSource=null;
        +String xml = null;
        +if( xmlNode == null ){
        +   `
        +} else {
        +   xml = xmlNode.getNodeValue();
        +   String doc = (String) map.get(xml);
        +   if( doc!=null ){
        +      byte [] bytes = doc.getBytes("UTF-8");
        +      ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
        +      inputSource = new InputSource( bais );
        +}  }
        +>>>
        +
        +
        +\<<<
        +if( inData == null ){
        +   xml = inFile;
        +} else {
        +   byte [] bytes = inData.getBytes("UTF-8");
        +   ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
        +   inputSource = new InputSource( bais );
        +}
        +>>>
        +
        +
        +%%%%%%%%%%%%%
        +\subsubsection{Output Stream}
        +%%%%%%%%%%%%%
        +
        +
        +\<<<
        +Node nameNode = node.getAttributes().getNamedItem("name");
        +PrintWriter out;
        +CharArrayWriter caos = null;
        +if( nameNode == null ){
        +   out = outPrintWriter;
        +   returnToFile = false;
        +} else {
        +   caos = new CharArrayWriter();
        +   out = new PrintWriter( caos );
        +}
        +>>>
        +
        +\<<<
        +if( nameNode != null ){
        +   String name = nameNode.getNodeValue();
        +   char [] chars = caos.toCharArray() ;
        +   map.put( name, (Object) new String(chars) );
        +}
        +>>>
        +
        +Note: Characters are prefered over bytes as they support
        +unicode.
        +
        +%%%%%%%%%%%%%
        +\subsection{Get Content Handler for SAX}
        +%%%%%%%%%%%%%
        +
        +\<<<
        +String [] className = node.getAttributes()
        +                     .getNamedItem( "content-handler" )
        +                     .getNodeValue()
        +                     .split(",");
        +>>>
        +
        +
        +
        +
        +The constructor of a content handler is provided five arguments:
        +
        +\begin{itemize}
        +\item
        +An output stream
        +\item
        +A hash map containing the enclosed defdinitions of scripts
        +\item A method name
        +\item A log stream
        +\item A trace flag
        +\end{itemize}
        +
        +
        +\<<<
        +Class [] argTypes = {
        +         PrintWriter.class, HashMap.class, Method.class,
        +         PrintWriter.class, boolean.class };
        +`
        +Object parmValues[] = new Object[5];
        +parmValues[0] = out;
        +`  parmValues[1] = scripts;
        +parmValues[2] = method;
        +parmValues[3] = Xtpipes.logWriter;
        +parmValues[4] = (Object) Xtpipes.trace;
        +Class cls = Class.forName( className[0].trim() );
        +Constructor c = cls.getConstructor( argTypes );
        +Object ch = (Object) c.newInstance( parmValues );
        +>>>
        +
        +\<<<
        +HashMap  scripts = new HashMap  ();
        +Node script = node.getFirstChild();
        +while( script != null ){
        +  if( script.getNodeType()==Node.ELEMENT_NODE ){
        +     String element = script.getAttributes().getNamedItem( "element" )
        +                                       .getNodeValue();
        +     if( scripts.containsKey(element) ){
        +        System.err.println(
        +           "--- Warning --- redfining script: " + element );
        +     }
        +     scripts.put( element, (Object) script );
        +  }
        +  script = script.getNextSibling();
        +}
        +>>>
        +
        +\<<<
        +Class  cls = Xtpipes.class;
        +Class [] argTypes = { Node.class, String.class };
        +method = cls.getMethod( "execute", argTypes );
        +>>>
        +
        +\<<<
        +private static Method method;
        +>>>
        +
        +%%%%%%%%%%%%%
        +\subsection{Get Filters}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +for( int i=1; i>>
        +
        +
        +The filters are assumed to have a tri-parameter constructors which
        +get an output stream for first arguments, log stream for second argument, and
        +a trace boolean value for third argument.
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Get Lexical Handler for SAX}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +The constructor of a lexical handler is provided the
        +content handler as an argument.
        +
        +
        +
        +\<<<
        +Node lexAttr = node.getAttributes()
        +                  .getNamedItem( "lexical-handler" );
        +if( lexAttr != null ){
        +   String lexName = lexAttr.getNodeValue();
        +   argTypes = new Class[3];
        +   argTypes[0] = Class.forName( className[0].trim() );
        +   argTypes[1] = PrintWriter.class;
        +   argTypes[2] = boolean.class;
        +   parmValues = new Object[3];
        +   parmValues[0] = ch;
        +   parmValues[1] = Xtpipes.logWriter;
        +   parmValues[2] = (Object) Xtpipes.trace;
        +   errMsg = "Class.forName( " + lexName.trim() + ") " ;
        +   cls = Class.forName( lexName.trim() );
        +   errMsg = "get-constructor " +
        +                lexName.trim() +
        +                "( " + className[0].trim() + " ) " ;
        +   c = cls.getConstructor( argTypes );
        +   errMsg = "get-object " +
        +               lexName.trim() + "( ... ) " ;
        +   Object xh = (Object) c.newInstance( parmValues );
        +   errMsg = "set lexical handler " + lexName.trim() + " ";
        +   saxReader.setProperty(
        +       "http://xml.org/sax/properties/lexical-handler",
        +       (org.xml.sax.ext.LexicalHandler) xh
        +    );
        +}
        +>>>
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{Entity Resolver}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Interface}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +\<<<
        +new XtpipesEntityResolver()
        +>>>
        +
        +\<<<
        +class XtpipesEntityResolver implements  org.xml.sax.EntityResolver {
        +   `
        +}
        +>>>
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Implementation}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +public InputSource resolveEntity(String publicID, String systemID)
        +                                                    throws SAXException {
        +   if( Xtpipes.trace ){
        +      Xtpipes.logWriter.println( "Resolving: publicID = \" " + publicID
        +                + "\"  systemID = \"" + systemID + "\"" );
        +   }
        +   String file = FileInfo.searchFile( systemID );
        +   if( file != null ){
        +     try{
        +        file = new File(file).toURI().toURL().toString();
        +        return new InputSource( file );
        +     } catch( java.net.MalformedURLException mfe){
        +        throw new SAXException(
        +          "--- xtpipes error 30 --- improper file name: " + file  );
        +   } }
        +   return null;
        +}
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{File Information}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Outline}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +% 
        +\AtEndDocument{
        +   \OutputCodE\
        +}
        +
        +\AddFile{FileInfo.java}{xtpipes}
        +
        +\<<<
        +package xtpipes;
        +/* FileInfo.java (`version), generated from `jobname.tex
        +   Copyright (C) 2009-2010 TeX Users Group
        +   Copyright (C) `CopyYear.2002. Eitan M. Gurari
        +` */
        +`
        +public class FileInfo{
        +     `
        +   public FileInfo(PrintWriter log, String iii_scriptDir, boolean trace) {
        +      FileInfo.log = log;
        +      FileInfo.ii_scriptDir = iii_scriptDir;
        +      FileInfo.trace = trace;
        +      `
        +      `
        +   }
        +   `
        +   `
        +   `
        +   `
        +}
        +>>>
        +
        +\<<<
        +static String [] classPaths = null;
        +static String [] scriptPaths = null;
        +static java.util.HashMap  registry =
        +                                  new java.util.HashMap ();
        +static String slash = System.getProperty("file.separator");
        +static String ii_scriptDir;
        +static PrintWriter log;
        +static boolean trace;
        +>>>
        +
        +
        +\<<<
        +import java.io.File;
        +import java.io.PrintWriter;
        +>>>
        +
        +%%%%%%%%%%%%%
        +\subsection{Search Engine}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +\<<<
        +public static String searchFile( String file ){
        +   String key = ((ii_scriptDir == null)? "" : ii_scriptDir )
        +                + "!" + file;
        +   String result = (String) registry.get( key );
        +   if( result == null ){
        +      for(int i=0; i<2; i++){
        +         if( trace ){
        +            log.println( "Searching: " + file );
        +         }
        +         if( (new File(file)).exists() ){
        +            result = ( file.indexOf(slash) == -1 )?
        +                         (System.getProperty("user.dir") + slash + file)
        +                        :
        +                         file;
        +         }
        +         else {
        +            if( ii_scriptDir != null ){
        +               `
        +            }
        +            if( result == null ){
        +               `
        +         }  }
        +         if( result != null ){ break; }
        +         file =  new File(file).getName();
        +      }
        +      if( result != null ){
        +        result = FileInfo.cleanPath(result);
        +        registry.put(key, result);
        +      }
        +   }
        +   if( trace ){
        +      if( result == null ){
        +         log.println(
        +            "Directory paths from xtpipes command line option -i: "
        +                                            + ii_scriptDir );
        +      } else { log.println( "Found: " + result + "\n" ); }
        +      log.flush();
        +   }
        +   return result;
        +}
        +>>>
        +
        +
        +
        +\<<<
        +int k = scriptPaths.length;
        +while( k>0 ){
        +  k--;
        +  if( trace ){
        +    log.println( "Searching: " + file
        +                   + ", recursively in directory: " + scriptPaths[k] );
        +  }
        +  result = searchDirectory( new File(scriptPaths[k]), file);
        +  if( result != null ){ break; }
        +}
        +String s = ii_scriptDir + file;
        +if( (new File( s )).exists() ){ result = s; }
        +>>>
        +
        +
        +\<<<
        +int k = classPaths.length;
        +String toFile = "xtpipes" + slash + "lib" + slash + file;
        +while( k>0 ){
        +  k--;
        +  String s =  classPaths[k] + toFile;
        +  if( trace ){ log.println( "Searching: " + s ); }
        +  if( new File(s).exists() ){ result = s; break; }
        +}
        +>>>
        +
        +
        +\<<<
        +static String searchDirectory(File dir, String file) {
        +    String result = null;
        +    if( dir.isDirectory() ){
        +       String [] children = dir.list();
        +       for (int i=0; i>>
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Class Paths}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +\<<<
        +classPaths = FileInfo.getPaths( System.getProperty("java.class.path") );
        +>>>
        +
        +Script paths are to be encoded in a similar manner as class paths.
        +
        +\<<<
        +if( iii_scriptDir != null ){
        +   scriptPaths = FileInfo.getPaths( iii_scriptDir );
        +}
        +>>>
        +
        +\<<<
        +static String [] getPaths( String dirs ){
        +      String [] paths = null;
        +   paths = dirs.split( System.getProperty("path.separator") );
        +   int k = paths.length;
        +   while( k>0 ){
        +      k--;
        +      `
        +      int len = paths[k].length();
        +      if( (len>1) && (paths[k].lastIndexOf(slash + ".") == (len-1)) ){
        +         paths[k]  = paths[k].substring(0,len-1);
        +      } else if( (len>0) && ((len-1) != paths[k].lastIndexOf( slash )) ){
        +         paths[k] += slash;
        +   }  }
        +   return paths;
        +}
        +>>>
        +
        +
        +
        +\<<<
        +paths[k] = cleanPath( paths[k] );
        +>>>
        +
        +\<\><<<
        +if( (paths[k].length() > 0) && (paths[k].charAt(0) == '~') ){
        +  if( (paths[k].length() == 1)|| (paths[k].charAt(1) != '~') ){
        +    paths[k] = System.getProperty( "user.home" ) + paths[k].substring(1);
        +}  }
        +if( paths[k].charAt(0) == '.' ){
        +   paths[k] = System.getProperty( "user.dir" ) + slash + paths[k];
        +}
        +>>>
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{Input Objects for  XML Files}
        +%%%%%%%%%%%%%%%%%%
        +
        +The XML files my contain faults as a brute force approach is applied in
        +which the file is scanned directly without trying to build an XML object.
        +
        +%%%%%%%%%%%%%
        +\subsection{Outline}
        +%%%%%%%%%%%%%
        +
        +% 
        +\AtEndDocument{
        +   \OutputCodE\
        +}
        +
        +\AddFile{InputObject.java}{xtpipes}
        +
        +
        +\<<<
        +package xtpipes;
        +/* InputObject.java (`version), generated from `jobname.tex
        +   Copyright (C) 2009-2010 TeX Users Group
        +   Copyright (C) `CopyYear.2002. Eitan M. Gurari
        +` */
        +`
        +
        +public class InputObject{
        +      `
        +   `
        +   `
        +   `
        +   `
        +   public InputStream getInputStream(){ return inputStream; }
        +   public String getFilename(){
        +      return (url == null)?
        +         ( (connection == null)? filename
        +                               :
        +                                 connection . getURL() . toString()
        +         )
        +       : url;
        +   }
        +   public String getContentType(){ return contentType; }
        +   public String getMetaType(){ return metaType; }
        +   public String getPublicId(){ return publicId; }
        +   public String getSystemId(){ return systemId; }
        +   public String getXtpipes(){ return xtpipes; }
        +   public String getRoot(){ return root; }
        +   public String getDtdRoot(){ return dtdRoot; }
        +}
        +>>>
        +
        +\<<<
        +InputStream inputStream = null;
        +URLConnection connection = null;
        +String filename = null;
        +static PrintWriter log;
        +>>>
        +
        +\<<<
        +import java.io.PrintWriter;
        +import java.net.URL;
        +import java.net.URLConnection;
        +import java.io.ByteArrayInputStream;
        +import java.io.File;
        +import java.io.InputStream;
        +>>>
        +
        +%%%%%%%%%%%%%
        +\subsection{Constructor}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +\<<<
        +public InputObject( String filename, PrintWriter log ){
        +   InputObject.log = log;
        +   filename = filename.trim();
        +   try{
        +      inputStream = getInputStream(filename);
        +   } catch (Exception exp0){
        +      if( !filename.startsWith( "http://" ) ){
        +         try{
        +            String name = "http://" + filename;
        +            inputStream = getInputStream( name );
        +            filename = name;
        +         } catch (Exception exp1){
        +            try{
        +               String name = FileInfo.cleanPath(filename);
        +               inputStream = getInputStream( name );
        +               filename = name;
        +            } catch (Exception exp2){ inputStream = null; }
        +   }  }  }
        +   this.filename = filename;
        +}
        +>>>
        +
        +\<<<
        +public InputObject( byte [] bytes, PrintWriter log ){
        +   InputObject.log = log;
        +   inputStream = new ByteArrayInputStream( bytes );
        +}
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Stream from a  File Name}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +private java.io.InputStream getInputStream(
        +                                      String filename )
        +                                   throws java.io.IOException{
        +   if( filename == null ){ return null; }
        +   URL url;
        +   java.io.InputStream inputStream = null;
        +//   String loadingError = "Failed to get requested file.";
        +   try {
        +      url = new File(filename).toURI().toURL();
        +      inputStream =  getInputStream( url );
        +   } catch (Exception ie) {
        +       try {
        +           url = new URL(filename);
        +           inputStream =  getInputStream( url );
        +       } catch (java.io.FileNotFoundException ife) {
        +           throw new java.io.IOException(
        +              "File not found: " + filename);
        +       } catch (Exception ife) {
        +           throw new java.io.IOException(ife + "\n" + ie);
        +   }   }
        +   return inputStream;
        +}
        +>>>
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Stream from a URL}
        +%%%%%%%%%%%%%
        +
        +\<<<
        +private java.io.InputStream getInputStream( URL url )
        +                            throws java.io.FileNotFoundException,
        +                                             java.io.IOException {
        +   java.io.InputStream inputStream = null;
        +   String errMssg = "";
        +   try{
        +      connection = null;
        +      connection = url.openConnection();
        +      connection.setRequestProperty("User-Agent",
        +                      "["
        +                    + System.getProperty("os.name")
        +                    + " / "
        +                    + System.getProperty("os.arch")
        +                    + "]"
        +                    + "["
        +                    + System.getProperty("java.version")
        +                    + " - "
        +                    + System.getProperty("java.vendor")
        +                    + "]"
        +
        +           );
        +      inputStream = connection.getInputStream();
        +   } catch(java.io.FileNotFoundException ve){
        +      errMssg = "File not found: " + url;
        +      throw new java.io.FileNotFoundException(
        +                 "--- Ml2xml input error --- " + errMssg );
        +   } catch (javax.net.ssl.SSLHandshakeException ve){
        +      errMssg = "SSL Handshake Exception: " + ve.getMessage();
        +      throw new javax.net.ssl.SSLHandshakeException(
        +                 "--- Ml2xml input error --- " + errMssg );
        +   } catch (java.net.UnknownHostException ve){
        +      errMssg = "Unknown Host Exception: " + ve.getMessage();
        +      throw new java.net.UnknownHostException(
        +                   "--- Ml2xml input error --- " + errMssg );
        +   }
        +   return inputStream;
        +}
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Clean Path}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +public static String cleanPath( String path ){
        +     String slash = System.getProperty("file.separator");
        +     String userDir = System.getProperty( "user.dir" );
        +  `
        +  `
        +  `
        +  return path;
        +}
        +>>>
        +
        +\<<<
        +  if( (path.length() > 0) && (path.charAt(0) == '~') ){
        +    if( (path.length() == 1) || (path.charAt(1) != '~') ){
        +      path = System.getProperty( "user.home" )
        +                             + path.substring(1);
        +  } }
        +>>>
        +
        +\<<<
        +  if( path.startsWith("..") ){
        +     path = userDir.substring(0,
        +               Math.max(0,Math.max(
        +                 userDir.lastIndexOf("/")
        +                 ,
        +                 userDir.lastIndexOf("\\")
        +               )))
        +            + path.substring(2);
        +  }
        +  if( path.startsWith(".") ){
        +     path = userDir + slash + path.substring(1);
        +  }
        +>>>
        +
        +\<<<
        +  int i;
        +  while(
        +    ((i=path.indexOf("/..")) != -1)
        +    ||
        +    ((i=path.indexOf("\\..")) != -1)
        +  ){
        +    String s = path.substring(0,i);
        +    int j = Math.max(s.lastIndexOf("/"), s.lastIndexOf("\\"));
        +    path = path.substring(0,j) + path.substring(i+3);
        +  }
        +  while(
        +    ((i=path.indexOf("/.")) != -1)
        +    ||
        +    ((i=path.indexOf("\\.")) != -1)
        +  ){
        +    String s = path.substring(0,i);
        +    int j = Math.max(s.indexOf("/"), s.indexOf("\\"));
        +    path = path.substring(0,j) + path.substring(i+2);
        +  }
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Profile: Connecting and Reading the Input File}
        +%%%%%%%%%%%%%
        +
        +\<<<
        +public void buildProfile( boolean trace ){
        +   if( trace ){
        +      log.println(
        +         "xtpipes (`version)"
        +         + "\n   java.version: "    + System.getProperty("java.version")
        +         + "\n   java.class.path: " + System.getProperty("java.class.path")
        +         + "\n   os.name: "         + System.getProperty("os.name")
        +         + "\n   user.home: "       + System.getProperty("user.home")
        +         + "\n   user.dir: "        + System.getProperty("user.dir")
        +           );
        +   }
        +   if( connection != null ){
        +     `
        +   }
        +   `
        +   if( trace ){
        +      log.println(
        +           " url = "           + url
        +         + "\n contentType = " + contentType
        +         + "\n publicId = "    + publicId
        +         + "\n systemId = "    + systemId
        +         + "\n xtpipes = "     + xtpipes
        +         + "\n root = "        + root
        +         + "\n dtdRoot = "     + dtdRoot
        +      );
        +}  }
        +>>>
        +
        +
        +\<<<
        +contentType = connection . getContentType();
        +url = connection . getURL() . toString();
        +>>>
        +
        +
        +
        +\<<<
        +int max = 8192;
        +int buffSize = 4096;
        +byte [] buff = new byte [ buffSize ];
        +int m = 0;
        +int length = 0;
        +int ch;
        +int type = `;
        +String token = null;
        +while( m < max ){
        +   try{
        +      int k = Math.min( max - m, buffSize );
        +      length = inputStream.read( buff, 0, k );
        +      if( length == -1 ){ break; }
        +      if( length == 0  ){ continue; }
        +   } catch (java.io.IOException e){
        +      System.err.println( "--- xtpipes error --- : " + e );
        +      break;
        +   }
        +   for(int i = 0 ; i < length; i++ ){
        +     `
        +     m++;
        +}  }
        +>>>
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Profile: Scanning the Different Cases}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +\<<<
        +switch( ch = buff[i] ){
        +   case  '<':  token = "";
        +               type = `;
        +               break;
        +   case  '>':  if( token != null ){
        +                  token = token . replaceAll( "\\s+", " ");
        +                  `
        +                  token = null;
        +               }
        +               break;
        +   case '\n':
        +   case  ' ':  if( token != null ){
        +                  `
        +               }
        +               break;
        +   case  '"':
        +   case '\'':  if( token == null ){ break; }
        +               `
        +   default:    if( token != null ){
        +                  if( type == `
         ){
        +                     if( ch == 'D' ){
        +                        type = `;
        +                        token += (char) ch;
        +                     } else { token = null; type = `; }
        +                  }
        +                  else
        +                  if( token.equals("") && (type == `) ){
        +                     `
        +                  } else { token += (char) ch; }
        +}              }
        +>>>
        +
        +
        +\<<<
        +if( !token.trim().equals("") ){
        +   if( token.trim().charAt(0) == ch ){
        +     if( type == ` ){
        +        publicId = token.trim().substring(1);
        +        type = `;
        +        token = "";
        +        break;
        +     }
        +     else if( type == ` ){
        +        systemId = token.trim().substring(1);
        +        token = null;
        +        break;
        +     }
        +} }
        +>>>
        +
        +
        +\<<<
        +switch( ch ){
        +   case '!': type = `
        ;
        +             break;
        +   case '?': type = ` ;
        +             break;
        +   default:  if( Character.isLetter(ch)
        +                 && ((root == null) || (metaType == null)) ){
        +                type = `;
        +                token += (char) ch;
        +             } else { token = null; }
        +}
        +>>>
        +
        +\<<<
        +if( type == ` ){
        +   if( xtpipes == null ){
        +      int n = token.length();
        +      if( (n > 1) && (token.charAt( n - 1 ) == '?')
        +                  && (token.startsWith("xtpipes") ) ){
        +         String s = token . substring(7,n-1) . replaceAll( "\\s+", "");
        +         n = s.length();
        +         if( (n>6) && (s.startsWith("file="))
        +                   && (s.charAt(5) == s.charAt(n-1)) ){
        +           xtpipes = s.substring(6,n-1);
        +   }  }  }
        +} else if( type == ` ){
        +   if( metaType == null ){
        +      token = token . replaceAll( "\\s+", "");
        +      int k = token.indexOf("http-equiv");
        +      int n = token.indexOf("content");
        +      if( (k != -1) && (n != -1) ){
        +         if( token.length() > (Math.max(k,n)+3) ){
        +            if( token.substring(k+12).startsWith("Content-Type") ){
        +               token = token.substring(n+9);
        +               n = token.indexOf(";");
        +               if( n !=-1 ){ metaType = token.substring(0,n); }
        +   }  }  }  }
        +} else if( (type == `) && (root == null) ){
        +   root = token;
        +}
        +>>>
        +
        +\<<<
        +if( type == ` ){
        +   if( token.equals("meta") ){
        +      if( metaType == null ){
        +         type = `;
        +         token = " ";
        +      } else {
        +         token = null;
        +      }
        +   } else {
        +      if( root == null ){
        +        root = token;
        +      }
        +      token = null;
        +   }
        +} else if( type == ` ){
        +   if( token.equals("DOCTYPE") ){
        +      type = `;
        +      token = " ";
        +   } else { token = null; }
        +} else if( type == ` ){
        +   if( !token.trim().equals("") ){
        +      dtdRoot = token.trim();
        +      token = " ";
        +      type = `;
        +   } else { token = null; }
        +} else if( type == ` ){
        +   if( !token.trim().equals("") ){
        +      token = token.trim();
        +      if( token.equals("PUBLIC") ){
        +         type = `;
        +         token = "";
        +      } else if( token.equals("SYSTEM") ){
        +         type = `;
        +         token = "";
        +      } else { token = null; }
        +   }
        +} else { token += ' '; }
        +>>>
        +
        +
        +\<<<
        +String dtdRoot = null,
        +      publicId = null,
        +      systemId = null,
        +       xtpipes = null,
        +           url = null,
        +      metaType = null,
        +   contentType = null,
        +          root = null;
        +>>>
        +
        +\OP{undef type}
        +\OP{new tok}
        +\OP{root or meta}
        +\OP{pre doctype}
        +\OP{doctype}
        +\OP{doctype root}
        +\OP{doctype id}
        +\OP{public id}
        +\OP{system id}
        +\OP{proc instruction}
        +\OP{proc root}
        +\OP{meta}
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{Input Objects for XML Strings}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Search String for Indirection}
        +%%%%%%%%%%%%%
        +
        +
        +\<<<
        +scriptFile = inputObject.getXtpipes();
        +rootName = inputObject.getRoot();
        +needScript = true;
        +>>>
        +
        +
        +Remove XtPipesSearch!!!!!!!!!!!!!!
        +
        +\<\><<<
        +try{
        +       `
        +       saxReader.setContentHandler( new XtPipesSearch() );
        +      `
        +       saxReaderStack.push( saxReader );
        +} catch(Exception e){
        +e.printStackTrace();
        +   instructionErr( node, errMsg + e.toString(), 13 );
        +}
        +>>>
        +
        +\<<<
        +errMsg = "Searching   in "
        +        + inData.substring(0, Math.min(70,inData.length()))
        +        + "... : ";
        +byte [] bytes = inData.getBytes("UTF-8");
        +ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
        +InputSource is = new InputSource( bais );
        +saxReader.parse(is);
        +>>>
        +
        +%%%%%%%%%%%%%
        +\subsection{The Search Engine}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +private static class XtPipesSearch extends DefaultHandler {
        +   public void  endElement(String uri,
        +                           String localName, String qName){
        +     `
        +   }
        +   public void processingInstruction(String target, String attrs) {
        +     if( !needScript && target.equals("xtpipes") ){
        +        `
        +}  } }
        +>>>
        +
        +
        +The input file is
        +searched for an alternative script within a processing instruction of
        +the form \verb++.
        +
        +
        +\<<<
        +rootName = qName;
        +>>>
        +
        +
        +\<<<
        +try {
        +   `
        +   saxReader.setContentHandler(new DefaultHandler() {
        +      public void startElement(String uri, String localName,
        +         String qName, Attributes atts) {
        +         String filename = atts.getValue("file");
        +         if( filename != null ){
        +            scriptFile = filename;
        +            `
        +            needScript = true;
        +      }  }
        +   });
        +   String str = "";
        +   StringReader reader = new StringReader(str);
        +   InputSource in = new InputSource(reader);
        +   saxReader.parse(in);
        +   saxReaderStack.push( saxReader );
        +} catch(Exception e){
        +   System.err.println( "--- Error 10 --- " + e );
        +}
        +>>>
        +
        +
        +
        +
        +
        +
        +
        +\<<<
        +private static String  rootName;
        +>>>
        +
        +
        +\<<<
        +rootName = null;
        +>>>
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{Information About the Transformation}
        +%%%%%%%%%%%%%%%%%%
        +
        +%%%%%%%%%%%%%
        +\subsection{User's System}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +logWriter.println(
        +     "xtpipes (`version)"
        +     + "\n java.version: "    + System.getProperty("java.version")
        +     + "\n java.class.path: " + System.getProperty("java.class.path")
        +     + "\n os.name: "         + System.getProperty("os.name")
        +     + "\n user.home: "       + System.getProperty("user.home")
        +     + "\n user.dir: "        + System.getProperty("user.dir")
        +);
        +for( int k=0; k>>
        +
        +%%%%%%%%%%%%%
        +\subsection{Script to be Used}
        +%%%%%%%%%%%%%
        +
        +
        +\<<<
        +if( messages ){
        +   logWriter.println(
        +      "Requesting XtPipes script file: "
        +      + filename );
        +}
        +>>>
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Preamble Attribute}
        +%%%%%%%%%%%%%
        +
        +\<<<
        +if ( (attr != null) && messages ) {
        +   logWriter.println( attr.getNodeValue() );
        +}
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Tracing}
        +%%%%%%%%%%%%%
        +
        +
        +\<<<
        +static boolean trace;
        +>>>
        +
        +\<<<
        +trace = false;
        +>>>
        +
        +
        +
        +\<<<
        +if( trace ){
        +   logWriter.print( "[##] = xtpipes => " + instruction );
        +   if( node.hasAttributes() ){
        +      NamedNodeMap attributes = node.getAttributes();
        +      for(int i=0; i < attributes.getLength(); i++ ){
        +         Node attr = attributes.item(i);
        +         logWriter.print( " "   + attr.getNodeName()
        +                         + "=\"" + attr.getNodeValue() + "\"" );
        +   } }
        +   logWriter.println(); logWriter.flush();
        +}
        +>>>
        +
        +\<<<
        +if( trace ){
        +   logWriter.print( "--> true" );
        +}
        +>>>
        +
        +\<<<
        +if( trace ){
        +   logWriter.print( "--> true" );
        +}
        +>>>
        +
        +
        +\<<<
        +if( trace ){
        +   logWriter.println( "(" + scriptFile + ")" );
        +}
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{loose Ends}
        +%%%%%%%%%%%%%%%%%%
        +
        +%%%%%%%%%%%%%%%%%%
        +\subsection{Fix XML Defaults}
        +%%%%%%%%%%%%%%%%%%
        +
        +\<<<
        +private static String [] ml2xml = null;
        +static Class ml2xmlClassObj = null;
        +>>>
        +
        +\<<<
        +if( args[n].substring(2).equals("") ){
        +   if( ml2xml == null ){ ml2xml = new String[0]; }
        +} else {
        +   if( ml2xml == null ){
        +      ml2xml = new String[1];
        +   } else {
        +      String [] m2x = new String [ml2xml.length + 1];
        +      for(int cnt=0; cnt < ml2xml.length; cnt++){
        +        m2x[cnt] = ml2xml[cnt];
        +      }
        +      ml2xml = m2x;
        +   }
        +   ml2xml[ ml2xml.length - 1 ] = args[n].substring(2);
        +}
        +>>>
        +
        +
        +\<<<
        +try{
        +   ml2xmlClassObj = Class.forName( "ml2xml.Ml2xml" );
        +} catch (java.lang.ClassNotFoundException cnf ){
        +   instructionErr( null, "Class not found: ml2xml.Ml2xml", 25 );
        +}
        +Class [] argTyp = { String.class, String[].class };
        +Constructor con = ml2xmlClassObj.getConstructor( argTyp );
        +try{
        +   `
        +   inputStream = (InputStream) con.newInstance(
        +         new Object[]{xml, ml2xml}
        +      );
        +} catch(java.lang.reflect.InvocationTargetException ite){
        +   String s = "Problem at: ml2xml.Ml2xml(" + xml + ","
        +              + "new String[]{" ;
        +   for(int i=0; i < Xtpipes.ml2xml.length; i++){
        +      s += ((i==0)? "\"" : ", \"") + Xtpipes.ml2xml[i] + "\"";
        +   }
        +   s += "})";
        +   instructionErr( null, s + "; " + ite.getCause(), 38);
        +}
        +>>>
        +
        + ite.getTargetException().printStackTrace();
        +
        +
        +\<<<
        +if( Xtpipes.ml2xml != null ){
        +   Class [] argTyp = {};
        +   Method m = ml2xmlClassObj . getMethod( "closeFiles", argTyp );
        +   m.invoke( null, new Object[0] );
        +}
        +>>>
        +
        +\<<<
        +if( Xtpipes.trace ){
        +   String s = "Calling: ml2xml.Ml2xml(inputStream,"
        +              + "new String[]{" ;
        +   for(int i=0; i < Xtpipes.ml2xml.length; i++){
        +      s += ((i==0)? "\"" : ", \"") + Xtpipes.ml2xml[i] + "\"";
        +   }
        +   s += "})";
        +   Xtpipes.logWriter.println( s );
        +}
        +>>>
        +
        +
        +\<<<
        +if( ml2xmlClassObj != null ){
        +  Class [] argTypes = { };
        +  Method m = ml2xmlClassObj.getMethod( "closeFiles", argTypes );
        +  Object parmValues[] = new Object[0];
        +  m.invoke( null, parmValues );
        +}
        +>>>
        +
        +
        +\<<<
        +import java.lang.reflect.Constructor;
        +>>>
        +
        +Ml2xml is referenced through reflection instead of directly so that xtpipes can
        +be delivered also without that utility, e.g., for tex4ht where no treatment of faulty
        +XML file is to be done. In fact, this approach can be generalized to offer
        +arbitrary filter for the input.
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%% 
        +\subsection{Unicode Filter}
        +%%%%%%%%%%%%%%%%%%
        +
        +Non-ASCII characters are translated into unicode hexadecimal entities.
        +The same holds for ascii characters listed within the filter.
        +
        +\AtEndDocument{
        +   \OutputCodE\
        +}
        +\AddFile{XtpipesUni.java}{xtpipes}
        +
        +
        +\<<<
        +/* XtpipesUni.java (`version), generated from `jobname.tex
        +   Copyright (C) 2009-2010 TeX Users Group
        +   Copyright (C) `CopyYear.2002. Eitan M. Gurari
        +` */
        +package xtpipes;
        +public class XtpipesUni{
        +   `
        +   `
        +}
        +>>>
        +
        +\<<<
        +private static int D800 = Integer.parseInt("D800", 16);
        +private static int DFFF = Integer.parseInt("DFFF", 16);
        +private static int DC00 = Integer.parseInt("DC00", 16);
        +private static int X400 = Integer.parseInt("400",16);
        +private static int X10000 = Integer.parseInt("10000",16);
        +
        +
        +public static String toUni( char[] ch, int start, int length,
        +                                           String filter ){
        +   StringBuffer buf = new StringBuffer(length);
        +   for (int i = 0; i < length; i++) {
        +       int chr = ch[ start + i ];
        +       boolean ascii =  (chr == '\n')
        +                        || (chr > 31) && (chr < 127) ;
        +       if( filter.indexOf(chr) > -1 ){ ascii = false; }
        +
        +       if( (chr >= D800) && (chr<= DFFF) ){
        +          chr = ((ch[i] - D800) * X400 + (ch[++i] - DC00)) + X10000;
        +       }
        +
        +
        +       buf.append(
        +         ascii ? Character.toString((char) chr)
        +               : ("&#x"
        +                 + Integer.toHexString(chr).toUpperCase()
        +                 + ";" ) );
        +   }
        +   return new String(buf);
        +}
        +>>>
        +
        +\<<<
        +public static String toUni( String s, String filter ){
        +   char [] ch = s.toCharArray();
        +   int length = ch.length;
        +   return toUni(ch, 0, length, filter);
        +}
        +>>>
        +
        +
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Error Messagesg}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +
        +
        +\<<<
        +private static void instructionErr( Node node, String e, int num )
        +                                     throws Exception {
        +   String err = "--- xtpipes error " + num + " --- ";
        +   if( node != null ){
        +      err += "At <" + node.getNodeName();
        +      NamedNodeMap attr = node.getAttributes();
        +      for(int i=0; i
        +   Xtpipes.logWriter.flush();
        +   if( exceptionErrs ) { throw new Exception( err );  }
        +   else {
        +      System.err.println( err );
        +      System.exit(1);
        +   }
        +}
        +>>>
        +
        +
        +
        +\<<<
        +private static void instructionErr( Node node, String e,
        +                                StackTraceElement[] st, int num )
        +                                     throws Exception {
        +   Xtpipes.logWriter.println(
        +      "--- xtpipes error " + num + " --- " + e
        +   );
        +   for(int i=st.length-1; i>=0; i-- ){
        +      Xtpipes.logWriter.println( st[i].toString() );
        +   }
        +   instructionErr( node, e, num );
        +}
        +>>>
        +
        +
        +
        +
        +\<<<
        +new ErrorHandler() {
        +    public void warning(SAXParseException e) throws SAXParseException {
        +      showSpecifics("warning",e);
        +    }
        +    public void error(SAXParseException e) throws SAXParseException {
        +      showSpecifics("error",e);
        +    }
        +    public void fatalError(SAXParseException e) throws SAXParseException {
        +      showSpecifics("fatal error",e);
        +    }
        +    public void showSpecifics(String s, SAXParseException e)
        +                                                throws SAXParseException {
        +      String err =   "--- xtpipes " + s + " 24 --- " + e.getSystemId()
        +                     + " line " + e.getLineNumber()
        +                     + " col "  + e.getColumnNumber()
        +                     + " : "    + e.getMessage() ;
        +      if( exceptionErrs ) { throw new SAXParseException(
        +                                     err, (org.xml.sax.Locator) null ); }
        +      else {
        +         System.err.println( err );
        +         System.exit(1);
        +}   } }
        +>>>
        +
        +
        +
        +
        +
        +The follower listeners catch errors but their messages are not
        +delivered through the call to the new exceptions (why?).  The field
        +errMssg is used so that error 16 will produce the same error messages.
        +
        +\begin{description}
        +\item[Catches errors in the XSLT file]
        +
        +
        +
        +\<<<
        +new ErrorListener() {
        +   public void warning(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   public void error(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   public void fatalError(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   void showSpecifics(TransformerException e)
        +                                               throws  TransformerException{
        +     String err = e.getMessage() ;
        +     String loc = e.getLocationAsString();
        +     if( loc != null ){ err = loc + ": " + err; }
        +     err = "XSL stylesheet problem: " + err;
        +     if( errMssg == null ){ errMssg = err; }
        +     throw new TransformerException(err);
        +}  }
        +>>>
        +
        +
        +\item [Catches errors in the XML file]
        +
        +\<<<
        +new ErrorListener() {
        +   public void warning(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   public void error(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   public void fatalError(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   void showSpecifics(TransformerException e)
        +                                               throws  TransformerException{
        +     String err = e.getMessage() ;
        +     String loc = e.getLocationAsString();
        +     if( loc != null ){ err = loc + ": " + err; }
        +     if( errMssg == null ){ errMssg = err; }
        +     err = "XML document prblem: " + err;
        +     throw new TransformerException(err);
        +}  }
        +>>>
        +
        +
        +\<<<
        +new ErrorListener() {
        +   public void warning(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   public void error(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   public void fatalError(TransformerException e) throws TransformerException {
        +     showSpecifics(e);
        +   }
        +   void showSpecifics(TransformerException e)
        +                                               throws  TransformerException{
        +     String err = e.getMessage() ;
        +     String loc = e.getLocationAsString();
        +     if( loc != null ){ err = loc + ": " + err; }
        +     throw new TransformerException(err);
        +}  }
        +>>>
        +
        +
        +
        +\end{description}
        +
        +
        +\<<<
        +public static String errMssg;
        +>>>
        +
        +%%%%%%%%%%%%%%%%%%
        +\section{Serialize Dom}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +\<<<
        +static String serialize( Node root ){
        +   if( root.getNodeType() == Node.TEXT_NODE) {
        +         return root.getNodeValue();
        +   }
        +   if( root.getNodeType() == Node.ELEMENT_NODE) {
        +      String ser = "";
        +      String tagName = root.getNodeName();
        +      ser += "<" + tagName;
        +      `
        +      ser += "\n>";
        +      `
        +      ser += "";
        +      return ser;
        +   }
        +   if( root.getNodeType() == Node.DOCUMENT_NODE) {
        +      String ser = "";
        +      `
        +      return ser;
        +   }
        +   if( root == null ){ return "null"; }
        +   return "";
        +}
        +>>>
        +
        +\<<<
        +NodeList children = root.getChildNodes();
        +if(children.getLength() > 0) {
        +   for(int i = 0; i < children.getLength(); i++) {
        +      ser += serialize(children.item(i));
        +}  }
        +>>>
        +
        +\<<<
        +NamedNodeMap attributes = root.getAttributes();
        +for(int i = 0; i < attributes.getLength(); i++) {
        +   Attr attribute = (Attr) attributes.item(i);
        +   ser += "\n" + attribute.getName() + "=\""
        +               + attribute.getValue() + "\" ";
        +}
        +>>>
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Clean Xmlns}
        +%%%%%%%%%%%%%
        +
        +
        +\<<<
        +static ArrayList nsName, nsValue;
        +static void cleanXmlns( Node root ){
        +   if( root.getNodeType() == Node.ELEMENT_NODE) {
        +      int top = nsName.size();
        +      `
        +      `
        +       for(int i=nsName.size(); i>top; ){
        +         i--;
        +         nsName.remove(i);
        +         nsValue.remove(i);
        +       }
        +   } else if( root.getNodeType() == Node.DOCUMENT_NODE) {
        +      nsName = new ArrayList();
        +      nsValue = new ArrayList();
        +      `
        +      nsName = null;
        +      nsValue = null;
        +}  }
        +>>>
        +
        +
        +
        +\<<<
        +NodeList children = root.getChildNodes();
        +if(children.getLength() > 0) {
        +   for(int i = 0; i < children.getLength(); i++) {
        +      cleanXmlns(children.item(i));
        +}  }
        +>>>
        +
        +\<<<
        +ArrayList remove = new ArrayList();
        +NamedNodeMap attributes = root.getAttributes();
        +for(int i = 0; i < attributes.getLength(); i++) {
        +   Attr attribute = (Attr) attributes.item(i);
        +   String name = attribute.getName();
        +   if( name.startsWith("xmlns") ){
        +     if( (name.length() == 5) || (name.charAt(5) == ':') ){
        +        String value = attribute.getValue();
        +        `
        +        if( bool ){ remove.add(attribute);
        +        } else { nsName.add(name); nsValue.add(value); }
        +}  } }
        +for(int i=remove.size(); i>0; ){
        +   i--;
        +  ((Element) root).removeAttributeNode( (Attr) remove.get(i) );
        +}
        +remove = null;
        +>>>
        +
        +\<<<
        +boolean bool = false;
        +for(int k=nsName.size(); k>0; ){
        +  k--;
        +  if( ((String) nsName.get(k)) . equals(name) ){
        +     bool = ((String) nsValue.get(k)) . equals(value);
        +     break;
        +} }
        +>>>
        +
        +\<<<
        +import java.util.ArrayList;
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%%%%%% 
        +\subsection{Default Script}
        +%%%%%%%%%%%%%%%%%%
        +
        +\AtEndDocument{
        +   \OutputCodE\
        +}
        +\expandafter\AddFile\BIN{xtpipes-default.4xt}{xtpipes\Slash lib}
        +
        +\<<<
        +
        +
        +
        +
        +>>>
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%
        +\part{Useful Pre Fabricated Modules}
        +%%%%%%%%%%%%%%%%%%
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\section{ScriptsManager: A Content Handler}
        +%%%%%%%%%%%%%
        +
        +\label{ScriptsManager}
        +
        +
        +%%%%%%%%%%%%% 
        +\subsection{Outline}
        +%%%%%%%%%%%%%
        +
        +\AtEndDocument{
        +   \OutputCodE\
        +}
        +\AddFile{ScriptsManager.java}{xtpipes\Slash util}
        +
        +\<<<
        +/* ScriptsManager.java (`version), generated from `jobname.tex
        +   Copyright (C) 2009-2010 TeX Users Group
        +   Copyright (C) `CopyYear.2002. Eitan M. Gurari
        +` */
        +package xtpipes.util;
        +`
        +public class ScriptsManager extends DefaultHandler {
        +     `
        +     PrintWriter out = null, log = null;
        +     HashMap scripts = null;
        +     Method method = null;
        +     boolean savemode=false;
        +     String code="", match = null;
        +     Stack stack = new Stack();
        +   public ScriptsManager( PrintWriter out,
        +                          HashMap scripts,
        +                          Method method,
        +                          PrintWriter log, boolean trace ){
        +     this.out = out;
        +     this.log = (log==null)? new PrintWriter( System.err ) : log;
        +     this.scripts = scripts;
        +     this.method = method;
        +   }
        +   public void characters(char[] ch, int start, int length){
        +     add( XtpipesUni.toUni(ch, start, length, "<>&") );
        +   }
        +   `
        +   `
        +   protected void add(String s){
        +      if( savemode ){ code+=s; }
        +      else { out.print(s); }
        +}  }
        +>>>
        +
        +
        +\<<<
        +import org.xml.sax.helpers.DefaultHandler;
        +import org.xml.sax.*;
        +import java.io.*;
        +import java.lang.reflect.*;
        +import java.util.HashMap;
        +import java.util.Stack;
        +>>>
        +
        +%%%%%%%%%%%%%
        +\subsection{Start Elements}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +\<<<
        +public void startElement(String ns, String sName,
        +                        String qName, Attributes atts) {
        +   `
        +   `
        +   inBody = true;
        +   String s =  "<" + qName + "\n";
        +   for(int i=0; i
        +      s += " " + name + "=\"" +
        +         XtpipesUni.toUni(value, "<>&\"") + "\"";
        +   }
        +   if( flag ){ ` }
        +   s += ">" ;
        +   `
        +}
        +>>>
        +
        +
        +\<<<
        +boolean inBody = false;
        +>>>
        +
        +
        +\<<<
        +String key = (atts==null)?
        +               null
        +             : (qName + "::" + atts.getValue("class"));
        +boolean flag = (key != null) && scripts.containsKey(key);
        +
        +if( !flag ){
        +   key = qName;
        +   flag = scripts.containsKey(key);
        +}
        +>>>
        +
        +\<<<
        +if( flag ){
        +   Object [] state = { Boolean.valueOf(savemode), code, match };
        +   stack.push( state );
        +   savemode=true; code=""; match= key;
        +} else {
        +   Object [] state = { Boolean.valueOf(savemode), null, null };
        +   stack.push( state );
        +}
        +add( s );
        +>>>
        +
        +The parsing of an XML string is similar to that of done by a
        +left-to-right bottom up parser of a programming language.
        +Specifically, the token are read and send on to the output stream,
        +until an element whose name appears in the hash table of scripts is
        +encountered.  When such an element is encountered, its body is
        +assembled and the corresponding script is applied on the body.  The
        +processing might be recursive, in the sense that enclosed elements
        +might also have scripts to process them.
        +
        +The above applies also to an element name concatenated with its class
        +attribute value, with the substring `::' as a separator.
        +
        +%%%%%%%%%%%%%
        +\subsection{End Elements}
        +%%%%%%%%%%%%%
        +
        +
        +
        +\<<<
        +public void endElement(String ns, String sName, String qName){
        +   String s = "";
        +   add( s );
        +   Object [] state = (Object []) stack.pop();
        +   if( (String) state[1] != null ){
        +     `
        +     `
        +     `
        +     if( !s.equals("") ){
        +       `
        +       add( s );
        +     }
        +   } else { ` }
        +}
        +>>>
        +
        +
        +
        +
        +
        +
        +
        +\<<<
        +Object parmValues[] = new Object[2];
        +parmValues[0] = scripts.get( match );
        +parmValues[1] = code;
        +try {
        +  s = (String) method.invoke( null, parmValues );
        +} catch(java.lang.reflect.InvocationTargetException e){
        +   log.println("--- ScriptsManager Error 1 --- " + e.getCause() );
        +   log.flush();
        +} catch (Exception e){
        +   log.println("--- ScriptsManager Error 2 --- " + e );
        +   log.flush();
        +}
        +>>>
        +
        +
        +Can't invoke exception above.
        +
        +\<<<
        +savemode = ((Boolean) state[0]).booleanValue();
        +code = (String) state[1];
        +match = (String) state[2];
        +>>>
        +
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Name Spaces at Start of Elements}
        +%%%%%%%%%%%%%
        +
        +\<<<
        +if( name.startsWith("xmlns") ){
        +  if( (name.length() == 5) || (name.charAt(5) == ':') ){
        +     `
        +     if( !bool ){
        +        nsName.add(name); nsValue.add(value);
        +} }  }
        +>>>
        +
        +
        +
        +
        +
        +\<<<
        +HashSet registry = new HashSet();
        +for(int i=nsName.size(); i>top; ){
        +  i--;
        +  registry.add( (String) nsName.get(i) );
        +}
        +for(int i=top; i>0; ){
        +  i--;
        +  String nm = (String) nsName.get(i);
        +  if( ! registry.contains(nm) ){
        +     registry.add( nm );
        +     s += " " + nm + "=\"" +
        +         XtpipesUni.toUni( (String) nsValue.get(i), "<>&\"") + "\"";
        +} }
        +>>>
        +
        +
        +
        +
        +\<<<
        +ArrayList nsName = new ArrayList(),
        +                         nsValue = new ArrayList();
        +Stack nsStack = new Stack();
        +>>>
        +
        +\<<<
        +import java.util.ArrayList;
        +import java.util.HashSet;
        +import xtpipes.XtpipesUni;
        +>>>
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Name Spaces at End of Elements}
        +%%%%%%%%%%%%%
        +
        +
        +\<<<
        +int m = s.indexOf('>');
        +char [] attrs = s.substring(0,m).toCharArray();
        +int result = qName.length()+1,
        +    mark = result,
        +    from=-1,
        +    control = `;
        +char delimiter = ' ';
        +String name="";
        +for(int i=result; i: { `  break; }
        +    case `: { ` break; }
        +    case `: { ` break; }
        +} }
        +s =  (new String(attrs,0, Math.min(result,attrs.length)))
        +          + s.substring(m);
        +>>>
        +
        +
        +
        +\<<<
        +if( attrs[i] == '=' ){
        +   name = (new String(attrs,mark,result-mark-1)).trim();
        +   control = `;
        +}
        +>>>
        +
        +\<<<
        +if( (attrs[i] == '"') || (attrs[i] == '\'') ){
        +   delimiter = attrs[i];
        +   control = `;
        +   from = result;
        +}
        +>>>
        +
        +\<<<
        +if( attrs[i] == delimiter ){
        +   if( name.startsWith("xmlns")
        +       && ((name.length() == 5) || (name.charAt(5) == ':')) ){
        +      String value = (new String(attrs,from,result-from-1)).trim();
        +      `
        +      if( bool ){ result = mark; }
        +   }
        +   mark = result;
        +   control = `;
        +}
        +>>>
        +
        +
        +
        +%%%%%%%%%%%%%
        +\subsection{Name Spaces Inheritence}
        +%%%%%%%%%%%%%
        +
        +
        +
        +
        +
        +\<<<
        +int top = nsName.size();
        +nsStack.push( Integer.valueOf(top) );
        +>>>
        +
        +\<<<
        +int top = ((Integer) nsStack.pop()) . intValue();
        +for(int i=nsName.size(); i>top; ){
        +  i--;
        +  nsName.remove(i);
        +  nsValue.remove(i);
        +}
        +>>>
        +
        +
        +
        +
        +
        +\OP{xmlns name}
        +\OP{xmlns quote}
        +\OP{xmlns value}
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%% 
        +\section{ScriptsManagerLH: A Lexical Handler}
        +%%%%%%%%%%%%%%%%%%
        +
        +\label{ScriptsManagerLH}
        +
        +The lexical handler sends its strings to the content hadler.
        +
        +\AtEndDocument{
        +   \OutputCodE\
        +}
        +\AddFile{ScriptsManagerLH.java}{xtpipes\Slash util}
        +
        +\<<<
        +/* ScriptsManagerLH.java (`version), generated from `jobname.tex
        +   Copyright (C) 2009-2010 TeX Users Group
        +   Copyright (C) `CopyYear.2002. Eitan M. Gurari
        +` */
        +package xtpipes.util;
        +import org.xml.sax.ext.LexicalHandler;
        +// import org.xml.sax.ContentHandler;
        +import java.io.PrintWriter;
        +public class ScriptsManagerLH implements LexicalHandler {
        +       ScriptsManager contentHandler;
        +       PrintWriter log;
        +   public ScriptsManagerLH( ScriptsManager contentHandler,
        +                          PrintWriter log, boolean trace ){
        +     this.contentHandler = contentHandler;
        +     this.log = (log==null)? new PrintWriter( System.err ) : log;
        +   }
        +   public void comment(char[] ch, int start, int length){
        +     if( contentHandler.inBody ){
        +        String s = new String(ch, start, length);
        +        contentHandler.add(  "");
        +   } }
        +   public void startEntity(String x){}
        +   public void endEntity(String x){}
        +   public void startCDATA(){}
        +   public void endCDATA(){}
        +   public void startDTD(String x, String y, String z){}
        +   public void endDTD(){}
        +}
        +>>>
        +
        +\begin{itemize}
        +\item
        +The line breaks in the comments are to avoid sequences of comments
        +loosing their intermediate line breaks and as a result causing
        +overflow of buffers.
        +
        +\item The comments in the preamble are included through the
        +preamble pattribute of xtpipes.
        +\end{itemize}
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%%%%%%
        +\begin{thebibliography}{10}
        +\bibitem{ref}
        +{\sl The Reflection API},
        +Tutorial, Sun Microsystems,
        +\url{http://java.sun.com/docs/books/tutorial/reflect/TOC.html}.
        +\end{thebibliography}
        +
        +
        +
        +
        +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        +
        +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        +\ifOption{win}
        +{
        +     \AtEndDocument{
        +        \OutputCodE\
        +        \Needs{"dodoc"}
        +     }
        +}
        +{ \ifOption{doc}{
        +  \AtEndDocument{\Needs{"
        +     mkdir -p doc.dir
        +     ;
        +     cd doc.dir
        +     ;
        +     java
        +        -classpath
        +        ..:../cgjsapi.jar:../../../jldir.dir:../../../jldir.dir/jldoc.jar:../../../ml2xml.dir/ml2xml.dir/bin/ml2xml.jar
        +        jldoc.Jldoc
        +        -title "Xtpipes APIs"
        +        ../work.dir
        +     ;
        +     cd ..
        +     ;
        +     /usr/bin/rm -r doc.dir
        +  "}}}{}
        +}
        +
        +
        +
        +
        +\<<<
        +cd work.dir
        +if NOT EXIST bin mkdir bin
        + javac -Xlint:unchecked  -d bin  xtpipes/*.java
        + javac -Xlint:unchecked  -d bin  xtpipes/util/*.java
        + javac -Xlint:unchecked  -d bin  *.java
        +cd bin
        + jar cf xtpipes.jar *
        +cd ..
        +cd xtpipes
        +if NOT EXIST bin mkdir bin
        + move ..\bin\xtpipes.jar bin\.
        +cd ..
        +cd ..
        +>>>
        +
        +\ifOption{win}{
        +\immediate\write16{......... work.dir\string \xtpipes\string \lib\string \*}
        +\immediate\write16{......... work.dir\string \xtpipes\string \bin\string \xtpipes.jar}
        +}{}
        +
        +
        +\ifOption{doc}{\let\DOC\def}{}
        +
        +
        +
        +\ifx\DOC\def
        +%%%%%%%%%%%%%%%%%%%%%%%
        +\<<<
        +if NOT EXIST doc.dir mkdir doc.dir
        +cd doc.dir
        +java -classpath ../../jldoc.dir;../../jldoc.dir/jldoc.jar;../../ml2xml.dir/ml2xml.dir/bin/ml2xml.jar jldoc.Jldoc -title "Xtpipes APIs"  ../work.dir/xtpipes
        +cd ..
        +rmdir /s /q doc.dir
        +>>>
        +%%%%%%%%%%%%%%%
        +
        +\fi
        +\
        +
        +
        +
        +
        +../../..;..;../../jldoc;../../xtpipes/cgjsapi.jar;../../xtpipes/xtpipes.jar;../../jldoc/jldoc.jar;../../ml2xml.dir/ml2xml.dir/bin/ml2xml.jar
        +
        +\ifdojava
        +\ifOption{win} {}{
        +\AtEndDocument{\Needs{%
        +    "pushd \XTPIPES || exit 1
        +     ;
        +     jar cf xtpipes.jar *
        +     ;
        +     popd
        +     ;
        +     mkdir -p \LIB || exit 1
        +     ;
        +     mv \XTPIPES xtpipes.jar \LIB
        +     ;
        +     mkdir -p \HOME texmf/tex4ht/xtpipes/. || exit 1
        +     ;
        +     cp \XTPIPES xtpipes/lib/*
        +        \HOME texmf/tex4ht/xtpipes/.
        +"}}
        +}
        +\fi
        +
        +
        +
        +\ifdojava
        +\ifOption{win} {}{
        +  \AtEndDocument{\Needs{"
        +      mkdir -p \LIB\space || exit 1
        +      ;
        +      find \WORK\space -type f -iname '*.java' -print0
        +      | xargs -0 javac -d \XTPIPES\space -sourcepath \WORK
        +      ;
        +      pushd \XTPIPES || exit 1
        +      ;
        +      jar cf xtpipes.jar *
        +      ;
        +      popd
        +      ;
        +      mv \XTPIPES xtpipes.jar \LIB
        +      ;
        +      "}}}
        +\fi
        +
        +
        +\end{document}
        -- 
        cgit v1.2.3