Ошибка границы таблицы с \ toprule \ midrule \ vspace [закрыто]
У меня есть таблица с математическими формулами, и мне нужно было использовать команды для увеличения размеров ячеек. Однако это мешает формированию внешней границы для таблиц. Как добиться безупречных границ на этих таблицах?
ТАБЛИЦА 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}

ТАБЛИЦА 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

ОБНОВЛЕНИЕ: при использовании tabularx у меня возникла эта проблема. Мне нужна более компактная таблица, мне не нужно много строк в последнем столбце. Меня не волнует, нужно ли мне уменьшить размер шрифта. Мне нужен эффект, подобный использованию. \resizebox
Между столбцами много места. Это пространство можно уменьшить, чтобы текст последней колонки не разбивался на такое количество строк.
\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}

Хотелось бы иметь этот аспект (в отношении разрывов линий в ячейках). Однако мне это нужно с линиями внешних краев.

Ответы
Изменить: вы не предоставляете MWE (Minimal Working Example), небольшой, но полный документ, с помощью которого мы можем протестировать ваши фрагменты кода. А вот вопрос не очень ясный, поэтому оформление стола в основном мне по вкусу. Итак, пожалуйста, отредактируйте свой вопрос и поясните, в чем проблемы за вашими столами.
Теперь я добавил объяснение, как обрабатывается вертикальное пространство вокруг содержимого ячеек, удалил ложное \limits
оставшееся из вашего кода для второй таблицы и добавил \nolimits (which you can remove, if you liked such form of
\ sum`)
- Правила, определенные в
booktabs
пакете, не предназначены для использования в таблице с вертикальными линиями. Вместо этого те правила, которые вы должны использовать,\hline
или когда вы хотите, чтобы правила таблиц с разной толщинойhlineB{<factor>}
определялиboldline
пакеты (используются в первой таблице) илиXhline{<thicknes>}
определялись вmakecell
пакете (используются во второй таблице). - Для увеличения вертикального пространства вокруг содержимого ячеек можно использовать пакет
cellspace
. Это пространство определяется
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
- Если вы обнаружите, что
5pt
это слишком много, вы можете уменьшить его до желаемой суммы (в MWE теперь уменьшено до 2pt) - Использование
\resizebox
at в таблицах не рекомендуется, так как при его использовании размер шрифта, используемый в таблице, теряется. Лучше использовать среду таблицы, хотя вы можете указать ширину, например,tabular*
илиtabularx
как используется в обоих MWE ниже.
Первая таблица:

\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}
Вторая таблица:

\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}
Дополнение:
- Прежде всего, позвольте мне заметить, что вам очень трудно помочь, поскольку вы не помогаете нам помочь вам. Вы по-прежнему предоставляете только фрагмент кода, несмотря на то, что я много раз прошу вас расширить эти фрагменты до завершения небольшого документа. Мы до сих пор ничего не знаем о макете вашего документа и используемых пакетах.
- Пожалуйста, познакомьтесь с LaTeX, особенно с написанием таблиц. Может существовать вводный текст о LaTeX (например, книги Диккимоу или Не так краткое введение в LaTeX ) и о написании таблиц с помощью LaTeX ( вики / таблицы ).
- Чтение документации пакета также очень помогает.
Что касается вашего реального стола:
- Теперь очевидно, что вам не нужно, чтобы все столбцы имели одинаковую ширину, поэтому вам не нужно иметь все
X
типы. - Столбцы
X
автоматически разбивают текст в ячейках на несколько строк, поэтому нет необходимости использовать\makecell
внутри с ручным разрывом текста. Более того, их использование создает ваши проблемы, потому что ваш ручной разбиение текста pf не подходит - следовательно, текст выливается из таблицы. - Числа во втором столбце (на мой вкус) лучше, если выровнены по правому краю и по центру столбца. Это можно сделать, используя
S
тип столбца, определенный вsiunitx
пакете. - Использование
siunitx
пакета требует переопределения спецификатора столбцов, определенного вcellspace
пакете, с значения по умолчанию наS
какой-либо другой. В MWE ниже я выбираюO
это.
Предлагаемый MWE для этой новой таблицы:
\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}

Вот что можно сделать с {NiceTabular}
оф 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}
Вам потребуется несколько компиляций (т.к. nicematrix
используются узлы PGF / Tikz).

