我正在尝试创建一个表格环境:
一个跨越任意数量列的标题行,
对齐的、自动编号的单元格,单元格中的数字对齐,
所有数字和内容单元格之间的间距均匀,
并且只需要传递列数和标题文本作为参数。
我几乎已经拥有它了:
\documentclass[a4paper]{book}
\usepackage{environ}
\usepackage{tabu}
\usepackage{array}
\newcounter{mycounter}
\newcommand{\mycount}{\stepcounter{mycounter}\arabic{mycounter})}
\makeatletter
\edef\numcols{\tabu@nbcols} % allows for arbitrary column span
\makeatother
\newcolumntype{C}{>{\mycount\makebox[1em]}l}
\NewEnviron{mytable}[2]{ % table format, header text
\begin{tabu}{#1}
\multicolumn{\numcols}{c}{#2} \\
\BODY
\end{tabu}
}
\begin{document}
\begin{mytable}{CCCC}{I span all columns.} % cell content chosen at random
83 & some text & $23+7$ & 9999 \\
5000 & more text & $23+7$ & 9999 \\
5000 & 83 & $23+7$ & 9999 \\
\end{mytable}
\end{document}
编译:
这几乎解决了问题,问题是单元格编号不对齐(我希望括号对齐),并且数字较多的单元格编号会将其他内容移到侧面,如显示在底行中。解决这个问题的最佳方法是什么?
答案1
使用
\newcolumntype{C}{>{\makebox[1em][r]{\mycount}\hspace{0.5em}}l}