表のフォーマット: シフトされた \cmidrule と列の余分なスペース

表のフォーマット: シフトされた \cmidrule と列の余分なスペース

IEEE カンファレンス テンプレートを使用した次のスクリプトがあります:https://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/?lang=en

この表の書式設定は難しいと思います。問題点は次のとおりです。

1) 一番左の列が正しくありません。行の先頭から黒い水平線を開始する必要があります (各行の左側にいくらかのスペースがあります)。また、行のテキストを開始する前に 1 つのスペースが必要です (一番右の列と同じように見えるようにする必要があります)。

2) 列は、A列 や のように下線が引かれなければなりませんBCしかし、線が適切に配置されていません。線は垂直線の前で終わる必要があります。

スクリプトは次のとおりです。

\documentclass[compsoc, conference, letterpaper, 10pt, times]{IEEEtran}
\ifCLASSOPTIONcompsoc
  % IEEE Computer Society needs nocompress option
  % requires cite.sty v4.0 or later (November 2003)
  \usepackage[nocompress]{cite}
\else
  % normal IEEE
  \usepackage{cite}
\fi
\ifCLASSINFOpdf
\else
\fi
\usepackage{graphicx}

\usepackage{colortbl}

\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\newcommand{\head}[1]{\textnormal{\textbf{#1}}}
\newcommand{\normal}[1]{\multicolumn{1}{l}{#1}}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\newcommand*\rot{\rotatebox{90}}
\usepackage{tabularx}

\begin{document}
\title{Test Document}

% make the title area
\maketitle

\section{Introduction}
This is an introduction.

\begin{table*}[tb!] 
\caption{A Table}

\centering
\resizebox{\textwidth}{!} {
\begin{tabular} {@{} lc*{16}l @{}}
\hline
\multicolumn{1}{c}{A} 
&&\multicolumn{3}{c}{B}    
&&\multicolumn{3}{c}{C}  
&&\multicolumn{3}{c}{D}  
&&\multicolumn{2}{c}{E}  

\\
\cmidrule(lr){0-1} 
\cmidrule(lr){3-5} 
\cmidrule(lr){7-9}
\cmidrule(lr){11-13}
\cmidrule(lr){15-16}
\\
& \vline &\rot{Col. 1} & \rot{Col. 2} & \rot{Col. 3} 
& \vline & \rot{Col. 1} & \rot{Col. 2} & \rot{Col. 3} 
& \vline & \rot{Col. 1} & \rot{Col. 2} &\rot{Col. 3} 
& \vline & \rot{Col. 1} & \rot{Col. 2} 

\\ \hline
\rowcolor[gray]{.9} 
Text1 &\vline  & \cmark & {}     & {}     & \vline  & {}     & \cmark  & {}      & \vline  & {} &\cmark  & & \vline &    & \cmark \\\hline
Text2 &\vline  & {}     & \cmark & {}     & \vline  & {}     & \cmark   & {}      & \vline & {} & \cmark & & \vline & {} & \cmark   \\\hline
\rowcolor[gray]{.9}
Text3 & \vline & \cmark & {}     & {}     & \vline  & {}     & \cmark   & {}      & \vline & {} &\cmark  & &\vline & {} & \cmark    \\
\hline
Text4 & \vline & \cmark & {}    & {}     & \vline   & {}     & \cmark   & {}      & \vline & {} &\cmark  & &\vline & {} & \cmark   \\
 \hline
\rowcolor[gray]{.9} 
Text5 & \vline & {}     & \cmark & {}    & \vline   & \cmark  & {}      & {}      & \vline & \cmark & {} & &\vline & {} & \cmark    \\
\hline
Text6 & \vline & \cmark & {}    & {}     & \vline   & \cmark  & {}      & {}      & \vline & {}     & \cmark & & \vline & {} & \cmark   \\
\hline
\rowcolor[gray]{.9}
Text7 & \vline & \cmark & {}    & {}     & \vline   & \cmark  & {}      & {}       & \vline & \cmark & {}    & & \vline & \cmark & {}  \\
\hline
Text8 & \vline & \cmark & {}   & {}     & \vline    & {}     & \cmark   & {}      & \vline  & {}     &\cmark & & \vline & {} & \cmark  \\
\hline
\rowcolor[gray]{.9}
Text9 & \vline & {}     & {}     & \cmark & \vline & \cmark  & \cmark  & {}       & \vline  & {}     &\cmark & & \vline & {} & \cmark \\\hline
Text10 & \vline & {}     & {}     & \cmark & \vline & {}      & {}      & \cmark   & \vline  & {}     &\cmark & &\vline & {} & \cmark   \\
\hline
\end{tabular}
}
\end{table*}
\end{document}

ここに画像の説明を入力してください

答え1

問題は列定義@{}での使用によって発生しますtabular。回避策はcolortblパッケージのドキュメントで説明されているため、使用されているドキュメント クラスとは関係ありません。

編集:tabularxの代わりに を使用することを検討している場合tabular、問題の解決策は次のとおりです。

  • 列の数をコンテンツのある列の数まで減らす (12)
  • 列定義を(縦線なし)に変更します

\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l
                                                                 *{10}{C}
                                >{\columncolor{white}[\tabcolsep][0pt]}C
                            @{}}

または(縦線付き)

\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l  |
                                                                  *{3}{CCC|}
                                                                       C 
                                >{\columncolor{white}[\tabcolsep][0pt]}C
                            @{}}

オフトピック: 列幅に収まるように、テーブルを自由に変更しました。このために、tabularxテーブル環境を使用し、フォント サイズを に縮小し\small、垂直線を削除し、水平線には のルールを使用しますbooktabs(よりプロフェッショナルな外観のテーブルを取得するため):

ここに画像の説明を入力してください

ご覧のとおり、この表には問題はありません。気に入っていただけたかもしれませんね :)。MWE は次のとおりです。

\documentclass[twocolumn]{article}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%

\usepackage[table]{xcolor}% instead of colortbl
\usepackage{booktabs, makecell, multirow, tabularx}
\usepackage{rotating}% added
\newcolumntype{C}{>{\centering\arraybackslash}X}

%-------------------------------------- only for show page layout
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}
\begin{document}
\lipsum[1]
    \begin{table}[ht]
\caption{A Table}
    \centering
\setlength\tabcolsep{3pt}
    \settowidth\rotheadsize{Col. 3}
\begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l
                                                                 *{10}{C} 
                                >{\columncolor{white}[\tabcolsep][0pt]}C
                            @{}}
    \toprule
