Ajuda com uma tabela de booktabs

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:

insira a descrição da imagem aqui

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

  • Sem saber os detalhes de 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.

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} 

insira a descrição da imagem aqui

Por que seu código não “compilou?

  1. 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.

  2. Você tem um && em a linha

    Number 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.

insira a descrição da imagem aqui

\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”.

insira a descrição da imagem aqui

\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} 

exemplo

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} 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *