表格中的垂直线太长

表格中的垂直线太长

好的,我看这个代码太久了,需要一些新的视角和想法。

问题:为什么我的 LaTeX 桌子上的垂直线太长?

请注意,我在在线编译器上没有遇到上述代码的任何问题,例如http://docs.latexlab.org/docs

我正在使用 texi2pdf 在 Mac OSX Snow Leopard 上编译我的文档。

代码:

\begin{table}[h]
    \begin{tabular}{|l|l|l|l|l|l|l|l|l|l|} 
    \hline
        ContainsPrize & \multicolumn{3}{|c|}{A} & \multicolumn{3}{|c|}{B} & \multicolumn{3}{|c|}{C} \\ \hline
        MyChoice      & A   & B & C & A & B   & C & A & B & C   \\ \hline
        openA         & 0   & 0 & 0 & 0 & 0.5 & 1 & 0 & 1 & 0.5 \\
        openB         & 0.5 & 0 & 1 & 0 & 0   & 0 & 1 & 0 & 0.5 \\
        openC         & 0.5 & 1 & 0 & 1 & 0.5 & 0 & 0 & 0 & 0   \\
    \hline
    \end{tabular}
    \caption{A nice caption text here...}
 \end{table}

生成:

带有超大线条的表格

有什么想法吗?编译器有问题?有其他选择吗?

答案1

这很棘手。您拥有的实际上是一个三维表,您想将其表示为页面上的二维图像。有 3 个输入值和 3³ = 27 个输出值。

我认为你想要的是奥卡姆剃刀......

  • 右对齐第一列
  • 用额外的水平空间填充内列(3 列一组)
  • 把 0.5 写成分数 ½
  • 加入一些双击规则(我知道这听起来很疯狂,因为它是一种反向简化)
  • 然后尽可能地删除并查看会导致什么结果...

例如:

您甚至可以尝试完全删除垂直规则并将其替换为垂直空格:

也许甚至可以将零重写为破折号,如果数据仍然有意义的话......

笔记:我不确定后两种形式是否更清晰,尽管它们对于眼睛的处理来说不那么复杂。原因是,如前所述,这本质上是一个具有 27 个值的三维表格。最后两种形式(仅使用水平线)使维度变得模糊,因为它们引导眼睛从左到右扫描。将其与第二种形式进行比较和对比,其中双划线用于将三个 3x3 网格与上方和左侧的标签分开。

虽然我一般不喜欢垂直线和双线,但我认为第二种形式实际上可能是这里显示的五种形式中最清晰的。我很想听听你的想法。

无论如何,以下是上述样本的 LaTeX 源代码。

 \documentclass{article}
 \usepackage{booktabs}
 \usepackage{nicefrac}
 \newcommand{\half}{\nicefrac{1}{2}}
 \begin{document}

 \begin{tabular}{|r||ccccc|ccccc|ccccc|}
 \hline
 ContainsPrize &&& A &&&&& B &&&&& C &&\\
 \hline
 MyChoice && A & B & C &&& A & B & C &&& A & B & C &\\
 \hline\hline
 openA &&     0 & 0 & 0 &&& 0 & \half & 1 &&& 0 & 1 & \half &\\
 openB && \half & 0 & 1 &&& 0 &     0 & 0 &&& 1 & 0 & \half &\\
 openC && \half & 1 & 0 &&& 1 & \half & 0 &&& 0 & 0 &     0 &\\
 \hline
 \end{tabular}

 \vskip 3em

 \begin{tabular}{r||ccccc|ccccc|ccccc}
 ContainsPrize &&& A &&&&& B &&&&& C &&\\
 \hline
 MyChoice && A & B & C &&& A & B & C &&& A & B & C &\\
 \hline\hline
 openA &&     0 & 0 & 0 &&& 0 & \half & 1 &&& 0 & 1 & \half &\\
 openB && \half & 0 & 1 &&& 0 &     0 & 0 &&& 1 & 0 & \half &\\
 openC && \half & 1 & 0 &&& 1 & \half & 0 &&& 0 & 0 &     0 &\\
 \end{tabular}

 \vskip 3em

 \begin{tabular}{r|ccccc|ccccc|ccccc}
 ContainsPrize &&& A &&&&& B &&&&& C &&\\
 \hline
 MyChoice && A & B & C &&& A & B & C &&& A & B & C &\\
 \hline
 openA &&     0 & 0 & 0 &&& 0 & \half & 1 &&& 0 & 1 & \half &\\
 openB && \half & 0 & 1 &&& 0 &     0 & 0 &&& 1 & 0 & \half &\\
 openC && \half & 1 & 0 &&& 1 & \half & 0 &&& 0 & 0 &     0 &\\
 \end{tabular}

 \vskip 4em

 \setlength{\tabcolsep}{.5em}
 \begin{tabular}{r c ccc c ccc c ccc}
 \toprule
 ContainsPrize &~~~~~~&~ & A & ~&~~~& ~ &     B & ~&~~~& ~ & C &     ~\\
 \midrule
 MyChoice      &&      A & B & C  &&  A &     B & C  &&  A & B &     C\\
 \toprule
 openA         &&      0 & 0 & 0  &&  0 & \half & 1  &&  0 & 1 & \half\\
 openB         &&  \half & 0 & 1  &&  0 &     0 & 0  &&  1 & 0 & \half\\
 openC         &&  \half & 1 & 0  &&  1 & \half & 0  &&  0 & 0 &     0\\
 \bottomrule
 \end{tabular}

 \vskip 4em

 \setlength{\tabcolsep}{.5em}
 \begin{tabular}{r c ccc c ccc c ccc}
 \toprule
 ContainsPrize &~~~~~~&~ & A & ~&~~~& ~ &     B & ~&~~~& ~ & C &     ~\\
 \midrule
 MyChoice      &&      A & B & C  &&  A &     B & C  &&  A & B &     C\\
 \toprule
 openA         &&     -- & -- & --  && -- & \half &  1 && -- &  1 & \half\\
 openB         &&  \half & -- &  1  && -- &    -- & -- &&  1 & -- & \half\\
 openC         &&  \half &  1 & --  &&  1 & \half & -- && -- & -- &    --\\
 \bottomrule
 \end{tabular}

 \end{document}

答案2

我遇到了完全相同的问题并使用以下方法解决了它

\hline \end{tabular}

代替

\hline
\end{tabular}

我还必须使用

\begin{tabular}{|c|c|c|c|c|c|} \hline

在环境的开始处。

答案3

我遇到了类似的问题,是由绘制最后一条水平线引起的:\hline{}

我通过删除括号解决了这个问题(IE通过输入\hline而不是\hline{})。

相关内容