Gostaria de centralizar apenas os números da tabela a seguir. Tentei algumas variações do comando de centralização, mas elas afetam a tabela inteira (sou relativamente novo no Latex).
MWE:
\documentclass{article}
\usepackage{booktabs, threeparttable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\begin{document}
\begin{table}[htbp]
\begin{threeparttable}
\caption{Number of Credits per Course by Year}
\label{table:nc}
\begin{tabular}{@{}p{0.18\textwidth}*{6}{L{\dimexpr0.15\textwidth-2\tabcolsep\relax}}@{}}
\toprule
& \multicolumn{2}{c}{\bfseries Commerce Faculty} &
\multicolumn{2}{c}{\bfseries EBE Faculty} &
\multicolumn{2}{c}{\bfseries Science Faculty} \\
\cmidrule(l){2-3} \cmidrule(l){4-5} \cmidrule(l){6-7}
& F, S, H Courses & W Courses & F, S, H Courses & W Courses & F, S, H Courses & W Courses \\
\midrule
First-year & 18 & 36 & Variable & Variable & 18 & 36 \\
Second-year & 18 & 36 & Variable & Variable & 24 & 48 \\
Third-year & 18 & 36 & Variable & Variable & 36 & 72 \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
Responder1
Você poderia usar um tabularx
ambiente - pré-definido com uma largura de \textwidth
- em vez de um tabular
ambiente. Fazer isso permitiria que você dispensasse os tediosos (e propensos a erros) cálculos manuais das larguras necessárias das colunas 2 a 7. No exemplo abaixo, o L
tipo de coluna é para material irregular à direita, enquanto o C
tipo de coluna é para centro -conjunto de materiais; ambos os tipos de coluna são baseados no X
tipo de coluna do tabularx
pacote. O tipo de coluna principal é C
porque as colunas 2 a 7 na maioria das linhas devem ser centralizadas; o L
tipo de coluna é usado para os cabeçalhos das colunas “Cursos F, S, H” e “Cursos W”; observe que não há necessidade de especificar explicitamente quebras de linha nesses cabeçalhos.
Na imagem abaixo, a linha horizontal fina abaixo \bottomrule
é criada por \hrule
; ele é colocado lá apenas para demonstrar que a largura da tabela é igual a \textwidth
.
\documentclass{article}
\usepackage{booktabs, threeparttable}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\begin{document}
\begin{table}[htbp]
\begin{threeparttable}
\caption{Number of Credits per Course by Year}
\label{table:nc}
\begin{tabularx}{\textwidth}{@{}l*{6}{C}@{}}
\toprule
& \multicolumn{2}{c}{\bfseries Commerce Faculty} &
\multicolumn{2}{c}{\bfseries EBE Faculty} &
\multicolumn{2}{c@{}}{\bfseries Science Faculty} \\ % note use of "c@{}"
\cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(l){6-7} % left- and right-trimming
& \multicolumn{1}{L}{F, S, H Courses} &
\multicolumn{1}{L}{W Courses} &
\multicolumn{1}{L}{F, S, H Courses} &
\multicolumn{1}{L}{W Courses}&
\multicolumn{1}{L}{F, S, H Courses} &
\multicolumn{1}{L@{}}{W Courses} \\ % note use of "L@{}"
\midrule
First-year & 18 & 36 & Variable & Variable & 18 & 36 \\
Second-year & 18 & 36 & Variable & Variable & 24 & 48 \\
Third-year & 18 & 36 & Variable & Variable & 36 & 72 \\
\bottomrule
\end{tabularx}
\end{threeparttable}
\end{table}
\hrule % just to indicate the width of the text block
\end{document}
Responder2
Declare um novo tipo de coluna para as centralizadas (se necessário, você sempre pode substituir a definição de uma célula específica usando \multicolumn
):
\documentclass[draft]{article}
\usepackage{booktabs, threeparttable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newlength\mylen
\setlength\mylen{\dimexpr0.135\textwidth-2\tabcolsep\relax}
\begin{document}
\begin{table}[htbp]
\begin{threeparttable}
\setlength\tabcolsep{5pt}
\caption{Number of Credits per Course by Year}
\label{table:nc}
\begin{tabular}{
@{}
p{0.18\textwidth}
*{2}{C{\mylen}}
*{2}{L{\mylen}}
*{2}{C{\mylen}}@{}
}
& \multicolumn{2}{c}{\bfseries Commerce Faculty} &
\multicolumn{2}{c}{\bfseries EBE Faculty} &
\multicolumn{2}{c@{}}{\bfseries Science Faculty} \\
\cmidrule(l){2-3} \cmidrule(l){4-5} \cmidrule(l){6-7}
& \multicolumn{1}{l}{F, S, H} & \multicolumn{1}{l}{W} & \multicolumn{1}{l}{F, S, H} & \multicolumn{1}{l}{W} & \multicolumn{1}{l}{F, S, H} & \multicolumn{1}{l@{}}{W} \\
& \multicolumn{1}{l}{Courses} & \multicolumn{1}{l}{Courses} & \multicolumn{1}{l}{Courses} & \multicolumn{1}{l}{Courses} & \multicolumn{1}{l}{Courses} & \multicolumn{1}{l@{}}{Courses} \\
\midrule
First-year & 18 & 36 & \small Variable & \small Variable & 18 & 36 \\
Second-year & 18 & 36 & \small Variable & \small Variable & 24 & 48 \\
Third-year & 18 & 36 & \small Variable & \small Variable & 36 & 72 \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
Para evitar que a tabela se projetasse para a margem direita, recalculei a largura da coluna e reduzi \tabcolsep
.
Se for necessário um alinhamento mais sofisticado para os valores numéricos, você poderá usar o métododcolumn
ousiunitx
pacotes.
Responder3
Uma solução usando o makecell
pacote, que permite personalizar ainda mais suas células. A título de demonstração, peço no código a seguir que os números sejam impressos em negrito e que seja adicionado algum espaço vertical acima e abaixo da célula. Além disso, cada grupo de duas colunas, contando a partir da segunda, tem a mesma largura – a do primeiro grupo:
\documentclass{article}
\centering\setlength{\tabcolsep}{4.4pt}
\usepackage{booktabs, threeparttable}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\usepackage{makecell}
\renewcommand{\cellgape}{\bfseries\Gape[2pt]}
\renewcommand{\theadalign}{lc}
\renewcommand{\theadfont}{\normalsize}
\newlength{\headwd}
\settowidth{\headwd}{\bfseries Commerce Faculty}
\begin{document}
\begin{table}[htbp]
\begin{threeparttable}
\caption{Number of Credits per Course by Year}
\label{table:nc}
\begin{tabular}{@{}l*{6}{p{\dimexpr 0.5\headwd-\tabcolsep \relax}}@{}}
\addlinespace
\toprule
& \multicolumn{2}{c}{\bfseries Commerce Faculty} &
\multicolumn{2}{c}{\bfseries EBE Faculty} &
\multicolumn{2}{c}{\bfseries Science Faculty} \\
\cmidrule(lr){2-3}\cmidrule(lr){4-5} \cmidrule(lr){6-7}
&\thead{ F, S, H \\ Courses} & \thead{W\\ Courses }&\thead{ F, S, H \\ Courses } & \thead{W\\ Courses} &\thead{ F, S, H\\ Courses} & \thead{W\\
Courses} \\
\cmidrule(lr){2-3}\cmidrule(lr){4-5} \cmidrule(lr){6-7}
First-year & \makecell{18} & \makecell{36} & Variable & Variable & \makecell{18} & \makecell{36} \\
Second-year & \makecell{18} & \makecell{36} & Variable & Variable & \makecell{24} & \makecell{48} \\
Third-year & \makecell{18} & \makecell{36} & Variable & Variable & \makecell{36} & \makecell{72} \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}
Responder4
Por que? Não sei, mas gosteitap
ideia. Provavelmente longe de ser bom, misturando Plain TeX e LaTeX, mas ainda assim algo para brincar.
\documentclass{scrartcl}
\input{tap}
\usepackage{kantlipsum}
\begin{document}
\kant[1]
\medskip
\thistable{\desiredwidth\hsize}
%\moveright\parindent
\begintable
\begintableformat & \left \endtableformat
\B" ! @6 \= \E!
\B": ! @2 \textbf{Commerce Faculty} | @2 \textbf{EBE Faculty} | @2 \textbf{Science Faculty} \E!
\B" ! @6 \- \E!
\B"^ ! F, S, H | W | F, S, H | W | F, S, H | W \E!
\B"_ ! Courses | Courses | Courses | Courses | Courses | Courses \E!
\B! @7 \= \E!
\B!^ First-year | \center{18} | \center{36} | Variable | Variable | \center{18} | \center{36} \E!
\B!+ Second-year | \center{18} | \center{36} | Variable | Variable | \center{24} | \center{48} \E!
\B!_ Third-year | \center{18} | \center{36} | Variable | Variable | \center{36} | \center{72} \E!
\=
\endtable
\medskip
\kant[4]
\end{document}