@pretextbook/pretext-html 0.8.0 → 0.10.0
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.
- package/assets/preview-html.xsl +16 -0
- package/assets/upstream.json +1 -1
- package/assets/xsl/extract-dynamic.xsl +54 -3
- package/assets/xsl/extract-gdscript.xsl +61 -0
- package/assets/xsl/extract-sageplot.xsl +3 -0
- package/assets/xsl/localizations/it-IT.xml +37 -41
- package/assets/xsl/pretext-assembly.xsl +188 -24
- package/assets/xsl/pretext-beamer.xsl +57 -12
- package/assets/xsl/pretext-common.xsl +156 -28
- package/assets/xsl/pretext-epub.xsl +0 -5
- package/assets/xsl/pretext-fo.xsl +110 -48
- package/assets/xsl/pretext-html.xsl +147 -54
- package/assets/xsl/pretext-jupyter.xsl +1 -0
- package/assets/xsl/pretext-latex-classic.xsl +2 -2
- package/assets/xsl/pretext-latex-common.xsl +268 -134
- package/assets/xsl/pretext-latex.xsl +16 -6
- package/assets/xsl/pretext-numbers.xsl +10 -0
- package/assets/xsl/pretext-revealjs.xsl +68 -1
- package/assets/xsl/pretext-runestone-fitb.xsl +179 -84
- package/assets/xsl/pretext-runestone-static.xsl +72 -20
- package/assets/xsl/pretext-runestone.xsl +27 -4
- package/assets/xsl/pretext-text-utilities.xsl +7 -0
- package/assets/xsl/pretext-text.xsl +17 -0
- package/assets/xsl/publisher-variables.xsl +39 -0
- package/assets/xsl-bundle.json +1 -1
- package/dist/cli-BONFCRgl.js +1099 -0
- package/dist/cli.js +1 -1
- package/dist/html-static.d.ts +2 -2
- package/dist/index.browser.d.ts +4 -0
- package/dist/index.browser.js +607 -393
- package/dist/index.d.ts +4 -0
- package/dist/index.js +35 -30
- package/dist/renderer.d.ts +53 -0
- package/dist/skeleton.d.ts +41 -0
- package/dist/xrefs.d.ts +54 -0
- package/package.json +1 -1
- package/dist/cli-Bcn4t3B1.js +0 -871
|
@@ -545,6 +545,14 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
545
545
|
<!-- Parson (Horizontal) -->
|
|
546
546
|
|
|
547
547
|
<xsl:template match="*[@pi:exercise-interactive = 'parson-horizontal']" mode="runestone-to-static">
|
|
548
|
+
<!-- Natural-language blocks (mathematics included) must stay in -->
|
|
549
|
+
<!-- the normal flow, where markup is processed; only genuine -->
|
|
550
|
+
<!-- program code belongs in a verbatim code display. This -->
|
|
551
|
+
<!-- mirrors the vertical Parsons template above. -->
|
|
552
|
+
<xsl:variable name="language">
|
|
553
|
+
<xsl:apply-templates select="." mode="get-programming-language"/>
|
|
554
|
+
</xsl:variable>
|
|
555
|
+
<xsl:variable name="b-natural" select="($language = '') or ($language = 'natural')"/>
|
|
548
556
|
<xsl:attribute name="language">
|
|
549
557
|
<xsl:apply-templates select="." mode="active-language"/>
|
|
550
558
|
</xsl:attribute>
|
|
@@ -552,20 +560,31 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
552
560
|
<!-- Statement -->
|
|
553
561
|
<statement>
|
|
554
562
|
<xsl:copy-of select="statement/node()"/>
|
|
555
|
-
<!-- programming language version -->
|
|
556
563
|
<p>
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
564
|
+
<!-- hard to tell which is last once sorted, -->
|
|
565
|
+
<!-- so we just mark front *and* end -->
|
|
566
|
+
<xsl:choose>
|
|
567
|
+
<xsl:when test="$b-natural">
|
|
561
568
|
<xsl:text> | </xsl:text>
|
|
562
569
|
<xsl:for-each select="blocks/block[@order]">
|
|
563
570
|
<xsl:sort select="@order"/>
|
|
564
|
-
<xsl:apply-templates select="." mode="static-horizontal-block"/>
|
|
571
|
+
<xsl:apply-templates select="." mode="static-horizontal-block-flow"/>
|
|
565
572
|
<xsl:text> | </xsl:text>
|
|
566
573
|
</xsl:for-each>
|
|
567
|
-
</
|
|
568
|
-
|
|
574
|
+
</xsl:when>
|
|
575
|
+
<xsl:otherwise>
|
|
576
|
+
<cd>
|
|
577
|
+
<cline>
|
|
578
|
+
<xsl:text> | </xsl:text>
|
|
579
|
+
<xsl:for-each select="blocks/block[@order]">
|
|
580
|
+
<xsl:sort select="@order"/>
|
|
581
|
+
<xsl:apply-templates select="." mode="static-horizontal-block"/>
|
|
582
|
+
<xsl:text> | </xsl:text>
|
|
583
|
+
</xsl:for-each>
|
|
584
|
+
</cline>
|
|
585
|
+
</cd>
|
|
586
|
+
</xsl:otherwise>
|
|
587
|
+
</xsl:choose>
|
|
569
588
|
</p>
|
|
570
589
|
</statement>
|
|
571
590
|
<!-- We provide a complete solution below, -->
|
|
@@ -577,22 +596,34 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
577
596
|
<!-- versions on authored ones. -->
|
|
578
597
|
<xsl:copy-of select="solution"/>
|
|
579
598
|
<solution>
|
|
580
|
-
<!-- programming language version -->
|
|
581
599
|
<!-- filter out distractors for the solution -->
|
|
582
600
|
<xsl:variable name="the-blocks" select="blocks/block[not(@correct = 'no')]"/>
|
|
583
601
|
<p>
|
|
584
|
-
<
|
|
585
|
-
<
|
|
602
|
+
<xsl:choose>
|
|
603
|
+
<xsl:when test="$b-natural">
|
|
586
604
|
<!-- authored in order, but need to follow @ref -->
|
|
587
605
|
<xsl:for-each select="$the-blocks">
|
|
588
|
-
<xsl:apply-templates select="." mode="static-horizontal-block"/>
|
|
589
|
-
<!-- context shift should handle distractors at the end -->
|
|
606
|
+
<xsl:apply-templates select="." mode="static-horizontal-block-flow"/>
|
|
590
607
|
<xsl:if test="following-sibling::block">
|
|
591
608
|
<xsl:text> </xsl:text>
|
|
592
609
|
</xsl:if>
|
|
593
610
|
</xsl:for-each>
|
|
594
|
-
</
|
|
595
|
-
|
|
611
|
+
</xsl:when>
|
|
612
|
+
<xsl:otherwise>
|
|
613
|
+
<cd>
|
|
614
|
+
<cline>
|
|
615
|
+
<!-- authored in order, but need to follow @ref -->
|
|
616
|
+
<xsl:for-each select="$the-blocks">
|
|
617
|
+
<xsl:apply-templates select="." mode="static-horizontal-block"/>
|
|
618
|
+
<!-- context shift should handle distractors at the end -->
|
|
619
|
+
<xsl:if test="following-sibling::block">
|
|
620
|
+
<xsl:text> </xsl:text>
|
|
621
|
+
</xsl:if>
|
|
622
|
+
</xsl:for-each>
|
|
623
|
+
</cline>
|
|
624
|
+
</cd>
|
|
625
|
+
</xsl:otherwise>
|
|
626
|
+
</xsl:choose>
|
|
596
627
|
</p>
|
|
597
628
|
</solution>
|
|
598
629
|
</xsl:template>
|
|
@@ -610,6 +641,24 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
610
641
|
</xsl:choose>
|
|
611
642
|
</xsl:template>
|
|
612
643
|
|
|
644
|
+
<!-- The flow variant serves natural-language blocks: the children -->
|
|
645
|
+
<!-- of a block are "p", whose contents join the running line, so -->
|
|
646
|
+
<!-- mathematics and other markup process normally. -->
|
|
647
|
+
<!-- A natural-language block may wrap its content in a "p", or -->
|
|
648
|
+
<!-- carry short inline content directly; the flow copy handles -->
|
|
649
|
+
<!-- both shapes, following @ref to a reused source block first -->
|
|
650
|
+
<xsl:template match="blocks/block" mode="static-horizontal-block-flow">
|
|
651
|
+
<xsl:variable name="the-block" select="id(@ref)|self::*[not(@ref)]"/>
|
|
652
|
+
<xsl:choose>
|
|
653
|
+
<xsl:when test="$the-block/p">
|
|
654
|
+
<xsl:copy-of select="$the-block/p/node()"/>
|
|
655
|
+
</xsl:when>
|
|
656
|
+
<xsl:otherwise>
|
|
657
|
+
<xsl:copy-of select="$the-block/node()"/>
|
|
658
|
+
</xsl:otherwise>
|
|
659
|
+
</xsl:choose>
|
|
660
|
+
</xsl:template>
|
|
661
|
+
|
|
613
662
|
<!-- Cardsort and Matching Problems -->
|
|
614
663
|
|
|
615
664
|
<!-- Cardsort problems are (roughly) functions, while a (general) -->
|
|
@@ -1172,23 +1221,26 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
1172
1221
|
|
|
1173
1222
|
<xsl:template match="statement" mode="fillin-solution">
|
|
1174
1223
|
<xsl:variable name="exercise" select=".."/>
|
|
1224
|
+
<xsl:variable name="ordered-evaluates" select="$exercise/evaluation/evaluate[not(@all = 'yes')]"/>
|
|
1175
1225
|
<solution>
|
|
1176
1226
|
<xsl:apply-templates select="node()|@*" mode="fillin-solution"/>
|
|
1177
1227
|
<!-- xerox feedback for correct response on each var -->
|
|
1178
1228
|
<xsl:for-each select="../setup/var/condition[1]/feedback">
|
|
1179
1229
|
<xsl:apply-templates select="node()" mode="fillin-solution"/>
|
|
1180
1230
|
</xsl:for-each>
|
|
1181
|
-
<xsl:for-each select=".//fillin
|
|
1231
|
+
<xsl:for-each select=".//fillin">
|
|
1182
1232
|
<xsl:variable name="fillin-name" select="@name"/>
|
|
1183
1233
|
<xsl:variable name="fillin-pos" select="position()"/>
|
|
1234
|
+
<xsl:variable name="named-evaluate" select="$exercise/evaluation/evaluate[@name = $fillin-name]"/>
|
|
1235
|
+
<xsl:variable name="ordered-evaluate" select="$ordered-evaluates[position() = $fillin-pos]"/>
|
|
1184
1236
|
<xsl:choose>
|
|
1185
1237
|
<!-- If #evaluate matches by name, find feedback on a correct result -->
|
|
1186
|
-
<xsl:when test="$
|
|
1187
|
-
<xsl:apply-templates select="$
|
|
1238
|
+
<xsl:when test="$named-evaluate/test[@correct = 'yes']">
|
|
1239
|
+
<xsl:apply-templates select="$named-evaluate/test[@correct = 'yes']/feedback/node()" mode="fillin-solution"/>
|
|
1188
1240
|
</xsl:when>
|
|
1189
1241
|
<!-- Otherwise #evaluate matches by order, find feedback on a correct result -->
|
|
1190
|
-
<xsl:when test="$
|
|
1191
|
-
<xsl:apply-templates select="$
|
|
1242
|
+
<xsl:when test="$ordered-evaluate/test[@correct = 'yes']">
|
|
1243
|
+
<xsl:apply-templates select="$ordered-evaluate/test[@correct = 'yes']/feedback/node()" mode="fillin-solution"/>
|
|
1192
1244
|
</xsl:when>
|
|
1193
1245
|
</xsl:choose>
|
|
1194
1246
|
</xsl:for-each>
|
|
@@ -59,6 +59,8 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
59
59
|
<xsl:param name="rs-css" select="''"/>
|
|
60
60
|
<xsl:param name="rs-version" select="''"/>
|
|
61
61
|
|
|
62
|
+
<xsl:param name="godot.shell" select="'https://runestone.academy/cdn/runestone/godot-shell-'"/>
|
|
63
|
+
|
|
62
64
|
<!-- The Runestone Services version actually in use is -->
|
|
63
65
|
<!-- needed several places, so we compute it once now. -->
|
|
64
66
|
<!-- Manifest, two "ebookConfig". -->
|
|
@@ -542,10 +544,6 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
542
544
|
<xsl:value-of select="$latex-packages-mathjax"/>
|
|
543
545
|
<xsl:value-of select="$latex-macros"/>
|
|
544
546
|
</latex-macros>
|
|
545
|
-
<!-- Report major and minor versions from WW so Runestone knows what's up. -->
|
|
546
|
-
<!-- These variables are formed in -html and could be empty/blank. Hoever, -->
|
|
547
|
-
<!-- they should always be defined as global variables. -->
|
|
548
|
-
<webwork-version major="{$webwork-major-version}" minor="{$webwork-minor-version}"/>
|
|
549
547
|
<xsl:choose>
|
|
550
548
|
<xsl:when test="self::book">
|
|
551
549
|
<!-- Now recurse into chapters, appendix -->
|
|
@@ -2582,6 +2580,30 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
2582
2580
|
</xsl:attribute>
|
|
2583
2581
|
</xsl:if>
|
|
2584
2582
|
</xsl:if>
|
|
2583
|
+
<!-- GDScript (Godot WASM) needs to find the shell engine files -->
|
|
2584
|
+
<xsl:if test="$active-language = 'gdscript'">
|
|
2585
|
+
<xsl:attribute name="data-wasm">
|
|
2586
|
+
<xsl:value-of select="$godot.shell" />
|
|
2587
|
+
<xsl:value-of select="$godot.version" />
|
|
2588
|
+
</xsl:attribute>
|
|
2589
|
+
<!-- Optional: per-exercise pck directory in the external directory -->
|
|
2590
|
+
<xsl:if test="@pck">
|
|
2591
|
+
<xsl:attribute name="data-pck">
|
|
2592
|
+
<xsl:value-of select="$generated-directory"/>
|
|
2593
|
+
<!-- add subdirectory -->
|
|
2594
|
+
<xsl:text>gdscript/</xsl:text>
|
|
2595
|
+
<!-- add template -->
|
|
2596
|
+
<xsl:apply-templates select="." mode="unique-id" />
|
|
2597
|
+
<xsl:text>.zip</xsl:text>
|
|
2598
|
+
</xsl:attribute>
|
|
2599
|
+
</xsl:if>
|
|
2600
|
+
<!-- Scene path inside the .pck virtual filesystem -->
|
|
2601
|
+
<xsl:if test="@scene">
|
|
2602
|
+
<xsl:attribute name="data-scene">
|
|
2603
|
+
<xsl:value-of select="@scene"/>
|
|
2604
|
+
</xsl:attribute>
|
|
2605
|
+
</xsl:if>
|
|
2606
|
+
</xsl:if>
|
|
2585
2607
|
<!-- interpreter arguments for hosted languages -->
|
|
2586
2608
|
<xsl:variable name="interpreter-args">
|
|
2587
2609
|
<xsl:call-template name="get-program-attr-or-default">
|
|
@@ -2751,6 +2773,7 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
2751
2773
|
<xsl:when test="$language = 'javascript'"> <xsl:text>browser</xsl:text></xsl:when>
|
|
2752
2774
|
<xsl:when test="$language = 'html'"> <xsl:text>browser</xsl:text></xsl:when>
|
|
2753
2775
|
<xsl:when test="$language = 'sql'"> <xsl:text>browser</xsl:text></xsl:when>
|
|
2776
|
+
<xsl:when test="$language = 'gdscript'"> <xsl:text>browser</xsl:text></xsl:when>
|
|
2754
2777
|
<xsl:when test="$language = 'c'"> <xsl:text>jobeserver</xsl:text></xsl:when>
|
|
2755
2778
|
<xsl:when test="$language = 'cpp'"> <xsl:text>jobeserver</xsl:text></xsl:when>
|
|
2756
2779
|
<xsl:when test="$language = 'java'"> <xsl:text>jobeserver</xsl:text></xsl:when>
|
|
@@ -1012,6 +1012,9 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
1012
1012
|
|
|
1013
1013
|
<!-- First define the replacements. These must be in -->
|
|
1014
1014
|
<!-- order as search + replace pairs -->
|
|
1015
|
+
<!-- Other control character replacements are not -->
|
|
1016
|
+
<!-- included because they would not be valid at an -->
|
|
1017
|
+
<!-- earlier stage. -->
|
|
1015
1018
|
<xsl:variable name="json-replacements">
|
|
1016
1019
|
<search>\</search>
|
|
1017
1020
|
<replace>\\</replace>
|
|
@@ -1025,6 +1028,10 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
1025
1028
|
<replace>\r</replace>
|
|
1026
1029
|
<search><xsl:value-of select="string('"')"/></search>
|
|
1027
1030
|
<replace>\"</replace>
|
|
1031
|
+
<search><xsl:value-of select="string('
')"/></search>
|
|
1032
|
+
<replace>\u2028</replace>
|
|
1033
|
+
<search><xsl:value-of select="string('
')"/></search>
|
|
1034
|
+
<replace>\u2029</replace>
|
|
1028
1035
|
</xsl:variable>
|
|
1029
1036
|
<xsl:variable name="json-replacements-search-set" select="exsl:node-set($json-replacements)/search" />
|
|
1030
1037
|
<xsl:variable name="json-replacements-replace-set" select="exsl:node-set($json-replacements)/replace" />
|
|
@@ -353,12 +353,29 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
353
353
|
|
|
354
354
|
<!-- Modest: each row a line, cells separated by double spaces. -->
|
|
355
355
|
<!-- No column alignment (yet), spanning cells simply run in. -->
|
|
356
|
+
<!-- Table notes ("tn") collect just below the table, lettered -->
|
|
357
|
+
<!-- in reading order; letters keep them apart from the [1]-style -->
|
|
358
|
+
<!-- marks of true footnotes. -->
|
|
356
359
|
<xsl:template match="tabular">
|
|
357
360
|
<xsl:text>
</xsl:text>
|
|
358
361
|
<xsl:apply-templates select="row"/>
|
|
362
|
+
<xsl:for-each select=".//tn">
|
|
363
|
+
<xsl:text>[</xsl:text>
|
|
364
|
+
<xsl:apply-templates select="." mode="number"/>
|
|
365
|
+
<xsl:text>] </xsl:text>
|
|
366
|
+
<xsl:apply-templates/>
|
|
367
|
+
<xsl:text>
</xsl:text>
|
|
368
|
+
</xsl:for-each>
|
|
359
369
|
<xsl:text>
</xsl:text>
|
|
360
370
|
</xsl:template>
|
|
361
371
|
|
|
372
|
+
<!-- The letter mark of a table note, at its cell location -->
|
|
373
|
+
<xsl:template match="tabular//tn">
|
|
374
|
+
<xsl:text>[</xsl:text>
|
|
375
|
+
<xsl:apply-templates select="." mode="number"/>
|
|
376
|
+
<xsl:text>]</xsl:text>
|
|
377
|
+
</xsl:template>
|
|
378
|
+
|
|
362
379
|
<xsl:template match="row">
|
|
363
380
|
<xsl:text> </xsl:text>
|
|
364
381
|
<xsl:for-each select="cell">
|
|
@@ -1416,6 +1416,29 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
1416
1416
|
</xsl:if>
|
|
1417
1417
|
</xsl:variable>
|
|
1418
1418
|
|
|
1419
|
+
<!-- A dynamic exercise may pull in a Javascript library that is not -->
|
|
1420
|
+
<!-- part of the project, via setup/jsimports/jslibrary/@url . In -->
|
|
1421
|
+
<!-- HTML that code runs in the reader's browser, sandboxed as any -->
|
|
1422
|
+
<!-- other page script. But a *static* build (LaTeX, PDF, EPUB) must -->
|
|
1423
|
+
<!-- execute the same library under Node, on the machine doing the -->
|
|
1424
|
+
<!-- build, with no sandbox at all. So a static build refuses to run -->
|
|
1425
|
+
<!-- a remote library unless the publisher has named it here: -->
|
|
1426
|
+
<!-- -->
|
|
1427
|
+
<!-- <dynamics> -->
|
|
1428
|
+
<!-- <remote-libraries> -->
|
|
1429
|
+
<!-- <library url="https://example.org/matrix.mjs"/> -->
|
|
1430
|
+
<!-- </remote-libraries> -->
|
|
1431
|
+
<!-- </dynamics> -->
|
|
1432
|
+
<!-- -->
|
|
1433
|
+
<!-- This is deliberately a per-URL list and not a blanket switch, so -->
|
|
1434
|
+
<!-- that approval granted today cannot silently extend to a library -->
|
|
1435
|
+
<!-- some exercise starts importing tomorrow. HTML builds are not -->
|
|
1436
|
+
<!-- gated, since the risk being managed is Node running unvetted -->
|
|
1437
|
+
<!-- code as the author, which is strictly greater than the in-browser -->
|
|
1438
|
+
<!-- case. The list is consumed by extract-dynamic.xsl , which -->
|
|
1439
|
+
<!-- passes it to the substitution script. -->
|
|
1440
|
+
<xsl:variable name="remote-library-allowlist" select="$publication/dynamics/remote-libraries/library"/>
|
|
1441
|
+
|
|
1419
1442
|
<!-- File of custom/@name elements, whose content is a custom -->
|
|
1420
1443
|
<!-- replacement for a corresponding custom/@ref element in -->
|
|
1421
1444
|
<!-- the source. -->
|
|
@@ -1807,6 +1830,7 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
1807
1830
|
<!-- languages *always* supported, including "none" -->
|
|
1808
1831
|
<xsl:when test="($entered-lang = 'none') or
|
|
1809
1832
|
($entered-lang = 'python') or
|
|
1833
|
+
($entered-lang = 'gdscript') or
|
|
1810
1834
|
($entered-lang = 'javascript') or
|
|
1811
1835
|
($entered-lang = 'html') or
|
|
1812
1836
|
($entered-lang = 'sql')">
|
|
@@ -3420,6 +3444,16 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
3420
3444
|
</xsl:choose>
|
|
3421
3445
|
</xsl:variable>
|
|
3422
3446
|
|
|
3447
|
+
<!-- ######################## -->
|
|
3448
|
+
<!-- Beamer Slideshow Options -->
|
|
3449
|
+
<!-- ######################## -->
|
|
3450
|
+
|
|
3451
|
+
<!-- Beamer Theme -->
|
|
3452
|
+
|
|
3453
|
+
<xsl:variable name="beamer-theme">
|
|
3454
|
+
<xsl:apply-templates select="$publisher-attribute-options/beamer/appearance/pi:pub-attribute[@name='theme']" mode="set-pubfile-variable"/>
|
|
3455
|
+
</xsl:variable>
|
|
3456
|
+
|
|
3423
3457
|
|
|
3424
3458
|
<!-- ########################################### -->
|
|
3425
3459
|
<!-- Set Values/Defaults for Publisher Variables -->
|
|
@@ -3668,6 +3702,11 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
|
|
|
3668
3702
|
<pi:pub-attribute name="math" default="online" options="embedded"/>
|
|
3669
3703
|
</resources>
|
|
3670
3704
|
</revealjs>
|
|
3705
|
+
<beamer>
|
|
3706
|
+
<appearance>
|
|
3707
|
+
<pi:pub-attribute name="theme" default="Boadilla" freeform="yes"/>
|
|
3708
|
+
</appearance>
|
|
3709
|
+
</beamer>
|
|
3671
3710
|
</pi:publisher>
|
|
3672
3711
|
|
|
3673
3712
|
<!-- global variable for pi:publisher tree above -->
|