решение1
Как только что упомянул Джон Кормило, я использовал \multicolumn{}{}{}
для верхней надписи и отрегулировал положение с помощью \raisebox{}{}
, а также использовал \multirow[]{}{}{}
для левой надписи, использовал окружение таблицы для нижней надписи, использовал \centering
и \hspace*{}
для центрирования и регулировки tabular
окружения. Результат показан ниже.
\documentclass[12pt,twoside,a4paper]{book}
\usepackage[left=.45in,right=.45in,top=.6in,bottom=.6in,headheight=14.5pt]{geometry}
\usepackage{array,multirow}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\begin{table}
\centering
\hspace*{-2cm}\begin{tabular}{C{1.2cm}cC{0.5cm}|c|c|c}
\multicolumn{5}{r}{\raisebox{2ex}{Output}} \\
&& & \bfseries X & \bfseries Y & \\ \cline{2-6}
\multirow[]{2}{3cm}{Input} && \bfseries X & \bfseries A & \bfseries B & \\ \cline{3-6}
&& \bfseries Y & \bfseries C & \bfseries D & \\ \cline{2-6}
&& & & & \\
\end{tabular}
\caption{Blah Blah Blah}
\label{Table:1}
\end{table}
\end{document}
решение2
Не указывайте форматы столбцов в преамбуле \tabularx
. Вместо этого вам нужно будет использовать что-то вроде \multicolumn{1}{C|}{content}
, что поможет вам рисовать вертикальные линии только в определенных местах. Вам также нужно определить новый тип столбцов, \newcolumntype{C}{ >{ \arraybackslash \Centering } X }
который выровняет ширину столбцов.
Вот полный исходный код:
\documentclass{scrartcl}
\usepackage{float}
\usepackage{tabularx}
\newcolumntype{C}{ >{ \arraybackslash \Centering } X }
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{ragged2e}
\usepackage{makecell}
\begin{document}
\begin{table}[]
\caption{Caption}
\label{table:1}
% Center the table
\centering
% Stretch the table (vertically)
\renewcommand{\arraystretch}{1.3}
\begin{tabularx}{0.6\textwidth}{ >{\hsize=0.8\hsize}C C C C}
& & \multicolumn{2}{c}{Output}
\\
& & \multicolumn{1}{|C|}{X} & \multicolumn{1}{C}{Y}
\\
\Xcline{2-4}{0.2mm}
\multirow{2}{2cm}{\centering Input} & \multicolumn{1}{C|}{X} & \multicolumn{1}{C|}{A} & \multicolumn{1}{C}{B}
\\
\Xcline{2-4}{0.2mm}
& \multicolumn{1}{C|}{Y} & \multicolumn{1}{C|}{C} & \multicolumn{1}{C}{D}
\end{tabularx}
\end{table}
\end{document}
Кстати, «вход» — это не подпись справа, это всего лишь одна запись, которая должна занимать две строки в первом (скрытом) столбце.
решение3
Вы можете это сделать, но я не думаю, что это хороший способ представления таблицы.
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{table}[htp]
\centering
\setlength{\tabcolsep}{2\tabcolsep}% double the default
\begin{tabular}{@{}lc|c|c|}
& \multicolumn{1}{c}{} & \multicolumn{2}{c}{Output} \\
& & X & Y \\
\cline{2-4}
\multirow{2}{*}{Input}
& X & A & B \\
\cline{2-4}
& Y & C & D \\
\cline{2-4}
\end{tabular}
\caption{Blah blah blah}
\end{table}
\end{document}
Почему это плохо? Вообще не понятно, что такое «вход» и «выход».