
Как мне сделать стол из латекса, как на следующей картинке?
решение1
Возможное решение. Я предлагаюне используя вертикальные линии, а скорееbooktabs
пакет. Для горизонтального выравнивания 20
вы можете использоватьmultirow
пакет, в то время как для вертикального выравнивания вы можете вычислить ширину наибольшей записи первых столбцов с помощьюcalc
упаковка.
\documentclass{article}
\usepackage{booktabs,calc,multirow}
\newlength\wdx% for vertical alignment
\setlength{\wdx}{\widthof{66}}
\begin{document}
\begin{table}
\centering
\addtolength{\tabcolsep}{10pt}% increase distance between cells
\begin{tabular}{cccccc}
\toprule
\textsf{x} & \multicolumn{5}{c}{\textsf{y}}\\
\cmidrule(l{\wdx}r{\wdx}){1-1}\cmidrule(l){2-6}
10 & 22 & 33 \\
\multirow{2}[2]{\wdx}{20} & 45 & 34 & 88 & 77 & 80 \\
& 34 & 67\\
66 & 12 & 10 & 45 & 66\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
решение2
Если вам необходимо использовать вертикальную линейку в вашей таблице, я бы посоветовал вам также вставить «распорки», чтобы получить лучшее вертикальное расстояние над и под горизонтальными линиями, нарисованными \hline
. В целом, однако, я считаю предпочтительным строить таблицыбезвертикальные линейки и использовать booktabs
пакет для получения хорошо разнесенных горизонтальных линий, нарисованных с помощью \toprule
, \midrule
, и т. д.
Чтобы выровнять по вертикали вторую запись в первом столбце, используйте \multirow
инструкцию.
Вы также можете автоматизировать задачу выделения первого столбца жирным шрифтом.
Наконец, если вы хотите использовать пакет tabularx
, например, для достижения заданной ширины таблицы и для центрирования ее содержимого (что, судя по всему, и происходит на опубликованном вами снимке экрана), вам также потребуется определить специальную, «центрированную» версию типа столбца, X
предоставляемую пакетом tabularx
.
Первая таблица ниже использует tabular
среду, а вторая использует tabularx
среду с общей шириной, установленной на 0.7\textwidth
. Вторая таблица также установлена в sans-serif.
\documentclass[10pt,a4paper]{article}
\usepackage{multirow,array}
% define "struts" as suggested by Claudio Beccari in
% a piece in TeX and TUG News, Vol. 2, 1993.
\newcommand\T{\rule{0pt}{2.6ex}} % = `top' strut
\newcommand\B{\rule[-0.9ex]{0pt}{0pt}} % = `bottom' strut
\newcommand\TB{\T\B} % top-and-bottom strut
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{tabular}{>{\bfseries}c|ccccc}
x & \multicolumn{5}{c}{\bfseries y\B}\\
\hline
10 & 22 & 33\TB\\
\hline
\multirow{2}{*}{20} & 45 & 34 & 88 & 77 & 80\T\\
& 34 & 67\B \\
\hline
66 & 12 & 10 & 45 & 66\T\\
\end{tabular}
\bigskip
\textsf{ % switch to sans-serif for the second table
\begin{tabularx}{0.7\textwidth}{>{\bfseries}C|CCCCC}
x & \multicolumn{5}{c}{\bfseries y\B}\\
\hline
10 & 22 & 33\TB\\
\hline
\multirow{2}{*}{20} & 45 & 34 & 88 & 77 & 80\T\\
& 34 & 67\B \\
\hline
66 & 12 & 10 & 45 & 66\T\\
\end{tabularx}}
\end{document}
решение3
Решение, использующее, в дополнение к array
, только makecell
пакет. Одним из преимуществ является то, что можно иметь гораздо менее плотные строки с \makecell*
командой (она добавляет\jot
симметричновверху и внизу ячейки, в отличие от \renewcommand{\arraystretch}{…}
. Другое — возможность изменять толщину hlines (как booktabs
, но сохраняя возможность использовать вертикальные линии).
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{array, makecell}
\begin{document}
\begin{table}
\centering\sffamily
\addtolength{\tabcolsep}{10pt}% increase distance between cells
\begin{tabular}{c!{\vline width1pt}*{5}{c}}
\makecell*{x} & \multicolumn{5}{c}{y}\\
\Xhline{1pt}
\makecell*{10} & 22 & 33 \\
\hline
\makecell{20\\[-2.5ex]}& \makecell*[tc]{45\\34} & \makecell[tc]{34\\67} & 88 & 77 & 80 \\
\hline
\makecell*{66} & 12 & 10 & 45 & 66
\end{tabular}
\end{table}
\end{document}