Tabella con celle multiriga e estese su più colonne

  • Creatore
    Topic
  • #111835
    Up
    0
    Down
    ::


    Ciao a tutti.

    Voglio usare Latex per scrivermi dei cheat sheet con i miei appunti medici e magari trasformarli poi in un libricino.
    Per il momento sto organizzando il materiale, e mi sono imbattuto in un problema che mi sembrava facile ma che mi ha lasciato perplesso: volevo ricreare le tabelle che ci sono in allegato ma non sono riuscito a venire a capo di una strategia per farlo.

    Spoiler

    [attachment=1973]tabella1.jpg[/attachment]

    Il problema è che ho assoluto bisogno di celle che si estendano anche su più colonne (diciamo almeno due comunque, visto che ogni muscolo ha almeno due radici nervose), e in ogni cella di avere un a capo per ogni muscolo; non guasterebbe poi che fosse Latex a calcolarsi tutti gli spazi senza necessità di aggiustamenti in postproduzione.
    Con Excel sarebbe facile ma anche come esercizio mi piaceva di più sfruttare Latex, tuttavia nelle guide non ho trovato un esempio simile e sono un po’ perso.

    PS: se qualcuno ha già fatto uso di qualche classe o strategia (io ho visto che consigliano la classe baposter e mi sembra piuttosto buona) per crearsi dei fogli di appunti mi piacerebbe un suo consiglio 🙂

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 1 filone di risposte
  • Autore
    Risposte
    • #111836
      Heinrich Fleck
      Partecipante
        Up
        0
        Down
        ::


        Salve,

        credo l’opzione multicolumn unita, eventualmente a \tabcolsep=num_pt possa risolvere il tuo problema come nel sorgente che si riferisce a due sole colonne e che prevede anche l’inclusione di un’immagine:

        \usepackage[font={small}]{caption}
        ……………………………….
        `\begin{table}[t!]
        \begin{small}
        \centering\tabcolsep=2.5pt
        \begin{tabular}{ll}
        \toprule
        \multicolumn2c{Riga estesa su due colonne}\\
        \midrule
        & & \\ % Eventualmente!
        \multicolumn2c{\centering\includegraphics[width=\linewidth]{mia-immagine}}\\
        Prima riga sx & Prima riga dx\\
        Seconda riga sx & Seconda riga riga dx\\
        \bottomrule%
        \end{tabular}%
        \end{small}%
        \captionsetup{labelformat=empty} % Se voluto
        \caption[Didascalia sintetica]{Didascalia estesa}
        \end{table}%
        `

        Spero di esserti stato d’aiuto, un saluto Enrico M.

      • #111837
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Il tuo problema mia ha chiesto più tempo di quello che immaginavo. Sono rimasto disorientato dalla tua citazione di celle multiriga e celle multicolonna. Le prime si potrebbero ottenere con il pacchetto multirow (che definisce il comando \multirow. però può dare fastidi di vario genere) e il comando standard \multicolumn.
          Usando i filetti non puoi usare il pacchetto booktabs perché non è compatibile con i filetti verticali.
          Nello stesso tempo, sebben la tua tabella sia una tipica tabella da Word o da Excel, si può fare tranquillamente anche con LaTe aiutandosi con il pacchetto array (che non si riferisce alle sole matrici, come lascerebbe immaginare il nome e di cui vale la pena di leggere la documentazione).

          Ora io sono riuscito a fare questa tabella con le colonne di larghezza uguale (sono 7 colonne tutte della stessa larghezza, con la prima allineata a sinistra e le altre 6 col contenuto centrato. Non è perfetta, ma lavorandoci sopra non poco con le colonne di tipo nuovo, ma se occorresse la porta è aperta perché tu possa sbizzarrirti da solo. Ecco il codice:`% !TEX encoding = UTF-8 Unicode
          % !TEX TS-program = pdflatex
          \documentclass[12pt,a4paper]{article}
          \usepackage{array}

          \newdimen\Colonna
          \newcommand*\LarghezzaColonna[1]{% Numero colonne intera tabella
          \dimen0=\dimexpr2\tabcolsep
          \Colonna=\dimexpr (\textwidth -#1\dimen0)/#1\ignorespaces}

          \newcolumntype{P}[1]{>{\centering}p{#1\Colonna}}

          \newcommand*\multicolonna[2]{\multicolumn{#1}{P{#1}|}{#2}}

          \begin{document}
          \renewcommand\arraystretch{1.3}
          \begingroup
          \LarghezzaColonna{7}
          \begin{tabular*}{\textwidth}{|p{\Colonna}|*6{P{1}|}}
          \hline
          Nerve & C-4 & C-5 & C-6 & C-7 & C-8 & T-1\tabularnewline
          \hline
          Dorsal scapular & \multicolonna2{Rhomboideus~–\mbox{major \& minor}\newline \mbox{Levator scapulae}} &&&&\tabularnewline
          \hline
          Supra scapular & & \multicolonna2{Supraspinatus \newline Infraspinatus}&&&\tabularnewline
          \hline
          Sub\-scapular & & \multicolonna2{\mbox{Teres major}}&&&\tabularnewline
          \hline
          Axillary & & Teres Minor&&&&\tabularnewline
          \cline{3-4}
          & & \multicolonna2{Deltoides–Anterior
          medius, \& posterior}&&&\tabularnewline
          \hline
          Musculo-cutaneus&& \multicolonna2{Biceps brachialis}&&&\tabularnewline
          \cline{3-4}
          && & Coraco brachialis
          &&&\tabularnewline
          \hline
          Long thoracic & & \multicolonna3{Serratus anterior}&&\tabularnewline
          \hline
          \end{tabular*}
          \endgroup
          \end{document}`Ho messo la tabella fra \beginegroup e \endgroup per mantenere locali le definizioni; ma se l’ambiente tabular* viene inserito dentro l’ambiente flottante table, non è necessario esplicitiare un gruppo perché ci pensano già i \begin e \end degli ambienti.

          La nuova colonna identificata con la lettera P maiuscola, accetta un come argomento un numero intero che serve per moltiplicarne la larghezza standard contenuta nel registro dimensionale \Colonna. Questo viene caricato con un n-esimo della larghezza della gabbia del testo, dove n è il numero delle colonne dell’intera tabella.

          Dopo di che il resto è LaTeX normale, anche se il parametro \arraystretch viene usato raramente e \cline forse ancor più raramente, ma sono cose native di LaTeX, non dipendono da nessun pacchetto, solo dal nucleo di LaTeX.
          Se non conosci il linguaggio LaTeX primitivo, lo puoi studiare nella guida tematica Il LaTeX Reference Manual commentato che ho fortemente commentato, sia per me stesso, sia per “aggiornare” quanto si può fare oggi, visto che quel manuale è stato scritto dal suo creatore nel 1994, troppi anni fa.

          Vedi se quel che ti ho messo insieme risolve i tuoi problemi.

      Visualizzazione 1 filone di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top