This year I'm trying to generate quizzes automatically to the degree possible.
I've cooked up a templating scheme using jijna2 that works with LaTeX templates.
This article was very helpful.
Now that this has been published to pypi you can simply:
pip install genlatex
Once you have that, you can 'cd' to the directory with your template and data generator file and run getlatex using:
genlatex [ options ] dataGeneratorFile.py
For example to create 10 versions of the example you could:
cd example
genlatex -n 10 tlo-EX-Data.py
Then check in the folder for your .tex files!
To convert to pdf en-masse, with bash:
find *.tex | xargs -n 1 pdflatex
If your dataGeneratorFile needs to import any modules you should add '.' to the PYTHONPATH, e.g.,
PYTHONPATH=. genlatex -n 10 tlo-EX-Data.py
There is a shell script "buildZip.sh" that creates an importable .zip file that can be used to import quizzes into Sakai. It may also work for other LMS variations. Untested!
Update: Now you can run the full docker (Dockerfile-w-latex) version:
docker run --rm -it -v `pwd`:/work/src genlatex-full doExport.sh -n 10 tlo-EX-Data.py
Or the mini-docker (Dockerfile)
docker run --rm -it -v `pwd`:/work/src genlatex buildTeXs.sh -n 10 tlo-EX-Data.py
to build the mini-docker (without a full LaTeX install ~1.4GB)
docker build -t genlatex .
to build the full docker build (with a full LaTeX install ~7GB)
docker build -f Dockerfile-w-latex -t genlatex-full .
CHANGES:
v 0.12: Added units to formatters (e.g., latex_float(2.31, units="m"))
v 0.14: add units to latex_float and latex_vec, add some doc tests.
v 0.15: Changed the path handling to make it more Windows friendly.
v 0.16: Update README & other doc-strings
v 0.17: Add file path to items.xml so export.zip would contain individual filenames for students/instructors.
v 0.18: Possible breaking change. latex_float arguments are switching order, units first to save typing.
Now you can type simply: latex_float(2.31,"m") and "m" will be units. If you want a different format
then 'fmt' must be supplied as a *third* argument, or with a keyword, e.g. latex_float(2.234, fmt="{:0.2g}").
Also, added a '-0' detector that should convert these to '0'.
v 0.19: Modified the attachment file paths so that Canvas would accept them. Unfortunately canvas does not
support file upload questions in their current quiz tool.
v 0.20: Added eunit formatter to use "engineering" units.
v 0.24: Various changes, includeing command line variables in templates.
v 0.25: Force wheel in pypi
M1 Install with PyTikz:
brew install mupdf swig
brew install freetype
pip install https://github.com/pymupdf/PyMuPDF/archive/master.tar.gz
pip install git+https://github.com/allefeld/pytikz.git