Compter mots dans une case de tableau ?

9 views
Skip to first unread message

Astier

unread,
Feb 9, 2008, 5:56:09 AM2/9/08
to
Bonjour,

Pour mon mémoire, j'utilise une transcription d'un corpus réalisée
sous forme de tableau (longtable) comme ceci :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper,10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{longtable}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\newcolumntype{t}{>{\slshape}p{.17\textwidth}}
\newcolumntype{d}{>{\ttfamily\raggedleft}p{.08\textwidth}}
\begin{longtable}{dtp{10cm}}
33 & Prévenu & mais ce que je vais dire n'a pas beaucoup
\underline{d'importance} \tabularnewline
& & \tabularnewline
\multicolumn{4}{c}{\scshape{Caméra sur Présidente}} \tabularnewline
& & \tabularnewline
34 & Présidente & \emph{(Sourit, hoche la tête ; attitude
bienveillante)} \underline{mais si} mais si \underline{ça nous
intéresse} cette histoire de carabine \tabularnewline
35 & Prévenu & \underline{(mais là} (..) la carabine n'était pas à
côté de moi il n'y avait pas de cartouche je sais que c'est pas très
important mais quand même euh j'aimerais le dire (.) \underline{elle
était} \tabularnewline
\end{longtable}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Je souhaiterai savoir s'il était possible et si oui comment faire pour
obtenir le nombre de mots dans la troisième colonne de chaque ligne
commençant par un chiffre (certaines ne présentant pas une telle
présentation) sans prendre en compte ce qui apparaît en italique
(commande \emph{}) et de faire afficher ce résultat soit dans un
tableau final soit dans une autre colonne ; si l'affichage n'est pas
intégrable dans le fichier tex, que ce soit récupérable et utilisable
par la suite.
Si tout cela est possible, est-il envisageable d'automatiser le
décompte en fonction de ce que l'on trouve dans la seconde colonne (le
locuteur) ? Et de générer un tableau prenant en compte tout cela ?
Cela fait beaucoup, et je doute que cela soit même possible, mais sait-
on jamais ? Sans doute faudrait-il plutôt que je me tourne vers des
scripts en bash/perl/python mais là cela sort totalement de mes
domaines de compétence :/

Après avoir regardé dans le groupe de discussion, je constate que la
définition de mot peut sembler trouble : je considère quant à moi,
qu'un mot est un ensemble de caractères délimités pas un blanc (ou
plusieurs).

Merci par avance pour vos réponses.

A bientôt.

mpg

unread,
Feb 9, 2008, 10:02:07 AM2/9/08
to
Le (on) samedi 09 février 2008 11:56, Astier a écrit (wrote) :

> Je souhaiterai savoir s'il était possible et si oui comment faire pour

Comme (presque) toujours en TeX, oui, c'est possible. Comment, c'est une
autre histoire...

> on jamais ? Sans doute faudrait-il plutôt que je me tourne vers des
> scripts en bash/perl/python mais là cela sort totalement de mes
> domaines de compétence :/
>

J'aurais tendance à dire que ça a peu de chances d'être plus facile à
programmer en TeX qu'en bash/python/perl... Sauf bien sûr que si on fait ça
en TeX ça a l'avantage d'être totalement intégré. À ma connaissance, il n'y
a rien qui permette de faire ça immédiatement sans mettre les mains
soi-même dans le cambouis. Si ce n'est pas urgent,je peux regarder ça un de
ces jours (pas ce week-end, un peu occupé), je pense quand même que c'est
faisable.

> Après avoir regardé dans le groupe de discussion, je constate que la
> définition de mot peut sembler trouble : je considère quant à moi,
> qu'un mot est un ensemble de caractères délimités pas un blanc (ou
> plusieurs).
>

Il suffirait donc de compter les lexème d'espace ? Ça semble assez
intéressant et crois même avoir une piste. Dis-moi si ça peut attendre
quelques jours... (PS : à cause par exemple des ponctuations ahutes
précédés d'un espace, c'est quand même un peu foireux de juste compter les
espaces...)

Manuel.

Astier

unread,
Feb 10, 2008, 6:48:44 AM2/10/08
to
On 9 fév, 16:02, mpg <m...@elzevir.fr> wrote:
> Le (on) samedi 09 février 2008 11:56, Astier a écrit (wrote) :
>
> > Je souhaiterai savoir s'il était possible et si oui comment faire pour
>
> Comme (presque) toujours en TeX, oui, c'est possible. Comment, c'est une
> autre histoire...
>
> > on jamais ? Sans doute faudrait-il plutôt que je me tourne vers des
> > scripts en bash/perl/python mais là cela sort totalement de mes
> > domaines de compétence :/
>
> J'aurais tendance à dire que ça a peu de chances d'être plus facile à
> programmer en TeX qu'en bash/python/perl... Sauf bien sûr que si on fait ça
> en TeX ça a l'avantage d'être totalement intégré. À ma connaissance, il n'y
> a rien qui permette de faire ça immédiatement sans mettre les mains
> soi-même dans le cambouis. Si ce n'est pas urgent,je peux regarder ça un de
> ces jours (pas ce week-end, un peu occupé), je pense quand même que c'est
> faisable.
>

Bonjour,

Oui bien sûr ça peut attendre quelques jours :)

> > Après avoir regardé dans le groupe de discussion, je constate que la
> > définition de mot peut sembler trouble : je considère quant à moi,
> > qu'un mot est un ensemble de caractères délimités pas un blanc (ou
> > plusieurs).
>
> Il suffirait donc de compter les lexème d'espace ? Ça semble assez
> intéressant et crois même avoir une piste. Dis-moi si ça peut attendre
> quelques jours... (PS : à cause par exemple des ponctuations ahutes
> précédés d'un espace, c'est quand même un peu foireux de juste compter les
> espaces...)
>

Arf j'avais oublié cela :/
> Manuel.

Merci, à bientôt

mpg

unread,
Feb 12, 2008, 3:36:45 PM2/12/08
to
Le (on) samedi 09 février 2008 11:56, Astier a écrit (wrote) :

> Pour mon mémoire, j'utilise une transcription d'un corpus réalisée
> sous forme de tableau (longtable) comme ceci :

> [...]

Je pense essayer de m'y mettre. Donc, à la fois pour « faire remonter » le
fil et aussi pour préciser des trucs...

> Je souhaiterai savoir s'il était possible et si oui comment faire pour
> obtenir le nombre de mots dans la troisième colonne de chaque ligne
> commençant par un chiffre (certaines ne présentant pas une telle
> présentation)

On est d'accord (je ne connais rien aux tableaux et à longtable) que toutes
les lignes seront séparées par des \tabularnewline et, qu'à chaque fois
qu'un \tabularnewline sera suivi d'un caractère de l'intervalle 0-9, ce
sera un ligne à compte, dans laquelle il y aura, en case 1 un nombre dont
on a rien à f*, en case 2 le nom de la personne qui parle (qu'on va
idéalement essayer de récupérer pour faire des stats par personne) écrit
toujours de la même manière dans toutes ses occurrences, et en case trois
(entre le deuxième & et le prochain \tabularnewline) le texte où il faut
essayer de compter les zéros ? Plus précisément, la ligne est à traiter si
et seulement si elle est comme ça, et elle est comme ça si et seulement si
elle commence par un chiffre ?

> sans prendre en compte ce qui apparaît en italique
> (commande \emph{}) et de faire afficher ce résultat soit dans un
> tableau final soit dans une autre colonne ; si l'affichage n'est pas
> intégrable dans le fichier tex, que ce soit récupérable et utilisable
> par la suite.

N'ai pas compris le « soit dans le tableau final soit dans une autre
colonne ». Mais je pense qu'une fois qu'on aura compté les mots, on saura
faire le reste. En fait, la principale et seule difficulté, est qu'à cause
des \emph et autre, il faudra ouvrir les {} pour regarder à l'intérieur.
Mais je pense avoir ce qu'il faut dans mes cartons pour faire ça.

> Si tout cela est possible, est-il envisageable d'automatiser le
> décompte en fonction de ce que l'on trouve dans la seconde colonne (le
> locuteur) ? Et de générer un tableau prenant en compte tout cela ?

Ça me semble faisable aussi. On éditerait le tableau au cours du traiement
pour rajouter sur les lignes intéressantes une quatrième colonne avec le
nombre de mots comptés ?

Je vais donc essayer avec les hypothèses ci-dessus, et la définition
suivante de mot : le nombre de mots est le nombre d'espaces plus un moins
le nombre d'occurrences de ' ;' ' :' etc., sans compter les espaces de
début et fin de case.

Manuel.

mpg

unread,
Feb 12, 2008, 7:11:50 PM2/12/08
to
Le (on) samedi 09 février 2008 11:56, Astier a écrit (wrote) :

> Je souhaiterai savoir s'il était possible et si oui comment faire pour
> obtenir le nombre de mots dans la troisième colonne de chaque ligne
> commençant par un chiffre (certaines ne présentant pas une telle
> présentation) sans prendre en compte ce qui apparaît en italique
> (commande \emph{}) et de faire afficher ce résultat soit dans un
> tableau final soit dans une autre colonne ; si l'affichage n'est pas
> intégrable dans le fichier tex, que ce soit récupérable et utilisable
> par la suite.

Je te propose le truc ci-dessous. Le cahier des charges (sauf trucs qui
m'échappent) est le suivant :
- Le tableau donne en entrée doit vérifier les hypothèses de mon précédent
message. En particulier, les lignes commençant par un chiffre font 3 cases,
les autre 4.
- Il doit toujours y avoir une espace (ie, un lexème d'espace) avant le
\tabularnewline. Sinon le décompte des mots est incorrect. C'est une
restriction qui doit pouvoir s'enlever en 5 lignes de macros, j'ai juste
pas encore essayé.
- Pour l'instant, le décompte des mots se fait comme énoncé dans mon autre
message. Il y a lieu de voir si on veut compter les « c'est » comme deux
mots ou pas. Cette partie est a priori très facile à adapter.
- La partie entre \makeatletter et \makeatother est fixe, mais la définition
de \PrintTable est libre et à la charge de l'utilisateur.

Le principal inconvénient du code actuel (mais le contourner serai assez
pénible il me semble) est qu'il utilise la version svn de ted, datée
d'aujourd'hui. On obtient cette version à partir de celle du CTAN en
appliquant le petit patch suivant :

14c14
< [2008/02/12 v1.01+ \space a token list editor \space (mpg)]
---
> [2007/12/12 v1.01 \space token list editor \space (mpg)]
18d17
< \@ifdefinable\ted@nocc{\newcount\ted@nocc}
202d200
< \global\advance\ted@nocc\@ne
207d204
< \global\ted@nocc\z@

ou à l'adresse suivante :
http://institut.math.jussieu.fr/~mpg/tmp/ted.sty
Si tu as besoin que ton document soit un peu portable et stable, je peux
publier une mise à jour assez rapidement sur le CTAN (il faut juste que je
teste un peu plus et que de me décide pour un nom, \ted@nocc n'est pas
forcément terrible).

> Si tout cela est possible, est-il envisageable d'automatiser le
> décompte en fonction de ce que l'on trouve dans la seconde colonne (le
> locuteur) ? Et de générer un tableau prenant en compte tout cela ?

Ça c'est aussi possible, mais c'est un travail un peu différent. Je ne me
suis pas encore décidé sur une manière efficace de gérer la liste de
locuteurs. (S'ils avaient le bon goût de n'avoir que des caractères ascii
dans leur nom, ça serait plus simple, aussi... ;-) )

> Cela fait beaucoup, et je doute que cela soit même possible, mais sait-
> on jamais ?

Donc il semble que ce soit pas mal possible. Dans l'ECM ci-dessous, il
semble y avoir un problème avec le \multicolumn, mais je n'y connais rien
aux tableaux, donc j'ai pas regardé plus que ça.

Manuel.

%%% Exemple %%%

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc} % à adapter
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage{fixltx2e}

\usepackage{longtable}
\usepackage{array}
\usepackage{booktabs}

\usepackage{ted}[2008/02/12] % attention !

\usepackage[british, frenchb]{babel}

\makeatletter

\newtoks\PT@toks

\shorthandon{;:?!} % babel est gentil :)
\def\PT@count#1\@nil{% % résultat dans \ted@nocc à la fin
\Substitute[\def\PT@temp]{#1}{ ;}{}% liste de trucs qui font qu'on a pas
\Substitute*[\def\PT@temp]{\PT@temp}{ :}{}% % un mot par espace :
\Substitute*[\def\PT@temp]{\PT@temp}{ ?}{}% % on les élimine. Adapter ou
\Substitute*[\def\PT@temp]{\PT@temp}{ !}{}% % compléter au besoin.
\Substitute*{\PT@temp}{ }{}}% % le décompte est un sous-produit de ça
\shorthandoff{;:?!}

\newcommand\PT@strip@ncount[1]{% % enlève les éventuels espaces initiaux
\PT@count#1}

\newcommand\ProcessTable{%
\PT@toks{}% % contiendra le code de la table finale
\PT@cell@one}

\newcommand\PT@add[1]{% % pour ajouter des éléments
\PT@toks\expandafter{\the\PT@toks#1}}

\newcommand\PT@cell@one[1]{%
\let\PT@next\PT@nextline
\ifcat\noexpand#1\relax % détecte les séquences de contrôle
\ifx#1\EndProcessTable % regarde si on a fini
\let\PT@next\PT@finish
\fi
\else
\ifnum`#1<58 % truc moche pour voir si #1 est un chiffre
\ifnum`#1>47
\def\PT@next{\PT@cell@one@#1}%
\fi
\fi
\fi
\PT@next}

\def\PT@nextline#1\tabularnewline{% % passer une ligne sans traitement
\PT@add{#1\tabularnewline}%
\PT@cell@one}

\def\PT@cell@one@#1&#2&{% % passer deux cellules sans traitement
\PT@add{#1&#2&}%
\PT@cell@three}

\def\PT@cell@three#1\tabularnewline{% % choper la dernière cellule
\PT@add{#1&}% % ajouter son contenu, compter les mots, puis
\PT@strip@ncount#1\@nil % ajouter la dernière colonne
\expandafter\PT@add\expandafter{\the\ted@nocc\tabularnewline}%
\PT@cell@one}

\newcommand\PT@finish{% % appel à la macro utilisateur
\expandafter\PrintTable{\the\PT@toks}}

\makeatother

% Partie utilisateur.


\newcolumntype{t}{>{\slshape}p{.17\textwidth}}
\newcolumntype{d}{>{\ttfamily\raggedleft}p{.08\textwidth}}

\newcommand\PrintTable[1]{%
\begin{longtable}{dtp{10cm}d}
#1
\end{longtable}}

\begin{document}

\ProcessTable


33 & Prévenu & mais ce que je vais dire n'a pas beaucoup
\underline{d'importance} \tabularnewline

& & & \tabularnewline


\multicolumn{4}{c}{\scshape{Caméra sur Présidente}} \tabularnewline

& & & \tabularnewline


34 & Présidente & \emph{(Sourit, hoche la tête ; attitude
bienveillante)} \underline{mais si} mais si \underline{ça nous
intéresse} cette histoire de carabine \tabularnewline
35 & Prévenu & \underline{(mais là} (..) la carabine n'était pas à
côté de moi il n'y avait pas de cartouche je sais que c'est pas très
important mais quand même euh j'aimerais le dire (.) \underline{elle
était} \tabularnewline

\EndProcessTable

\end{document}

Astier

unread,
Feb 13, 2008, 5:33:20 AM2/13/08
to
On 13 fév, 01:11, mpg <m...@elzevir.fr> wrote:
> Le (on) samedi 09 février 2008 11:56, Astier a écrit (wrote) :
>
> > Je souhaiterai savoir s'il était possible et si oui comment faire pour
> > obtenir le nombre de mots dans la troisième colonne de chaque ligne
> > commençant par un chiffre (certaines ne présentant pas une telle
> > présentation) sans prendre en compte ce qui apparaît en italique
> > (commande \emph{}) et de faire afficher ce résultat soit dans un
> > tableau final soit dans une autre colonne ; si l'affichage n'est pas
> > intégrable dans le fichier tex, que ce soit récupérable et utilisable
> > par la suite.
>
> Je te propose le truc ci-dessous. Le cahier des charges (sauf trucs qui
> m'échappent) est le suivant :
> - Le tableau donne en entrée doit vérifier les hypothèses de mon précédent
> message. En particulier, les lignes commençant par un chiffre font 3 cases,
> les autre 4.

Désolé, erreur dans l'ECM, toutes les lignes font trois colonnes, j'ai
fait une erreur au niveau du \multicolumn ou le 4 est à remplacer par
un 3.

> - Il doit toujours y avoir une espace (ie, un lexème d'espace) avant le
> \tabularnewline. Sinon le décompte des mots est incorrect. C'est une
> restriction qui doit pouvoir s'enlever en 5 lignes de macros, j'ai juste
> pas encore essayé.

D'accord, au pire s'il suffit de rajouter un espace avant la
\tabularnewline ce n'est pas trop gênant, la fonction remplacer
d'emacs ou de kile peut le faire très vite (puisque ce n'est pas
important si l'on a deux espaces avant).

Le problème avec le \multicolumn que j'ai abordé plus haut. Je n'ai
pas le temps de répondre plus longuement, étant un peu pressé par le
temps, mais j'essayerai cela dans la soirée.

Merci beaucoup, à bientôt.

Astier

unread,
Feb 13, 2008, 5:42:46 AM2/13/08
to
On 12 fév, 21:36, mpg <m...@elzevir.fr> wrote:
> Le (on) samedi 09 février 2008 11:56, Astier a écrit (wrote) :
>
> > Pour mon mémoire, j'utilise une transcription d'un corpus réalisée
> > sous forme de tableau (longtable) comme ceci :
> > [...]
>
> Je pense essayer de m'y mettre. Donc, à la fois pour « faire remonter » le
> fil et aussi pour préciser des trucs...
>
> > Je souhaiterai savoir s'il était possible et si oui comment faire pour
> > obtenir le nombre de mots dans la troisième colonne de chaque ligne
> > commençant par un chiffre (certaines ne présentant pas une telle
> > présentation)
>
> On est d'accord (je ne connais rien aux tableaux et à longtable) que toutes
> les lignes seront séparées par des \tabularnewline et, qu'à chaque fois
> qu'un \tabularnewline sera suivi d'un caractère de l'intervalle 0-9, ce
> sera un ligne à compte, dans laquelle il y aura, en case 1 un nombre dont
> on a rien à f*, en case 2 le nom de la personne qui parle (qu'on va
> idéalement essayer de récupérer pour faire des stats par personne) écrit
> toujours de la même manière dans toutes ses occurrences, et en case trois
> (entre le deuxième & et le prochain \tabularnewline) le texte où il faut
> essayer de compter les zéros ? Plus précisément, la ligne est à traiter si
> et seulement si elle est comme ça, et elle est comme ça si et seulement si
> elle commence par un chiffre ?
>
Oui c'est tout à fait cela ; ce serait en effet génial si l'on pouvait
récupérer le nom de la personne ; la troisième colonne correspond donc
aux propos tenus par la personne "décrite" en case 2 ; ce qui apparaît
en italique concerne leur "comportement" et ne doit donc pas être pris
en compte . De plus, il m'arrive de devoir passer par des
"commentaires" en majuscule du genre :

PEU AUDIBLE blabla blabla PA

Est-il possible également de ne pas prendre en compte cela ? En
considérant que la contiguité de deux majuscules minimalement ne
doitpas être prise en compte ?

> > sans prendre en compte ce qui apparaît en italique
> > (commande \emph{}) et de faire afficher ce résultat soit dans un
> > tableau final soit dans une autre colonne ; si l'affichage n'est pas
> > intégrable dans le fichier tex, que ce soit récupérable et utilisable
> > par la suite.
>
> N'ai pas compris le « soit dans le tableau final soit dans une autre
> colonne ». Mais je pense qu'une fois qu'on aura compté les mots, on saura
> faire le reste. En fait, la principale et seule difficulté, est qu'à cause
> des \emph et autre, il faudra ouvrir les {} pour regarder à l'intérieur.
> Mais je pense avoir ce qu'il faut dans mes cartons pour faire ça.
>
> > Si tout cela est possible, est-il envisageable d'automatiser le
> > décompte en fonction de ce que l'on trouve dans la seconde colonne (le
> > locuteur) ? Et de générer un tableau prenant en compte tout cela ?
>
> Ça me semble faisable aussi. On éditerait le tableau au cours du traiement
> pour rajouter sur les lignes intéressantes une quatrième colonne avec le
> nombre de mots comptés ?
>

Il serait peut-être plus judicieux de créer un autre tableau dans
lequel prendrait place ces "statistiques" en fonction du locuteur ; de
plus, est-il possible de tout de même prendre en compte la première
colonne et de générer des statistiques par intervalle : par exemple,
imaginons que de 1 à 18 j'ai ce que l'on appelle une "séquence" : est-
il possible de faire en sorte que LaTeX gère l'addition du nombre de
mots par locuteur sur cet intervalle ?

Désolé d'en rajouter :/ Mais si mes idées vont trop loin n'hésitez pas
à me le dire :)

> Je vais donc essayer avec les hypothèses ci-dessus, et la définition
> suivante de mot : le nombre de mots est le nombre d'espaces plus un moins
> le nombre d'occurrences de ' ;' ' :' etc., sans compter les espaces de
> début et fin de case.
>

> Manuel.

Désolé de ne pas avoir répondu plus tôt ; je vous remercie.
A bientôt

mpg

unread,
Feb 13, 2008, 7:41:49 AM2/13/08
to
Le (on) mercredi 13 février 2008 11:42, Astier a écrit (wrote) :

> Oui c'est tout à fait cela ; ce serait en effet génial si l'on pouvait
> récupérer le nom de la personne ; la troisième colonne correspond donc
> aux propos tenus par la personne "décrite" en case 2 ;

Donc ça, ça paraît imaginable. En fait, j'hésitais jusqu'à présent sur le
structure de données à adopter, mais ton autre demande force un peu la
structure, qui va donc être une espèce de « tableau » accessible par TeX,
avec sur chaque « ligne » le numéro de ligne, le nom, le nombre de mots.
Ce « tableau » pourra être consulté un peu comme une base de données pour
extraire l'information du genre « tant de mots pour telle personne entre
les lignes tant à tant », ou carrément imprimé si on veut.

> ce qui apparaît
> en italique concerne leur "comportement" et ne doit donc pas être pris
> en compte . De plus, il m'arrive de devoir passer par des
> "commentaires" en majuscule du genre :
>
> PEU AUDIBLE blabla blabla PA
>
> Est-il possible également de ne pas prendre en compte cela ? En
> considérant que la contiguité de deux majuscules minimalement ne
> doitpas être prise en compte ?
>

Ça c'est plus difficile. En fait, pour \emph, je crois que je vois comment
faire, mais ça impose de savoir à l'avance exactement toutes les séquences
de contrôle susceptibles d'apparaître en troisième colonne d'une ligne
traitée. Pour les majuscules, le plus simple serait sans doute que tu
utilises une séquence de contrôle spéciale du genre \commentaire pour
baliser les parties à ignorer.

> Il serait peut-être plus judicieux de créer un autre tableau dans
> lequel prendrait place ces "statistiques" en fonction du locuteur ; de
> plus, est-il possible de tout de même prendre en compte la première
> colonne et de générer des statistiques par intervalle : par exemple,
> imaginons que de 1 à 18 j'ai ce que l'on appelle une "séquence" : est-
> il possible de faire en sorte que LaTeX gère l'addition du nombre de
> mots par locuteur sur cet intervalle ?
>

Donc je pense que oui.

> Désolé d'en rajouter :/ Mais si mes idées vont trop loin n'hésitez pas
> à me le dire :)
>

Bah ta dernière demande sur les intervalle m'a aidé à me décider pour la
structure de données à utiliser, donc pour l'instant ça va :)

> Désolé de ne pas avoir répondu plus tôt ; je vous remercie.

Pas de souci. Et comme d'habitude c'est un plaisir :)

Manuel.

mpg

unread,
Feb 13, 2008, 7:44:12 AM2/13/08
to
Le (on) mercredi 13 février 2008 11:33, Astier a écrit (wrote) :

> Désolé, erreur dans l'ECM, toutes les lignes font trois colonnes, j'ai
> fait une erreur au niveau du \multicolumn ou le 4 est à remplacer par
> un 3.
>

Ah. Donc on édite plus le tableau pour rajouter une quatrième colonne ? Bon,
ça ne change de toutes façons pas grand chose au niveau du traitement.

>> - Il doit toujours y avoir une espace (ie, un lexème d'espace) avant le
>> \tabularnewline. Sinon le décompte des mots est incorrect. C'est une
>> restriction qui doit pouvoir s'enlever en 5 lignes de macros, j'ai juste
>> pas encore essayé.
> D'accord, au pire s'il suffit de rajouter un espace avant la
> \tabularnewline ce n'est pas trop gênant, la fonction remplacer
> d'emacs ou de kile peut le faire très vite (puisque ce n'est pas
> important si l'on a deux espaces avant).
>

Oki, donc on verra ça plutôt à la fin.

Manuel.

mpg

unread,
Feb 13, 2008, 1:15:25 PM2/13/08
to
Le (on) mercredi 13 février 2008 13:44, mpg a écrit (wrote) :

> Ah. Donc on édite plus le tableau pour rajouter une quatrième colonne ?
> Bon, ça ne change de toutes façons pas grand chose au niveau du
> traitement.
>

Bon, j'ai viré l'édition du tableau à la volée, mais pas nettoyé le code,
donc ça reste re-rajoutable très rapidement au cas où.

>> D'accord, au pire s'il suffit de rajouter un espace avant la
>> \tabularnewline ce n'est pas trop gênant, la fonction remplacer
>> d'emacs ou de kile peut le faire très vite (puisque ce n'est pas
>> important si l'on a deux espaces avant).
>>
> Oki, donc on verra ça plutôt à la fin.
>

Finalement c'est tout vu aussi, parce que sinon les espaces étaient gênantes
pour repérer les noms dans les deuxièmes colonne, donc j'ai fait la macro
pour les enlever (ce qui revient au même que les rajouter, si ma phrase te
paraît bizarre).

Je te propose le code ci-dessous. C'est a priori un peu fouillis, si ça
marche je nettoierai et commenterai un minimum le truc. Nouveautés :
- Le problème avec \multicolumn venait d'un bug grossier de mon code, que
j'ai corrigé :)
- Tu fais ce que tu veux avec les espaces.
- Tu disposes de PrintStatsTable pour imprimer les stats. Pour cela, c'est à
toi de définir \MakeStatsLine qui prend trois arguments et en fait une
ligne de tableau, et MakeStatsTable qui prend un argument et l'enrobe de ce
qu'il faut pour faire un joli tableau de stats. Inutile de dire que les
deux doivent aller ensemble.
- \GetStats imprime le nombre de mots prononcés entre les lignes #1 et #2
(incluses) par la personne #3. Ce n'est pas une macro purement développable
(elle le marchera pas dans un \edef). Si tu veux récupérer le résultat pour
autre chose que l'imprimer, ça peut aussi se faire (une ligne à modifier).
- Les argument de \emph et \comm sont automatiquement ignorés lors du
décompte des mots. À toi de définir \comm et de mettre tout ce qui doit
être ignoré dans une macro comme \emph ou \comm. Tu peux personnaliser ça
dans la définition de \PT@remove (je peux faire une interface plus clean
pour ça si tu veux).

Restrictions :
- Je suis relativement peu sûr de mon code, notament parce que j'utilise des
\edef pour des trucs, et que j'espère très fort que ça ne va pas rajouter
des espaces en remplaçant les caractères accentués par leur code : pour
l'instant ça marche, mais je ne suis sûr de rien. Si ça pose problème, on
doit pouvoir régler ça brutalement en contournant inputenc localement.
- Pour le même genre de raisons (\edef, en fait \protected@edef) je suppose
que toutes les macros qui apparaissent dans une troisième colonne sont
robustes. Pour celle qui ne le sont pas, comme \underline, il faut les
ajouter à la liste de \PT@forget. Là aussi je peut faire une interface un
peu clean pour ça.
- Pour l'instant, tu dois respecter la casse pour les stats par personne. On
peut arranger ça en deux lignes si tu veux.
- Le décompte des mots n'est pas finalisé. Pour l'instant, c'est nombre
d'espaces + 1 - (nombre d'occurences de ' ;' etc). Là aussi c'est
monstrueusement facile de modifier la liste, si tu veux par exemple
que « c'était » compte pour deux mots.

Maintenant, à toi de tester en condition réelle et de voir si ça te
convient. N'hésite pas à te plaindre si ça marche pas, ou à demander des
changements d'interface ou de fonctionnalités si tu veux. Ce truc m'amuse
beaucoup.

Manuel.

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc} % à adapter
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage{fixltx2e}

\usepackage{longtable}
\usepackage{array}
\usepackage{booktabs}
\usepackage{ted}[2008/02/12] % attention !

\usepackage[british, frenchb]{babel}

\makeatletter

\newtoks\PT@toks
\newtoks\PT@data
\newcount\PT@count

\edef\PT@twospaces{\space\space}

\shorthandon{;:?!} % babel est gentil :)

\def\PT@count@words{% % résultat dans \ted@nocc à la fin
\Substitute*[\def\PT@temp]{\PT@temp}{ ;}{}% % liste de trucs qui font
\Substitute*[\def\PT@temp]{\PT@temp}{ :}{}% % foirer le décompte :


\Substitute*[\def\PT@temp]{\PT@temp}{ ?}{}% % on les élimine. Adapter ou
\Substitute*[\def\PT@temp]{\PT@temp}{ !}{}% % compléter au besoin.

\Substitute**[\def\PT@temp]{\PT@temp}{\PT@twospaces}{\empty}% % compléter


au besoin.
\Substitute*{\PT@temp}{ }{}% % le décompte est un sous-produit de ça

\advance\ted@nocc\@ne}
\shorthandoff{;:?!}

\newcommand\PT@strip@spaces{%
\expandafter\expandafter\expandafter\PT@strip
\expandafter\PT@temp\expandafter\@nil\space\@nil\@nill}

\newcommand\PT@strip[1]{% % enlève les éventuels espaces initiaux
\PT@strip@#1}

\def\PT@strip@#1 \@nil#2\@nill{% % enlève les éventuels espaces finaux
\ifx#2\empty\empty
\PT@strip@@#1%
\else
\def\PT@temp{#1}%
\fi}

\def\PT@strip@@#1\@nil{%
\def\PT@temp{#1}}

\newcommand\PT@cleanup[1]{%
\begingroup
\PT@remove \PT@forget
\protected@xdef\PT@temp{#1}%
\endgroup
\PT@strip@spaces}

\newcommand\ProcessTable{%
\PT@toks{}%

\PT@data{}%
\PT@cell@one}

\newcommand\PT@add[1]{% % pour ajouter des éléments
\PT@toks\expandafter{\the\PT@toks#1}}

\newcommand\PT@data@add[1]{%
\PT@data\expandafter{\the\PT@data#1}}

\newcommand\PT@cell@one[1]{%
\let\PT@next\PT@nextline
\ifcat\noexpand#1\relax % détecte les séquences de contrôle
\ifx#1\EndProcessTable % regarde si on a fini
\let\PT@next\PT@finish
\fi
\else
\ifnum`#1<58 % truc moche pour voir si #1 est un chiffre
\ifnum`#1>47

\let\PT@next\PT@cell@one@
\fi
\fi
\fi
\PT@next#1}

\def\PT@nextline#1\tabularnewline{% % passer un ligne sans traitement


\PT@add{#1\tabularnewline}%
\PT@cell@one}

\def\PT@cell@one@#1&{%
\PT@add{#1&}%
\PT@data@add{\PT@line{#1}}%
\PT@cell@two}

\def\PT@cell@two#1&{%
\PT@add{#1&}%
\def\PT@temp{#1}%
\PT@strip@spaces
\expandafter\PT@data@add\expandafter{\expandafter{\PT@temp}}%
\PT@cell@three}

\def\PT@cell@three#1\tabularnewline{% % choper la dernière cellule

\PT@add{#1\tabularnewline}%
\PT@cleanup{#1}%
\PT@count@words
\expandafter\PT@data@add\expandafter{%
\expandafter{\the\ted@nocc}}%
\PT@cell@one}

\def\PT@finish\EndProcessTable{% % appel à la macro utilisateur
\expandafter\PrintTable{\the\PT@toks}}

\newcommand\PrintStatsTable{%
\begingroup
\let\PT@line\MakeStatsLine
\expandafter\protected@xdef\expandafter\PT@stats@table\expandafter{%
\the\PT@data}%
\endgroup
\expandafter\MakeStatsTable\expandafter{\PT@stats@table}}

\newcommand\GetStats[2]{%
\edef\PT@temp{\noexpand\PT@get@stats{%
\number\numexpr#1-1\relax}{\number\numexpr#2+1\relax}}%
\PT@temp}

\newcommand\PT@get@stats[3]{%
\def\PT@name{#3}%
\PT@count\z@
\def\PT@line##1##2##3{%
\ifnum##1>#1
\ifnum##1<#2
\def\PT@temp{##2}%
\ifx\PT@temp\PT@name
\advance\PT@count##3\relax
\fi
\fi
\fi}%
\the\PT@data
\the\PT@count}

% partie presque utilisateur (à ajuster selon les besoins)
\newcommand\PT@remove{%
\let\emph\@gobble
\let\comm\@gobble}

\newcommand\PT@forget{%
\let\underline\@firstofone}

\makeatother

% Partie utilisateur.
\newcolumntype{t}{>{\slshape}p{.17\textwidth}}
\newcolumntype{d}{>{\ttfamily\raggedleft}p{.08\textwidth}}

\newcommand\PrintTable[1]{%
\begin{longtable}{dtp{10cm}}

#1
\end{longtable}}

\newcommand\comm{\MakeUppercase}

\newcommand\MakeStatsLine[3]{%
#1 & #2 & #3 \tabularnewline}

\newcommand\MakeStatsTable[1]{%
\begin{tabular}{lll}
#1
\end{tabular}}

\begin{document}

\ProcessTable
33 & Prévenu & mais ce que je vais dire n'a pas beaucoup
\underline{d'importance} \tabularnewline

& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Présidente}} \tabularnewline


& & \tabularnewline
34 & Présidente & \emph{(Sourit, hoche la tête ; attitude
bienveillante)} \underline{mais si} mais si \underline{ça nous
intéresse} cette histoire de carabine \tabularnewline
35 & Prévenu & \underline{(mais là} (..) la carabine n'était pas à
côté de moi il n'y avait pas de cartouche je sais que c'est pas très
important mais quand même euh j'aimerais le dire (.) \underline{elle
était} \tabularnewline

36 & Présidente & \comm{commentaire} Le 1\ier{} jour\dots \tabularnewline
\EndProcessTable

\bigskip
Statistiques :
\PrintStatsTable

\bigskip
Entre les lignes 33 et 35, le prévenu a prononcé \GetStats{33}{35}{Prévenu}
mots contre \GetStats{33}{35}{Présidente} pour la présidente.

\end{document}

Astier

unread,
Feb 14, 2008, 9:54:26 AM2/14/08
to
On 13 fév, 19:15, mpg <m...@elzevir.fr> wrote:
> Le (on) mercredi 13 février 2008 13:44, mpg a écrit (wrote) :
>

Bonjour,

Je viens de tester ton code et je suis plus qu'ébloui par ce que l'on
peut faire : je savais LaTeX puissant mais à ce point c'est quand même
incroyable.

> > Ah. Donc on édite plus le tableau pour rajouter une quatrième colonne ?
> > Bon, ça ne change de toutes façons pas grand chose au niveau du
> > traitement.
>
> Bon, j'ai viré l'édition du tableau à la volée, mais pas nettoyé le code,
> donc ça reste re-rajoutable très rapidement au cas où.

Que faudrait-il modifier pour utiliser une telle possibilité ?


>
> >> D'accord, au pire s'il suffit de rajouter un espace avant la
> >> \tabularnewline ce n'est pas trop gênant, la fonction remplacer
> >> d'emacs ou de kile peut le faire très vite (puisque ce n'est pas
> >> important si l'on a deux espaces avant).
>
> > Oki, donc on verra ça plutôt à la fin.
>
> Finalement c'est tout vu aussi, parce que sinon les espaces étaient gênantes
> pour repérer les noms dans les deuxièmes colonne, donc j'ai fait la macro
> pour les enlever (ce qui revient au même que les rajouter, si ma phrase te
> paraît bizarre).

Euh... Faut-il placer une espace avant le \tabularnewline ou non ou
cela est indifférent ? Je suis un peu confus là :/
Lors de mon essai avec mon tableau entier, j'ai remplacé tous les
"\tabularnewline" par " \tabularnewline" et cela s'est appliqué à tout
le document donc à tes définitions et cela marche ; par contre, si je
reprends tes définitions telles quelles, ça ne fonctionne plus :/


>
> Je te propose le code ci-dessous. C'est a priori un peu fouillis, si ça
> marche je nettoierai et commenterai un minimum le truc. Nouveautés :
> - Le problème avec \multicolumn venait d'un bug grossier de mon code, que
> j'ai corrigé :)
> - Tu fais ce que tu veux avec les espaces.
> - Tu disposes de PrintStatsTable pour imprimer les stats. Pour cela, c'est à
> toi de définir \MakeStatsLine qui prend trois arguments et en fait une
> ligne de tableau, et MakeStatsTable qui prend un argument et l'enrobe de ce
> qu'il faut pour faire un joli tableau de stats. Inutile de dire que les
> deux doivent aller ensemble.

A ce propos, j'ai du mal à suivre : dans ton exemple, vous placer la
commande \PrintStatsTable ; en fait, il semble qu'il y ait un problème
puisque en réalité mon tableau va au-delà de 150 lignes et ce tableau
de stats ne change pas de page (non utilisation de longtable dans sa
définition ?) Ce n'est pas très grave, je ne pense pas utiliser cette
fonctionnalité, si ce n'est effectivement comme envisagé au début
ajouter une 4e colonne au tableau initial (d'où ma question
précédente).
Pour MakeStatsTable et MakeStatsLine quels sont les arguments en
question ?

> - \GetStats imprime le nombre de mots prononcés entre les lignes #1 et #2
> (incluses) par la personne #3. Ce n'est pas une macro purement développable
> (elle le marchera pas dans un \edef). Si tu veux récupérer le résultat pour
> autre chose que l'imprimer, ça peut aussi se faire (une ligne à modifier).

Cette possibilité est vraiment intéressante. Comment cela se passe-t-
il si j'appelle cette commande avant la tableau dans le document ? Me
faudra-t-il passer par une double compilation ?

Si le decompte fonctionnait parfaitement dans l'exemple posté
précédemment, je ne parviens pas à comprendre pourquoi cela ne
fonctionne pas avec l'ensemble de mon tableau, voici l'erreur :
[9]
! Missing = inserted for \ifnum.
<to be read again>
b
l.520 ...u a prononcé \GetStats{12}{34}{Prévenu}

! Missing number, treated as zero.
<to be read again>
b
l.520 ...u a prononcé \GetStats{12}{34}{Prévenu}

! Missing = inserted for \ifnum.
<to be read again>
b
..........................

Je poste ci-dessous l'ensemble de mon fichier (si tu préfères que je
te le joignes par mail pas de problème).

> - Les argument de \emph et \comm sont automatiquement ignorés lors du
> décompte des mots. À toi de définir \comm et de mettre tout ce qui doit
> être ignoré dans une macro comme \emph ou \comm. Tu peux personnaliser ça
> dans la définition de \PT@remove (je peux faire une interface plus clean
> pour ça si tu veux).
>
> Restrictions :
> - Je suis relativement peu sûr de mon code, notament parce que j'utilise des
> \edef pour des trucs, et que j'espère très fort que ça ne va pas rajouter
> des espaces en remplaçant les caractères accentués par leur code : pour
> l'instant ça marche, mais je ne suis sûr de rien. Si ça pose problème, on
> doit pouvoir régler ça brutalement en contournant inputenc localement.

Pas de problème à ce niveau-là :)

> - Pour le même genre de raisons (\edef, en fait \protected@edef) je suppose
> que toutes les macros qui apparaissent dans une troisième colonne sont
> robustes. Pour celle qui ne le sont pas, comme \underline, il faut les
> ajouter à la liste de \PT@forget. Là aussi je peut faire une interface un
> peu clean pour ça.

Je vois pas trop de quoi il est question ; cependant, pendant, mes
essais sur l'ensemble du tableau, j'ai rencontré deux problèmes :
- il semblerait que la commande \footnotemark[1] pose problème ;
- la fin du tableau apparaissait ainsi :
%%%%%%%%%%%%%%%%
& & \tabulranewline \bootomrule
%%%%%%%%%%%%%%%%
ce qui posait problème, il m'a suffi de "rajouter" une ligne :
%%%%%%%%%%%%%%%%
& & \tabulranewline \bootomrule
& & \tabulranewline
%%%%%%%%%%%%%%%%

> - Pour l'instant, tu dois respecter la casse pour les stats par personne. On
> peut arranger ça en deux lignes si tu veux.

Comment cela ?

> - Le décompte des mots n'est pas finalisé. Pour l'instant, c'est nombre
> d'espaces + 1 - (nombre d'occurences de ' ;' etc). Là aussi c'est
> monstrueusement facile de modifier la liste, si tu veux par exemple
> que « c'était » compte pour deux mots.
>
> Maintenant, à toi de tester en condition réelle et de voir si ça te
> convient. N'hésite pas à te plaindre si ça marche pas, ou à demander des
> changements d'interface ou de fonctionnalités si tu veux. Ce truc m'amuse
> beaucoup.
>

Une chose est sûre : je pensais faire une section remerciements dans
mon mémoire et je pense que toi et ce groupe y aurez votre place :)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage[british, frenchb]{babel}

\makeatletter

\edef\PT@twospaces{\space\space}

\makeatother

\newcommand\comm{\MakeUppercase}

\begin{document}

\ProcessTable
& & \tabularnewline \toprule
& Locuteur & Texte / \emph{Gestualité} \tabularnewline
\midrule \endfirsthead
& & \tabularnewline
\multicolumn{3}{c}{\large\scshape{Audience}} \tabularnewline
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Prévenu}} \tabularnewline
& & \tabularnewline
1 & Prévenu & bonjour madame la juge \emph{Prév ajuste le micro ;
hochement vertical de la tête
("ratification" de l'interlocuteur, marque de respect)}
\tabularnewline
2 & Présidente & \underline{monsieur vous avez un avocat}
\tabularnewline
3 & Prévenu & \underline{tous mes respects} \emph{Prév se tourne
ensuite vers le Procureur} \tabularnewline
4 & Présidente & vous avez un avocat monsieur \tabularnewline
5 & Prévenu & oui madame euh maître Moreau \emph{Prév se retourne
(pour chercher son avocat)} \tabularnewline
6 & Présidente & oui alors on va: \tabularnewline
7 & Prévenu & tous mes respects \emph{Prév à l'intention
du Procureur vers laquelle il est tourné} \tabularnewline
8 & Présidente & on va alors en attendant votre avocat je vérifie
votre identité votre avocat arrive c'est parfait \emph{Prév regarde
vers le Procureur, l'air inquiet, préoccupé, la bouche
faisant un rictus (lèvre droite tirée vers le haut)} \tabularnewline
9 & Prévenu & ok \emph{Prév approuve de la tête} \tabularnewline
10 & Avocat & PEU AUDIBLE excusez-moi PA \tabularnewline
11 & Présidente & vous vous appelez Tabar Fabien \tabularnewline
12 & Prévenu & Oui \tabularnewline
13 & Présidente & vous êtes né le douze \underline{décembre mille
neuf
cent} \tabularnewline
14 & Prévenu & \underline{le douze douze} soixante-six à Paris dans
le \underline{dixième arrondissement} \emph{Prév se penche sur le
micro tout en balançant la tête d'avant en
arrière, scandant ainsi ses propos} \tabularnewline
15 & Présidente & \underline{soixante-six à Paris} dans le dixième
(..) vous habitez quinze voie d'Ivry dans le treizième
\tabularnewline
16 & Prévenu & appartement vingt et un trente-six \tabularnewline
17 & Présidente & c'est toujours le cas \tabularnewline
18 & Prévenu & dixième étage \tabularnewline
19 & Présidente & d'accord \tabularnewline
20 & Prévenu & dans le quartier \underline{asiatique} voilà
\underline{exactement}
\tabularnewline
21 & Présidente & \underline{d'accord} \underline{à partir} de
maintenant vous allez me laisser parler je vous donnerai la parole
tout à l'\underline{heure} \tabularnewline
22 & Prévenu & \underline{bien} ok \emph{(quitte la barre)}
\tabularnewline
23 & Avocat & \underline{vous restez là vous restez à la barre
monsieur} \tabularnewline
24 & Prévenu & \underline{ah ok} \tabularnewline
25 & Présidente & \underline{les faits qui vous sont reprochés} (1s)
votre casier judiciaire ne mentionne aucune condamnation les faits
qui vous sont reprochés sont les suivants : d'avoir à Paris le six
février deux mille deux porté hors de votre domicile une ou plusieurs
armes de la sixième catégorie en l'espèce: une carabine calibre douze
à un coup et neuf cartouches \emph{(inspiration prononcée)} heu dans
quelles conditions avez-vous été mis en cause euh: vous êtes allé
dans le restaurant mac donald puis vous êtes allé au café des sports
vous avez acheté des cigarettes vous vous êtes promené boulevard
Masséna et vous dites que euh devant la tour Daumier ou à l'extérieur
de la Tour Daumier vous avez trouvé une carabine et six cartouches
dans les poubelles \tabularnewline
26 & Prévenu & FORT j'ai men\underline{ti (main-)} F \tabularnewline
27 & Présidente & \underline{je vous ai dit} qu'il faudra parler
après \tabularnewline
28 & Prévenu & \underline{pardon} \emph{(s'éloigne du micro)} TRÈS
BAS \underline{excusez-moi} TB \tabularnewline
29 & Avocat & \emph{(vient près de son client)} TRÈS BAS
\underline{n'interrompez
personne} TB \tabularnewline
30 & Présidente & vous avez dit \underline{je fais toujours les
poubelles} j'ai pris la carabine et les cartouches et
\underline{j'ai été le long (de la voie ferrée)} et je me suis amusé
à tirer sur une canette de bière \tabularnewline


& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Présidente}} \tabularnewline
& & \tabularnewline

30b & Présidente & alors heu qu'est-ce que vous dites aujourd'hui
puisque vous nous dites j'ai menti je vous écoute \tabularnewline
31 & Prévenu & alors bon j'ai menti / \tabularnewline
32 & Présidente & alors allez-y \tabularnewline


33 & Prévenu & mais ce que je vais dire n'a pas beaucoup
\underline{d'importance} \tabularnewline

34 & Présidente & \emph{(Sourit, hoche la tête ; attitude
bienveillante)} \underline{mais si} mais si \underline{ça nous
intéresse} cette histoire de carabine \tabularnewline
35 & Prévenu & \underline{(mais là} (..) la carabine n'était pas à
côté de moi il n'y avait pas de cartouche je sais que c'est pas très
important mais quand même euh j'aimerais le dire (.) \underline{elle
était} \tabularnewline

36 & Présidente & \underline{alors repartez} depuis le début (.)
avant que la police n'arrive est-ce que vous étiez bien en train de
vous amuser avec une carabine \tabularnewline
37 & Prévenu & avant qu'elle n'arrive / \tabularnewline
38 & Présidente & oui / \tabularnewline
39 & Prévenu & c'est clair et net \tabularnewline
40 & Présidente & alors expliquez-nous (..) comment vous êtes allé
vous amuser avec la carabine allez-y \tabularnewline
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Prévenu}} \tabularnewline
& & \tabularnewline
40b & Présidente & expliquez-nous ce qui s'est passé \tabularnewline
41 & Prévenu & eh bien euh \tabularnewline
42 & Présidente & mm où l'avez-vous trouvé \emph{et caetera}
\tabularnewline
43 & Prévenu & o je l'ai trouvée (.) je ne l'ai pas trouvée
\tabularnewline
44 & Présidente & bon comment l'avez-vous eue / \tabularnewline
45 & Prévenu & je l'ai achetée / \tabularnewline
46 & Présidente & où ça \tabularnewline
47 & Prévenu & par un:: quelqu'un qui habite dans mon quartier voilà
\tabularnewline
48 & Présidente & vous avez pas bu un peu d'alcool avant de venir
aujourd'hui à l'audience \tabularnewline
49 & Prévenu & nan j'ai bu un café \tabularnewline
50 & Présidente & seulement un café \tabularnewline
51 & Prévenu & oui c'est la veille \tabularnewline
52 & Présidente & alors est-ce que vous \underline{prenez des
comprimés} \tabularnewline
53 & Prévenu & FORT \underline{c'est la veille madame} F j'ai pris un
compr- un tranxène c- aujourd'hui \tabularnewline
54 & Présidente & ah c'est ça d'accord hein ça peut faire un peu la
même impression alors on repart à zéro vous avez acheté cette
carabine combien où à qui allez-y \tabularnewline
55 & Prévenu & j'ai acheté la carabine deux cent cinquante euros
\tabularnewline
56 & Présidente & c'est cher (2s) à qui / \tabularnewline
57 & Prévenu & même le policier m'a dit que je m'étais fait arnaquer
\tabularnewline
58 & Présidente & sûr (..) à qui (2s) à qui l'avez-vous achetée
\tabularnewline
59 & Prévenu & ah à: Christian (..) voilà \tabularnewline
60 & Présidente & vous pouvez pas dire plus \tabularnewline
61 & Prévenu & ha ben j'connais pas son nom de famille \emph{(se
rapproche du micro)} PLUS FORT je ne connais pas son nom de famille
PF et voilà / \tabularnewline
62 & Présidente & et les cartouches \tabularnewline
63 & Prévenu & hein (..) les \underline{cartouches} \tabularnewline
64 & Présidente & \underline{où avez-vous} trouvé les cartouches ou
acheté les cartouches / \tabularnewline
65 & Prévenu & les cartouches c'est Christian qui est allé me les
chercher je voulais pas spécialement euh des cartouches je voulais
(..) avoir un truc BAS (pour) faire bien B je voulais pas tstt
j'avais vraiment pas euh envie (..) de faire quelque chose de mal
avec c'est tout hein je: \emph{(lève ses bras, geste "englobant")}
\tabularnewline
66 & Présidente & vous êtes quand même allé vous promener avec et
vous avez tiré euh en milieu \underline{urbain quand même} hein
\tabularnewline
67 & Prévenu & \underline{oui c'est vrai} \underline{parce que}
\tabularnewline
68 & Présidente & \underline{on vous reproche} pas la mise en
danger \tabularnewline


& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Présidente}} \tabularnewline
& & \tabularnewline

68b & Présidente & on vous reproche pas des infractions comme ça on
\underline{vous reproche} le port le port d'arme prohibé
\tabularnewline
69 & Prévenu & \underline{oui mais bon} (..) \underline{bon je me
trouve} désolé d'être ici (..) \underline{j'ai fait une bêtise}
\tabularnewline
70 & Présidente & \underline{cela dit monsieur} oui vous êtes ici et
\underline{vous avez pris du tranxène} parce que peut-être ça vous
est nécessaire mais ça se sent si vous aviez pris en plus de la
bière pour venir ici ça serait ennuyeux mais à l'époque en tout cas
ce jour-là vous aviez mélangé (l')tranxène et bière ça c'est sûr
c'est vous qui l'avez dit \tabularnewline
71 & Prévenu & c'est clair et net oui (..) je le jure
\tabularnewline
72 & Présidente & donc même si vous vérifiez que le tunnel il est
(1s) bien vous comprenez bien qu'on se maîtrise pas parfaitement
quand on a ça / \tabularnewline
73 & Prévenu & c'est clair / \tabularnewline
74 & Présidente & quand on \underline{a avalé ça} \tabularnewline
75 & Prévenu & \underline{j'ai bien} compris maintenant j'ai bien
compris j'ai bien
compris \tabularnewline
76 & Présidente & alors pourquoi vous (re)prenez du tranxène
maintenant \underline{c'est un} médecin qui vous l'ordonne
\tabularnewline
77 & Prévenu & \underline{heu} \tabularnewline
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Prévenu}} \tabularnewline
& & \tabularnewline
77b & Prévenu & c'est un médecin qui me l'ordonne mais maintenant
heu je pense que je vais tout arrêter et voilà quoi parce que ça me
va pas moi je suis \emph{(remue la tête)} \tabularnewline
78 & Présidente & mmmm \tabularnewline
79 & Prévenu & avant j'étais \emph{(lève la tête au ciel)} je suis
tombé du trentième étage quoi en fait avant j'étais bien j'avais
beaucoup de travail et tout il m'est arrivé quelque chose et puis
voilà (1s) disons point de vue travail hein (..) \underline{j'ai
perdu une bonne place} \tabularnewline
80 & Présidente & \underline{vous vous voulez dire que quand}
\tabularnewline
81 & Prévenu & je travaillais dans une compagnie d'aviation /
\tabularnewline
82 & Présidente & on va parler de vous on va parler de vous sur les
faits moi j'ai terminé des questions sur les faits maître madame le
Procureur / \tabularnewline
83 & Procureur & c'est du calibre combien madame la présidente très
exactement \tabularnewline
84 & Présidente & heu humhum sixième catégorie calibre douze à un
coup \tabularnewline
85 & Prévenu & heu \tabularnewline
86 & Procureur & (!!!) c'est un petit peu léger monsieur je:: (du)
calibre douze c'est extrêmement dangereux \tabularnewline
87 & Prévenu & oui c'est c'est \underline{c'est vrai c'est vrai}
\tabularnewline
88 & Présidente & \underline{alors que (!!!)} \tabularnewline
89 & Prévenu & \underline{oui} mais ce sont des vieilles carabines /
\tabularnewline
90 & Présidente & \emph{répète doucement} des vieilles carabines /
\tabularnewline
91 & Prévenu & comme ça \emph{(fait le geste de recharger la
carabine)} \tabularnewline
92 & Présidente & comme ça oui / \tabularnewline
93 & Prévenu & et qui marchent un coup sur deux \tabularnewline
94 & Présidente & mm mm \tabularnewline
95 & Prévenu & donc voilà \tabularnewline
96 & Présidente & \underline{je tenais} \tabularnewline
97 & Prévenu & \underline{j'aurais voulu} qu'on me la présente pour
que vous la voyiez quoi / \tabularnewline
98 & Procureur & \underline{tout dépend si (!!!)} \tabularnewline
99 & Présidente & elle est sous scellés \underline{on peut la voir}
mais de toute façon elle est décrite hein elle risque d'être
confisquée alors en ce qui vous concerne vous monsieur


\tabularnewline
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Présidente}} \tabularnewline
& & \tabularnewline

99b & Présidente & vous avez dit que vous êtes commerçant (3s)
qu'est-ce que \underline{ça veut dire} \tabularnewline
100 & Prévenu & \underline{je faisais les} marchés mais depuis qu-
depuis ça fait déjà cinq mois que je me suis fait interpelé depuis
j'arrive plus à manger je: / \tabularnewline
101 & Présidente & \underline{mais c'est pas à cause c'est pas à
cause de} c'est pas à cause de ça \tabularnewline
102 & Prévenu & LENTEMENT\underline{j'ai plus le moral nan} je dors
plus la nuit L \tabularnewline
103 & Présidente & mais c'est pas à cause de cette
\underline{histoire} \tabularnewline
104 & Prévenu & \underline{mais} si je: moi je \tabularnewline
105 & Présidente & uniquement à cause de cette histoire
\tabularnewline
106 & Prévenu & pour moi c'est très important ça pour moi c'est
quelque chose de très important \tabularnewline
107 & Présidente & c'était la première fois pourtant vous avez dit
je suis connu de la police ça voulait dire quoi quand vous avez dit je
suis connu de la police \tabularnewline
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Prévenu}} \tabularnewline
& & \tabularnewline
108 & Prévenu & et ben parce qu'ils m'ont arrêté euh ils m'ont fait
les arrestations les contrôles les machins et: \tabularnewline
109 & Présidente & des contrôles des machins pas avec l'histoire de
stupéfiants non vous êtes pas fait arrêter en train de /
\tabularnewline
110 & Prévenu & une fois je me suis fait arrêter effectivement (..)
avec heu: (...) une dose à l'époque / \tabularnewline
111 & Présidente & une dose de \underline{quoi} \tabularnewline
112 & Prévenu & \underline{y'a} FORT une dose d'héroïne F
\tabularnewline
113 & Présidente & ben voilà \tabularnewline
114 & Prévenu & FORT il y a huit ans de ça F \tabularnewline


& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Présidente}} \tabularnewline
& & \tabularnewline

115 & Présidente & ben voilà (..) et ça a pas du vous faire du bien
et depuis \underline{huit} / \tabularnewline
116 & Prévenu & \underline{nan} pas du tout au contraire au
contraire \tabularnewline
117 & Présidente & comment ça \tabularnewline
118 & Prévenu & ça m'a pas fait du bien du tout \tabularnewline
119 & Présidente & ouais vous avez / \tabularnewline
120 & Prévenu & ça m'a coulé c'est ce qui m'a coulé \tabularnewline
121 & Présidente & vous avez arrêté complètement complètement
\tabularnewline
122 & Prévenu & j'ai arrêté totalement (2s) \tabularnewline
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Prévenu}} \tabularnewline
& & \tabularnewline
122b & Prévenu & voilà mais je m'en sors bien parce que /
\tabularnewline
123 & Présidente & parce que vos parents vous ont vous logent /
\tabularnewline
124 & Prévenu & sont gentils avec moi / \tabularnewline
125 & Présidente & d'accord / \tabularnewline
126 & Prévenu & sometime de temps en temps pardon PLUS FORT de temps
en temps PF \tabularnewline
127 & Présidente & j'avais compris \emph{(inspiration)} madame le
procureur heu avez-vous des questions sur la personnalité /
\tabularnewline
128 & Procureur & aucune question \tabularnewline
129 & Présidente & maître \tabularnewline
130 & Avocat & PEU AUDIBLE (moi aussi pas de question) PA
\tabularnewline
131 & Présidente & monsieur heu asseyez-vous devant votre avocat
vous avez maître des documents sur le suivi médical \tabularnewline
132 & Avocat & \underline{(!!!)} \tabularnewline
133 & Prévenu & \underline{je voulais dire des choses}
\tabularnewline
134 & Présidente & vous vouliez dire quelque chose dites-le /
\tabularnewline
135 & Prévenu & j'ai envie de dire beaucoup de choses
\tabularnewline
136 & Présidente & oui mais dites ce qui vous paraît important
\tabularnewline
137 & Prévenu & je peux m'approcher de vous \tabularnewline
138 & Présidente & mm non l'audience est publique l'audience est
publique et il faut que madame le \underline{procureur entende} tout
ce que vous dites \tabularnewline
139 & Prévenu & \underline{ben ok} alors non je: euh préfère pas
\tabularnewline
& & \tabularnewline \midrule
\multicolumn{3}{c}{\scshape{Coupure au montage}}
\tabularnewline \midrule
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Avocat}} \tabularnewline
& & \tabularnewline
140 & Avocat & ce ce sentiment d'ambiguïté à la
fois quelqu'un qui va mal et quelqu'un qui est capable de prendre
en charge son destin euh et: de de réaliser des actes qui lui
permettrait d'aller mieux c'est effectivement monsieur Tabar et je
crois que il qu'il faut l'aider dans cette démarche alors moi
j'avais prévu de vous demander à titre principal la confiscation
des scellés effectivement monsieur Tabar n'est pas quelqu'un euh à
qui on peut confier une arme euh je vous demandais cette
confiscation à titre principal en dehors de toute autre peine euh
j'aurai pu également vous demander de prononcer une expertise
psychologique de mon client \emph{(se tourne vers son client et le
regarde)} pour déterminer son niveau de responsabilité (4s)
\emph{(exaspérée, énervée, désespérée - sans doute - par
l'attitude de son client - celui-ci étant hors-champ
nous ne pouvons qu'émettre des suppositions ; lève les yeux au
ciel, tape sur son \og pupitre \fg et soupire)} bon
\tabularnewline
141 & Présidente & allez-y allez-y \tabularnewline
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Prévenu}} \tabularnewline
& & \tabularnewline
& & \emph{Le prévenu est assis devant son avocat (et face à la
Présidente) et porte son regard sur son avocat, la tête tournée.}
\tabularnewline
142 & Avocat & VOIX \og VIBRANTE \fg troisième chose bien évidemment
que j'peux VV demander c'est une peine de sursis mise à l'épreuve et
donc rejoindre les réquisitions de madame le Procureur
\tabularnewline
& & \emph{Le prévenu détourne la tête de son avocat et son regard
revient sur le tribunal - après s'être arrêté sur la caméra de R.
Depardon.} \tabularnewline
142b & Avocat & car effectivement je crois que les soins s(er)ont
obligatoires maintenant je:: vous laisse le soin euh de déterminer la
peine la plus juste et encore une fois la plus utile à mon client mais
j'insiste sur la la possibilité de prononcer la confiscation à titre
principal \tabularnewline
143 & (Procureur) & merci beaucoup \tabularnewline
144 & Présidente & le tribunal vous remercie monsieur levez-vous
vous vouliez euh préciser rectifier et ajouter \underline{quelque
chose} allez-y \tabularnewline
145 & Prévenu & \emph{(Durant toute la durée de cette intervention,
il tiendra le micro de la main droite puis de la main gauche dans un
second temps sauf lorsqu'il utilisera ses mains pour certains gestes
que nous signalerons.)} \underline{voilà} (...) je suis tout à fait
d'accord avec ce que madame le Procureur a dit mais je ne suis pas un
malade je ne suis pas un fou et j'ai décidé d'arrêter \emph{("dessine"
une ligne horizontale avec les deux mains à plat)} tout je n'ai pas
besoin de traitement j'ai besoin moi je je suis un battant moi je suis
un battant je vais sortir (.) d'ici un mois je vais trouver une place
je vais travailler et c'est tout j'veux pas qu'on j'vais être obligé
\emph{(la main droite tendue, pointe l'index et désigne deux points
successivement)} de courir à droite à gauche et ça va m'empêcher
(...) \tabularnewline
146 & Présidente & bien j'ai compris ce que vous vouliez dire le
sursis avec mise à l'épreuve avec obligation de soins c'est pas
vraiment la peine que vous choisiriez pour \underline{vous} /
\tabularnewline
147 & Prévenu & \underline{c'est} pas nécessaire j'en suis sûr
\underline{et certain} \tabularnewline
148 & Présidente & \underline{ça vous paraît pas nécessaire} bien eh
bien on va essayer de réfléchir à ça vous vous retirez dans la salle
la décision va être rendue tout à l'heure après la suspension
d'audience je vous rendrai \underline{les papiers} \tabularnewline
149 & Prévenu & \underline{je vous} remercie beaucoup /
\tabularnewline
150 & Présidente & oui / \tabularnewline
151 & Prévenu & excusez-moi de vous avoir dérangés \tabularnewline


& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Présidente}} \tabularnewline
& & \tabularnewline

152 & Présidente & non mais c'est \emph{(grand sourire)} affaire
suivante \emph{(regard tendre ?)} \tabularnewline
& & \tabularnewline \midrule
& & \tabularnewline
\multicolumn{3}{c}{\large\scshape{Verdict}} \tabularnewline


& & \tabularnewline \multicolumn{3}{c}{\scshape{Caméra sur
Présidente}} \tabularnewline
& & \tabularnewline

153 & Présidente & le tribunal après en avoir délibéré et par
décision contradictoire vous condamne à la peine de cinquante jours
amende à huit euros chacun \tabularnewline
& & \tabularnewline
\multicolumn{3}{c}{\scshape{Caméra sur Prévenu}} \tabularnewline
& & \tabularnewline
153b & Présidente & donc vous attendez (.) que (.) le service de
l'exécution des peines viennent vous demander de régler cette amende
vous devez le faire immédiatement sinon vous irez en prison pendant
vingt-cinq jours est-ce que vous avez compris la décision
\tabularnewline
154 & Prévenu & j'ai très bien compris la décision (..) mais euh::
(1s) pendant vingt-cinq euh pendant cinquante jours \underline{je}
dois payer une amende de / \tabularnewline
155 & Présidente & \underline{[...]} huit euros \tabularnewline
156 & Prévenu & huit euros \tabularnewline
157 & Présidente & \underline{(plus exactement)} \tabularnewline
158 & Prévenu & \underline{et je} et je l'envoie comment
\tabularnewline
159 & Présidente & vous les réservez (.) et au bout de cinquante
jours on vous réclamera la somme globale de quatre cent euros je crois
que votre avocat va vous expliquer comment les choses se passent avec
le service de l'exécution des peines vous avez compris (2s) vous
pouvez partir si vous avez des documents Maître vous venez les
récupérer \tabularnewline
160 & Prévenu & merci \tabularnewline
161 & Présidente & et je crois que vous en avez (..) affaire numéro
six ..... \tabularnewline
& & \tabularnewline \bottomrule
& & \tabularnewline
\EndProcessTable

