Skip to content

sspickle/genlatex

Repository files navigation

Templating Assessments with LaTex and Python

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published