好的,我看这个代码太久了,需要一些新的视角和想法。
问题:为什么我的 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{}
)。