# 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-`, `&gt;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