Error de borde de tabla con \ toprule \ midrule \ vspace [cerrado]

Jan 08 2021

Tengo una tabla con fórmulas matemáticas y necesitaba usar comandos para aumentar las dimensiones de la celda. Sin embargo, esto dificulta la formación de un borde exterior para las mesas. ¿Cómo puedo obtener bordes impecables en estas tablas?

TABLA 1

\begin{table}[h!]
    \centering
    \rowcolors{2}{white}{gray!20}   
    \resizebox{\textwidth}{!}{
        \begin{tabular}{|cccc|}
            \toprule
            \rowcolor{white}
            \textbf{AAAA} & \makecell{ \textbf{BBB} \\ \textbf{BBBB}} & \makecell{\textbf{CCCC} \\ \textbf{CCCCCC}} & \textbf{DDDDD} \\
            \midrule 
            AAAAAAAAA & 324 & 1400 or 2100 & AAAAAAA \\
            BBBBBBB & 324 & 1400 or 2100 & BBBBBBB \\
            \makecell{CCCCC \\ CCCCCC} & 380 & 1400 ou 2100 & \makecell{DDDDDDDDDD}   \\
            \midrule
        \end{tabular}
    }
\end{table}

TABLA 2

\bgroup
\def\arraystretch{2.7}%
\begin{table}[!h]
    \centering
    \caption{Har}
    \rowcolors{2}{white}{gray!20}   
    \resizebox{\textwidth}{!}{%
         \begin{tabular}{|ll|}
            %\toprule 
            \hline
            \multicolumn{1}{|l}{\textbf{BBBBBBBBBB}} & 
            \multicolumn{1}{l|}{\textbf{AAAAAAAAAA}} \\ 
            \toprule
            
            AAAAAAA
            & $ f_1 = \sum_{i}\sum_{j} \left\{p(i,j)\right\}^2 $ \\
            
            AAAAAAAA
            & \vspace{.5ex}\makecell[|l]{$f_2 = \sum\limits_{n=0}^{N_g - 1} n^2 \left\{ \sum\limits_{i=1}^{N_g}\sum\limits_{j=1}^{N_g}p(i,j)\right\}$, where 
            $n = |i-j| $.}\\
            
            AAAAAAAA
            
            &   \makecell[l]{$f_3 = \dfrac{\sum_{i}\sum_{j}(ij)p(i,j)-\mu_{x}\mu_{y}}{\sigma_{x}\sigma_{y}} $, where $\mu_{x}$, $\mu_{y}$, $\sigma_{x}$ \\ $\sigma_{y}$.}\\
            
            
            AAAAAAAA
            &  $f_4 = \sum_{i}\sum_{j}(i-\mu)^2 p(i,j)$\\
            
            AAAAAAAA
            & \vspace{.5ex} $f_5 = \sum_{i}\sum_{j}\dfrac{p(i,j)}{1+(i-j)^2}$\\
            
            AAAAAAAAA
            &  $f_6 = \sum\limits_{i=2}^{2N_g}ip_{x+y}(i)$\\
            
            AAAAAAAAA
            & \vspace{.5ex} $f_7 = \sum\limits_{i=2}^{2N_g}(i-f_8)^2 p_{x+y}(i)$\\
            
            AAAAAAAAA
            & \vspace{.5ex} $f_8 = -\sum\limits_{i=2}^{2N_g}p_{x+y}(i)log\left\{p_{x+y}(i)\right\}$ \\
            
            AAAAAAAAA
            &  $f_9 = -\sum_{i}\sum_{j}p(i,j)log\left\{p(i,j)\right\}$\\
            
            AAAAAAAAA
            & \vspace{.5ex} $f_{10} = - \sum\limits_{i=0}^{N_g-1}(i-f_{11})^2 p_{x-y}(i)$ \\
            
            AAAAAAAAA
            & \vspace{.5ex} $f_{11} = -\sum\limits_{i=0}^{N_g-1}p_{x-y}(i)log\left\{p_{x-y}(i)\right\}$\\
            

            AAAAAAAAA
            &  \makecell[l]{$f_{14} = \sqrt{\text{...}}$\\ 
            $Q(i,j)=\sum_{k}\dfrac{p(i,k)p(j,k)}{p_x(i)p_y(k)}$}\\
                    
            \midrule

        \end{tabular} 
    }
