表内のいくつかのセルに境界線を追加し、境界線が内容を囲み、各セル間にスペースができるようにしたいと考えています。私が実現したいことをある程度示す最適な画像は次のとおりです。
これは、HTML ではテーブルの設定によって可能ですcellspacing
。LaTeX で同じことを実現するにはどうすればよいでしょうか。すべてのテーブル セルではなく、一部のテーブル セルにのみこの内部境界線を設定したいのですが。
最も近づいた方法は を使用することですfbox
が、テーブル セルの端まで完全に拡張することはできませんでした。
答え1
単純なテーブルの場合、hhline
パッケージを使うのが簡単な解決策ですが、ではありません質問に示されているように、セル\multiwrow
を含む複雑なテーブルに適したソリューションです。\multicolumn
この MWE では、次の両方の問題が示されています。
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{hhline}
\usepackage{multirow}
\begin{document}
\arrayrulecolor{black}
\doublerulesepcolor{gray!40}
\begin{tabular}{||>{\columncolor[gray]{0.9}\bfseries}c||c||c||c||c||}
\hhline{|t:=:t:=:t:=:t:=:t:=:t|}
\rowcolor{red!30}
\multirow{2}{*}{alfa} & \bfseries beta & \multicolumn{2}{|c||}{\bfseries beta} & \bfseries alfa \\
\hhline{||~|:=::=::=::=:|}
& beta & alfa & beta & alfa \\
\hhline{|:=::=::=::=::=:|}
alfa & beta & alfa & beta & alfa \\
\hhline{|:=::=::=::=::=:|}
alfa & beta & alfa & beta & alfa \\
\hhline{|:=::=::=::=::=:|}
\rowcolor{green!30} gamma & delta & gamma & delta & gamma \\
\hhline{|b:=:b:=:b:=:b:=:b:=:b|}
\end{tabular}
\end{document}
答え2
の解決策は次の{NiceTabular}
とおりですnicemtrix
。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\newcommand{\B}
{
\Block
[
tikz = clip ,
tikz = { draw, line width=3pt } ,
tikz = { draw, color = gray!10, line width = 2.5pt}
]
}
\NiceMatrixOptions{cell-space-limits=5pt}
\begin{NiceTabular}{>{\bfseries}ccccc}
\CodeBefore
\arraycolor{lightgray}
\rectanglecolor{white}{3-2}{6-5}
\Body
\RowStyle[nb-rows=2]{\bfseries}
\B{2-1}{Question} & \B{1-2}{Women} && \B{1-2}{Men} \\
& \B{}{Yes} & \B{}{No} & \B{}{Yes} & \B{}{No} \\
\B{}{Question 1} & \B{}{42\%} & \B{}{58\%} & \B{}{61\%} & \B{}{39\%} \\
\B{}{Question 2} & \B{}{53\%} & \B{}{47\%} & \B{}{69\%} & \B{}{31\%} \\
\B{}{Question 3} & \B{}{26\%} & \B{}{74\%} & \B{}{51\%} & \B{}{49\%} \\
\RowStyle{\bfseries}
\B{}{Average} & \B{}{40\%} & \B{}{60\%} & \B{}{60\%} & \B{}{40\%}
\end{NiceTabular}
\end{document}
複数のコンパイルが必要です。