\multicolumn{1}{c}{A}       
        &   \multicolumn{3}{c}{B}   
            &   \multicolumn{3}{c}{C}
                &   \multicolumn{3}{c}{D}
                    &   \multicolumn{2}{c}{E}           \\
\cmidrule(lr){1-1}
\cmidrule(lr){2-4}\cmidrule(lr){5-7}\cmidrule(lr){8-10}
\cmidrule(lr){11-12}
        & \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
        & \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
        & \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
        & \rothead{Col. 1} & \rothead{Col. 2}                   \\ 
    \hline
\rowcolor[gray]{.9}
Text1   & \cmark        &               & 
        &               & \cmark        & 
        &               & \cmark        &
        &               & \cmark                        \\
Text2   &               & \cmark        & 
        &               & \cmark        & 
        & \cmark        &               & \cmark        \\
\rowcolor[gray]{.9}
Text3   & \cmark        &               &
        &               & \cmark        &  
        &               & \cmark        &
        &               & \cmark                        \\
Text4   & \cmark        &               & 
        &               & \cmark        & 
        &               & \cmark        & 
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text5   &               & \cmark        &
        & \cmark        &               & 
        & \cmark        &               &
        &               & \cmark                        \\
\hline
Text6   & \cmark        &               & 
        & \cmark        &               &
        &               & \cmark        & 
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text7   & \cmark        &               & 
        & \cmark        &               & 
        & \cmark        &               & 
        & \cmark        &                               \\
