Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Is there any way to get automatic row numbers in table?

For example, if I define table contents as

\begin{tabular} % black magic column definition
   \rownumber & foo\\
   \rownumber & bar\\
   \rownumber & baz\\
\end{tabular}

and get something like

1 | foo
2 | bar
3 | baz
share|improve this question

3 Answers 3

up vote 8 down vote accepted
\documentclass{article}
\usepackage{array,etoolbox}
\preto\tabular{\setcounter{magicrownumbers}{0}}
\newcounter{magicrownumbers}
\newcommand\rownumber{\stepcounter{magicrownumbers}\arabic{magicrownumbers}}
\begin{document}

\begin{tabular}{@{\makebox[3em][r]{\rownumber\space}} | r}
  Something \\
  Other stuff \\
  MAGIC!
\end{tabular}

\end{document}
share|improve this answer
    
Is it possible to start numbering at the second line? i.e. have a header row? TIA. –  Fabian Tamp Oct 10 '12 at 12:00
    
@Herbert Is it possible what Fabian asked? Starting at the second or third line? –  Isai Jun 29 '13 at 5:22
1  
edit the command \rownumber that it test the value: \ifnum\themagicrownumber>2\relax\arabic{magicrownumbers}\fi` then it puts only the number at the third row –  Herbert Jun 30 '13 at 7:08
    
@Herbert Do you mean replace \begin{tabular}{@{\makebox[3em][r]{\rownumber\space}} | r} with \begin{tabular}{@{\makebox[3em][r]{\ifnum\themagicrownumber>2\relax\arabic{magic‌​rownumbers}\fi\space}} | r} ? When I do that, I get "Undefined control sequence" errors. –  David Doria Jul 7 at 14:21
    
@FabianTamp: for the first (column in the first) line use \multicolumn{1}{r}{stuff} and it should not be numbered. –  Herbert Jul 7 at 14:40

You could just make it use a counter...

\documentclass{article}
\newcounter{magicrownumbers}
\newcommand\rownumber{\stepcounter{magicrownumbers}\arabic{magicrownumbers}}
\begin{document}
\begin{tabular}{l|r}
  \rownumber & Something \\
  \rownumber & Other stuff \\
  \rownumber & MAGIC!
\end{tabular}
\end{document}
share|improve this answer
    
Is there any frendly way to reset the counter between tables? –  miah Jun 21 '11 at 11:56
2  
@miah: Load etoolbox and say \preto\tabular{\setcounter{magicrownumbers}{0}} –  egreg Jun 21 '11 at 11:58
    
@egreg I put that before my second table but the counter did not reset. I had to use simply \setcounter{magicrownumbers}{0} instead –  David Doria Jul 7 at 14:27
    
@DavidDoria That code should go in the preamble. –  egreg Jul 7 at 14:29
    
@egreg Hm, even with that in the preamble, the row numbers do not reset for me unless I clear the counter manually as I explained. –  David Doria Jul 7 at 15:05

A quick plain-format version as well for completenes:

\newcount\rowcount
\def\myhalign#1{\halign{\global\advance\rowcount by 1 \the\rowcount\quad##&#1}\rowcount=0}
% Yes, yes, next up in *sniping*: "One problem: you can't use repeating preamble"...
\myhalign{#\hfil\cr
  blah\cr
  foo\cr}
\halign{#\hfil\cr
  bar\cr
  baz\cr}
\myhalign{&#\hfil\cr
  asdf&asdf&asdf\cr
  sdfg&asdf&dfgh\cr}
\myhalign{#\hfil&&\hfil#\cr
  doesn't&work\cr
  boo&hoo\cr}
\bye
share|improve this answer
    
Two problems. 1. Every subsequent \halign will advance the counter even if it doesn't need it. 2. If a row shouldn't be numbered (a header), omitting \the\rowcount would not avoid stepping the counter. The stepping should go in the table preamble. –  egreg Jun 21 '11 at 14:48
    
@egreg I wasn't aiming for a be-all-end-all solution; just an answer to the question. –  morbusg Jun 21 '11 at 14:51
    
@egreg: You don't need the @<username>-notation when you're addressing your comment to the answerer/questioner. –  morbusg Jun 21 '11 at 14:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.