
하나의 셀 주위에 굵은 선을 원합니다. 문제는 셀 아래와 옆면이 \cellcolor로 칠해져 있어서 \cline이 작동하지 않는다는 것이다. 그런 다음 셀의 모든 측면에 굵은 선을 생성하는 이 솔루션을 찾았습니다.두꺼운 색상 테두리를 사용하여 표 셀 강조 표시하지만 셀 높이를 변경하는 것을 원하지 않았고 무엇을 변경해야 할지 모르므로 오른쪽과 왼쪽의 선이 tabcolsep 전에 멈추지 않습니다.
\documentclass[11pt]{article}
\usepackage[ngerman]{babel}
\usepackage[a4paper, text={16.5cm, 25.2cm}, centering]{geometry}
\usepackage[sfdefault]{ClearSans}
\usepackage[utf8]{inputenc}
\setlength{\parskip}{1.2ex}
\setlength{\parindent}{0em}
\usepackage{tabularx}
\usepackage[dvipsnames]{xcolor}
\usepackage{colortbl}
\makeatletter
\def\highlight#1{%
\fboxrule2pt %
\hsize=\dimexpr\hsize-2\fboxrule-2\fboxsep\relax
#1%
\@endpbox\unskip\setbox0\lastbox\bgroup
\fboxrule2pt %
\fcolorbox{black}{white}{\box0}\hfill}
\begin{document}
\center{hiragana test :)}
\vspace{12pt}
\begin{center}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\setlength{\extrarowheight}{0.8cm}
\begin{tabular}{|C{1.5cm}|C{1.5cm}|C{1.5cm}|C{1.5cm}|C{1.5cm}|C{1.5cm}|}
\hline
& a & i & u & e & o \\
\hline
\cellcolor{gray!60} & & & & & \\
\hline
k & & & & & \\
\hline
s & & & & & \\
\hline
t & & & & & \\
\hline
n & & & & & \\
\hline
h & & & & & \\
\hline
m & & & & & \\
\hline
y & & & & & \\
\hline
r & & & & & \\
\hline
w & &\cellcolor{gray!60} & \cellcolor{gray!60}& \cellcolor{gray!60}& \\
\hline
n & \highlight{} &\cellcolor{gray!60} &\cellcolor{gray!60} &\cellcolor{gray!60} & \cellcolor{gray!60} \\
\hline
\cellcolor{gray!60}& \cellcolor{gray!60} &\cellcolor{gray!60} &\cellcolor{gray!60} &\cellcolor{gray!60} & \cellcolor{gray!60} \\
\hline
g & & & & & \\
\hline
z & & & & & \\
\hline
d & & & & & \\
\hline
b & & & & & \\
\hline
p & & & & & \\
\hline
\end{tabular}
\end{center}
\end{document}
답변1
원래 답변에서 조금 더 조정이 필요합니다. 나는 다음과 같이 좋은 결과를 얻었습니다.
\makeatletter
\def\highlight#1{%
\fboxrule2pt%
\hsize=\dimexpr\hsize+\fboxrule\relax
#1%
\@endpbox\unskip\setbox0\lastbox\bgroup
\fboxrule2pt%
\hspace*{-2\fboxsep}\fcolorbox{black}{white}{\box0}\hspace*{\dimexpr-2\fboxsep-\fboxrule\relax}}
\makeatother
그런데 상자의 높이를 변경하는 방법을 모르겠습니다.
편집하다:높이를 일반 셀과 동일하게 만드는 첫 번째 접근 방식입니다. fbox의 높이를 설정했는데, fbox가 cell box보다 낮더라도 cell box의 높이가 약간 높아집니다.
\makeatletter
\newsavebox\saved@arstrutbox%
\global\setbox\saved@arstrutbox\copy\@arstrutbox%
\def\highlight#1{%
\fboxrule2pt%
\ht\@arstrutbox=\dimexpr\ht\saved@arstrutbox+\extrarowheight+2\fboxrule+2\arrayrulewidth\relax%
\dp\@arstrutbox=\dimexpr\dp\saved@arstrutbox\relax%
\hsize=\dimexpr\hsize+\fboxrule\relax%
#1%
\@endpbox\unskip\setbox0\lastbox\bgroup%
\fboxrule2pt%
\hspace*{-2\fboxsep}\fcolorbox{black}{white}{\box0}\hspace*{\dimexpr-2\fboxsep-\fboxrule\relax}}
\makeatother
답변2
{NiceTabular}
of 를 사용하면 해당 셀 주위에 굵은 규칙을 적용하기 위해 해당 셀에 nicematrix
넣기만 하면 됩니다 .\Block[draw,line-width=2pt]{}{}
\documentclass[11pt]{article}
\usepackage{nicematrix}
\begin{document}
\begin{center}
\setlength{\extrarowheight}{0.8cm}
\begin{NiceTabular}{*{6}{w{c}{1.5cm}}}[hvlines,color-inside]
& a & i & u & e & o \\
\cellcolor{gray!60} & & & & & \\
k & & & & & \\
s & & & & & \\
r & & & & & \\
w & &\rowcolor{gray!60} \\
n & \Block[draw,line-width=2pt]{}{} &\rowcolor{gray!60} \\
\rowcolor{gray!60} \\*
g & & & & & \\
\end{NiceTabular}
\end{center}
\end{document}