Text8   & \cmark        &               & 
        &               & \cmark        & 
        &               & \cmark        & 
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text9   &               &               & \cmark 
        & \cmark        & \cmark        &
        &               & \cmark        & 
        &               & \cmark                        \\
Text10  &               &               & \cmark 
        &               &               & \cmark   
        &               & \cmark        & 
        &               & \cmark                        \\
    \bottomrule
\end{tabularx}
\end{table}
\lipsum
\end{document}

IEEEtran上記の MWe は、ドキュメント クラス (現在はインストールされていません)でも動作するはずです。

2 列以上の垂直線を含むテーブルが必要な場合は、上記の MWE を置き換えて、代わりに次の行を検討してください。

...
    \begin{table*}
\caption{A Table}
    \centering
\setlength\tabcolsep{3pt}
    \settowidth\rotheadsize{Col. 3}
    \begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l  |
                                                                      *{3}{CCC|}
                                                                           C
                                    >{\columncolor{white}[\tabcolsep][0pt]}C
                                @{}}
    \toprule
\multicolumn{1}{c}{A}       
        &   \multicolumn{3}{c}{B}   
            &   \multicolumn{3}{c}{C}
                &   \multicolumn{3}{c}{D}
                    &   \multicolumn{2}{c}{E}           \\
\cmidrule(lr){1-1}
\cmidrule(lr){2-4}\cmidrule(lr){5-7}\cmidrule(lr){8-10}
\cmidrule(lr){11-12}
        & {Col. 1} & {Col. 2} & {Col. 3}
        & {Col. 1} & {Col. 2} & {Col. 3}
        & {Col. 1} & {Col. 2} & {Col. 3}
        & {Col. 1} & {Col. 2}                   \\ 
    \hline
    ...

そして、次のものが得られます:

ここに画像の説明を入力してください

Edid (2): 質問のコードのようにすべての線を垂直にし、列見出しを垂直にします。

ここに画像の説明を入力してください

最後の画像の完全な MWE は次のとおりです。

\documentclass[twocolumn]{article}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%

\usepackage[table]{xcolor}% instead of colortbl
\usepackage{booktabs, makecell, multirow, tabularx}
\usepackage{rotating}% added
\newcolumntype{C}{>{\centering\arraybackslash}X}
%-------------------------------------- only for show page layout
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}
\begin{document}
\lipsum[1]
    \begin{table*}
\caption{A Table}
    \centering
\setlength\tabcolsep{3pt}
    \settowidth\rotheadsize{Col. 3}
    \begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l|
                                                                      *{3}{CCC|}
                                                                           C
                                    >{\columncolor{white}[\tabcolsep][0pt]}C
                                @{}}
    \toprule
\multicolumn{1}{c}{A}       
        &   \multicolumn{3}{c}{B}   
            &   \multicolumn{3}{c}{C}
                &   \multicolumn{3}{c}{D}
                    &   \multicolumn{2}{c}{E}           \\
\cmidrule(lr){1-1}
\cmidrule(lr){2-4}\cmidrule(lr){5-7}\cmidrule(lr){8-10}
\cmidrule(lr){11-12}
        & \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
        & \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
        & \rothead{Col. 1} & \rothead{Col. 2} & \rothead{Col. 3}
        & \rothead{Col. 1} & \rothead{Col. 2}                   \\ 
    \hline
\rowcolor[gray]{.9}
Text1   & \cmark        &               & 
        &               & \cmark        & 
        &               & \cmark        &
        &               & \cmark                        \\
Text2   &               & \cmark        & 
        &               & \cmark        & 
        & \cmark        &               & \cmark        \\
\rowcolor[gray]{.9}
Text3   & \cmark        &               &
        &               & \cmark        &  
        &               & \cmark        &
        &               & \cmark                        \\
