我正在尝试获取表中的序列号,但某些行需要子编号,如下所示:
S. No. X Y Z
1 1 12 1
2 4 34 3
3 5 54 2
4.a 6 34 5
4.b 8 32 7
5 1 44 7
6 4 11 4
7 6 45 2
8.a 3 23 5
8.b 4 43 4
8.c 3 54 2
8.d 1 65 1
9 1 76 3
10 5 87 4
如何在 LaTeX 中获得这样的行子编号?
平均能量损失
\documentclass{article}
\begin{document}
\begin{table}[]
\centering
\caption{Row sub numbering}
\label{my-label}
\begin{tabular}{llll}
S. No. & X & Y & Z \\
1 & 1 & 12 & 1 \\
2 & 4 & 34 & 3 \\
3 & 5 & 54 & 2 \\
4.a & 6 & 34 & 5 \\
4.b & 8 & 32 & 7 \\
5 & 1 & 44 & 7 \\
6 & 4 & 11 & 4 \\
7 & 6 & 45 & 2 \\
8.a & 3 & 23 & 5 \\
8.b & 4 & 43 & 4 \\
8.c & 3 & 54 & 2 \\
8.d & 1 & 65 & 1 \\
9 & 1 & 76 & 3 \\
10 & 5 & 87 & 4 \\
\end{tabular}
\end{table}
\end{document}
答案1
使用suspension
和resume
功能xassoccnt
可以设置一个N
列类型,该列类型既可以作为常规的计数行,也可以输入子行功能。
\enablesubrow
在请求的子行之前和\disablesubrow
切换回旧编号样式之前使用。
由于表格单元格是(La)TeX
组,因此必须全局设置条件,以使设置从一个组保留到下一个组,即使用\global\subrowtrue
和\global\subrowfalse
。
\documentclass{article}
\usepackage{array}
\usepackage{xassoccnt}
\newcounter{rowcntr}[table]
\newcounter{realrowcntr}[table]
\newcounter{subrowcntr}
\newif\ifsubrow
\newcommand{\enablesubrow}{%
\global\subrowtrue%
}
\newcommand{\disablesubrow}{%
\global\subrowfalse%
\ResumeSuspendedCounters{rowcntr}%
\setcounter{subrowcntr}{0}% Reset subrows
}
\renewcommand{\thesubrowcntr}{%
\ifsubrow
\stepcounter{subrowcntr}%
\therowcntr.\alph{subrowcntr}%
\else
\therowcntr%
\fi
}
\newcommand{\checksubrowstuff}{%
\stepcounter{realrowcntr}%
\ifnum\value{realrowcntr}>1
\stepcounter{rowcntr}%
\ifsubrow
\SuspendCounters{rowcntr}% Do not increase any longer
\fi
\thesubrowcntr%
\fi
}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}%
\newcolumntype{N}[1]{>{\checksubrowstuff\arraybackslash}R{#1}}
\begin{document}
\begin{table}
\centering
\caption{Row sub numbering}
\label{my-label}
\begin{tabular}{N{1.5cm}lll}
S. No. & X & Y & Z \\
& 1 & 12 & 1 \\
& 4 & 34 & 3 \\
& 5 & 54 & 2 \enablesubrow \\
& 6 & 34 & 5 \\
& 8 & 32 & 7 \disablesubrow \\
& 1 & 44 & 7 \\
& 4 & 11 & 4 \\
& 6 & 45 & 2 \enablesubrow\\
& 3 & 23 & 5 \\
& 4 & 43 & 4 \\
& 3 & 54 & 2 \\
& 1 & 65 & 1 \disablesubrow\\
& 1 & 76 & 3 \\
& 5 & 87 & 4 \\
\end{tabular}
\end{table}
\end{document}