From bcdf6c829c6761de02484473ebe43fa3760adcaa Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 12 May 2021 03:01:15 +0000 Subject: CTAN sync 202105120301 --- .../TeX4ht/source/tex4ht-html-speech-xtpipes.tex | 2440 ++++++++++++++++++++ 1 file changed, 2440 insertions(+) create mode 100644 support/TeX4ht/source/tex4ht-html-speech-xtpipes.tex (limited to 'support/TeX4ht/source/tex4ht-html-speech-xtpipes.tex') diff --git a/support/TeX4ht/source/tex4ht-html-speech-xtpipes.tex b/support/TeX4ht/source/tex4ht-html-speech-xtpipes.tex new file mode 100644 index 0000000000..ec61b80c87 --- /dev/null +++ b/support/TeX4ht/source/tex4ht-html-speech-xtpipes.tex @@ -0,0 +1,2440 @@ +% $Id: tex4ht-html-speech-xtpipes.tex 740 2020-06-13 22:35:32Z karl $ +% htlatex tex4ht-html-speech-xtpipes "html,next,3" "" "-d./" +% +% Copyright 2009-2020 TeX Users Group +% Copyright 2006-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-dir} +\input{tex4ht-cpright} + +%%%%%%%%%%%%%%%%%% +\part{Script for xtpipes} +%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%% +\section{Outline} +%%%%%%%%%%%%%%%%%% + + + +\AtEndDocument{\OutputCodE\} + + +\Needs{"xmllint --valid --noout htspk.4xt"} + + +\<<< + + + + + + ` + ` + ` + ` + ` + ` + ` + ` + ` + ` + ` + ` + ` + + +>>> + + + +\<<< + +>>> + + + + +\<<< + +>>> + +\<<< +` +` +` +`<'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} + + + + + -- cgit v1.2.3