Tout est dans le titre. Je le précise néanmoins : le but est d'obtenir une numérotation automatique (à la façon des items dans une liste), de façon à pouvoir insérer de nouvelles lignes (ou en supprimer) sans rupture.

Je n'ai pas vu de moyens de le faire, mais en LaTeX, tout est possible : alors…

Posée 14 Aoû '17, 18:29

fred02840's gravatar image

fred02840
4.2k17154187
Taux d'acceptation : 16%

Modifiée 16 Aoû '17, 15:10

Pathe's gravatar image

Pathe ♦♦
7.4k28196245


Voici une solution, recourant aux fonctionnalités du package array, qui combine l'idée de touhami et le souci de Nikopol de conserver la syntaxe de l'environnement tabular :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{array}
\newcounter{mtligne}
\begin{document}
\begin{tabular}{>{\stepcounter{mtligne} \themtligne}cll}
  \hline
  \multicolumn{1}{c}{\textbf{N}} & \textbf{Col. 1} & \textbf{Col. 2} \\\hline
                                 & Colonne 1       & Colonne 2       \\\hline
                                 & Colonne 1       & Colonne 2       \\\hline
                                 & Colonne 1       & Colonne 2
\end{tabular}
\end{document}

Mise à jour

Pour éviter de devoir manuellement réinitialiser le compteur dans le cas de plusieurs tableaux dont les lignes doivent être numérotées, on peut recourir à la commande \AtEndEnvironment du package etoolbox :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{array}
\usepackage{etoolbox}
\newcounter{mtligne}

\AtEndEnvironment{tabular}{\setcounter{mtligne}{0}}

\begin{document}
\begin{tabular}{>{\stepcounter{mtligne} \themtligne}cll}
  \hline
  \multicolumn{1}{c}{\textbf{N}} & \textbf{Col. 1} & \textbf{Col. 2} \\\hline
                                 & Colonne 1       & Colonne 2       \\\hline
                                 & Colonne 1       & Colonne 2       \\\hline
                                 & Colonne 1       & Colonne 2
\end{tabular}

\bigskip

\begin{tabular}{>{\stepcounter{mtligne} \themtligne}cll}
  \hline
  \multicolumn{1}{c}{\textbf{N}} & \textbf{Col. 1} & \textbf{Col. 2} \\\hline
                                 & Colonne 1       & Colonne 2       \\\hline
                                 & Colonne 1       & Colonne 2       \\\hline
                                 & Colonne 1       & Colonne 2
\end{tabular}
\end{document}
Lien permanent

Publiée 15 Aoû '17, 02:40

denis's gravatar image

denis ♦♦
7.0k1510
Taux d'acceptation : 52%

Modifiée 16 Aoû '17, 13:08

1

Ah, il n'est pas vexant, le Denis… Je ne suis pas sur le bon forum, mais j'en profite pour faire d'une solution qui aidera ceux qui utilise LaTeX via org-mode : sous le tableau, il suffit d'insérer la formule #+TBLFM: $1=(@#)-1 (pour une colonne n° 1 avec une ligne d'en-tête) ou #+TBLFM: $1=(@#) (idem, mais sans en-tête). Un petit coup de C-c C-e, puis C-x C-e suivi de l - l pour obtenir un fichier LaTeX.