\bigskip
Statistiques :
\PrintStatsTable

\bigskip
Entre les lignes 33 et 35, le prévenu a prononcé \GetStats{12}{34}
{Prévenu}
mots contre \GetStats{12}{34}{Présidente} pour la présidente.

\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Merci, à bientôt.

Pétiard François

unread,
Feb 14, 2008, 11:49:01 AM2/14/08
to

Ceci vient du fait que certains numéros de lignes ont des b en plus ; il
s'agit de :

30b
40b
68b
77b
99b
122b
142b
153b

F. Pétiard

Astier

unread,
Feb 14, 2008, 12:47:43 PM2/14/08
to
On 14 fév, 17:49, Pétiard François

Merci pour cet apport, mais comment faire alors pour "forcer" le saut
de page ? Peut-on également envisager un "saut" de colonne
(modification de la définition de la commande ?) ? Disons que je ne
tiens pas spécialement à les renommer dans la mesure où j'ai adopté
cette "numérotation" pour des raisons méthodologiques et que dans
l'ébauche de mon mémoire (déjà assez conséquente) j'y fais déjà appel
donc je risque de devoir faire d'importantes modifications sans parler
de l'incrémentation de 1 à effectuer dans tout le tableau.

Merci pour vos éclaircissements.

A bientôt.

