\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{>{\arabic{iRow}}cc>{\alph{iRow}}cc}[first-row]
\multicolumn{1}{c}{}\Block{1-2}{Name} && \Block{1-2}{Country} & \\
& George && France \\
& John && Hellas \\
& Paul && England \\
& Nick && USA \\
\end{NiceTabular}
\end{document}
问题
- 我的代码可以吗?
- 有没有更好的代码?(带有 nicematrix 且不带有
\multicolumn
第一行)
答案1
第二个NiceTabular
重现了第一个,但没有使用\multicolumn
或first-row
。
\NRow
将输出从第二行开始减 1 的行号。\ARow
对字母输出执行相同操作。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{>{\arabic{iRow}}cc>{\alph{iRow}}cc}[first-row]
\multicolumn{1}{c}{}\Block{1-2}{Name} && \Block{1-2}{Country} & \\
& George && France \\
& John && Hellas \\
& Paul && England \\
& Nick && USA \\
\end{NiceTabular}
\bigskip
% *************************************************** added <<<<<
\newcounter{iRowtmp}
\newcommand{\NRow}{\ifnum\value{iRow} >1 \the\numexpr\value{iRow}-1\fi}
\newcommand{\ARow}{\ifnum\value{iRow} >1 \setcounter{iRowtmp}{\the\numexpr\value{iRow}-1} \alph{iRowtmp}\fi}
\begin{NiceTabular}{>{\NRow}cc>{\ARow}cc}
\Block{1-2}{Name} & & \Block{1-2}{Country} & \\
& George& & France \\
& John & & Hellas \\
& Paul & & England \\
& Nick & & USA \\
\end{NiceTabular}
\end{document}
有趣的一点(在@Alan Munn 评论之后):\ARow
可以通过抑制行号检查来进一步简化命令,如下所示
\newcommand{\ARow}{\setcounter{iRowtmp}{\the\numexpr\value{iRow}-1}\space\alph{iRowtmp}}
它仍将在第一行(其中\iRow-1=0
})上起作用,因为\space\alph{<\iRow-1>}
只会产生空白。
答案2
简化西蒙的回答,您只需向第一列行代码添加一个条件即可:
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{>{\ifnum\value{iRow}=0\else\arabic{iRow}\fi}cc>{\alph{iRow}}cc}[first-row]
& Name&& Country\\
& George && France \\
& John && Hellas \\
& Paul && England \\
& Nick && USA \\
\end{NiceTabular}
\end{document}
我实际上并不清楚为什么只需要在其中一个列规范中使用条件代码(无论是在第一列还是第二列规范中;无论哪种方式,它都会抑制该行中所有列的计数器)。