Tengo el siguiente script usando la plantilla de conferencia IEEE de:https://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/?lang=en
Me resulta complicado formatear esta tabla. Los problemas son:
1) La columna más a la izquierda no es la derecha. Necesito que las líneas horizontales negras comiencen desde el principio de la fila (vea algo de espacio a la izquierda de cada fila) y necesito un espacio antes de comenzar el texto de la fila (necesito que se vea similar a la columna más a la derecha).
2) La columna A
debe estar subrayada como la columna B
y C
. Pero la línea no está bien colocada. Debe terminar antes de la línea vertical.
Aquí está el guión:
\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}
Respuesta1
Su problema se debe al uso @{}
en tabular
la definición de columna. La solución alternativa se explica en la documentación del colortbl
paquete, por lo que no tiene nada que ver con la clase de documento utilizada.
Editar:
En caso de que considere utilizar tabularx
en lugar de tabular
, la solución a su problema es:
- reducir el número de columnas al número de columnas con contenido (12)
- cambiar la definición de columna a (sin líneas verticales)
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l
*{10}{C}
>{\columncolor{white}[\tabcolsep][0pt]}C
@{}}
o (con líneas verticales)
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l |
*{3}{CCC|}
C
>{\columncolor{white}[\tabcolsep][0pt]}C
@{}}
Fuera de contexto:
Me tomé la libertad de cambiar su tabla para que quepa en el ancho de la columna. Para esto uso tabularx
el entorno de tabla, reduzco el tamaño de fuente a \small
, elimino las líneas verticales y para las líneas horizontales uso reglas de booktabs
(para obtener un aspecto más profesional de la tabla):
Como puedes ver, esta mesa no tiene tus problemas. Quizás te haya gustado :). El MWE es:
\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}
Por encima de M, deberíamos funcionar también con IEEEtran
la clase de documento (que ahora no he instalado).
Si persiste en tener una tabla en dos columnas y con líneas verticales, entonces reemplácela en el MWE anterior, considere existir las siguientes líneas:
...
\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
...
y obtendrás:
Edid (2): y con todas las líneas verticales como en el código de su pregunta y con encabezados de columnas verticales:
El MWE completo para la última imagen es:
\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): Y por diversión y plenitud.fuera de contextosugerencias una solución más sin líneas verticales (negras), sin encabezados de columna giratorios y todas las columnas tienen el mismo ancho:
\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 las sugerencias anteriores fuera de tema consideran su deseo de colorear filas. Yo personalmente no colorearé filas. Para ayudar al lector a realizar un seguimiento de las filas, eventualmente agregaría algo de espacio vertical después de cada fila para intentar encajar la tabla en una columna. Sin embargo, diferentes personas, diferentes gustos,...
Respuesta2
Propongo usar tabularx
y no \resizebox
. Las reglas verticales se ponen como separadores entre columnas, por lo que solo tengo 12 columnas. Además, me tomé la libertad de cambiar el aspecto de los cabezales de las columnas girados: una rotación de 40°, por lo que su altura es 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}
Si desea una rotación de 90°, reemplace en el cuerpo de la mesa \myrot
con \rot
para obtener esto: