diff options
author | Karl Berry <karl@freefriends.org> | 2019-01-09 22:45:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-01-09 22:45:39 +0000 |
commit | 72dc156cb5ac86df57a1d2d49c1446744be53395 (patch) | |
tree | c2946366a825cf13ea6cc2af7ab2a605c7408bdf /Master/texmf-dist/tex/latex/mi-solns | |
parent | cb2b57ca95d65bf9d9d21ec4a0109380f1e50fc0 (diff) |
mi-solns (9jan19)
git-svn-id: svn://tug.org/texlive/trunk@49651 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mi-solns')
-rw-r--r-- | Master/texmf-dist/tex/latex/mi-solns/mi-solns.sty | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/mi-solns/mi-solns.sty b/Master/texmf-dist/tex/latex/mi-solns/mi-solns.sty new file mode 100644 index 00000000000..3435e78cc19 --- /dev/null +++ b/Master/texmf-dist/tex/latex/mi-solns/mi-solns.sty @@ -0,0 +1,152 @@ +%% +%% This is file `mi-solns.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% mi-solns.dtx (with options: `copyright,package') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% mi-solns package %% +%% Copyright (C) 2018 D. P. Story %% +%% dpstory@uakron.edu %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1.2 of the %% +%% License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mi-solns} + [2018/12/28 v0.6 extract solutions from exerquiz (dps)] +\RequirePackage{shellesc} +\ProcessOptions\relax +\def\mi@reqChk{\begingroup\mifoundfalse + \@ifpackageloaded{exerquiz}{\mifoundtrue\def\reqDate{2018/12/13} + \@ifpackagelater{exerquiz}{\reqDate} + {}{\PackageWarning{mi-solns}{exerquiz dated \reqDate\space + or later\MessageBreak required}}% + }{}% + \@ifpackageloaded{eqexam}{\mifoundtrue + \def\reqDate{2018/12/13}\@ifpackagelater{eqexam}{\reqDate} + {\mi@solutionsonlyfix}{\PackageWarning{mi-solns} + {eqexam dated \reqDate\space or\MessageBreak + later required}}% + }{}% + \ifmifound\else + \PackageWarning{mi-solns}{For this package to be + effective\MessageBreak you need either exerquiz + or eqexam, as appropriate}\fi +\endgroup} +\AtBeginDocument{\mi@reqChk} +\def\mi@solutionsonlyfix{\ifsolutionsonly + \edef\eqExSolFileName{\misolout}\expandafter + \global\copySolnsOff\global\notamiopfalse\fi} +\def\declSOLIn#1{\def\misolin{#1}}\def\declSOLOut#1{\def\misolout{#1}} +\def\misolin{\jobname.sol}\def\misolout{\jobname-cpy.sol} +\def\declQSLIn#1{\def\miqslin{#1}}\def\declQSLOut#1{\def\miqslout{#1}} +\def\miqslin{\jobname.qsl}\def\miqslout{\jobname-cpy.qsl} +\newcommand*{\copyfileCmdEx}{copy \misolin\space\misolout} +\newcommand*{\copyfileCmdQz}{copy \miqslin\space\miqslout} +\def\mi@copysolns{% + \ShellEscape{\copyfileCmdEx}\ShellEscape{\copyfileCmdQz}} +\def\copySolnsOn{\let\mi@copySolns\mi@copysolns} +\def\copySolnsOff{\let\mi@copySolns\relax} +\@onlypreamble\copySolnsOn +\@onlypreamble\copySolnsOff +\copySolnsOn +\AtEndDocument{\mi@copySolns} +\newif\ifmifound \mifoundfalse +\newif\ifnotamiop \notamioptrue +\newif\ifmi@OKtoRead \mi@OKtoReadtrue +\def\readSolnsOn{\mi@OKtoReadtrue} +\def\readSolnsOff{\mi@OKtoReadfalse} +\newcommand*{\miReadOffMsg}{(\textbf{?? read is off ??})} +\newcommand\mi@wrt@fix[1]{\protect\ifnotamiop^^J% + #1^^J\protect\fi} +\renewcommand\writeToExSolns[1]{\writeT@ExSolns{\mi@wrt@fix{#1}}} +\renewcommand\writeToQzSolns[1]{\writeT@QzSolns{\mi@wrt@fix{#1}}} +\@ifpackageloaded{eqexam} + {\renewcommand\writeToSolnFile[1]{\writeT@SolnFile{\mi@wrt@fix{#1}}}} + {\let\writeToSolnFile\writeToExSolns} +\def\ignoreterminex{\let\eqterminex\relax\let\decleqterminex\@gobble} +\let\ignoreques\ignoreterminex +\long\def\gobbleiiterminex#1\eqterminex{} +\long\def\gobbleiiendinput#1\endinput{\endinput} +\long\def\gobbleiiendgroup#1\endgroup{} +\long\def\mi@griii#1#2#3{} +\def\eqMrkSolnCpyEx#1{\def\eqargi{#1}% + \ifx\eqargi\eqMrkCpyArg + \mifoundtrue + \let\par\par@SAVE + \ifmakeExSlLocal + \long\def\endeqEXt##1##2##3{##3\gobbleiiendinput}\else + \let\endeqEXt\gobbleiiendinput\fi + \let\eqEXt\@gobbletwo + \let\mi@next\relax + \else + \long\def\endeqEXt##1##2{}% + \let\mi@next\gobbleToEndEXt + \fi +\mi@next} +\def\eqMrkSolnCpySQ#1{\def\eqargi{#1}% + \ifx\eqargi\eqMrkCpyArg + \mifoundtrue + \let\par\par@SAVE + \ifmakeQzSlLocal + \long\def\endeqSQt##1##2{##2\gobbleiiendinput}\else + \let\endeqSQt\gobbleiiendinput + \fi + \let\mi@next\gobbleiiterminex + \else + \long\def\endeqSQt##1{}% + \let\mi@next\gobbleToEndSQt + \fi +\mi@next} +\def\eqMrkSolnCpyQz#1{\def\eqargi{#1}% + \ifx\eqargi\eqMrkCpyArg + \mifoundtrue + \let\par\par@SAVE + \ifmakeQzSlLocal + \long\def\endeqQt##1##2{##2\gobbleiiendinput}\else + \let\endeqQt\gobbleiiendinput + \fi + \let\mi@next\gobbleiiterminex + \else + \long\def\endeqQt##1{}% + \let\mi@next\gobbleToEndSQt + \fi +\mi@next} + +\let\addToMINullify\relax +\def\mi@nullify{\let\par@SAVE\par\let\par\relax + \let\eqgrii\@gobbletwo\let\eqgriii\mi@griii\let\solnItemMngt\relax + \def\exerSolnHeader##1##2##3{}\def\ReturnTo##1##2{\unskip}% + \let\eqTopOfSolnPage\relax\let\preExamSolnHead\relax + \let\eqTopOfQslPage\relax + \let\examSolnHeadFmt\@gobble\let\postExamSolnHead\relax + \let\btwnExamSkip\relax\def\quizSolnHeader##1##2{}\addToMINullify} +\newcommand{\insExSoln}[2][]{\begingroup\withinsoldoctrue#1\relax + \notamiopfalse\mi@nullify + \let\eqMrkSoln\eqMrkSolnCpyEx + \useEXtFilter\filterFor{@NOMATCH@}\def\eqMrkCpyArg{#2}% + \ifmi@OKtoRead\InputIfFileExists{\misolout}{}{}\ifmifound\else + \textbf{??}\PackageWarning{mi-solns}{The name '#2' defined by + \string\mrkForIns\MessageBreak was not found}\fi\else + \miReadOffMsg\fi\endgroup} +\newcommand\mi@insSQzSoln[4][]{\begingroup\withinqsldoctrue#1\relax + \notamiopfalse\mi@nullify + \let\eqMrkSoln#3\relax + #4\filterFor{@NOMATCH@}\def\eqMrkCpyArg{#2}% + \ifmi@OKtoRead\InputIfFileExists{\miqslout}{}{}\ifmifound\else + \textbf{??}\PackageWarning{mi-solns} + {The name '#2' defined by \string\mrkForIns\MessageBreak + was not found}\fi\else\miReadOffMsg\fi\endgroup} +\newcommand{\insSqSoln}[2][]{% + \mi@insSQzSoln[#1]{#2}{\eqMrkSolnCpySQ}{\useSQtFilter}} +\newcommand{\insQzSoln}[2][]{% + \mi@insSQzSoln[#1]{#2}{\eqMrkSolnCpyQz}{\useQtFilter}} +\endinput +%% +%% End of file `mi-solns.sty'. |