![单元格内有单元格/框的复杂表格](https://linux22.com/image/309934/%E5%8D%95%E5%85%83%E6%A0%BC%E5%86%85%E6%9C%89%E5%8D%95%E5%85%83%E6%A0%BC%2F%E6%A1%86%E7%9A%84%E5%A4%8D%E6%9D%82%E8%A1%A8%E6%A0%BC.png)
我目前正在开始使用 LaTeX 技术并偶然发现了这个问题,我已经阅读了 CTAN 上的几本表格手册但没有成功。
我正在尝试创建这样的表格:
+---------+--------+--------+--------+
| |114| |100| |92 | |101|
| |___| |___| |___| |___|
| | | | |
| 113 | 99 | 84 | 97 |
+---------+--------+--------+--------+
| |114| |100| |92 | |101|
| |___| |___| |___| |___|
| | | | |
| 113 | 99 | 84 | 97 |
+---------+--------+--------+--------+
| |114| |100| |92 | |101|
| |___| |___| |___| |___|
| | | | |
| 113 | 99 | 84 | 97 |
+---------+--------+--------+--------+
是否有任何现有的包可以实现此结构?如果没有,我正在考虑嵌套行或类似的东西,尽管我还不确定。
答案1
使用 Plain TeX 的解决方案,用于娱乐、学习并展示基本构建块的可能性:
\def\widest{000}
\def\uv{\unskip\vrule}
\def\bx#1#2{\vbox{%
\offinterlineskip%
\halign{\ \hfil## &##&\ \hfil## \cr
\hphantom{\widest}&&\hphantom{\widest}\cr
&\vrule\strut& #2\cr
\omit&\hrulefill&\omit\hrulefill\cr
#1&\strut&\cr}
}}
\def\bxx{
\bx{113}{114} &
\bx{99}{100} &
\bx{84}{92} &
\bx{97}{101}\cr
\noalign{\hrule}
}
{\offinterlineskip
\halign{\vrule\strut \hfill #\uv & #\uv & #\uv & #\uv\cr
\noalign{\hrule}
\bxx\bxx\bxx
}}\bye
答案2
据我所知,没有这样的包,但可以通过基本设置、使用\multicolumn
和\cline
宏来实现。
\documentclass[twoside]{book}
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\usepackage{blindtext}
\begin{document}
\large
\begin{tabular}{|*{8}{L{1cm}|}}
\hline
& 114 & & 100 & & 92 & & 101 \tabularnewline
& & & & & & & \tabularnewline
\cline{2-2} \cline{4-4} \cline{6-6} \cline{8-8}
\multicolumn{2}{|l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{}\tabularnewline
\multicolumn{2}{|l|}{113} & \multicolumn{2}{l|}{99} & \multicolumn{2}{l|}{84} & \multicolumn{2}{l|}{97} \tabularnewline
\hline
& 114 & & 100 & & 92 & & 101 \tabularnewline
& & & & & & & \tabularnewline
\cline{2-2} \cline{4-4} \cline{6-6} \cline{8-8}
\multicolumn{2}{|l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{}\tabularnewline
\multicolumn{2}{|l|}{113} & \multicolumn{2}{l|}{99} & \multicolumn{2}{l|}{84} & \multicolumn{2}{l|}{97} \tabularnewline
\hline
& 114 & & 100 & & 92 & & 101 \tabularnewline
& & & & & & & \tabularnewline
\cline{2-2} \cline{4-4} \cline{6-6} \cline{8-8}
\multicolumn{2}{|l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{}\tabularnewline
\multicolumn{2}{|l|}{113} & \multicolumn{2}{l|}{99} & \multicolumn{2}{l|}{84} & \multicolumn{2}{l|}{97} \tabularnewline
\hline
\end{tabular}
% Now with booktabs features
\begin{tabular}{|*{8}{L{0.5cm}|}}
\toprule
& 114 & & 100 & & 92 & & 101 \tabularnewline
& & & & & & & \tabularnewline
\cmidrule{2-2} \cmidrule{4-4} \cmidrule{6-6} \cmidrule{8-8}
\multicolumn{2}{|l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{}\tabularnewline
\multicolumn{2}{|l|}{113} & \multicolumn{2}{l|}{99} & \multicolumn{2}{l|}{84} & \multicolumn{2}{l|}{97} \tabularnewline
\hline
& 114 & & 100 & & 92 & & 101 \tabularnewline
& & & & & & & \tabularnewline
\cmidrule{2-2} \cmidrule{4-4} \cmidrule{6-6} \cmidrule{8-8}
\multicolumn{2}{|l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{}\tabularnewline
\multicolumn{2}{|l|}{113} & \multicolumn{2}{l|}{99} & \multicolumn{2}{l|}{84} & \multicolumn{2}{l|}{97} \tabularnewline
\hline
& 114 & & 100 & & 92 & & 101 \tabularnewline
& & & & & & & \tabularnewline
\cmidrule{2-2} \cmidrule{4-4} \cmidrule{6-6} \cmidrule{8-8}
\multicolumn{2}{|l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{} & \multicolumn{2}{l|}{}\tabularnewline
\multicolumn{2}{|l|}{113} & \multicolumn{2}{l|}{99} & \multicolumn{2}{l|}{84} & \multicolumn{2}{l|}{97} \tabularnewline
\hline
\end{tabular}
\normalsize
\end{document}
答案3
\documentclass{scrartcl}
\usepackage{tikz}
\tikzset{/bowlinggrid/.cd,
box width/.store in=\bgridlargewidth,box width=3cm,
box height/.store in=\bgridlargeheight,box height=2.5cm,
small width/.store in=\bgridsmallwidth,small width=1.2cm,
small height/.store in=\bgridsmallheight,small height=1cm,
columns/.store in=\bgridcolnumber,columns=4} % I cannot get /.initial= to work
\newcommand*\bowlinggrind[2][]
{%
\begin{tikzpicture}
\tikzset{/bowlinggrid/.cd,#1}
\foreach \N/\n [count=\cnt] in {#2}
{
\pgfmathsetmacro\currcolnumber{int(mod(\cnt-1,\bgridcolnumber))}
\pgfmathsetmacro\currrownumber{int(ceil(\cnt/\bgridcolnumber))}
\draw
({\currcolnumber*\bgridlargewidth},{-\currrownumber*\bgridlargeheight})
node [above right] {\N}
rectangle ++(\bgridlargewidth,\bgridlargeheight)
rectangle ++(-\bgridsmallwidth,-\bgridsmallheight)
node [above right] {\n};
}
\end{tikzpicture}%
}
\begin{document}
\begin{center}
\bowlinggrind
{113/114,99/100,84/92,97/101,
113/114,99/100,84/92,97/101,
113/114,99/100,84/92,97/101,
113/114,99/100,84/92,97/101}
\end{center}
\begin{center}
\bowlinggrind[box width=1.8cm,box height=1.3cm,small width=.9cm,small height=.5cm]
{113/114,99/100,84/92,97/101,
113/114,99/100,84/92,97/101,
113/114,99/100,84/92,97/101,
113/114,99/100,84/92,97/101}
\end{center}
\end{document}
答案4
值得一提的是,这种效果在 ConTeXt 中相对容易实现。请注意内容和演示的清晰分离。
\startsetups[cellular]
\setupTABLE[frame=off, align={middle,lohi}, offset=0.5em]
\setupTABLE[even] [odd][frame=on, offset=0.25em]
\setupTABLE[even][even][rightframe=on, bottomframe=on]
\setupTABLE[odd] [even][leftframe=on, bottomframe=on]
\setupTABLE[odd] [odd][leftframe=on, topframe=on]
\stopsetups
\starttext
\startTABLE[setups=cellular]
\NC \NC 114 \NC \NC 100 \NC \NC 92 \NC \NC 101 \NC \NR
\NC 113 \NC \NC 99 \NC \NC 84 \NC \NC 97 \NC \NC \NR
\NC \NC 114 \NC \NC 100 \NC \NC 92 \NC \NC 101 \NC \NR
\NC 113 \NC \NC 99 \NC \NC 84 \NC \NC 97 \NC \NC \NR
\NC \NC 114 \NC \NC 100 \NC \NC 92 \NC \NC 101 \NC \NR
\NC 113 \NC \NC 99 \NC \NC 84 \NC \NC 97 \NC \NC \NR
\stopTABLE
\stoptext