太いクラインと通常の幅のクラインの配置

太いクラインと通常の幅のクラインの配置

特定のセルを太い枠線で強調した表を作成しようとしています。この試みは\arrayrulewidth非常に成功しましたが、\clineこの例からわかるように、この方法で太くすると、必ずしも標準のものと一致するとは限りません。 ここに画像の説明を入力してください ご覧のとおり、太い縁が下から突き出ています。

これを改善するための提案はありますか?

この例を生成するコードは

\documentclass[border=10pt,11pt]{standalone}

\usepackage{setspace}
\usepackage{array,booktabs,multirow,makecell}
\newlength{\Oldarrayrulewidth}
\newcommand{\Cline}[2]{%
  \noalign{\global\setlength{\Oldarrayrulewidth}{\arrayrulewidth}}%
  \noalign{\global\setlength{\arrayrulewidth}{#1}}\cline{#2}%
  \noalign{\global\setlength{\arrayrulewidth}{\Oldarrayrulewidth}}}

%%% Japanese support
\usepackage{xeCJK}
\usepackage{zxjatype}
\usepackage{fontspec}
\def\cjkfontscale{1.0}
\setmainfont{Kozuka Mincho Pr6N}
\setCJKmainfont[Scale=\cjkfontscale]{Kozuka Mincho Pr6N}
\setCJKsansfont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
\setCJKmonofont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
\newCJKfontfamily\boldmincho{Hiragino Mincho ProN W6}

\begin{document}

\def\heavyrulewidth{2pt}
\def\strongvline{\vline width \heavyrulewidth}
\def\arraystretch{2.0}
\def\padcaption#1{\hspace{1.6em}#1\hspace{1.6em}}
\begin{tabular}{|c|r|c|r|}
  \cline{1-4}
  \multicolumn{1}{|c|}{\raisebox{-8pt}{\padcaption{件名}}}
  & \multicolumn{1}{|l|}{\parbox[t][3em]{12em}{Subject}}
  & \multirow{2}{*}[-10.8pt]{\hspace{1em}{納品先}\hspace{1em}}
  & \multirow{2}{*}{\parbox[t][4em]{14em}{Address}} \\
  \Cline{\heavyrulewidth}{1-2}
  \multicolumn{1}{!{\strongvline}c|}{\hspace{-1.5em}\padcaption{納品日}}
  & \multicolumn{1}{|r!{\strongvline}}{\boldmincho\Large 2020/1/1}
  & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} \\
  \Cline{\heavyrulewidth}{1-2}\cline{3-4}
\end{tabular}
\def\arraystretch{1.0}
\vspace{1em}

\end{document}

(XeLaTeX を使用。日本語処理部分はこの質問に必須ではありませんが、本来の使い方をよりよく示すために含まれています。)

答え1

最新バージョンnicematrix(2021-07-23のv.5.19)では、必要なフレームを簡単に描画できます。長方形の内側1 行のコードで。

\documentclass[border=10pt,11pt]{standalone}

\usepackage{setspace}
\usepackage{array,booktabs,multirow,makecell}

\usepackage{nicematrix}
\usepackage{tikz}


%%% Japanese support
\usepackage{xeCJK}
\usepackage{zxjatype}
\usepackage{fontspec}
\def\cjkfontscale{1.0}
\setmainfont{Kozuka Mincho Pr6N}
\setCJKmainfont[Scale=\cjkfontscale]{Kozuka Mincho Pr6N}
\setCJKsansfont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
\setCJKmonofont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}


\begin{document}

\def\heavyrulewidth{2pt}
\def\strongvline{\vline width \heavyrulewidth}
\def\arraystretch{2.0}
\def\padcaption#1{\hspace{1.6em}#1\hspace{1.6em}}
\begin{NiceTabular}{|c|r|c|r|}% [hvlines]
\hline
  \raisebox{-8pt}{\padcaption{件名}}
  & \multicolumn{1}{l}{\parbox[t][3em]{12em}{Subject}}
  & \multirow{2}{*}[-10.8pt]{\hspace{1em}{納品先}\hspace{1em}}
  & \multirow{2}{*}{\parbox[t][4em]{14em}{Address}} \\
  \Block[tikz=clip,tikz={draw,line width=4pt},hvlines]{1-2}{}
  \hspace{-1.5em}\padcaption{納品日}
  & \Large 2020/1/1 \\
\hline
\end{NiceTabular}
\def\arraystretch{1.0}
\vspace{1em}

\end{document}

行は次のとおりです。\Block[tikz=clip,tikz={draw,line width=4pt},hvlines]{1-2}{}

  • ブロックには 1 行 2 列 ( 1-2) があります。
  • ではtikz=clip、ブロックに対応する四角形を使用して、さらに構造をクリップします。
  • ではtikz={draw,line width=4pt}、4 pt の太さのフレームが描画されます。ただし、クリッピングを使用すると、そのフレームの内側部分のみが表示されます (太さは 2 pt です)。
  • キーは、hvlinesブロック内のすべてのルールを描画するために使用されます (実際には、中央の垂直ルール 1 つだけ)。

上記コードの出力

答え2

{NiceTabular}以下はを使用したソリューションですnicematrix。この環境は に基づいて構築されています{tabular}が、セル、行、列の下に PGF/Tikz ノードが追加されています。これらのノードを使用して、必要なルールで Tikz で描画するのは簡単です。

\documentclass[border=10pt,11pt]{standalone}

\usepackage{setspace}
\usepackage{array,booktabs,multirow,makecell}

\usepackage{nicematrix}
\usepackage{tikz}


%%% Japanese support
\usepackage{xeCJK}
\usepackage{zxjatype}
\usepackage{fontspec}
\def\cjkfontscale{1.0}
\setmainfont{Kozuka Mincho Pr6N}
\setCJKmainfont[Scale=\cjkfontscale]{Kozuka Mincho Pr6N}
\setCJKsansfont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
\setCJKmonofont[Scale=\cjkfontscale]{Kozuka Gothic Pr6N}
% \newCJKfontfamily\boldmincho{Hiragino Mincho ProN W6}

\begin{document}

\def\heavyrulewidth{2pt}
\def\strongvline{\vline width \heavyrulewidth}
\def\arraystretch{2.0}
\def\padcaption#1{\hspace{1.6em}#1\hspace{1.6em}}
\begin{NiceTabular}{|c|r|c|r|}
\hline
  \raisebox{-8pt}{\padcaption{件名}}
  & \multicolumn{1}{l}{\parbox[t][3em]{12em}{Subject}}
  & \multirow{2}{*}[-10.8pt]{\hspace{1em}{納品先}\hspace{1em}}
  & \multirow{2}{*}{\parbox[t][4em]{14em}{Address}} \\
  \hspace{-1.5em}\padcaption{納品日}
  & \Large 2020/1/1 \\
\CodeAfter
\begin{tikzpicture}
\draw (3-|1) -- (3-|5) ;
\draw [very thick] (2-|1) rectangle (3-|3) ;
\end{tikzpicture}
\end{NiceTabular}
\def\arraystretch{1.0}
\vspace{1em}

\end{document}

上記コードの出力

関連情報