From 687b8b926f1456bef401824cc0f8dae62e62cd3f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 8 Apr 2018 20:06:03 +0000 Subject: exercisebank (8apr18) git-svn-id: svn://tug.org/texlive/trunk@47380 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/exercisebank/exercisebank.sty | 88 ++++++++++++++++------ 1 file changed, 63 insertions(+), 25 deletions(-) (limited to 'Master/texmf-dist/tex/latex/exercisebank/exercisebank.sty') diff --git a/Master/texmf-dist/tex/latex/exercisebank/exercisebank.sty b/Master/texmf-dist/tex/latex/exercisebank/exercisebank.sty index cdce8adaa24..059c4e1973b 100644 --- a/Master/texmf-dist/tex/latex/exercisebank/exercisebank.sty +++ b/Master/texmf-dist/tex/latex/exercisebank/exercisebank.sty @@ -1,5 +1,5 @@ % Source (with comments) can be found at https://github.com/Strauman/exerciseBank -%% The LaTeX package exercisebank - version v0.0.6 (2018/04/03) - build 47 +%% The LaTeX package exercisebank - version v0.1.0 (2018/04/08) - build 55 %% exercisebank.sty: Exercise bank %% ------------------------------------------------------------------------------------------- %% Copyright (c) 2018 by Andreas Storvik Strauman @@ -13,20 +13,49 @@ %% version 2008/05/04 or later. %% This work has the LPPL maintenance status `author-maintained'. %% This work consists of all files listed in README -\ProvidesPackage{exercisebank}[2018/04/03 v0.0.6 Creates a setup that gives freedom in making sets and exercises.] +\ProvidesPackage{exercisebank}[2018/04/08 v0.1.0 Creates a setup that gives freedom in making sets and exercises.] +\PackageWarningNoLine{exercisebank-v0.1.0}{This package is in the alpha stage, and if something unexpected happens please, oh pretty please, report it to https://github.com/Strauman/exerciseBank. Thank you!} \@ifundefined{ownLineNoSpacesGotIt}{\@latex@warning{Compilation wont work unless \string\end{problem} and \string\end{solution} are on their own lines and without any spaces. This warning can be removed by doing \string\def\string\ownLineNoSpacesGotIt{} before \@backslashchar usepackage{exbank}} }{} -\gdef\setExercisesDir#1{\gdef\exercisesDir{#1}} -\@ifundefined{exercisesDir}{\gdef\exercisesDir{exercises} +\gdef\setExercisesDir#1{\@latex@error{\string\setExercisesDir is deprecated. Use \string\exercisebanksetup{exercise directory=#1} instead}{}\stop\bye +} +\@ifundefined{exercisesDir}{\gdef\@exercisesDir{.} }{} \global\let\incl = \input -\RequirePackage{xstring} -\RequirePackage{pgffor} -\RequirePackage{scrextend} -\RequirePackage{comment} -\RequirePackage{calc} -\RequirePackage{pgfpages} -\RequirePackage{geometry} +\usepackage{xstring} +\usepackage{pgffor} +\usepackage{scrextend} +\usepackage{comment} +\usepackage{calc} +\usepackage{pgfpages} +\usepackage{geometry} +\edef\@isTrue{1} +\edef\@isFalse{0} +\pgfkeys{/exbanksetup/.is family, /exbanksetup, +default/.style = { part problems = On, + tighten paragraphs = True, + problem header={\normalfont\Large\bfseries\@tr{Problem}~\theproblemcounter}, + part problem header={\large\textbf{(\theproblemcounter\alph{partproblemcounter})}}, + solution header={\large{\textbf{\@tr{Solution}:}}}, + exercise directory=., +}, +exercise directory/.estore in = \@exercisesDir, % +problem header/.store in = \exbank@opt@problemHeader, +part problem header/.store in = \exbank@opt@partProblemHeader, +solution header/.store in = \exbank@opt@solutionHeader, +part problems/.style = {switches/#1/.get = \exbank@opt@partProblems}, +tighten paragraphs/.style = {switches/#1/.get = \exbank@opt@tightenparagraphs}, +switches/.cd, + On/.initial = \@isTrue, + on/.initial = \@isTrue, + T/.initial = \@isTrue + Off/.initial = \@isFalse, + off/.initial = \@isFalse, + F/.initial = \@isFalse, +} +\newcommand\exercisebanksetup[1]{ \pgfkeys{/exbanksetup, #1}% +} +\exercisebanksetup{default} \pgfkeys{ /exbanki18n/.is family, /exbanki18n, default/.style = {Problem = Problem, Solution = Solution}, Problem/.estore in = \@tr@Problem, @@ -75,33 +104,30 @@ \setcounter{problemcounter}{0} \newcounter{partproblemcounter} \At\VeryBeginProblem{ \stepcounter{problemcounter} - \setcounter{partproblemcounter}{1} + \setcounter{partproblemcounter}{0} \vspace*{\pMarginAbove} \begin{addmargin}{\pMarginLeft} - {\normalfont\Large\bfseries\@tr{Problem}~\theproblemcounter} + {\exbank@opt@problemHeader} \end{addmargin} \vspace*{\pMarginBelow} } -\At\EndProblem{ \filbreak +\At\EndProblem{ \if\exbank@opt@tightenparagraphs\isTrue\filbreak\fi } \At\VeryBeginPartproblem{% \stepcounter{partproblemcounter}% - \def\@pproblemHead{\large\textbf{(\theproblemcounter\alph{partproblemcounter})}} \begin{addmargin}{\ppMargin} - \filbreak + \if\exbank@opt@tightenparagraphs\isTrue\filbreak\fi \begin{itemize} - \item[\@pproblemHead] + \item[\exbank@opt@partProblemHeader] } \At\EndPartproblem{ \end{itemize} \end{addmargin} \vspace*{\pMarginBelow}% } \At\BeginSolution{ \vspace*{1em} - \def\@solutionHead{\large{\textbf{\@tr{Solution}:}}} \begin{addmargin}{\solMargin} - \filbreak \begin{itemize} - \item[\@solutionHead] + \item[\exbank@opt@solutionHeader] } \At\EndSolution{ \end{itemize} \end{addmargin} @@ -135,11 +161,20 @@ \generalcomment{problem}{ \edef\DisplaySolution{\@DisplaySolutions} \Trigger\DecideProblemDisplay \begingroup - \showhideproblem{ \Trigger\BeginPartproblem - \Trigger\VeryBeginPartproblem + \showhideproblem{ \if\exbank@opt@partProblems\isTrue + \Trigger\BeginPartproblem + \Trigger\VeryBeginPartproblem + \else + \Trigger\BeginProblem + \Trigger\VeryBeginProblem + \fi } }{ \if\DisplayProblem\isFalse\else - \Trigger\EndPartproblem + \if\exbank@opt@partProblems\isTrue + \Trigger\EndPartproblem + \else + \Trigger\EndProblem + \fi \fi \endgroup } @@ -307,7 +342,7 @@ \@ifundefined{setlist@#2@nohead}{\gdef\nohead{\isFalse}}{\gdef\nohead{\isTrue}} \xdef\setName{#2} \@ifundefined{setlist@#2}{ \@latex@error{Couldn't find set #2. Did you remember to do \string\makeset{#2}{}?} - \stop + \stop\bye }{} \edef\setlist{\csname setlist@#2\endcsname} \if\@spriteMode\isFalse @@ -336,7 +371,10 @@ \fi \if\nohead\isFalse\Trigger\VeryBeginProblem\fi \if\@spriteMode\isTrue\textbf{\exerciseFile.tex\\}\fi - \incl{\exercisesDir/\exerciseFile} + \IfFileExists{\@exercisesDir/\exerciseFile}{ \incl{\@exercisesDir/\exerciseFile} +}{ \@latex@error{Could not find \@exercisesDir/\exerciseFile. Maybe it is because the default exercise directory is now changed to the same directory that your main file is in. To set default exercise directory to exercises, do \string\exercisebanksetup{exercise directory=exercises}}{} + \stop\bye +} \if\nohead\isFalse\Trigger\EndProblem\fi \fi } -- cgit v1.2.3