Text4   & \cmark        &               & 
        &               & \cmark        & 
        &               & \cmark        & 
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text5   &               & \cmark        &
        & \cmark        &               & 
        & \cmark        &               &
        &               & \cmark                        \\
Text6   & \cmark        &               & 
        & \cmark        &               &
        &               & \cmark        & 
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text7   & \cmark        &               & 
        & \cmark        &               & 
        & \cmark        &               & 
        & \cmark        &                               \\
Text8   & \cmark        &               & 
        &               & \cmark        & 
        &               & \cmark        & 
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text9   &               &               & \cmark 
        & \cmark        & \cmark        &
        &               & \cmark        & 
        &               & \cmark                        \\
Text10  &               &               & \cmark 
        &               &               & \cmark   
        &               & \cmark        & 
        &               & \cmark                        \\
    \bottomrule
\end{tabularx}
\end{table*}
\lipsum
\end{document}

編集(3): そして楽しさと完全性のためにオフトピック提案: (黒い) 縦線がなく、列ヘッダーを回転せず、すべての列の幅が同じになるもう 1 つの解決策:

ここに画像の説明を入力してください

\documentclass[twocolumn]{article}
\usepackage{amssymb}
\usepackage{pifont}
\newcommand{\cmark}{\ding{51}}%

\usepackage[table]{xcolor}% instead of colortbl
\usepackage{booktabs, tabularx}
\usepackage[skip=1ex]{caption}
\newcolumntype{C}{>{\centering\arraybackslash}X}

\usepackage{lipsum}
\begin{document}
\lipsum[1]
    \begin{table*}
\caption{A Table}
    \centering
\setlength\tabcolsep{3pt}
    \begin{tabularx}{\linewidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}X   @{\quad}
                                                                      *{3}{CCC @{\quad}}
                                                                           C
                                    >{\columncolor{white}[\tabcolsep][0pt]}C
                                @{}}
    \toprule
\multicolumn{1}{c}{A}
        &   \multicolumn{3}{c}{B}
            &   \multicolumn{3}{c}{C}
                &   \multicolumn{3}{c}{D}
                    &   \multicolumn{2}{c}{E}           \\
\cmidrule(r){1-1}
\cmidrule(r){2-4}\cmidrule(r){5-7}\cmidrule(r){8-10}
\cmidrule{11-12}
        & {Col. 1} & {Col. 2} & {Col. 3}
        & {Col. 1} & {Col. 2} & {Col. 3}
        & {Col. 1} & {Col. 2} & {Col. 3}
        & {Col. 1} & {Col. 2}                   \\
    \hline
\rowcolor[gray]{.9}
Text1   & \cmark        &               &
        &               & \cmark        &
        &               & \cmark        &
        &               & \cmark                        \\
Text2   &               & \cmark        &
        &               & \cmark        &
        & \cmark        &               & \cmark        \\
\rowcolor[gray]{.9}
Text3   & \cmark        &               &
        &               & \cmark        &
        &               & \cmark        &
        &               & \cmark                        \\
Text4   & \cmark        &               &
        &               & \cmark        &
        &               & \cmark        &
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text5   &               & \cmark        &
        & \cmark        &               &
        & \cmark        &               &
        &               & \cmark                        \\
Text6   & \cmark        &               &
        & \cmark        &               &
        &               & \cmark        &
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text7   & \cmark        &               &
        & \cmark        &               &
        & \cmark        &               &
        & \cmark        &                               \\
Text8   & \cmark        &               &
        &               & \cmark        &
        &               & \cmark        &
        &               & \cmark                        \\
\rowcolor[gray]{.9}
Text9   &               &               & \cmark
        & \cmark        & \cmark        &
        &               & \cmark        &
        &               & \cmark                        \\
Text10  &               &               & \cmark
        &               &               & \cmark
        &               & \cmark        &
        &               & \cmark                        \\
    \bottomrule
\end{tabularx}
\end{table*}
\lipsum
\end{document}

