从昨天开始,我就一直在网上寻找答案。但我要找的是带有白色/灰色背景、黑色标题行和白色文本的方框单元格表格。如果它有边框并且可以覆盖整个页面,则加分。我曾尝试在 tabularray 中执行此操作,但配色方案是我刚接触的东西,如果有人可以解释如何在 LaTeX 中有效地执行此操作,我将不胜感激。我尝试过的一些示例如下:
\documentclass{article}
\usepackage{booktabs}
\usepackage[landscape,a4paper]{geometry}
\usepackage{colortbl}
\usepackage{xcolor}
\usepackage{xfrac}
\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
\begin{document}
\begin{table*}\centering
\ra{1.3}
\begin{tabular}{c|c|c|c}\toprule
Nucleus & \textit{I} & Natural Abundance / \% & Larmor Frequency @ 7T \\
\midrule
\rowcolor{black!20} \textsuperscript{1}H & \sfrac{1}{2} & 99.98 & 298.0 \\
\textsuperscript{2}H & 1 & 0.02 & 45.7 \\
\rowcolor{black!20} \textsuperscript{12}C & 0 & 98.90 & - \\
\textsuperscript{13}C & \sfrac{1}{2} & 1.10 & 74.9 \\
\rowcolor{black!20} \textsuperscript{14}N & 1 & 99.60 & 21.5 \\
\textsuperscript{15}N & \sfrac{1}{2} & 0.40 & 30.2 \\
\rowcolor{black!20} \textsuperscript{16}O & 0 & 99.96 & - \\
\textsuperscript{17}O & \sfrac{1}{2} & 0.04 & 40.4 \\
\bottomrule
\end{tabular}
\end{table*}
\end{document}
\documentclass{article}
\usepackage{CormorantGaramond}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\tikzset{
table/.style={
matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={
rectangle,
draw=black,
align=center
},
minimum height=1.5em,
text depth=0.5ex,
text height=2ex,
nodes in empty cells,
%%
every even row/.style={
nodes={fill=gray!20}
},
column 1/.style={
nodes={text width=2em,font=\bfseries}
},
row 1/.style={
nodes={
fill=black,
text=white,
font=\bfseries
}
}
}
}
\begin{tikzpicture}
\matrix (first) [table,text width=6em]
{
& Monday & Tuesday & Wednesday & Thursday & Friday\\
1 & A & B & C & D & E \\
2 & F & G & H & J & K \\
3 & A & B & C & D & E \\
4 & F & G & H & J & K \\
};
\end{tikzpicture}
\end{document}
取自:
https://tinkertailorsoldiersponge.com/blog/2014/07/07/fancy-thesis-tables-in-latex
和
输出结果更接近我想要的是第二个。
答案1
以下是我制作第一个表格的方法,但使其看起来更像第二个表格tabularray
。我在后面的选项中注释了指定的选项\begin{tblr}
,希望它们的作用一目了然。
查看tabularray 文档了解有关每个选项的更多信息。
\documentclass{article}
\usepackage{CormorantGaramond}
\usepackage[italic]{mathastext}% Garamond for numbers too
\usepackage{xfrac}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}% library for aligning at decimal place
\begin{document}
\begin{table*}\centering
\begin{tblr}{
colspec={Q[c,m] Q[c,m] % first two columns centered in middle
Q[m,c,si={table-format=2.2},wd=7em] % next two centered but aligned at decimals
Q[m,c,si={table-format=3.1},wd=7em]}, % also a fixed width, so header wraps
row{odd} = {bg=black!20},% make odd rows have gray background
row{1} = {bg=black,fg=white,font=\bfseries},% top row black with white foreground and in bold
vlines,hlines, % use both horizontal and vertical lines
}
{{{Nucleus}}} & {{{\textit{I}}}} & {{{Natural \\ Abundance / \%}}} & {{{Larmor \\ Frequency @ 7T}}} \\
\textsuperscript{1}H & \sfrac{1}{2} & 99.98 & 298.0 \\
\textsuperscript{2}H & 1 & 0.02 & 45.7 \\
\textsuperscript{12}C & 0 & 98.90 & {{{---}}} \\
\textsuperscript{13}C & \sfrac{1}{2} & 1.10 & 74.9 \\
\textsuperscript{14}N & 1 & 99.60 & 21.5 \\
\textsuperscript{15}N & \sfrac{1}{2} & 0.40 & 30.2 \\
\textsuperscript{16}O & 0 & 99.96 & {{{---}}} \\
\textsuperscript{17}O & \sfrac{1}{2} & 0.04 & 40.4
\end{tblr}
\end{table*}
\end{document}
当然有办法让它填满整个页面,但是这个特定的表没有数据来实现这一点,我想先看看其余部分的样子,然后再决定它们的排列方式。
可以说,如果删除内部线条,它看起来会一样好:
\documentclass{article}
\usepackage{CormorantGaramond}
\usepackage[italic]{mathastext}% Garamond for numbers too
\usepackage{xfrac}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}% library for aligning at decimal place
\begin{document}
\begin{table*}\centering
\begin{tblr}{
colspec={|Q[c,m] Q[c,m] % first two columns centered in middle
Q[m,c,si={table-format=2.2},wd=7em] % next two centered but aligned at decimals
Q[m,c,si={table-format=3.1},wd=7em]|}, % also a fixed width to header wraps
row{odd} = {bg=black!20},% make odd rows have gray background
row{1} = {bg=black,fg=white,font=\bfseries},% top row black with white spacing and in bold
% use both horizontal and vertical lines
}
{{{Nucleus}}} & {{{\textit{I}}}} & {{{Natural \\ Abundance / \%}}} & {{{Larmor \\ Frequency @ 7T}}} \\
\textsuperscript{1}H & \sfrac{1}{2} & 99.98 & 298.0 \\
\textsuperscript{2}H & 1 & 0.02 & 45.7 \\
\textsuperscript{12}C & 0 & 98.90 & {{{---}}} \\
\textsuperscript{13}C & \sfrac{1}{2} & 1.10 & 74.9 \\
\textsuperscript{14}N & 1 & 99.60 & 21.5 \\
\textsuperscript{15}N & \sfrac{1}{2} & 0.40 & 30.2 \\
\textsuperscript{16}O & 0 & 99.96 & {{{---}}} \\
\textsuperscript{17}O & \sfrac{1}{2} & 0.04 & 40.4 \\ \hline
\end{tblr}
\end{table*}
\end{document}
编辑:正如评论中提到的,新列在 tblr 选项中使用该colspec={...}
选项指定。这类似于{|c|c|c|c|}
您在典型tabular
环境中看到的指定列的部分。
不同之处在于 tabularray 允许更多选项,因此通用列规范看起来像Q[m,c,wd=2in]
而不仅仅是c
,带有Q
跟着括号中的选项列表。您可以在第 20 页找到可用的选项文档。
(还有一些其他选项,例如S
和X
类型列,但这些与具有某些选项的列相同Q
;文档中有详细信息。)
如果你希望表格占据整个页面的宽度,通常最好有一个或多个可扩展列,与 tabularx 的列类似X
。但是,tabularray 使用扩展系数来实现这一点,扩展系数设置了列在扩展时的相对宽度。
您还可以使用 手动将列宽指定为固定大小wd=
。
带有 或wd=
的co=
列允许换行,因此可以换行成段落。下面是一个包含三列的示例,所有列都允许段落。
\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{lipsum}% generate dummy paragraphs
\begin{document}
\lipsum[5]
\begin{table*}[h]\centering
\begin{tblr}{colspec={
Q[wd=0.8in,l,m]% first column is exactly 1in wide, left aligned in the vertical middle
Q[co=1,l,m]% second column has an expandable width of coefficient 1
Q[co=2,l,m]% third column has an expandable width of coefficient 2 (Wider)
},% end of colspec
row{odd} = {bg=black!20},% make odd rows have gray background
row{1} = {bg=black,fg=white,font=\bfseries},% top row black with white foreground and in bold
hlines,vlines
}
Fixed & Expands & Expands Wider \\
\lipsum[1][1] & \lipsum[2][1-2] & \lipsum[3][1-2] \\
\end{tblr}
\end{table*}
\end{document}
具有系数的元素将自然扩展以填充页面的宽度;系数越大,它们的相对尺寸就越大。
如果您希望每列具有相同的宽度,则可以co=1
在所有列中使用相同的宽度规范。