具有不同宽度单元格的表格

具有不同宽度单元格的表格

我正在尝试用 LaTeX 排版 Word 文档 - 主要是为了得到我想要的结果,而不是让 Word(或 LibreOffice)替我做决定。我目前的困难在于几个表格。其中一个表格的行中单元格宽度不同:

-----------
|  |      |
-----------
|      |  |
-----------
|      |  |
-----------
|  |      |
-----------

我可以使用多列来实现这种效果,或者使用 TiKZ 来实现,但我本以为会有更简单的方法。事实上,我的一张表格非常规则,除了一个单元格被分成两部分,就像第二行一样:

-------------
|   |       |
-------------
|   |   |   |
-------------
|   |       |
-------------
|   |       |
-------------

最好的方法是什么:多列表格(或其变体之一)、TiKZ 还是其他?

答案1

此方法使用\vlyn(在 周围添加\tabcolsep间隙\vline)在您想要的位置放置一个假列分隔符。使用实际列和假列的合理组合,您应该能够实现您的目标。

\documentclass{article}
\newcommand\vlyn{%
  \hspace{\tabcolsep}%
  \vline%
  \hspace{\tabcolsep}%
}
\begin{document}
\begin{tabular}{|c|}
\hline
a\vlyn bcd\\
\hline
abc\vlyn d\\
\hline
abc\vlyn d\\
\hline
a\vlyn bcd\\
\hline
\end{tabular}

\begin{tabular}{|c|c|}
\hline
a& bcd\\
\hline
a& bcd\\
\hline
a& bc\vlyn d\\
\hline
a& bcd\\
\hline
\end{tabular}
\end{document}

在此处输入图片描述

答案2

我尝试使用 cals 表创建表格。虽然不支持可变的列数和大小,但使用 hack 可以工作:

可变列数

\documentclass{article}
\usepackage{cals}
\begin{document}
\makeatletter
\def\cals@framers@width{.4pt}

Table 1\par\smallskip
\begin{calstable}
\colwidths{{1cm}{2cm}}
\brow \cell{a} \cell{bcd} \erow
\colwidths{{2cm}{1cm}}
\brow \cell{abc} \cell{d} \erow
\brow \cell{abc} \cell{d} \erow
\colwidths{{1cm}{2cm}}
\brow  \cell{a} \cell{bcd} \erow
\end{calstable}

\bigskip

Table 2\par\smallskip
\begin{calstable}
\colwidths{{1cm}{2cm}}
\brow \cell{a} \cell{bcd} \erow
\brow \cell{a} \cell{bcd} \erow
\colwidths{{1cm}{1cm}{1cm}}
\brow \cell{a} \cell{bc} \cell{d} \erow
% hack displays and forgets the row separation above
\lastrule \let\cals@last@context=n
\colwidths{{1cm}{2cm}}
\brow \cell{a} \cell{bcd} \erow
\end{calstable}


\end{document}

相关内容