
특정 셀을 강조하고 해당 셀 주위에 두꺼운 테두리를 적용하여 표를 만들려고 합니다. 내 시도는 \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
(v.5.19 of 2021-07-23)을 사용하면 필요한 프레임을 쉽게 그릴 수 있습니다.직사각형 내부한 줄의 코드로.
\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}
두께가 4pt인 프레임이 그려집니다. 그러나 클리핑을 사용하면 해당 프레임의 내부 부분만 나타납니다(두께는 2pt). - 키는
hvlines
블록 내부의 모든 규칙을 그리는 데 사용됩니다(실제로는 중앙 수직 규칙 중 하나만).
답변2
{NiceTabular}
다음은 of 를 사용한 솔루션입니다 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}