表で一部の列だけ垂直の罫線をつけたい.

表で一部の列だけ垂直の罫線をつけたい.

- matushiro 97 の投稿
返信数: 8

表で一部の行の一部の列を結合しています.

この表で添付ファイル表3のように罫線を付けることはできるでしょうか.普通にC|の繰り返しだと表2のようになります.

添付 質問_表罫線つき.jpg
タグ:
matushiro 97 への返信

Re: 表で一部の列だけ垂直の罫線をつけたい.

- 和田 勇 の投稿

multicolmn の第二パラメータを c から c| ではだめでしょか?

{} & \multicolumn{2}{c|}{A国} & \multicolumn{2}{c|}{B国} \\

和田 勇 への返信

Re: 表で一部の列だけ垂直の罫線をつけたい.

- matushiro 97 の投稿

和田様

ありがとうございました.

ご指摘の方法でうまく言ったのですが,同じコードを本文内に貼り付けると罫線が一部欠けてしまいます(添付サンプル内と本文内の違い.jpg).

本文は80ページくらいの論文で色々なパッケージを同時に使用しています.パーケージ間の干渉が原因なのでしょうか.

本番用のpreambleもアップしました.もし干渉などお気づきの点がありましたらご教示いただければ幸いです.

解決しなければ諦めます.

添付 サンプル内と本文内の違い.jpg
matushiro 97 への返信

Re: 表で一部の列だけ垂直の罫線をつけたい.

- 鈴木 靖 の投稿

よく用いられているパターンですが,次はいかがでしょうか。

\usepackage{array}を追加して,縦横の太線は数値の変更で修正できます。

以下,preamble.tex の追加箇所です。

・・・
%連番つき図表ラベル
\newtheorem{definition}{【定義}
\newtheorem{assumption}{【仮定}
\newtheorem{proposition}{【命題}

% -------------- 以下 追加 ----------------------

\usepackage{array}

\begin{document}

\begin{table}[t]\small
\caption{垂直罫目標}
\label{tab1}
\centering
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{>{\centering}m{16mm}|>{\centering}m{5mm}>{\centering}m{5mm}|>{\centering}m{5mm}>{\centering}m{5mm}@{\ \vrule width 1.0pt}}
\noalign{\hrule height 1.0pt}
 & \multicolumn{2}{c|}{A 国} & \multicolumn{2}{c@{\ \vrule width 1.0pt}}{B 国} \tabularnewline
\noalign{\hrule height 0.3pt}
技術 & $a_{(1)}$ & $a_{(2)}$ & $b_{(1)}$ & $b_{(2)}$ \tabularnewline
\noalign{\hrule height 0.3pt}
財 1 & $a_1$ & 0 & $b_1$ & 0 \tabularnewline
財 2 & 0 & $a_2$ & 0 & $b_2$ \tabularnewline
\noalign{\hrule height 0.3pt}
労働 1 & $-1$ & $-1$ & 0 & 0 \tabularnewline
労働 2 & 0 & 0 & $-1$ & $-1$ \tabularnewline
\noalign{\hrule height 1.0pt}
\end{tabular}
\end{table}

\end{document}

鈴木 靖 への返信

Re: 表で一部の列だけ垂直の罫線をつけたい.

- 和田 勇 の投稿

別解案 hline に書き換える

姑息かもしれませんが \medrule \toprule \bottomrule の代わりに \hline を利用し \medrule のようなところは \hline\hline のようにして強調する方法もあります

別解案 tabularray で書き換える

マニュアルは texdoc tabularray で参考にしてください。

書き換えるといってもほぼほぼそのまま利用は可能だとおもいます。

このライブラリは、従来の表の機能に、以下のような機能をてんこもりしてしています。

- 複数ページにわたる longtable(supertable?) の機能
- カラム幅自動計算用の記述子 X が使える tabularx の機能
- セルや罫線のカラー対応
- 縦横罫線を個々に太さ、形状(実線・破線) に指定も可能
- 多分 multirow 機能
- toprule midrule bottomrule などの対応
和田 勇 への返信

Re: 表で一部の列だけ垂直の罫線をつけたい.

- 和田 勇 の投稿

tabularray では multicolumn はすでに利用できなくなって SetCell を使えといわれますね。

それと tabularray は 2021 以降でないと利用できないということをお伝え忘れていました。

ということで、私の別解案二つを改めて検証したものを添付します。 tabularray 版は質問者の表記を可能限り利用するようにしています。 そのおもな変更点は以下のとおり

  • プリアンブルに以下を追加
    • \usepackage{tabularray}
    • \UseTblrLibrary{booktabs} ← toprule などの対策
  • \begin{tabular} \enf{tabular} を \begin{tblr} \end{tblr} に変更
    • 環境はいくつか有るのですが、今回は tblr にしました
  • multicolimn はSetCell に書き換え

    • multicolmn のように合体したセルだけ記述するのではなく、合体したセル数に相当する & を追加すること

      \multicokumn{2}{c}{タイトル} であれば \SetCell[2]{c} タイトル & とひとつ & を付け加える

    • この項、マニュアル「2.4.2 Cells and Spancells in Old Interfaces」を参考にしてください。

和田 勇 への返信

Re: 表で一部の列だけ垂直の罫線をつけたい.

- matushiro 97 の投稿

和田様

tabularray で本論文内でも正しく表示されました.

アップした"本文内での実行結果.png"の最初の表ははtabular環境に実行結果でうまくいくはずが本論文内では原因不明で1行目と2行目の垂直罫線で失敗します.

2番目の表がtblr環境による表で本文文内でも正しく表示されます.

ありがとうございました.

添付 本文内での実行結果.png
matushiro 97 への返信

Re: 表で一部の列だけ垂直の罫線をつけたい.

- 和田 勇 の投稿
「1行目と2行目の垂直罫線で失敗」とは添付画像の赤丸や青丸部分のことですか?

縦罫線が添付画像の赤丸や青丸のちょっと突き出たりするのは \midrule の影響だと思います。
逆に \toprule を使うと縦罫線は上端の横罫線に到達できずに空きが空いてしまいますね。

これらを調整するのが鈴木さんが紹介された方法かと思います。

今更ながらですが、奥村さんの「美文書9版」の「第8章表組み」の冒頭に
tabular array は array + tabularx + booktabs + longtables 云々のようなことが書かれていますので
機会があれば一読をお勧めします。
添付 スクリーンショット 2024-06-18 14.31.02.png
鈴木 靖 への返信

Re: 表で一部の列だけ垂直の罫線をつけたい.

- matushiro 97 の投稿
鈴木 様
ご提案ありがとうございます.
記述が少し変わるのでなれるのに手間取りそうですが勉強させていただきます.