::
Ritorno sulla questione perché mi sono messo a pensare ad una possibile soluzione, tutta da scrivere e testare con cura, che permetterebbe di ottenere risultati paragonabili a quelli del layout di The Annotated Hobbit (purtroppo non ho trovato un’immagine dell’interno da farvi vedere, quindi dovrete accontentarvi della descrizione: le abbondanti e copiose note sono sistemate nel generoso margine esterno, solitamente in corrispondenza del termine o della frase a cui si riferiscono; quando una nota è molto lunga viene continuata sulle pagine seguenti, iniziando in corrispondenza della prima riga del testo, e le note seguenti sono tutte “spostate” di conseguenza, senza alcuna sovrapposizione).
L’idea di base è dovuta a recenti esperienze che ho avuto con il meccanismo dei text flow di ConTeXt: in estrema sintesi, è possibile definire il contenuto di un “blocco” di testo particolare e riversare parte di tale “blocco” un po’ per volta in “scatole” diverse a seconda della dimensione delle “scatole” fino ad esaurie il contenuto del “blocco”. Il tutto fa uso della primitiva \vsplit.
Detto questo, ipotizziamo di avere l’equivalente dei text flow di ConTeXt anche in LaTeX. A grandi linee, si potrebbe tentare di procedere in questo modo:
-
definire il luogo fisico sulla pagina in cui verranno posizionate le note (larghezza ed altezza);
-
definire una sorta di “buffer”, da usare in modalità FIFO, che contenga il testo di tutte le note a margine che vengono analizzate mano a mano che la compilazione del documento procede;
-
nel codice delle note a margine:
se il buffer è vuoto allora si aggiunge il testo nel buffer e si inizia esplicitamente a svuotarlo subito, segnalando opportunamente l’inizio dell’operazione;
se il buffer non è vuoto, ci si limita ad aggiungere il testo in coda;
nella routine di output, quando è il momento di generare una nuova pagina, se il buffer non è vuoto e non ne è già stato iniziato lo svuotamento in questa pagina, allora si svuota il buffer e si resetta lo stato del segnale di cui sopra.[/ul] Nella migliore delle ipotesi, avendo preventivamente fissa l’altezza della zona in cui finiranno le note, usando l’analogo del text flow (ancora tutto da scrivere, ovviamente), il contenuto del buffer verrebbe potenzialmente usato in maniera parziale ed il rimanente verrebbe conservato ed usato nelle pagine seguenti. Ovviamente, se si provasse ad untilizzare le classiche inserzioni tutto questo farebbe a cazzotti con il meccanismo dei floating object… e se fosse così facile, se non ci fossero problemi di sincronizzazione, etc., qualcuno ci avrebbe già pensato 🙂 Però, se qualcuno non ha idee su come passare le prossime vacanze di Natale, regalo l’idea ed un caloroso “in bocca al lupo”.