Re: inserire didascalia in tabularx

#76483
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    Le soluzioni che ho proposto sono solo tre:
    La prima è `
    \begin{table}[h!] % oppure \begin{table}[H]

    \caption{…}\label{…}
    \end{table}`

    La seconda è `
    \begin{center}

    \captionof{table}{…}\label{…}
    \end{center}`

    e la terza è `
    \begin{table}

    \caption{…}\label{…}
    \end{table}`

    La terza lascia la tabella flottante e non importa dove LaTeX la mette, ma si è sicuri che se puoi rispettare i prametri impliciti nella classe, la mette nel posto migliore (salvo inghippi che non dipendono dalla soluzione, ma, per esempio dalla coda bloccata da un precedente table con parametri di posizionamento scelti male).

    La seconda non ha problemi con le code perché non le sfrutta, se non ci sta nella pagina, LaTeX mette tullo l’ambiente nella pagina successiva e in quella dove si sperava che cadesse la tabella aumenta enormemente lo spazio fra i capoversi e quindi la pagina diventa brutta, ma relativamente facile da aggiustare, magari lasciandola mozza (di due o tre righe) oppure rimpolpando il testo, oppure ancora smagrendolo in modo da lasciare più spazio alla tabella.

    La prima soluzione con [h!] non lascia a LaTeX nessuna possibilità: o ci sta lì dove vuoi, oppure la lascia in coda e blocca la cosa fino alla fine del capitolo o del documento. Con [H] l’ordine è perentorio: mettila qui e non discutere; quindi se ci sta, bene; se non ci sta, lo sposta alla pagina successiva lasciando la pagina mozza. Si può aggiustare la cosa nello stesso modo di quando si usa la seconda soluzione.

    Come confrontare le soluzioni 1 e 2? la 1 con lo specificatore [H] richiede l’uso di un altro pacchetto (che io non credo di avere ami usato seriamente negli ultimi 30 anni; certo l’ho provato, ma le sue funzioni per creare nuovi oggetti flottanti possono essere usate, secondo me, solo per definire nuovi tipi di oggetti flottanti, cosa che a ben pensarci succede raramente; per gli algoritmi ci pensano i comandi interni di listings. Ricordo di essermi definito un nuovo tipo di oggetti flottanti quando nel 1991 ho scritto il libro per la Hoepli e il pacchetto float non esisteva ancora e non esisteva nemmeno LaTeX2e. Se non si vuole usare il pacchetto float, i comandi standard di LaTeX, come i parametri di posizionamento fra parentesi quadre, vanno usati intelligentemente senza costringere LaTeX in un vicolo senza uscita, perché allora diventa cattivo (blocca la coda e può far perdere degli oggetti mobili).
    Ricordo che i parametri di posizionamento standard t, b, h e p richiedono degli spazi minimi o massimi espressi in termini di altezza dello specchio di stampa; se ben ricordo t non deve superare la frazione 0,7 dell’altezza, b non deve superare 0,5, h non deve superare 0,3, p deve essere almeno 0,5; posso sbagliarmi, ma questi limita danno la spiegazione del perché LaTeX dispone di code FIFO (First In First Out) per gli oggetti flottanti, dalle quali essi vengono estratti quando le loro dimensioni e i loro parametri di posizione lo consento in relazione al contenuto della pagina in costruzione. Se si specifica ! (punto esclamativo) quei limiti vengono un po’ rilasciati ma non del tutto, quindi [h!] non è equivalante a [H].

    La soluzione 2 non fa riferimento agli oggetti flottanti, ma richiede un qualche pacchetto, per esempio caption per avere la definizione di \captionof. Secondo me il pacchetto caption offre maggiori probabilità di essere usato anche per i suoi scopi “istituzionali”, cioè di personalizzare il modo di comporre le didascalie, sempre secondo me, molto più utile che non definire nuovi tipi di oggetti flottanti.

    Poi ci sarebbe la 4.a soluzione, quella di definirsi dei comandi del tipo di \captionof, ma con parametri diversi, che possano essere usati anche dentro gli oggetti flottanti per dare un titolino corrente con un nome diverso da Tabella o da Figura e che possano essere usati anche quando c’è un contatore da incrementare e a cui riferirsi, un po come \newtheorem definisce degli enunciati che hanno un nome diverso ma sono numerati usando lo stesso contatore di un enunciato capostipite, per esempio theorem. Non conosco nessun pacchetto che definisca una cosa del genere e il cui comando permetta di usare l’asterisco per non numerare l’oggetto.

    Ma questo è i cassetto dei sogni, se ne avessi davvero necessità, avrei già scritto le macro e magari anche pubblicato il pacchetto che le contiene. Ma benché disponga di più tempo di quando ero in servizio, non ho voglia di inventarmi cose nuove per il solo gusto di inventarle anche se non so che cosa farmene; insomma un Archimede Pitagorico basta ed avanza, ed è e resta un personaggio di Walt Disney. 🙂

    Ciao
    Claudio

    Go to top