Sou um usuário relativamente novo do Latex e esta é a primeira vez que tento construir uma mesa para minha tese. gostaria que a tabela tivesse a seguinte aparência:
Seguindo algumas pesquisas na internet, eu vim com o código a seguir (ignore as diferenças nos títulos das colunas entre o código Latex e o documento do Word)
\begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{lrrrr} \toprule \multicolumn{2}{c}{{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\ \cmidrule{2-3} \cmidrule{4-5} & Number of courses required to pass & Cumulative Total of Courses && Number of courses & Cumulative Total of Courses \midrule First year & 4 & 8 & 4 & 18 \\ \bottomrule \end{tabular} \label{table:mr} \end{table}
não está funcionando de jeito nenhum!
Comentários
Resposta
Uma versão melhor:
\documentclass{article} \usepackage{booktabs} \usepackage[margin=1in]{geometry} \usepackage{array} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} \begin{document} \begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{@{}p{0.12\textwidth}*{4}{L{\dimexpr0.22\textwidth-2\tabcolsep\relax}}@{}} \toprule & \multicolumn{2}{c}{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\ \cmidrule(r{4pt}){2-3} \cmidrule(l){4-5} & Number of courses required to pass & Cumulative Total of Courses & Number of courses & Cumulative Total of Courses\\ \midrule First year & 4 & 8 & 4 & 18 \\ \bottomrule \end{tabular} \label{table:mr} \end{table} \end{document}
Por que seu código não “compilou?
-
Você perdeu um
&
no início de\multicolumn{2}{c}{{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\
fazendo a primeira entrada para ir para a primeira coluna.
-
Você tem um
&&
em a linhaNumber of courses required to pass & Cumulative Total of Courses && Number of courses & Cumulative Total of Courses
Deve ser
&
e você deve colocar um&
no início da linha. E no final desta linha você perdeu\\
pouco antes de\cmidrule
.
Agora as modificações
Depois de corrigir tudo acima, introduzi um novo tipo de coluna com o ajuda do pacote array
.:
\usepackage{array} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\raggedright
foi adicionada para evitar efeitos de justificação feios, uma vez que as colunas podem ser estreitas e as palavras podem variar em comprimento. Isso também cuida de caixas ruins.
Eu usei esta L
coluna com largura
\dimexpr0.22\textwidth-2\tabcolsep\relax
até
*{4}{L{\dimexpr0.22\textwidth-2\tabcolsep\relax}}
em vez de repetir.
Como observação lateral, o \cmidrule
pode ser encurtado de l
eft ou r
ight por
\cmidrule(r{4pt}){2-3}
Aqui {4pt}
é o valor que reduzimos. Pode ser omitido como \cmidrule(r){4-5}
.
Comentários
- Muito obrigado. Funciona perfeitamente, e obrigado pela explicação completa. Apenas outra pergunta rápida – o alinhamento do título da tabela parece um pouco bobo – minha imagem . Quais são as opções para torná-lo mais esteticamente agradável? Seria possível fazer o título caber em uma linha?
- @Chris eu editei. As mudanças são na margem e na largura das colunas. Este é o melhor possível com esses cabeçalhos longos. : 0
- @Chris Como observação, agradecer aqui é melhor comunicado por voto positivo (todas as boas respostas) e aceitação (a resposta mais útil). Você pode consultar Como você aceita uma resposta? em caso de dúvidas 🙂
- olá @ Harish Kumar, votei a favor sua resposta e outra :). Apenas outra pergunta rápida – como preencho uma célula vazia em uma tabela com um ” – “. Tentei ” \ – “, mas a célula permanece em branco.
- @Chris Obrigado. :). Você deve colocar apenas
-
, (no \) ou melhor$-$
ou ainda melhor---
. Espero que ajude.
Resposta
Além de usar a booktabs
pacote (para obter uma boa aparência, ou seja, linhas horizontais bem espaçadas), eu também recomendo que você use o pacote tabularx
para simplificar o trabalho de obter quatro linhas iguais colunas.
\documentclass{article} \usepackage{booktabs,tabularx} \usepackage[margin=1in]{geometry} % set margins to meet your document"s needs \newcolumntype{Y}{>{\raggedright\arraybackslash}X} % use ragged-right, not fully-justified, look in narrow columns \begin{document} \begin{table}[t] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \label{table:mr} %\centering % not needed, since table is as wide as text block \begin{tabularx}{\textwidth}{@{}lYYYY@{}} \toprule &\multicolumn{2}{c}{\bfseries BCom} &\multicolumn{2}{c}{\bfseries B.Bus Sci} \\ \cmidrule(lr){2-3} \cmidrule(l){4-5} &Number of courses required to pass &Cumulative Total of Courses & Number of courses & Cumulative Total of Courses\\ \midrule First year & 4 & 8 & 4 & 18 \\ \bottomrule \end{tabularx} \end{table} \end{document}
Adendo : A propósito, a aparência da tabela que você mostra em sua postagem não pode ser alcançada ao usar os comandos do pacote booktabs
. Se você realmente precisa de todas essas linhas verticais e horizontais, não deve usar o comando \toprule
, \bottomrule
, \midrule
e \cmidrule
. Em vez disso, basta usar a instrução LaTeX \hline
. (Você pode, é claro, ainda faça uso do pacote tabularx
para simplificar a criação de colunas de largura igual para as colunas 2 a 5 da tabela.)
Essas modificações levarão ao tabela mostrada abaixo.Espero que você concorde que a “aparência das booktabs” – sem linhas verticais, menos linhas horizontais no geral e regras bem espaçadas – é muito preferível ao que se pode chamar de “aparência da planilha”.
\documentclass{article} \usepackage{tabularx} \usepackage[margin=1in]{geometry} % choose margin as needed \newcolumntype{Y}{>{\raggedright\arraybackslash}X} \begin{document} \begin{table}[h!] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \label{table:mr} \begin{tabularx}{\textwidth}{|l|Y|Y|Y|Y|} \hline &\multicolumn{2}{c|}{\bfseries B. Com} &\multicolumn{2}{c|}{\bfseries B. Bus. Sci} \\ \hline & Number of courses required to pass & Cumulative Total of Courses & Number of courses required to pass & Cumulative Total of Courses \\ \hline First Year & 4 & 8 & 4 & 18 \\ \hline Second Year & 10 & 16 & 11 & 16 \\ \hline Third Year & 18 & 24 & 20 & 25 \\ \hline \end{tabularx} \end{table} \end{document}
Comentários
- Olá – sim, concordo que a aparência das booktabs é muito melhor. A imagem que eu tinha no meu OP é do Word, e estava com pressa para postar porque precisava ir para algum lugar. As linhas verticais existiam porque são padrão com a ferramenta ” table ” do Word.
Resposta
Dê uma olhada no seguinte:
\documentclass{scrartcl} \usepackage{booktabs} \begin{document} \begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{p{0.2\textwidth}p{0.2\textwidth}p{0.2\textwidth}p{0.2\textwidth}p{0.2\textwidth}} \\ \toprule & \multicolumn{2}{c}{BCom} & \multicolumn{2}{c}{B. Bus Scii} \\ \midrule & Number of courses required to pass & Cumulative Total of Courses & Number of courses & Cumulative Total of Courses \\ \midrule First year & 4 & 8 & 4 & 8 \\ Second year & 10 & 16 & 11 & 16 \\ Third year & 18 & 24 & 20 & 25 \\ \bottomrule \end{tabular} \end{table} \begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{p{0.18\textwidth}p{0.18\textwidth}p{0.18\textwidth}p{0.18\textwidth}p{0.18\textwidth}} \\ \toprule & \multicolumn{2}{c}{BCom} & \multicolumn{2}{c}{B. Bus Scii} \\ \midrule & \multicolumn{1}{p{3.5cm}}{Number of courses required to pass} & Cumulative Total of Courses & \multicolumn{1}{p{2cm}}{Number of courses} & Cumulative Total of Courses \\ \midrule First year & 4 & 8 & 4 & 8 \\ Second year & 10 & 16 & 11 & 16 \\ Third year & 18 & 24 & 20 & 25 \\ \bottomrule \end{tabular} \end{table} \end{document}
Resposta
Você pode tentar
\documentclass{amsart} \usepackage{booktabs} \begin{document} \begin{table}[htbp] \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{@{}lp{3cm}p{3cm}p{3cm}p{3cm}@{}} \toprule & \multicolumn{2}{c}{BCom} & \multicolumn{2}{c}{B.Bus.Sci} \\ \cmidrule(r){2-3} \cmidrule(l){4-5} \\ & Number of courses required to pass & Cumulative total of courses & Number of courses & Cumulative total of courses \\ \midrule \\ First year & 4 & 8 & 4 & 18 \\ \bottomrule \end{tabular} \label{table:mr} \end{table} \newcommand*{\head}[1]{\parbox{2cm}{\begin{flushright}#1\end{flushright}}} \begin{table} \caption{Minimum Requirements for Automatic Readmission into the Commerce Faculty} \centering \begin{tabular}{@{}lrrr@{}} \toprule & Year & \head{Courses required to pass} & \head{Cumulative total} \\ \midrule \\ BCom & 1 & 4 & 8 \\ & 2 & 4 & 8 \\ & 3 & 4 & 8 \\ B.Bus Sci & 1 & 4 & 18 \\ & 2 & 4 & 8 \\ & 3 & 4 & 8 \\ \bottomrule \end{tabular} \label{table:mr.2} \end{table} \end{document}
bookstable
, você cometeu um erro de digitação aqui: {{BCom}, e cada a linha deve terminar com \\ (ausente em sua ” Número de cursos … ” linha). E o total de colunas combinadas em as colunas múltiplas devem ser iguais ao número total de colunas da sua tabela, portanto, basta colocar um & no início da linha para produzir uma primeira coluna vazia.