IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en forme Discussion :

accolades dans du texte avec vers et noms de personnages


Sujet :

Mise en forme

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut accolades dans du texte avec vers et noms de personnages
    Bonjour à tous !
    Je rappelle ma situation : j'utilise LaTeX pour la saisie de pièces de théâtre. C'est un gros projet dans lequel nous sommes plusieurs, et il existe déjà plus d'une centaine de pièces tapées au format LaTeX avec une série de commandes pour... quasiment tout en fait.
    Il reste deux gros problèmes : l'un d'eux, sans doute le plus gros d'ailleurs, est la disposition en accolades.
    Pour commencer, je n'ai rien trouvé de vraiment satisfaisant pour utiliser les accolades sur plusieurs lignes dans du texte (et non en format mathématique, ou tableau).
    Ensuite, il convient de dire que les accolades devront, d'une façon ou d'une autre, pouvoir se mélanger avec les commandes de vers (\un, \deux, \trois, \quatre... \alex) et de personnages, telles qu'elles sont définies ci-dessous (elles ont été crées par unbonpetit, pas par moi).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    \newcommand*\pers[2][]{%
    	\vspace{2ex}\noindent
    	\hfill\textsc{#2}\ifx&\else, \emph{#1}\fi\hfill\null\par\nobreak}
     
    \newcommand*\affiche@vers[2]{%
    	\noindent\hspace{#1}%
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	#2\par}
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}}
     
    \newcommand\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx&\empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}}
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
    Voici une description du principal cas d'accolade.
    Ce qui se passe. Deux personnages (ou plus) disent quelques chose en même temps.
    Comment c'est écrit. On imagine ici que les { au début de la ligne représentent une seule grande accolade :
    { ARICIE
    { Adieu donc, Hippolyte !
    { HIPPOLYTE
    { Adieu donc, ma petite !
    L'accolade pourrait également être à droite, il serait même bon de pouvoir choisir de quelle côté elle sera.
    Ce à quoi le code pourrait ressembler.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    \accoladegauche{
    \aricie
    \six{Adieu donc, Hippolyte!}
     
    \hippolyte
    \six{Adieu donc, ma petite!}
    }
    Ou autre possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    \debutaccoladegauche
    \aricie
    \six{Adieu donc, Hippolyte!}
     
    \hippolyte
    \six{Adieu donc, ma petite!}
    \finaccoladegauche
    Ou même, \begin[gauche]{accolade} \end{accolade} (il s'agirait alors de créer un environnement avec une option...

    C'est le principal cas d'accolades, et je pense que les autres pourraient être ramenés à celui-ci. Il serait sans doute bien de pouvoir écrire à côté de l'accolade.

    Je suis preneur de toute piste que vous pourriez avoir !
    Merci d'avance !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je veux bien m'y coller puisque personne ne semble enthousiaste. À la condition que j'ai un ECM en bonne et due forme avec toutes les macros (que j'ai écrites et oubliées) nécessaires au bon formattage du dialogue.

    Je me chargerai si j'ai l'ECM avant demain (après, je pars en vacances) de mettre une accolade à gauche ou à droite...

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Bonjour !
    Et pardon, j'étais moi-même absent pendant deux jours ; je suis aussi en "vacances", paraît-il...

    Voici l'ECM que je propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    \documentclass[a4paper, 12pt]{book}
    \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
    \usepackage[francais]{babel}	
    \usepackage[T1]{fontenc}	
    \usepackage[latin9]{inputenc}
    \usepackage{calc}
    \usepackage{ifthen}
    \usepackage{fancyhdr}
    \usepackage{xstring}
    \setlength{\headheight}{15pt}
     
    \newcommand{\etc}{\emph{etc.}}
     
    \makeatletter
     
    \newif\ifvers@incomplet
    \vers@incompletfalse
     
    \newcommand\ensemble[1]{%
        \vspace{2ex}%
        \begingroup
            \centering
            \textsc{#1}%
            \par\nobreak
        \endgroup
    }
     
    \newcommand*\pers[2][]{%
    	\vspace{2ex}\noindent
    	\hfill\textsc{#2}\ifx&\else, \emph{#1}\fi\hfill\null\par\nobreak}
     
    \newcommand*\affiche@vers[2]{%
    	\noindent\hspace{#1}%
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	#2\par}
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}}
     
    \newcommand\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx&\empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}}
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
     
    \definitacteur{modeste}
    \definitacteur[nicodème]{nicodeme}
     
    \begin{document}
     
    \ensemble{ensemble}
    \six{Non, non, n'espérez pas}
     
    %accolade qui relie Nicodème et Modeste
    \modeste
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \dix{Pouvoir sortir aisément de mes lacs.}
     
     
    \modeste
    \huit{Mais Mazette seul a mon c\oe ur;}
    \huit{Et le mien fait tout son bonheur;}
     
    \nicodeme
    \quatre{Quelle imprudence!}
    \cinq{Cette confidence}
    \six{M'excite à la vengeance.}
     
    \modeste
    \six{Non, non \etc}
    \huit{Mais Mazette était votre ami.}
     
    \nicodeme
    \huit{Oh! je suis corsaire et demi:}
    \huit{Trahir un ami, c'est l'usage.}
     
    \modeste
    \six{Fi, fi! soyez plus sage.}
     
    \ensemble{ensemble}
    \huit{Non, non, non, non, n'espérez pas,}
     
    %accolade entre Modeste et Nicodème
    \modeste
    \huit{Sur mon époux avoir le pas}
    \six{Non, non, n'espérez pas}
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \huit{Que je renonce à vos appas.}
    \six{Non, non, n'espérez pas}
    \dix{Pouvoir sortir aisément de mes lacs.}
     
    %%autre forme d'accolade:
    \huit{Pour former cent chiffres divers,}
    \huit{Dérobez les trésors de Flore,}
    \huit{Et faites lire dans les airs:}
    \six{Zéphire vous adore.}
    %Ici il faudrait faire une accolade sur les DEUX derniers vers et écrire en face "bis"
     
    \end{document}
    En cherchant des exemples je me suis aperçu qu'on pouvait avoir une accolade avec du texte et marqué "bis" en face (dernière partie de l'ECM), je l'ai donc inclus aussi.

    De manière générale, j'ai un gros préambule, je n'ai pris ici que les commandes concernées. Je travaille en faisant \input{preambule4-4.sty} au début (ici pour les besoin de la pièce jointe, j'ai dû le renommer en .txt, mais il suffira de refaire l'opération inverse). Je le mets donc en pièce jointe au cas où ça serait utile.

    Merci beaucoup d'avance, et bonnes vacances !
    L.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Désolé d'insister, mais je n'ai toujours ni solution, ni même aucune piste pour avancer... Et de même pour l'autre sujet que j'ai proposé. Merci d'avance à tous !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celadon Voir le message
    Désolé d'insister, mais je n'ai toujours ni solution, ni même aucune piste pour avancer
    Moi non plus

    Je ne sais pas si vous vous rendez compte à quel point cela est difficile, surtout avec la méthode que j'ai employée. Vous auriez dû dire dès le départ tout ce que vous vouliez et non pas une partie, car connaitre une partie de vos exigences n'implique pas du tout la même méthode de programmation que de connaître la totalité.

    Je répète donc aux contributeurs de ce forum : pour des questions texniques, expliciter dès le début la totalité des exigences, car en rajouter au fur et à mesure des solutions proposées devient vite bloquant.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Je comprends bien que ce soit difficile, peut-être même infaisable... Et je sais qu'il faut tout prévoir avant de commencer à travailler ; le problème c'est que je ne suis pas seul à travailler, et que nous (mon équipe et moi) avions besoin de commencer la saisie des textes. L'autre problème, c'est qu'il s'agit en l'occurrence de cas particulier. Certes, les accolades sont fréquentes, mais finalement ça ne représente quasiment rien à côté des vers sans accolade.
    Il n'y a donc aucun espoir ? Pour ma part, je n'ai pas trouvé comment mettre des accolades dans du texte tout simple, c'est-à-dire en-dehors de formules mathématiques ou de tableaux. Est-ce que déjà c'est possible ?
    Par ailleurs, quelle serait l'ampleur des changements ? S'il faut changer des choses dans les fichiers saisis pour pouvoir profiter d'une macro avec des accolades, je pense que je peux y employer une partie de mon temps, à condition que les changements ne remettent pas tout en question par ailleurs. Je ne me rends pas bien compte.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celadon Voir le message
    Il n'y a donc aucun espoir ? Pour ma part, je n'ai pas trouvé comment mettre des accolades dans du texte tout simple, c'est-à-dire en-dehors de formules mathématiques ou de tableaux. Est-ce que déjà c'est possible ?
    Mais bien évidemment que c'est possible, la belle blague !!!

    Il manquerait plus que ça, que TeX soit incapable d'imprimer des trucs dans certaines circonstances alors qu'il les imprime dans d'autres.


    Citation Envoyé par Celadon Voir le message
    S'il faut changer des choses dans les fichiers saisis pour pouvoir profiter d'une macro avec des accolades, je pense que je peux y employer une partie de mon temps, à condition que les changements ne remettent pas tout en question par ailleurs. Je ne me rends pas bien compte.
    Non, sans vouloir préjuger de votre niveau de programmation et de maitrise de TeX, c'est loin d'être trivial et un débutant ne peut pas y arriver. Il y a pas mal de calcul de dimensions de boîtes notamment.

    Moi j'ai eu un mal fou et le code que je vous donne est un bricolage assez horrible qui sera d'autant plus difficile à modifier ou à adapter à une autre fonctionnalité. D'ailleurs, je ne l'ai même pas testé, à part dans cet exemple.

    Voici le code (qui m'a pris pas mal de temps). En espérant que vous ne demanderez pas une autre fonctionnalité pour laquelle il faudra tout changer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
    \usepackage{xstring}
    \usepackage[frenchb]{babel}
     
    \newcommand\etc{\emph{etc.}}
     
    \makeatletter
    \newif\ifvers@incomplet
    \vers@incompletfalse
    \newbox\curr@box
    \newbox\coll@box
    \newdimen\min@indent
    \let\if@acco\iffalse%\fi
     
    \newenvironment{accogauche}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\global\let\if@acco\iftrue
    	\par\noindent\global\min@indent\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\dp\coll@box\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@
    	\ht\coll@box\dimexpr\dp\coll@box+0.5ex\relax
    	\setbox\curr@box\hbox{\opt@text$\left\{\vphantom{\copy\coll@box}\right.$}%
    	\kern\dimexpr\min@indent-\wd\curr@box\relax\box\curr@box\kern-\min@indent\box\coll@box
    }
     
    \newcommand\ensemble[1]{%
        \vspace{2ex}%
        \begingroup
            \centering
            \textsc{#1}%
            \par\nobreak
        \endgroup
    }
     
    \newcommand*\pers[2][]{%
    	\ifx\ex@vspace\z@\if@acco\gdef\ex@vspace{2ex}\else\vspace{2ex}\fi\else\vspace{2ex}\fi
    	\noindent
    	\setbox\curr@box\hbox{\textsc{#2}\ifx\@empty#1\@empty\else, \emph{#1}\fi}%
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/2\relax<\min@indent\global\min@indent\dimexpr(\linewidth-\wd\curr@box)/2\relax\fi
    	\kern\dimexpr(\linewidth-\wd\curr@box)/2\relax
    	\box\curr@box\nobreak
    }
     
    \newcommand*\affiche@vers[2]{%
    	\par\noindent\hspace{#1}%
    	\ifdim#1<\min@indent\global\min@indent#1\fi
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	#2%
    }
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}%
    }
     
    \newcommand*\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx\@empty#1\@empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}%
    }
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
     
    \definitacteur{modeste}
    \definitacteur[nicodème]{nicodeme}
     
    \begin{document}
     
    \ensemble{ensemble}
    \six{Non, non, n'espérez pas}
     
    %accolade qui relie Nicodème et Modeste
    \begin{accogauche}
    \modeste
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \dix{Pouvoir sortir aisément de mes lacs.}
    \end{accogauche}
     
    \modeste
    \huit{Mais Mazette seul a mon c\oe ur;}
    \huit{Et le mien fait tout son bonheur;}
     
    \nicodeme
    \quatre{Quelle imprudence!}
    \cinq{Cette confidence}
    \six{M'excite à la vengeance.}
     
    \modeste
    \six{Non, non \etc}
    \huit{Mais Mazette était votre ami.}
     
    \nicodeme
    \huit{Oh! je suis corsaire et demi:}
    \huit{Trahir un ami, c'est l'usage.}
     
    \modeste
    \six{Fi, fi! soyez plus sage.}
     
    \ensemble{ensemble}
    \huit{Non, non, non, non, n'espérez pas,}
     
    %accolade entre Modeste et Nicodème
    \modeste
    \huit{Sur mon époux avoir le pas}
    \six{Non, non, n'espérez pas}
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \huit{Que je renonce à vos appas.}
    \six{Non, non, n'espérez pas}
    \dix{Pouvoir sortir aisément de mes lacs.}
     
    %%autre forme d'accolade:
    \huit{Pour former cent chiffres divers,}
    \huit{Dérobez les trésors de Flore,}
    \begin{accogauche}[\textit{bis}]
    \huit{Et faites lire dans les airs:}
    \six{Zéphire vous adore.}
    \end{accogauche}
    %Ici il faudrait faire une accolade sur les DEUX derniers vers et écrire en face "bis"
    \end{document}

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    Non, sans vouloir préjuger de votre niveau de programmation et de maitrise de TeX, c'est loin d'être trivial et un débutant ne peut pas y arriver. Il y a pas mal de calcul de dimensions de boîtes notamment.
    Non non, je voulais dire : changer des choses dans les fichiers, pas dans les macros... Enfin ça n'est plus d'actualité.

    Moi j'ai eu un mal fou et le code que je vous donne est un bricolage assez horrible qui sera d'autant plus difficile à modifier ou à adapter à une autre fonctionnalité. D'ailleurs, je ne l'ai même pas testé, à part dans cet exemple.

    Citation Envoyé par unbonpetit Voir le message
    Voici le code (qui m'a pris pas mal de temps). En espérant que vous ne demanderez pas une autre fonctionnalité pour laquelle il faudra tout changer.
    Ca ne devrait pas se produire ; seule restriction : on risque de me demander une accolade à droite parfois, est-ce que ça n'est pas trop difficile à faire ? Si oui, je dirai que c'est à gauche, un point c'est tout. Je suis désolé, j'aurais dû le dire.
    En tout cas merci, merci, merci pour ce code ! Évidemment, je serai incapable d'en modifier un iota, et de mon côté mes recherches allaient plutôt vers tikz, mais j'avais encore plusieurs problèmes à résoudre. Donc merci encore et encore !

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celadon Voir le message
    Ca ne devrait pas se produire ; seule restriction : on risque de me demander une accolade à droite parfois, est-ce que ça n'est pas trop difficile à faire ? Si oui, je dirai que c'est à gauche, un point c'est tout.
    À froid, je répondrais : c'est à gauche un point c'est tout !

    Sinon, il faut que je réfléchisse à comment implénter une accolade à droite et si c'est faisable sans trop de modifications... Ce qui n'est pas sûr.
    de mon côté mes recherches allaient plutôt vers tikz, mais j'avais encore plusieurs problèmes à résoudre
    Je ne vois pas en quoi tikz pourrait résoudre votre problème mais bon...

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    Je ne vois pas en quoi tikz pourrait résoudre votre problème mais bon...
    Pour l'instant je cherchais à résoudre les quelques problèmes qui se posent, en particulier
    - du point de vue de l'alignement : il y a un peu de décalage
    - il y a trop de distance entre l'accolade et le texte.
    Mais pour fournir un ECM :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    \documentclass[a4paper, 12pt]{book}
    \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
    \usepackage[francais]{babel}	
    \usepackage[T1]{fontenc}	
    \usepackage[latin9]{inputenc}
    \usepackage{calc}
    \usepackage{ifthen}
    \usepackage{fancyhdr}
    \usepackage{xstring}
    \usepackage{tikz}
     
    \setlength{\headheight}{15pt}
     
    \newcommand{\etc}{\emph{etc.}}
     
    \makeatletter
     
    \newif\ifvers@incomplet
    \vers@incompletfalse
     
    \newcommand\ensemble[1]{%
        \vspace{2ex}%
        \begingroup
            \centering
            \textsc{#1}%
            \par\nobreak
        \endgroup
    }
     
    \newcommand*\pers[2][]{%
    	\vspace{2ex}\noindent
    	\hfill\textsc{#2}\ifx&\else, \emph{#1}\fi\hfill\null\par\nobreak}
     
    \newcommand*\affiche@vers[2]{%
    	\noindent\hspace{#1}%
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	#2\par}
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}}
     
    \newcommand\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx&\empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}}
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
     
    \definitacteur{modeste}
    \definitacteur[nicodème]{nicodeme}
     
    \begin{document}
     
    \ensemble{ensemble}
    \six{Non, non, n'espérez pas}
     
    \usetikzlibrary{decorations.pathreplacing} 
    %accolade qui relie Nicodème et Modeste
    \noindent\begin{tikzpicture}[decoration=brace]
    \node[text width=\textwidth] (box)
    {\modeste
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \dix{Pouvoir sortir aisément de mes lacs.}
    };
    \draw [decorate] (box.south west) -- (box.north west);
    \end{tikzpicture} 
     
    \modeste
    \huit{Mais Mazette seul a mon c\oe ur;}
    \huit{Et le mien fait tout son bonheur;}
     
    \nicodeme
    \quatre{Quelle imprudence!}
    \cinq{Cette confidence}
    \six{M'excite à la vengeance.}
     
    \modeste
    \six{Non, non \etc}
    \huit{Mais Mazette était votre ami.}
     
    \nicodeme
    \huit{Oh! je suis corsaire et demi:}
    \huit{Trahir un ami, c'est l'usage.}
     
    \modeste
    \six{Fi, fi! soyez plus sage.}
     
    \ensemble{ensemble}
    \huit{Non, non, non, non, n'espérez pas,}
     
    %accolade entre Modeste et Nicodème
    \modeste
    \huit{Sur mon époux avoir le pas}
    \six{Non, non, n'espérez pas}
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \huit{Que je renonce à vos appas.}
    \six{Non, non, n'espérez pas}
    \dix{Pouvoir sortir aisément de mes lacs.}
     
    %%autre possibilité d'accolade:
    \huit{Pour former cent chiffres divers,}
    \huit{Dérobez les trésors de Flore,}
    \huit{Et faites lire dans les airs:}
    \six{Zéphire vous adore.}
    %Ici il faudrait faire une accolade sur les DEUX derniers vers et écrire en face "bis"
     
    \end{document}
    C'est loin d'être parfait, mais j'ai envisagé cette solution cet après-midi, je n'ai donc pas encore vraiment étudié les problèmes. Du coup j'ai laissé en l'état... Certes, l'accolade est en plus moins belle.

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Bonjour à tous !
    Finalement, j'ai continué à étudier la question avec tikz, et je dois dire que j'ai un peu avancé. Voici un début de code auquel je suis parvenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    \documentclass[a4paper, 12pt]{book}
    \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
    \usepackage[francais]{babel}	
    \usepackage[T1]{fontenc}	
    \usepackage[latin9]{inputenc}
    \usepackage{calc}
    \usepackage{ifthen}
    \usepackage{fancyhdr}
    \usepackage{xstring}
    \usepackage{tikz}
     
    \setlength{\headheight}{15pt}
     
    \newcommand{\etc}{\emph{etc.}}
     
    \makeatletter
     
    \newif\ifvers@incomplet
    \vers@incompletfalse
     
    \newcommand\ensemble[1]{%
        \vspace{2ex}%
        \begingroup
            \centering
            \textsc{#1}%
            \par\nobreak
        \endgroup
    }
     
    \newcommand*\pers[2][]{%
    	\vspace{2ex}\noindent
    	\hfill\textsc{#2}\ifx&\else, \emph{#1}\fi\hfill\null\par\nobreak}
     
    \newcommand*\affiche@vers[2]{%
    	\noindent\hspace{#1}%
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	#2\par}
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}}
     
    \newcommand\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx&\empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}}
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
     
    \definitacteur{modeste}
    \definitacteur[nicodème]{nicodeme}
     
    \begin{document}
     
    \ensemble{ensemble}
    \six{Non, non, n'espérez pas}
     
    Exemple d'une accolade
     
    \noindent Exemple
     
    \usetikzlibrary{decorations.pathreplacing} 
    %accolade qui relie Nicodème et Modeste
    \noindent\begin{tikzpicture}[decoration=brace]
    \node[text width=\textwidth] (box)
    {\modeste
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \dix{Pouvoir sortir aisément de mes lacs.}
    };
    \draw [decorate] (3cm,1) -- (3cm,-8ex);
    \end{tikzpicture} 
     
    \modeste
    \huit{Mais Mazette seul a mon c\oe ur;}
    \huit{Et le mien fait tout son bonheur;}
     
    \nicodeme
    \quatre{Quelle imprudence!}
    \cinq{Cette confidence}
    \six{M'excite à la vengeance.}
     
    \end{document}
    J'utilise donc une boîte de la largeur du texte (\node[text width=\textwidth] (box)), et j'introduis un dessin à des coordonnées précises (\draw [decorate] (3cm,1) -- (3cm,-8ex);). Le seul problème, c'est que j'aimerais dire "jusqu'en bas de la boîte" au lieu de 8ex, mais box.south tout seul ne fonctionne pas. (On peut faire des coordonnées en (box.south west) -- (box.north east), mais il faut obligatoirement les deux direction, south/north et west/east.)
    Il me faudrait donc une commande ou quelque chose du genre qui : soit donne la hauteur totale de la boîte, soit dise "bas de la boîte". Est-ce que quelqu'un a une idée ? Merci d'avance, je continue aussi à chercher...

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celadon Voir le message
    Merci d'avance, je continue aussi à chercher...
    Vos demandes et récits de vos recherches partent dans tous les sens, on ne sait plus ce que vous voulez, ce que vous faites, ni le suivi et l'intérêt que vous accordez aux solutions que l'on vous donne !

    Et moi, bonne poire qui continuais à chercher comment implémenter en TeX pur l'accolade droite

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    Vos demandes et récits de vos recherches partent dans tous les sens, on ne sait plus ce que vous voulez, ce que vous faites, ni le suivi et l'intérêt que vous accordez aux solutions que l'on vous donne !

    Et moi, bonne poire qui continuais à chercher comment implémenter en TeX pur l'accolade droite
    Je n'ai pas voulu répondre par avance, mais je m'attendais à un tel message.
    Le fait est qu'on ne sait pas ce que font les autres, et que donc je ne savais pas que vous cherchiez comment faire mon accolade à droite ; il est donc normal, ce me semble, que j'aie cherché aussi.
    Évidemment, j'accorde le plus grand intérêt aux solutions qu'on me donne ! Et je crois avoir déjà marqué ma reconnaissance pour les macros toutes prêtes que vous m'avez faites. Est-ce que ça m'interdit de chercher aussi de mon côté ? Déjà, il me semble que j'ai respecté les politesses plus que beaucoup d'autres, puisque (1) je ne poste pas mes questions sur d'autres forums pour voir si c'est mieux, et donc je respecte les interlocuteurs qui sont les miens, et (2) je les tiens au courant de mes propres avancées.
    Quant à "partir dans tous les sens", mon travail sur la mise en page automatisée du théâtre est presque achevé — et j'aimerais réussir à me débarrasser du "presque". D'ailleurs, en grande partie grâce à votre aide, unbonpetit. Alors oui, je ne suis pas programmateur, oui, je ne fais du LaTeX que depuis un an et demi, oui, je ne suis même pas matheux, n'empêche qu'il faut admettre que si les communautés restent aussi fermées, normal que les littéraires fuient l'informatique !
    Et oui, il m'arrive de poser des questions idiotes, moins souvent sur LaTeX que sur LilyPond d'ailleurs, mais faut mieux ça que de rester dans son coin sans savoir faire ou d'abandonner ?
    Désolé, vous devez me trouver présomptueux, mais j'aime mieux que les choses soient claires. J'ai énormément appris sur ce forum, et j'y ai aussi gagné des choses toutes faites. Je n'ai pas particulièrement envie que ça change.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celadon Voir le message
    JLe fait est qu'on ne sait pas ce que font les autres, et que donc je ne savais pas que vous cherchiez comment faire mon accolade à droite ; il est donc normal, ce me semble, que j'aie cherché aussi.
    J'ai dit « il faut que je réfléchisse à comment implénter une accolade à droite et ... ». Vous qui êtes littéraire, vous comprendrez sans doute que cette phrase est affirmative et qu'elle signifie que je vais le faire. Je n'ai pas dit « il faudrait » ou « je le ferai si... ».

    Ce dont vous ne vous doutez pas, c'est le temps que j'y consacre et qui se chiffre en heures (sic). En effet, je suis assez mauvais dans la manipulation de boites en TeX, c'est d'ailleurs aussi pour m'améliorer que je cherche des solutions à votre problème. Voilà pourquoi je n'apprécie guerre que vous vous pointiez 2 jours après en oubliant ce que j'ai dit et en donnant une solution (très imparfaite en plus) qui n'a rien à voir avec ce que je fais et dans laquelle vous semblez vouloir vous impliquer quitte à oublier la solution TeXienne que je cherche. Vous faites quoi de l'implication des autres pour vous ? À moins que vous trouviez que je ne réponds pas assez vite. Pourtant, je vous assure que j'ai vraiment beaucoup cherché, et je cherche encore. Tout n'est pas aussi immédiat que vous le souhaiteriez

    Bref, vu au point où nous en sommes, je laisse tomber et je vous livre l'état du code tel qu'il est après mes modifications de ce matin. J'ai changé beaucoup de choses car l'espacement vertical n'était pas bon lorsqu'on mettait des accolades (et il ne l'est toujours pas d'ailleurs, vois plus bas).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
    \usepackage{xstring}
    \usepackage[frenchb]{babel}
     
    \newcommand\etc{\emph{etc.}}
     
    \makeatletter
     
    \newif\ifvers@incomplet \vers@incompletfalse
    \newbox\curr@box
    \newbox\coll@box
    \newdimen\left@length
    \newdimen\total@length
    \newif\if@accog \@accogfalse
     
    \newenvironment{accogauche}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\@accogtrue
    	\par\noindent\global\left@length\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@}%
    	\setbox\curr@box\llap{\opt@text$\left\{\vrule width\z@ height\mid@ht depth\mid@ht\right.$}%
    	\kern\left@length\lower\the\dimexpr\dp\coll@box/\tw@
    	\box\curr@box
    	\kern-\left@length\box\coll@box
    }
     
    \newenvironment{accodroite}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\@accogtrue
    	\par\noindent\global\left@length\maxdimen
    	\global\total@length-\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@}%
    	\setbox\curr@box\hbox{$\left.\vrule width\z@ height\mid@ht depth\mid@ht\right\}$\opt@text}%
    	\edef\mid@ht{\the\dimexpr\dp\coll@box/\tw@}%
    	\rlap{\box\coll@box}%
    	\kern\total@length
    	\lower\mid@ht\box\curr@box
    }
     
    \newcommand\ensemble[1]{%
        \vspace{2ex}%
        \begingroup
            \centering
            \textsc{#1}%
            \par\nobreak
        \endgroup
    }
     
    \newcommand*\pers[2][]{%
    	\ifx\ex@vspace\z@\if@accog\gdef\ex@vspace{2ex}\else\vspace{2ex}\fi\else\vspace{2ex}\fi
    	\noindent
    	\setbox\curr@box\hbox{\textsc{#2}\ifx\@empty#1\@empty\else, \emph{#1}\fi}%
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/2\relax<\left@length\global\left@length\dimexpr(\linewidth-\wd\curr@box)/\tw@\relax\fi
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box>\total@length\global\total@length\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box\fi
    	\kern\dimexpr(\linewidth-\wd\curr@box)/2\relax
    	\box\curr@box\nobreak
    }
     
    \newcommand*\affiche@vers[2]{%
    	\par\noindent\hspace{#1}%
    	\setbox\curr@box\hbox{#2}%
    	\ifdim#1<\left@length\global\left@length#1\fi
    	\ifdim\dimexpr#1+\wd\curr@box>\total@length\global\total@length\dimexpr#1+\wd\curr@box\fi
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	#2%
    }
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}%
    }
     
    \newcommand*\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx\@empty#1\@empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}%
    }
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
     
    \definitacteur{modeste}
    \definitacteur[nicodème]{nicodeme}
     
    \begin{document}
     
    \ensemble{ensemble}
    \six{Non, non, n'espérez pas}
     
    \begin{accogauche}
    \modeste
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \dix{Pouvoir sortir aisément de mes lacs.}
    \end{accogauche}
     
    \modeste
    \huit{Mais Mazette seul a mon c\oe ur;}
    \huit{Et le mien fait tout son bonheur;}
     
    \nicodeme
    \quatre{Quelle imprudence!}
    \cinq{Cette confidence}
    \six{M'excite à la vengeance.}
     
    \modeste
    \six{Non, non \etc}
    \huit{Mais Mazette était votre ami.}
     
    \nicodeme
    \huit{Oh! je suis corsaire et demi:}
    \huit{Trahir un ami, c'est l'usage.}
     
    \modeste
    \six{Fi, fi! soyez plus sage.}
     
    \ensemble{ensemble}
    \huit{Non, non, non, non, n'espérez pas,}
     
    \modeste
    \begin{accodroite}
    \huit{Sur mon époux avoir le pas}
    \six{Non, non, n'espérez pas}
    \end{accodroite}
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \begin{accogauche}[\textit{bis}]
    \huit{Que je renonce à vos appas.}
    \six{Non, non, n'espérez pas}
    \end{accogauche}
    \dix{Pouvoir sortir aisément de mes lacs.}
     
    %%autre forme d'accolade:
    \huit{Pour former cent chiffres divers,}
    \huit{Dérobez les trésors de Flore,}
    \begin{accogauche}[\textit{bis}]
    \huit{Et faites lire dans les airs:}
    \six{Zéphire vous adore.}
    \end{accogauche}
    \end{document}
    Le résultat, s'il vous semble satisfaisant ne l'est pas pour moi. Vous constaterez que l'espace vertical après « Non, non, n'espérez pas », aussi bien pour l'accolade gauche que pour la droite est légèrement plus grand que l'espace normal entre les vers. Je vous fais d'ailleurs remarquer que je n'ai pas voulu vous envoyer de solution qui ne soit pas parfaite, je me demande pourquoi à la vue de votre solution tikzienne d'une rare mocheté et votre insouciance concernant mes recherches.
    Et oui, il m'arrive de poser des questions idiotes
    Ne rajoutez pas de la mauvaise foi ! Qui a dit que vos questions étaient idiotes ?

    Il me semble avoir regretté que vos exigences s'empilent au fur et à mesure des solutions qui vous sont données, ce qui est la chose la plus emmerdante pour un programmeur.
    Désolé, vous devez me trouver présomptueux, mais j'aime mieux que les choses soient claires.
    Et bien, les voilà clarifiées !

    Je ne vous trouve pas présomptueux, je vous trouve au mieux impatient qu'on vous donne des solutions, au pire inconscient du temps que me demandent vos questions avec le corollaire qui est que vos recherches biffurquent au gré de votre impatience sans tenir compte de l'effort que l'on fait pour vous.

    Que comptez vous faire maintenant ? Cherchez une autre solution avec tikz ? Améliorer ma solution ? Demander encore une autre fonctionnalité ?

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    J'ai dit « il faut que je réfléchisse à comment implénter une accolade à droite et ... ». Vous qui êtes littéraire, vous comprendrez sans doute que cette phrase est affirmative et qu'elle signifie que je vais le faire. Je n'ai pas dit « il faudrait » ou « je le ferai si... ».
    Pardon, mais vu ce qui était dit juste avant, à savoir « À froid, je répondrais : c'est à gauche un point c'est tout ! » et après « Ce qui n'est pas sûr. », je n'étais moi-même pas sûr.

    Citation Envoyé par unbonpetit Voir le message
    Que comptez vous faire maintenant ? Cherchez une autre solution avec tikz ? Améliorer ma solution ? Demander encore une autre fonctionnalité ?
    La question est : que comptez-vous faire, et la question corollaire, qu'aimeriez-vous que je fasse ? Je peux attendre, mais je ne peux pas juste attendre si je ne sais pas que quelque chose va arriver ensuite.

    En attendant, je vous remercie encore du temps que vous y avez passé. Je m'excuse d'avoir laissé croire que votre solution ne m'intéressait pas. Bien évidemment, qu'elle m'intéresse ! Elle est plus belle visuellement, et plus propre au niveau du code ! Seulement, faute de grives on mange des merles : si je ne peux pas avoir ce qu'il y a de mieux, j'essaie au moins de ne pas rien faire. Et j'insiste sur les questions ci-dessus : j'attendrai votre réponse pour entreprendre quoi que ce soit, ou bien continuer d'attendre. Je ne vous dirai pas "n'y passez pas des heures" : vous ferez ce que vous voulez. Et n'oubliez pas de me dire ce que vous attendez de moi par ailleurs, j'insiste également sur ce point.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celadon Voir le message
    Pardon, mais vu ce qui était dit juste avant, à savoir « À froid, je répondrais : c'est à gauche un point c'est tout ! » et après « Ce qui n'est pas sûr. », je n'étais moi-même pas sûr.
    Le « Ce qui n'est pas si sûr » concernait les modifications, pas le fait que j'y réfléchisse ou pas.

    Sinon, voici la macro modifiée de façon à ce que l'espace interligne est désormais correct lorsque les environnement d'accolades sont appelés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
    \usepackage{xstring}
    \usepackage[frenchb]{babel}
     
    \newcommand\etc{\emph{etc.}}
     
    \makeatletter
     
    \newif\ifvers@incomplet\vers@incompletfalse
    \newbox\curr@box
    \newbox\coll@box
    \newdimen\left@length
    \newdimen\total@length
    \newif\if@acco \@accofalse
     
    \def\v@corr@offset{.5ex}
     
    \newenvironment{accogauche}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\@accotrue
    	\par\noindent\global\left@length\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {%
    	\strut
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@-\v@corr@offset}%
    	\setbox\curr@box\llap{\opt@text$\left\{\vrule width\z@ height\mid@ht depth\mid@ht\right.$}%
    	\dp\curr@box\z@\ht\curr@box\z@
    	\kern\left@length
    	\lower\the\dimexpr\dp\coll@box/\tw@-\v@corr@offset/\tw@\box\curr@box
    	\kern-\left@length\box\coll@box
    }
     
    \newenvironment{accodroite}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\@accotrue
    	\par\noindent\global\left@length\maxdimen
    	\global\total@length-\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {%
    	\strut
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@-\v@corr@offset}%
    	\setbox\curr@box\hbox{$\left.\vrule width\z@ height\mid@ht depth\mid@ht\right\}$\opt@text}%
    	\edef\mid@ht{\the\dimexpr\dp\coll@box/\tw@-\v@corr@offset/\tw@}%
    	\dp\curr@box\z@\ht\curr@box\z@
    	\rlap{\box\coll@box}%
    	\kern\total@length\lower\mid@ht\box\curr@box
    }
     
    \newcommand\ensemble[1]{%
        \vspace{2ex}%
        \begingroup
            \centering
            \textsc{#1}%
            \par\nobreak
        \endgroup
    }
     
    \newcommand*\pers[2][]{%
    	\ifx\ex@vspace\z@\if@acco\gdef\ex@vspace{2ex}\else\vspace{2ex}\fi\else\vspace{2ex}\fi
    	\noindent
    	\setbox\curr@box\hbox{\textsc{#2}\ifx\@empty#1\@empty\else, \emph{#1}\fi}%
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/2\relax<\left@length\global\left@length\dimexpr(\linewidth-\wd\curr@box)/\tw@\relax\fi
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box>\total@length\global\total@length\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box\fi
    	\kern\dimexpr(\linewidth-\wd\curr@box)/2\relax
    	\box\curr@box\nobreak
    }
     
    \newcommand*\affiche@vers[2]{%
    	\par\noindent\hspace{#1}%
    	\setbox\curr@box\hbox{#2}%
    	\ifdim#1<\left@length\global\left@length#1\fi
    	\ifdim\dimexpr#1+\wd\curr@box>\total@length\global\total@length\dimexpr#1+\wd\curr@box\fi
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	\box\curr@box
    }
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}%
    }
     
    \newcommand*\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx\@empty#1\@empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}%
    }
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
     
    \definitacteur{modeste}
    \definitacteur[nicodème]{nicodeme}
     
    \begin{document}
     
    \ensemble{ensemble}
    \six{Non, non, n'espérez pas}
     
    \begin{accogauche}
    \modeste
    \dix{Me voir tomber aisément dans vos lacs}
     
    \nicodeme
    \dix{Pouvoir sortir aisément de mes lacs.}
    \end{accogauche}
     
    \ensemble{ensemble}
    \huit{Non, non, non, non, n'espérez pas,}
     
    \modeste[sans accolade]
    \six{Un vers pour meubler}
    \huit{Sur mon époux avoir le pas}
    \six{Non, non, n'espérez pas}
    \dix{Me voir tomber aisément dans vos lacs}
     
    \modeste[avec accolade gauche]
    \six{Un vers pour meubler}
    \begin{accogauche}
    \huit{Sur mon époux avoir le pas}
    \six{Non, non, n'espérez pas}
    \end{accogauche}
    \dix{Me voir tomber aisément dans vos lacs}
     
    \modeste[avec accolade droite]
    \six{Un vers pour meubler}
    \begin{accodroite}
    \huit{Sur mon époux avoir le pas}
    \six{Non, non, n'espérez pas}
    \end{accodroite}
    \dix{Me voir tomber aisément dans vos lacs}
    \end{document}
    Ces environnements d'accolades n'ont pas été testés dans des conditions autres que cet exemple. Il doit donc y avoir des choses à retoucher.
    Et n'oubliez pas de me dire ce que vous attendez de moi par ailleurs, j'insiste également sur ce point.
    Déjà me dire si cela vous convient ou pas, et si non, ce qu'il y a à modifier, en espérant qu'il y en aura le moins possible.

    Ensuite, je voudrais savoir ce qu'il reste à implémenter pour que ces macros vous satisfassent car j'ai l'impression que plus ça va plus il y a de choses à modifier (allez éventuellement demander à votre groupe de travail que l'on soit fixés). Sinon, je ne suis censé rien attendre de vous, pas plus que je n'ai rien à vous ordonner. Juste un petit conseil : lorsque vous entreprenez des recherches vers d'autres pistes alors que je suis entrain de chercher une solution, vous me mettez au courant que j'arrête, le temps de voir si finalement, vos recherches ont abouti ou pas.

  17. #17
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    Sinon, voici la macro modifiée de façon à ce que l'espace interligne est désormais correct lorsque les environnement d'accolades sont appelés :
    Merci beaucoup ! Je ne sais pas quoi dire d'autre, surtout que j'essaie d'imaginer le travail et l'investissement que ça vous a demandé. C'est vraiment gentil, merci encore !

    Citation Envoyé par unbonpetit Voir le message
    Ces environnements d'accolades n'ont pas été testés dans des conditions autres que cet exemple. Il doit donc y avoir des choses à retoucher.
    J'ai demandé à récupérer d'autres textes avec des accolades, je testerai pour vous tenir au courant.

    Citation Envoyé par unbonpetit Voir le message
    Déjà me dire si cela vous convient ou pas, et si non, ce qu'il y a à modifier, en espérant qu'il y en aura le moins possible.
    Ça m'a l'air très bien ! Si c'est possible, et pas trop compliqué, et j'insiste : pas trop compliqué, c'est pour fignoler : quand il y a une accolade à droite, peut-être que ça ne serait pas mal qu'il y ait un petit peu plus d'espace entre le texte (des vers) et l'accolade elle-même. Je ne sais pas si ça représente un travail important ; si tel est le cas, on laisse comme ça !

    Citation Envoyé par unbonpetit Voir le message
    Ensuite, je voudrais savoir ce qu'il reste à implémenter pour que ces macros vous satisfassent car j'ai l'impression que plus ça va plus il y a de choses à modifier (allez éventuellement demander à votre groupe de travail que l'on soit fixés).
    Il ne reste plus grand-chose ; je vais néanmoins vérifier. Une chose est ce que j'ai présenté comme amélioration possible dans cet autre topic. Si vous êtes d'accord pour y regarder. J'espère que ça n'engage pas de grandes modifications ; en tout cas je ne pensais pas en postant le topic, et je ne le fais que parce que j'ai beaucoup de critiques (dans mon groupe de recherche) à ce sujet. Si c'est trop compliqué, on mettra des espaces nous-mêmes là où on en veut.
    Parallèlement, je cherche à étudier comment présenter le texte quand l'original (du XVIIIe s.) le présente en deux colonnes. C'est surtout un problème pour les vers, et nous avons décidé de simplifier la tache. L'essentiel de ce qui restait, c'était les accolades et l'espacement air/vers/prose.
    Ensuite, il me semble qu'on sera au bout, et qu'on aura une présentation des pièces de théâtre qui frôle la perfection. Et ce, en grande partie grâce à vous !
    Encore merci !

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celadon Voir le message
    Ça m'a l'air très bien ! Si c'est possible, et pas trop compliqué, et j'insiste : pas trop compliqué, c'est pour fignoler : quand il y a une accolade à droite, peut-être que ça ne serait pas mal qu'il y ait un petit peu plus d'espace entre le texte (des vers) et l'accolade elle-même. Je ne sais pas si ça représente un travail important ; si tel est le cas, on laisse comme ça !
    Vous n'avez qu'à rajouter "\kern5pt" devant le "\rigth\}" de l'environnement, et vous aurez 5pt d'espace supplémentaire entre le texte et l'accolade droite. Vous pouvez mettre une autre mesure, évidemment.

    Citation Envoyé par Celadon Voir le message
    Il ne reste plus grand-chose ; je vais néanmoins vérifier. Une chose est ce que j'ai présenté comme amélioration possible dans cet autre topic.
    Je n'ai rien strictement rien compris à votre demande. C'est quoi un nom d'air ?

    Donnez un ECM et expliquez rigoureusement les espaces qui ne vont pas ou que vous voulez modifier.

  19. #19
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 72
    Points
    72
    Par défaut
    Merci ! Mais vraiment merci, c'est vraiment génial !

    Alors en testant sur un autre fichier (d'ailleurs pour faire mon ECM), je m'aperçois que la commande \pers ne va plus à la ligne automatiquement, il me semble.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    \documentclass[a4paper, 12pt]{book}
    \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
    \usepackage[francais]{babel}	
    \usepackage[T1]{fontenc}	
    \usepackage[latin9]{inputenc}
    \usepackage{calc}
    \usepackage{ifthen}
    \usepackage{fancyhdr}
    \usepackage{xstring}
    \makeatletter
     
    \newcommand{\bis}{\hspace{0.5cm}\textit{bis}}
    \newcommand{\etc}{\emph{etc.}}
     
    %%%%Commandes pour les airs%%%%
    \newcommand{\air}[2][:]{%
    	\begingroup
    		\centering
    		\textsc{air}%
    %		\ifx\empty#1 : \else#1 \fi
    		\ #1
    		\textit{#2}%
    		\par\nobreak
    	\endgroup
    }
    \newcommand{\partair}[3][:]{%
    	\begingroup
    		\centering
    		#3 de l'\textsc{air}%
    %		\ifx\empty#1{ : }\else#1 \fi
    		\ #1
    		\textit{#2}%
    		\par\nobreak
    	\endgroup
    }
    \newcommand\airopera[1][]{%
        \begingroup
            \centering
            \textsc{air de l'opéra}%
            \ifx\empty#1\empty\else: \emph{#1}\fi
            \par\nobreak
        \endgroup
    }
    \newcommand\airnote[1][]{%
        \begingroup
            \centering
            \textsc{air noté}%
            \ifx\empty#1\empty\else: \emph{#1}\fi
            \par\nobreak
        \endgroup
    }
    \newcommand\memair{%
        \begingroup
            \centering
            \textsc{même air} %
            \par\nobreak
        \endgroup
    }
    \newcommand\suitairprec{%
        \begingroup
            \centering
            \textsc{suite de l'air précédent} %
            \par\nobreak
        \endgroup
    }
    \newcommand\finairprec{%
        \begingroup
            \centering
            \textsc{fin de l'air précédent} %
            \par\nobreak
        \endgroup
    }
    \newcommand\airentrecrochets[1]{%
        \begingroup
            \centering
            [\textsc{air} : \textit{#1}]%
            \par\nobreak
        \endgroup
    }
    \newcommand\memaircrochets{%
        \begingroup
            \centering
            [\textsc{même air}]%
            \par\nobreak
        \endgroup
    }
    \newcommand\aircrochet[1]{%
        \begingroup
            \centering
            [\textsc{air} : \textit{#1}]%
            \par\nobreak
        \endgroup
    }
    \newcommand\airaltern[2]{%
        \begingroup
            \centering
            \textsc{air} : \textit{#1} ou \textit{#2}%
            \par\nobreak
        \endgroup
    }
    \newcommand\refrain{%
        \begingroup
            \centering
            \textsc{refrain}%
            \par\nobreak
        \endgroup
    }
     
    \makeatletter
     
    \newif\ifvers@incomplet\vers@incompletfalse
    \newbox\curr@box
    \newbox\coll@box
    \newdimen\left@length
    \newdimen\total@length
    \newif\if@acco \@accofalse
     
    \def\v@corr@offset{.5ex}
     
    \newenvironment{accogauche}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\@accotrue
    	\par\noindent\global\left@length\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {%
    	\strut
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@-\v@corr@offset}%
    	\setbox\curr@box\llap{\opt@text$\left\{\vrule width\z@ height\mid@ht depth\mid@ht\right.$}%
    	\dp\curr@box\z@\ht\curr@box\z@
    	\kern\left@length
    	\lower\the\dimexpr\dp\coll@box/\tw@-\v@corr@offset/\tw@\box\curr@box
    	\kern-\left@length\box\coll@box
    }
     
    \newenvironment{accodroite}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\@accotrue
    	\par\noindent\global\left@length\maxdimen
    	\global\total@length-\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {%
    	\strut
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@-\v@corr@offset}%
    	\setbox\curr@box\hbox{$\left.\vrule width\z@ height\mid@ht depth\mid@ht\right\}$\opt@text}%
    	\edef\mid@ht{\the\dimexpr\dp\coll@box/\tw@-\v@corr@offset/\tw@}%
    	\dp\curr@box\z@\ht\curr@box\z@
    	\rlap{\box\coll@box}%
    	\kern\total@length\lower\mid@ht\box\curr@box
    }
     
    \newcommand\ensemble[1]{%
        \vspace{2ex}%
        \begingroup
            \centering
            \textsc{#1}%
            \par\nobreak
        \endgroup
    }
     
    \newcommand*\pers[2][]{%
    	\ifx\ex@vspace\z@\if@acco\gdef\ex@vspace{2ex}\else\vspace{2ex}\fi\else\vspace{2ex}\fi
    	\noindent
    	\setbox\curr@box\hbox{\textsc{#2}\ifx\@empty#1\@empty\else, \emph{#1}\fi}%
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/2\relax<\left@length\global\left@length\dimexpr(\linewidth-\wd\curr@box)/\tw@\relax\fi
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box>\total@length\global\total@length\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box\fi
    	\kern\dimexpr(\linewidth-\wd\curr@box)/2\relax
    	\box\curr@box\nobreak
    }
     
    \newcommand*\affiche@vers[2]{%
    	\par\noindent\hspace{#1}%
    	\setbox\curr@box\hbox{#2}%
    	\ifdim#1<\left@length\global\left@length#1\fi
    	\ifdim\dimexpr#1+\wd\curr@box>\total@length\global\total@length\dimexpr#1+\wd\curr@box\fi
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	\box\curr@box
    }
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}%
    }
     
    \newcommand*\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx\@empty#1\@empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}%
    }
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
     
     
     
     
     
    \definitacteur[persée]{persee}
    \definitacteur[céphée]{cephee}
    \definitacteur[phinée]{phinee}
    \definitacteur[mérope]{merope}
    \definitacteur[le ch\oe ur]{choeur}
     
    \begin{document}
     
    \cephee
    \air{Belle brune}
    \trois{Ah! ma femme\bis}
    \sept{Il est à propos ici}
    \sept{Que je vous chante la gamme,}
    \trois{Ah! ma femme\bis}
     
    Que je suis malheureux, Méduse pétrifie tout mon peuple. Les trois quarts de mes sujets ne seront plus bons à mettre que dans l'atelier d'un sculpteur et moi peut-être, dans un bosquet de mon jardin.
     
     
    \merope
    Ma foi, mon amour ne me déshonore pas tant que votre orgueil mal placé.
     
    \air{Jean Gille}
    \sept{Céphée est un imbécile,}
    \six{Jean Gille joli Jean.}
    \sept{Pour vous il est trop facile,}
    \deux{Jean Gille, \etc}
    \cinq{C'est un innocent.\bis}
     
     
     
     
     
    \cephee
    \air{Non je ne veux pas rire}
    \huit{Junon va calmer son courroux,}
    \huit{Mon frère, réjouissons-nous.}
     
    \phinee
    \six{Cela vous plait à dire,}
    \huit{Non je ne veux pas rire, moi.}
     
    \air{Ma mère, mariez-moi}
    \sept{Andromède était pour moi,}
    \sept{Vous m'aviez promis sa foi.}
    \sept{D'accord avec sa maman,}
    \cinq{Souvenez-vous en,\bis}
    \sept{Vous deviez tous deux ce soir,}
    \sept{La remettre en mon pouvoir.}
     
    \air{Que j'estime [mon cher voisin]}
    \huit{Un sot vient me la disputer,}
    \six{Et quel est donc son titre?}
     
    \cephee
    \huit{C'est le bâtard de Jupiter.}
     
    \choeur
    \partair[des]{Rats}{Refrain}
    \cinq{Nous sortons des flots}
    \huit{Pour ramer sur une galère}
    \cinq{Nous sortons des flots}
    \huit{Pour aller coucher aux cachots.}
     
    \end{document}
    Du coup c'est un problème, peut-être simple à résoudre ? En tout cas je l'espère.
    En ce qui concerne les espacements, puisque finalement ça va fonctionner avec le même ECM, je disais donc :
    - avant un nom d'air, petite espace verticale SAUF si ce qui précède est un nom de personnage ;
    - avant de la prose (texte sans commande, texte tout simple), idem !


    Les noms d'airs, ce sont les commandes \air, \partair, \airopera, \airnote, \memair, \suitairprec, \finairprec, \airentrecrochets, \memaircrochets, \aircrochet, \airaltern, \refrain ; oui, ça en fait beaucoup, mais comme on ne peut avoir qu'une option dans les nouvelles macros... du moins au niveau où je les ai faites. Elles ne sont pas toutes utilisées dans mon exemple, qui n'utilise que les deux plus courantes : \air et \partair. Du coup il faudrait sans doute quelque chose qui ne complique pas trop. Il faut dire quelles ont toutes à peu près la même structure, avec 0, 1 ou 2 arguments, 0 ou 1 option. Autre possibilité : si on peut avoir une seule commande d'air qui couvre toutes les possibilités (mais ça me semble difficile) tout en restant relativement automatique, évidemment je suis d'accord !!! À ce moment-là, il faudrait que je définisse exactement quelles sont lesdites possibilités. N'hésitez pas à me demander, c'est quand même le moins que je puisse faire !
    Dans mon exemple (ECM), concrètement il faudrait de l'espace verticale entre "Ah! ma femme\bis" (la deuxième fois) et "Que je suis malheureux" (avant la prose, mais pas avant nom de personnage) ; avant "\air{Jean Gille}" (entre nom d'air et prose), avant "\air{Ma mère, mariez-moi}" (entre nom d'air et vers) et avant "\air{Que j'estime [mon cher voisin]"}" (pour la même raison). Il ne faut pas d'espace verticale avant "\air{Belle brune}", avant "Ma foi, mon amour ne me déshonore pas tant ...", avant "\air{Non je ne veux pas rire}" ni avant "\partair[des]{Rats}{Refrain}", puisqu'il y a un nom de personnage juste avant. Autrement dit, le nom de personnage doit toujours être bien collé (verticalement) à la réplique qui suit, quel que soit son début. (Mais il doit aller à la ligne.)

    N'hésitez pas à me dire si c'est clair, ou si ça ne l'est pas, et si ça demanderait trop de travail.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Celadon Voir le message
    - avant un nom d'air, petite espace verticale SAUF si ce qui précède est un nom de personnage ;
    Fait
    - avant de la prose (texte sans commande, texte tout simple), idem !
    Arf, sérieusement, comment voulez vous que de la prose, c'est à dire des lettres seules soient capables d'exécuter une action (ici, insérer une espace verticale). Vous en demandez vraiment trop !

    Vous allez faire comme tout le monde sans exception, vous allez oublier vos rêves de tout automatiser par LaTeX et vous allez insérer vous même des espaces verticaux (\medskip, \bigskip ou autre).

    Si vous n'êtes pas prêt à ce sacrifice horrible, vous construisez un environnement "prose" qui lui sera capable d'exécuter une action avant d'afficher la prose en question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    \documentclass[a4paper, 12pt]{book}
    \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry}
    \usepackage[francais]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{calc}
    \usepackage{ifthen}
    \usepackage{fancyhdr}
    \usepackage{xstring}
    \makeatletter
     
    \newcommand{\bis}{\hspace{0.5cm}\textit{bis}}
    \newcommand{\etc}{\emph{etc.}}
     
    %%%%Commandes pour les airs%%%%
    \newcommand{\air}[2][:]{%
    	\if@verse\vspace{10pt}\@versefalse\fi
    	\begingroup
    		\centering
    		\textsc{air}%
    %		\ifx\empty#1 : \else#1 \fi
    		\ #1
    		\textit{#2}%
    		\par\nobreak
    	\endgroup
    }
    \newcommand{\partair}[3][:]{%
    	\begingroup
    		\centering
    		#3 de l'\textsc{air}%
    %		\ifx\empty#1{ : }\else#1 \fi
    		\ #1
    		\textit{#2}%
    		\par\nobreak
    	\endgroup
    }
    \newcommand\airopera[1][]{%
        \begingroup
            \centering
            \textsc{air de l'opéra}%
            \ifx\empty#1\empty\else: \emph{#1}\fi
            \par\nobreak
        \endgroup
    }
    \newcommand\airnote[1][]{%
        \begingroup
            \centering
            \textsc{air noté}%
            \ifx\empty#1\empty\else: \emph{#1}\fi
            \par\nobreak
        \endgroup
    }
    \newcommand\memair{%
        \begingroup
            \centering
            \textsc{même air} %
            \par\nobreak
        \endgroup
    }
    \newcommand\suitairprec{%
        \begingroup
            \centering
            \textsc{suite de l'air précédent} %
            \par\nobreak
        \endgroup
    }
    \newcommand\finairprec{%
        \begingroup
            \centering
            \textsc{fin de l'air précédent} %
            \par\nobreak
        \endgroup
    }
    \newcommand\airentrecrochets[1]{%
        \begingroup
            \centering
            [\textsc{air} : \textit{#1}]%
            \par\nobreak
        \endgroup
    }
    \newcommand\memaircrochets{%
        \begingroup
            \centering
            [\textsc{même air}]%
            \par\nobreak
        \endgroup
    }
    \newcommand\aircrochet[1]{%
        \begingroup
            \centering
            [\textsc{air} : \textit{#1}]%
            \par\nobreak
        \endgroup
    }
    \newcommand\airaltern[2]{%
        \begingroup
            \centering
            \textsc{air} : \textit{#1} ou \textit{#2}%
            \par\nobreak
        \endgroup
    }
    \newcommand\refrain{%
        \begingroup
            \centering
            \textsc{refrain}%
            \par\nobreak
        \endgroup
    }
     
    \makeatletter
     
    \newif\ifvers@incomplet\vers@incompletfalse
    \newbox\curr@box
    \newbox\coll@box
    \newdimen\left@length
    \newdimen\total@length
    \newif\if@acco \@accofalse
    \newif\if@verse \@versefalse
     
    \def\v@corr@offset{.5ex}
     
    \newenvironment{accogauche}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\@accotrue
    	\par\noindent\global\left@length\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {%
    	\strut
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@-\v@corr@offset}%
    	\setbox\curr@box\llap{\opt@text$\left\{\vrule width\z@ height\mid@ht depth\mid@ht\right.$}%
    	\dp\curr@box\z@\ht\curr@box\z@
    	\kern\left@length
    	\lower\the\dimexpr\dp\coll@box/\tw@-\v@corr@offset/\tw@\box\curr@box
    	\kern-\left@length\box\coll@box
    }
     
    \newenvironment{accodroite}[1][]{%
    	\global\let\ex@vspace\z@
    	\gdef\opt@text{#1}\@accotrue
    	\par\noindent\global\left@length\maxdimen
    	\global\total@length-\maxdimen
    	\setbox\coll@box\vtop\bgroup
    }
    {%
    	\strut
    	\egroup
    	\unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi
    	\edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@-\v@corr@offset}%
    	\setbox\curr@box\hbox{$\left.\vrule width\z@ height\mid@ht depth\mid@ht\right\}$\opt@text}%
    	\edef\mid@ht{\the\dimexpr\dp\coll@box/\tw@-\v@corr@offset/\tw@}%
    	\dp\curr@box\z@\ht\curr@box\z@
    	\rlap{\box\coll@box}%
    	\kern\total@length\lower\mid@ht\box\curr@box
    }
     
    \newcommand\ensemble[1]{%
        \vspace{2ex}%
        \begingroup
            \centering
            \textsc{#1}%
            \par\nobreak
        \endgroup
    }
     
    \newcommand*\pers[2][]{%
    	\ifx\ex@vspace\z@\if@acco\gdef\ex@vspace{2ex}\else\vspace{2ex}\fi\else\vspace{2ex}\fi
    	\noindent
    	\setbox\curr@box\hbox{\textsc{#2}\ifx\@empty#1\@empty\else, \emph{#1}\fi}%
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/2\relax<\left@length\global\left@length\dimexpr(\linewidth-\wd\curr@box)/\tw@\relax\fi
    	\ifdim\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box>\total@length\global\total@length\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box\fi
    	\kern\dimexpr(\linewidth-\wd\curr@box)/2\relax
    	\box\curr@box\par\nobreak
    }
     
    \newcommand*\affiche@vers[2]{%
    	\@versetrue\par\noindent\hspace{#1}%
    	\setbox\curr@box\hbox{#2}%
    	\ifdim#1<\left@length\global\left@length#1\fi
    	\ifdim\dimexpr#1+\wd\curr@box>\total@length\global\total@length\dimexpr#1+\wd\curr@box\fi
    	\unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi
    	\ifvers@incomplet\g@addto@macro\vers@incomplet{#2 }%
    	\else\let\vers@incomplet\@empty
    	\fi
    	\box\curr@box
    }
     
    \newcommand*\definit@vers[2]{%
    	\newcommand*#1{\@ifstar
    		{\vers@incomplettrue\affiche@vers{#2}}%
    		{\vers@incompletfalse\affiche@vers{#2}}}%
    }
     
    \newcommand*\definitacteur[2][]{%
    	\expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
    		\ifx\@empty#1\@empty\pers[##1]{#2}%
    		\else\pers[##1]{#1}%
    		\fi}%
    }
     
    \definit@vers\un    {7.5cm}
    \definit@vers\deux  {7  cm}
    \definit@vers\trois {6.5cm}
    \definit@vers\quatre{6  cm}
    \definit@vers\cinq  {5.5cm}
    \definit@vers\six   {5  cm}
    \definit@vers\sept  {4.5cm}
    \definit@vers\huit  {4  cm}
    \definit@vers\neuf  {3.5cm}
    \definit@vers\dix   {3  cm}
    \definit@vers\onze  {2.5cm}
    \definit@vers\alex  {2  cm}
    \definit@vers\douze {2  cm}
    \definit@vers\treize{1  cm}
     
    \let\vers@incomplet\@empty
     
     
     
     
     
    \definitacteur[persée]{persee}
    \definitacteur[céphée]{cephee}
    \definitacteur[phinée]{phinee}
    \definitacteur[mérope]{merope}
    \definitacteur[le ch\oe ur]{choeur}
     
    \begin{document}
     
    \cephee
    \air{Belle brune}
    \trois{Ah! ma femme\bis}
    \sept{Il est à propos ici}
    \sept{Que je vous chante la gamme,}
    \trois{Ah! ma femme\bis}
     
    Que je suis malheureux, Méduse pétrifie tout mon peuple. Les trois quarts de mes sujets ne seront plus bons à mettre que dans l'atelier d'un sculpteur et moi peut-être, dans un bosquet de mon jardin.
     
     
    \merope
    Ma foi, mon amour ne me déshonore pas tant que votre orgueil mal placé.
     
    \air{Jean Gille}
    \sept{Céphée est un imbécile,}
    \six{Jean Gille joli Jean.}
    \sept{Pour vous il est trop facile,}
    \deux{Jean Gille, \etc}
    \cinq{C'est un innocent.\bis}
     
     
     
     
     
    \cephee
    \air{Non je ne veux pas rire}
    \huit{Junon va calmer son courroux,}
    \huit{Mon frère, réjouissons-nous.}
     
    \phinee
    \six{Cela vous plait à dire,}
    \huit{Non je ne veux pas rire, moi.}
     
    \air{Ma mère, mariez-moi}
    \sept{Andromède était pour moi,}
    \sept{Vous m'aviez promis sa foi.}
    \sept{D'accord avec sa maman,}
    \cinq{Souvenez-vous en,\bis}
    \sept{Vous deviez tous deux ce soir,}
    \sept{La remettre en mon pouvoir.}
     
    \air{Que j'estime [mon cher voisin]}
    \huit{Un sot vient me la disputer,}
    \six{Et quel est donc son titre?}
     
    \cephee
    \huit{C'est le bâtard de Jupiter.}
     
    \choeur
    \partair[des]{Rats}{Refrain}
    \cinq{Nous sortons des flots}
    \huit{Pour ramer sur une galère}
    \cinq{Nous sortons des flots}
    \huit{Pour aller coucher aux cachots.}
     
    \end{document}

Discussions similaires

  1. Images dans champs texte avec RCP
    Par legentil dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 26/07/2010, 14h05
  2. Plusieurs <html:text> avec le même nom ?
    Par hisoft dans le forum Struts 1
    Réponses: 4
    Dernier message: 26/02/2010, 13h23
  3. Réponses: 2
    Dernier message: 24/09/2009, 09h49
  4. Réponses: 2
    Dernier message: 05/12/2008, 11h12
  5. Réponses: 12
    Dernier message: 31/05/2007, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo