私は、画像のような LaTeX テーブルを作成しようとしています。基本的に、ヘッダー 1 の下に 4 列の回転したテキストと、追加情報を含む灰色のセルが 1 つある必要があります。私は LaTeX の初心者で、このテーブルをブックタブ スタイルで作成する方法がわかりません。
\documentclass{article}
\newcommand*\turn{\rotatebox[origin=b]{90}}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{array, caption}
\usepackage{graphicx}
\usepackage{makecell}
\usepackage[table,xcdraw]{xcolor}
\begin{document}
\begin{table}[]
\centering
\begin{tabular}{@{}llllll@{}}
\toprule
& \multicolumn{4}{c}{Header 1} & \\
\cmidrule(lr){2-5}
&\turn{Text1} &\turn{Text2} &\turn{Text3} & \turn{Text4} & \cellcolor{gray!25} \makecell[l]{Some line 1\\ Some line 1\\ Some line 1\\ Some line 1\\ Some line 1} \\
Header 3 & & & & &Header 3\\
\midrule
& & & & & \\
& & & & & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答え1
この(異常な)表(質問で示したように)を再現する MWE は次のとおりです。
\documentclass{article}
\usepackage[table,xcdraw]{xcolor}
\usepackage{rotating}
\usepackage{makecell, multirow, tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\usepackage[skip=1ex]{caption}
\begin{document}
\begin{table}[htb]
\centering
\setlength\extrarowheight{2pt}
\settowidth\rotheadsize{Text 4}
\renewcommand\rotheadgape{}
\begin{tabularx}{0.6\linewidth}{ l llll c@{\,}X }
\Xhline{1pt}
& \multicolumn{4}{c}{Header 1}
&& \cellcolor{gray!25} \\
\Xcline{2-5}{0.6pt}
& \rothead{Text 1}
& \rothead{Text 2}
& \rothead{Text 3}
& \rothead{Text 4}
&& \cellcolor{gray!25}%
\multirow{-2.2}{=}{\noindent
Some line 1 Some line 2
Some line 3} \\
Header 3 & & & & && Header 3 \\
\Xhline{0.6pt}
A & & & & && 1 \\
B & & & & && 2 \\
\Xhline{1pt}
\end{tabularx}
\end{table}
\end{document}
補遺:
\documentclass{article}
\usepackage[table,xcdraw]{xcolor}
\usepackage{rotating}
\usepackage{makecell, multirow, tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcommand\mrrc[1]{\multirow{-2.4}{*}{\rothead{#1}}} % <---
\usepackage[skip=1ex]{caption}
\begin{document}
\begin{table}[htb]
\centering
\setlength\extrarowheight{2pt}
\settowidth\rotheadsize{Text 4}
\renewcommand\rotheadgape{}
\begin{tabularx}{0.6\linewidth}{ l llll c@{\,}L }
\Xhline{1pt}
& \multicolumn{4}{c}{Header 1}
&& \cellcolor{gray!25} \\
\Xcline{2-5}{0.6pt}
& & & & && \cellcolor{gray!25} % <---
\small\linespread{0.84}\selectfont % <---
\multirow{-1.8}{=}{\noindent
Some line 1
Some line 2
Some line 3} \\[1ex]
Header 3 & \mrrc{Text 1} % <--- rotated headers moved down
& \mrrc{Text 2}
& \mrrc{Text 3}
& \mrrc{Text 4}
&& Header 3 \\
\Xhline{0.6pt}
A & & & & && 1 \\
B & & & & && 2 \\
\Xhline{1pt}
\end{tabularx}
\end{table}
\end{document}
うまくいけば、あなたが欲しいものを作ることができます:
答え2
それはあなたが欲しいものですか?
\documentclass{article}
\newcommand*\turn{\rotatebox[origin=b]{90}}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{array, caption}
\usepackage{graphicx}
\usepackage{makecell}
\usepackage[table,xcdraw]{xcolor}
\begin{document}
\begin{table}[]
\centering
\begin{tabular}{@{}llllll@{}}
\toprule
& \multicolumn{4}{c}{Header 1} & \\
\cmidrule(lr){2-5}
&\multirowcell{3.5}{\turn{Text1}} &\multirowcell{3.5}{\turn{Text2}} &\multirowcell{3.5}{\turn{Text3}} & \multirowcell{3.5}{\turn{Text4}} & \cellcolor{gray!25} \makecell{Some line 1\\ Some line 1\\ Some line 1\\ Some line 1\\ Some line 1} \\
\addlinespace
Header 3 & & & & &Header 3\\
\midrule
& & & & & \\
& & & & & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答え3
の解決策は次の{NiceTabular}
とおりですnicematrix
。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\usepackage{booktabs}
\begin{document}
\begin{table}[htb]
\centering
\setlength\extrarowheight{2pt}
\begin{NiceTabular}{llllll}
\CodeBefore
\rectanglecolor{gray!20}{1-6}{2-6}
\Body
\toprule
& \Block{1-4}{Header 1} &&&
& \Block{2-1}{Some line 1\\ Some line 2 \\ Some line 3} \\
\cmidrule(lr){2-5}
\RowStyle{\rotate}
& Text 1
& Text 2
& Text 3
& Text 4 \\
Header 3 & & & & & Header 3 \\
\midrule
A & & & & & 1 \\
B & & & & & 2 \\
\bottomrule
\end{NiceTabular}
\end{table}
\end{document}
このソリューションでは を使用します
\booktabs
(nicematrix
は と互換性があります)。したがって、を でbooktabs
短縮するのは簡単です(ダミー列は必要ありません)。\cmidrule
\cmidrule(rl)
コマンド
\Block
は、nicematrix
その内容を結合セルの数学的な中心に配置します。 のように手動で調整する必要はありません\multirow
。このコマンドは、
\rowstyle
行のすべてのセルに書式設定コマンドを適用します。では
nicematrix
、色付きのパネルはすべての罫線の前に描画されます (PDF ビューアでの出力はより良くなります。Adobe Reader などの一部の PDF ビューアでは、ズームのレベルによっては罫線が消えないように見えます)。