如何更改表格中的线粗细?

如何更改表格中的线粗细?

我只是想让桌子看起来像图片中的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包)定义\hlineBclineB采用数字参数(多少次\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\hlinenicematrix

\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(或\defTeX 等)定义快捷方式。

\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

最后一段代码的输出

相关内容