我正在尝试重现该表:
(抱歉,手机拍的照片太差了)
我不知道如何得到稍微粗一点的最左边和最上面的线。
这是我目前所拥有的一个简单的例子:
\documentclass[a4paper,12pt]{article}
\begin{document}
\begin{tabular}{c|c|c|c|c|c}
$*$ & $a$ & $b$ & $c$ & $d$ & $e$ \\\hline
$a$ & $a$ & $b$ & $c$ & $b$ & $d$ \\\hline
$b$ & $b$ & $c$ & $a$ & $e$ & $c$ \\\hline
$c$ & $c$ & $a$ & $b$ & $b$ & $a$ \\\hline
$d$ & $b$ & $e$ & $b$ & $e$ & $d$ \\\hline
$e$ & $d$ & $b$ & $a$ & $d$ & $c$
\end{tabular}
\end{document}
有没有简单的方法可以使最左边和最上面的线条变粗?
答案1
您可以像下面这样定义一个加厚版本\hline
和一个加厚|
的新列类型。两者都基于原始代码,只是厚度从\arrayrulewidth
改为1pt
。
\documentclass[a4paper,png]{standalone}
\usepackage{array}
\makeatletter
\newcommand{\thickhline}{%
\noalign {\ifnum 0=`}\fi \hrule height 1pt
\futurelet \reserved@a \@xhline
}
\newcolumntype{"}{@{\hskip\tabcolsep\vrule width 1pt\hskip\tabcolsep}}
\makeatother
\begin{document}
\begin{tabular}{c"c|c|c|c|c}
$*$ & $a$ & $b$ & $c$ & $d$ & $e$ \\\thickhline
$a$ & $a$ & $b$ & $c$ & $b$ & $d$ \\\hline
$b$ & $b$ & $c$ & $a$ & $e$ & $c$ \\\hline
$c$ & $c$ & $a$ & $b$ & $b$ & $a$ \\\hline
$d$ & $b$ & $e$ & $b$ & $e$ & $d$ \\\hline
$e$ & $d$ & $b$ & $a$ & $d$ & $c$
\end{tabular}
\end{document}
根据此处的要求,提供以下厚版的定义\cline
:
\newcommand{\thickcline}[1]{%
\@thickcline #1\@nil%
}
\def\@thickcline#1-#2\@nil{%
\omit
\@multicnt#1%
\advance\@multispan\m@ne
\ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
\@multicnt#2%
\advance\@multicnt-#1%
\advance\@multispan\@ne
\leaders\hrule\@height1pt\hfill
\cr
\noalign{\vskip-1pt}%
}
答案2
包裹tabu
通过垂直线和命令的可选参数提供这样的修改\tabucline
\documentclass[a4paper,12pt]{article}
\usepackage{tabu}
\begin{document}
\begin{tabu}{c|[2pt]c|c|c|c|c}
$*$ & $a$ & $b$ & $c$ & $d$ & $e$ \\\tabucline[2pt]{-}
$a$ & $a$ & $b$ & $c$ & $b$ & $d$ \\\hline
$b$ & $b$ & $c$ & $a$ & $e$ & $c$ \\\hline
$c$ & $c$ & $a$ & $b$ & $b$ & $a$ \\\hline
$d$ & $b$ & $e$ & $b$ & $e$ & $d$ \\\hline
$e$ & $d$ & $b$ & $a$ & $d$ & $c$
\end{tabu}
\end{document}
但是,要制作美观的表格,请避免使用垂直线,并尽量少用水平线。为此,我推荐使用 booktabs 包。通过谷歌,您会找到很多示例。
答案3
{NiceTabular}
这是使用 的解决方案nicematrix
。该环境类似于经典的{tabular}
( array
),但在单元格、行和列下创建 PGF/Tikz 节点。可以使用这些节点在 中使用 Tikz 绘制您想要的任何规则\CodeAfter
。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
$\begin{NiceArray}{cccccc}[hvlines-except-borders]
* & a & b & c & d & e \\
a & a & b & c & b & d \\
b & b & c & a & e & c \\
c & c & a & b & b & a \\
d & b & e & b & e & d \\
e & d & b & a & d & c
\CodeAfter
\tikz \draw [thick, line cap = round] (2-|1) -- (2-|last) (1-|2) -- (last-|2) ;
\end{NiceArray}$
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
使用最新版本nicematrix
(2022-07-16 的 v. 6.11),还可以定义具有任何所需 Tikz 特性的命令(用于水平规则)和字母(用于垂直规则)。
\documentclass[a4paper,12pt]{article}
\usepackage{nicematrix,tikz}
\begin{document}
\NiceMatrixOptions
{
custom-line =
{
letter = I , % for the vertical rules
command = boldhline , % the horizontal rules
total-width = 1 pt ,
tikz = { line width = 1 pt }
}
}
\begin{NiceTabular}{cIc|c|c|c|c}
$*$ & $a$ & $b$ & $c$ & $d$ & $e$ \\\boldhline
$a$ & $a$ & $b$ & $c$ & $b$ & $d$ \\\hline
$b$ & $b$ & $c$ & $a$ & $e$ & $c$ \\\hline
$c$ & $c$ & $a$ & $b$ & $b$ & $a$ \\\hline
$d$ & $b$ & $e$ & $b$ & $e$ & $d$ \\\hline
$e$ & $d$ & $b$ & $a$ & $d$ & $c$
\end{NiceTabular}
\end{document}
输出并不完全相同,因为现在为规则的宽度(水平和垂直)保留了一个空间。