表における色付けとセルの区切り縦二重罫

表における色付けとセルの区切り縦二重罫

- M RUIKE の投稿
返信数: 6
表中で色をつけた行に縦二重罫を入れたいのですが,入れると縦二重罫の間の色が抜けてしまいます。ソースは以下の通りです。

\documentclass{article}
\usepackage{colortbl}

\begin{document}
\begin{tabular}{l|c||l|c} \hline
\rowcolor[gray]{0.8}A&B&C&D\\ \hline
a& b&c&d \\
e&f&g&h\\ \hline
\end{tabular}¥vspace*{-10mm}
\end{document}

これを,縦二重罫の間も灰色になるようには,どのようにしたら良いのでしょうか。
ご存知の方がおられましたら,ご教示ください。
使用しているのは,TeXshop 5.10,macOS Montereyです。
M RUIKE への返信

Re: 表における色付けとセルの区切り縦二重罫

- 大熊 一弘 の投稿
私の個人的な対応法です。
  二重罫線

  ひとつの(幅の狭い)列(row)
として扱うという方法です。

リストを下に書きますが,emath をお使いではないでしょうから,
タイプセット済みの PDF と,
タイプセットに必要なファイルをひとまとめにした zip ファイルを
  http://emath.s40.xrea.com/temp/QA0427.zip
に置きます。
QA0427tmp.pdf を閲覧して,タイプセットを実行してみよう,
ということであれば,QA0427.zip を実験用の臨時フォルダに解凍して
  QA0427tmp.tex
をタイプセットしてみてください。
zip ファイル内のテキストファイルのエンコードは utf8 です。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}
\usepackage[notMy]{emath}
\usepackage{emathT}
\usepackage{colortbl}

\newdimen\mydima

\begin{document}
\begin{enumerate}
\item 提示された表:\\
\begin{tabular}{l|c||l|c} \hline
\rowcolor{red}A&B&C&D\\ \hline
a&b&c&d\\
e&f&g&h\\ \hline
\end{tabular}
\item \textsf{emath}を使用した表:\\
\setlength\mydima{2pt-2\tabcolsep}%
\begin{tabular}{l|c|C{\mydima}|l|c} \hline
\rowcolor{red}A&B&&C&D\\ \hline
a&b&&c&d\\
e&f&&g&h\\ \hline
\end{tabular}
\end{enumerate}
\end{document}
大熊 一弘 への返信

Re: 表における色付けとセルの区切り縦二重罫

- M RUIKE の投稿
大熊 様

RUIKEと申します。
非常に丁寧な回答をいただきありがとうございます。
ご推察の通り,emathは使用したことがありませんでした。
ご提供いただいたものを解凍してタイプセットした結果,
完全に所望の結果を得ることができました。
丁寧にstyファイルも一通り準備していただき,まことにありがとうございます。
お礼を申し上げます。

ところで,「二重罫線をひとつの(幅の狭い)列(row)として扱う」という方法ですが,
どのようにして狭く指定するのかが理解できておりません。
 \newdimen\mydima
 \setlength\mydima{2pt-2\tabcolsep}%
 C{\mydima}
が重要な点かと推測しています。これから理解に努めます。

ところで,大熊様の「二重罫線をひとつの(幅の狭い)列(row)として扱う」という方法を
emathを使わずに実現する方法はないものでしょうか。
「空っぽの列(row)を狭く指定する方法」があれば実現可能ではないかと(素人なりに)考えております。
引き続き,アドバイスをいただけますよう,お願いいたします>皆様方。

 大熊様へ
 ファイルを見まして,いろいろと勉強になる内容ばかりでした,重ねてお礼申し上げます。
 ありがとうございました。
M RUIKE への返信

Re: 表における色付けとセルの区切り縦二重罫

- 大熊 一弘 の投稿
\doublerulesepcolor を用いる方が簡潔ですから,そちらがお勧めですね。

蛇足になりますが,一応ご質問にお答えしておきましょう。

> ところで,「二重罫線をひとつの(幅の狭い)列(row)として扱う」
> という方法ですが,どのようにして狭く指定するのかが理解できておりません。

tabular 環境では,列幅は,
  当該列に含まれる最大幅の要素
に従って決まる,のが仕様です。
 これに異を唱えて,こちらの方で指定したい,ということで emath パッケージでは
欄指定子として,l,c,r を発展させた L{...}, C{...}, R{...} を用意しています。
... の部分は指定したい,単位付きの長さです。

> ところで,大熊様の「二重罫線をひとつの(幅の狭い)列(row)として扱う」
> という方法をemathを使わずに実現する方法はないものでしょうか。

わからないです。
見当たらなかってので,作っちゃえ!でした。

以下,饒舌になりますので,
  http://emath.s40.xrea.com/temp/QA0430.zip

  sample.tex
  sample.pdf
  sample1.tex
  sample2.tex
をパックしたものを置きました。sample.pdf をご覧いただければ幸いです。
大熊 一弘 への返信

Re: 表における色付けとセルの区切り縦二重罫

- M RUIKE の投稿
大熊様

**************
tabular 環境では,列幅は,当該列に含まれる最大幅の要素に従って決まる,のが仕様です。
これに異を唱えて,こちらの方で指定したい,ということで emath パッケージでは
欄指定子として,l,c,r を発展させた L{...}, C{...}, R{...} を用意しています。
**************
のように,明快に解説いただけて大変感謝申し上げます。

ご用意いただいたsampleも見せていただきました。
こちらも非常にわかりやすく,感激しております。
ありがとうございました。
M RUIKE への返信

Re: 表における色付けとセルの区切り縦二重罫

- ut の投稿
https://tex.stackexchange.com/questions/137384/problem-with-doublerulesepcolor-in-colortbl
(asked Oct 11, 2013 at 11:00)

https://tex.stackexchange.com/questions/653638/colortbl-why-does-a-double-vertical-line-interrupt-the-background-color
(asked Aug 11, 2022 at 1:38)

に、colortbl.sty 作者の David Carlisle さんによる回答や、nicematrix.sty
を使うという方法(←試してません)が紹介されているようです:

\documentclass{article}
\usepackage{colortbl}

\makeatletter
%
% https://tex.stackexchange.com/a/137394
%
\let\old@mkpream\@mkpream
\def\@mkpream{%
\ifx\CT@drsc@\relax\else\let\CT@drsc@ @\fi
\let\CT@arc@\relax
\old@mkpream}
\makeatother

\begin{document}

\doublerulesepcolor[gray]{0.8}
\begin{tabular}{l|c||l|c}
\hline
\rowcolor[gray]{0.8}%
A & B & C & D \\
\hline
\doublerulesepcolor{white}%
a & b & c & d \\
e & f & g & h \\
\hline
\end{tabular}

\end{document}
ut への返信

Re: 表における色付けとセルの区切り縦二重罫

- M RUIKE の投稿
ut様

RUIKEと申します。
非常に丁寧な回答をいただきありがとうございます。

プリアンブルに
\makeatletter
\let\old@mkpream\@mkpream
\def\@mkpream{%
\ifx\CT@drsc@\relax\else\let\CT@drsc@ @\fi
\let\CT@arc@\relax
\old@mkpream}
\makeatother
を入れて,表の前と途中に
\doublerulesepcolor[gray]{0.8}
\doublerulesepcolor{white}
を記述するという方法は私の理解度にちょうどよく,とても助かりました。

プリアンブルへの記述文は(やはり)さっぱり分かりませんが,これから理解に努めます。
ご教示いただいたURLもこれから勉強いたします。

ut様や大熊様に非常に素早く対応いただき,感激しております。
ありがとうございました。