
Мне нужна жирная линия только вокруг одной ячейки. Проблема в том, что ячейки ниже и по бокам окрашены \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}