(15 Aoû '17, 03:58) fred02840 fred02840's gravatar image

Deux points me gênent dans cette réponse : le bidouillage \multicolumn{1}{c}{} et le fait qu'il faille remettre manuellement le compteur à 0. J'édite ma réponse pour proposer une autre solution.

(15 Aoû '17, 16:34) Nikopol Nikopol's gravatar image

@Nikopol Le bidouillage \multicolumn{1}{c}{} était là pour montrer comment supprimer la numérotation si nécessaire. Quant à la réinitialisation manuelle du compteur, on peut s'en sortir avec la commande \AtEndEnvironment du package etoolbox (je vais éditer ma réponse dans ce sens).

(16 Aoû '17, 13:06) denis ♦♦ denis's gravatar image
1

@fred02840 Il n'est pas nécessaire d'être en Org-mode, AUCTeX accepte orgtbl-mode comme mode secondaire. Voir (info "(org)A LaTeX example of radio tables"). Ça permet d'insérer un petit tableur dans un document LaTeX et numéroter les lignes en est un usage très élémentaire.

(14 Jul '21, 17:22) Jean-jacques Rétorré Jean-jacques%20R%C3%A9torr%C3%A9's gravatar image

@Jean-jacques Rétorré. Je l'ignorais. Mais ma question sur org-mode tient à ce que j'utilise principalement (et même exclusivement) ce moyen avec Emacs. La faute aux formations de Dunkerque…

(15 Jul '21, 08:35) fred02840 fred02840's gravatar image

Voici une solution. \newcounter{ctr} pour créer un compteur des lignes, \stepcounter{ctr} dans chaque ligne, pour incrémenter le compteur et \thectr pour afficher le numéro de la ligne.

ECM : ici j'ai choisi mtligne comme compteur des lignes.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\newcounter{mtligne}
\newcommand{\newligne}[2]{\stepcounter{mtligne} \themtligne & #1 & #2 \\\hline}
\begin{document}
\begin{tabular}{cll}
\hline
\textbf{N} &  \textbf{Col. 1} & \textbf{Col. 2}\\
\hline
\newligne{Colonne 1}{Colonne 2}
\newligne{Colonne 1}{Colonne 2}
\newligne{Colonne 1}{Colonne 2}
\end{tabular}
\end{document}
Lien permanent

Publiée 14 Aoû '17, 19:46

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Une autre solution qui préserve la syntaxe de tabular (pas besoin de rentrer tout un tas de commandes dans les arguments). Nécessite l'extension array pour pouvoir utiliser >{...}. La réinitialisation du compteur se fait dans l'environnement. J'ai rajouté une option à l'environnement numtabular afin de pouvoir choisir si on numérote ou pas la première ligne.

EDIT : amélioration du code.

Le code suivant permet l'utilisation du tube en premier dans l'argument de l'environnement (ce n'était pas le cas avant). J'en ai profité pour faire une version étoilée de l'environnement permettant la numérotation dans l'ordre décroissant, en faisant suite à cette discussion. L'option pour numéroter à partir du premier rang est toujours valable et ceux dans les deux environnements.

Ouvrir dans l'éditeur Overleaf
\documentclass[12pt]{article}
\usepackage{array}
\usepackage{zref-lastpage}

\newcounter{countlignes}
\newcounter{countligne}
\makeatletter
\zref@newprop{countlignes}{\the\value{countlignes}}
\zref@addprop{LastPage}{countlignes}
\newcommand*{\myCounterLast}{%
\zref@extractdefault{LastPage}{countlignes}{0}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%l'option%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%toutes les commandes contenant un s sont pour la version étoilée (starred)%%
\def\numlignes{\ifnum\value{countlignes}<\@ne\relax%si compteur= 0 on ne fait rien
               \else%
                    \thecountlignes% sinon on affiche
              \fi\global\addtocounter{countlignes}{1}}% on incrémente

\def\numligne{\ifnum\value{countligne}<\@ne\relax%
               \else
                    \thecountligne%
              \fi\global\addtocounter{countligne}{1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%environnement classique%%%%%%%%%
\newenvironment{numtabular}[2][0]
  {\setcounter{countligne}{#1}\sipipe#2\@nil}
  {\end{tabular}}
\def\sipipe{%
  \@ifnextchar|{\pipe}{\nopipe}}%On cherche si le premier caractère est tube |

\def\pipe#1#2\@nil{%si oui on l'avale et on le place avant >{}
  \begin{tabular}{|>{\numligne}#2}}
\def\nopipe#1\@nil{%sinon on laisse l'argument tel quel 
  \begin{tabular}{>{\numligne}#1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%evironnemmment étoilé%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{numtabular*}[2][0]
{\setcounter{countlignes}{#1}%
        \ifnum\value{countlignes}=0 %
            \renewcommand*{\thecountlignes}{%
                    \@arabic{\numexpr\myCounterLast-\value{countlignes}\relax}}
        \else
            \renewcommand*{\thecountlignes}{%
                    \@arabic{\numexpr\myCounterLast+1-\value{countlignes}\relax}}
        \fi
        \situbes#2\@nil}%
        {\end{tabular}}
\def\situbes{%
  \@ifnextchar|{\tubes}{\notubes}}%On cherche si le premier caractère est tube |

\def\tubes#1#2\@nil{%si oui on l'avale et on le place avant >{}
  \begin{tabular}{|>{\numlignes}#2}}
\def\notubes#1\@nil{%sinon on laisse l'argument tel quel 
  \begin{tabular}{>{\numlignes}#1}}
\makeatother

\begin{document}

\section*{Version classique}
\begin{numtabular}[1]{c|c}
\hline
& Avec l'option \\ 
\hline\hline
& on num\'erote \\ 
\hline 
& d\`es la  \\ 
\hline 
& premi\`ere ligne \\ 
\hline 
&et ...\\ 
\hline 
\end{numtabular}
\medskip
\begin{numtabular}{|c|c|}
\hline
Rang& sans l'option \\ 
\hline\hline
& Fernand \\ 
\hline 
& Yvonne  \\ 
\hline 
& Jacques \\ 
\hline 
& Sophie \\ 
\hline 
\end{numtabular}
\section*{Version \'etoil\'ee}
\begin{numtabular*}[1]{c|c}
\hline
& Avec l'option \\ 
\hline\hline
& on num\'erote \\ 
\hline 
& d\`es la  \\ 
\hline 
& premi\`ere ligne \\ 
\hline 
&et ...\\ 
\hline 
\end{numtabular*}
\medskip
\begin{numtabular*}{|c|c|}
\hline
Rang& sans l'option \\ 
\hline\hline
& Fernand \\ 
\hline 
& Yvonne  \\ 
\hline 
& Jacques \\ 
\hline 
& Sophie \\ 
\hline 
\end{numtabular*} 
\end{document}

alt text

[1]: discussion [1]: http://texnique.fr/osqa/questions/3660/compteur-palindromique-dans-un-environnement-description

Lien permanent

Publiée 14 Aoû '17, 20:39

Nikopol's gravatar image

Nikopol
1.0k614
Taux d'acceptation : 42%

Modifiée 16 Aoû '17, 22:45

Le rôle de l'argument optionnelle n'est pas assez précis. Essayer, par exemple, \begin{numtabular}[2]{c|c} dans les deux tableaux de la version classique

(16 Aoû '17, 23:50) touhami touhami's gravatar image

@touhami, je sais mais ce n'est pas une extension je ne pensais pas renvoyer un message d'erreur. C'est vrai que je pourrais refaire un test et renvoyer si l'option n'est pas 1. J'en profite, j'ai un espace parasite qui se voit sur la photo, je ne vois pas d'où il provient et là... Il est tard :)

(17 Aoû '17, 00:02) Nikopol Nikopol's gravatar image

Je tiens à vous remercier pour vos efforts ;-) mais à mon avis il faut garder les choses simple. Avez vous penser à l'environnement tabular* tabularx et à l'option @{}.

Votre première réponse était très élégante, Denis a proposé une version semblable en n'utilisant que des commande latex pour éviter les @ ce qui rendre sa réponse plus élégante :-).

(17 Aoû '17, 00:04) touhami touhami's gravatar image

Je pourrais éviter les @ mais personnellement je trouva ça joli dans un code. La solution de Denis est très bien, j'ai juste voulu automatiser l'environnement pour faire comme tabular. La version étoilée n’était pas utile j'en conviens mais cela m'a amusé. Et peu importe la complexité du code si le PO a une solution qui lui convient.

(17 Aoû '17, 00:28) Nikopol Nikopol's gravatar image

Deux autres possibilités:

  • l'extension blkarray possède un compteur \BAenum à insérer où l'on veut dans le préambule de l'environnement blockarray;
  • l'option [table] de xcolor définit un compteur \rownum, incrémenté automatiquement par la commande \rowcolors (couleurs qui peuvent très bien être white si l'on ne veut pas de couleur).

Démo :

Ouvrir dans l'éditeur Overleaf
    \documentclass{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{fourier, erewhon} \usepackage[table, svgnames]{xcolor}
    \usepackage{array, blkarray, eqparbox, booktabs, cellspace}
\renewcommand{\theBAenumi}{\eqmakebox[lineno][l]{\arabic{BAenumi}.}}%%{\ifnumless{\value{BAenumi}}{10}{\arabic{BAenumi}\phantom{0}}{\arabic{BAenumi}}}

    \begin{document}

\setlength\BAextrarowheight{3pt} %

\begin{blockarray}{ll}
\begin{block}{\BAmulticolumn{2}{c}}
  THE HISTORY OF THE SEVEN FAMILIES OF LAKE PIPPLE-POPPLE\\[1ex]
\end{block}
\noalign{\setcounter{BAenumi}{1}}
%\BAmulticolumn{2}{c}{THE HISTORY OF THE SEVEN FAMILIES}
\begin{block}{|>{CHAPTER }l<{\hspace{-1.33em}} \BAenum!{\enspace}|l|}
\hline
 & Introductory \\
\hline
  & The Seven Families \\
\hline
  & The Habits of the Seven Families \\
\hline
  & The Children of the Seven Families are Sent Away\\
\hline
 & The History of the Seven Young Parrots \\
 \hline
 & The History of the Seven Young Storks \\
 \hline
 & The History of the Seven Young Geese \\
 \hline
 & The History of the Seven Young Owls \\
 \hline
 & The History of the Seven Young Guinea Pigs \\
 \hline
 & The History of the Seven Young Cats \\
 \hline
 & The History of the Seven Young Fishes \\
 \hline
  & Of What Occurred Subsequently \\
 \hline
  & Of What Became of the Parents of the Forty-Nine Children \\
 \hline
  & Conclusion \\
\hline
\end{block}
\end{blockarray}

\rowcolors{1}{Lavender!50}{white}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\begin{tabular}{>{CHAPTER}Sl <{\hspace{0.33em}\the\rownum. }Sl}
\rowcolor{white}\multicolumn{2}{c}{THE HISTORY OF THE SEVEN FAMILIES OF LAKE PIPPLE-POPPLE}{\global \rownum = 0} \\
\specialrule{\heavyrulewidth}{\aboverulesep}{0pt}
& Introductory \\
   & The Seven Families \\
 & The Habits of the Seven Families \\
    & The Children of the Seven Families are Sent Away\\
 & The History of the Seven Young Parrots \\
 & The History of the Seven Young Storks \\
 & The History of the Seven Young Geese \\
 & The History of the Seven Young Owls \\
 & The History of the Seven Young Guinea Pigs \\
 & The History of the Seven Young Cats \\
 & The History of the Seven Young Fishes \\
  & Of What Occurred Subsequently \\
  & Of What Became of the Parents of the Forty-Nine Children \\
  & Conclusion \\
\bottomrule
\end{tabular}

    \end{document}
Lien permanent

Publiée 15 Aoû '17, 15:15

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 03 Déc '17, 18:27

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

Quelle avalanche de réponses ! Merci !

(17 Aoû '17, 16:50) fred02840 fred02840's gravatar image

L'environnement {NiceTabular} de nicematrix (similaire à l'environnement classique {tabular}) a son propre compteur de rangées, nommé iRow et son compteur de colonnes nommé jCol.

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\begin{NiceTabular}{>{\arabic{iRow}}cll}[first-row]
  \hline
  \multicolumn{1}{c}{\textbf{N}} & \textbf{Col. 1} & \textbf{Col. 2} \\\hline
                                 & Colonne 1       & Colonne 2       \\\hline
                                 & Colonne 1       & Colonne 2       \\\hline
                                 & Colonne 1       & Colonne 2
\end{NiceTabular}
\end{document}
Lien permanent

Publiée 14 Jul '21, 13:40

fpantigny's gravatar image

fpantigny
1.2k44
Taux d'acceptation : 34%

Modifiée 18 Sep '21, 13:45

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.