116 lines
No EOL
3.1 KiB
Markdown
116 lines
No EOL
3.1 KiB
Markdown
# QCM HTML to LaTeX Converter
|
|
|
|
Convertisseur Python pour transformer des QCM HTML vers le format LaTeX compatible avec Auto Multiple Choice (AMC). Gère intelligemment le code Python avec coloration syntaxique via `minted`.
|
|
|
|
## Fonctionnalités principales
|
|
|
|
- **Conversion HTML → LaTeX AMC** avec gestion complète du code Python
|
|
- **Extraction automatique** du code dans des fichiers séparés avec `\inputminted`
|
|
- **Layouts intelligents** : horizontal, vertical ou multicol selon la complexité
|
|
- **Détection robuste** des bonnes réponses (support `<span class="ok">`, `>D-`, `>D-`)
|
|
- **Formatage automatique** du code avec sauts de ligne à 60 caractères
|
|
- **Échappement LaTeX** complet des caractères spéciaux (%, &, $, etc.)
|
|
- **Séparation automatique** des questions multiples sans balises `<hr>`
|
|
- **Documents complets** prêts à compiler avec en-têtes AMC
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
pip install beautifulsoup4
|
|
```
|
|
|
|
## Utilisation
|
|
|
|
### Exemples de base
|
|
|
|
```bash
|
|
# Conversion simple (questions seules)
|
|
python qcm_converter.py input.html
|
|
|
|
# Document LaTeX complet
|
|
python qcm_converter.py input.html -f
|
|
|
|
# Avec optimisations espace
|
|
python qcm_converter.py input.html -f --multicol --multicol-columns 4
|
|
|
|
# Mode CSV pour copies multiples
|
|
python qcm_converter.py input.html -f --csv
|
|
|
|
# Groupe personnalisé avec debug
|
|
python qcm_converter.py input.html -f -g chapitre1 --debug
|
|
```
|
|
|
|
### Options disponibles
|
|
|
|
| Option | Description | Défaut |
|
|
|--------|-------------|--------|
|
|
| `-f, --full-document` | Document LaTeX complet | Questions seules |
|
|
| `-o, --output` | Fichier de sortie | `qcm.tex` |
|
|
| `-c, --codes-dir` | Répertoire des fichiers Python | `codes/` |
|
|
| `-g, --element-group` | Groupe d'éléments AMC | `general` |
|
|
| `--csv` | Mode CSV (nécessite `liste.csv`) | Mode simple |
|
|
| `-d, --debug` | Mode debug détaillé | Désactivé |
|
|
|
|
### Options de mise en page
|
|
|
|
| Option | Description | Défaut |
|
|
|--------|-------------|--------|
|
|
| `--multicol` | Active multicol pour réponses courtes | Désactivé |
|
|
| `--multicol-columns N` | Nombre de colonnes multicol | `2` |
|
|
| `--layout-threshold N` | Seuil pour layout horizontal | `50` |
|
|
| `--force-horizontal` | Force layout horizontal | Auto |
|
|
| `--force-vertical` | Force layout vertical | Auto |
|
|
|
|
## Structure de sortie
|
|
|
|
### Mode questions seules
|
|
```latex
|
|
% Questions générées automatiquement
|
|
|
|
\element{general}{
|
|
\begin{question}{q1}
|
|
...
|
|
\end{question}
|
|
}
|
|
```
|
|
|
|
### Mode document complet
|
|
```latex
|
|
\documentclass[12pt,a4paper]{article}
|
|
\usepackage[francais,bloc]{automultiplechoice}
|
|
\usepackage{minted}
|
|
% ... en-têtes AMC complets
|
|
|
|
\element{general}{
|
|
\begin{question}{q1}
|
|
...
|
|
\end{question}
|
|
}
|
|
|
|
\sujet
|
|
\end{document}
|
|
```
|
|
|
|
## Formats d'entrée supportés
|
|
|
|
- QCM HTML avec questions numérotées (`Q1`, `Q2`, etc.)
|
|
- Code Python dans `<pre><code class="python">`
|
|
- Bonnes réponses marquées par `<span class="ok">` ou `>D-`
|
|
- Séparation par `<hr>` ou détection automatique
|
|
|
|
## Dépendances LaTeX
|
|
|
|
- `automultiplechoice`
|
|
- `minted` (nécessite `pygments`)
|
|
- `multicol`
|
|
- `csvsimple` (pour mode CSV)
|
|
|
|
## Compilation
|
|
|
|
```bash
|
|
pdflatex -shell-escape document.tex
|
|
```
|
|
|
|
## License
|
|
|
|
MIT |