Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I've taken an example of a very cool table from here and I've made some changes to suit my needs, the problem is that the table it's not correctly rounded: enter image description here

Unfortunately it doesn't seem to exist a rectagle element when you can only round some corners. Here's MWE:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[top=2.5cm, bottom=4cm, inner=2.5cm, outer=3.5cm]{geometry}

\usepackage{times}
\renewcommand{\rmdefault}{phv} % Arial
\renewcommand{\sfdefault}{phv} % Arial
\usepackage[T1]{fontenc}
\usepackage{textcomp} % necesario para el símbolo €

\usepackage[usenames,dvipsnames]{xcolor}
\usepackage[pdftex]{graphicx}
\usepackage{caption,subcaption}
\setlength\textfloatsep{1.7\baselineskip plus 0.2\baselineskip minus 0.5\baselineskip}
\setlength\intextsep{2\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip}

\usepackage{environ} %lo usaré para crear el environ de tabla colorida

\usepackage{tabularx}
\usepackage{booktabs} % Contiene el comando \midrule
\usepackage{colortbl}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{backgrounds,fit,calc}
\usetikzlibrary{%
   decorations.fractals%
  ,decorations.pathmorphing%
  ,shadows%
}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.text}
\usetikzlibrary{decorations.shapes} %para curvar texto
\usetikzlibrary{shapes,positioning} %para los flow charts
\usetikzlibrary{shapes,arrows,chains}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\usetikzlibrary{intersections}



