Come faccio a creare una tabella utilizzando \begin{table*}
in LaTeX?
La tabella I sto cercando di creare è leggermente complicato e dovrebbe assomigliare a questo:
Ci scusiamo per le linee storte dellimmagine.
Finora sono stato in grado di fare solo qualcosa di semplice:
\begin{table*}[t] \centering \begin{tabular}{ *1c | *3c | *3c | *2c | } & & & & & & & & & & & & \\ % Keep adding as many numbers of rows, etc. \end{tabular} \end{table}
Con questo codice ho le seguenti colonne: Nome, Testo 1, Testo 2, Testo 3, Testo 4, Testo 5, Testo 6, Testo 7 e Testo 8. E posso aggiungere tutte le righe che voglio nella tabella.
Non ho la patatina di Categoria 1, Categoria 2 e Categoria 3 sul lato sinistro e superiore dellimmagine.
Commenti
Risposta
Ecco un punto di partenza . La spaziatura può e deve essere regolata, ma ha senso solo dopo aver riempito la tabella.
\documentclass{article} \usepackage{rotating} \newcommand\sw[1]{\begin{sideways}#1\end{sideways}} \usepackage{multirow} \begin{document} \begin{tabular}{r|l|*8{c|}} \multicolumn{2}{c|}{} & \multicolumn{3}{c|}{Category 1} & \multicolumn{3}{c|}{Category 2} & \multicolumn{2}{c|}{Category 3} \\\cline{3-10} & Name & \sw{Text1} & \sw{Text2} & \sw{Text3} & \sw{Text4} & \sw{Text5} & \sw{Text6} & \sw{Text7} & \sw{Text8} \\\hline \multirow{4}{*}{\sw{\small Category 1}} & & & & & & & & & \\\cline{2-10} & & & & & & & & & \\\cline{2-10} & & & & & & & & & \\\cline{2-10} & & & & & & & & & \\\hline \multirow{4}{*}{\sw{\small Category 2}} & & & & & & & & & \\\cline{2-10} & & & & & & & & & \\\cline{2-10} & & & & & & & & & \\\cline{2-10} & & & & & & & & & \\\hline \end{tabular} \end{document}
Modifica: Come aumentare il numero di colonne nella Categoria 3 da 2 a 6, come richiesto nei commenti:
-
Cambia la riga che inizia la tabella in
\begin{tabular}{r|l|*{12}{c|}}
-
Modifica
\multicolumn
per il titolo in\multicolumn{6}{c|}{Category 3}
-
Modifica i comandi
\cline
in\cline{3-14}
e\cline{2-14}
, rispettivamente. -
Devi aggiungere colonne in tutte le righe, anche se rimangono vuote, per avere linee verticali. Ciò significa aggiungere
& \sw{Text9} & \sw{Text10} & \sw{Text11} & \sw{Text12}
per le intestazioni delle colonne ed estendere le altre righe a
& & & & & & & & & & & & &
Commenti
- Sto ancora cercando di capirlo. Potresti per favore dare un suggerimento su come aumentare il numero di colonne da 2 a 6 nella categoria 3 (cioè ho – Testo 7,8,9,10,11,12) Inoltre come posso regolare la spaziatura? /
- Vedi la modifica alla mia risposta. Dovresti assolutamente leggere qualche tutorial su come funzionano le tabelle in LaTeX, altrimenti devi chiedere ogni volta che vuoi apportare modifiche. Per quanto riguarda la spaziatura, rimandatela fino a quando non avrete finito con la tavola; quindi chiedi di nuovo se ‘ ti piace qualcosa in particolare.
- Quindi ho solo un problema di spaziatura. Come posso farlo bene? Sembra così: drive.google.com/open?id=0B6unL1yNveR6eGlNUXZjaUdNVzA Sì, ho esaminato la documentazione e lavorerò sulle tabelle.
- Fondamentalmente, il testo della categoria 1 e della categoria 2 si scontrano sul lato sinistro della tabella e la sesta colonna è un po più ampia per impostazione predefinita.
- Lho capito. Non stavo usando il numero corretto nellopzione multirow, ma la sesta colonna è ancora più ampia.
Answer
Potresti preferire utilizzare i booktabs.
\documentclass{standalone} \usepackage{booktabs} \usepackage{rotating} \newcommand\sw[1]{\small\begin{sideways}#1 \end{sideways}} \usepackage{multirow} \begin{document} \def\arraystretch{1.25} \begin{tabular}{rl*8{c}} \toprule \multicolumn{2}{c}{} & \multicolumn{3}{c}{Category 1} & \multicolumn{3}{c}{Category 2} & \multicolumn{2}{c}{Category 3} \\ & Name & \sw{Text1} & \sw{Text2} & \sw{Text3} & \sw{Text4} & \sw{Text5} & \sw{Text6} & \sw{Text7} & \sw{Text8} \\ \midrule \multirow{4}{*}{\sw{Category 1}} & a & A & & & & & & & \\ & b & B & & & & & & & \\ & c & C & & & & & & & \\ & d & D & & & & & & & \\ \multirow{4}{*}{\sw{Category 2}} & a & A & & & & & & & \\ & b & B & & & & & & & \\ & c & C & & & & & & & \\ & d & D & & & & & & & \\ \bottomrule \end{tabular} \end{document}
Risposta
Puoi utilizzare \rotatebox{angle}{text}
per ruotare il testo (richiede il pacchetto rotating
).
Puoi utilizzare \multicolumn{num_cols}{alignment}{contents}
per creare celle che si estendono su più colonne.
Puoi utilizzare \cline{from-to}
per le regole orizzontali che non si estende su tutte le colonne.
Puoi utilizzare \multirow{num_rows}{width}{contents}
per creare celle che si estendono diverse righe (richiede il multirow
pacchetto ) .
Largomento della tabella *{11}{c|}
è una scorciatoia per undici volte il c|
, consentito dal array
pacchetto .
\documentclass{article} \usepackage{array} \usepackage{rotating}% https://en.wikibooks.org/wiki/LaTeX/Rotations \usepackage{multirow}% https://tex.stackexchange.com/a/73285/120953 \newcommand{\cat}[1]{#1} \newcommand{\thead}[1]{#1} \newcommand{\catver}[1]{\rotatebox{90}{\cat{#1}}} \newcommand{\theadver}[1]{\rotatebox{90}{\thead{#1}\hspace{.7em}}} \begin{document} \begin{tabular}{*{11}{c|}} \multicolumn{2}{l|}{} & \multicolumn{3}{l|}{\cat{Category~1}} & \multicolumn{3}{l|}{\cat{Category~2}} & \multicolumn{3}{l|}{\cat{Category~3}} % https://tex.stackexchange.com/a/8555/120953 \\\cline{3-11} & \thead{Name} & \theadver{Text~1} & \theadver{Text~2} & \theadver{Text~3} & \theadver{Text~4} & \theadver{Text~5} & \theadver{Text~6} & \theadver{Text~7} & \theadver{Text~8} & \theadver{Text~9} \\\hline \multirow{5}{*}{\catver{Category~1}} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\hline \multirow{5}{*}{\catver{Category~2}} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\hline \multirow{5}{*}{\catver{Category~3}} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\cline{2-11} &&&&&&&&&&\\\hline \end{tabular} \end{document}
Inoltre potresti essere interessato a questa domanda riguardante la centratura verticale dei contenuti di una cella a più righe.
multirow
ctan .org / pkg / multirow? lang = de