创建表时列分区边框放错位置

创建表时列分区边框放错位置

我正在用 LaTeX 创建表格。一切都按照脚本进行。但是,有一个小问题。如果仔细观察表格结构,您会发现“话语”和“单词”之间的列边界与其下方的列边界相比略有偏移。

这是什么原因?我正在上传 LaTeX 代码以及它生成的表格

表格图像

相应的 LaTeX 代码是:-

\begin{table}[h!]
\centering
\setlength{\arrayrulewidth}{.2mm}
\setlength{\tabcolsep}{7pt}
\renewcommand{\arraystretch}{1.5}
\begin{tabulary}{0.8\textwidth}{ |p{1.3cm}|p{1.2cm}|p{.6cm}|p{1.2cm}|p{.6cm}|}
\hline
\multirow{2}{*}{\textbf{Data Set}} & \multicolumn{2}{c}{\textbf{Utterances}} & \multicolumn{2}{|c|}
{\textbf{Words}} \\  \cline{2-5}
& \textbf{No.of utterances} & \textbf{Hours of Data} & \textbf{Word Count} & \textbf{Distinct Words} \\
\hline
\textbf{Training Set} & -  & - & - &- \\
\hline
\textbf{Development Set} & - & -  & - & - \\
\hline
\textbf{Test Set} & - & - & - & - \\
\hline
\end{tabulary}
\newline
\begin{center}
\caption{dataset available for experiment}
\end{center}
\end{table}

答案1

原因就在注释的行中here。我只能猜测您使用的软件包,因此结果并不相同,特别是那里没有足够的空间来输入条目。请在将来制作完整的 MWE(请参阅常规帮助)。

原因是,在您的情况下,两条垂直线都属于下一列,而在前一节中,它们属于不同的列,因此线不连续。

\documentclass{article}
\usepackage{tabulary}
\usepackage{multirow}

\begin{document}

\begin{table}[h!]
\centering
\setlength{\arrayrulewidth}{.2mm}
\setlength{\tabcolsep}{7pt}
\renewcommand{\arraystretch}{1.5}
\begin{tabulary}{0.8\textwidth}{ |p{1.3cm}|p{1.2cm}|p{.6cm}|p{1.2cm}|p{.6cm}|}
\hline
%\multirow{2}{*}{\textbf{Data Set}} & \multicolumn{2}{c}{\textbf{Utterances}} & \multicolumn{2}{|c|}
\multirow{2}{*}{\textbf{Data Set}} & \multicolumn{2}{c|}{\textbf{Utterances}} & \multicolumn{2}{c|} % here - PS
{\textbf{Words}} \\  \cline{2-5}
& \textbf{No.of utterances} & \textbf{Hours of Data} & \textbf{Word Count} & \textbf{Distinct Words} \\
\hline
\textbf{Training Set} & -  & - & - &- \\
\hline
\textbf{Development Set} & - & -  & - & - \\
\hline
\textbf{Test Set} & - & - & - & - \\
\hline
\end{tabulary}
\newline
\begin{center}
\caption{dataset available for experiment}
\end{center}
\end{table}

\end{document}

在此处输入图片描述

答案2

Przemysław Scherwentke 的回答解释了问题的根源。因此,我更关注与你的问题无关的话题,例如表格设计:

  • 您使用tabulary表环境,为什么不使用它的列类型?在第一张图片中,您可以看到结果,使用了LC列类型tabulary
  • 表格中垂直规则未对齐的问题可以简单地消除,根本不使用它们。例如,使用booktabs包中的水平规则并使用tabularx表格环境,您可以获得表格 (2),在我看来,它看起来更好。在这里您可以减少\arraystretch1.2
  • 我不知道你为什么规定表格宽度为0.8\textwidth。如果你将其宽度更改为文本宽度,表格会变得更好看(符合我的口味)(表格 3)

在此处输入图片描述

一位 MWE 表示:

\documentclass{article}
\usepackage{booktabs, makecell, tabularx, tabulary}
\renewcommand\tabularxcolumn[1]{b{#1}}

\usepackage{showframe}
\renewcommand*\ShowFrameColor{\color{green}}

\begin{document}
    \begin{table}[h!]
    \centering
\setlength{\arrayrulewidth}{.2mm}
    \setlength{\tabcolsep}{4pt}
    \renewcommand{\arraystretch}{1.5}
\begin{tabulary}{0.8\textwidth}{|L|*{4}{C|}}
    \hline
    &   \multicolumn{2}{c|}{\textbf{Utterances}} 
        &   \multicolumn{2}{c|}{\textbf{Words}}     \\  \cline{2-5}
\textbf{Data Set}
    &   \textbf{No. of utterances} 
        &   \textbf{Hours of Data} 
            &   \textbf{Word Count} 
                &   \textbf{Distinct Words}         \\  \hline
\textbf{Training Set}       & - & - & - & -         \\  \hline
\textbf{Development Set}    & - & - & - & -         \\  \hline
\textbf{Test Set}           & - & - & - & -         \\  \hline
\end{tabulary}
\caption{Dataset available for experiment (1)}
    \end{table}

    \begin{table}[h!]
\newcolumntype{C}{>{\centering\arraybackslash}X}
    \centering
    \setlength{\tabcolsep}{4pt}
    \renewcommand{\arraystretch}{1.2}
\begin{tabularx}{0.8\textwidth}{p{0.2\linewidth}*{4}{C}}
    \toprule
    &   \multicolumn{2}{c}{\textbf{Utterances}}
        &   \multicolumn{2}{c}{\textbf{Words}}     \\  
    \cmidrule(lr){2-3}\cmidrule(lr){4-5}
\textbf{Data Set}
    &   \textbf{No. of utterances}
        &   \textbf{Hours of Data}
            &   \textbf{Word Count}
                &   \textbf{Distinct Words}         \\  
    \midrule
\textbf{Training Set} & - & - & - & -               \\
\textbf{Develop. Set} & - & - & - & -               \\
\textbf{Test Set}     & - & - & - & -               \\  
    \bottomrule
\end{tabularx}
\caption{Dataset available for experiment (2)}
    \end{table}

    \begin{table}[h!]
\newcolumntype{C}{>{\centering\arraybackslash}X}
    \centering
    \setlength{\tabcolsep}{4pt}
    \renewcommand{\arraystretch}{1.2}
\begin{tabularx}{\textwidth}{l*{4}{C}}
    \toprule
    &   \multicolumn{2}{c}{\textbf{Utterances}}
        &   \multicolumn{2}{c}{\textbf{Words}}     \\
    \cmidrule(lr){2-3}\cmidrule(lr){4-5}
\textbf{Data Set}
    &   \textbf{No. of utterances}
        &   \textbf{Hours of Data}
            &   \textbf{Word Count}
                &   \textbf{Distinct Words}         \\
    \midrule
\textbf{Training Set}       & - & - & - & -         \\
\textbf{Development Set}    & - & - & - & -         \\
\textbf{Test Set}           & - & - & - & -         \\
    \bottomrule
\end{tabularx}
\caption{Dataset available for experiment (3)}
    \end{table}
\end{document}

相关内容