- Questo topic ha 9 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 9 mesi fa da
OldClaudio.
-
CreatoreTopic
-
26 Novembre 2014 alle 19:48 #98666::
Buonasera a tutti.
Sto cercando un sistema per adattare la larghezza delle colonne di una tabella (scritta con “tabular”) alla colonna più larga.
Ho effettuato una ricerca su internet e ho spulciato varie guide, però ho trovato solo come impostare larghezze manualmente e non un auto-adattamento!Grazie in anticipo a chiunque mi dia una mano!
-
CreatoreTopic
-
AutoreRisposte
-
-
26 Novembre 2014 alle 20:29 #98667::
Packy” post=98199Buonasera a tutti.
Sto cercando un sistema per adattare la larghezza delle colonne di una tabella (scritta con “tabular”) alla colonna più larga.
Ho effettuato una ricerca su internet e ho spulciato varie guide, però ho trovato solo come impostare larghezze manualmente e non un auto-adattamento!Grazie in anticipo a chiunque mi dia una mano!
Pacchetto tabularx. Ma sinceramente non ho capito bene cosa intendi per adattare alla colonna più larga…
Ciao
Ivan
-
26 Novembre 2014 alle 21:16 #98668
-
26 Novembre 2014 alle 21:32 #98669::
Dato e non concesso che avere colonne tutte larghe uguali (se devono essere larghe quando la più larga, deovno avere tutte la stessa larghezza) poi usare l’ambiente tabularx che con il suo tipo di colonna X, adatta ogni colonna alla stessa larghezza; dà qualche problemi poer le intestazioni, ma si risolve. Se metti del testo troppo lungo in una cella di una colonna X il testo va a capo nella stessa cella e questo potrebbe non essere quello che desideri, tuttavia la strada è percorribile.UN’altra strada che non ha le celle di lunghezza proefissata è quello di usare l’ambiente tabular, il cuoi primo argomento è la larghezza che vuoi imporre alla cella; (nota che il primo argomento di tabulax è la larghezza complessiva, ma le colonne X sono come come colonne p{…} la cui larghezza è calcolata automaticamente). Se però non vuoi andare a capo o se per qualche motivo non vuoi usare l’ambiente tabularx, te la puoi cavare con l’ambiente standard tabular ma devi impostare qualcosa di più.
Supponiamo che tu voglia avere 8 colonne larghe uguali, con il contenuto delle celle centrato; allora puoi definire una nuova larghezza e assegnarle un valore (ti dirò dopo come); ovviamente deve essere minore di un ottavo della larghezza \textwidth, altrimenti la tabella non ci sta nella pagina; Allora sistemiamo la larghezza di tutte le 8 colonne tenedo conto dei margini bianchi a sinistra e a destra di ogni cella:`\newlength\mycolumn \mycolumn=\dimexpr\textwidth/8 – 2\tabcolsep\relax`
Devi definire qualcosa per imporre questa larghezza alle tue colonne; io userei il pacchetto array che permette di definire nuovi tipi di colonne; caricato il pacchetto array (che fornisce diverse altre interessanti funzionalità, come puoi vedere leggendone la documentazione [aprire terminale, scriverci dentro texdoc array; premere invio; leggere la documentazione]) definisci:`\newcolumntype{C}[1]{\makebox[\mycolumn]{#1}}`.
A questo punto pouoi cominciare la tua tabella con`\begin{tabular){*8C}
dato & dato & dato & dato & dato & dato & dato & dato \\
dato & dato & dato & dato & dato & dato & dato & dato \\
…
dato & dato & dato & dato & dato & dato & dato & dato
\end{tabular}`In questo modo devi aggiungere pochissimo alla tabella che hai già scritto. Inoltre se vuoi una tabella meno larga di \textwidth, nella riga dove definisci \mycolumn, al posto di \textwidth ci puoi mettere qualcosa come 0.75\textwidth, e la tua tabella di otto colonne risulterà larga quanto tre quarti di larghezza del testo. Se hai mono celle o più celle cambi il valore 8 con il numero di colonne che vuoi usare; se il numero di cela è superiore a 9 devi racchiuderne il numero fra graffe, per esempio *{11}C nell’argomento di tabular che specifica la pluralità di colonne nella tabella.
Stai però attento: è probabile che fare le colonne tutte della stessa larghezza non sia una buona idea; dipende dal contenuto delle singole celle. Questa osservazione vale sia per la mia soluzione sia per la soluzione con l’ambiente tabularx e le n colonne X.
-
27 Novembre 2014 alle 7:38 #98670::
Innanzitutto grazie per la risposta.
Sono un neoneoneofita di LaTex (questa è la prima relazione che scrivo con questo programma) e quindi ho optato per la strada “tabularx” che, anche se di sicuro meno efficace, mi sembrava la più facile (anche perchè nelle mie ricerche avevo gia letto qualcosina); inoltre non avendo la necessità di scrivere molto nelle celle, non penso di avere particolari problemi.
Il problema delle colonne si può dire risolto!
Ho però un altro problema, circa il “centrare” il testo nelle celle con “tabularx”: ho trovato su internet questa sintassi:
`\begin{tabularx}{1\textwidth}{ |>{\setlength\hsize{1\hsize}\centering}X|>{\setlength\hsize{1\hsize}\raggedleft}X@{} >{\setlength\hsize{1\hsize}\raggedright}X|>{\setlength\hsize{1\hsize}\centering}X| }`L’ho leggermente modificata per i miei scopi e queso è il risultato:
`\begin{center}
\renewcommand\arraystretch{1.2}
\begin{tabularx}{0.75\textwidth}{ |>{\centering}X|>{\centering}X|>{\centering}X|>{\centering}X|X|}
\hline
a [km] & e [km] & i [rad] & $\Omega$ [rad] & $\omega$ [rad]\\
\hline
$9.146\cdot 10^3$ & $1.979\cdot 10^{-1}$ & 2.1550 & 1.2300 & 2.6620\\
\hline
\end{tabularx}
\end{center}`Il problema è il seguente: se inserisco >{\centering} alla sinistra dell’ultimo “X” (per centrare l’ultima colonna) mi da un errore!
Come posso risolvere?PS: mi scuso in anticipo se la domanda può essere banale però ho veramente appena messo il naso in questo nuovo mondo e anche spulciando guide su guide i problemi e gli errori (per me) ignoti continuano a comparire!!!
-
27 Novembre 2014 alle 8:48 #98671::
Penso che il tuo approcio sia scorretto per questo genere di tabella. A mio parere dovresti utilizzare il tipo di colonna [tt]S[/tt] definita dal pacchetto [tt]siunitx[/tt]. Mi sono permesso anche di apportare alcune modifiche al tuo codice 😀
`
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs}\begin{document}
%\renewcommand\arraystretch{1.2}
\begin{tabular}{*{5}{S}}
\toprule
{$a$ [\si{\km}]} & {$e$ [\si{\km}]} & {$i$ [rad]} & {$\Omega$ [rad]} & {$\omega$ [rad]}\\
\midrule
9.146e3 & 1.979e-1 & 2.1550 & 1.2300 & 2.6620\\
\bottomrule
\end{tabular}
\end{document}
`
Le modifiche che ho fatto sono:- Tolto i filetti verticali e inserito al posto di quelli orizzontali [tt]\toprule[/tt], [tt]\midrule[/tt] e [tt]\bottomrule[/tt] del pacchetto [tt]booktabs[/tt] perché sono meglio spaziati rispetto al comando [tt]\hline[/tt]. In tal modo non è più necessario neanche [tt]\arraystretch[/tt]
- Utilizzato le colonne di tipo [tt]S[/tt] del pacchetto [tt]siunitx[/tt]. Questo porta a un vantaggio: allineano i numeri rispetto al separatore decimale (punto o virgola che sia). Nel tuo caso essendo una tabella di numeri, è il corretto allineamento perché permette di confrontare rapidamente i vari dati.
- Infine ho posto [tt]a[/tt], [tt]e[/tt] e [tt]i[/tt] in ambiente matematico perché sono variabili, non testo normale, e vanno scritte con il font matematico corsivo per differenziarle dal resto del testo.
-
27 Novembre 2014 alle 14:49 #98672::
Ho provato il codice che mi hai proposto. Indubbiamente è un layout più pulito però confesso che preferisco quello che ho tentato di dare io; detto questo userò di sicuro i comandi \toprule al posto di \hline e renderò a,e,i come formule matematiche. per quanto riguarda invece l’allineamento rispetto al punto, anche con il mio layout ottengo un buon risultato utilizzando sempre lo stesso numero di cifre significative, mantenendo però la possibilità di centrare il testo all’interno della colonna.
Premetto che apprezzo qualunque suggerimento e ringrazio di cuore chi mi ha gia dato un consiglio, però preferirei ,se è possibile, mantenere il mio layout!Come posso risolvere però il mio specifico problema?
-
27 Novembre 2014 alle 22:30 #98673::
Per l’ultima cella non usare \\ ma devi usare \tabularnewline.Per le unità di misura fra parentesi quadre ho scritto un messaggio a questo proposito un paio di giorni fa; ma nella Guida GuIT c’è scritto parecchi a proposito delle unità di misura e le parentesi quadre sono assolutamente non solo da evitare, ma scorrette.
-
27 Novembre 2014 alle 23:53 #98674
-
28 Novembre 2014 alle 17:20 #98675::
Packy” post=98262Perfetto.. Con \newtabularline ho risolto! Grazie mille a tutti per l’aiuto! Per quanto riguarda le parentesi quadre vedrò di documentari meglio perchè fino ad ora non le ho mai messe in dubbio!!!
Ricordati: “dubito, ergo sum!”
Anch’io le usavo da giovane, poi ho scoperto l’errore concettuale che c’è ditro; servono per scrivere equazioni dimensionali del tipo:
[v] =[l] [t-1]
dove v è la grandezza velocità, l è la grandezza lunghezza e t è la grandezza tempo.
Volendo puoi scirvere
[v] = km/h
che si legge :le dieansioni della velocità sono i chilometri all’ora” a come vedi le unità non sono le dimensioni, quindi la seocnda scrittura è errata. Poi scrivere invece
v = {v}[v]
dove le graffe racchiudono la misura e le quadre racchiudono le dimensioni (unitarie) quindi si legge “la grandezza velocità e espressa come la misura della velocità per l’unità di misura della velocità”.
Credo che queste simbologie sian spiegate ancora meglio nei documenti ufficiali del Comité Intenational del Pois et Mésures (spero di averlo citato giusto) dalle cui deliberazioni nascono le norme internazionali emesse dall’ISO. Un metrologo potrebbe essere più preciso; io non sono un metrologo. è per questo che cerco di documentarmi, ma non conservo hard copies su carta di tutto quel che consulto. 🙁
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.