Message has been deleted

mpg

unread,
Feb 14, 2008, 1:53:23 PM2/14/08
to
Le (on) jeudi 14 février 2008 15:54, Astier a écrit (wrote) :

> On 13 fév, 19:15, mpg <m...@elzevir.fr> wrote:
> Je viens de tester ton code et je suis plus qu'ébloui par ce que l'on
> peut faire : je savais LaTeX puissant mais à ce point c'est quand même
> incroyable.
>

C'est bien ce qui m'amuse dans ce fil :-)



>> Bon, j'ai viré l'édition du tableau à la volée, mais pas nettoyé le code,
>> donc ça reste re-rajoutable très rapidement au cas où.
>
> Que faudrait-il modifier pour utiliser une telle possibilité ?

Il n'y a qu'une ligne à modifier, je crois. Je vais faire en sorte que ça
soit facile à choisir, tu pourras ainsi changer d'avis si tu veux.

>> Finalement c'est tout vu aussi, parce que sinon les espaces étaient
>> gênantes pour repérer les noms dans les deuxièmes colonne, donc j'ai fait
>> la macro pour les enlever (ce qui revient au même que les rajouter, si ma
>> phrase te paraît bizarre).
>
> Euh... Faut-il placer une espace avant le \tabularnewline ou non ou
> cela est indifférent ? Je suis un peu confus là :/
> Lors de mon essai avec mon tableau entier, j'ai remplacé tous les
> "\tabularnewline" par " \tabularnewline" et cela s'est appliqué à tout
> le document donc à tes définitions et cela marche ; par contre, si je
> reprends tes définitions telles quelles, ça ne fonctionne plus :/

