\documentclass{article}
\usepackage{rotating}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{|c|c|c|c|}
\hline
&
\begin{sideways}ABCD\end{sideways} &
\begin{sideways}EFGH\end{sideways} &
\begin{sideways}IJKL\end{sideways} \\ \hline
AA & 2 & 3 & 4 \\
BB & 2 & 3 & 4 \\
CC & 2 & 3 & 4 \\
DD & 2 & 3 & 4 \\ \hline
\end{tabular}
\caption{Tmp}
\label{tab:tmp}
\end{table}
\end{document}
Как удалить линии, как на изображениях ниже?
И еще, как мне поднять первую горизонтальную линию немного вверх? Конечный результат должен быть таким:
решение1
Боюсь, необходимы четыре различные меры:
- Удалите вертикальную линию с помощью
\multicolumn{1}{c|}{}
. - Удалите горизонтальную линию (отрезок) с помощью
\cline{2-4}
. - Добавьте немного места к самой длинной этикетке сверху.
- Если вам не нужны «внутренние» вертикальные линии на большей части таблицы, я бы добавил их специально для заголовка.
Результат:
\begin{tabular}{|c|ccc|}
\cline{2-4}
\multicolumn{1}{c|}{}&
\multicolumn{1}{c|}{\begin{sideways}ABCD\hspace*{1mm}\end{sideways}} &
\multicolumn{1}{c|}{\begin{sideways}EFGH\end{sideways}} &
\begin{sideways}IJKL\end{sideways} \\ \hline
AA & 2 & 3 & 4 \\
BB & 2 & 3 & 4 \\
CC & 2 & 3 & 4 \\
DD & 2 & 3 & 4 \\ \hline
\end{tabular}
решение2
Вот решение с использованием tabularray
.
\documentclass{article}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{
colspec = {*{4}{c}},
vline{1} = {2-4}{0.9pt},
vline{2,5} = 0.9pt,
vline{3-4} = {1}{0.9pt},
hline{1} = {2-5}{0.9pt},
hline{2,5} = 0.9pt,
cell{1}{2-4} = {cmd={\rotatebox[origin=c]{90}}}
}
& ABCD
& EFGH
& IJKL \\
AA & 2 & 3 & 4 \\
BB & 2 & 3 & 4 \\
CC & 2 & 3 & 4 \\
\end{tblr}
\end{document}
решение3
Вы можете использовать \multicolumn
и \cline
для получения желаемого результата:
\documentclass{article}
\usepackage{rotating}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{|c|ccc|}
\cline{2-4}
\multicolumn{1}{c}{}&
\multicolumn{1}{|c|}{\begin{sideways}ABCD\end{sideways}} &
\multicolumn{1}{c|}{\begin{sideways}EFGH\end{sideways}} &
\multicolumn{1}{c|}{\begin{sideways}IJKL\end{sideways}} \\ \hline
AA & 2 & 3 & 4 \\
BB & 2 & 3 & 4 \\
CC & 2 & 3 & 4 \\
DD & 2 & 3 & 4 \\ \hline
\end{tabular}
\caption{Tmp}
\label{tab:tmp}
\end{table}
\end{document}
По моему мнению, можно вообще убрать вертикальные линии в заголовке, а также границу сверху, слева и справа, что даст
\begin{tabular}{c|ccc}
\multicolumn{1}{c}{}&
\multicolumn{1}{|c}{\begin{sideways}ABCD\end{sideways}} &
\multicolumn{1}{c}{\begin{sideways}EFGH\end{sideways}} &
\multicolumn{1}{c}{\begin{sideways}IJKL\end{sideways}} \\ \hline
AA & 2 & 3 & 4 \\
BB & 2 & 3 & 4 \\
CC & 2 & 3 & 4 \\
DD & 2 & 3 & 4 \\ \hline
\end{tabular}
решение4
С {NiceTabular}
из nicematrix
. В этой среде у вас есть ключ hvlines
, который рисует все правила, исключенные в блоках (указанных ключом ) \Block
и в пустых углах (указанных ключом corners
).
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{cccc}[hvlines,corners=NW] % NW = north-west
\RowStyle{\rotate}
& ABCD \;
& EFGH
& IJKL \\
\Block{3-1}{}
AA & \Block{3-3}{}
2 & 3 & 4 \\
BB & 2 & 3 & 4 \\
CC & 2 & 3 & 4 \\
\end{NiceTabular}
\end{document}