\colorlet{TablaBordeSuperior}{BurntOrange} %\definecolor{TablaBordeSuperior}{cmyk}{0,0.51,1,0} % BurntOrange
\colorlet{TablaBordeInferior}{Bittersweet} %\definecolor{TablaBordeInferior}{cmyk}{0,0.75,1,0.24} % Bittersweet
\colorlet{TablaCentroSuperior}{blue!1}
\colorlet{TablaCentroInferior}{blue!20}
\colorlet{FuenteCabeceraTabla}{white}
\newcommand{\fuentecabecera}[1]{\textcolor{FuenteCabeceraTabla}{\textbf{#1}}}

\newcommand{\encabezadoUnaLineaSuperior}{0.8}
\newcommand{\encabezadoUnaLineaInferior}{0.8}
\newcommand{\espaciadoCabeceraCuerpoUnaLinea}{0.5em}
\newcommand{\encabezadoDosLineasSuperior}{1.3}
\newcommand{\encabezadoDosLineasInferior}{1.2}
%\newcommand{\espaciadoCabeceraCuerpoDosLineas}{1.5em} %hay que aumentar el valor de 0.5 a 1.5 puesto que la cabecera ocupa dos líneas
\newcommand{\espaciadoCabeceraCuerpoDosLineas}{2em}
\newcommand{\encabezadoTresLineasSuperior}{1.8}
\newcommand{\encabezadoTresLineasInferior}{1.8}
\newcommand{\espaciadoCabeceraCuerpoTresLineas}{0.5em}
\newcommand{\encabezadoSuperior}{\encabezadoUnaLineaSuperior} %por defecto una línea
\newcommand{\encabezadoInferior}{\encabezadoUnaLineaInferior} %por defecto una línea
\newcommand{\espaciadoCabeceraCuerpo}{\espaciadoCabeceraCuerpoUnaLinea} %por defecto el de una línea

\newcommand{\encabezadoUnaLinea}{
    \renewcommand{\encabezadoSuperior}{\encabezadoUnaLineaSuperior}
    \renewcommand{\encabezadoInferior}{\encabezadoUnaLineaInferior}
    \renewcommand{\espaciadoCabeceraCuerpo}{\espaciadoCabeceraCuerpoUnaLinea}}
\newcommand{\encabezadoDosLineas}{
    \renewcommand{\encabezadoSuperior}{\encabezadoDosLineasSuperior}
    \renewcommand{\encabezadoUnaLineaInferior}{\encabezadoDosLineasInferior}
    \renewcommand{\espaciadoCabeceraCuerpo}{\espaciadoCabeceraCuerpoDosLineas}}
\newcommand{\encabezadoTresLineas}{
    \renewcommand{\encabezadoSuperior}{\encabezadoTresLineasSuperior}
    \renewcommand{\encabezadoUnaLineaInferior}{\encabezadoTresLineasInferior}
    \renewcommand{\espaciadoCabeceraCuerpo}{\espaciadoCabeceraCuerpoTresLineas}}
%estos tres últimos comandos gestionan si el encabezado será de una línea, de dos o de tres

\newif\iflineaResaltado
\lineaResaltadofalse
\newcommand{\pieInferiorUno}{-5.2}
\newcommand{\pieInferiorDos}{3.45}
\newcommand{\resaltarPie}[2]{\lineaResaltadotrue\renewcommand{\pieInferiorUno}{#1}\renewcommand{\pieInferiorDos}{#2}}

\NewEnviron{tablacolorida}[2]{%
%  \vspace*{-2em}
    \begin{center}
        \captionsetup{type=table} %para que no me de error el posterior comando \captionof
        \begin{tikzpicture}
            \node (tbl) {

            \BODY

            };
            \begin{pgfonlayer}{background}
                \draw[rounded corners,top color=TablaBordeSuperior,bottom color=TablaBordeInferior, draw=white] ($(tbl.north west)+(0.14,0)$)
                    rectangle ($(tbl.north east)-(0.13,\encabezadoSuperior)$); %el top color indica el color principal de la línea de cabecera %para tener encabezado de dos líneas (0.13,1.3)
                \draw[rounded corners,top color=white,bottom color=TablaBordeInferior,
                    middle color=TablaBordeSuperior,draw=white!20] ($(tbl.south west)
                    +(0.13,0.5)$) rectangle ($(tbl.south east)-(0.13,0)$);
                \draw[top color=TablaCentroSuperior,bottom color=TablaCentroInferior,draw=white] %el top color indica el color de inicio de las filas del medio, el "white" hace que el borde externo de las filas no se pinte
                    ($(tbl.north east)-(0.13,\encabezadoInferior)$) %con el parámetro 0.8 controlamos la altura de la línea de cabecera  %para tener encabezado de dos líneas (0.13,1.2)
                    rectangle ($(tbl.south west)+(0.13,0.2)$); %el 0.2 controla el grosor de la línea decorativa inferior

                \iflineaResaltado
                \draw[top color=TablaBordeSuperior,bottom color=TablaBordeSuperior, draw=white] ($(0,\pieInferiorUno)+(7.5,2)$)
                    rectangle ($(-0.5,1)-(7,\pieInferiorDos)$); 
                % ($(0,-4.8)+(7.5,2)$) ($(-0.5,1)-(7,3.1)$)
                % ($(0,-5.2)+(7.5,2)$) ($(-0.5,1)-(7,3.45)$) %una fila más abajo
                \fi
            \end{pgfonlayer}
        \end{tikzpicture}
        \captionof{table}{#1} \label{tab:#2} 
    \end{center}
    %\vspace*{-1em}
}

\begin{document}

\begin{tablacolorida}{Hitos del proyecto}{hitosProyecto}
    \begin{tabularx}{1\textwidth}{m{0.10\linewidth} m{0.34\linewidth} m{0.48\linewidth}}
        \arrayrulecolor{purple}
        \centering\fuentecabecera{Hito} & \centering\fuentecabecera{Fecha} & \centering\arraybackslash\raisebox{-0.3em}{\fuentecabecera{Descripción}} \\[+\espaciadoCabeceraCuerpo]
        \centering\textbf{H1} & \centering Mes 0 & \centering\arraybackslash Comienzo del proyecto \\ \midrule
        \centering\textbf{H2} & \centering 2 meses y 3 semanas & \centering\arraybackslash Fin del estudio del arte \\ \midrule
        \centering\textbf{H3}  & \centering 6 meses y 1 semana & \centering\arraybackslash Finalización de la plataforma de virtualización \\ \midrule
        \centering\textbf{H4}  & \centering 9 meses & \centering\arraybackslash Finalización de lo concerniente a DTN \\ \midrule
        \centering\textbf{H5}  & \centering 10 meses y 1 semana & \centering\arraybackslash Finalización de lo concerniente a CDN \\ \midrule
        \centering\textbf{H6}  & \centering 12 meses & \centering\arraybackslash Fin del Proyecto Fin de Carrera (PFC) \\[0.5ex]
    \end{tabularx}
\end{tablacolorida}

\resaltarPie{-9.7}{7.95}
\newcounter{paqueteTrabajo}
\newcounter{tarea}
\setcounter{paqueteTrabajo}{-1}
\newcommand{\filaRHpt}[7]{\addtocounter{paqueteTrabajo}{1}\setcounter{tarea}{1}\centering \bfseries{PT.\arabic{paqueteTrabajo}.}   & \centering \bfseries{#1} & \centering \bfseries{#2} €  & \centering \bfseries{#3} & \centering \bfseries{#4 €}  & \centering \bfseries{#5} & \centering \bfseries{#6 €} & \centering\arraybackslash \bfseries{#7 €} \\ \midrule}
\newcommand{\filaRHt}[7]{\centering T.\arabic{paqueteTrabajo}\arabic{tarea}.   & \centering #1 & \centering #2 €  & \centering #3 & \centering #4 €  & \centering #5 & \centering #6 € & \centering\arraybackslash #7 € \\ \midrule\addtocounter{tarea}{1}}
\newcommand{\filaRHTOTAL}[7]{\centering \fuentecabecera{Total}   & \centering \fuentecabecera{#1} & \centering \fuentecabecera{#2 €} & \centering \fuentecabecera{#3} & \centering \fuentecabecera{#4 €}  & \centering \fuentecabecera{#5} & \centering \fuentecabecera{#6 €} & \centering\arraybackslash \raisebox{-0.15em}{\fuentecabecera{#7 €}} \\}
\encabezadoTresLineas
\begin{tablacolorida}{Presupuesto de recursos humanos}{presupuestoRH}
    \begin{tabularx}{1\textwidth}{m{0.08\linewidth} m{0.08\linewidth} m{0.11\linewidth} m{0.08\linewidth} m{0.11\linewidth} m{0.08\linewidth} m{0.11\linewidth} m{0.11\linewidth}}
        \arrayrulecolor{purple}
        \centering\fuentecabecera{\underline{Tarea}} & \multicolumn{7}{c}{\fuentecabecera{\underline{Recurso}}} \\ %[+\espaciadoCabeceraCuerpo]
        & \multicolumn{2}{c}{\fuentecabecera{FL}} & \multicolumn{2}{c}{\fuentecabecera{JMC}} & \multicolumn{2}{c}{\fuentecabecera{AM}} & \centering\arraybackslash\fuentecabecera{Coste} \\
        & \centering\fuentecabecera{CT}  & \centering\fuentecabecera{Coste} & \centering\fuentecabecera{CT}  & \centering\fuentecabecera{Coste} & \centering\fuentecabecera{CT}  & \centering\fuentecabecera{Coste} & \\ [+\espaciadoCabeceraCuerpo] %Para añadir un último elemento sería \centering\arraybackslash\raisebox{-0.25em}{\fuentecabecera{Total}} 
        \filaRHpt{7}{0}{0}{0}{312}{0}{0} %PRIMER PAQUETE DE TRABAJO
        \filaRHt{2}{0}{0}{0}{120}{0}{0}
        \filaRHt{1}{0}{0}{0}{72}{0}{0}
        \filaRHt{2}{0}{0}{0}{88}{0}{0}
        \filaRHt{2}{0}{0}{0}{32}{0}{0}
        \filaRHpt{8}{480}{1}{60}{408}{14688}{15228} %SEGUNDO PAQUETE DE TRABAJO
        \filaRHt{1}{60}{0}{0}{88}{3168}{3228}
        \filaRHt{1}{60}{0}{0}{72}{2592}{2652}
        \filaRHt{3}{180}{0}{0}{88}{3168}{3348}
        \filaRHt{3}{180}{1}{60}{160}{5760}{6000}
        \filaRHpt{9}{540}{2}{120}{336}{12096}{12756} %TERCER PAQUETE DE TRABAJO
        \filaRHt{2}{120}{0}{0}{72}{2592}{2712}
        \filaRHt{2}{120}{0}{0}{88}{3168}{3288}
        \filaRHt{1}{60}{0}{0}{88}{3168}{3228}
        \filaRHt{4}{240}{2}{120}{88}{3168}{3528}
        \filaRHpt{26}{1560}{1}{60}{192}{6912}{8532} %CUARTO PAQUETE DE TRABAJO
        \filaRHt{24}{1440}{0}{0}{160}{5760}{7200}
        \filaRHt{2}{120}{1}{60}{32}{1152}{1332}
        \filaRHTOTAL{50}{2580}{4}{240}{1248}{33696}{36516}[0.5ex] 
    \end{tabularx}
\end{tablacolorida}
\encabezadoUnaLinea

\end{document}
share|improve this question
    
    
I already tried those withouth success :( maybe I did something wrong –  Álvaro Aug 17 '13 at 16:43
    
Ah, sorry for the noise then. –  Torbjørn T. Aug 17 '13 at 16:45
1  
See dcmst's answer here: tex.stackexchange.com/questions/112343/beautiful-table-samples –  schmendrich Aug 17 '13 at 17:35
    
It would be nice to create my tables with tcolorbox as it's simpler to use, but this particular fading may be difficult to do it (at least for a non expert like me). Take into account that the picture is not very good, I will upload one better asap –  Álvaro Aug 17 '13 at 20:34
show 3 more comments

1 Answer

up vote 11 down vote accepted

One possibility using tcolorbox and its built-in interaction with tabularx:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[usenames,dvipsnames,table]{xcolor}
\usepackage[most]{tcolorbox}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{times}

\renewcommand\rmdefault{phv} % Arial
\renewcommand\sfdefault{phv} % Arial

\colorlet{TablaBordeSuperior}{BurntOrange}
\colorlet{TablaBordeInferior}{Bittersweet}
\colorlet{TablaCentroSuperior}{blue!1}
\colorlet{TablaCentroInferior}{blue!20}
\colorlet{FuenteCabeceraTabla}{white}

\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

\tcbset{rtab/.style={
freelance,
frame code={
  \path[top color=BurntOrange,bottom color=Bittersweet] 
    ([yshift=-#1*(\baselineskip+2pt)]interior.north west) --
    ([yshift=-#1*(\baselineskip+2pt)]interior.north east) {[rounded corners]--
    ([yshift=3pt]interior.north east) --
    ([yshift=3pt]interior.north west)} -- cycle;
  \path[top color=TablaCentroSuperior,bottom color=TablaCentroInferior] 
    ([yshift=-#1*(\baselineskip+2pt)]interior.north west) --
    ([yshift=-#1*(\baselineskip+2pt)]interior.north east) --
    (interior.south east) --
    (interior.south west) -- cycle;
  \path[top color=TablaBordeInferior,bottom color=TablaBordeSuperior] 
    (interior.south west) --
    (interior.south east) {[rounded corners]--
    ([yshift=-5pt]interior.south east) --
    ([yshift=-5pt]interior.south west)} -- cycle;
  },
interior code={},
 }
}

\newcommand\fuentecabecera[1]{\textcolor{FuenteCabeceraTabla}{\textbf{#1}}}

\begin{document}

\begin{tcolorbox}[
  rtab=1,
  tabularx*={\arrayrulecolor{purple}}%
    {>{\bfseries}M{0.10\linewidth} M{0.33\linewidth}M{0.46\linewidth}}
]
\fuentecabecera{Hito} & \fuentecabecera{Fecha} & \fuentecabecera{Descripción} \\
\\[-1.7ex]
H1 &  Mes 0 & Comienzo del proyecto \\ 
\midrule
H2 & 2 meses y 3 semanas & Fin del estudio del arte \\ 
\midrule
H3 & 6 meses y 1 semana & Finalización de la plataforma de virtualización \\ 
\midrule
H4 & 9 meses & Finalización de lo concerniente a DTN \\ 
\midrule
H5 & 10 meses y 1 semana & Finalización de lo concerniente a CDN \\ 
\midrule
H6 & 12 meses & Fin del Proyecto Fin de Carrera (PFC) \\ 
\end{tcolorbox}

\vspace{1cm}% just for the example

\begin{tcolorbox}[
  rtab=2,
  tabularx*={\arrayrulecolor{purple}}%
    {>{\bfseries}M{0.10\linewidth} M{0.33\linewidth}M{0.46\linewidth}}
]
\fuentecabecera{Lin1} & \fuentecabecera{Lin1} & \fuentecabecera{Lin1} \\
\fuentecabecera{Lin2} & \fuentecabecera{Lin2} & \fuentecabecera{Lin2} \\
\\[-1.7ex]
H1 &  Mes 0 & Comienzo del proyecto \\ 
\midrule
H2 & 2 meses y 3 semanas & Fin del estudio del arte \\ 
\midrule
H3 & 6 meses y 1 semana & Finalización de la plataforma de virtualización \\ 
\midrule
H4 & 9 meses & Finalización de lo concerniente a DTN \\ 
\midrule
H5 & 10 meses y 1 semana & Finalización de lo concerniente a CDN \\ 
\midrule
H6 & 12 meses & Fin del Proyecto Fin de Carrera (PFC) \\ 
\end{tcolorbox}

\end{document}

enter image description here

The argument for the rtab style is used to control the number of lines that the table header will have.

In comments, it has been requested to have the possibility to provide a caption and label for the tables; here's one possibility:

\documentclass{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[usenames,dvipsnames,table]{xcolor}
\usepackage[most]{tcolorbox}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{environ}
\usepackage{times}

\renewcommand\rmdefault{phv} % Arial
\renewcommand\sfdefault{phv} % Arial

\colorlet{TablaBordeSuperior}{BurntOrange}
\colorlet{TablaBordeInferior}{Bittersweet}
\colorlet{TablaCentroSuperior}{blue!1}
\colorlet{TablaCentroInferior}{blue!20}
\colorlet{FuenteCabeceraTabla}{white}

\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

\tcbset{rtab/.style={
freelance,
frame code={
  \path[top color=BurntOrange,bottom color=Bittersweet] 
    ([yshift=-#1*(\baselineskip+2pt)]interior.north west) --
    ([yshift=-#1*(\baselineskip+2pt)]interior.north east) {[rounded corners]--
    ([yshift=3pt]interior.north east) --
    ([yshift=3pt]interior.north west)} -- cycle;
  \path[top color=TablaCentroSuperior,bottom color=TablaCentroInferior] 
    ([yshift=-#1*(\baselineskip+2pt)]interior.north west) --
    ([yshift=-#1*(\baselineskip+2pt)]interior.north east) --
    (interior.south east) --
    (interior.south west) -- cycle;
  \path[top color=TablaBordeInferior,bottom color=TablaBordeSuperior] 
    (interior.south west) --
    (interior.south east) {[rounded corners]--
    ([yshift=-5pt]interior.south east) --
    ([yshift=-5pt]interior.south west)} -- cycle;
  },
interior code={},
 }
}

\newcommand\fuentecabecera[1]{\textcolor{FuenteCabeceraTabla}{\textbf{#1}}}

\NewEnviron{RCtable}[4][htbp]
  {%
    \begin{table}[#1]
    \begin{tcolorbox}[#2]\BODY\end{tcolorbox}%
    \caption{#3}
    \label{tab:#4}
    \end{table}
  }

\begin{document}

Como vemos en los cuadros~\ref{tab:pruebaa} y ~\ref{tab:pruebab}...
\begin{RCtable}{
  rtab=1,
  tabularx*={\arrayrulecolor{purple}}%
    {>{\bfseries}M{0.10\linewidth} M{0.33\linewidth}M{0.46\linewidth}}
}{Primer cuadro de prueba}{pruebaa}
\fuentecabecera{Hito} & \fuentecabecera{Fecha} & \fuentecabecera{Descripción} \\
\\[-1.7ex]
H1 &  Mes 0 & Comienzo del proyecto \\ 
\midrule
H2 & 2 meses y 3 semanas & Fin del estudio del arte \\ 
\midrule
H3 & 6 meses y 1 semana & Finalización de la plataforma de virtualización \\ 
\midrule
H4 & 9 meses & Finalización de lo concerniente a DTN \\ 
\midrule
H5 & 10 meses y 1 semana & Finalización de lo concerniente a CDN \\ 
\midrule
H6 & 12 meses & Fin del Proyecto Fin de Carrera (PFC) \\ 
\end{RCtable}


\begin{RCtable}{
  rtab=2,
  tabularx*={\arrayrulecolor{purple}}%
    {>{\bfseries}M{0.10\linewidth} M{0.33\linewidth}M{0.46\linewidth}}
}{Segundo cuadro de prueba}{pruebab}
\fuentecabecera{Lin1} & \fuentecabecera{Lin1} & \fuentecabecera{Lin1} \\
\fuentecabecera{Lin2} & \fuentecabecera{Lin2} & \fuentecabecera{Lin2} \\
\\[-1.7ex]
H1 &  Mes 0 & Comienzo del proyecto \\ 
\midrule
H2 & 2 meses y 3 semanas & Fin del estudio del arte \\ 
\midrule
H3 & 6 meses y 1 semana & Finalización de la plataforma de virtualización \\ 
\midrule
H6 & 12 meses & Fin del Proyecto Fin de Carrera (PFC) \\ 
\end{RCtable}

\end{document}

enter image description here

The RCtable environment has one optional argument that can be used to specify the placement options (similar to the optional argument of the standard table environment), and three mandatory arguments: the first one, used for the options that build the table from the tcolorbox, the second one for the caption, and the third one to build the label (the label will have the form tab:text, where text is the string used in the third mandatory argument for RCtable.)

share|improve this answer
    
Thanks, it's perfect –  Álvaro Aug 20 '13 at 11:54
    
@Álvaro You're welcome! I'm glad I could help. –  Gonzalo Medina Aug 20 '13 at 16:52
    
I have a question, how could I integrate a caption and label with your design? Like the caption I have in the MWE \captionof{table}{#1} \label{tab:#2} could be ok. Hope you can modify your answer. –  Álvaro Aug 23 '13 at 15:55
    
@Álvaro please see my updated answer; the new environment will be treated as a standard floating table, and allows you to provide placement specifiers, options for the tcolorbox, a caption and a label. –  Gonzalo Medina Aug 23 '13 at 22:34
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.