我正在尝试用 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}