我不知道该怎么做了,我尝试使用 \block 命令生成带有标签的表格(如果这很重要,我正在使用 XeLateX,因为使用默认命令我会得到像素化字体)。我的问题是:
- 使用 \block 命令时如何换行?
- 如何在左侧标签和表格之间添加水平空间以及在顶部标签和表格之间添加垂直空间?
- 为什么有一条垂直线比其他线长得多?
这是我的最小工作示例:
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{table}
\centering
\begin{NiceTabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c}[code-before = \cellcolor[HTML]{FCAA78}{3-3,3-4,3-5,3-
6,4-7,4-8,4-9,5-6,5-7} \cellcolor[HTML]{F8696B}{3-7,3-8,3-9,5-8} \cellcolor[HTML]{FFEB84}{3-10,3-
11,3-13,3-14,4-4,4-5,4-6,4-10,4-11,4-13,5-9} \cellcolor[HTML]{CBDC81}{3-12,5-10} \cellcolor[HTML]
{97CD7E}{4-12,5-11} \cellcolor[HTML]{63BE7B}{4-14,5-12,5-13,5-14}]
\Block{1-13}{Loading Volume [$\mu$L]}\\
\Block{4-1}{\rotate Injection Volume [$\mu$L]} & & 5 & 5.3 & 10 & 10.3 & 15 & 20 & 25 & 30
& 35 & 40 & 45 & 50 \\ \cline{2-14}
& 1 & 0.2 & 0.2 & 0.2 & 0.2 & 0.25 & 0.25 & 0.25 & 0.15 & 0.15 & 0.1 & 0.15 & 0.15 \\ \cline{2-
14}
& 5 & & 0.15 & 0.15 & 0.15 & 0.2 & 0.2 & 0.2 & 0.15 & 0.15 & 0.05 & 0.15 & 0 \\ \cline{2-
14}
& 10 & & & & 0.2 & 0.2 & 0.25 & 0.15 & 0.1 & 0.05 & 0 & 0 & 0
\end{NiceTabular}
\end{table}
\end{document}
答案1
first-row
我建议使用和键first-col
作为图例。这样,您可以使用\hline
(而不是cline
)。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\begin{document}
\begin{table}
\centering
\begin{NiceTabular}{c*{12}{|c}}[first-col,first-row]
\CodeBefore
\cellcolor[HTML]{FCAA78}{2-2,2-3,2-4,2-5,3-6,3-7,3-8,4-5,4-6}
\cellcolor[HTML]{F8696B}{2-6,2-7,2-8,4-7}
\cellcolor[HTML]{FFEB84}{2-9,2-10,2-12,2-13,3-3,3-4,3-5,3-9,3-10,3-12,4-8}
\cellcolor[HTML]{CBDC81}{2-11,4-9}
\cellcolor[HTML]{97CD7E}{3-11,4-10}
\cellcolor[HTML]{63BE7B}{3-13,4-11,4-12,4-13}
\Body
\Block{1-14}{Loading Volume [$\mu$L]}\\[1mm]
\Block{4-1}<\rotate>{Injection\\ Volume [$\mu$L]} & & 5 & 5.3 & 10 & 10.3 & 15 & 20 & 25 & 30
& 35 & 40 & 45 & 50 \\ \hline
& 1 & 0.2 & 0.2 & 0.2 & 0.2 & 0.25 & 0.25 & 0.25 & 0.15 & 0.15 & 0.1 & 0.15 & 0.15 \\ \hline
& 5 & & 0.15 & 0.15 & 0.15 & 0.2 & 0.2 & 0.2 & 0.15 & 0.15 & 0.05 & 0.15 & 0 \\ \hline
& 10 & & & & 0.2 & 0.2 & 0.25 & 0.15 & 0.1 & 0.05 & 0 & 0 & 0
\CodeAfter
\tikz \draw [white] (5-|1) -- (5-|14) ;
\end{NiceTabular}
\end{table}
\end{document}
指令
\CodeAfter
\tikz \draw [white] (5-|1) -- (5-|14) ;
只是为了让垂直线达到完美的效果。没有那条白线,它们就有点太长了(因为这些垂直线实际上是为与最后一条水平线完美契合而设计的)。
在您的情况下,还可以根据单元格的内容自动计算单元格的颜色(使用相同的输出):
\documentclass{article}
\usepackage{nicematrix}
\usepackage{collcell}
\begin{document}
\ExplSyntaxOn
\newcolumntype { C } { > { \collectcell \MyColorCell } c < { \endcollectcell } }
\NewDocumentCommand \MyColorCell { m }
{
\OnlyMainNiceMatrix
{
\str_case:nn { #1 }
{
{ 0 } { \cellcolor[HTML]{63BE7B} }
{ 0.05 } { \cellcolor[HTML]{97CD7E} }
{ 0.1 } { \cellcolor[HTML]{CBDC81} }
{ 0.15 } { \cellcolor[HTML]{FFEB84} }
{ 0.2 } { \cellcolor[HTML]{FCAA78} }
{ 0.25 } { \cellcolor[HTML]{F8696B} }
}
}
#1
}
\ExplSyntaxOff
\begin{table}
\centering
\begin{NiceTabular}{C*{12}{|C}}[colortbl-like,first-col,first-row]
\Block{1-14}{Loading Volume [$\mu$L]}\\[1mm]
\Block{4-1}<\rotate>{Injection\\ Volume [$\mu$L]}
& & 5 & 5.3 & 10 & 10.3 & 15 & 20 & 25 & 30 & 35 & 40 & 45 & 50 \\ \hline
& 1 & 0.2 & 0.2 & 0.2 & 0.2 & 0.25 & 0.25 & 0.25 & 0.15 & 0.15 & 0.1 & 0.15 & 0.15 \\ \hline
& 5 & & 0.15 & 0.15 & 0.15 & 0.2 & 0.2 & 0.2 & 0.15 & 0.15 & 0.05 & 0.15 & 0 \\ \hline
& 10 & & & & 0.2 & 0.2 & 0.25 & 0.15 & 0.1 & 0.05 & 0 & 0 & 0
\end{NiceTabular}
\end{table}
\end{document}