summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/stex/problem
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-07-19 23:16:46 +0000
committerKarl Berry <karl@freefriends.org>2010-07-19 23:16:46 +0000
commit277ca449c86a187fe858defdcd6aa1830d3b2d0d (patch)
treea804dd4e397504655fc225e6f582554780c4115d /Master/texmf-dist/tex/latex/stex/problem
parentd515f1120311798486a522c56170bd519d9c6a7a (diff)
reinstate stex via new .tds.zip
git-svn-id: svn://tug.org/texlive/trunk@19538 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/stex/problem')
-rw-r--r--Master/texmf-dist/tex/latex/stex/problem/problem.sty116
-rw-r--r--Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml55
2 files changed, 171 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/stex/problem/problem.sty b/Master/texmf-dist/tex/latex/stex/problem/problem.sty
new file mode 100644
index 00000000000..aec05910e0e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stex/problem/problem.sty
@@ -0,0 +1,116 @@
+%%
+%% This is file `problem.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% problem.dtx (with options: `package')
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{problem}[2010/06/25 v0.9c Semantic Markup for Problems]
+\newif\ifexnotes\exnotesfalse\DeclareOption{notes}{\exnotestrue}
+\newif\ifhints\hintsfalse\DeclareOption{hints}{\hintstrue}
+\newif\ifsolutions\solutionsfalse\DeclareOption{solutions}{\solutionstrue}
+\newif\ifpts\ptsfalse\DeclareOption{pts}{\ptstrue}
+\newif\ifmin\minfalse\DeclareOption{min}{\mintrue}
+\newif\ifboxed\boxedfalse\DeclareOption{boxed}{\boxedtrue}
+\newif\ifextract\extractfalse\DeclareOption{extract}{\extracttrue}
+\ProcessOptions
+\RequirePackage{keyval}[1997/11/10]
+\RequirePackage{xcomment}
+\RequirePackage{sref}
+\srefaddidkey[prefix=prob.]{problem}
+\omdaddkey{problem}{pts}
+\omdaddkey{problem}{min}
+\omdaddkey{problem}{title}
+\omdaddkey{problem}{refnum}
+\newsavebox{\probbox}
+\newcounter{problem}[section]
+\def\prob@number{\ifx\inclprob@refnum\@empty
+\ifx\problem@refnum\@empty\thesection.\theproblem\else\problem@refnum\fi
+\inclprob@refnum\fi}
+\def\prob@heading{Problem \prob@number%
+\ifx\sref@id\@empty\else{\sref@label@id{Problem \thesection.\theproblem}}\fi%
+\ifx\inclprob@title\@empty% if there is no outside title
+\ifx\problem@title\@empty{:\quad}\else{\quad(\problem@title)\hfill\\}\fi
+\else\quad(\inclprob@title)\hfill\\\fi}% else show the outside title
+\ifboxed
+\newenvironment{problem}[1][]{\omdsetkeys{problem}{#1}\sref@target%
+\stepcounter{problem}\show@pts\show@min\record@problem%
+\begin{lrbox}{\probbox}\begin{minipage}{.9\textwidth}}
+{\end{minipage}\end{lrbox}
+\setbox0=\hbox{\begin{minipage}{.9\textwidth}%
+\noindent\textbf\prob@heading\rm%
+\end{minipage}}
+\smallskip\noindent\fbox{\vbox{\box0\vspace*{.2em}\usebox\probbox}}\smallskip}
+\else
+\newenvironment{problem}[1][]{\omdsetkeys{problem}{#1}\sref@target%
+\stepcounter{problem}\show@pts\show@min\record@problem%
+\par\noindent\textbf\prob@heading\rm}
+{\smallskip}
+\fi%boxed
+\def\record@problem{\protected@write\@auxout{}%
+{\string\@problem{\prob@number}%
+{\ifx\inclprob@pts\@empty\problem@pts\else\inclprob@pts\fi}%
+{\ifx\inclprob@min\@empty\problem@min\else\inclprob@min\fi}}}
+\def\@problem#1#2#3{}
+\define@key{soln}{id}{\def\soln@id{#1}}
+\define@key{soln}{for}{\def\soln@for{#1}}
+\define@key{soln}{height}{\def\soln@height{#1}}
+\ifsolutions
+\newenvironment{solution}[1][]%
+{\hrule\smallskip{\bf Solution: }\begin{small}}%
+{\hrule\end{small}}
+\else\newxcomment[]{solution}\fi
+\ifexnotes
+\newenvironment{exnote}[1][]%
+{\par\noindent\hrule\smallskip{\bf Note: }\small}
+{\smallskip\hrule}
+\else%ifexnotes
+\newxcomment[]{exnote}
+\fi%ifexnotes
+\ifhints
+\newenvironment{hint}[1][]%
+{\par\noindent\hrule\smallskip{\bf Hint: }\small}
+{\smallskip\hrule}
+\else%ifhints
+\newxcomment[]{hint}
+\fi%ifhints
+\ifextract
+\newwrite\problem@file
+\immediate\openout\problem@file=\jobname-problems.tex
+\AtEndDocument{\closeout\problem@file}
+\fi
+\omdaddkey{inclprob}{pts}
+\omdaddkey{inclprob}{min}
+\omdaddkey{inclprob}{title}
+\omdaddkey{inclprob}{refnum}
+\clear@inclprob@keys
+\newcommand{\includeproblem}[2][]{%
+\bgroup\omdsetkeys{inclprob}{#1}\input{#2}\ifsolutions\newpage\fi\egroup
+\ifextract\def\@test{#1}
+\def\prob@num{\ifx\inclprob@refnum\@empty\thesection.\theproblem\else\inclprob@refnum\fi}
+\def\inclprob@keys{#1\ifx\@test\@empty\else,\fi refnum=\prob@num}
+\protected@write\problem@file{}{\string\includeproblem[\inclprob@keys]{#2}}
+\fi}
+\def\pts#1{\ifpts\marginpar{#1 pt}\fi}
+\def\min#1{\ifmin\marginpar{#1 min}\fi}
+\AtEndDocument{\ifpts\message{Total: \arabic{pts} points}\fi
+\ifmin\message{Total: \arabic{min} minutes}\fi}
+\newcounter{pts}
+\def\show@pts{\ifx\inclprob@pts\@empty%
+\ifx\problem@pts\@empty\else%
+\ifpts\marginpar{\problem@pts pt\smallskip}\addtocounter{pts}{\problem@pts}\fi%
+\fi\else%
+\ifpts\marginpar{\inclprob@pts pt\smallskip}\addtocounter{pts}{\inclprob@pts}\fi%
+\fi}
+\newcounter{min}
+\def\show@min{\ifx\inclprob@min\@empty%
+\ifx\problem@min\@empty\else%
+\ifmin\marginpar{\problem@min min}\addtocounter{min}{\problem@min}\fi%
+\fi\else%
+\ifmin\marginpar{\inclprob@min min}\addtocounter{min}{\inclprob@min}\fi
+\fi}
+\endinput
+%%
+%% End of file `problem.sty'.
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..0ef5044333e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stex/problem/problem.sty.ltxml
@@ -0,0 +1,55 @@
+# -*- 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#");
+DefCMPEnvironment('{problem} OptionalKeyVals:problem',
+ "<omdoc:exercise ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')()"
+ . "prob:dummy='for the namespace'"
+ . "?#locator(stex:srcref='#locator')()>"
+ . "?&KeyVal(#1,'title')(<dc:title ?#locator(stex:srcref='#locator')()>&KeyVal(#1,'title')</dc:title>)()"
+ . "?&KeyVal(#1,'min')(<omdoc:meta property='prob:solvedinminutes' "
+ . "?#locator(stex:srcref='#locator')()>&KeyVal(#1,'min')</omdoc:meta>)()"
+ . "?&KeyVal(#1,'pts')(<omdoc:meta property='prob:points' "
+ . "?#locator(stex:srcref='#locator')()>&KeyVal(#1,'pts')</omdoc:meta>)()"
+ . "<omdoc:CMP ?#locator(stex:srcref='#locator')()><omdoc:p>#body"
+ ."</omdoc:exercise>\n");
+DefKeyVal('soln','id','Semiverbatim');
+DefKeyVal('soln','height','Semiverbatim');
+DefKeyVal('soln','for','Semiverbatim');
+DefCMPEnvironment('{solution} OptionalKeyVals:soln',
+ "<omdoc:solution ?&KeyVals(#1,'for')(for='&KeyVal(#1,'for')')() ?#locator(stex:srcref='#locator')()>"
+ . "#body"
+ . "</omdoc:solution>");
+DefCMPEnvironment('{exnote}',
+ "<omdoc:hint ?#locator(stex:srcref='#locator')()>"
+ . "<omdoc:CMP ?#locator(stex:srcref='#locator')()>"
+ . "<omdoc:p>#body<omdoc:p>"
+ . "</omdoc:CMP>"
+ ."</omdoc:hint>");
+DefCMPEnvironment('{hint}',
+ "<omdoc:hint ?#locator(stex:srcref='#locator')()>"
+ . "<omdoc:CMP ?#locator(stex:srcref='#locator')()>"
+ . "<omdoc:p>#body</omdoc:p>"
+ . "</omdoc:CMP>"
+ ."</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 xref='#2' ?#locator(stex:srcref='#locator')() "
+ . "prob:dummy='for the namespace'>"
+ . "?&KeyVal(#1,'title')(<dc:title ?#locator(stex:srcref='#locator')()>&KeyVal(#1,'title')</dc:title>)()"
+ . "?&KeyVal(#1,'min')(<omdoc:meta property='prob:solvedinminutes' "
+ . "?#locator(stex:srcref='#locator')()>&KeyVal(#1,'min')</omdoc:meta>)()"
+ . "?&KeyVal(#1,'pts')(<omdoc:meta property='prob:points' "
+ . "?#locator(stex:srcref='#locator')()>&KeyVal(#1,'pts')</omdoc:meta>)()"
+ ."</omdoc:ref>");
+Tag('omdoc:exercise',afterOpen=>\&numberIt);
+Tag('omdoc:solution',afterOpen=>\&numberIt);
+Tag('omdoc:hint',afterOpen=>\&numberIt);
+1;