Rendi leggibile l'HTML prodotto da htlatex - #10
Merged
Conversation
L'uscita di tex4ht arrivava all'utente quasi grezza, e si vedeva. Tre cause distinte, tutte risolte qui. Formule come immagini. Senza l'opzione mathml, tex4ht rende frazioni, integrali e radici come PNG separati: sgranati e non selezionabili, ma soprattutto perduti, perché rendiHtmlAutonomo incorporava solo CSS e JavaScript e la cartella di lavoro viene cancellata a fine compilazione. Nel file salvato restavano riquadri rotti — proprio negli esempi di matematica e fisica, che di formule sono pieni. Ora quiz.cfg chiede mathml e le formule restano testo; per quel che resta (una figura inclusa dall'utente) le immagini locali diventano data: URI, così "autosufficiente" è vero. Caratteri mai arrivati. quiz.css chiedeva IBM Plex Sans, Source Serif 4 e IBM Plex Mono senza @font-face e senza poterli scaricare: su una macchina qualunque si ripiegava su Arial e Times, e la grafica progettata non si vedeva. Gli elenchi ora proseguono con caratteri presenti su ogni sistema e scelti per somigliare ai primi. CSS di tex4ht in conflitto. Assegna un font a ogni pezzo di testo, con classi per font TeX e con style= inline, che batte qualsiasi foglio. Ora teniamo la sua struttura — rientri, tabelle, allineamenti — e scartiamo le sole dichiarazioni tipografiche. Sull'impaginazione: il foglio stilava solo gli elementi del quiz, quindi la parte discorsiva di una lezione usciva larga quanto la finestra. Ora c'è una colonna di misura leggibile per tutto il documento, con titoli, paragrafi, elenchi e tabelle (che scorrono invece di sfondare la pagina), stampa senza comandi interattivi né correzioni a video, adattamento al telefono, focus da tastiera visibile e adeguamento al tema scuro. Le trasformazioni sono coperte da prove automatiche su un documento che riproduce le stranezze vere di tex4ht: non serve LaTeX per eseguirle, e girano in CI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017W5az9Prp2cseUs6W4zi2N
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Il problema
L'HTML usciva brutto, e non per questioni di gusto: l'uscita di tex4ht arrivava all'utente quasi grezza. Tre cause distinte.
1. Le formule diventavano immagini, e le immagini si perdevano
quiz.cfgapriva con\Preamble{xhtml}, senzamathml: tex4ht rende frazioni, integrali e radici come file PNG separati. MarendiHtmlAutonomoincorporava solo CSS e JavaScript, nessuno copiava le immagini, emain.jscancella la cartella di lavoro appena finito. Nel file salvato quelle formule erano riquadri rotti — proprio inmatematica.texefisica-lezione.tex, che di formule sono pieni.Ora
quiz.cfgchiedemathml: le formule restano testo, selezionabile, impaginato dal browser. Per quel che può restare (una figura inclusa dall'utente) le immagini locali vengono incorporate comedata:URI, così "autosufficiente" è vero.2. I caratteri non arrivavano mai
quiz.csschiedevaIBM Plex Sans,Source Serif 4,IBM Plex Monosenza@font-facee senza poterli scaricare — giustamente, il file deve restare offline e autosufficiente. Su una macchina qualunque si ripiegava su Arial e Times: la grafica progettata non la vedeva nessuno. Incorporare i font avrebbe aggiunto più di un megabyte a ogni compito, quindi gli elenchi ora proseguono con caratteri presenti su ogni sistema e scelti per somigliare ai primi.3. Il CSS di tex4ht litigava col nostro
tex4ht assegna un carattere a ogni pezzo di testo, con classi per font TeX (
ec-lmr-10) e constyle=inline, che batte qualsiasi foglio. Ora teniamo la sua struttura — rientri, tabelle, allineamenti — e scartiamo le sole dichiarazioni tipografiche, sia dal foglio sia dagli attributi inline.Impaginazione
Il foglio stilava solo gli elementi del quiz: la parte discorsiva di una lezione usciva larga quanto la finestra, senza gerarchia. Ora:
Le classi su cui
quiz.jsfa presa (.question-block,label.option.correct/.wrong,.feedback,.risultato,.quiz-controls,.calcola-btn,.riprova-btn) sono invariate.Verifica
Aggiunte prove automatiche (
src/html-autonomo.test.mjs,npm test, eseguite in CI) su un documento che riproduce le stranezze vere di tex4ht — prefisso di namespace sul MathML, classi per font TeX,style=inline, immagini accanto al file. Verificano che il MathML resti leggibile una volta salvato come.html, che le dichiarazioni tipografiche spariscano mamargin/text-alignrestino, che il nostro foglio venga per ultimo, e che le immagini locali finiscano dentro al file mentre gli URL remoti restano intatti. 7 su 7 verdi, e non serve LaTeX per eseguirle.Quello che non ho potuto verificare: l'aspetto finale. Qui non c'è LaTeX né un browser, quindi non ho mai visto un HTML vero prodotto da questa catena. Le trasformazioni sono verificate sul testo; il giudizio su come appare resta tuo, ed è il motivo per cui vale la pena compilare
matematica.texelezione.texprima di mergiare.Una nota su MathML: lo supportano nativamente Chrome, Safari e Firefox aggiornati. Se dovessi trovare una resa storta su un browser vecchio, l'alternativa è passare a
mathjaxinquiz.cfg, che però richiede uno script esterno e romperebbe l'autosufficienza del file.Generated by Claude Code