Una tabella con nota (pacchetto ctable)

  • Creatore
    Topic
  • #21662
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti.

      Nell’articolo di Lapo Mori sulle tabelle pubblicato sul secondo numero di ArsTeXnica viene presentata una tabella ottenuta con il pacchetto ctable. Sto cercando di riprodurla, ma non ci riesco. Il codice
      `\begin{ctable}%
      {???}%
      {\tnote{Rispetto alla stessa origine.}}%
      {\begin{tabularx}{\textwidth}{>{\bfseries}lX}
      \toprule
      Forza & Una forza è una grandezza fisica che si manifesta nell'interazione di due o più corpi materiali che cambia lo stato di quiete o di moto dei corpi stessi. \\
      \midrule
      Momento polare & Il momento polare di una forza rispetto ad una determinata origine è definito come il prodotto vettoriale tra il vettore posizione\tmark\ e la forza. \\
      \bottomrule}
      \end{tabularx}
      \end{ctable}`
      non è corretto, e la documentazione di ctable la trovo particolarmente ostica.

      Fra l’altro, quel caption messo così non mi soddisfa (vorrei una didascalia da mettere sopra la figura, ed una più breve da mettere nell’indice).

      Se serve, posso evetualmente scannerizzare l’immagine della tabella e mandarvela.

      Grazie mille,
      L.

    Visualizzazione 4 filoni di risposte
    • Autore
      Risposte
      • #21663
        Up
        0
        Down
        ::

        Ciao a tutti.

        Nell’articolo di Lapo Mori sulle tabelle pubblicato sul secondo numero di ArsTeXnica viene presentata una tabella ottenuta con il pacchetto ctable. Sto cercando di riprodurla, ma non ci riesco. Il codice
        `\begin{ctable}%
        {???}%
        {\tnote{Rispetto alla stessa origine.}}%
        {\begin{tabularx}{\textwidth}{>{\bfseries}lX}
        \toprule
        Forza & Una forza è una grandezza fisica che si manifesta nell'interazione di due o più corpi materiali che cambia lo stato di quiete o di moto dei corpi stessi. \\
        \midrule
        Momento polare & Il momento polare di una forza rispetto ad una determinata origine è definito come il prodotto vettoriale tra il vettore posizione\tmark\ e la forza. \\
        \bottomrule}
        \end{tabularx}
        \end{ctable}`
        non è corretto, e la documentazione di ctable la trovo particolarmente ostica.

        Fra l’altro, quel caption messo così non mi soddisfa (vorrei una didascalia da mettere sopra la figura, ed una più breve da mettere nell’indice).

        Se serve, posso evetualmente scannerizzare l’immagine della tabella e mandarvela.

        Ci sono svariati errori di sintassi; dove scrivi ??? dovresti mettere il preambolo della tabella e non usare l’ambiente tabularx.

        Ma, secondo me, si tratta di un pacchetto che non vale la pena usare.
        `\usepackage{caption}
        \captionsetup[table]{position=top}
        \newcommand{\tmark}[1]{\textsuperscript{\normalfont\itshape#1}}
        \newcommand{\tnote}[3]{\multicolumn{#1}{l}
        {\tmark{#2}\small#3}}

        \begin{tabularx}{\textwidth}{>{\bfseries}lX}
        \toprule
        Forza & Una forza è una grandezza fisica che si manifesta nell'interazione di due o più corpi materiali che cambia lo stato di quiete o di moto dei corpi stessi. \\
        \midrule
        Momento polare & Il momento polare di una forza rispetto ad una determinata origine è definito come il prodotto vettoriale tra il vettore posizione\tmark{a} e la forza. \\
        \bottomrule
        \tnote{2}{a}{Rispetto alla stessa origine.}
        \end{tabularx}`
        Devi sapere quante colonne ha la tabella; forse si può fare meglio, l’informazione dovrebbe essere disponibile; ma a che pro?

        Ciao
        Enrico

      • #21664
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::

          `\usepackage{caption}
          \captionsetup[table]{position=top}
          \newcommand{\tmark}[1]{\textsuperscript{\normalfont\itshape#1}}
          \newcommand{\tnote}[3]{\multicolumn{#1}{l}
          {\tmark{#2}\small#3}}

          \begin{tabularx}{\textwidth}{>{\bfseries}lX}
          \toprule
          Forza & Una forza è una grandezza fisica che si manifesta nell'interazione di due o più corpi materiali che cambia lo stato di quiete o di moto dei corpi stessi. \\
          \midrule
          Momento polare & Il momento polare di una forza rispetto ad una determinata origine è definito come il prodotto vettoriale tra il vettore posizione\tmark{a} e la forza. \\
          \bottomrule
          \tnote{2}{a}{Rispetto alla stessa origine.}
          \end{tabularx}`
          Devi sapere quante colonne ha la tabella; forse si può fare meglio, l’informazione dovrebbe essere disponibile; ma a che pro?

          Professore, questa volta non sono soddisfatto. 😳 Il codice non è elegante. Fra l’altro, segnare a mano la numerazione della nota non va.

          I pro di mettere una nota al piè di una tabella? Personalmente non lo consiglierei: forse è meglio dare l’informazione nella didascalia.

          Però nella guida che sto scrivendo il caso vorrei prenderlo in esame comunque, e la soluzione di ctable mi sembra -sulla carta- la più semplice.

          Sulla carta: perché io proprio non riesco a farla funzionare, quella tabella. E nell’articolo di Lapo ci sono dei
          `…`
          che proprio non so come riempire.

          Grazie mille per tua la pazienza infinita, Enrico…

          Ciao,
          L.

        • #21665
          Up
          0
          Down
          ::

          `\usepackage{caption}
          \captionsetup[table]{position=top}
          \newcommand{\tmark}[1]{\textsuperscript{\normalfont\itshape#1}}
          \newcommand{\tnote}[3]{\multicolumn{#1}{l}
          {\tmark{#2}\small#3}}

          \begin{tabularx}{\textwidth}{>{\bfseries}lX}
          \toprule
          Forza & Una forza è una grandezza fisica che si manifesta nell'interazione di due o più corpi materiali che cambia lo stato di quiete o di moto dei corpi stessi. \\
          \midrule
          Momento polare & Il momento polare di una forza rispetto ad una determinata origine è definito come il prodotto vettoriale tra il vettore posizione\tmark{a} e la forza. \\
          \bottomrule
          \tnote{2}{a}{Rispetto alla stessa origine.}
          \end{tabularx}`
          Devi sapere quante colonne ha la tabella; forse si può fare meglio, l’informazione dovrebbe essere disponibile; ma a che pro?

          Professore, questa volta non sono soddisfatto. 😳 Il codice non è elegante. Fra l’altro, segnare a mano la numerazione della nota non va.

          I pro di mettere una nota al piè di una tabella? Personalmente non lo consiglierei: forse è meglio dare l’informazione nella didascalia.

          Però nella guida che sto scrivendo il caso vorrei prenderlo in esame comunque, e la soluzione di ctable mi sembra -sulla carta- la più semplice.

          Sulla carta: perché io proprio non riesco a farla funzionare, quella tabella. E nell’articolo di Lapo ci sono dei
          `…`
          che proprio non so come riempire.

          Grazie mille per tua la pazienza infinita, Enrico…

          È ovvio che quel codice può essere migliorato. Per un paio di tabelle è più che sufficiente, direi. Mica vorrai la pappa pronta ogni volta! 😉

          Quanto a ctable, perché non provi a leggere la documentazione? Non è proprio il meglio che offre il panorama, ma certe cose si riescono a capire.

          Ciao
          Enrico

        • #21666
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::

            È ovvio che quel codice può essere migliorato. Per un paio di tabelle è più che sufficiente, direi. Mica vorrai la pappa pronta ogni volta! 😉

            Ehi, in fondo sono un gran pigrone… 😳 😥

            Quanto a ctable, perché non provi a leggere la documentazione? Non è proprio il meglio che offre il panorama, ma certe cose si riescono a capire.

            La studierò senz’altro. L’ho trovata davvero difficile: fa degli esempi molto complicati (forse anche inutilmente), mancano degli esempi semplici semplici con i quali farsi un’idea…

            Vi terrò aggiornati sugli sviluppi…

            Grazie mille,
            L.

          • #21667
            Up
            0
            Down
            ::

            È ovvio che quel codice può essere migliorato. Per un paio di tabelle è più che sufficiente, direi. Mica vorrai la pappa pronta ogni volta! 😉

            Ehi, in fondo sono un gran pigrone… 😳 😥

            Quanto a ctable, perché non provi a leggere la documentazione? Non è proprio il meglio che offre il panorama, ma certe cose si riescono a capire.

            La studierò senz’altro. L’ho trovata davvero difficile: fa degli esempi molto complicati (forse anche inutilmente), mancano degli esempi semplici semplici con i quali farsi un’idea…

            L’ho trovata anch’io illeggibile. Il fatto poi che con un esempio minimo come il tuo (corretto) venga ogni volta emesso un avviso, mi lascia perplesso.

            Ogni comando che prenda come argomento il contenuto di un ambiente come tabular non mi convince. Sulle note nelle tabelle non sarei drastico: a volte una nota può anche andare al piede della tabella invece che nella didascalia; dipende da molti fattori. Se non c’è la didascalia, per esempio?

            Per tornare al problema, definire un comando che metta automaticamente l’esponente non dovrebbe essere difficile; in ctable occorre comunque indicare in \tnote l’esponente. Si può anche evitare di indicare il numero di colonne, usando una box di ampiezza zero.
            `\makeatletter
            \newcounter{table@note}
            \renewcommand{\thetable@note}{%
            \textsuperscript{\normalfont\itshape\alph{table@note}}}
            \newcommand{\tmark}[1]{\refstepcounter{table@note}\label{tn@@#1}\thetable@note}
            \newcommand{\tnote}[2]{\multicolumn{1}{l}
            {\rlap{\footnotesize\ref{tn@@#1}\ #2\hss}}}
            \makeatother`
            A \tmark si dà come argomento un’etichetta (come se fosse un \label} che verrà poi data come primo argomento di \tnote; il secondo argomento di \tnote è il testo della nota.
            `\begin{tabular}{ll}
            \toprule
            abcd\tnote{prima} & efgh\tnote{seconda}\\
            \bottomrule
            \tnote{prima}{Ciao}\\
            \tnote{seconda}{Wow}
            \end{tabular}`
            L’ovvia limitazione è che il testo della nota non può essere più lungo della larghezza della tabella. Più che sufficiente per semplici applicazioni.

            È più interessante analizzare alcune sottigliezze: \refstepcounter agisce sempre globalmente, quindi il valore del contatore table@note è corretto anche con una seconda nota; ricordo che una cella di tabella è in un gruppo implicito e le assegnazioni non globali spariscono.

            L’altra curiosità è su \rlap{} che equivale a \hbox to 0pt{\hss}: si costruisce una \hbox che non occupa alcuno spazio orizzontale, e \hss fornisce la “glue” necessaria per evitare un overfull. Meglio non scrivere \rlap{ABC}D, se non si sa che cosa si sta facendo; nel nostro caso, dopo \rlap{…} non andrà nulla.

            Ciao
            Enrico

        Visualizzazione 4 filoni di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top