Altres continguts del preàmbul
Com que en la lliçó principal no hem parlat de tots els identificadors disponibles, n’explicarem ara uns quants amb exemples. Potser vols tornar a llegir-te el principi de la lliçó sobre les taules i així tenir una visió general dels elements disponibles. Les breus descripcions que hem donat en la lliçó principal haurien de ser suficients per comprendre el significat dels tipus de columna m
, b
, w
i W
si has entès els tipus l
, c
, r
i p
. Si no és així, potser voldràs fer unes quantes proves abans de començar. El que queda per aprofondir són els altres operadors de preàmbul >
, <
, @
, !
i |
.
Posar estil a una columna
Com que >
i <
es poden utilitzar per posar coses abans i després del contingut de les cel·les d’una columna, pots utilitzar-los per afegir comandes que afecten l’aspecte de la columna. Per exemple, si vols posar en cursiva la primera columna i després una coma, ho pots fer de la següent manera:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{>{\itshape}l<{:} *{2}{l}}
\toprule
Animal & Menjar & Tamany \\
\midrule
gos & carn & mitjà \\
cavall & ufals & gros \\
granota & mosques & petit \\
\bottomrule
\end{tabular}
\end{document}
\itshape
fa el text en cursiva, però només dins la cel·la de la taula. Mirarem com posar format manualment en una propera lliçó.
Potser voldràs que la primera cel·la no es vegi afectada perquè és la capçalera de la taula. Aleshores pots utilitzar \multicolumn
. Recorda que pots utilitzar-ho per canviar l’alineació d’una sola cel·la com es mostra a continuació:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{>{\itshape}l<{:} *{2}{l}}
\toprule
\multicolumn{1}{l}{Animal} & Menjar & Tamany \\
\midrule
gos & carn & mitjà \\
cavall & ufals & gros \\
granota & mosques & petit \\
\bottomrule
\end{tabular}
\end{document}
Manipular l’espaiat entre columnes
Normalment LaTeX completa cada columna amb espais en ambdós costats per donar una visió equilibrada i separar-les de forma convenient. Aquest espaiat es defineix amb la longitud \tabcolsep
. Com que cada columna es completa pels dos costats es tindrà una separació d’un ample tabcolsep
en cada lateral de la taula i una separació d’un ample de 2\tabcolsep
entre dues columnes (un per cada columna). Pots ajustar aquest espai amb l’amplada que desitgis utilitzant \setlenght
:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\setlength\tabcolsep{1cm}
\begin{document}
\begin{tabular}{lll}
Animal & Menjar & Tamany \\
gos & carn & mitjà \\
cavall & ufals & gros \\
granota & mosques & petit \\
\end{tabular}
\end{document}
Pots canviar aquest espai a qualsevol valor arbitrari amb @
. Això eliminarà l’espaiat entre dues columnes o en els finals, i en canvi posarà entre les columnes allò que hagis especificat com a argument:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\begin{document}
\begin{tabular}{l@{ : }l@{\hspace{2cm}}l}
Animal & Menjar & Tamany \\
gos & carn & mitjà \\
cavall & ufals & gros \\
granota & mosques & petit \\
\end{tabular}
\end{document}
(En una propera lliço veurem \hspace
una altra vegada; pots endevinar que afegeix un espaiat horitzontal.)
La marca de preàmbul !
fa una cosa similar. La diferència és que afegeix el seu argument enmig de l’espaiat entre dues columnes.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\begin{document}
\begin{tabular}{l!{:}ll}
Animal & Menjar & Tamany \\
gos & carn & mitjà \\
cavall & ufals & gros \\
granota & mosques & petit \\
\end{tabular}
\end{document}
Línies verticals
En algunes ocasions voldràs utilitzar línies verticals.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\begin{document}
\begin{tabular}{l|ll}
Animal & Menjar & Tamany \\
gos & carn & mitjà \\
cavall & ufals & gros \\
granota & mosques & petit \\
\end{tabular}
\end{document}
Te n’hauràs adonat que l’ús de |
és bastant similar a !{decl}
; afegeix una línia vertical entre dues columnes deixant un espai de farciment entre elles. Però fer-ho així té un gran inconvenient; les línies verticals no funcionaran si utilitzes les línies horitzontals del paquet booktabs
. En comptes de fer-ho així pots utilitzar les línies horitzontals que proporciona LaTeX, que són \hline
(que es correspon a \toprule
, \midrule
i \bottomrule
) i \cline
(que funciona igual que \cmidrule
). Com vam ensenyar prèviament, les línies verticals s’afegiran a qualsevol espai que s’especifiqui en els arguments opcionals a \\
.
Personalitzant les línies del paquet booktabs
Totes les línies del paquet booktabs
i de la comanda \addlinespace
accepten un argument addicional entre claudàtors i així pots especificar el gruix d’una línia o l’espaiat horitzontal. A més a més, el retall de línia que provoca \cmidrule
es pot personalitzar especificant l’ample entre claudàtors després de les opcions r
o l
.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{@{} lll@{}} \toprule[2pt]
Animal & Menjar & Tamany \\ \midrule[1pt]
gos & carn & mitjà \\
\cmidrule[0.5pt](r{1pt}l{1cm}){1-2}
cavall & ufals & gros \\
granota & mosques & petit \\ \bottomrule[2pt]
\end{tabular}
\end{document}
Alineació numèrica a les columnes
L’alineació de números a les taules es pot gestionar amb el tipus de columna S
que proporciona el paquet siunitx
.
Un exemple senzill amb dues columnes numèriques ben alineades seria:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{SS}
\toprule
{Valors} & {Més Valors} \\
\midrule
1 & 2.3456 \\
1.2 & 34.2345 \\
-2.3 & 90.473 \\
40 & 5642.5 \\
5.3 & 1.2e3 \\
0.2 & 1e4 \\
\bottomrule
\end{tabular}
\end{document}
Fixa’t que qualsevol cel·la no-numèrica ha de ser “protegida” mitjançant claus.
El paquet siunitx
proporciona moltes possibilitats per formatar números de diferents maneres; mira la documentació del paquet.
Especificar l’amplada total de la taula
L’amplada de l’entorn tabular
es determina automàticament en funció del contingut de la taula. Hi ha dos mecanismes habituals per tal d’especificar un total d’amplada diferent.
Has de notar que quasi sempre serà preferible donar format a la taula amb una amplada fixa tal com es fa a continuació (potser utilitzant un tamany de font com ara \small
) més que no pas escalar la taula amb \resizebox
o comandes similars que poden donar tamanys de fonts i amplades inconsistents.
tabular*
L’entorn tabular*
pren l’argument opcional width que especifica l’amplada total de la taula. Es podrà afegir a la taula un espai ajustable amb la comanda \extracolsep
. Aquest espai s’afegeix entre totes les columnes que hi ha presents en el preàmbul a partir d’aquest punt. Aquesta comanda s’utilitza quasi sempre juntament amb \fill
, un espai especial que s’ajusta de manera que sigui el més llarg possible.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\begin{document}
\begin{center}
\begin{tabular}{cc}
\hline
A & B\\
C & D\\
\hline
\end{tabular}
\end{center}
\begin{center}
\begin{tabular*}{.5\textwidth}{@{\extracolsep{\fill}}cc@{}}
\hline
A & B\\
C & D\\
\hline
\end{tabular*}
\end{center}
\begin{center}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}cc@{}}
\hline
A & B\\
C & D\\
\hline
\end{tabular*}
\end{center}
\end{document}
tabularx
L’entorn tabularx
, proporcionat pel paquet del mateix nom, té una sintaxi similar a tabular*
però en comptes d’ajustar l’espaiat inter-columna, ajusta les amplades de les columnes especificant un nou tipus de columna, X
. Això és equivalent a especificar p{...}
per una determinada amplada.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\begin{document}
\begin{center}
\begin{tabular}{lp{2cm}}
\hline
A & B B B B B B B B B B B B B B B B B B B B B B B B\\
C & D D D D D D D\\
\hline
\end{tabular}
\end{center}
\begin{center}
\begin{tabularx}{.5\textwidth}{lX}
\hline
A & B B B B B B B B B B B B B B B B B B B B B B B B\\
C & D D D D D D D\\
\hline
\end{tabularx}
\end{center}
\begin{center}
\begin{tabularx}{\textwidth}{lX}
\hline
A & B B B B B B B B B B B B B B B B B B B B B B B B\\
C & D D D D D D D\\
\hline
\end{tabularx}
\end{center}
\end{document}
A diferència d’altres maneres discutides en aquestes lliçons, amb tabularx
necessitarem editar la taula diverses vegades amb diferents amplades de prova per determinar l’ajustament final. Això vol dir que hi ha diverses restriccions en l’ús d’aquest entorn; mira la documentació del paquet.
Taules multi-pàgina
Un entorn tabular
crea un bloc indivisible, amb la qual cosa haurà de ser prou petit per tal d’ajustar-se a una pàgina i es situa sovint en un entorn flotant table
.
Diversos paquets disposen de variants amb sintaxi similar, que permeten dividir la taula per provocar un salt de página. Aquí ho fem amb el paquet longtable
:
\documentclass{article}
\usepackage[paperheight=8cm,paperwidth=8cm]{geometry}
\usepackage{array}
\usepackage{longtable}
\begin{document}
\begin{longtable}{cc}
\multicolumn{2}{c}{Una Taula Llarga}\\
Cantó Esquerre & Cantó Dreta\\
\hline
\endhead
\hline
\endfoot
aa & bb\\
Entry & b\\
a & b\\
a & b\\
a & b\\
a & b\\
a & bbb\\
a & b\\
a & b\\
a & b\\
a & b\\
a & b\\
a & b\\
a & b b b b b b\\
a & b b b b b\\
a & b b\\
A Wider Entry & b\\
\end{longtable}
\end{document}
longtable
és remarcable pel fet que preserva l’amplada de les columnes en totes les pàgines de la taula; tanmateix, per tal d’aconseguir-ho, potser s’haurà de compilar el document diverses vegades, doncs entrades posteriors de la taula amb valors amples poden afectar les amplades en pàgines anteriors.
Notes al peu de la taula
És bastant habitual que necessitis símbols en una tabla per fer referència a notes al peu de la taula. El paquet threeparttable
simplifica les anotacions en aquest tipus de taules, fent que les notes al peu es situin en el mateix bloc que la pròpia taula. Et convidem a veure la documentació d’aquest paquet per a més detalls, però vejam ara un exemple senzill:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{threeparttable}
\begin{document}
\begin{table}
\begin{threeparttable}
\caption{Un Exemple}
\begin{tabular}{ll}
Una entrada & 42\tnote{1}\\
Una altra entrada & 24\tnote{2}\\
\end{tabular}
\begin{tablenotes}
\item [1] la primera nota.
\item [2] la segona nota.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
Composició tipogràfica de columnes estretes
Les regles per defecte de salt de línia assumeixen que les línies són relativament llargues, i així hi ha una certa flexibilitat a l’hora d’escollir els salts de línia. El següent exemple mostra diferents possibilitats en el cas de les taules. La primera taula mostra l’ajustament d’espai entre paraules, i TeX donarà un missatge d’avís del tipus ‘Underfull lines’ (línies que deixen espais en blanc). L’ús de \raggedright
normalment impedeix aquest problema, però pot donar lloc a línies molt irregulars. La comanda \RaggedRight
del paquet ragged2e
pot ser un compromís; permet certa irregularitat entre l’ample de les línies, però també divideix una paraula amb un guionet quan és necessari, tal i com es mostra a la tercera taula.
Fixa’t en l’ús que fem de \arraybackslash
, que ‘reseteja’ la definició de \\
de manera que finalitza la fila de la taula.
Una tècnica alternativa, com es mostra a la quarta taula, és utilitzar una font més petita de manera que les columnes ja no són tan estretes en relació amb el tamany de la font.
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{ragged2e}
\begin{document}
\begin{table}
\begin{tabular}[t]{lp{3cm}}
Un & Un text llarg dins d'un paràgraf estret, amb una mica de text d'exemple.\\
Dos & Un altre text llarg dins d'un paràgraf estret, amb algunes altres paraules més per tal de provocar un guionet a la paraula en el salt de línia.
\end{tabular}%
\begin{tabular}[t]{l>{\raggedright\arraybackslash}p{3cm}}
Un & Un text llarg dins d'un paràgraf estret, amb una mica de text d'exemple.\\
Dos & Un altre text llarg dins d'un paràgraf estret, amb algunes altres paraules més per tal de provocar un guionet a la paraula en el salt de línia.
\end{tabular}%
\begin{tabular}[t]{l>{\RaggedRight}p{3cm}}
Un & Un text llarg dins d'un paràgraf estret, amb una mica de text d'exemple.\\
Dos & Un altre text llarg dins d'un paràgraf estret, amb algunes altres paraules més per tal de provocar un guionet a la paraula en el salt de línia.
\end{tabular}
\footnotesize
\begin{tabular}[t]{lp{3cm}}
Un & Un text llarg dins d'un paràgraf estret, amb una mica de text d'exemple.\\
Dos & Un altre text llarg dins d'un paràgraf estret, amb algunes altres paraules més per tal de provocar un guionet a la paraula en el salt de línia.
\end{tabular}
\end{table}
\end{document}
Definir nous tipus de columnes
Com hem explicat a la lliçó principal, el paquet array
permet construccions com ara >{\bfseries}c
per definir una columna centrada i en negreta. Moltes vegades és convenient definir un nou tipus de columna per encapsular aquesta definició, per exemple
\newcolumntype{B}{>{\bfseries}c}
permet l’ús de B
en el preàmbul d’una taula per tal d’especificar una columna centrada i en negreta.
Trucs verticals
Sovint, en comptes de voler que una cel·la s’expandeixi en múltiples files, potser és millor tenir una sola fila en què algunes cel·les es divideixen verticalment mitjançant entorns tabular
niats.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lcc}
\toprule
Test & \begin{tabular}{@{}c@{}}A\\a\end{tabular} & \begin{tabular}{@{}c@{}}B\\b\end{tabular} \\
\midrule
El contingut & és & aquí \\
El contingut & és & aquí \\
El contingut & és & aquí \\
\bottomrule
\end{tabular}
\end{document}
S’ha de fer notar que pots controlar l’alineació vertical mitjançant un argument opcional de tabular
; suporta l’ús de t
, c
, o b
per a les alineacions de dalt, centre i baix respectivament, i s’utilitza de la següent manera:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lcc}
\toprule
Test & \begin{tabular}[b]{@{}c@{}}A\\a\end{tabular} & \begin{tabular}[t]{@{}c@{}}B\\b\end{tabular} \\
\midrule
El contingut & és & aquí \\
El contingut & és & aquí \\
El contingut & és & aquí \\
\bottomrule
\end{tabular}
\end{document}
Espaiat de línia en les taules
En la lliçó principal vam veure que \addlinespace
del paquet booktabs
era útil per afegir espaiat extra entre línies.
Hi ha dos paràmetres generals que controlen aquest espaiat de línia, \arraystretch
i \extrarowheight
(aquest darrer pertany al paquet array
).
\renewcommand\arraystretch{1.5}
incrementa l’espaiat de base en un 50%.
Sovint, especialment quan utilitzem \hline
, n’hi ha prou amb incrementar l’altura de les files, sense haver d’incrementar la seva amplada per sota de la línia base. El següent exemple mostra l’ús del paràmetre \extrarowheight
.
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{array}
\begin{document}
\begin{center}
\begin{tabular}{cc}
\hline
Quadrat& $x^2$\\
\hline
Cub& $x^3$\\
\hline
\end{tabular}
\end{center}
\begin{center}
\setlength\extrarowheight{2pt}
\begin{tabular}{cc}
\hline
Quadrat& $x^2$\\
\hline
Cub& $x^3$\\
\hline
\end{tabular}
\end{center}
\end{document}