Skip to content

Repository files navigation

texforge

License: MIT CI

Un sorgente .tex, due documenti. Scrivi un compito o un quiz in LaTeX, texforge lo compila in un PDF da stampare e in un HTML interattivo dove si risponde davvero, con correzione e punteggio automatici. Stesso testo, nessuna riscrittura.

Applicazione desktop per Windows, macOS e Linux. Compila sul tuo computer, con LaTeX vero — non ti serve nemmeno installarlo, se non ce l'hai già ci pensa l'app.

Indice

⬇️ Scarica l'applicazione

Ultima release — un installer per il tuo sistema:

Sistema File
Windows texforge-*-windows-x64.exe
macOS (Apple Silicon) texforge-*-macos-arm64.dmg
macOS (Intel) texforge-*-macos-x64.dmg
Linux (qualsiasi distribuzione) texforge-*-linux-x86_64.AppImage
Debian / Ubuntu texforge-*-linux-amd64.deb
Fedora texforge-*-linux-x86_64.rpm

Gli installer non sono firmati digitalmente — il certificato è a pagamento. Windows mostrerà un avviso: scegli Ulteriori informazioni → Esegui comunque. Su macOS: clic destro sull'app → Apri.

Al primo avvio, vai su Motore LaTeX e premi Installa la distribuzione: scarica una TeX Live minima (TinyTeX) nella tua cartella utente, senza permessi di amministratore. Se hai già LaTeX installato, texforge lo trova e lo usa direttamente.

✨ Come funziona

  • Compila con LaTeX veropdflatex per il PDF, htlatex per l'HTML — non un'approssimazione del linguaggio
  • Gestione dei pacchetti integrata — cerchi, installi, rimuovi da tlmgr senza uscire dall'app; restano installati fra un avvio e l'altro
  • Funziona anche senza LaTeX — un compilatore JavaScript interno produce comunque PDF e HTML per i quiz, coprendo l'uso scolastico di base
  • HTML autosufficiente — stile e script incorporati in un solo file: lo mandi a chiunque, funziona offline
  • 4 tipi di domanda — scelta multipla, menu a tendina, risposta numerica, punteggio finale calcolato a video
  • Multi-file — carica più sorgenti insieme; gli output vengono impacchettati in un unico ZIP
  • Tutto in locale — i documenti non lasciano mai il tuo computer; serve rete solo per installare LaTeX o un pacchetto

📦 Il pacchetto quizstruct.sty

Il quiz si scrive con pochi comandi LaTeX:

\begin{quiz}{Capitali europee}
  \domanda[2]{Qual è la capitale della Francia?}
  \begin{opzioni}
    \opzione{Marsiglia}
    \rispostacorretta{Parigi}
    \opzione{Lione}
  \end{opzioni}
  \risultato
\end{quiz}
Comando Sintassi Descrizione
ambiente \begin{quiz}{Titolo} Contenitore del quiz
comando \domanda[punti]{testo} Apre una domanda (default 1 pt)
ambiente \begin{opzioni} ... \end{opzioni} Scelta multipla (radio)
comando \opzione{testo} Risposta sbagliata
comando \rispostacorretta{testo} Risposta corretta
comando \tendina{corretta}{sbagliate} Menu a discesa (select)
comando \numerica{valore}{tolleranza} Risposta numerica libera
comando \risultato Placeholder del punteggio finale

Documentazione completa dei comandi e altri esempi: sito del progetto.

🌍 Il PDF si compila anche su Overleaf

Il sorgente è LaTeX vero: per il PDF non serve texforge. Lo stesso .tex compila su Overleaf, dal browser — comodo su un computer della scuola, su tablet, o per lavorare in due sullo stesso documento.

  1. Su Overleaf: New Project → Blank Project.
  2. Carica nel progetto due file: il tuo .tex e quizstruct.sty (scaricalo qui, o prendilo dagli allegati di una release). Il .sty va nella stessa cartella del .tex: Overleaf lo trova da solo, non serve installare niente.
  3. Compilatore pdfLaTeX (Menu → Compiler), poi Recompile.

quizstruct.sty usa solo pacchetti standard (amsmath, amssymb, xcolor, enumitem, pgffor), già presenti nella TeX Live di Overleaf. Non servono quiz.cfg, quiz.jsquiz.css: riguardano solo l'HTML.

L'HTML interattivo — risposte cliccabili, punteggio che si calcola da solo — è la parte in più, e si ottiene solo con l'app: richiede htlatex e i file di configurazione, che Overleaf non mette in conto. In pratica: su Overleaf ottieni il compito da stampare, con texforge ottieni anche la versione che si corregge da sola — stesso sorgente, nessuna modifica.

