Я использую среду массива, а не табличную, что делает невозможным использование таких команд, как
\specialrule{.1em}{.05em}{.05em}
\Xhline{2\arrayrulewidth}
\noalign {\ifnum 0=`}\fi \hrule height 1pt
\futurelet \reserved@a \@xhline
для того, чтобы сделать линию толще. Я решил проблему с вертикальными линиями с помощью команды
\newcolumntype{"}{@{\hskip\tabcolsep\vrule width 1pt\hskip\tabcolsep}}
и с горизонтальными линиями, используя
\Xhline{1pt}
Это правильно или есть способ лучше? Большое спасибо
Карло Альберто
решение1
Они все работают в array
среде. Вот демо с makecell
, boldline
и booktabs
. \cmidrule
можно даже использовать в xmatrix
средах:
\documentclass{article}
\usepackage{array, boldline, makecell, booktabs, amsmath}
\newcommand\btrule[1]{\specialrule{#1}{0pt}{0pt}}
\usepackage[svgnames, table]{xcolor}
\begin{document}
\[ \begin{array}{l!{\vline width 1pt}c | r }
\arrayrulecolor{IndianRed} \Xhline{1pt}
1 & 2 & 3 \\
\hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\Xhline{1pt}
\end{array}
\qquad
\begin{array}{ lV{2.5}c | r }
\hlineB{2.5}
1 & 2 & 3 \\
\hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\hlineB{2.5}
\end{array}
\qquad
\begin{array}{ l!{\color{IndianRed}\vline width 1pt}c | r }
\arrayrulecolor{IndianRed}
\btrule{1pt}
1 & 2 & 3 \\
\arrayrulecolor{black} \hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\arrayrulecolor{IndianRed}\btrule{1pt}
\end{array}
\qquad
\begin{bmatrix}
1 & 2 & 3 \\
\cmidrule(lr){1-3}
4 & 5 & 6 \\
\cmidrule(lr){1-2}
7 & 8 & 9 \\
\noalign{\setlength{\aboverulesep{-2ex}}
\arrayrulecolor{IndianRed}\cmidrule(lr){1-3}
\end{bmatrix}
\]
\end{document}
решение2
Для информации, вы также можете нарисовать толстые линии (или любое другое правило, которое вы хотите) в массиве со средой {NiceArray}
. nicematrix
Эта среда похожа на среду {array}
(из array
), но создает узлы PGF/Tikz под ячейками, строками и столбцами. Вы можете использовать Tikz, чтобы нарисовать любое правило, которое вы хотите, с помощью Tikz после построения массива.
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
$\begin{NiceArray}{ccccc}
1 & 2 & 10 & 14 & 15 \\
0 & 2 & 10 & 14 & 15 \\
0 & 0 & 10 & 14 & 15 \\
0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 \\
\CodeAfter
\tikz \draw [thick] (2-|1) -- (2-|2) |- (3-|3) |- (4-|6) ;
\end{NiceArray}$
\end{document}