{"id":37722737,"url":"https://github.com/nennigb/amc2moodle","last_synced_at":"2026-01-16T13:34:42.912Z","repository":{"id":6084460,"uuid":"54747488","full_name":"nennigb/amc2moodle","owner":"nennigb","description":"amc2moodle, is an automatic tool to convert multiple choice quiz between auto-muliple-choice LaTeX format and moodle XML format.","archived":false,"fork":false,"pushed_at":"2025-05-02T11:43:08.000Z","size":3304,"stargazers_count":22,"open_issues_count":7,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-09-27T04:23:18.218Z","etag":null,"topics":["auto-multiple-choice","latexml","moodle","moodle-xml","moodle-xml-format","multiple-choice"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nennigb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-03-25T21:06:07.000Z","updated_at":"2025-08-12T20:08:22.000Z","dependencies_parsed_at":"2025-01-04T23:20:29.959Z","dependency_job_id":"70ba5e74-d81f-4354-b042-ff394070d68b","html_url":"https://github.com/nennigb/amc2moodle","commit_stats":{"total_commits":366,"total_committers":6,"mean_commits":61.0,"dds":0.3907103825136612,"last_synced_commit":"220cbe1f333d623fa67de7d967d755360024be24"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/nennigb/amc2moodle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nennigb%2Famc2moodle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nennigb%2Famc2moodle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nennigb%2Famc2moodle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nennigb%2Famc2moodle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nennigb","download_url":"https://codeload.github.com/nennigb/amc2moodle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nennigb%2Famc2moodle/sbom","scorecard":{"id":679410,"data":{"date":"2025-08-11","repo":{"name":"github.com/nennigb/amc2moodle","commit":"f0866ddf80baf22a373fca7adc8e3a5b767f5cca"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/ci-publish.yml:97","Warn: no topLevel permission defined: .github/workflows/build-container.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-mac-os.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-ubuntu.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/build-container.yml:15"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":8,"reason":"1 out of the last 1 releases have a total of 1 signed artifacts.","details":["Info: signed release artifact: amc2moodle-2.12.1-py3-none-any.whl.sigstore.json: https://github.com/nennigb/amc2moodle/releases/tag/v2.12.1","Warn: release artifact v2.12.1 does not have provenance: https://api.github.com/repos/nennigb/amc2moodle/releases/203213321"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-container.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/build-container.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-container.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/build-container.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-container.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/build-container.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-container.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/build-container.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-container.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/build-container.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-container.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/build-container.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-container.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/build-container.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-mac-os.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-mac-os.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-mac-os.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-mac-os.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-mac-os.yml:89: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-mac-os.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-mac-os.yml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-mac-os.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-mac-os.yml:109: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-mac-os.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:102: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:107: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:182: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-publish.yml:187: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-ubuntu.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-ubuntu.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-ubuntu.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-ubuntu.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-ubuntu.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-ubuntu.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-ubuntu.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-ubuntu.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-ubuntu.yml:104: update your workflow using https://app.stepsecurity.io/secureworkflow/nennigb/amc2moodle/ci-ubuntu.yml/master?enable=pin","Warn: containerImage not pinned by hash: docker/Dockerfile:1: pin your Docker image by updating texlive/texlive:latest to texlive/texlive:latest@sha256:39a5d8083d325b5cdad8a0c6cbd324af4c879ceefb255f0ae73aa558c7562fc8","Warn: pipCommand not pinned by hash: docker/Dockerfile:40-41","Warn: pipCommand not pinned by hash: docker/Dockerfile:40-41","Warn: pipCommand not pinned by hash: deploy.sh:21","Warn: pipCommand not pinned by hash: deploy.sh:42","Warn: pipCommand not pinned by hash: .github/workflows/ci-mac-os.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/ci-mac-os.yml:67","Warn: pipCommand not pinned by hash: .github/workflows/ci-publish.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/ci-publish.yml:61","Warn: pipCommand not pinned by hash: .github/workflows/ci-publish.yml:83","Warn: pipCommand not pinned by hash: .github/workflows/ci-ubuntu.yml:39","Warn: pipCommand not pinned by hash: .github/workflows/ci-ubuntu.yml:63","Info:   0 out of  19 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   8 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   1 out of  12 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T22:36:23.321Z","repository_id":6084460,"created_at":"2025-08-21T22:36:23.322Z","updated_at":"2025-08-21T22:36:23.322Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479033,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-multiple-choice","latexml","moodle","moodle-xml","moodle-xml-format","multiple-choice"],"created_at":"2026-01-16T13:34:42.168Z","updated_at":"2026-01-16T13:34:42.904Z","avatar_url":"https://github.com/nennigb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `amc2moodle`\n[![pypi release](https://img.shields.io/pypi/v/amc2moodle.svg)](https://pypi.org/project/amc2moodle/) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) ![CI-Ubuntu](https://github.com/nennigb/amc2moodle/workflows/CI-Ubuntu/badge.svg)  ![CI-Mac-OS](https://github.com/nennigb/amc2moodle/workflows/CI-mac-os/badge.svg)\n\n`amc2moodle`, is a suite of tools to convert multiple choice questionnaires (MCQ)\n  - **from** [auto-multiple-choice](https://www.auto-multiple-choice.net) LaTeX quizzes **to** [moodle questions (XML format)](https://docs.moodle.org/38/en/Moodle_XML_format), see details in the [amc2moodle README file](amc2moodle/amc2moodle/README.md). Since `amc2moodle` use [LaTeXML](https://dlmf.nist.gov/LaTeXML/) to **expands LaTeX commands**, it could be _easily_ adapted to support most of LaTeX capabilities.\n  - **from** [moodle questions (XML format)](https://docs.moodle.org/38/en/Moodle_XML_format) **to** [auto-multiple-choice](https://www.auto-multiple-choice.net) LaTeX quizzes, see details in the [moodle2amc README file](amc2moodle/moodle2amc/README.md).\n\nThe conversion supports equations, tables, figures and standard text formatting.\nThis software is written in python and in XSLT, thus the conversion step is OS independent. It has been tested for moodle 3.x or 4.x and auto-multiple-choice (v1.0.3-v1.5).\n\nNote that [auto-multiple-choice](https://www.auto-multiple-choice.net) (amc) LaTeX format is very convenient, and can be used for preparing multiple choice questions off-line and avoiding moodle web GUI.\n\n\n## Installation\n\nA Docker image with `amc2moodle` and its dependencies is available at [ghcr.io/nennigb/amc2moodle](https://ghcr.io/nennigb/amc2moodle).\nOnce the docker software is installed, this image allows to use `amc2moodle` on **windows plateforms** or to add the resource isolation features on linux or macOS. For more information, see the [`amc2moodle`' docker README](docker/README.md).\nTo install `amc2moodle` as a python package on linux or macOS platform, follow the steps below.\n\n### Before installing amc2moodle:\n\n  -  install python (version \u003e=3.5)\n  -  install `imageMagick`, useful to convert image files (*.eps, *.pdf, ...) into png\n      - Ubuntu: `sudo apt-get install imagemagick`\n      - MacOS: `brew install ghostscript imagemagick` (see [`ImageMagick` website](https://imagemagick.org/script/download.php) for more details)\n  -  install [`LaTeXML`](http://dlmf.nist.gov/LaTeXML) [tested with version \u003e= 0.8.1] This program does the first step of the conversion into XML\n      - Ubuntu: `sudo apt-get install latexml`\n      - see also [LaTeXML wiki](https://github.com/brucemiller/LaTeXML/wiki/Installation-Guides) or [install notes](https://dlmf.nist.gov/LaTeXML/get.html) that all the dependencies are installed (perl, latex, imagemagick).\n  -  install `xmlindent` [optional]. This program can be used to indent well the XML file\n      - Ubuntu: `sudo apt-get install xmlindent`\n      - MacOS: not necessary. Script will use `xmllint` natively available on MacOS.\n\nFor MacOS users, most dependencies can be installed with `brew` but `LaTeXML` installation can failed for some version. Please see the steps given in the install script [workflow](.github/workflows).\n\n\n### Install with pip\n\nRun\n```\npip install amc2moodle\n``` \npip will download automatically the required files.\n\nor if you have download the sources, run\n```\npip install .\n```\nin the root folder (where `setup.py` is). This will automatically install other dependencies i.e., `lxml`, and `Wand`.\nAlternatively, you can run\n```\npip install -e .\n```\nto install it in editable mode, useful if git is used.\n\nNote: for Ubuntu users use `pip3` instead of `pip` for python3.\n\n### Uninstallation\nRun \n```\npip uninstall amc2moodle\n```\n\n## Conversion\nThe program can be run in a shell terminal, for instance to convert an **amc LaTeX file to moodle XML**\n```\namc2moodle input_Tex_file.tex -o output_file.xml -c catname\n```\nHelp and options can be obtained using\n```\namc2moodle -h\n```\nThen on moodle, go to the course `administration\\question bank\\import` and choose 'moodle XML format' and tick: **If your grade are not conform to that you must use: 'Nearest grade if not listed' in import option in the moodle question bank** (see below for details).\nExamples of the `amc2moodle` possibilities are given at [QCM.pdf](./amc2moodle/tests/payload_test_amc2moodle/QCM.pdf)\n\nIf your original exam uses [AMC-TXT syntax](https://www.auto-multiple-choice.net/auto-multiple-choice.en/AMC-TXT.shtml), you must first convert it to LaTeX before feeding it to `amc2moodle`. To convert an AMC-TXT file to LaTeX, generate the exam documents with AMC graphical interface as usual. AMC will generate a LaTeX version of your exam called `DOC-filtered.tex` inside the project directory, which you can pass to `amc2moodle`.\n\nIn the same way, conversion from **moodle XML to amc LaTeX file**, run\n```\nmoodle2amc input_XML_file.xml\n```\nHelp and options can be obtained using\n```\nmoodle2amc -h\n```\nThen the output LaTeX can be edited and included for creating amc exams. Examples of the `moodle2amc` possibilities are given [here](./amc2moodle/tests/payload_test_moodle2amc/moodle-bank-exemple.pdf).\n\n\n\n## Troubleshooting\nIn case of problem, do not hesitate to ask for help on [discussions](https://github.com/nennigb/amc2moodle/discussions) or to create an [issues](https://github.com/nennigb/amc2moodle/issues). Both binaries (`amc2moodle` and `moodle2amc`) write full log in log files based on the name of the input file (`_amc2moodle.log` and `_amc2moodle.log` suffixes are added on these files).\n  - 'convert: not authorized..' see ImageMagick policy.xml file see [here](https://stackoverflow.com/questions/52699608/wand-policy-error-error-constitute-c-readimage-412)\n  - bugs with tikz-LaTeXML in texlive 2019/2020: please update the following `perl` modules `Parse::RecDescent`, `XML::LibXML` and `XML::LibXSLT` [here](https://github.com/brucemiller/LaTeXML/issues/1279) with `cpan` or `cpanm`in CLI.\n  - If LaTeXML doesn't know some LaTeX package and return `Warning:missing_file:package-name Can't find binding for package package-name`, you can try to invoque `amc2moodle` with `--includestyles` flag.\n\n## Related Project\n  - [auto-multiple-choice](https://www.auto-multiple-choice.net),  is a piece of software that can help you creating and managing multiple choice questionnaires (MCQ), with automated marking.\n  - [TeX2Quiz](https://github.com/hig3/tex2quiz), is a similar project to translate multiple choice quiz into moodle XML, without connection with AMC.\n  - [moodle](https://www.ctan.org/pkg/moodle) - Generating Moodle quizzes via LaTeX. A package for writing Moodle quizzes in LaTeX. In addition to typesetting the quizzes for proofreading, the package compiles an XML file to be uploaded to a Moodle server.\n  - [moodle-mod-automultiplechoice](https://github.com/UGA-DAPI/moodle-mod-automultiplechoice) - An interface to use AMC within Moodle.\n  - [flatex](https://github.com/johnjosephhorton/flatex) - A Python script for \"flattening\" a nested LaTeX document by pulling in all the \\input files. Part of this project has been reused in amc2moodle.\n  - [pyexams](https://framagit.org/pang/pyexams),  It allows to eval code inside any jupyter kernel (like Sagemath, sympy, ...) and to export them in the moodle XML format.\n\n## How to contribute ?\nIf you want to contribute to `amc2moodle`, your are welcomed! Don't hesitate to\n  - ask for help or share some tips on [discussions](https://github.com/nennigb/amc2moodle/discussions)\n  - report bugs, installation problems on [issues](https://github.com/nennigb/amc2moodle/issues)\n  - propose some enhancements in the code or in documentation through **pull requests** (PR)\n  - create a moodle plugin for import\n  - support new kind of questions\n  - add support for other language (French and English are present) in AMC command\n  - ...\n\nTo ensure code homogeneity among contributors, we use [`ruff`](https://docs.astral.sh/ruff/) as source-code analyzer included in [`hatch`](https://hatch.pypa.io/1.9/config/static-analysis/) (e.g. `hatch fmt --check`).\nBefore submitting a PR, run the tests suite using `hatch test` (or `hatch test -c` to run test suite with covering report).\n\n## License\nThis file is part of amc2moodle, a tool to convert automultiplechoice quizzes to moodle questions.\namc2moodle is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\namc2moodle is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\nYou should have received a copy of the GNU General Public License along with amc2moodle.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnennigb%2Famc2moodle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnennigb%2Famc2moodle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnennigb%2Famc2moodle/lists"}