В настоящее время я начинаю использовать технологию 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