QuizML
QuizML is a command line tool for converting a list of questions in yaml/markdown to a BlackBoard test or to a Latex exam source file.
Assuming that you have python and pip installed, you can simply install it with:
pip install quizml
You will also need a LaTeX installation with gs and pdflatex (e.g. TeXLive or MacTeX).
Questions are written in a YAML file, using a Markdown syntax.
Here is a minimal quiz.yaml example:
- type: mc
marks: 5
question: |
If vector ${\bf w}$ is of dimension $3 \times 1$ and
matrix ${\bf A}$ of dimension $5 \times 3$,
then what is the dimension of
$\left({\bf w}^{\top}{\bf A}^{\top}{\bf A}{\bf w}\right)^{\top}$?
choices:
- o: $5\times 5$
- o: $3\times 3$
- o: $3\times 1$
- x: $1\times 1$
- type: tf
marks: 5
question: |
Is this the image of a tree?
{ width=30em }
answer: false
Then you can generate multiple render targets, including BlackBoard test, LaTeX, and an HTML preview.
$ quizml quiz1.yaml
Q Type Marks # Exp Question Statement
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1 mc 5.0 4 1.2 If vector ${\bf w}$ is of dimension $3 \times 1$ ...
2 tf 5.0 2 2.5 Is this the image of a tree?
Total: 10.0 (with random expected mark at 37.5%)
╭──────────────────────────────── Target Ouputs ────────────────────────────────╮
│ │
│ BlackBoard CSV quiz1.txt │
│ html preview quiz1.html │
│ latex latexmk -xelatex -pvc quiz1.tex │
│ Latex solutions latexmk -xelatex -pvc quiz1.solutions.tex │
│ │
╰───────────────────────────────────────────────────────────────────────────────╯
and this is what the rendered outputs look like:
Metadata
Release files for quizml 0.12.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quizml-0.12.0.tar.gz | 3.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quizml-0.12.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.3 MB
Release files / quizml-0.12.0.tar.gz
| Download URL | quizml-0.12.0.tar.gz |
|---|---|
| Size | 3.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5dd2a3655cd6b867abd1a888825290f294260f27293fe9c698674de61bb7fa4f
|
|
BLAKE2b-256 checksum How to use checksums |
581de9a97630a1a412361da4767cd7640460c051274813a345b12ee59c9149a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 3, 2026.
Transparency logRelease files / quizml-0.12.0-py3-none-any.whl
| Download URL | quizml-0.12.0-py3-none-any.whl |
|---|---|
| Size | 110.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5358c5a84b815dc64b7e6f2310d8cf5aa71b5a3edc2257806902dc22db354d7d
|
|
BLAKE2b-256 checksum How to use checksums |
6cc0598bfb9008c2aa42e0f2f6717a1867284fdf386fc37ee665b8c60933ac04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 3, 2026.
Transparency log