我只是想让桌子看起来像图片中的LaTeX Wiki 书籍:
在此示例中,顶部和底部\hline
比表格中间的线条更粗、更暗。此示例未显示任何特殊格式,但当我在文档中执行此操作时,它们都具有相同的粗细和暗度(线条都相同)。我希望\hline
表格中间的水平线更细、更亮,如图所示。据我所知,调整高度和宽度对此没有明显影响。我该怎么做?
答案1
你可以\thickhline
使用 TeX 原语来定义你的:
\def\thickhline{\noalign{\hrule height.8pt}}
因此,来自的例子另一个答案好像:
\documentclass{article}
\def\thickhline{\noalign{\hrule height.8pt}}
\begin{document}
\begin{tabular}{ l | c | r }
\hline
1 & 2 & 3 \\
\hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\hline
\end{tabular}
\qquad
\begin{tabular}{ l | c | r }
\thickhline
1 & 2 & 3 \\
\hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\thickhline
\end{tabular}
\end{document}
具有完全相同的输出。
答案2
您可以定义自己的\thickhline
基于的\hline
,但不同的\arrayrulewidth
:
\documentclass{article}
\makeatletter
\def\thickhline{%
\noalign{\ifnum0=`}\fi\hrule \@height \thickarrayrulewidth \futurelet
\reserved@a\@xthickhline}
\def\@xthickhline{\ifx\reserved@a\thickhline
\vskip\doublerulesep
\vskip-\thickarrayrulewidth
\fi
\ifnum0=`{\fi}}
\makeatother
\newlength{\thickarrayrulewidth}
\setlength{\thickarrayrulewidth}{2\arrayrulewidth}
\begin{document}
\begin{tabular}{ l | c | r }
\hline
1 & 2 & 3 \\
\hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\hline
\end{tabular}
\qquad
\begin{tabular}{ l | c | r }
\thickhline
1 & 2 & 3 \\
\hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\thickhline
\end{tabular}
\end{document}
在上面的例子中,\thickhline
插入一个\hrule
宽度是 的两倍的\arrayrulewidth
。后者的默认值为0.4pt
。您可以\thickhline
通过调整 将 的宽度更改为您想要的任何宽度\thickarrayrulewidth
。
答案3
另外三种可能性:
- 该
makecell
包除了允许在标准单元格中换行之外,还定义了以规则厚度作为强制参数的\Xhline
和命令。\Xcline
- 包
boldline
(来自shipunov
包)定义\hlineB
并clineB
采用数字参数(多少次\arrayrulewidth
,默认为 0.4pt)。此外,您还可以V{some number}
在表格序言中,在 的位置使用不同粗细的垂直线|
。 booktabs
– 这不是为此设计的 ;o) – 允许使用命令将粗水平线与垂直线兼容,该\specialrule
命令有三个参数:其厚度以及上下填充。因此,我定义了一个快捷方式,将填充设置为 0。booktabs 的优势:它兼容,\arrayrulecolor
而前两个则不兼容。
演示:
\documentclass{article}
\usepackage{array, boldline, makecell, booktabs}
\newcommand\btrule[1]{\specialrule{#1}{0pt}{0pt}}
\usepackage[svgnames, table]{xcolor}
\begin{document}
\begin{tabular}{l!{\vline width 1pt}c | r }
\arrayrulecolor{IndianRed} \Xhline{1pt}
1 & 2 & 3 \\
\hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\Xhline{1pt}
\end{tabular}
\qquad
\begin{tabular}{ lV{2.5}c | r }
\hlineB{2.5}
1 & 2 & 3 \\
\hline
4 & 5 & 6 \\
\hline
7 & 8 & 9 \\
\hlineB{2.5}
\end{tabular}
\qquad
\begin{tabular}{ 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{tabular}
\end{document}
答案4
使用,您{NiceTabular}
可以在 的可选参数和(中的 版本)中nicematrix
指定 TikZ 规则的所有特征(例如) 。thick
|
\Hline
\hline
nicematrix
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\setlength{\arrayrulewidth}{0.2pt}
\begin{NiceTabular}{|c|[tikz=thick]c|c|}
\Hline[tikz=thick]
1 & 2 & 3 \\
\Hline
4 & 5 & 6 \\
\Hline
7 & 8 & 9 \\
\Hline[tikz=thick]
\end{NiceTabular}
\end{document}
如果您愿意,您可以使用标准命令\newcolumntype
和\newcommand
(或\def
TeX 等)定义快捷方式。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\setlength{\arrayrulewidth}{0.2pt}
\newcolumntype{I}{|[tikz=thick]}
\newcommand{\MyHline}{\Hline[tikz=thick]}
\begin{NiceTabular}{|cIc|c|}
\MyHline
1 & 2 & 3 \\
\Hline
4 & 5 & 6 \\
\Hline
7 & 8 & 9 \\
\MyHline
\end{NiceTabular}
\end{document}
输出是一样的。
仍然可以向该命令\MyHline
和该字母添加选项I
来改变规则的颜色。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\setlength{\arrayrulewidth}{0.2pt}
\newcolumntype{I}{|[tikz=thick]}
\newcommand{\MyHline}{\Hline[tikz=thick]}
\begin{NiceTabular}{|cI[color=blue]c|c|}
\MyHline[color=red]
1 & 2 & 3 \\
\Hline
4 & 5 & 6 \\
\Hline
7 & 8 & 9 \\
\MyHline
\end{NiceTabular}
\end{document}
但是,nicematrix
提供了一个工具来为同一类型的规则定义字母和命令(并且这些定义仅在的环境中可用nicematrix
)。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\setlength{\arrayrulewidth}{0.2pt}
\NiceMatrixOptions
{
custom-line =
{
command = MyHline ,
letter = I ,
tikz = { color = red, line width = 1 pt } ,
total-width = 1pt
}
}
\begin{NiceTabular}{|cIc|c|}
\MyHline
1 & 2 & 3 \\
\Hline
4 & 5 & 6 \\
\Hline
7 & 8 & 9 \\
\MyHline
\end{NiceTabular}
\end{document}
使用此代码,对规则有所保留(垂直和水平)得益于按键total-width
。