🔒 Sicurezza e privacy

  • Niente rete per i tuoi documenti. La compilazione avviene sul tuo computer: i sorgenti e gli output non vengono mai inviati altrove. Una connessione serve solo per installare la distribuzione TeX o un pacchetto nuovo, entrambi scaricati dalle fonti ufficiali.
  • Interfaccia isolata dal sistema. La finestra gira con contextIsolation attivo e senza integrazione Node: può fare solo ciò che il ponte in preload.cjs espone esplicitamente, e nessun canale accetta percorsi arbitrari dal renderer.
  • Testo non fidato sempre escapato prima di finire nell'HTML generato.
  • Anteprima confinata in un iframe sandbox="allow-scripts": origine opaca, nessun accesso alla finestra dell'app.
  • Zero terze parti. Né l'app né i documenti generati caricano font, script o risorse da domini esterni.
  • LaTeX confinatopdflatex gira con -no-shell-escape e openin_any/openout_any in modalità paranoica, con timeout.
  • Nomi dei pacchetti validati prima di finire in una riga di comando tlmgr.
  • Codice e distribuzione sono libere. Il repository è MIT; TeX Live e TinyTeX (scaricati dalle fonti ufficiali al momento dell'installazione, mai inclusi negli installer) sono sotto licenze libere pensate apposta per la ridistribuzione.

🔨 Sviluppo

cd desktop
npm install
npm start                # avvia l'app in sviluppo
npm run dist:linux       # AppImage + deb + rpm
npm run dist:win         # installer Windows
npm run dist:mac         # dmg macOS

Gli installer finiscono in dist-desktop/. Ogni sistema può costruire solo i propri pacchetti nativi; la release su GitHub li produce tutti insieme con una matrice di CI (.github/workflows/release.yml).

Prova automatica dell'app (serve un display virtuale su Linux):

cd desktop && xvfb-run -a node smoke-test.mjs

Prove sul compilatore (non serve LaTeX installato):

npm test

Il sito di presentazione (docs/) si serve così:

npm install && npm start     # http://localhost:3000

Per i dettagli su come contribuire vedi CONTRIBUTING.md.

Versione portatile (facoltativa)

Oltre all'applicazione esiste una versione in un solo file HTML, che gira nel browser senza installare nulla — comoda dove non puoi installare programmi:

npm install
npm run build:app     # genera dist/texforge.html

Usa solo il compilatore JavaScript interno: niente LaTeX vero, niente gestione pacchetti. Per quelli serve l'applicazione.

🧪 Esempi

Si caricano con un click dal compilatore, oppure sono in latex-source/ ed esempi/:

  • quiz.tex — quiz base (capitali, fiumi, integrali)
  • matematica.tex — derivata, equazione, integrale, formula
  • lezione.tex — lezione completa (testo + formule + 2 quiz)
  • fisica-lezione.tex — lezione di fisica

📁 Struttura del repository

texforge/
├── desktop/               l'applicazione (Electron)
│   ├── main.js            processo principale: finestra, IPC, compilazione
│   ├── latex.js           rileva/installa LaTeX, gestisce i pacchetti con tlmgr
│   ├── preload.cjs        ponte isolato fra interfaccia e sistema
│   ├── renderer/          interfaccia: Compilatore, Pacchetti, Motore LaTeX
│   ├── prepare.mjs        copia in vendor/ le risorse condivise
│   └── smoke-test.mjs     prova automatica dell'app vera
├── src/
│   ├── compiler.js        il compilatore: logica pura, gira in Node e nel browser
│   └── *.test.mjs         prove automatiche (npm test)
├── build/build-app.mjs    impacchetta tutto in dist/texforge.html
├── server.js              servitore statico del sito di presentazione
├── frontend/              risorse grafiche condivise
│   ├── style.css          design system (colori, caratteri, componenti)
│   ├── app.css            stile del compilatore
│   └── icons/             icone dell'applicazione
├── docs/                  sito di presentazione (statico, GitHub Pages)
│   ├── index.html         comandi, tipi di domanda, esempi
│   ├── script.js          nav, scroll progress, tabs, copia codice
│   └── style.css          design system
├── backend/fonts/         DejaVu Sans (sottoinsieme) per il generatore PDF
├── latex-source/          pacchetto + file di supporto per l'HTML
│   ├── quizstruct.sty     pacchetto LaTeX
│   ├── quiz.cfg           configurazione htlatex
│   ├── quiz.js            validazione dell'HTML interattivo
│   ├── quiz.css           stile dell'HTML interattivo
│   └── quiz.tex           quiz base (capitali, fiumi, integrali)
├── esempi/                documenti dimostrativi
├── .github/workflows/     CI + release multipiattaforma
├── LICENSE                MIT
├── CHANGELOG.md
└── CONTRIBUTING.md

🔄 Come compila

Apri un .tex nell'applicazione
        ↓
Se c'è LaTeX:  pdflatex (2 passate) → PDF
               htlatex + quiz.cfg   → HTML, poi reso autosufficiente
                                      (stile, script e immagini incorporati)
Se non c'è:    compilatore JavaScript interno → PDF (pdf-lib) e HTML
        ↓
Salvi dove vuoi, o provi il quiz nell'anteprima
        ↓
Sul disco resta solo quello che hai salvato tu:
la cartella di lavoro viene cancellata

📚 Documentazione

Sito completo, con tutti i comandi e gli esempi: https://francy2009.github.io/TeXForge/ (o, in locale, con il server avviato: http://localhost:3000).

📜 Licenza

MIT — vedi LICENSE. Codice e risorse di terze parti (TeX Live, TinyTeX, i font DejaVu, le dipendenze npm) sono tutti sotto licenze libere; nessuna viene mai ridistribuita dentro l'installer.

🤝 Contribuire

Vedi CONTRIBUTING.md.

About

Programma per LaTeX

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages