我想在 LaTeX 中制作一个复式表。
这是我想要得到的结果:
我找到了线索这里:
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{center}
\begin{tabular}{ c || l | r | c }
& \multicolumn{3}{c}{Columns} \\ \hline \hline
\multirow{3}{*}{Rows}
& A1 & B1 & C1 \\ \cline{2-4}
& A222 & B22 & C2 \\ \cline{2-4}
& A3 & B333 & C33
\end{tabular}
\end{center}
\end{document}
我设法得到了部分解决方案:
\begin{document}
\begin{center}
\begin{tabular}{ l || r | c }
A1 & B1 & C1 \\ \hline \hline
A222 & B22 & C2 \\ \hline
A3 & B333 & C33
\end{tabular}
\end{center}
\end{document}
但是,它并不能解决我所有的问题。是否有可能得到正方形单元格,其中所有内容都位于单元格的中心?我找到了其他部分解决方案这里但我根本不了解 tikz。矩阵环境可能不适合我的需求,因为我想避免外边框,而且我没有找到任何使用双线将行标题与内部单元格分隔开的解决方案。
答案1
我使用普通的 TikZ。您可以根据需要微调所有内容。特别是double distance
调整双线内的距离。
关于缩放,我建议两种方式。第一种是使用 缩放整个图片[scale=.8]
;文本不会受到影响。
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=.8]
\draw (0,0)--(1,-1) (0,-2)--(3,-2) (2,0)--(2,-3);
\draw[double,double distance=.5pt] (0,-1)--(3,-1) (1,0)--(1,-3) ;
\path[magenta]
(1.5,-.5) node{2} ++(0:1) node{3}
(.5,-1.5) node{4} ++(0:1) node{8} +(0:1) node{12}
(.5,-2.5) node{5} ++(0:1) node{10} +(0:1) node{15}
;
\end{tikzpicture}
\end{document}
第二种方法是仅缩放节点nodes={scale=.6}
;线路不会受到影响。
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0)--(1,-1) (0,-2)--(3,-2) (2,0)--(2,-3);
\draw[double,double distance=.5pt] (0,-1)--(3,-1) (1,0)--(1,-3);
\path[teal,nodes={scale=.6}]
(1.5,-.5) node{2} ++(0:1) node{3}
(.5,-1.5) node{4} ++(0:1) node{8} +(0:1) node{12}
(.5,-2.5) node{5} ++(0:1) node{10} +(0:1) node{15}
;
\end{tikzpicture}
\end{document}
答案2
就像我在评论中说的那样,我不是这个软件包的专家nicematrix
,所以我没有给出完整的相应答案。无论如何,这是一个开始,肯定有人(可能是 François 本人)会来改进这个解决方案。
\documentclass[12pt]{article}
\usepackage{nicematrix}
\begin{document}
\renewcommand{\arraystretch}{2}
$\begin{NiceTabular}{W{c}{1cm}|W{c}{1cm}|W{c}{1cm}}
\diagbox{}{}& 2 & 3 \\
\hline \hline
4 & 8 & 12 \\
\hline
5 & 10 & 15
\end{NiceTabular}$
\end{document}
主要问题是,您可能认为在表格声明中添加一条垂直线就可以了,但这样做效果并不好:
$\begin{NiceTabular}{W{c}{1cm}||W{c}{1cm}|W{c}{1cm}}