summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml')
-rw-r--r--Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml75
1 files changed, 75 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml b/Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml
new file mode 100644
index 00000000000..85fb12e7bbe
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml
@@ -0,0 +1,75 @@
+RawTeX('
+\newif\ifexnotes\exnotesfalse
+\newif\ifhints\hintsfalse
+\newif\ifsolutions\solutionsfalse
+\newif\ifpts\ptsfalse
+\newif\ifmin\minfalse
+\newif\ifboxed\boxedfalse
+\newif\ifextract\extractfalse
+');
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+RequirePackage('sref');
+RegisterNamespace('prob'=>"http://omdoc.org/ontology/problems#");
+RegisterDocumentNamespace('prob'=>"http://omdoc.org/ontology/problems#");
+DefEnvironment('{problem} OptionalKeyVals:problem',
+ "<omdoc:exercise ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')()>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "?&KeyVal(#1,'min')("
+ . "<omdoc:meta property='prob:solvedinminutes' prob:dummy='for the namespace'>"
+ . "&KeyVal(#1,'min')"
+ . "</omdoc:meta>)()"
+ . "?&KeyVal(#1,'pts')("
+ . "<omdoc:meta property='prob:points' prob:dummy='for the namespace'>"
+ . "&KeyVal(#1,'pts')"
+ . "</omdoc:meta>)()"
+ . "<omdoc:CMP><omdoc:p>#body"
+ ."</omdoc:exercise>",
+ afterDigest => sub {
+ my ($stomach,$kv)=@_;
+ my $kvi = LookupValue('inclprob');
+ my @keys = qw(id title min pts);
+ my @vals = $kvi && map($kvi->getValue($_), @keys);
+ foreach my $i(0..$#vals) {
+ $kv->setValue($keys[$i],$vals[$i]) if $vals[$i];
+ }
+ return;});#$
+DefKeyVal('soln','id','Semiverbatim');
+DefKeyVal('soln','height','Semiverbatim');
+DefKeyVal('soln','for','Semiverbatim');
+DefEnvironment('{solution} OptionalKeyVals:soln',
+ "<omdoc:solution ?&KeyVals(#1,'for')(for='&KeyVal(#1,'for')')()>"
+ . "#body"
+ . "</omdoc:solution>");
+DefEnvironment('{exnote}',"<omdoc:hint><omdoc:CMP><omdoc:p>#body</omdoc:hint>");
+DefEnvironment('{hint}',"<omdoc:hint><omdoc:CMP><omdoc:p>#body</omdoc:hint>");
+DefConstructor('\pts{}',"");
+DefConstructor('\min{}',"");
+DefKeyVal('prob','pts','Semiverbatim');
+DefKeyVal('prob','min','Semiverbatim');
+DefKeyVal('prob','title','Semiverbatim');
+DefConstructor('\includeproblem OptionalKeyVals:prob Semiverbatim',
+ "<omdoc:ref type='cite' xref='#2'>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "?&KeyVal(#1,'min')("
+ . "<omdoc:meta property='prob:solvedinminutes' prob:dummy='for the namespace'>"
+ . "&KeyVal(#1,'min')"
+ . "</omdoc:meta>)()"
+ . "?&KeyVal(#1,'pts')("
+ . "<omdoc:meta property='prob:points' prob:dummy='for the namespace'>"
+ . "&KeyVal(#1,'pts')"
+ . "</omdoc:meta>)()"
+ ."</omdoc:ref>",
+ afterDigest => sub{
+ my ($stomach,$kv) = @_;
+ AssignValue('inclprob',$kv) if $kv;
+ });
+Tag('omdoc:exercise',afterOpen=>\&numberIt);
+Tag('omdoc:solution',afterOpen=>\&numberIt);
+Tag('omdoc:hint',afterOpen=>\&numberIt);
+Tag('omdoc:exercise',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:solution',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:hint',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+1;