Eu tenho o seguinte script usando o modelo de conferência IEEE de:https://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/?lang=en
Acho a formatação desta tabela complicada. Os problemas são:
1) A coluna mais à esquerda não está à direita. Preciso que as linhas horizontais pretas comecem no início da linha (veja algum espaço à esquerda de cada linha) e preciso de um espaço antes de iniciar o texto da linha (preciso que seja semelhante à coluna mais à direita).
2) A coluna A
deve ser sublinhada como coluna B
e C
. Mas a linha não está bem colocada. Deve terminar antes da linha vertical.
Aqui está o roteiro:
\documentclass[compsoc, conference, letterpaper, 10pt, times]{IEEEtran}
\ifCLASSOPTIONcompsoc
% IEEE Computer Society needs nocompress option
% requires cite.sty v4.0 or later (November 2003)
\usepackage[nocompress]{cite}
\else
% normal IEEE
\usepackage{cite}
\fi
\ifCLASSINFOpdf
\else
\fi
\usepackage{graphicx}
\usepackage{colortbl}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\newcommand{\head}[1]{\textnormal{\textbf{#1}}}
\newcommand{\normal}[1]{\multicolumn{1}{l}{#1}}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\newcommand*\rot{\rotatebox{90}}
\usepackage{tabularx}
\begin{document}
\title{Test Document}
% make the title area
\maketitle
\section{Introduction}
This is an introduction.
\begin{table*}[tb!]
\caption{A Table}
\centering
\resizebox{\textwidth}{!} {
\begin{tabular} {@{} lc*{16}l @{}}
\hline
\multicolumn{1}{c}{A}
&&\multicolumn{3}{c}{B}
&&\multicolumn{3}{c}{C}
&&\multicolumn{3}{c}{D}
&&\multicolumn{2}{c}{E}
\\
\cmidrule(lr){0-1}
\cmidrule(lr){3-5}
\cmidrule(lr){7-9}
\cmidrule(lr){11-13}
\cmidrule(lr){15-16}
\\
& \vline &\rot{Col. 1} & \rot{Col. 2} & \rot{Col. 3}
& \vline & \rot{Col. 1} & \rot{Col. 2} & \rot{Col. 3}
& \vline & \rot{Col. 1} & \rot{Col. 2} &\rot{Col. 3}
& \vline & \rot{Col. 1} & \rot{Col. 2}
\\ \hline
\rowcolor[gray]{.9}
Text1 &\vline & \cmark & {} & {} & \vline & {} & \cmark & {} & \vline & {} &\cmark & & \vline & & \cmark \\\hline
Text2 &\vline & {} & \cmark & {} & \vline & {} & \cmark & {} & \vline & {} & \cmark & & \vline & {} & \cmark \\\hline
\rowcolor[gray]{.9}
Text3 & \vline & \cmark & {} & {} & \vline & {} & \cmark & {} & \vline & {} &\cmark & &\vline & {} & \cmark \\
\hline
Text4 & \vline & \cmark & {} & {} & \vline & {} & \cmark & {} & \vline & {} &\cmark & &\vline & {} & \cmark \\
\hline
\rowcolor[gray]{.9}
Text5 & \vline & {} & \cmark & {} & \vline & \cmark & {} & {} & \vline & \cmark & {} & &\vline & {} & \cmark \\
\hline
Text6 & \vline & \cmark & {} & {} & \vline & \cmark & {} & {} & \vline & {} & \cmark & & \vline & {} & \cmark \\
\hline
\rowcolor[gray]{.9}
Text7 & \vline & \cmark & {} & {} & \vline & \cmark & {} & {} & \vline & \cmark & {} & & \vline & \cmark & {} \\
\hline
Text8 & \vline & \cmark & {} & {} & \vline & {} & \cmark & {} & \vline & {} &\cmark & & \vline & {} & \cmark \\
\hline
\rowcolor[gray]{.9}
Text9 & \vline & {} & {} & \cmark & \vline & \cmark & \cmark & {} & \vline & {} &\cmark & & \vline & {} & \cmark \\\hline
Text10 & \vline & {} & {} & \cmark & \vline & {} & {} & \cmark & \vline & {} &\cmark & &\vline & {} & \cmark \\
\hline
\end{tabular}
}
\end{table*}
\end{document}
Responder1
Seu problema é causado pelo uso @{}
na tabular
definição de coluna. a solução alternativa é explicada na documentação do colortbl
pacote, portanto não tem nada com a classe de documento usada.
Editar:
Caso você considere usar tabularx
em vez de tabular
, a solução do seu problema é:
- reduzir o número de colunas para o número de colunas com conteúdo (12)
- altere a definição da coluna para (sem linhas verticais)
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l
*{10}{C}
>{\columncolor{white}[\tabcolsep][0pt]}C
@{}}
ou (com linhas verticais)
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l |
*{3}{CCC|}
C
>{\columncolor{white}[\tabcolsep][0pt]}C
@{}}
Fora do assunto:
Tomei a liberdade de alterar sua tabela para que ela caiba na largura da coluna. Para isso utilizo tabularx
ambiente de tabela, reduzo o tamanho da fonte para \small
, removo linhas verticais e para linhas horizontais uso regras de booktabs
(para obter um aspecto mais profissional da tabela):
Como você pode ver, esta tabela não tem seus problemas. Talvez você tenha gostado :). O MWE é:
\documentclass[twocolumn]{article}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\usepackage[table]{xcolor}% instead of colortbl
\usepackage{booktabs, makecell, multirow, tabularx}
\usepackage{rotating}% added
\newcolumntype{C}{>{\centering\arraybackslash}X}
%-------------------------------------- only for show page layout
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{table}[ht]
\caption{A Table}
\centering
\setlength\tabcolsep{3pt}
\settowidth\rotheadsize{Col. 3}
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l
*{10}{C}
>{\columncolor{white}[\tabcolsep][0pt]}C
@{}}
\toprule
\multicolumn{1}{c}{A}
& \multicolumn{3}{c}{B}
& \multicolumn{3}{c}{C}
& \multicolumn{3}{c}{D}
& \multicolumn{2}{c}{E} \\
\cmidrule(lr){1-1}
\cmidrule(lr){2-4}\cmidrule(lr){5-7}\cmidrule(lr){8-10}
\cmidrule(lr){11-12}
& \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
& \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
& \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
& \rothead{Col. 1} & \rothead{Col. 2} \\
\hline
\rowcolor[gray]{.9}
Text1 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
Text2 & & \cmark &
& & \cmark &
& \cmark & & \cmark \\
\rowcolor[gray]{.9}
Text3 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
Text4 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text5 & & \cmark &
& \cmark & &
& \cmark & &
& & \cmark \\
\hline
Text6 & \cmark & &
& \cmark & &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text7 & \cmark & &
& \cmark & &
& \cmark & &
& \cmark & \\
Text8 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text9 & & & \cmark
& \cmark & \cmark &
& & \cmark &
& & \cmark \\
Text10 & & & \cmark
& & & \cmark
& & \cmark &
& & \cmark \\
\bottomrule
\end{tabularx}
\end{table}
\lipsum
\end{document}
Acima de MDeveríamos trabalhar também com IEEEtran
a classe document (que agora não instalei).
Se você persistir em ter a tabela em duas colunas e com linhas verticais, substitua no MWE acima, considere a existência das seguintes linhas:
...
\begin{table*}
\caption{A Table}
\centering
\setlength\tabcolsep{3pt}
\settowidth\rotheadsize{Col. 3}
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l |
*{3}{CCC|}
C
>{\columncolor{white}[\tabcolsep][0pt]}C
@{}}
\toprule
\multicolumn{1}{c}{A}
& \multicolumn{3}{c}{B}
& \multicolumn{3}{c}{C}
& \multicolumn{3}{c}{D}
& \multicolumn{2}{c}{E} \\
\cmidrule(lr){1-1}
\cmidrule(lr){2-4}\cmidrule(lr){5-7}\cmidrule(lr){8-10}
\cmidrule(lr){11-12}
& {Col. 1} & {Col. 2} & {Col. 3}
& {Col. 1} & {Col. 2} & {Col. 3}
& {Col. 1} & {Col. 2} & {Col. 3}
& {Col. 1} & {Col. 2} \\
\hline
...
e você obterá:
Edid (2): e com todas as linhas verticais como no código da sua pergunta e com cabeçalhos de colunas verticais:
MWE completo para a última imagem é:
\documentclass[twocolumn]{article}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\usepackage[table]{xcolor}% instead of colortbl
\usepackage{booktabs, makecell, multirow, tabularx}
\usepackage{rotating}% added
\newcolumntype{C}{>{\centering\arraybackslash}X}
%-------------------------------------- only for show page layout
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{table*}
\caption{A Table}
\centering
\setlength\tabcolsep{3pt}
\settowidth\rotheadsize{Col. 3}
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l|
*{3}{CCC|}
C
>{\columncolor{white}[\tabcolsep][0pt]}C
@{}}
\toprule
\multicolumn{1}{c}{A}
& \multicolumn{3}{c}{B}
& \multicolumn{3}{c}{C}
& \multicolumn{3}{c}{D}
& \multicolumn{2}{c}{E} \\
\cmidrule(lr){1-1}
\cmidrule(lr){2-4}\cmidrule(lr){5-7}\cmidrule(lr){8-10}
\cmidrule(lr){11-12}
& \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
& \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
& \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
& \rothead{Col. 1} & \rothead{Col. 2} \\
\hline
\rowcolor[gray]{.9}
Text1 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
Text2 & & \cmark &
& & \cmark &
& \cmark & & \cmark \\
\rowcolor[gray]{.9}
Text3 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
Text4 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text5 & & \cmark &
& \cmark & &
& \cmark & &
& & \cmark \\
Text6 & \cmark & &
& \cmark & &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text7 & \cmark & &
& \cmark & &
& \cmark & &
& \cmark & \\
Text8 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text9 & & & \cmark
& \cmark & \cmark &
& & \cmark &
& & \cmark \\
Text10 & & & \cmark
& & & \cmark
& & \cmark &
& & \cmark \\
\bottomrule
\end{tabularx}
\end{table*}
\lipsum
\end{document}
Editar (3): E para diversão e plenitudefora do assuntosugere mais uma solução sem linhas verticais (pretas), sem rotação dos cabeçalhos das colunas e todas as colunas com largura igual:
\documentclass[twocolumn]{article}
\usepackage{amssymb}
\usepackage{pifont}
\newcommand{\cmark}{\ding{51}}%
\usepackage[table]{xcolor}% instead of colortbl
\usepackage{booktabs, tabularx}
\usepackage[skip=1ex]{caption}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{table*}
\caption{A Table}
\centering
\setlength\tabcolsep{3pt}
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}X @{\quad}
*{3}{CCC @{\quad}}
C
>{\columncolor{white}[\tabcolsep][0pt]}C
@{}}
\toprule
\multicolumn{1}{c}{A}
& \multicolumn{3}{c}{B}
& \multicolumn{3}{c}{C}
& \multicolumn{3}{c}{D}
& \multicolumn{2}{c}{E} \\
\cmidrule(r){1-1}
\cmidrule(r){2-4}\cmidrule(r){5-7}\cmidrule(r){8-10}
\cmidrule{11-12}
& {Col. 1} & {Col. 2} & {Col. 3}
& {Col. 1} & {Col. 2} & {Col. 3}
& {Col. 1} & {Col. 2} & {Col. 3}
& {Col. 1} & {Col. 2} \\
\hline
\rowcolor[gray]{.9}
Text1 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
Text2 & & \cmark &
& & \cmark &
& \cmark & & \cmark \\
\rowcolor[gray]{.9}
Text3 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
Text4 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text5 & & \cmark &
& \cmark & &
& \cmark & &
& & \cmark \\
Text6 & \cmark & &
& \cmark & &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text7 & \cmark & &
& \cmark & &
& \cmark & &
& \cmark & \\
Text8 & \cmark & &
& & \cmark &
& & \cmark &
& & \cmark \\
\rowcolor[gray]{.9}
Text9 & & & \cmark
& \cmark & \cmark &
& & \cmark &
& & \cmark \\
Text10 & & & \cmark
& & & \cmark
& & \cmark &
& & \cmark \\
\bottomrule
\end{tabularx}
\end{table*}
\lipsum
\end{document}
Todas as sugestões fora do tópico acima consideram seu desejo de colorir as linhas. Eu pessoalmente não vou colorir as linhas. Para ajudar o leitor a rastrear as linhas, eu eventualmente adicionaria algum espaço vertical após cada quarta linha para tentar encaixar a tabela em uma coluna. Porém, pessoas diferentes, gostos diferentes, ...
Responder2
Proponho usar tabularx
e não \resizebox
. As regras verticais são colocadas como separadores entre colunas, então tenho apenas 12 colunas. Além disso, tomei a liberdade de mudar a aparência dos cabeçalhos das colunas girados: uma rotação de 40°, para que sua altura seja menor:
\documentclass[compsoc, conference, letterpaper, 10pt, times]{IEEEtran}
\ifCLASSOPTIONcompsoc
% IEEE Computer Society needs nocompress option
% requires cite.sty v4.0 or later (November 2003)
\usepackage[nocompress]{cite}
\else
% normal IEEE
\usepackage{cite}
\fi
\ifCLASSINFOpdf
\else
\fi
\usepackage{graphicx}
\usepackage[table, svgnames]{xcolor}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\newcommand{\head}[1]{\textnormal{\textbf{#1}}}
\newcommand{\normal}[1]{\multicolumn{1}{l}{#1}}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\newcommand*\rot[1][90]{\rotatebox{90}}
\newcommand*\myrot[1]{\rotatebox[origin=l]{40}{#1}}
\usepackage{tabularx}
\newcolumntype{C}{ >{\centering\arraybackslash}X}
\begin{document}
\title{Test Document}
% make the title area
\maketitle
\section{Introduction}
This is an introduction.
\begin{table*}[!htb]
\setlength\extrarowheight{2pt}\centering
\caption{A Table}
\begin{tabularx}{0.8\textwidth} { l|*{3}{CCC|}*{2}{C}|@{}}
\hline
\multicolumn{1}{c}{A}
& \multicolumn{3}{c}{B}
& \multicolumn{3}{c}{C}
& \multicolumn{3}{c}{D}
& \multicolumn{2}{c}{E}
\\
\cmidrule(lr){1-1}
\cmidrule(lr){2-4}
\cmidrule(lr){5-7}
\cmidrule(lr){8-10}
\cmidrule(lr){11-12}
& \myrot{Col. 1} & \myrot{Col. 2} & \myrot{Col. 3}
& \myrot{Col. 1} & \myrot{Col. 2} & \myrot{Col. 3}
& \myrot{Col. 1} & \myrot{Col. 2} & \myrot{Col. 3}
& \myrot{Col. 1} & \myrot{Col. 2}
\\ \hline
\rowcolor[gray]{.9}Text1
& \cmark & & & & \cmark & & & \cmark & & & \cmark \\\hline
Text2 & & \cmark & & & \cmark & & & \cmark & & & \cmark \\\hline
\rowcolor[gray]{.9}
Text3 & \cmark & & & & \cmark & & & \cmark & & & \cmark \\
\hline
Text4 & \cmark & & & & \cmark & & & \cmark & & & \cmark \\
\hline
\rowcolor[gray]{.9}
Text5 & {} & \cmark & & \cmark & & & \cmark & & & & \cmark \\
\hline
Text6 & \cmark & & & \cmark & & & & \cmark & & & \cmark \\
\hline
\rowcolor[gray]{.9}
Text7 & \cmark & & & \cmark & & & \cmark & & & \cmark & \\
\hline
Text8 & \cmark & & & & \cmark & & & \cmark & & & \cmark \\
\hline
\rowcolor[gray]{.9}
Text9 & & & \cmark & \cmark & \cmark & & & \cmark & & & \cmark \\
\hline
Text10 & & \cmark & & & & \cmark & & \cmark & & & \cmark \\
\hline
\end{tabularx}
\end{table*}
\end{document}
Se quiser uma rotação de 90°, substitua no corpo da mesa \myrot
por \rot
para obter isto: