-------------------------------------------------------------------------- XSIM -- eXercise Sheets IMproved -------------------------------------------------------------------------- Clemens Niederberger Web: https://github.com/cgnieder/xsim E-Mail: clemens@cnltx.de -------------------------------------------------------------------------- Copyright 2017--2022 Clemens Niederberger This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. The latest version of this license is in http://www.latex-project.org/lppl.txt and version 1.3c or later is part of all distributions of LaTeX version 2008/05/04 or later. This work has the LPPL maintenance status `maintained'. The Current Maintainer of this work is Clemens Niederberger. -------------------------------------------------------------------------- HISTORY: v0.0 2017/02/09 - start with coding the first ideas v0.1 2017/03/19 - first draft which actually seems to do everything as planned v0.2 2017/03/21 - bugfix in the verbwrite module - add `use!' and `print!' properties - add the concepts of `noupdate' and `boolean' properties v0.4 2017/03/24 - \IfExerciseBooleanPropertyTF - \GetExercisePropertyTF, \PropertyValue - \printallsolutions - \UseExerciseTemplate - bug fix in solution environments: now get printed again when option `print=true' is used - bug fix to the translations of the solution list headings: exercise name instead of exercise type is now printed - \AddtoExerciseTypeGoal, \AddtoExerciseGoal \AddtoExerciseTypeGoalPrint, \AddtoExerciseGoalPrint, \ExerciseGoalValuePrint - \addpoints, \addbonus, \points, \printgoal v0.5 2017/03/30 - add style file mechanism - make solution print conditions `section' and `chapter' combinable v0.5a 2017/04/15 - fix wrong translation of the `default-heading' v0.5b 2017/04/16 - add \SetExerciseProperty v0.6 2017/04/27 - official interface for grade distributions - refine hook management (environment module) v0.6a 2017/04/28 - refine \blank command, add documentation for said command v0.7 2017/05/09 - \xsim_list_length:n - new boolean property `used' - when an exercise is collected the counter isn't stepped but only when the exercise is inserted for the first time; when this happens the new property `used' is set to `true' - make setting boolean properties case insensitive - add missing pieces to manual (eg `page' property...) - \TotalExerciseGoals and \TotalExerciseTypeGoals - \XSIMifchapterTF - \xsim_if_goal_sum:nnnTF and friends, \IfExerciseTypeGoalsSumTF and \IfExerciseGoalsSumTF - some more hints in the manual regarding collections v0.8 2017/05/18 - bug fix in \xsim_set_property:nnnn - random exercise lists from collections - \xsim_collection_count:n - \GetExerciseIdForProperty and \GetExerciseTypeForProperty for unique properties - set property `print=false' during collection and only to true when the corresponding exercises actually are printed - do not insert \par at the beginning and end of exercises and solutions; this should be left to the templates! - new option `print-collection/print' which allows to choose between exercises, solutions, and both to be printed - new parameter `solution-counter' in order to avoid possible conflicts with existing counters v0.8a 2017/05/19 - \IfPrintSolutionTF v0.8b 2017/05/23 - use \printgoal in default environment template - \xsim_print_goal:nnn now expands input to a number v0.9 2017/06/20 - \xsimstyle's behaviour now matches the description in the manual - add style file `layouts' which at the moment provides the two exercise templates `runin' and `margin' - \printforexercises , \xsim_print_type_code:nnnnn - \IfExerciseParameterSetTF - \GetExerciseParameterTF - change syntax of \SetExerciseProperty - \SetExpandedExerciseProperty - \ExerciseSetProperty, \ExerciseSetExpandedProperty - property `sectioning' - \IfExistSolutionTF v0.10 2017/09/19 - \xsim_input:nnn - \GetExerciseBody - option `blank/fill' - bug fix in \xsim_start_collection:nn - added further examples to package - new option `file-extension' v0.10a 2017/10/01 - bug fix: grading table options can now be set with \xsimsetup (issue 15) v0.11 2018/02/12 - change name requirement for style files in order to prevent possible name clashes with module files - fix bug in \SetExerciseProperty and \SetExpandedExerciseProperty - fix bug when xsimverb is used standalone (issue 21) - add option `split-aux-lists' (issue 18) - \IfExerciseTagSetTF and \IfExerciseTopicSetTF - introduce a \xsim_if__value:nTF for each tag kind - \ProvideExerciseTagging v0.12 2019/09/30 - add parameter versions for the plural forms of exercise and solution names - bug fixes (issues 37, 39, 43, 47) v0.13 2019/10/06 - experimental package option `no-files' v0.14 2019/10/13 - new exercise parameters `exercise-heading' and `solution-heading' - new options `exercise/heading' and `solution/heading' as interface for setting the new parameters - new command \GetExerciseHeadingF for using the new parameters in environment templates - change the environment template `default' to use the new \GetExerciseHeadingF and output a \par at the end - make argument of \xsimsetup long - new template `minimal' - new option `load-style' - new example `texwelt-23968' (long and short solutions) v0.14a 2019/10/19 - fix \xsim_if_exercise_exist:nnTF to obey the `no-files' option v0.15 2019/11/02 - use own auxiliary file per default and add option `use-aux' v0.16 2019/11/10 - fix issue due to usage of own auxiliary file - \XSIMatbegindocument and \XSIMatenddocument - \xprintexercise, \xprintsolution, \xsimprint, \xsimxprint 2019/12/29 - bugfix in `xsimverb' v0.16a 2020/01/16 - adapt to renaming of string case changing functions v0.17 2020/02/21 - prefer lazy boolean evaluation if possible - remove spurious \par at the beginning of typeset exercises - add `blank' option, implements issue #31 - add `solution' property, implements issue #33 - fix issue #27 - implement issue #2 - don't allow package options to be set with \xsimsetup v0.18 2020/02/23 - fix issue #56 - change \printexercise and \printsolution to accept a clist of either ids or IDs (or mixed) - new templates in the `layouts' style v0.19 2020/03/16 - improve performance - only set \ExerciseID and \ExerciseType locally to ensure correct values when exercises (of different types) are nested - new load-time option `debug' - only for development v0.19a 2020/03/19 - fix missing-variant-bug introduced with the last update v0.19b 2020/04/04 - fix bug in new attribute mechanism which was a problem when `no-files` has been used v0.20 2021/01/31 - switch to one sty file per package - use LaTeX's new hooks - declare undeclared variables - new exercise setup mechanism which clearly determines the difference between definition, usage, and printing of an exercise; this also solves the problem with added goals in the exercise body in a collection - re-write collection mechanism: * changes the behaviour of \collectexercises but doesn't require external files any more and more importantly doesn't require inputting files several times for multiple collections * drop \collectexercisestype * new \(de)activatecollection * new options `collect' and `/collect' - small improvements in performance - new parameters `within' and `the-counter' - make `no-files' the default - new examples - various small fixes v0.20a 2021/02/01 - re-add missing `layouts' style - add example texsx-549540 v0.20b 2021/02/02 - fix issue #78 v0.20c 2021/02/03 - fix issue #80 - add missing test in \xsim_if_exist:nnnTF v0.21 2022/02/12 - make \__xsim_set_file_signature:nnn public - make \l__xsim_file_path_and_name_tl, \l__xsim_file_name_tl and \l__xsim_file_path_tl public - introduce XSIMsetfilebeginX and XSIMsetfileendX (xsimverb) - reduce comment line in automated comments in exercise and solution files - add option /use-unmatched - document option `blank/fill' - add counter foreach type and collection that holds the number of exercises of a type in a collection - fix issue #90 - correct file hooks - implement issue #88 - fix issue #96 - `use!' and `print!' had gone lost. Add them back in. - add new options `match-all'/`match-any' for the collection conditions. Resolves issue #94. - new \ForEachUsedExerciseByOrder, used in the table templates which resolves issue #85