上記のトピック外の提案はすべて、行に色を付けるというあなたの希望を考慮したものです。私は個人的に行に色を付けません。読者が行を追跡できるように、最終的には、テーブルを 1 つの列に収めるために、各 4 行の後に垂直方向のスペースを追加します。ただし、人によって好みは異なります...

答え2

私はtabularx と を使用することを提案します\resizebox。垂直線は列間の区切りとして配置されるため、列は 12 列しかありません。また、回転した列見出しの外観を変更する自由を取りました。40° 回転して高さを小さくします。

\documentclass[compsoc, conference, letterpaper, 10pt, times]{IEEEtran}
\ifCLASSOPTIONcompsoc
  % IEEE Computer Society needs nocompress option
  % requires cite.sty v4.0 or later (November 2003)
  \usepackage[nocompress]{cite}
\else
  % normal IEEE
  \usepackage{cite}
\fi
\ifCLASSINFOpdf
\else
\fi

\usepackage{graphicx}

\usepackage[table, svgnames]{xcolor}

\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\newcommand{\head}[1]{\textnormal{\textbf{#1}}}
\newcommand{\normal}[1]{\multicolumn{1}{l}{#1}}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\newcommand*\rot[1][90]{\rotatebox{90}}
\newcommand*\myrot[1]{\rotatebox[origin=l]{40}{#1}}
\usepackage{tabularx}
\newcolumntype{C}{ >{\centering\arraybackslash}X}

\begin{document}
\title{Test Document}

% make the title area
\maketitle

\section{Introduction}
This is an introduction.


\begin{table*}[!htb]
  \setlength\extrarowheight{2pt}\centering
  \caption{A Table}
  \begin{tabularx}{0.8\textwidth} { l|*{3}{CCC|}*{2}{C}|@{}}
    \hline
    \multicolumn{1}{c}{A}
           & \multicolumn{3}{c}{B}
           & \multicolumn{3}{c}{C}
           & \multicolumn{3}{c}{D}
           & \multicolumn{2}{c}{E}
    \\
    \cmidrule(lr){1-1}
    \cmidrule(lr){2-4}
    \cmidrule(lr){5-7}
    \cmidrule(lr){8-10}
    \cmidrule(lr){11-12}
           & \myrot{Col. 1} & \myrot{Col. 2} & \myrot{Col. 3}
           & \myrot{Col. 1} & \myrot{Col. 2} & \myrot{Col. 3}
           & \myrot{Col. 1} & \myrot{Col. 2} & \myrot{Col. 3}
           & \myrot{Col. 1} & \myrot{Col. 2}
    \\ \hline
    \rowcolor[gray]{.9}Text1
           & \cmark & & & & \cmark & & & \cmark & & & \cmark \\\hline
    Text2 & & \cmark & & & \cmark & & & \cmark & & & \cmark \\\hline
    \rowcolor[gray]{.9}
    Text3 & \cmark & & & & \cmark & & & \cmark & & & \cmark \\
    \hline
    Text4 & \cmark & & & & \cmark & & & \cmark & & & \cmark \\
    \hline
    \rowcolor[gray]{.9}
    Text5 & {} & \cmark & & \cmark & & & \cmark & & & & \cmark \\
    \hline
    Text6 & \cmark & & & \cmark & & & & \cmark & & & \cmark \\
    \hline
    \rowcolor[gray]{.9}
    Text7 & \cmark & & & \cmark & & & \cmark & & & \cmark & \\
    \hline
    Text8 & \cmark & & & & \cmark & & & \cmark & & & \cmark \\
    \hline
    \rowcolor[gray]{.9}
    Text9 & & & \cmark & \cmark & \cmark & & & \cmark & & & \cmark \\
    \hline
    Text10 & & \cmark & & & & \cmark & & \cmark & & & \cmark \\
    \hline
  \end{tabularx}
\end{table*}

\end{document}

ここに画像の説明を入力してください

90° 回転したい場合は、テーブル本体を に置き換えて次のよう\myrot\rotなります。

ここに画像の説明を入力してください

関連情報