\end{table}
\egroup


ACTUALIZACIÓN: Al usar tabularx, tengo este problema. Necesito una tabla más compacta, no quiero muchas filas en la última columna. No me importa si necesito reducir el tamaño de la fuente. Necesito un efecto similar al que utilizo. \resizeboxHay mucho espacio entre las columnas. Este espacio podría reducirse para no dividir el texto de la última columna en tantas líneas.

    \usepackage[table]{xcolor}
    \usepackage{boldline, cellspace, makecell, tabularx}
    \setlength\cellspacetoplimit{5pt}
    \setlength\cellspacebottomlimit{5pt}
    \newcolumntype{C}{>{\centering\arraybackslash}X}
    \addparagraphcolumntypes{C}
    
           
\begin{table}[h!]
    \centering
    \caption{Características dos conjuntos de dados formados.}
    \label{quadro:conjuntosdados}
    \rowcolors{2}{white}{gray!20}   

\begin{tabularx}{\linewidth}{|*{4}{SC}|}
    \hlineB{2}      
    \rowcolor{white}
    \textbf{Método} & \makecell{ \textbf{N. de} \\ \textbf{variáveis}} & \makecell{\textbf{N. de} \\ \textbf{amostras}} & \textbf{Descrição} \\
    \hlineB{2}      
    
    Valores dos pixels s/ equalização & 324 & 1400 ou 2100 & Nível de intensidade de cada pixel \\
    Valores dos pixels c/ equalização & 324 & 1400 ou 2100 & Nível de intensidade de cada pixel \\
    Segmentação & 324 & 1400 ou 2100 & Estado do pixel (0 ou 1) \\
    Segmentação (maior região) & 324 & 1400 ou 2100 & Estado do pixel (0 ou 1) \\
    Máscara elíptica & 126 & 1400 ou 2100 & Nível de intensidade de cada pixel \\
    Histograma & 64 & 1400 ou 2100 & Quant. de pixels em cada nível de cinza\\
    Haralick & 56 & 1400 ou 2100 &  Valores dos descritores de textura \\
    Haralick reduzido & 14 & 1400 ou 2100 & Valores dos descritores de textura \\
    Haralick duplo & 112 & 1400 ou 2100 & Valores dos descritores de textura \\
    \makecell{Haralick e valores dos pixels \\com equalização} & 380 & 1400 ou 2100 & \makecell{Valores dos descritores de textura \\e nível de intensidade de cada pixel}   \\
    \hlineB{2}      
\end{tabularx}
\end{table}

Me gustaría tener este aspecto (en relación con las líneas de ruptura en las celdas). Sin embargo, lo necesito con las líneas de los bordes exteriores.

Respuestas

6 Zarko Jan 08 2021 at 12:25

Editar: no proporciona MWE (Ejemplo de trabajo mínimo), un documento pequeño pero completo, con el que podemos probar sus fragmentos de código. La pregunta de Alo no es muy clara, por lo que el diseño de la mesa es principalmente de mi agrado. Entonces, edite su pregunta y aclare cuáles son todos los problemas en sus mesas.