Hmm, je voulais maladroitement dire que maintenant (sauf bug pas repéré) tu
peux indifféremment mettre ou ne pas mettre d'espace, mon code a appris à
regarder s'il y en a une à la fin et à s'adapter en conséquence.

>> - Tu disposes de PrintStatsTable pour imprimer les stats. Pour cela,
>> c'est à toi de définir \MakeStatsLine qui prend trois arguments et en
>> fait une ligne de tableau, et MakeStatsTable qui prend un argument et
>> l'enrobe de ce qu'il faut pour faire un joli tableau de stats. Inutile de
>> dire que les deux doivent aller ensemble.
>
> A ce propos, j'ai du mal à suivre : dans ton exemple, vous placer la

J'aime bien le « dans ton exemple, vous ». Je te propose qu'on se tutoie
sauf si tu as une préférence marquée pour le vouvoiement (j'ai l'habitude
de tutoyer par défaut sur les niouzegroupes).

> commande \PrintStatsTable ; en fait, il semble qu'il y ait un problème
> puisque en réalité mon tableau va au-delà de 150 lignes et ce tableau
> de stats ne change pas de page (non utilisation de longtable dans sa
> définition ?) Ce n'est pas très grave, je ne pense pas utiliser cette
> fonctionnalité, si ce n'est effectivement comme envisagé au début
> ajouter une 4e colonne au tableau initial (d'où ma question
> précédente).

Oui, en fait j'avais fait un définition par défaut avec un tabular, mais tu
est libre de mettre un longtable à la place si tu veux. Vu que le tableau
produit n'est pas large, l'idéal serait de faire un espèce de longtable en
multicolonnes, mais je ne sais pas du tout si c'est facile/possible.

> Pour MakeStatsTable et MakeStatsLine quels sont les arguments en
> question ?
>

\MakeStatsline prend comme arguments dans l'ordre le numéro de ligne, le nom
de la personne, et le nombre de mots. Elle doit produire à partir de ça une
ligne de tableau (et elle doit être purement développable). En fait, je me
demande si ça vaut vraiment le coup de laisser ça personalisable, c'est
sans doute plus intelligent de personnaliser la composition dans les
en-têtes du tableaux. \MakeStatsTable prend comme unique argument le
contenu du tableau de stats.

>> - \GetStats imprime le nombre de mots prononcés entre les lignes #1 et #2
>> (incluses) par la personne #3. Ce n'est pas une macro purement
>> développable (elle le marchera pas dans un \edef). Si tu veux récupérer
>> le résultat pour autre chose que l'imprimer, ça peut aussi se faire (une
>> ligne à modifier).
> Cette possibilité est vraiment intéressante. Comment cela se passe-t-
> il si j'appelle cette commande avant la tableau dans le document ? Me
> faudra-t-il passer par une double compilation ?
>

