epub-translator 0.1.5__py3-none-any.whl → 0.1.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- epub_translator/__init__.py +1 -2
- epub_translator/data/translate.jinja +3 -0
- epub_translator/epub/__init__.py +1 -1
- epub_translator/llm/context.py +10 -1
- epub_translator/llm/core.py +30 -3
- epub_translator/segment/__init__.py +1 -0
- epub_translator/segment/inline_segment.py +11 -1
- epub_translator/segment/text_segment.py +5 -10
- epub_translator/segment/utils.py +0 -16
- epub_translator/translation/__init__.py +2 -0
- epub_translator/{epub_transcode.py → translation/epub_transcode.py} +2 -2
- epub_translator/{punctuation.py → translation/punctuation.py} +1 -1
- epub_translator/{translator.py → translation/translator.py} +8 -6
- epub_translator/{xml_interrupter.py → translation/xml_interrupter.py} +52 -28
- epub_translator/xml/__init__.py +1 -1
- epub_translator/xml/inline.py +48 -2
- epub_translator/xml_translator/concurrency.py +52 -0
- epub_translator/xml_translator/score.py +164 -0
- epub_translator/xml_translator/stream_mapper.py +145 -114
- epub_translator/xml_translator/submitter.py +5 -5
- epub_translator/xml_translator/translator.py +12 -18
- {epub_translator-0.1.5.dist-info → epub_translator-0.1.7.dist-info}/METADATA +37 -9
- epub_translator-0.1.7.dist-info/RECORD +63 -0
- epub_translator/data/mmltex/README.md +0 -67
- epub_translator/data/mmltex/cmarkup.xsl +0 -1106
- epub_translator/data/mmltex/entities.xsl +0 -459
- epub_translator/data/mmltex/glayout.xsl +0 -222
- epub_translator/data/mmltex/mmltex.xsl +0 -36
- epub_translator/data/mmltex/scripts.xsl +0 -375
- epub_translator/data/mmltex/tables.xsl +0 -130
- epub_translator/data/mmltex/tokens.xsl +0 -328
- epub_translator-0.1.5.dist-info/RECORD +0 -68
- /epub_translator/{language.py → translation/language.py} +0 -0
- /epub_translator/xml/{firendly → friendly}/__init__.py +0 -0
- /epub_translator/xml/{firendly → friendly}/decoder.py +0 -0
- /epub_translator/xml/{firendly → friendly}/encoder.py +0 -0
- /epub_translator/xml/{firendly → friendly}/parser.py +0 -0
- /epub_translator/xml/{firendly → friendly}/tag.py +0 -0
- /epub_translator/xml/{firendly → friendly}/transform.py +0 -0
- {epub_translator-0.1.5.dist-info → epub_translator-0.1.7.dist-info}/LICENSE +0 -0
- {epub_translator-0.1.5.dist-info → epub_translator-0.1.7.dist-info}/WHEEL +0 -0
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
<?xml version='1.0' encoding="UTF-8"?>
|
|
2
|
-
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
3
|
-
xmlns:m="http://www.w3.org/1998/Math/MathML"
|
|
4
|
-
version='1.0'>
|
|
5
|
-
|
|
6
|
-
<!-- ====================================================================== -->
|
|
7
|
-
<!-- $Id: glayout.xsl,v 1.5 2003/06/10 12:24:04 shade33 Exp $
|
|
8
|
-
This file is part of the XSLT MathML Library distribution.
|
|
9
|
-
See ./README or http://www.raleigh.ru/MathML/mmltex for
|
|
10
|
-
copyright and other information -->
|
|
11
|
-
<!-- ====================================================================== -->
|
|
12
|
-
|
|
13
|
-
<!-- 3.3.2 mfrac -->
|
|
14
|
-
<xsl:template match="m:mfrac">
|
|
15
|
-
<xsl:choose>
|
|
16
|
-
<xsl:when test="@linethickness">
|
|
17
|
-
<xsl:text>\genfrac{}{}{</xsl:text>
|
|
18
|
-
<xsl:choose>
|
|
19
|
-
<xsl:when test="number(@linethickness)">
|
|
20
|
-
<xsl:value-of select="@linethickness div 10"/>
|
|
21
|
-
<xsl:text>ex</xsl:text>
|
|
22
|
-
</xsl:when>
|
|
23
|
-
<xsl:when test="@linethickness='0'">
|
|
24
|
-
<xsl:text>0ex</xsl:text>
|
|
25
|
-
</xsl:when>
|
|
26
|
-
<xsl:when test="@linethickness='thin'">
|
|
27
|
-
<xsl:text>.05ex</xsl:text>
|
|
28
|
-
</xsl:when>
|
|
29
|
-
<xsl:when test="@linethickness='medium'"/>
|
|
30
|
-
<xsl:when test="@linethickness='thick'">
|
|
31
|
-
<xsl:text>.2ex</xsl:text>
|
|
32
|
-
</xsl:when>
|
|
33
|
-
<xsl:otherwise>
|
|
34
|
-
<xsl:value-of select="@linethickness"/>
|
|
35
|
-
</xsl:otherwise>
|
|
36
|
-
</xsl:choose>
|
|
37
|
-
<xsl:text>}{}{</xsl:text>
|
|
38
|
-
</xsl:when>
|
|
39
|
-
<xsl:otherwise>
|
|
40
|
-
<xsl:text>\frac{</xsl:text>
|
|
41
|
-
</xsl:otherwise>
|
|
42
|
-
</xsl:choose>
|
|
43
|
-
<xsl:if test="@numalign='right'">
|
|
44
|
-
<xsl:text>\hfill </xsl:text>
|
|
45
|
-
</xsl:if>
|
|
46
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
47
|
-
<xsl:if test="@numalign='left'">
|
|
48
|
-
<xsl:text>\hfill </xsl:text>
|
|
49
|
-
</xsl:if>
|
|
50
|
-
<xsl:text>}{</xsl:text>
|
|
51
|
-
<xsl:if test="@denomalign='right'">
|
|
52
|
-
<xsl:text>\hfill </xsl:text>
|
|
53
|
-
</xsl:if>
|
|
54
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
55
|
-
<xsl:if test="@denomalign='left'">
|
|
56
|
-
<xsl:text>\hfill </xsl:text>
|
|
57
|
-
</xsl:if>
|
|
58
|
-
<xsl:text>}</xsl:text>
|
|
59
|
-
</xsl:template>
|
|
60
|
-
|
|
61
|
-
<xsl:template match="m:mfrac[@bevelled='true']">
|
|
62
|
-
<xsl:text>\raisebox{1ex}{$</xsl:text>
|
|
63
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
64
|
-
<xsl:text>$}\!\left/ \!\raisebox{-1ex}{$</xsl:text>
|
|
65
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
66
|
-
<xsl:text>$}\right.</xsl:text>
|
|
67
|
-
</xsl:template>
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
<xsl:template match="m:mroot">
|
|
71
|
-
<xsl:choose>
|
|
72
|
-
<xsl:when test="count(./*)=2">
|
|
73
|
-
<xsl:text>\sqrt[</xsl:text>
|
|
74
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
75
|
-
<xsl:text>]{</xsl:text>
|
|
76
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
77
|
-
<xsl:text>}</xsl:text>
|
|
78
|
-
</xsl:when>
|
|
79
|
-
<xsl:otherwise>
|
|
80
|
-
<!-- number of argumnets is not 2 - code 25 -->
|
|
81
|
-
<xsl:message>exception 25:</xsl:message>
|
|
82
|
-
<xsl:text>\text{exception 25:}</xsl:text>
|
|
83
|
-
</xsl:otherwise>
|
|
84
|
-
</xsl:choose>
|
|
85
|
-
</xsl:template>
|
|
86
|
-
|
|
87
|
-
<xsl:template match="m:msqrt">
|
|
88
|
-
<xsl:text>\sqrt{</xsl:text>
|
|
89
|
-
<xsl:apply-templates/>
|
|
90
|
-
<xsl:text>}</xsl:text>
|
|
91
|
-
</xsl:template>
|
|
92
|
-
|
|
93
|
-
<xsl:template match="m:mfenced">
|
|
94
|
-
<xsl:choose>
|
|
95
|
-
<xsl:when test="@open">
|
|
96
|
-
<xsl:if test="translate(@open,'{}[]()|','{{{{{{{')='{'">
|
|
97
|
-
<xsl:text>\left</xsl:text>
|
|
98
|
-
</xsl:if>
|
|
99
|
-
<xsl:if test="@open='{' or @open='}'">
|
|
100
|
-
<xsl:text>\</xsl:text>
|
|
101
|
-
</xsl:if>
|
|
102
|
-
<xsl:if test="translate(@open,'{}[]()|','{{{{{{{')!='{' and (translate(@close,'{}[]()|','{{{{{{{')='{' or not(@close))">
|
|
103
|
-
<xsl:text>\left.</xsl:text>
|
|
104
|
-
</xsl:if>
|
|
105
|
-
<xsl:value-of select="@open"/>
|
|
106
|
-
</xsl:when>
|
|
107
|
-
<xsl:otherwise><xsl:text>\left(</xsl:text></xsl:otherwise>
|
|
108
|
-
</xsl:choose>
|
|
109
|
-
<xsl:variable name="sep">
|
|
110
|
-
<xsl:choose>
|
|
111
|
-
<xsl:when test="@separators">
|
|
112
|
-
<xsl:value-of select="translate(@separators,' ','')"/>
|
|
113
|
-
</xsl:when>
|
|
114
|
-
<xsl:otherwise>,</xsl:otherwise>
|
|
115
|
-
</xsl:choose>
|
|
116
|
-
</xsl:variable>
|
|
117
|
-
<xsl:for-each select="./*">
|
|
118
|
-
<xsl:apply-templates select="."/>
|
|
119
|
-
<xsl:if test="not(position()=last())">
|
|
120
|
-
<xsl:choose>
|
|
121
|
-
<xsl:when test="position()>string-length($sep)">
|
|
122
|
-
<xsl:value-of select="substring($sep,string-length($sep))"/>
|
|
123
|
-
</xsl:when>
|
|
124
|
-
<xsl:otherwise>
|
|
125
|
-
<xsl:value-of select="substring($sep,position(),1)"/>
|
|
126
|
-
</xsl:otherwise>
|
|
127
|
-
</xsl:choose>
|
|
128
|
-
</xsl:if>
|
|
129
|
-
</xsl:for-each>
|
|
130
|
-
<xsl:choose>
|
|
131
|
-
<xsl:when test="@close">
|
|
132
|
-
<xsl:if test="translate(@close,'{}[]()|','{{{{{{{')='{'">
|
|
133
|
-
<xsl:text>\right</xsl:text>
|
|
134
|
-
</xsl:if>
|
|
135
|
-
<xsl:if test="@close='{' or @close='}'">
|
|
136
|
-
<xsl:text>\</xsl:text>
|
|
137
|
-
</xsl:if>
|
|
138
|
-
<xsl:if test="translate(@close,'{}[]()|','{{{{{{{')!='{' and (translate(@open,'{}[]()|','{{{{{{{')='{' or not(@open))">
|
|
139
|
-
<xsl:text>\right.</xsl:text>
|
|
140
|
-
</xsl:if>
|
|
141
|
-
<xsl:value-of select="@close"/>
|
|
142
|
-
</xsl:when>
|
|
143
|
-
<xsl:otherwise><xsl:text>\right)</xsl:text></xsl:otherwise>
|
|
144
|
-
</xsl:choose>
|
|
145
|
-
</xsl:template>
|
|
146
|
-
|
|
147
|
-
<xsl:template match="m:mphantom">
|
|
148
|
-
<xsl:text>\phantom{</xsl:text>
|
|
149
|
-
<xsl:apply-templates/>
|
|
150
|
-
<xsl:text>}</xsl:text>
|
|
151
|
-
</xsl:template>
|
|
152
|
-
|
|
153
|
-
<xsl:template match="m:menclose">
|
|
154
|
-
<xsl:choose>
|
|
155
|
-
<xsl:when test="@notation = 'actuarial'">
|
|
156
|
-
<xsl:text>\overline{</xsl:text>
|
|
157
|
-
<xsl:apply-templates/>
|
|
158
|
-
<xsl:text>\hspace{.2em}|}</xsl:text>
|
|
159
|
-
</xsl:when>
|
|
160
|
-
<xsl:when test="@notation = 'radical'">
|
|
161
|
-
<xsl:text>\sqrt{</xsl:text>
|
|
162
|
-
<xsl:apply-templates/>
|
|
163
|
-
<xsl:text>}</xsl:text>
|
|
164
|
-
</xsl:when>
|
|
165
|
-
<xsl:otherwise>
|
|
166
|
-
<xsl:text>\overline{)</xsl:text>
|
|
167
|
-
<xsl:apply-templates/>
|
|
168
|
-
<xsl:text>}</xsl:text>
|
|
169
|
-
</xsl:otherwise>
|
|
170
|
-
</xsl:choose>
|
|
171
|
-
</xsl:template>
|
|
172
|
-
|
|
173
|
-
<xsl:template match="m:mrow">
|
|
174
|
-
<xsl:apply-templates/>
|
|
175
|
-
</xsl:template>
|
|
176
|
-
|
|
177
|
-
<xsl:template match="m:mstyle">
|
|
178
|
-
<xsl:if test="@displaystyle='true'">
|
|
179
|
-
<xsl:text>{\displaystyle </xsl:text>
|
|
180
|
-
</xsl:if>
|
|
181
|
-
<xsl:if test="@scriptlevel and not(@displaystyle='true')">
|
|
182
|
-
<xsl:text>{</xsl:text>
|
|
183
|
-
<xsl:choose>
|
|
184
|
-
<xsl:when test="@scriptlevel=0"><xsl:text>\textstyle </xsl:text></xsl:when>
|
|
185
|
-
<xsl:when test="@scriptlevel=1"><xsl:text>\scriptstyle </xsl:text></xsl:when>
|
|
186
|
-
<xsl:otherwise><xsl:text>\scriptscriptstyle </xsl:text></xsl:otherwise>
|
|
187
|
-
</xsl:choose>
|
|
188
|
-
</xsl:if>
|
|
189
|
-
<xsl:if test="@background">
|
|
190
|
-
<xsl:text>\colorbox[rgb]{</xsl:text>
|
|
191
|
-
<xsl:call-template name="color">
|
|
192
|
-
<xsl:with-param name="color" select="@background"/>
|
|
193
|
-
</xsl:call-template>
|
|
194
|
-
<xsl:text>}{$</xsl:text>
|
|
195
|
-
</xsl:if>
|
|
196
|
-
<xsl:if test="@color[not(@mathcolor)] or @mathcolor">
|
|
197
|
-
<xsl:text>\textcolor[rgb]{</xsl:text>
|
|
198
|
-
<xsl:call-template name="color">
|
|
199
|
-
<xsl:with-param name="color" select="@color|@mathcolor"/>
|
|
200
|
-
</xsl:call-template>
|
|
201
|
-
<xsl:text>}{</xsl:text>
|
|
202
|
-
</xsl:if>
|
|
203
|
-
<xsl:apply-templates/>
|
|
204
|
-
<xsl:if test="@color[not(@mathcolor)] or @mathcolor">
|
|
205
|
-
<xsl:text>}</xsl:text>
|
|
206
|
-
</xsl:if>
|
|
207
|
-
<xsl:if test="@background">
|
|
208
|
-
<xsl:text>$}</xsl:text>
|
|
209
|
-
</xsl:if>
|
|
210
|
-
<xsl:if test="@scriptlevel and not(@displaystyle='true')">
|
|
211
|
-
<xsl:text>}</xsl:text>
|
|
212
|
-
</xsl:if>
|
|
213
|
-
<xsl:if test="@displaystyle='true'">
|
|
214
|
-
<xsl:text>}</xsl:text>
|
|
215
|
-
</xsl:if>
|
|
216
|
-
</xsl:template>
|
|
217
|
-
|
|
218
|
-
<xsl:template match="m:merror">
|
|
219
|
-
<xsl:apply-templates/>
|
|
220
|
-
</xsl:template>
|
|
221
|
-
|
|
222
|
-
</xsl:stylesheet>
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
<?xml version='1.0' encoding="UTF-8"?>
|
|
2
|
-
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
3
|
-
xmlns:m="http://www.w3.org/1998/Math/MathML"
|
|
4
|
-
version='1.0'>
|
|
5
|
-
|
|
6
|
-
<xsl:output method="text" indent="no" encoding="UTF-8"/>
|
|
7
|
-
|
|
8
|
-
<!-- ====================================================================== -->
|
|
9
|
-
<!-- $Id: mmltex.xsl,v 1.7 2003/06/10 12:24:04 shade33 Exp $
|
|
10
|
-
This file is part of the XSLT MathML Library distribution.
|
|
11
|
-
See ./README or http://www.raleigh.ru/MathML/mmltex for
|
|
12
|
-
copyright and other information -->
|
|
13
|
-
<!-- ====================================================================== -->
|
|
14
|
-
|
|
15
|
-
<xsl:include href="tokens.xsl"/>
|
|
16
|
-
<xsl:include href="glayout.xsl"/>
|
|
17
|
-
<xsl:include href="scripts.xsl"/>
|
|
18
|
-
<xsl:include href="tables.xsl"/>
|
|
19
|
-
<xsl:include href="entities.xsl"/>
|
|
20
|
-
<xsl:include href="cmarkup.xsl"/>
|
|
21
|
-
|
|
22
|
-
<xsl:strip-space elements="m:*"/>
|
|
23
|
-
|
|
24
|
-
<xsl:template match="m:math[not(@mode) or @mode='inline'][not(@display)] | m:math[@display='inline']">
|
|
25
|
-
<xsl:text>$ </xsl:text>
|
|
26
|
-
<xsl:apply-templates/>
|
|
27
|
-
<xsl:text>$</xsl:text>
|
|
28
|
-
</xsl:template>
|
|
29
|
-
|
|
30
|
-
<xsl:template match="m:math[@display='block'] | m:math[@mode='display'][not(@display)]">
|
|
31
|
-
<xsl:text>
\[
	</xsl:text>
|
|
32
|
-
<xsl:apply-templates/>
|
|
33
|
-
<xsl:text>
\]</xsl:text>
|
|
34
|
-
</xsl:template>
|
|
35
|
-
|
|
36
|
-
</xsl:stylesheet>
|
|
@@ -1,375 +0,0 @@
|
|
|
1
|
-
<?xml version='1.0' encoding="UTF-8"?>
|
|
2
|
-
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
3
|
-
xmlns:m="http://www.w3.org/1998/Math/MathML"
|
|
4
|
-
version='1.0'>
|
|
5
|
-
|
|
6
|
-
<!-- ====================================================================== -->
|
|
7
|
-
<!-- $Id: scripts.xsl,v 1.4 2003/06/10 12:24:04 shade33 Exp $
|
|
8
|
-
This file is part of the XSLT MathML Library distribution.
|
|
9
|
-
See ./README or http://www.raleigh.ru/MathML/mmltex for
|
|
10
|
-
copyright and other information -->
|
|
11
|
-
<!-- ====================================================================== -->
|
|
12
|
-
|
|
13
|
-
<xsl:template match="m:munderover">
|
|
14
|
-
<xsl:variable name="base" select="translate(./*[1],' ','')"/>
|
|
15
|
-
<xsl:variable name="under" select="translate(./*[2],' ','')"/>
|
|
16
|
-
<xsl:variable name="over" select="translate(./*[3],' ','')"/>
|
|
17
|
-
<xsl:choose>
|
|
18
|
-
<xsl:when test="$over='¯'"> <!-- OverBar - over bar -->
|
|
19
|
-
<xsl:text>\overline{</xsl:text>
|
|
20
|
-
<xsl:call-template name="munder">
|
|
21
|
-
<xsl:with-param name="base" select="$base"/>
|
|
22
|
-
<xsl:with-param name="under" select="$under"/>
|
|
23
|
-
</xsl:call-template>
|
|
24
|
-
<xsl:text>}</xsl:text>
|
|
25
|
-
</xsl:when>
|
|
26
|
-
<xsl:when test="$over='︷'"> <!-- OverBrace - over brace -->
|
|
27
|
-
<xsl:text>\overbrace{</xsl:text>
|
|
28
|
-
<xsl:call-template name="munder">
|
|
29
|
-
<xsl:with-param name="base" select="$base"/>
|
|
30
|
-
<xsl:with-param name="under" select="$under"/>
|
|
31
|
-
</xsl:call-template>
|
|
32
|
-
<xsl:text>}</xsl:text>
|
|
33
|
-
</xsl:when>
|
|
34
|
-
<xsl:when test="$over='←'"> <!--/leftarrow /gets A: =leftward arrow -->
|
|
35
|
-
<xsl:text>\overleftarrow{</xsl:text>
|
|
36
|
-
<xsl:call-template name="munder">
|
|
37
|
-
<xsl:with-param name="base" select="$base"/>
|
|
38
|
-
<xsl:with-param name="under" select="$under"/>
|
|
39
|
-
</xsl:call-template>
|
|
40
|
-
<xsl:text>}</xsl:text>
|
|
41
|
-
</xsl:when>
|
|
42
|
-
<xsl:when test="$over='→'"> <!--/rightarrow /to A: =rightward arrow -->
|
|
43
|
-
<xsl:text>\overrightarrow{</xsl:text>
|
|
44
|
-
<xsl:call-template name="munder">
|
|
45
|
-
<xsl:with-param name="base" select="$base"/>
|
|
46
|
-
<xsl:with-param name="under" select="$under"/>
|
|
47
|
-
</xsl:call-template>
|
|
48
|
-
<xsl:text>}</xsl:text>
|
|
49
|
-
</xsl:when>
|
|
50
|
-
<xsl:when test="$over='↔'"> <!--/leftrightarrow A: l&r arrow -->
|
|
51
|
-
<xsl:text>\overleftrightarrow{</xsl:text>
|
|
52
|
-
<xsl:call-template name="munder">
|
|
53
|
-
<xsl:with-param name="base" select="$base"/>
|
|
54
|
-
<xsl:with-param name="under" select="$under"/>
|
|
55
|
-
</xsl:call-template>
|
|
56
|
-
<xsl:text>}</xsl:text>
|
|
57
|
-
</xsl:when>
|
|
58
|
-
<xsl:when test="$under='̲'"> <!-- UnderBar - combining low line -->
|
|
59
|
-
<xsl:text>\underline{</xsl:text>
|
|
60
|
-
<xsl:call-template name="mover">
|
|
61
|
-
<xsl:with-param name="base" select="$base"/>
|
|
62
|
-
<xsl:with-param name="over" select="$over"/>
|
|
63
|
-
<xsl:with-param name="pos_over" select="3"/>
|
|
64
|
-
</xsl:call-template>
|
|
65
|
-
<xsl:text>}</xsl:text>
|
|
66
|
-
</xsl:when>
|
|
67
|
-
<xsl:when test="$under='︸'"> <!-- UnderBrace - under brace -->
|
|
68
|
-
<xsl:text>\underbrace{</xsl:text>
|
|
69
|
-
<xsl:call-template name="mover">
|
|
70
|
-
<xsl:with-param name="base" select="$base"/>
|
|
71
|
-
<xsl:with-param name="over" select="$over"/>
|
|
72
|
-
<xsl:with-param name="pos_over" select="3"/>
|
|
73
|
-
</xsl:call-template>
|
|
74
|
-
<xsl:text>}</xsl:text>
|
|
75
|
-
</xsl:when>
|
|
76
|
-
<xsl:when test="$under='←'"> <!--/leftarrow /gets A: =leftward arrow -->
|
|
77
|
-
<xsl:text>\underleftarrow{</xsl:text>
|
|
78
|
-
<xsl:call-template name="mover">
|
|
79
|
-
<xsl:with-param name="base" select="$base"/>
|
|
80
|
-
<xsl:with-param name="over" select="$over"/>
|
|
81
|
-
<xsl:with-param name="pos_over" select="3"/>
|
|
82
|
-
</xsl:call-template>
|
|
83
|
-
<xsl:text>}</xsl:text>
|
|
84
|
-
</xsl:when>
|
|
85
|
-
<xsl:when test="$under='→'"> <!--/rightarrow /to A: =rightward arrow -->
|
|
86
|
-
<xsl:text>\underrightarrow{</xsl:text>
|
|
87
|
-
<xsl:call-template name="mover">
|
|
88
|
-
<xsl:with-param name="base" select="$base"/>
|
|
89
|
-
<xsl:with-param name="over" select="$over"/>
|
|
90
|
-
<xsl:with-param name="pos_over" select="3"/>
|
|
91
|
-
</xsl:call-template>
|
|
92
|
-
<xsl:text>}</xsl:text>
|
|
93
|
-
</xsl:when>
|
|
94
|
-
<xsl:when test="$under='↔'"> <!--/leftrightarrow A: l&r arrow -->
|
|
95
|
-
<xsl:text>\underleftrightarrow{</xsl:text>
|
|
96
|
-
<xsl:call-template name="mover">
|
|
97
|
-
<xsl:with-param name="base" select="$base"/>
|
|
98
|
-
<xsl:with-param name="over" select="$over"/>
|
|
99
|
-
<xsl:with-param name="pos_over" select="3"/>
|
|
100
|
-
</xsl:call-template>
|
|
101
|
-
<xsl:text>}</xsl:text>
|
|
102
|
-
</xsl:when>
|
|
103
|
-
<xsl:when test="translate($base,'∏∐⋂⋃⊔',
|
|
104
|
-
'∑∑∑∑∑')='∑'">
|
|
105
|
-
<!-- if $base is operator, such as
|
|
106
|
-
∑ /sum L: summation operator
|
|
107
|
-
∏ /prod L: product operator
|
|
108
|
-
∐ /coprod L: coproduct operator
|
|
109
|
-
⋂ /bigcap
|
|
110
|
-
⋃ /bigcup
|
|
111
|
-
⊔ /bigsqcup
|
|
112
|
-
-->
|
|
113
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
114
|
-
<xsl:text>_{</xsl:text>
|
|
115
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
116
|
-
<xsl:text>}^{</xsl:text>
|
|
117
|
-
<xsl:apply-templates select="./*[3]"/>
|
|
118
|
-
<xsl:text>}</xsl:text>
|
|
119
|
-
</xsl:when>
|
|
120
|
-
<xsl:otherwise>
|
|
121
|
-
<xsl:text>\underset{</xsl:text>
|
|
122
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
123
|
-
<xsl:text>}{\overset{</xsl:text>
|
|
124
|
-
<xsl:apply-templates select="./*[3]"/>
|
|
125
|
-
<xsl:text>}{</xsl:text>
|
|
126
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
127
|
-
<xsl:text>}}</xsl:text>
|
|
128
|
-
</xsl:otherwise>
|
|
129
|
-
</xsl:choose>
|
|
130
|
-
</xsl:template>
|
|
131
|
-
|
|
132
|
-
<xsl:template match="m:mover">
|
|
133
|
-
<xsl:call-template name="mover">
|
|
134
|
-
<xsl:with-param name="base" select="translate(./*[1],' ','')"/>
|
|
135
|
-
<xsl:with-param name="over" select="translate(./*[2],' ','')"/>
|
|
136
|
-
</xsl:call-template>
|
|
137
|
-
</xsl:template>
|
|
138
|
-
|
|
139
|
-
<xsl:template match="m:munder">
|
|
140
|
-
<xsl:call-template name="munder">
|
|
141
|
-
<xsl:with-param name="base" select="translate(./*[1],' ','')"/>
|
|
142
|
-
<xsl:with-param name="under" select="translate(./*[2],' ','')"/>
|
|
143
|
-
</xsl:call-template>
|
|
144
|
-
</xsl:template>
|
|
145
|
-
|
|
146
|
-
<xsl:template name="mover">
|
|
147
|
-
<xsl:param name="base"/>
|
|
148
|
-
<xsl:param name="over"/>
|
|
149
|
-
<xsl:param name="pos_over" select="2"/>
|
|
150
|
-
<xsl:choose>
|
|
151
|
-
<xsl:when test="$over='¯'"> <!-- OverBar - over bar -->
|
|
152
|
-
<xsl:text>\overline{</xsl:text>
|
|
153
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
154
|
-
<xsl:text>}</xsl:text>
|
|
155
|
-
</xsl:when>
|
|
156
|
-
<xsl:when test="$over='︷'"> <!-- OverBrace - over brace -->
|
|
157
|
-
<xsl:text>\overbrace{</xsl:text>
|
|
158
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
159
|
-
<xsl:text>}</xsl:text>
|
|
160
|
-
</xsl:when>
|
|
161
|
-
<xsl:when test="$over='←'"> <!--/leftarrow /gets A: =leftward arrow -->
|
|
162
|
-
<xsl:text>\overleftarrow{</xsl:text>
|
|
163
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
164
|
-
<xsl:text>}</xsl:text>
|
|
165
|
-
</xsl:when>
|
|
166
|
-
<xsl:when test="$over='→'"> <!--/rightarrow /to A: =rightward arrow -->
|
|
167
|
-
<xsl:text>\overrightarrow{</xsl:text>
|
|
168
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
169
|
-
<xsl:text>}</xsl:text>
|
|
170
|
-
</xsl:when>
|
|
171
|
-
<xsl:when test="$over='↔'"> <!--/leftrightarrow A: l&r arrow -->
|
|
172
|
-
<xsl:text>\overleftrightarrow{</xsl:text>
|
|
173
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
174
|
-
<xsl:text>}</xsl:text>
|
|
175
|
-
</xsl:when>
|
|
176
|
-
<xsl:when test="$over='˜'"> <!-- small tilde -->
|
|
177
|
-
<xsl:text>\tilde{</xsl:text>
|
|
178
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
179
|
-
<xsl:text>}</xsl:text>
|
|
180
|
-
</xsl:when>
|
|
181
|
-
<xsl:when test="$over='✓'"> <!-- /checkmark =tick, check mark -->
|
|
182
|
-
<xsl:text>\check{</xsl:text>
|
|
183
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
184
|
-
<xsl:text>}</xsl:text>
|
|
185
|
-
</xsl:when>
|
|
186
|
-
<xsl:when test="$over='˙'"> <!-- dot above -->
|
|
187
|
-
<xsl:text>\dot{</xsl:text>
|
|
188
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
189
|
-
<xsl:text>}</xsl:text>
|
|
190
|
-
</xsl:when>
|
|
191
|
-
<xsl:when test="$over='¨'"> <!-- DoubleDot - dieresis or umlaut mark -->
|
|
192
|
-
<xsl:text>\ddot{</xsl:text>
|
|
193
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
194
|
-
<xsl:text>}</xsl:text>
|
|
195
|
-
</xsl:when>
|
|
196
|
-
<xsl:when test="$over='̂' or $over='^'"> <!-- Hat or circ - circumflex accent -->
|
|
197
|
-
<xsl:choose>
|
|
198
|
-
<xsl:when test="@accent='true'">
|
|
199
|
-
<xsl:text>\widehat{</xsl:text>
|
|
200
|
-
</xsl:when>
|
|
201
|
-
<xsl:otherwise>
|
|
202
|
-
<xsl:text>\hat{</xsl:text>
|
|
203
|
-
</xsl:otherwise>
|
|
204
|
-
</xsl:choose>
|
|
205
|
-
<xsl:apply-templates select="./*[1]"/><xsl:text>}</xsl:text>
|
|
206
|
-
</xsl:when>
|
|
207
|
-
<xsl:when test="translate($base,'∏∐⋂⋃⊔',
|
|
208
|
-
'∑∑∑∑∑')='∑'">
|
|
209
|
-
<!-- if $base is operator, such as
|
|
210
|
-
∑ /sum L: summation operator
|
|
211
|
-
∏ /prod L: product operator
|
|
212
|
-
∐ /coprod L: coproduct operator
|
|
213
|
-
⋂ /bigcap
|
|
214
|
-
⋃ /bigcup
|
|
215
|
-
⊔ /bigsqcup
|
|
216
|
-
-->
|
|
217
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
218
|
-
<xsl:text>^{</xsl:text>
|
|
219
|
-
<xsl:apply-templates select="./*[$pos_over]"/>
|
|
220
|
-
<xsl:text>}</xsl:text>
|
|
221
|
-
</xsl:when>
|
|
222
|
-
<xsl:otherwise>
|
|
223
|
-
<xsl:text>\stackrel{</xsl:text>
|
|
224
|
-
<xsl:apply-templates select="./*[$pos_over]"/>
|
|
225
|
-
<xsl:text>}{</xsl:text>
|
|
226
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
227
|
-
<xsl:text>}</xsl:text>
|
|
228
|
-
<!--
|
|
229
|
-
<xsl:text>\overset{</xsl:text>
|
|
230
|
-
<xsl:apply-templates select="./*[$pos_over]"/>
|
|
231
|
-
<xsl:text>}{</xsl:text>
|
|
232
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
233
|
-
<xsl:text>}</xsl:text>-->
|
|
234
|
-
</xsl:otherwise>
|
|
235
|
-
</xsl:choose>
|
|
236
|
-
</xsl:template>
|
|
237
|
-
|
|
238
|
-
<xsl:template name="munder">
|
|
239
|
-
<xsl:param name="base"/>
|
|
240
|
-
<xsl:param name="under"/>
|
|
241
|
-
<xsl:choose>
|
|
242
|
-
<xsl:when test="$under='̲'"> <!-- UnderBar - combining low line -->
|
|
243
|
-
<xsl:text>\underline{</xsl:text>
|
|
244
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
245
|
-
<xsl:text>}</xsl:text>
|
|
246
|
-
</xsl:when>
|
|
247
|
-
<xsl:when test="$under='︸'"> <!-- UnderBrace - under brace -->
|
|
248
|
-
<xsl:text>\underbrace{</xsl:text>
|
|
249
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
250
|
-
<xsl:text>}</xsl:text>
|
|
251
|
-
</xsl:when>
|
|
252
|
-
<xsl:when test="$under='←'"> <!--/leftarrow /gets A: =leftward arrow -->
|
|
253
|
-
<xsl:text>\underleftarrow{</xsl:text>
|
|
254
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
255
|
-
<xsl:text>}</xsl:text>
|
|
256
|
-
</xsl:when>
|
|
257
|
-
<xsl:when test="$under='→'"> <!--/rightarrow /to A: =rightward arrow -->
|
|
258
|
-
<xsl:text>\underrightarrow{</xsl:text>
|
|
259
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
260
|
-
<xsl:text>}</xsl:text>
|
|
261
|
-
</xsl:when>
|
|
262
|
-
<xsl:when test="$under='↔'"> <!--/leftrightarrow A: l&r arrow -->
|
|
263
|
-
<xsl:text>\underleftrightarrow{</xsl:text>
|
|
264
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
265
|
-
<xsl:text>}</xsl:text>
|
|
266
|
-
</xsl:when>
|
|
267
|
-
<xsl:when test="translate($base,'∏∐⋂⋃⊔',
|
|
268
|
-
'∑∑∑∑∑')='∑'">
|
|
269
|
-
<!-- if $base is operator, such as
|
|
270
|
-
∑ /sum L: summation operator
|
|
271
|
-
∏ /prod L: product operator
|
|
272
|
-
∐ /coprod L: coproduct operator
|
|
273
|
-
⋂ /bigcap
|
|
274
|
-
⋃ /bigcup
|
|
275
|
-
⊔ /bigsqcup
|
|
276
|
-
-->
|
|
277
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
278
|
-
<xsl:text>_{</xsl:text>
|
|
279
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
280
|
-
<xsl:text>}</xsl:text>
|
|
281
|
-
</xsl:when>
|
|
282
|
-
<xsl:otherwise>
|
|
283
|
-
<xsl:text>\underset{</xsl:text> <!-- Required AmsMath package -->
|
|
284
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
285
|
-
<xsl:text>}{</xsl:text>
|
|
286
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
287
|
-
<xsl:text>}</xsl:text>
|
|
288
|
-
</xsl:otherwise>
|
|
289
|
-
</xsl:choose>
|
|
290
|
-
</xsl:template>
|
|
291
|
-
|
|
292
|
-
<xsl:template match="m:msubsup">
|
|
293
|
-
<xsl:text>{</xsl:text>
|
|
294
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
295
|
-
<xsl:text>}_{</xsl:text>
|
|
296
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
297
|
-
<xsl:text>}^{</xsl:text>
|
|
298
|
-
<xsl:apply-templates select="./*[3]"/>
|
|
299
|
-
<xsl:text>}</xsl:text>
|
|
300
|
-
</xsl:template>
|
|
301
|
-
|
|
302
|
-
<xsl:template match="m:msup">
|
|
303
|
-
<xsl:text>{</xsl:text>
|
|
304
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
305
|
-
<xsl:text>}^{</xsl:text>
|
|
306
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
307
|
-
<xsl:text>}</xsl:text>
|
|
308
|
-
</xsl:template>
|
|
309
|
-
|
|
310
|
-
<xsl:template match="m:msub">
|
|
311
|
-
<xsl:text>{</xsl:text>
|
|
312
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
313
|
-
<xsl:text>}_{</xsl:text>
|
|
314
|
-
<xsl:apply-templates select="./*[2]"/>
|
|
315
|
-
<xsl:text>}</xsl:text>
|
|
316
|
-
</xsl:template>
|
|
317
|
-
|
|
318
|
-
<xsl:template match="m:mmultiscripts" mode="mprescripts">
|
|
319
|
-
<xsl:for-each select="m:mprescripts/following-sibling::*">
|
|
320
|
-
<xsl:if test="position() mod 2 and local-name(.)!='none'">
|
|
321
|
-
<xsl:text>{}_{</xsl:text>
|
|
322
|
-
<xsl:apply-templates select="."/>
|
|
323
|
-
<xsl:text>}</xsl:text>
|
|
324
|
-
</xsl:if>
|
|
325
|
-
<xsl:if test="not(position() mod 2) and local-name(.)!='none'">
|
|
326
|
-
<xsl:text>{}^{</xsl:text>
|
|
327
|
-
<xsl:apply-templates select="."/>
|
|
328
|
-
<xsl:text>}</xsl:text>
|
|
329
|
-
</xsl:if>
|
|
330
|
-
</xsl:for-each>
|
|
331
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
332
|
-
<xsl:for-each select="m:mprescripts/preceding-sibling::*[position()!=last()]">
|
|
333
|
-
<xsl:if test="position()>2 and local-name(.)!='none'">
|
|
334
|
-
<xsl:text>{}</xsl:text>
|
|
335
|
-
</xsl:if>
|
|
336
|
-
<xsl:if test="position() mod 2 and local-name(.)!='none'">
|
|
337
|
-
<xsl:text>_{</xsl:text>
|
|
338
|
-
<xsl:apply-templates select="."/>
|
|
339
|
-
<xsl:text>}</xsl:text>
|
|
340
|
-
</xsl:if>
|
|
341
|
-
<xsl:if test="not(position() mod 2) and local-name(.)!='none'">
|
|
342
|
-
<xsl:text>^{</xsl:text>
|
|
343
|
-
<xsl:apply-templates select="."/>
|
|
344
|
-
<xsl:text>}</xsl:text>
|
|
345
|
-
</xsl:if>
|
|
346
|
-
</xsl:for-each>
|
|
347
|
-
</xsl:template>
|
|
348
|
-
|
|
349
|
-
<xsl:template match="m:mmultiscripts">
|
|
350
|
-
<xsl:choose>
|
|
351
|
-
<xsl:when test="m:mprescripts">
|
|
352
|
-
<xsl:apply-templates select="." mode="mprescripts"/>
|
|
353
|
-
</xsl:when>
|
|
354
|
-
<xsl:otherwise>
|
|
355
|
-
<xsl:apply-templates select="./*[1]"/>
|
|
356
|
-
<xsl:for-each select="*[position()>1]">
|
|
357
|
-
<xsl:if test="position()>2 and local-name(.)!='none'">
|
|
358
|
-
<xsl:text>{}</xsl:text>
|
|
359
|
-
</xsl:if>
|
|
360
|
-
<xsl:if test="position() mod 2 and local-name(.)!='none'">
|
|
361
|
-
<xsl:text>_{</xsl:text>
|
|
362
|
-
<xsl:apply-templates select="."/>
|
|
363
|
-
<xsl:text>}</xsl:text>
|
|
364
|
-
</xsl:if>
|
|
365
|
-
<xsl:if test="not(position() mod 2) and local-name(.)!='none'">
|
|
366
|
-
<xsl:text>^{</xsl:text>
|
|
367
|
-
<xsl:apply-templates select="."/>
|
|
368
|
-
<xsl:text>}</xsl:text>
|
|
369
|
-
</xsl:if>
|
|
370
|
-
</xsl:for-each>
|
|
371
|
-
</xsl:otherwise>
|
|
372
|
-
</xsl:choose>
|
|
373
|
-
</xsl:template>
|
|
374
|
-
|
|
375
|
-
</xsl:stylesheet>
|