我知道一种自动编号的方法。但同时,你仍然需要写出单词\Rownum 每次都在新行上。有什么办法可以避免每次都这样写吗?
\documentclass[a4paper,12pt]{article}
\usepackage{cmap}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{caption}
\begin{document}
\newcounter{rownum}
\setcounter{rownum}{0}
\newcommand{\Rownum}{\stepcounter{rownum}
\arabic{rownum}. }
\begin{tabular}{ |l|l| }
number & value \\
\Rownum & 4.53 \\
\Rownum & 6.74 \\
\end{tabular}
\end{document}
答案1
一个带有 的实现expl3
。
\documentclass{article}
\ExplSyntaxOn
% #1 body var #2 body #3 head
\cs_new_protected:Nn \__table_with_number:Nnn {
\regex_split:nnN { \c{\\} } {#2} \l__table_line_seq
\tl_clear_new:N #1
\seq_map_indexed_inline:Nn \l__table_line_seq {
\int_compare:nNnTF {##1} = {1} {
\tl_put_right:Nn #1 { #3 & ##2 \\ }
} {
\tl_if_empty:nF {##2}
{ \tl_put_right:Nn #1 { \int_eval:n { ##1 - 1 }. & ##2 \\ } }
}
}
}
\NewDocumentEnvironment { Table } { O{number} m +b } {
\__table_with_number:Nnn \l__table_body_tl {#3} {#1}
\begin{tabular}{#2}
\l__table_body_tl
\end{tabular}
}
\ExplSyntaxOff
\begin{document}
\begin{Table}{ll}
value \\
1 \\
2.3 \\
\end{Table}
\end{document}
答案2
谢谢大家,我找到了最短、最简单、最有效的方法:
\documentclass[a4paper,12pt]{article}
\usepackage{cmap}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{caption}
\usepackage{array,etoolbox} % For automatic numbering
\begin{document}
\newcounter{rownum} % Declare a new counter for autonumbering rows in the table
\setcounter{rownum}{0} % Set the initial value of the counter
\newcommand{\Rownum}{\stepcounter{rownum} % Add one when calling a function
\arabic{rownum} } % You can add a dot and a space at the end
\begin{tabular}{|>{\Rownum}l|l|}
\multicolumn{1}{|l|}{№} & value \\
& 4.53 \\
& 6.74 \\
\end{tabular}
\end{document}
答案3
正如评论所说,Bernard 的解决方案是最简单的,因此最好使用计数器,恕我直言。话虽如此,另一种可能性是不设置任何计数器或任何复杂的前导码。
如果您不了解 R 和knitr
,那么这个解决方案有点像用大炮打苍蝇(尽管我强烈建议您知道knitr
您是否经常处理 LaTeX 文档中的数字数据和/或图表)。如果您知道如何编译test.Rnw
下面的代码,则非常简单,因为任何数据框输出默认显示行号,因此您不必做任何特殊的事情,只需有一些数据框(它可以从 CSV 或 Excel 等几种格式导入,或者只需输入 R 代码,如示例中所示)并使用xtable
(或kable
,或其他一些 R 包)将其打印为 LaTeX 表:
% test.Rnw
\documentclass{article}
\usepackage{booktabs} % for better rules
\begin{document}
<<table1, echo=F,results='asis'>>=
library(xtable)
# the data
df <- data.frame(
value=c(4.53, 6.74,7.1),
price=c(23,45,15))
# the table
xtable(df)
@
With a header for the counter
(rather superfluous, but ...)
and some table format:
<<table2,echo=F,results='asis'>>=
df$number <- rownames(df) # numbers as variable
df <- df[,c(3,1,2)] # numbers as first column
print(xtable(df,align="lccc",digits=c(0,0,2,0)),
include.rownames=F,booktabs=T)
@
\end{document}