Pour l'instant ce n'est pas prévu (l'appel avant). Mais c'est faisable et du
coup ça passera en effet par une double compilation.

> Si le decompte fonctionnait parfaitement dans l'exemple posté
> précédemment, je ne parviens pas à comprendre pourquoi cela ne
> fonctionne pas avec l'ensemble de mon tableau, voici l'erreur :
> [9]
> ! Missing = inserted for \ifnum.
> <to be read again>
> b
>

Comme signalé par François, ça vient du b. Maintenant que je sais qu'il peut
y en avoir un, je me méfierai.

>> - Je suis relativement peu sûr de mon code, notament parce que j'utilise
>> des \edef pour des trucs, et que j'espère très fort que ça ne va pas
>> rajouter des espaces en remplaçant les caractères accentués par leur code
>> : pour l'instant ça marche, mais je ne suis sûr de rien. Si ça pose
>> problème, on doit pouvoir régler ça brutalement en contournant inputenc
>> localement.
>
> Pas de problème à ce niveau-là :)
>

Ouf :)

>> - Pour le même genre de raisons (\edef, en fait \protected@edef) je
>> suppose que toutes les macros qui apparaissent dans une troisième colonne
>> sont robustes. Pour celle qui ne le sont pas, comme \underline, il faut
>> les ajouter à la liste de \PT@forget. Là aussi je peut faire une
>> interface un peu clean pour ça.
>
> Je vois pas trop de quoi il est question ; cependant, pendant, mes
> essais sur l'ensemble du tableau, j'ai rencontré deux problèmes :
> - il semblerait que la commande \footnotemark[1] pose problème ;

En fait, la plupart des commandes appaissant dans la troisième colonne sont
susceptibles de poser problème. Soit elle sont robuste,et le pire qui
puisse arriver est qu'elle faussent le décompte, soient elles ne le sont
pas et ça peut vraiment partir en vrille. Pour ça, on peut prévoir une
liste de macros susceptibles d'être utilisés, histoire que mon code se
méfie avant de faire certains trucs brutalement :)

> - la fin du tableau apparaissait ainsi :
> %%%%%%%%%%%%%%%%
> & & \tabulranewline \bootomrule
> %%%%%%%%%%%%%%%%
> ce qui posait problème, il m'a suffi de "rajouter" une ligne :
> %%%%%%%%%%%%%%%%
> & & \tabulranewline \bootomrule
> & & \tabulranewline
> %%%%%%%%%%%%%%%%
>

Oui, pour l'instant j'ai toujours supposé que les lignes se terminaient
toujours pas \tabularnewline. Si rajouter une dernière ligne vide ne te
dérange pas, ça évite de compliquer le code d'analyse du tableau.

>> - Pour l'instant, tu dois respecter la casse pour les stats par personne.
>> On peut arranger ça en deux lignes si tu veux.
>
> Comment cela ?
>

Pour l'instant, « Prévenu » et « prévenu » sont considérés comme des
personnes différentes... Si tu préfères, on peut faire en sorte que les
deux soient reconnus comme identiques.

Manuel.

Astier

unread,
Feb 14, 2008, 3:51:47 PM2/14/08
to
On 14 fév, 19:53, mpg <m...@elzevir.fr> wrote:
> Le (on) jeudi 14 février 2008 15:54, Astier a écrit (wrote) :
>
> > On 13 fév, 19:15, mpg <m...@elzevir.fr> wrote:
> > Je viens de tester ton code et je suis plus qu'ébloui par ce que l'on
> > peut faire : je savais LaTeX puissant mais à ce point c'est quand même
> > incroyable.
>
> C'est bien ce qui m'amuse dans ce fil :-)
>
> >> Bon, j'ai viré l'édition du tableau à la volée, mais pas nettoyé le code,
> >> donc ça reste re-rajoutable très rapidement au cas où.
>
> > Que faudrait-il modifier pour utiliser une telle possibilité ?
>
> Il n'y a qu'une ligne à modifier, je crois. Je vais faire en sorte que ça
> soit facile à choisir, tu pourras ainsi changer d'avis si tu veux.
>
Ok très bien :)

> >> Finalement c'est tout vu aussi, parce que sinon les espaces étaient
> >> gênantes pour repérer les noms dans les deuxièmes colonne, donc j'ai fait
> >> la macro pour les enlever (ce qui revient au même que les rajouter, si ma
> >> phrase te paraît bizarre).
>
> > Euh... Faut-il placer une espace avant le \tabularnewline ou non ou
> > cela est indifférent ? Je suis un peu confus là :/
> > Lors de mon essai avec mon tableau entier, j'ai remplacé tous les
> > "\tabularnewline" par " \tabularnewline" et cela s'est appliqué à tout
> > le document donc à tes définitions et cela marche ; par contre, si je
> > reprends tes définitions telles quelles, ça ne fonctionne plus :/
>
> Hmm, je voulais maladroitement dire que maintenant (sauf bug pas repéré) tu
> peux indifféremment mettre ou ne pas mettre d'espace, mon code a appris à
> regarder s'il y en a une à la fin et à s'adapter en conséquence.
>

Ok donc pas de problème ; à ce propos ce n'est peut-être pas tant
l'espace qui pose problème mais également les instructions \toprule et
\midrule qui quant apparaissent à plusieurs reprises dans des lignes
non numérotées après le \tabularnewline ; peut-être n'est-ce pas un
problème d'espace mais bien de fin de ligne.

> >> - Tu disposes de PrintStatsTable pour imprimer les stats. Pour cela,
> >> c'est à toi de définir \MakeStatsLine qui prend trois arguments et en
> >> fait une ligne de tableau, et MakeStatsTable qui prend un argument et
> >> l'enrobe de ce qu'il faut pour faire un joli tableau de stats. Inutile de
> >> dire que les deux doivent aller ensemble.
>
> > A ce propos, j'ai du mal à suivre : dans ton exemple, vous placer la
>
> J'aime bien le « dans ton exemple, vous ». Je te propose qu'on se tutoie
> sauf si tu as une préférence marquée pour le vouvoiement (j'ai l'habitude
> de tutoyer par défaut sur les niouzegroupes).

Oui oui idem pour moi mais ton "habileté" me laisse admiratif et me
fait m'interroger sur ma marge d'apprentissage :) C'est simplement par
passion et intérêt ou lié à ta profession ?


>
> > commande \PrintStatsTable ; en fait, il semble qu'il y ait un problème
> > puisque en réalité mon tableau va au-delà de 150 lignes et ce tableau
> > de stats ne change pas de page (non utilisation de longtable dans sa
> > définition ?) Ce n'est pas très grave, je ne pense pas utiliser cette
> > fonctionnalité, si ce n'est effectivement comme envisagé au début
> > ajouter une 4e colonne au tableau initial (d'où ma question
> > précédente).
>
> Oui, en fait j'avais fait un définition par défaut avec un tabular, mais tu
> est libre de mettre un longtable à la place si tu veux. Vu que le tableau
> produit n'est pas large, l'idéal serait de faire un espèce de longtable en
> multicolonnes, mais je ne sais pas du tout si c'est facile/possible.
>

Là dessus je réfléchirai ; à la rigueur je pense à intégrer un
\multicol{} dans un tabular mais je ne sais pas si ça marche.

> > Pour MakeStatsTable et MakeStatsLine quels sont les arguments en
> > question ?
>
> \MakeStatsline prend comme arguments dans l'ordre le numéro de ligne, le nom
> de la personne, et le nombre de mots. Elle doit produire à partir de ça une
> ligne de tableau (et elle doit être purement développable). En fait, je me
> demande si ça vaut vraiment le coup de laisser ça personalisable, c'est
> sans doute plus intelligent de personnaliser la composition dans les
> en-têtes du tableaux. \MakeStatsTable prend comme unique argument le
> contenu du tableau de stats.
>

La personnalisation de \MakeStatsline se limite à l'ordre où je ne
comprends rien ?

> >> - \GetStats imprime le nombre de mots prononcés entre les lignes #1 et #2
> >> (incluses) par la personne #3. Ce n'est pas une macro purement
> >> développable (elle le marchera pas dans un \edef). Si tu veux récupérer
> >> le résultat pour autre chose que l'imprimer, ça peut aussi se faire (une
> >> ligne à modifier).
> > Cette possibilité est vraiment intéressante. Comment cela se passe-t-
> > il si j'appelle cette commande avant la tableau dans le document ? Me
> > faudra-t-il passer par une double compilation ?
>
> Pour l'instant ce n'est pas prévu (l'appel avant). Mais c'est faisable et du
> coup ça passera en effet par une double compilation.
>

Ok, ça peut être intéressant dans la mesure où au sein de mon analyse
je peux en avoir besoin même si je peux très bien le faire moi-même,
une addition c'est quand même ce qu'il y a de plus difficile.

A la rigueur est-ce envisageable de placer la commande
\footnotemark[1] (par exemple, ça peut être 2, a, 32...) enchâssée au
sein d'un environnement comme \emph{} ou \comm{} intitulé \foot{}
défini ainsi :

\newcommand\foot{\normalfont} et l'utiliser ainsi :
\foot{\footnotemark[1]}

ou ce serait bien plus compliquer (j'essayerai demain matin pour
voir) ?

> > - la fin du tableau apparaissait ainsi :
> > %%%%%%%%%%%%%%%%
> > & & \tabulranewline \bootomrule
> > %%%%%%%%%%%%%%%%
> > ce qui posait problème, il m'a suffi de "rajouter" une ligne :
> > %%%%%%%%%%%%%%%%
> > & & \tabulranewline \bootomrule
> > & & \tabulranewline
> > %%%%%%%%%%%%%%%%
>
> Oui, pour l'instant j'ai toujours supposé que les lignes se terminaient
> toujours pas \tabularnewline. Si rajouter une dernière ligne vide ne te
> dérange pas, ça évite de compliquer le code d'analyse du tableau.
>

Comme dit précédemment, l'instruction \bottomrule pose moins problème
que \toprule et \midrule apparemment.

> >> - Pour l'instant, tu dois respecter la casse pour les stats par personne.
> >> On peut arranger ça en deux lignes si tu veux.
>
> > Comment cela ?
>
> Pour l'instant, « Prévenu » et « prévenu » sont considérés comme des
> personnes différentes... Si tu préfères, on peut faire en sorte que les
> deux soient reconnus comme identiques.
>

C'est bien ce qu'il me semblait et à priori ce n'est aucunement
génant :)

> Manuel.

Merci encore, à bientôt.

mpg

unread,
Feb 14, 2008, 5:06:42 PM2/14/08
to
Le (on) jeudi 14 février 2008 21:51, Astier a écrit (wrote) :

>> Hmm, je voulais maladroitement dire que maintenant (sauf bug pas repéré)
>> tu peux indifféremment mettre ou ne pas mettre d'espace, mon code a
>> appris à regarder s'il y en a une à la fin et à s'adapter en conséquence.
>>
> Ok donc pas de problème ; à ce propos ce n'est peut-être pas tant
> l'espace qui pose problème mais également les instructions \toprule et
> \midrule qui quant apparaissent à plusieurs reprises dans des lignes
> non numérotées après le \tabularnewline ; peut-être n'est-ce pas un
> problème d'espace mais bien de fin de ligne.
>

Ah, je vois. C'est qu'en fait je considérais que \tabularnewline termine la
ligne, et que donc ce qui vient après c'est le début d'une nouvelle ligne.
Sauf que des trucs comme \toprule et \midrule sont en fait « entre » les
lignes. J'avions par pris en compte cette possibilité. A priori, 6 lignes
de codes pour régler ça :)

> Oui oui idem pour moi mais ton "habileté" me laisse admiratif et me
> fait m'interroger sur ma marge d'apprentissage :) C'est simplement par
> passion et intérêt ou lié à ta profession ?

Je suis touché :) En fait, c'est essentiellement par intérêt. Il se trouve
que depuis j'interviens comme enseignant sur LaTeX (à un niveau bien moins
élevé que ce fil), mais c'est assez secondaire. Je suis matheux, et ne peux
pas assouvir assouvir professionnellement certaines de mes pulsions
informatiques, ce qui explique en partie que j'aime beaucoup programmer
LaTeX. Sans compter que c'est agréable de passer pour un sorcier ;-)

