Booktabs 和 longtable - 行与行之间的奇怪空格

Booktabs 和 longtable - 行与行之间的奇怪空格

我需要将一些水平表格线加粗,因此我使用了 booktabs 包。但是,如果我使用\toprule命令将线条加粗,我会得到奇怪的结果 - 粗线和垂直表格线之间有一些空格(请查看屏幕)

生成表格的代码如下所示

    \begin{longtable}{|c|c|c|c|c|c|c|c|c|}
\caption{Wyniki rozpoznawania obrazów dla obrazu zapytania 022\_0007.jpg oraz kategorii $budda$}
\label{tab:budda}
\\
\toprule
\multicolumn{2}{|c|}{\textbf{Obraz zapytanie}} & \multicolumn{3}{|c|}{\textbf{Obraz przetwarzany}} & \multicolumn{4}{|c|}{\textbf{Wynik}} \\
\toprule
\textbf{Nazwa} & \textbf{N} & \textbf{Katalog} & \textbf{Nazwa} & \textbf{N} & \textbf{ $J_{b}$} & \textbf{$J_{a}$} & \textbf{Czas[s]} & \textbf{Gęstość} \\ \hline
...
..
..
\end{longtable}

PS 可以将水平线加粗吗?

编辑我决定辞去 booktabs 的职务,并使用了此处提供的解决方案 LaTeX 表格:如何使水平线变粗或变细(通常为 \hline)?(pluton 回答)现在我有了一条粗水平线,我也设法使垂直线变粗。然而问题是水平线的长度。我的表格的长度比页面的长度(从一个边距到另一个边距)稍大,我认为它使水平线看起来像这样 在此处输入图片描述

是否有可能以某种方式调整此命令

    \def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline} 

这样就可以调整加粗线的长度以适应表格的长度

这是可编译的代码片段

\documentclass[a4paper,12pt]{mwrep}

\usepackage[cp1250]{inputenc}
\usepackage[left=3.0cm,right=3cm,top=3.0cm,bottom=3.0cm]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{graphicx}
\usepackage{setspace}
 \usepackage{algorithmic}
\usepackage{tabularx}
\usepackage{longtable}

\usepackage[centerlast]{caption}
\usepackage{multirow}
\usepackage[section] {placeins}
\usepackage{booktabs}
\linespread{1.3}
\makeatletter
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline}
\makeatother
\begin{document}
\chapter{somechapter}
\section{somesection}
\small
\begin{longtable}{!{\vrule width 2pt} c!{\vrule width 2pt} c!{\vrule width 2pt} c!{\vrule width 2pt} c!{\vrule width 2pt} c!{\vrule width 2pt} c!{\vrule width 2pt} c!{\vrule width 2pt} c!{\vrule width 2pt} c!{\vrule width 2pt} }

\caption{something something somethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomething}
\label{tab:budda}
\\ \hlinewd{2pt}
\multicolumn{2}{!{\vrule width 2pt}c!{\vrule width 2pt}}{\textbf{Query image }} & \multicolumn{3}{c!{\vrule width 2pt}}{\textbf{Processed image}} & \multicolumn{4}{c!{\vrule width 2pt}}{\textbf{Outcome}} \\ \hlinewd{2pt}

\textbf{Name} & \textbf{N} & \textbf{Directory} & \textbf{Name} & \textbf{N} & \textbf{ $J_{b}$} & \textbf{$J_{a}$} & \textbf{time[s]} & \textbf{Density} \\ \hlinewd{2pt}
022\_0007.jpg   &   193 &   budda   &   22\_0007.jpg    &   193 &   25512.9 &   156.1   &   288.5   &   0.73    \\  \hline  
\end{longtable}
\end{document}

答案1

我想我终于找到了让 booktabs 和 hrules 工作的解决方案,这就是为什么我要回答我自己的问题,我创建了自己的命令

\newcommand{\mytoprule}{\specialrule{2pt}{0em}{0em}}
\newcommand{\mybottomrule}{\specialrule{2pt}{0em}{0em}} 

现在一切看起来都很好。

答案2

对于你的第二个问题:

\midrule[width]一个可选的线宽参数,并且至少应该在线的上方和下方留出相同的空间。

使用该命令,\cmidrule[width]{columns}您可以添加一条具有定义宽度且跨越并非所有列的水平线。

booktabs 文档了解更多信息。

据我所知,您不能轻易抑制垂直空间,因为它们是“哲学”的一部分booktabs(根本不使用垂直线),并且它们造成了toprule和之间的差异bottomrule

具有非常粗线条的中线的线条宽度示例:

\documentclass{article}

\usepackage{longtable, booktabs}

\begin{document}
\begin{longtable}{|c|c|c|c|c|c|c|c|c|}
\caption{Wyniki rozpoznawania obrazów dla obrazu zapytania 022\_0007.jpg oraz kategorii $budda$}
\label{tab:budda}
\\
\toprule
\multicolumn{2}{|c|}{\textbf{Obraz zapytanie}} & \multicolumn{3}{|c|}{\textbf{Obraz przetwarzany}} & \multicolumn{4}{|c|}{\textbf{Wynik}} \\
\toprule
\textbf{Nazwa} & \textbf{N} & \textbf{Katalog} & \textbf{Nazwa} & \textbf{N} & \textbf{ $J_{b}$} & \textbf{$J_{a}$} & \textbf{Czas[s]} & \textbf{Gęstość} \\ \hline
…\\
new line\\
    \midrule[2 pt]
new line\\
\cmidrule[5pt]{1-5}\\
..
..
\end{longtable}

\end{document}

在此处输入图片描述

答案3

通过使用

\renewcommand{\arrayrulewidth}{2pt}%

您可以大大提高代码的可读性并产生所需的效果(当然,假设所有规则(垂直和水平)的宽度相同)。优点是它也可以与 一起使用longtable

\documentclass[a4paper,12pt]{mwrep}
...
\begin{document}
\renewcommand{\arrayrulewidth}{2pt}
\chapter{somechapter}
\section{somesection}
\small
\begin{longtable}{|c|c|c|c|c|c|c|c|c|}
\caption{something something somethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomething}
\label{tab:budda}
\\ \hline
\multicolumn{2}{|c|}{\textbf{Query image }} & \multicolumn{3}{c|}{\textbf{Processed image}} & \multicolumn{4}{c|}{\textbf{Outcome}} \\ \hline
\textbf{Name} & \textbf{N} & \textbf{Directory} & \textbf{Name} & \textbf{N} & \textbf{ $J_{b}$} & \textbf{$J_{a}$} & \textbf{time[s]} & \textbf{Density} \\ \hline
022\_0007.jpg   &   193 &   budda   &   22\_0007.jpg    &   193 &   25512.9 &   156.1   &   288.5   &   0.73    \\  \hline  
\end{longtable}
\end{document}

设置表格规则厚度/宽度

相关内容