Ahora agregué una explicación de cómo se maneja el espacio vertical alrededor del contenido de las celdas, elimine la \limitsizquierda falsa de su código para la segunda tabla y agregue \nolimits (which you can remove, if you liked such form of \ sum`)

  • Las reglas definidas en el booktabspaquete no están diseñadas para usarse en tablas con líneas verticales. En su lugar, esas reglas que debe usar \hlineo cuando desee tener reglas de tabla con diferentes grosores hlineB{<factor>}definidas en los boldlinepaquetes (utilizadas en la primera tabla) o Xhline{<thicknes>}definidas en el makecellpaquete (utilizadas en la segunda tabla).
  • Para obtener más espacio vertical alrededor del contenido de las celdas, puede usar el paquete cellspace. Este espacio está definido por
    \setlength\cellspacetoplimit{5pt}
    \setlength\cellspacebottomlimit{5pt}
  • Si encuentra que 5ptes demasiado, puede reducirlo a la cantidad deseada (en MWE ahora se reduce a 2 puntos)
  • \resizeboxNo se recomienda el uso de en tablas porque con su uso se pierde el tamaño de fuente utilizado en la tabla. Es mejor usar el entorno de tabla, aunque puede prescribir ancho, por ejemplo, tabular*o tabularxcomo se usa en ambos MWE a continuación.

La primera mesa:

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\usepackage{boldline, cellspace, makecell, tabularx}
    \setlength\cellspacetoplimit{5pt}
    \setlength\cellspacebottomlimit{5pt}
    \newcolumntype{C}{>{\centering\arraybackslash}X}
    \addparagraphcolumntypes{C}

\begin{document}
    \begin{table}[ht]
    \centering
    \rowcolors{2}{white}{gray!20}
\begin{tabularx}{\linewidth}{|*{4}{SC}|}
    \hlineB{2}        
\textbf{AAAA}
        &   \makecell{\textbf{BBB} \\ \textbf{BBBB}}
            &   \makecell{\textbf{CCCC} \\ \textbf{CCCCCC}}
                &   \textbf{DDDDD}              \\
    \hlineB{1.5}
AAAAAAAAA   & 324 & 1400 or 2100 & AAAAAAA      \\
BBBBBBB     & 324 & 1400 or 2100 & BBBBBBB      \\
\makecell{CCCCC \\ CCCCCC} 
            & 380 & 1400 or 2100 & DDDDDDDDDD   \\
    \hlineB{2}
\end{tabularx}
    \end{table}
\end{document}

La segunda mesa:

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\usepackage{cellspace, makecell, tabularx}
    \setlength\cellspacetoplimit{2pt}
    \setlength\cellspacebottomlimit{2pt}
    \newcolumntype{L}{>{\raggedright\arraybackslash}X}
    \addparagraphcolumntypes{L}

\begin{document}
    \begin{table}[ht]
    \centering
    \rowcolors{2}{white}{gray!20}
\begin{tabularx}{\linewidth}{|Sl >{$\displaystyle}SL<{$}|}
        \Xhline{1.2pt}
\textbf{BBBBBBBB}   
        &   \textbf{AAAAAAAAAA}     \\
        \Xhline{0.8pt}
AAAAAAA & f_1 = \sum\nolimits_{i}\sum\nolimits_{j} \{p(i,j)\}^2         \\

AAAAAA  & f_2 = \sum_{n=0}^{N_g - 1} n^2
                \left\{\sum_{i=1}^{N_g}\sum\limits_{j=1}^{N_g}p(i,j)\right\},
                \text{ where }
                n = |i-j|.                                              \\
AAAAAA  & f_3 = \frac{\sum_{i}\sum_{j}(ij)p(i,j)-\mu_{x}\mu_{y}}{\sigma_{x}\sigma_{y}},
                \text{ where }
                \mu_{x}, \mu_{y}, \sigma_{x}, \sigma_{y} ?              \\
AAAAAA  & f_4 = \sum_{i}\sum_{j}(i-\mu)^2 p(i,j)                        \\
AAAAAA  & f_5 = \sum\nolimits_{i}\sum\nolimits_{j}\frac{p(i,j)}{1+(i-j)^2}        \\
AAAAAA  & f_6 = \sum_{i=2}^{2N_g}ip_{x+y}(i)                            \\
AAAAAA  & f_7 = \sum_{i=2}^{2N_g}(i-f_8)^2 p_{x+y}(i)                   \\
AAAAAA  & f_8 = -\sum_{i=2}^{2N_g}p_{x+y}(i)\log\{p_{x+y}(i)\}          \\
AAAAAA  & f_9 = -\sum\nolimits_{i}\sum\nolimits_{j}p(i,j)\log\{p(i,j)\} \\
AAAAAA  & f_{10} = - \sum_{i=0}^{N_g-1}(i-f_{11})^2 p_{x-y}(i)          \\
AAAAAA  & f_{11} = - \sum_{i=0}^{N_g-1}p_{x-y}(i)\log\{p_{x-y}(i)\}     \\
AAAAAA  &   \begin{aligned} f_{14} & = \sqrt{\text{...}} \\ Q(i,j) & =\sum_{k}\frac{p(i,k)p(j,k)}{p_x(i)p_y(k)} \end{aligned}                                               \\
    \Xhline{1.2pt}
\end{tabularx}
    \end{table}
\end{document}

Apéndice:

  • Primero permítame señalar que es muy difícil ayudarlo ya que usted no nos ayuda a ayudarlo. Todavía proporciona solo un fragmento de código, independientemente de que le pida muchas veces que extienda estos fragmentos para completar un documento pequeño. Todavía no sabemos nada sobre el diseño de su documento y los paquetes usados.
  • Familiarícese más con LaTeX, específicamente con la escritura de tablas. Puede que exista un texto introductorio sobre LaTeX (por ejemplo, libros de Dickimaw o una introducción breve a LaTeX ) y sobre cómo escribir tablas con LaTeX ( wiki / tablas ).
  • Leer la documentación del paquete también es de gran ayuda.

Respecto a tu mesa real:

  • Aparentemente, no es necesario que todas las columnas tengan el mismo ancho, por lo que no es necesario tener todos los Xtipos.
  • Las columnas dividen Xautomáticamente el texto de las celdas en más líneas, por lo que no es necesario utilizar el \makecellinterior para dividir el texto manualmente. Aún más, su uso le causa problemas porque la división manual del texto pf no es adecuada, por lo que el texto se derrama fuera de la tabla.
  • Los números en la segunda columna son (a mi gusto) más agradables si están alineados a la derecha y centrados en la columna. Esto se puede donar mediante el uso del Stipo de columna definido en el siunitxpaquete.
  • El uso del siunitxpaquete requiere redefinir el especificador de columnas definido en el cellspacepaquete de Soto predeterminado en algún otro. En MWE a continuación, selecciono Opara esto.

El MWE sugerido para esta nueva tabla es:

\documentclass[a4paper]{article}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\usepackage[column=O]{cellspace}
    \setlength\cellspacetoplimit{2pt}
    \setlength\cellspacebottomlimit{2pt}
\usepackage{makecell, tabularx}
    \renewcommand\theadfont{\bfseries}
    \renewcommand\theadgape{}
    \newcolumntype{L}[1]{>{\raggedright\arraybackslash\hsize=#1\hsize}X}
    \addparagraphcolumntypes{L}
\usepackage{siunitx}

\begin{document}
    \begin{table}[ht]
    \centering
\caption{Características dos conjuntos de dados formados.}
\label{quadro:conjuntosdados}
    \renewcommand\tabularxcolumn[1]{m{#1}}
    \rowcolors{2}{white}{gray!20}
\begin{tabularx}{\linewidth}{|O{L{0.8}} 
                              S[table-format=3.0]
                              c 
                              O{L{1.2}}|}
    \Xhline{1.2pt}
    \rowcolor{white}
\thead{Método} 
    &   {\thead{N. de\\ variáveis}} 
            &   \thead{N. de\\ amostras}  
                    &   \thead{Descrição}           \\
    \Xhline{0.8pt}
Valores dos pixels s/ equalização 
    & 324   & 1400 ou 2100  & Nível de intensidade de cada pixel    \\
Valores dos pixels c/ equalização 
    & 324   & 1400 ou 2100  & Nível de intensidade de cada pixel    \\
Segmentação 
    & 324   & 1400 ou 2100  & Estado do pixel (0 ou 1)              \\
Segmentação (maior região) 
    & 324   & 1400 ou 2100  & Estado do pixel (0 ou 1)              \\
Máscara elíptica 
    & 126   & 1400 ou 2100  & Nível de intensidade de cada pixel    \\
Histograma 
    & 64    & 1400 ou 2100  & Quant. de pixels em cada nível de cinza   \\
Haralick 
    & 56    & 1400 ou 2100  &  Valores dos descritores de textura       \\
Haralick reduzido 
    & 14    & 1400 ou 2100  & Valores dos descritores de textura        \\
Haralick duplo 
    & 112   & 1400 ou 2100  & Valores dos descritores de textura    \\
Haralick e valores dos pixels com equalização
    & 380   & 1400 ou 2100  & Valores dos descritores de textura e nível de intensidade de cada pixel   \\
    \Xhline{1.2pt}
\end{tabularx}
    \end{table}
\end{document}

4 F.Pantigny Jan 08 2021 at 17:42

Esto es lo que puede hacer con {NiceTabular}de nicematrix.

\documentclass{article}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{nicematrix}

\begin{document}


\begin{table}[h!]
\centering
\begin{NiceTabular}{|cccc|}[code-before=\rowcolors{2}{}{gray!20}]
    \toprule
    \textbf{AAAA} & \Block{}{ \textbf{BBB} \\ \textbf{BBBB}} & \Block{}{\textbf{CCCC} \\ \textbf{CCCCCC}} & \textbf{DDDDD} \\
    \midrule 
    AAAAAAAAA & 324 & 1400 or 2100 & AAAAAAA \\
    BBBBBBB & 324 & 1400 or 2100 & BBBBBBB \\
    \Block{}{CCCCC \\ CCCCCC} & 380 & 1400 ou 2100 & DDDDDDDDDD   \\
    \midrule
\end{NiceTabular}
\end{table}





\begin{table}[!ht]
\centering
\caption{Har}
 \begin{NiceTabular}{|ll|}[code-before = \rowcolors{2}{}{gray!20},cell-space-top-limit=1ex,cell-space-bottom-limit=1ex]
%\toprule 
\hline
\Block[l]{}{\textbf{BBBBBBBBBB}} & 
\Block[l]{}{\textbf{AAAAAAAAAA}} \\ 
\toprule
AAAAAAA
& $ f_1 = \sum_{i}\sum_{j} \left\{p(i,j)\right\}^2 $ \\
AAAAAAAA
&\Block[l]{}{$f_2 = \sum\limits_{n=0}^{N_g - 1} n^2 \left\{ \sum\limits_{i=1}^{N_g}\sum\limits_{j=1}^{N_g}p(i,j)\right\}$, where 
$n = |i-j| $.}\\
AAAAAAAA
&   \Block[l]{}{$f_3 = \dfrac{\sum_{i}\sum_{j}(ij)p(i,j)-\mu_{x}\mu_{y}}{\sigma_{x}\sigma_{y}} $, \\
               where $\mu_{x}$, $\mu_{y}$, $\sigma_{x}$ and $\sigma_{y}$ are...}\\
AAAAAAAA
&  $f_4 = \sum_{i}\sum_{j}(i-\mu)^2 p(i,j)$\\
AAAAAAAA
& $f_5 = \sum_{i}\sum_{j}\dfrac{p(i,j)}{1+(i-j)^2}$\\
AAAAAAAAA
&  $f_6 = \sum\limits_{i=2}^{2N_g}ip_{x+y}(i)$\\
AAAAAAAAA
& $f_7 = \sum\limits_{i=2}^{2N_g}(i-f_8)^2 p_{x+y}(i)$\\
AAAAAAAAA
& $f_8 = -\sum\limits_{i=2}^{2N_g}p_{x+y}(i)\log\left\{p_{x+y}(i)\right\}$ \\
AAAAAAAAA
&  $f_9 = -\sum_{i}\sum_{j}p(i,j)\log\left\{p(i,j)\right\}$\\
AAAAAAAAA
& $f_{10} = - \sum\limits_{i=0}^{N_g-1}(i-f_{11})^2 p_{x-y}(i)$ \\
AAAAAAAAA
& $f_{11} = -\sum\limits_{i=0}^{N_g-1}p_{x-y}(i)\log\left\{p_{x-y}(i)\right\}$\\
AAAAAAAAA
&  \Block[l]{}{$f_{14} = \sqrt{\text{...}}$\\ 
$Q(i,j)=\sum_{k}\dfrac{p(i,k)p(j,k)}{p_x(i)p_y(k)}$}\\
\midrule
\end{NiceTabular} 
\end{table}

\end{document}

Necesita varias compilaciones (porque nicematrixusa nodos PGF / Tikz).