> Là dessus je réfléchirai ; à la rigueur je pense à intégrer un
> \multicol{} dans un tabular mais je ne sais pas si ça marche.
>

Sinon on peut faire un truc qui permet de faire des sous-tableaux avec les
lignes tant à tant, que tu pourras mettre côte à côte à la main. C'est
moins fun, mais ça peut le faire.

> La personnalisation de \MakeStatsline se limite à l'ordre où je ne
> comprends rien ?
>

Je crois que tu comprends bien. En fait, un poil plus : tu pourrais mettre
des \MakeUpperCase sur les noms, ou décider de virer une colonne pour faire
un tableau sur deux colonnes (à condition d'adapter \MakeStatsTable aussi),
ce genre de choses.

>> Pour l'instant ce n'est pas prévu (l'appel avant). Mais c'est faisable et
>> du coup ça passera en effet par une double compilation.
>>
> Ok, ça peut être intéressant dans la mesure où au sein de mon analyse
> je peux en avoir besoin même si je peux très bien le faire moi-même,
> une addition c'est quand même ce qu'il y a de plus difficile.
>

Ouaip. Vais peut-être le faire parce que j'aime bien les fichiers externes,
mais si ça résiste j'insisterai pas : au pire, tu peux aussi faire calculer
le truc par TeX après le tableau, au brouillon, puis le recopier à la main
avant, même si là aussi c'est moins fun.

>> En fait, la plupart des commandes appaissant dans la troisième colonne
>> sont susceptibles de poser problème. Soit elle sont robuste,et le pire
>> qui puisse arriver est qu'elle faussent le décompte, soient elles ne le
>> sont pas et ça peut vraiment partir en vrille. Pour ça, on peut prévoir
>> une liste de macros susceptibles d'être utilisés, histoire que mon code
>> se méfie avant de faire certains trucs brutalement :)
>>
> A la rigueur est-ce envisageable de placer la commande
> \footnotemark[1] (par exemple, ça peut être 2, a, 32...) enchâssée au
> sein d'un environnement comme \emph{} ou \comm{} intitulé \foot{}
> défini ainsi :
>
> \newcommand\foot{\normalfont} et l'utiliser ainsi :
> \foot{\footnotemark[1]}
>
> ou ce serait bien plus compliquer (j'essayerai demain matin pour
> voir) ?
>

Non ce n'est pas plus compliqué. C'est effectivement une solution possible.
Sinon, j'y pense : \protect\footnotemark doit bien marcher aussi.

>> Oui, pour l'instant j'ai toujours supposé que les lignes se terminaient
>> toujours pas \tabularnewline. Si rajouter une dernière ligne vide ne te
>> dérange pas, ça évite de compliquer le code d'analyse du tableau.
>>
> Comme dit précédemment, l'instruction \bottomrule pose moins problème
> que \toprule et \midrule apparemment.
>

Yep, on en revient à la même idée : j'avais oublié la possibilité de
matériel « entre les lignes ».

>> Pour l'instant, « Prévenu » et « prévenu » sont considérés comme des
>> personnes différentes... Si tu préfères, on peut faire en sorte que les
>> deux soient reconnus comme identiques.
>>
> C'est bien ce qu'il me semblait et à priori ce n'est aucunement
> génant :)
>

Ok, alors ça va rester comme ça sans doute :)

À plus,
Manuel (qui postera du code demain).

Astier

unread,
Feb 19, 2008, 4:37:00 AM2/19/08
to
Bonjour, désolé pour la réponse tardive, les derniers jours ont été
chargés.

> Ah, je vois. C'est qu'en fait je considérais que \tabularnewline termine la
> ligne, et que donc ce qui vient après c'est le début d'une nouvelle ligne.
> Sauf que des trucs comme \toprule et \midrule sont en fait « entre » les
> lignes. J'avions par pris en compte cette possibilité. A priori, 6 lignes
> de codes pour régler ça :)
>

Ce qui est tout de même étrange c'est qu'il semble que le \toprule
semble poser moins de problème que le \bottomrule.

> > Là dessus je réfléchirai ; à la rigueur je pense à intégrer un
> > \multicol{} dans un tabular mais je ne sais pas si ça marche.
>
> Sinon on peut faire un truc qui permet de faire des sous-tableaux avec les
> lignes tant à tant, que tu pourras mettre côte à côte à la main. C'est
> moins fun, mais ça peut le faire.
>

Je n'ai pas encore tenté cette manipulation ; sinon, il est possible
de passer localement sur plusieurs colonnes avec l'environnement
multicol : un longtable dans un multicols devraient passer. Mais comme
dit précédemment, le tableau complet du nombre de mots par tour de
parole n'est pas si "utile" que cela : il est plus intéressant de le
placer dans une autre colonne. D'ailleurs, à ce propos, comment cela
se passe-t-il ? Est-il possible d'y placer un "en-tête" comme dans les
première colonnes ?

> > La personnalisation de \MakeStatsline se limite à l'ordre où je ne
> > comprends rien ?
>
> Je crois que tu comprends bien. En fait, un poil plus : tu pourrais mettre
> des \MakeUpperCase sur les noms, ou décider de virer une colonne pour faire
> un tableau sur deux colonnes (à condition d'adapter \MakeStatsTable aussi),
> ce genre de choses.
>

Ah oui quand même... C'est fou ce que c'est puissant !

> >> Pour l'instant ce n'est pas prévu (l'appel avant). Mais c'est faisable et
> >> du coup ça passera en effet par une double compilation.
>
> > Ok, ça peut être intéressant dans la mesure où au sein de mon analyse
> > je peux en avoir besoin même si je peux très bien le faire moi-même,
> > une addition c'est quand même ce qu'il y a de plus difficile.
>
> Ouaip. Vais peut-être le faire parce que j'aime bien les fichiers externes,
> mais si ça résiste j'insisterai pas : au pire, tu peux aussi faire calculer
> le truc par TeX après le tableau, au brouillon, puis le recopier à la main
> avant, même si là aussi c'est moins fun.
>

Ok.


>
>
> >> En fait, la plupart des commandes appaissant dans la troisième colonne
> >> sont susceptibles de poser problème. Soit elle sont robuste,et le pire
> >> qui puisse arriver est qu'elle faussent le décompte, soient elles ne le
> >> sont pas et ça peut vraiment partir en vrille. Pour ça, on peut prévoir
> >> une liste de macros susceptibles d'être utilisés, histoire que mon code
> >> se méfie avant de faire certains trucs brutalement :)
>
> > A la rigueur est-ce envisageable de placer la commande
> > \footnotemark[1] (par exemple, ça peut être 2, a, 32...) enchâssée au
> > sein d'un environnement comme \emph{} ou \comm{} intitulé \foot{}
> > défini ainsi :
>
> > \newcommand\foot{\normalfont} et l'utiliser ainsi :
> > \foot{\footnotemark[1]}
>
> > ou ce serait bien plus compliquer (j'essayerai demain matin pour
> > voir) ?
>
> Non ce n'est pas plus compliqué. C'est effectivement une solution possible.
> Sinon, j'y pense : \protect\footnotemark doit bien marcher aussi.

Mais pour toi, comment cela se passe-t-il ? Si la commande est
précédée d'un \protect elle ne sera pas prise en compte
automatiquement ? Ca ne pose pas de problème de délimitation ?

Merci, à bientôt.

mpg

unread,
Feb 20, 2008, 3:44:52 PM2/20/08
to
Le (on) mardi 19 février 2008 10:37, Astier a écrit (wrote) :

> Bonjour, désolé pour la réponse tardive, les derniers jours ont été
> chargés.
>

Pas de souci, j'allais te dire pareil :)

> Ce qui est tout de même étrange c'est qu'il semble que le \toprule
> semble poser moins de problème que le \bottomrule.
>

Vais voir, mais ça vient peut-être tout simplement du fait que après le
\toprule il y a encore des lignes auxquelles se raccrocher, alors que le
\bottomrule, si on glisse dessus, c'est fini.

>> Sinon on peut faire un truc qui permet de faire des sous-tableaux avec
>> les lignes tant à tant, que tu pourras mettre côte à côte à la main.
>> C'est moins fun, mais ça peut le faire.
>>
> Je n'ai pas encore tenté cette manipulation ; sinon, il est possible
> de passer localement sur plusieurs colonnes avec l'environnement
> multicol : un longtable dans un multicols devraient passer.

Cool, j'aurais pas cru. C'est plutôt fort si ça marche.

> Mais comme
> dit précédemment, le tableau complet du nombre de mots par tour de
> parole n'est pas si "utile" que cela : il est plus intéressant de le
> placer dans une autre colonne. D'ailleurs, à ce propos, comment cela
> se passe-t-il ? Est-il possible d'y placer un "en-tête" comme dans les
> première colonnes ?
>

Oui. Ça vaut peut-être le coup que j'explique un peu mieux ce que je fais :
\Processtable va lire et traiter les lignes une par une jusqu'à
\Endprocesstable. Ce faisant, elle construit d'une part un tableau interne
avec les nombres de mots par ligne et par personne, mais aussi elle
construit le tableau qui va être affiché.

C'est là qu'il y a deux versions : soit elle ne change rien en le
construisant, soit elle rajoute une quatrième colonne, uniquement sur les
lignes qui commencent par un chiffre en première colonne. Dans les deux
cas, elle construit juste le corps du tableau. Tu es alors parfaitement
libre d'utiliser ce corps avec les en-têtes de ton choix.

Par contre, si on rajout une quatrième colonne, il faut faire gaffe que
ton « tableau » de départ, ie ce que tu donneras à manger à \ProcessTable,
aura certaines lignes avec 3 colonnes (quatrième à compléter), et d'autres
avec 4 colonnes.

>> Je crois que tu comprends bien. En fait, un poil plus : tu pourrais
>> mettre des \MakeUpperCase sur les noms, ou décider de virer une colonne
>> pour faire un tableau sur deux colonnes (à condition d'adapter
>> \MakeStatsTable aussi), ce genre de choses.
>>
> Ah oui quand même... C'est fou ce que c'est puissant !
>

Bah en fait ça fait partie des trucs très marrants en TeX, c'est que souvent
la façon le plus simple de stocker une liste de données, c'est sous la
forme \macro{data1.1}{data1.2}{data1.3}\macro{data2.1}{data2.2}{data2.3}
etc. (C'est comme ça que sont stockées les données des lignes.) Il n'y a
alors plus qu'à redéfinir localement \macro pour faire très facilement ce
qu'on veut avec les données.

>> Non ce n'est pas plus compliqué. C'est effectivement une solution
>> possible. Sinon, j'y pense : \protect\footnotemark doit bien marcher
>> aussi.
>
> Mais pour toi, comment cela se passe-t-il ? Si la commande est
> précédée d'un \protect elle ne sera pas prise en compte
> automatiquement ? Ca ne pose pas de problème de délimitation ?
>

Non. En fait, les commandes en elle-même ne posent pas de problèmes pour
compter les espaces. Il suffit de remarquer que dans « blabla \textbf{bli}
blo » il y a autant d'espaces que dans « blabla bli blo ».

Ce qui pose problème au niveau des macros, c'est qu'à un moment je fais une
certaine opération (un \@protected@xdef) qui pose potentillement deux
problèmes :
1. ça casse des trucs avec les macros fragiles non protégées (c'est
d'ailleurs plus ou moins la définition d'être fragile).
2. ça peut théoriquement poser problème en introduisant des nouveaux
espaces, mais en pratique je ne connais pas de macro robuste pour laquelle
ça soit le cas.

Il y a deux façons de régler ce problème : soit en faisant en sorte que
toutes les macros apparaissant dans le tableau soient robustes ou que tu
penses à les protéger toi-même. Soit en faisant auparavant une liste de
toutes les macros susceptibles d'apparaître dans le tableau et en laissant
mon code les éliminer (tout comme il élimine \emph, \comm et leurs
arguments).

Vais regarder ça ce soir, sans doute. Je te tiens au courant.

Manuel.

Reply all
Reply to author
Forward
0 new messages