summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/webquiz/webquiz.cfg
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-03-16 22:43:33 +0000
committerKarl Berry <karl@freefriends.org>2019-03-16 22:43:33 +0000
commit7e80fa208736f4ab99b1d57dd1571da41f1e3744 (patch)
tree606bd82a5737d587ef239fd58a5a58c256666178 /Master/texmf-dist/tex/latex/webquiz/webquiz.cfg
parent9de7d0ea371387f647487812b48b51030c739bdf (diff)
webquiz
git-svn-id: svn://tug.org/texlive/trunk@50419 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/webquiz/webquiz.cfg')
-rw-r--r--Master/texmf-dist/tex/latex/webquiz/webquiz.cfg342
1 files changed, 342 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/webquiz/webquiz.cfg b/Master/texmf-dist/tex/latex/webquiz/webquiz.cfg
new file mode 100644
index 00000000000..0c503fc1c20
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/webquiz/webquiz.cfg
@@ -0,0 +1,342 @@
+% -----------------------------------------------------------------------
+% webquiz.cfg | webquiz TeX4ht configuration file
+% -----------------------------------------------------------------------
+%
+% Copyright (C) Andrew Mathas and Don Taylor, University of Sydney
+%
+% Distributed under the terms of the GNU General Public License (GPL)
+% http://www.gnu.org/licenses/
+%
+% This file is part of the WebQuiz system.
+%
+% <Andrew.Mathas@sydney.edu.au>
+% ----------------------------------------------------------------------
+
+\NeedsTeXFormat{LaTeX2e}[1996/12/01]
+\ProvidesFile{webquiz.cfg}[\webquiz{release date} v\webquiz{version} WebQuiz tex4ht configuration]
+
+\makeatletter% quite surprisingly, this is needed!
+
+% shortcut for inserting newlines into xml ifle
+\newcommand\HNewLine{\HCode{\Hnewline}}
+
+% Generate HTML5 + MathML code
+\Preamble{xhtml,mathml,html5,NoFonts,charset="utf-8",ext=xml,svg}
+
+% Don't output xml version tag
+\Configure{VERSION}{}
+
+% Output a WebQuiz doctype instead of the default for HTML5
+\Configure{DOCTYPE}{\HCode{<?xml version="1.0" encoding="UTF-8" standalone="no"?>\Hnewline
+<!DOCTYPE webquiz SYSTEM "webquiz.dtd">}}
+
+\ifWQ@Debugging\def\WQ@debugging{true}\else\def\WQ@debugging{false}\fi
+
+% store the quiz specifications as attributes to <quiz>
+\Configure{HTML}{%
+ \HNewLine%
+ \Tg<webquiz debugging="\WQ@debugging"
+ hide_side_menu="\WQ@ClassOption{hidesidemenu value}"
+ language="\WQ@ClassOption{language}"
+ one_page="\WQ@ClassOption{onepage value}"
+ pst2pdf="\WQ@ClassOption{pst2pdf value}"
+ random_order="\WQ@ClassOption{randomorder value}"
+ src="\jobname.tex"
+ theme="\WQ@ClassOption{theme}">
+ \HNewLine%
+ \Tg<title>\@title\Tg</title>%
+ \HNewLine%
+ \Tg<breadcrumb breadcrumbs="\WQ@breadcrumbs">\WQ@breadcrumb\Tg</breadcrumb>%
+ \HNewLine%
+ \Tg<unit_name url="\uos@url" quizzes_url="\WQ@quizzesUrl">\uos@name\Tg</unit_name>%
+ \HNewLine%
+ \Tg<unit_code>\uos@code\Tg</unit_code>%
+ \HNewLine%
+ \Tg<department url="\WQ@departmentURL">\WQ@department\Tg</department>%
+ \HNewLine%
+ \Tg<institution url="\WQ@institutionURL">\WQ@institution\Tg</institution>%
+ \HNewLine%
+}{\Tg</webquiz>}
+
+% reset all configurations
+\Configure{HEAD}{}{}
+\Configure{BODY}{}{}
+\Configure{TITLE}{}{}
+\Configure{TITLE+}{}
+\Configure{thanks author date and}{}{}{}{}{}{}{}{}
+\renewcommand{\maketitle}{}
+
+% convert pictures to svg
+\Configure{Picture}{.svg}
+%\Configure{Picture*}{.svg}
+
+%\Configure{textit}{\HCode{<span class="textit">}\NoFonts}{\EndNoFonts\HCode{</span>}}
+%\Configure{textsf}{\HCode{<span class="textsf">}\NoFonts}{\EndNoFonts\HCode{</span>}}
+
+% The webquiz macros and environments need to write opening and closing tags to
+% the xml file. Opening these tags is easy. To close them we use \WQ@closeXXX
+% and \WQ@@closeXXX macros. Each time a tag is opened we \let the \WQ@closeTag
+% macro to the corresponding \WQ@@close macro. The \WQ@@close macro closes the
+% tag and then \let's the \WQ@closeTag macro to \relax. This allows us to use
+% the \WQ@close macros at the start of the tag routines below, which results in
+% fairly transparent and readable code.
+
+% make the @close tags \relax initially
+\let\WQ@closeTag\relax % closes \correct, \incorrect, \feedback, \whenRight and \whenWrong
+\let\WQ@closeText\relax % closes text
+
+% text tags - everything in wrapped inside <text>...</text> tags
+\def\WQ@openText{\Tg<text>\HtmlParOff\HCode{<![CDATA[}\let\WQ@closeText\WQ@@closeText}
+\def\WQ@@closeText{\HCode{]]>}\HtmlParOn\Tg</text>\HNewLine\global\let\WQ@closeText\relax}
+
+% -----------------------------------------------------------------------
+% discussion environment
+% -----------------------------------------------------------------------
+
+% discussion environments are number -1, -2, ... in the webquiz.js
+\renewcommand\thediscussion{-\arabic{discussion}}
+
+% inside a discussion environment any label defines two labels, the second of
+% which is a label to the short-title for the discussion item. Of there are many
+% labels this is slightly in efficient but, because of tex4ht magic, it proved
+% too painful to extract the discussion number from the label.
+\let\WQ@reallabel=\label
+\newcommand\WQ@discussionLabel[1]{%
+ \WQ@reallabel{#1}%
+ \bgroup\let\@currentlabel\WQ@shortDiscussionTitle%
+ \WQ@reallabel{discussion-title-#1}%
+ \egroup%
+}
+
+% discussion environments
+\RenewDocumentEnvironment{discussion}{O{Discussion}O{#1}}{%
+ \WQ@DiscussionStart%
+ \HNewLine%
+ \Tg<discussion>\HNewLine
+ \Tg<short_heading>#1\Tg</short_heading>\HNewLine
+ \Tg<heading>#2\Tg</heading>\HNewLine
+ \Tg<text>\HCode{<![CDATA[}% don't use \WQ@openText as we want paragraphs
+ \def\WQ@shortDiscussionTitle{#1}%
+ \let\label\WQ@discussionLabel%
+}{\EndP\HCode{]]>}\Tg</text>\HNewLine\Tg</discussion>\HNewLine\WQ@DiscussionEnd}
+
+% ---------------------------------------------------------------------------
+% Cross referencing question and discussion environments
+% ---------------------------------------------------------------------------
+
+% tex4ht redefines the \ref internals so that r@<label> uses \rEfLiNK,
+% so we temporarily redefine \rEfLiNK to access the question/discussion
+% number
+\def\WQ@rEfLiNK#1#2{#2}
+% \WQ@Ref[optional *][optional text]{mandatory label}
+\RenewDocumentCommand\WQ@ref{ m s o m }{%
+ \HNewLine%
+ \bgroup%
+ \let\rEfLiNK\WQ@rEfLiNK%
+ \IfBooleanTF{#2}{% link
+ \HCode{<a onClick="gotoQuestion(}\ref{#4}\HCode{);">}%
+ \IfNoValueTF{#3}{\ref{#1#4}}{#3}%
+ \HCode{</a>}%
+ }{% button
+ \HCode{<span class="button blank" onClick="gotoQuestion(}\ref{#4}%
+ \HCode{);">}%
+ \IfNoValueTF{#3}{\ref{#1#4}}{#3}%
+ \HCode{</span>}%
+ }%
+ \egroup%
+}
+
+\renewcommand\dref{\WQ@ref{discussion-title-}}
+\renewcommand\qref{\WQ@ref{}}
+\RenewDocumentCommand\Qref{ s O{#3} m }{%
+ \HNewLine%
+ \IfBooleanTF{#1}{% link
+ \HCode{<a onClick="gotoQuestion(#3);">}#2\HCode{</a>}%
+ }{% button
+ \HCode{<span class="button blank" onClick="gotoQuestion(#3);">}#2\HCode{</span>}%
+ }%
+}
+
+% -----------------------------------------------------------------------
+% question environments
+% -----------------------------------------------------------------------
+
+\renewenvironment{question}{%
+ \WQ@QuestionStart%
+ \IgnorePar\HCode{\Hnewline<question>}% open the question tag
+ \WQ@openText% start some text
+}{\WQ@QuestionEnd\WQ@closeText\WQ@closeTag\Tg</question>\HNewLine}
+
+% -----------------------------------------------------------------------
+% choice environment, \correct and \incorrect choices and \feedback
+% -----------------------------------------------------------------------
+
+\RenewDocumentEnvironment{choice}{O{}}{%
+ \WQ@ChoiceStart{#1}%
+ \WQ@closeText% close any open text tags and then insert tex4ht code
+ \IgnorePar%
+ \Tg<choice type="\pgfkeysvalueof{/webquiz checker/mode}"
+ columns="\pgfkeysvalueof{/webquiz checker/columns value}">%
+ \let\WQ@closeTag\relax%
+}{\WQ@ChoiceEnd\WQ@closeTag\Tg</choice>}
+
+% correct and incorrect items
+\def\WQ@@closeItem{\WQ@closeText\Tg</item>\HNewLine\let\WQ@closeTag\relax}
+\def\WQ@Item#1{%
+ \WQ@ItemStart%
+ \WQ@closeTag%
+ \Tg<item correct="#1" symbol="\thechoice">\WQ@openText%
+ \let\WQ@closeTag\WQ@@closeItem%
+}
+\def\correct{\WQ@Item{true}}
+\def\incorrect{\WQ@Item{false}}
+
+% feedback
+\def\WQ@@closeFeedback{\WQ@closeText\Tg</feedback>\HNewLine\let\WQ@closeTag\relax}
+\def\feedback{%
+ \WQ@FeedbackStart%
+ \WQ@closeTag\Tg<feedback>\WQ@openText\let\WQ@closeTag\WQ@@closeFeedback%
+}
+
+% -----------------------------------------------------------------------
+% The \answer macro and \whenRight, \whenWrong
+% -----------------------------------------------------------------------
+
+\RenewDocumentCommand\answer {sO{string}m}{%
+ \WQ@AnswerStart{#2}%
+ \WQ@closeText%
+ \IfBooleanTF{#1}{\def\WQ@prompt{false}}{\def\WQ@prompt{true}}%
+ \Tg<answer prompt="\WQ@prompt" comparison="#2">\HNewLine%
+ \WQ@openText#3\WQ@closeText%
+ \Tg</answer>%
+ \HNewLine%
+ \let\WQ@closeTag\relax%
+ \WQ@openText%
+}
+
+% whenRight and whenWrong
+\def\WQ@closeWhen{\Tg</when>\HNewLine\let\WQ@closeTag\relax}
+\def\WQ@When#1{%
+ \WQ@WhenStart{#1}%
+ \WQ@closeText\WQ@closeTag%
+ \IgnorePar\Tg<when type="#1">\WQ@openText%
+ \let\WQ@closeTag\WQ@closeWhen%
+}
+\def\whenRight{\WQ@When{right}}
+\def\whenWrong{\WQ@When{wrong}}
+
+% -----------------------------------------------------------------------
+% the quizindex environment and \quiz macro
+% -----------------------------------------------------------------------
+
+% quizindex environment and \quiz
+\ConfigureEnv{quizindex}{\Tg<quizindex>\HNewLine}{\Tg</quizindex>\HNewLine}{}{}
+\RenewDocumentCommand\quiz{som}{\refstepcounter{quiz}%
+ \WQ@QuizStart%
+ \IfBooleanTF{#1}{\def\WQ@prompt{false}}{\def\WQ@prompt{true}}%
+ \IfNoValueTF{#2}{\def\WQ@url{quiz\thequiz.html}}{\def\WQ@url{#2}}%
+ \Tg<index_item prompt="\WQ@prompt" url="\WQ@url">\WQ@openText #3 \WQ@closeText\Tg</index_item>\HNewLine%
+}
+
+% -----------------------------------------------------------------------
+% making listing environment work with colour I
+% - this code appears to break \color and \textcolor in the online manual
+% -----------------------------------------------------------------------
+
+
+% from https://tex.stackexchange.com/questions/225554/syntax-highlighting-in-an-html-presentation
+% extract current color as hexadecimal value
+\makeatletter
+\ifdefined\lst@version
+\newcommand\tsf@getColor[1][.]{%
+ % colorname `.` holds current color
+ \extractcolorspec{.}{\tsf@color}
+ \expandafter\convertcolorspec\tsf@color{HTML}\tsf@color
+ %\tmpcolor
+ }
+
+ % write css color for given css selector
+ \newcommand\CssColor[1]{%on-l
+ % save current color
+ \tsf@getColor%
+ \Css{#1{color:\#\tsf@color;}}%
+ }
+\fi
+
+% Do not set indent and noindent classes on paragraphs
+\Configure{HtmlPar}
+ {\EndP\Tg<p>}
+ {\EndP\Tg<p>}
+ {\HCode{</p>\Hnewline}}
+ {\HCode{</p>\Hnewline}}
+
+\renewcommand\DisplayAsImage[2][]{%
+ \csletcs{real:#2}{#2}%
+ \NewConfigure{#2}{2}
+ \csdef{#2}##1{\Picture+[#1]{}\csuse{real:#2}{##1}\EndPicture}
+ \Configure{#2}{\Picture+[#1]{}}{\EndPicture}
+}
+
+\begin{document}
+
+% disable \title after \begin{document}
+\def\title{\WQ@Error{\@backslashchar title can only be used in the preamble}\@ehc}
+
+% -----------------------------------------------------------------------
+% making listing environment work with colour II
+% - this code appears to break \color and \textcolor in the online manual
+% -----------------------------------------------------------------------
+
+%% this code is for processing the listing environments in the online manual
+\ifdefined\lst@version
+ % from https://www.mail-archive.com/tex4ht@tug.org/msg00116.html
+ \let\savecolor\color
+ \NewConfigure{color}[2]{\def\a@color{#1}\def\b@color{#2}}
+ \def\color@@tmp#1{\a@color#1\b@color\savecolor{#1}\aftergroup\endspan}
+ \let\color\color@@tmp
+ \def\endspan{\Tg</span>}
+ \Configure{color}{\HCode{<span style="color:}}{\HCode{">}}
+
+ \ConfigureEnv{lstlisting}
+ {\let\color\savecolor
+ \ifvmode \IgnorePar\fi \EndP
+ \gHAdvance\listingN by 1
+ \HCode{<!--l. \the\inputlineno-->}%
+ \gdef\start:LstLn{\HCode{<div class="lstlisting" id="listing-\listingN">}%
+ \gdef\start:LstLn{\leavevmode\special{t4ht@+\string&{35}x00A0{59}}x%
+ \HCode{<br/>}}}
+ \bgroup
+ \Configure{listings}
+ {{\everypar{}\leavevmode}}
+ {{\everypar{}\leavevmode}}
+ {\start:LstLn \HCode{<span class="label">}}
+ {\HCode{</span>}}%
+ }
+ {\egroup
+ \ifvmode \IgnorePar\fi \EndP \HCode{</div>}\par}
+ {}{}
+
+ % for listings in webquiz-manual
+ % from https://tex.stackexchange.com/questions/225554/syntax-highlighting-in-an-html-presentation
+ \newcommand\LstCss[2]{%
+ \bgroup%
+ \csname lst@#2\endcsname%
+ \CssColor{#1}%
+ \egroup%
+ }
+
+ \LstCss{div.lstlisting .ecbx-1000}{keywordstyle}
+ \LstCss{div.lstlisting .ecss-1000}{commentstyle}
+ \LstCss{div.lstlisting .ectt-1000}{basicstyle}
+\fi
+
+\makeatother
+
+\EndPreamble
+
+% bug fix for \mathbf from http://tex.stackexchange.com/questions/362178
+%\Configure{mathbf}{\HCode{<mi mathvariant="bold">}\PauseMathClass}{\EndPauseMathClass\HCode{</mi>}}
+
+\endinput
+%%
+%% End of file `webquiz.cfg'.