Re: ma latex è pazzo?!?!?!?!? (problema immagini…!)

#97588
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    Ci sono due aspetti distinti che ho mescolato e me ne scuso.

    1) il codice di posizione H applicato agli ambienti mobili (che indicherò collettivamente con “float”) li rende fissi, in modo assoluto; perciò
    `\begin{foat}[H]

    \catpion[…]{…}
    \end{float}`diventa del tutto equivalente a`\begingroup

    \captionof{float}[…]{…}
    \endgroup`Ovviamente il gruppo [tt]\begingroup… \endgroup[/tt] può essere presente implicitamente mediante un ambiente non mobile, per esempio `\begin{center}…\end{center}`se l’ambiente float conteneva \centering; e simili.
    Usare il pacchetto float e il codice H non è più economico che caricare il pacchetto caption e il suo comando \captionof; Il pacchetto float serve davvero se si vogliono definire altre tipologie di oggetti mobili, non per usare H.

    Il risultato di questa fissità, che (forse) non coinvolge le code degli oggetti flottanti, è che di solito si rovina una pagina o con uno sforamento nel margine inferiore o con l’ambiente spostato alla pagina successiva e l’allargamento enorme degli spazi verticali nella pagina dove si sarebbe voluto avere l’oggetto reso fisso. Sapendo quel che si sta facendo e conoscendo i rischi che si corrono qualche rara volta il codice H si potrebbe anche usare, ma di solito esistono modi più intelligenti per gestire gli oggetti di “grandi” dimensioni, ed è quello di lasciarli muovere naturalmente adattando la prosa che vi si riferisce sapendo che l’oggetto non si troverà nella riga successiva alla frase “… come si vede nel seguente diagramma…”.

    2) Il codice di posizione h non deve venire mai usato da solo, questo sì è vero e corretto; se lì dove lo si vorrebbe l’oggetto non ci sta, blocca le code degli oggetti flottanti omonimi.

    La conclusione, anche se i motivi sono diversi è che i codici di posizione h e H non devono venire mai usati, H mai o solo a ragion veduta; h solo se non è da solo. Perciò anche se la mia frase nel messaggio precedente non è corretta in senso assoluto, la raccomandazione di non usare mai quei codici è corretta e ovviamente un raccomandazione non è una legge assoluta, ma è una raccomandazione molto forte che risparmia non pochi mal di pancia, specialmente a chi è nuovo di LaTeX.

    Spiegare perché e per come quella raccomandazione sia valida è lungo e richiede una conoscenza approfondita del meccanismo interno con cui LaTeX colloca gli oggetti flottanti; conoscenza approfondita sia da parte di chi scrive, sia da parte di chi legge; specifico che io NON ho una conoscenza approfondita tale da conoscere ogni dettaglio, ma ho una buona conoscenza e credo di sapere quel che dico, anche se non escludo che qualcosa sia poco corretto o non esattamente quello che la routine di output di pdf-, xe-, lua-, tex fanno per gestire le code degli oggetti flottanti e per costruire le pagine in uscita, ma credo che non sia tanto diverso dal vero.

    Sul prossimo numero di ArsTeXnica ci sarà la traduzione in italiano dell’articolo di Frank Mittelbach che spiega meglio quello che io dico più succintamente e con minor precisione; anche lui non scende troppo nei dettagli, ma siccome è lui che ha riscritto molto del codice che era stato inizialmente creato da Leslie Lamport, il papà di LaTeX, credo che sappia esattamente quello che dice e ritengo che ci siano ottime ragioni per ascoltarlo.

    Anche Enrico (sì, proprio quello che pensi tu), che la sa molto più lunga di me (tanto che sta collaborando al nuovo linguaggio L3, che per me è ancora fuori della mia portata) afferma sostanzialmente quello che ho esposto sopra senza mescolare i due codici di posizionamento in un’unica frase.

    Gustavo, se trovi che quel che ho scritto sopra ammetta dei controesempi che ne dimostrino la falsità, sono ben contento di rivedere la mia comprensione del meccanismo e te ne ringrazierò moltissimo. [non ho usato congiuntivi e condizionali, perché le mia non è una frase ipotetica dell’irrealtà…]

    Claudio

    Go to top