Historique des modifications [retour]
cliquez ici pour masquer/afficher la révision 4

16 Aoû '17, 22:45

Nikopol's gravatar image

Nikopol
1.0k1614

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. \documentclass{article} **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][1]. L'option pour numéroter à partir du premier rang est toujours valable et ceux dans les deux environnements. \documentclass[12pt]{article} \usepackage{array} \usepackage{zref-lastpage} \newcounter{countlignes} \newcounter{countligne} \makeatletter \newcount\c@untligne \def\avtab#1{\global\c@untligne=#1} \def\numligne{\ifnum\c@untligne<\@ne% \global\advance\c@untligne\@ne% \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 \the\c@untligne\global\advance\c@untligne\@ne% \fi} \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 \newenvironment{numtabular}[2][0]{\avtab{#1}\begin{tabular}{>{\numligne}#2}}{\end{tabular}} \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} \bigskip \begin{numtabular}{c|c} \end{numtabular} \medskip \begin{numtabular}{|c|c|} \hline Rang& Nom sans l'option \\ \hline\hline & Fernand \\ \hline & Yvonne \\ \hline & Jacques \\ \hline & Sophie \\ \hline \end{numtabular} \end{document}\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] [1]: [discussion][1] [1]: http://texnique.fr/osqa/questions/3660/compteur-palindromique-dans-un-environnement-description [1]: http://texnique.fr:80/osqa/upfiles/table.PNG
cliquez ici pour masquer/afficher la révision 3
amélioration de la solution proposée

15 Aoû '17, 16:40

Nikopol's gravatar image

Nikopol
1.0k1614

Une autre solution qui préserve la syntaxe de *tabular*. *tabular* (pas besoin de rentrer tout un tas de commandes dans les arguments). Nécessite l'extension *array* pour pouvoir utiliser `{...}`. `>{...}`. La macro `\avtab` permet réinitialisation du compteur se fait dans l'environnement. J'ai rajouté une option à l'environnement *numtabular* afin de réinitialiser le compteur s'il y a plusieurs tableaux. pouvoir choisir si on numérote ou pas la première ligne. \documentclass{article} \usepackage{array} \makeatletter \newcount\c@untligne \def\avtab{\c@untligne\@ne} \def\numligne{\the\c@untligne\global\advance\c@untligne\@ne} \def\avtab#1{\global\c@untligne=#1} \def\numligne{\ifnum\c@untligne<\@ne% \global\advance\c@untligne\@ne% \else \the\c@untligne\global\advance\c@untligne\@ne% \fi} \makeatother \newenvironment{numtabular}[2][0]{\avtab{#1}\begin{tabular}{>{\numligne}#2}}{\end{tabular}} \begin{document} \avtab \begin{tabular}{|>{\numligne}c|c|} \begin{numtabular}[1]{c|c} \hline & une Avec l'option \\ \hline\hline & on num\'erote \\ \hline & d\`es la \\ \hline & premi\`ere ligne \\ \hline & deuxi\`eme \\ \hline & troisi\`eme \\ \hline &encore \\ \hline &et encore \\ \hline \end{tabular} \bigskip \avtab \begin{tabular}{|>{\numligne}c|c|} ...\\ \hline \end{numtabular} \bigskip \begin{numtabular}{c|c} \hline & une ligne \\ \hline & deuxi\`eme \\ \hline & troisi\`eme \\ \hline &encore \\ \hline &et encore\\ \hline \end{tabular} \end{document} ![alt text][1] [1]: http://texnique.fr:80/osqa/upfiles/tab.PNGRang& Nom \\ \hline\hline & Fernand \\ \hline & Yvonne \\ \hline & Jacques \\ \hline & Sophie \\ \hline \end{numtabular} \end{document}
cliquez ici pour masquer/afficher la révision 2
mineure

15 Aoû '17, 14:23

Pathe's gravatar image

Pathe
7.6k49209252

cliquez ici pour masquer/afficher la révision 1

14 Aoû '17, 20:39

Nikopol's gravatar image

Nikopol
1.0k1614

C'est votre première visite ici ? Consultez la FAQ !

×