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

Bibliographies - Index - Glossaires Discussion :

Tri avec \lstset{index={Mot_classement@Mot}


Sujet :

Bibliographies - Index - Glossaires

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut Tri avec \lstset{index={Mot_classement@Mot}
    bonjour

    Voici l'exposé de mon problème.

    1) le fonctionnement de la commande \index={Mot_classement@Mot} est correct alors que avec
    2) \lstset{index={Mot_classement@Mot} cette entrée d'index n'apparait plus

    voici un code de test

    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
    \documentclass{book}
    \usepackage[latin1]{inputenc}
    %%\usepackage[cyr]{aeguill}
    \usepackage{xspace}
    \usepackage{amsmath}
    \usepackage{geometry}
    \usepackage{fancyhdr}
    \usepackage[frenchb,english]{babel}
    \usepackage{url}
    \usepackage{verbatim}
    \usepackage{fancyvrb} % ESSAI POUR LE LISTINGS AVEC COUPURE PAGE AUTO
    %%\usepackage{fancybox} l'arrivée de ce package doit générer de nombreueses anomalies
    \usepackage{listings}
    \usepackage{hyperref}
    \usepackage{graphicx}
    \usepackage{wrapfig}
    \usepackage{array}
    \usepackage{upquote}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{longtable}
    \usepackage[normalem]{ulem} % pour souligner \uline{...}
    \usepackage{makeidx}
    \let\urlorig\url
    \renewcommand{\url}[1]{%
    	\begin{otherlanguage}{english}\urlorig{#1}\end{otherlanguage}%
    }
    %%%%%%%%%%%%%%%%%%%%%%%%%%
    %provisoire
    \usepackage{lipsum}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    \definecolor{mygreen}{rgb}{0,0.6,0}
    \definecolor{mygray}{rgb}{0.5,0.5,0.5}
    \definecolor{mymauve}{rgb}{0.58,0,0.82}
    %
    \lstset{
    	numbers=left, 
    	numberstyle=\small, 
    	numbersep=8pt, 
    	frame = single, 
    	language=C, 
    	framexleftmargin=5pt,			 % la marge à gauche du code
    	% test pour améliorer la présentation du code
    	upquote=true,
    	columns=flexible,
    	basicstyle=\ttfamily,
    	% provoque une erreur texcsstyle=*\color{blue},
    	commentstyle=\color{mygreen},    % comment style
    	keywordstyle=\color{blue},       % keyword style
    	rulecolor=\color{black},         % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
    	showspaces=false,                % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'		
    	showtabs=false,                  % show tabs within strings adding particular underscores
    	stringstyle=\color{mymauve},     % string literal style
    	numbers=none, 
    	tabsize=4,
    	% pour couper les lignes trop loongues
    	breaklines,
    	breakindent=1.5em, %?indente?de?3?caracteres?vers?la?droite
    }
     
    \makeindex
     
    %%%%%%%%%%%%%%%%%%% debut du document %%%%%%%%%%%%%%%%%%%
    \begin{document}
     
    	\par
    	\index{AGTK\_MachinChose}
    exemple ou je parle de AGTK\_MachinChose
    	\par 
    	\bigskip
    	Indexation dans la page courante \textbf{trouvé} dans l'index
    	\par
    	\index{gtk\_widget\_set\_size\_request}
    	\index{gtk\_window\_maximize}
    	\par
    	gtk\_widget\_set\_size\_request (GTK\_WIDGET (window), 200, 200); remplace
    	\par
    	gtk\_window\_maximize (GTK\_WINDOW (window)); la fenêtre était trop grande 
    	\par
    	\index{gtk\_window\_set\_default\_size}
    	gtk\_window\_set\_default\_size  (GTK\_WINDOW (window), 200, 200); est aussi utilisable
     
    	\bigskip
     
    	Indexation dans un tableau \textbf{trouvé} dans l'index
    	\index{GTK\_FILE\_CHOOSER\_ACTION\_OPEN}
    	\index{GTK\_FILE\_CHOOSER\_ACTION\_SAVE}
    	\index{GTK\_FILE\_CHOOSER\_ACTION\_SELECT\_FOLDER}
    	\par
    	\begin{tabular}{|p{8,5cm}| p{5cm}|}
     
    		\hline
    		GTK\_FILE\_CHOOSER\_ACTION\_OPEN&Indicates open mode. The file chooser will only let the user pick an existing file.\\ 
    		\hline	
    		GTK\_FILE\_CHOOSER\_ACTION\_SAVE&Indicates save mode. The file chooser will let the user pick an existing file, or type in a new filename.\\ 
    		\hline	
    		GTK\_FILE\_CHOOSER\_ACTION\_SELECT\_FOLDER&Indicates an Open mode for selecting folders. The file chooser will let the user pick an existing folder.\\ 	
    		\hline	
    	\end{tabular}
     
    	\bigskip
     
    	\index{G\_TYPE\_NONE}
    	\index{G\_TYPE\_INTERFACE}
    	\index{G\_TYPE\_CHAR}
    	\index{G\_TYPE\_UCHAR}
    	\index{G\_TYPE\_BOOLEAN}
    	\index{G\_TYPE\_INT}
    	\index{G\_TYPE\_UINT}
    	\index{G\_TYPE\_LONG}
    	\index{G\_TYPE\_ULONG}
    	\index{G\_TYPE\_INT64}
    	\index{G\_TYPE\_UINT64}
    	\index{G\_TYPE\_ENUM}
    	\index{G\_TYPE\_FLAGS}
    	\index{G\_TYPE\_FLOAT}
    	\index{G\_TYPE\_DOUBLE}
    	\index{G\_TYPE\_STRING}
    	\index{G\_TYPE\_POINTER}
    	\index{G\_TYPE\_BOXED}
    	\index{G\_TYPE\_PARAM}
    	\index{G\_TYPE\_OBJECT}
    	\begin{tabular}{|p{4cm}|p{4cm}|p{4cm}|}
    		\hline
    		G\_TYPE\_NONE&
    		G\_TYPE\_INTERFACE&
    		G\_TYPE\_CHAR\\ 
    		\hline	
    		G\_TYPE\_PARAM&
    		G\_TYPE\_OBJECT& \\ 
    		\hline	
    	\end{tabular}
    	\bigskip
    	Indexation dans une zone listings qui ne fonctionne pas
    	\par
    	\lstset{index={List_store_append@gtk_list_store_append,Tree_store_append@gtk_tree_store_append}}
    	%code standard
    	\begin{lstlisting}
    	void gtk_list_store_append(GtkListStore *list_store, GtkTreeIter *iter);
    	void gtk_tree_store_append(GtkListStore *list_store, GtkTreeIter *iter, GtkTreeIter *iterparent);
    	\end{lstlisting}
     
    \printindex
     
    \end{document}
    nota je compile avec Texstudio.

    Merci de m'aider à comprendre ce qui se passe, voire de me proposer une solution

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    hello

    Voici ma technique de contournement modifié car mon premier texte a été mal compris et pour cause
    j'ai créé une macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    \newcommand{\gtk}[2][]{%
    	\emph{\textbf{#2}}%
    	\index{#1@#2}}
    J'ai rajouté dans le paramétrage de l'environnement lstset{ ....escapechar=µ}.
    Maintenant à l'intérieur des champs\begin{lstlisting} ......\end{lstlisting} je peux passer une commande \LaTeX
    Par exemple µ\gtk[Menu\_item\_new\_with\_mnemonic]{gtk\_image\_menu\_item\_new\_with\_mnemonic}µ
    Mais c'est lourd car je dois modifier beaucoup de texte



    D'ailleurs le fait qu'un mot particulier Gtk+ ne soit pas en italique m'indique que je n'ai pas prévu son traitement dans ma commande


    Bon maintenant j'ai un nouveau problème j'ai fait un test de remplacement sur un cas. J'ai 50 occurrences trouvées et remplacées et une seule mise dans l'index. C'est pas si mal finalement, mais je dois trouver une astuce pour gérer la premiere occurrence où je veux que le lecteur aille.... je pense rajoute une commande d'index classique hors de ma mécanique cité en objet.
    Ca commence à devenir que la quincaillerie de haut vol. Vive Latex. les autres traitements texte classique sont loin derrière

  3. #3
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Bonsoir,

    J'avoue que j'ai du mal à comprendre votre trifouillage.

    Dans votre exemple vous insérez une commande d'index dans celle de paramétrage de listing.
    Code latex : Sélectionner tout - Visualiser dans une fenêtre à part
    \lstset{index={List_store_append@gtk_list_store_append,Tree_store_append@gtk_tree_store_append}}
    Rien d'anormal à ce que cela ne fonctionne pas.

    Par contre ceci fonctionne sans aucune difficulté.
    Code latex : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    \begin{lstlisting}\index{List_store_append@gtk_list_store_append,Tree_store_append@gtk_tree_store_append}
    	void gtk_list_store_append(GtkListStore *list_store, GtkTreeIter *iter);
    	void gtk_tree_store_append(GtkListStore *list_store, GtkTreeIter *iter, GtkTreeIter *iterparent);
    \end{lstlisting}

    D'ailleurs, évitez la commande \par et utilisez une simple ligne vide pour changer de paragraphe comme ceci :
    Code latex : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    \par
     
    exemple ou je parle de AGTK\_MachinChose\index{AGTK\_MachinChose}
     
    	\bigskip
    	Indexation dans la page courante \textbf{trouvé} dans l'index
     
    	gtk\_widget\_set\_size\_request\index{gtk\_widget\_set\_size\_request} (GTK\_WIDGET (window), 200, 200); remplace
     
    	gtk\_window\_maximize\index{gtk\_window\_maximize} (GTK\_WINDOW (window)); la fenêtre était trop grande 
     
    	gtk\_window\_set\_default\_size\index{gtk\_window\_set\_default\_size}  (GTK\_WINDOW (window), 200, 200); est aussi utilisable
    De plus regardez donc comment j'ai placé les commandes d'indexation. Pour rappel, on place les commandes d'indexation accolées au terme que l'on souhaite indexer. Ceci afin d'éviter que lors de la pagination par le moteur TeX l'index ne pointe sur une mauvaise page (généralement précédente ou suivante).

    Je vous conseille d'aller jeter un petit coup d'œil sur l'article concernant les index dans ma signature.
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Une solution sans besoin de modifier le code :

    Je commence par définir une macro \indexgtk qui va prendre en entrée le nom de la fonction gtk_xxx pour l'indexer en tant que \index{xxx@gtk_xxx} :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    \makeatletter
    \def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    \def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    \lstset{
    	morekeywords=[2]{              % j'ajoute une catégorie de mots-clés 
    		gtk_list_store_append,
    		gtk_tree_store_append
    	},
    	keywordstyle=[2]\color{brown}, % (éventuellement) je leur donne une coloration spéciale
    	moreindex={[1][keywords2]},    % ces mots-clés sont ajoutés à l'index…
    	indexstyle={[1]\indexgtk}      % … par le biais de ma macro
    }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Bonjour

    à toutes fin utiles la commande ci dessous ne fonctionne pas et produit une erreur la position de la commande \index n'est pas correcte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    \begin{lstlisting}\index{List_store_append@gtk_list_store_append,Tree_store_append@gtk_tree_store_append}
    	void gtk_list_store_append(GtkListStore *list_store, GtkTreeIter *iter);
    	void gtk_tree_store_append(GtkListStore *list_store, GtkTreeIter *iter, GtkTreeIter *iterparent);
    \end{lstlisting}

  6. #6
    Invité
    Invité(e)
    Par défaut
    À séparer en deux et placer avant, sans oublier d'échapper les _ dans la seconde partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    \index{List_store_append@gtk\_list\_store\_append}
    \index{Tree_store_append@gtk\_tree\_store\_append}
    \begin{lstlisting}
    	void gtk_list_store_append(GtkListStore *list_store, GtkTreeIter *iter);
    	void gtk_tree_store_append(GtkListStore *list_store, GtkTreeIter *iter, GtkTreeIter *iterparent);
    \end{lstlisting}

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Bonsoir

    La première solution de Winjerome me plait beaucoup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    \lstset{
    	morekeywords=[2]{              % j'ajoute une catégorie de mots-clés 
    		gtk_list_store_append,
    		gtk_tree_store_append
    	},
    	keywordstyle=[2]\color{brown}, % (éventuellement) je leur donne une coloration spéciale
    	moreindex={[1][keywords2]},    % ces mots-clés sont ajoutés à l'index…
    	indexstyle={[1]\indexgtk}      % … par le biais de ma macro
    }
    cette solution correspond bien à un besoin d'indexer des mots clefs dans tout mes blocs de code de listing qui sont très nombreux. Pour les autres besoins je pense savoir faire. Cela étant tout ne fonctionne pas encore de manière parfaite. Dans l'index j'ai gtk ̇tree ̇view ̇set ̇rules ̇hint au lieu de gtk_tree_view_get_rules_hint

    voici un extrait de du code de l'index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \indexentry{tree\char 95\relax view\char 95\relax set\char 95\relax rules\char 95\relax hint@gtk\char 95\relax tree\char 95\relax view\char 95\relax set\char 95\relax rules\char 95\relax hint|hyperpage}{5}
    soit un tas de \char 95\relax
    alors que pour les autres entrées qui sont ok j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    \indexentry{G\_TYPE\_BOXED|hyperpage}{2}
    \indexentry{G\_TYPE\_PARAM|hyperpage}{2}
    \indexentry{G\_TYPE\_OBJECT|hyperpage}{2}
    voici le code en question que je n'ai pas vraiment raccourci à son extreme
    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
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    \documentclass{book}
    \usepackage[latin1]{inputenc}
    %%\usepackage[cyr]{aeguill}
    \usepackage{xspace}
    \usepackage{amsmath}
    \usepackage{geometry}
    \usepackage{fancyhdr}
    \usepackage[frenchb,english]{babel}
    \usepackage{url}
    \usepackage{verbatim}
    %\usepackage{fancyvrb} % ESSAI POUR LE LISTINGS AVEC COUPURE PAGE AUTO
    %%%\usepackage{fancybox} l'arrivée de ce package doit générer de nombreueses anomalies
    \usepackage{listings}
    \usepackage{hyperref}
    \usepackage{graphicx}
    \usepackage{wrapfig}
    \usepackage{array}
    \usepackage{upquote}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{longtable}
    \usepackage[normalem]{ulem} % pour souligner \uline{...}
    \usepackage{makeidx}
    \let\urlorig\url
    \renewcommand{\url}[1]{%
    	\begin{otherlanguage}{english}\urlorig{#1}\end{otherlanguage}%
    }
     
    \definecolor{mygreen}{rgb}{0,0.6,0}
    \definecolor{mygray}{rgb}{0.5,0.5,0.5}
    \definecolor{mymauve}{rgb}{0.58,0,0.82}
    %
     
    \makeatletter
    \def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    \def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
     
    \lstset{
    	numbers=left, 
    	numberstyle=\small, 
    	numbersep=8pt, 
    	frame = single, 
    	language=C, 
    	framexleftmargin=5pt,			 % la marge à gauche du code
    	% test pour améliorer la présentation du code
    	upquote=true,
    	columns=flexible,
    	basicstyle=\ttfamily,
    	% provoque une erreur texcsstyle=*\color{blue},
    	commentstyle=\color{mygreen},    % comment style
    	keywordstyle=\color{blue},       % keyword style
    	rulecolor=\color{black},         % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
    	showspaces=false,                % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'		
    	showtabs=false,                  % show tabs within strings adding particular underscores
    	stringstyle=\color{mymauve},     % string literal style
    	numbers=none, 
    	tabsize=4,
    	% pour couper les lignes trop loongues
    	breaklines,
    	breakindent=1.5em, %?indente?de?3?caracteres?vers?la?droite
    	escapechar=µ,% pour escape en latex
    	morekeywords=[2]{ % nbr total d'entrée % j'ajoute une catégorie de mots-clés 
    		g\_return\_if\_fail,
    		g\_return\_val\_if\_fail,
    		%102arbre-liste
    		GtkTreeView,
    		GtkTreeStore,
    		GtkListStore,
    		gtk_list_store_new,
    		gtk_list_store_append,
    		gtk_tree_store_append,
    		gtk_list_store_prepend,
    		gtk_tree_store_prepend,
    		gtk_list_store_set,
    		gtk_tree_store_set,
    		gtk_list_store_clear,
    		gtk_tree_store_clear,
    		gtk_list_store_remove,
    		gtk_tree_store_remove,
    		gtk_tree_view_new_with_model,
    		gtk_tree_view_new,
    		gtk_tree_view_set_model,
    		gtk_tree_view_set_headers_visible,
    		gtk_tree_view_get_headers_visible,
    		gtk_tree_view_set_rules_hint,
    		gtk_tree_view_get_rules_hint,
    		gtk_tree_view_set_headers_clickable
    		% dernier sans la virgule
    	},
    	keywordstyle=[2]\color{brown}, % (éventuellement) je leur donne une coloration spéciale
    	index={[1][keywords2]},    % ces mots-clés sont ajoutés à l'index?
    	indexstyle={[1]\indexgtk}      % ? par le biais de ma macro
    }
    %Les caractères accentués ne sont pas gérés par la commande makeindex.
    %Aussi, pour  classer correctement l'entrée dans l'index, il convient de définir ce dernier de la manière suivante :
    %\index{sans_accents@avec_accents}.
    %Dans l'exemple qui suit, le mot « accentué » sera classé comme « accentue ».
    %\index{accentue@accentué}
     
    %% attention au format du fichier source qui doit être en latin1 isov8859-1
     
    % macro pour fabriquer le fichier d'index
    \makeindex
    % la voie de la personnalisation cf doc latex-index.pdf
    %\makeindex -s style.ist index
    %\makeindex goprogtk.idx -s perso.ist
     
    \usepackage{minipage-marginpar}
     
    %%%%%%%%%%%%%%% pour mettre un texte entre 2 points carrés
    \newenvironment{king}
    { \rule{1ex}{1ex}\hspace{\stretch{1}} }
    { \hspace{\stretch{1}}\rule{1ex}{1ex} }
     
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % la commande suivante prend en compte 
    %1-un paramètre optionnel Motdeclassement
    %2-le mot à classer  et à afficher
    % usage 1er paramètre entre [] le suivant entre {} \gtk[Widget\_set\_size\_request]{gtk\_widget\_set\_size\_request}
    \newcommand{\gtk}[2][]{%
    	\emph{\textcolor{brown}{#2}}%
    	\marginpar{\scriptsize --------- mot Résa Gtk+}%% provisoire	
    	\index{#1@#2}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %presque la meme mais avec mise en gras de la page dansl'index
    \newcommand{\gtkbold}[2][]{%
    	\emph{\textcolor{brown}{#2}}%
    	%\textcolor{brown}{\emph{\textbf{#2}}} % ici le texte serait en plus en grad
    %	\emph{\textbf{#2}}%
    	\marginpar{\scriptsize --------- mot Résa Gtk+}%% provisoire	
    	\index{#1@#2|textbf}}% |textbf pour mise en gras de la page
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % la commande suivante prend en compte 
    %1-un paramètre optionnel Motdeclassement
    %2 le mot de theme principal
    %3-le mot à classer et à afficher
    % usage 1er paramètre entre [] le suivant entre {}
    \newcommand{\gtka}[3][]{%
    	\emph{\textbf{#3}}%
    	\marginpar{\scriptsize --------- mot Résa Gtk+}%% provisoire
    	\index{#1@#2!#3}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newenvironment{remarque}[2]%
    {\begin{minipage}{#1 }
     
    	\hrulefill~\raisebox{-0.4pt}{#2}~\hrulefill\par\smallskip
    	% a défaut je met \par\hrulefill\par
    	% 
    	\begin {wrapfigure}[5]{ l }{2.2 cm }
    	\vspace { -7 mm }
    	\includegraphics [ width=2 cm ]{/home/francis/Images/remarque.png}
    	\end {wrapfigure}
    }
    {\par\hrulefill\bigskip\end{minipage}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newenvironment{question}[2]%
    {\begin{minipage}{#1 }
     
    		\hrulefill~\raisebox{-0.4pt}{#2}~\hrulefill\par\smallskip
     
    		\begin {wrapfigure}[5]{ l }{2.2 cm }
    		\vspace { -7 mm }
    		\includegraphics [ width=2 cm ]{/home/francis/Images/question.png}
    		\end {wrapfigure}
    	}
    	{\par\hrulefill\bigskip\end{minipage}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newenvironment{information}[2]%
    {\begin{minipage}{#1 }
     
    		%\hrulefill~\raisebox{-0.4pt}{#2}~\hrulefill\par\smallskip
    		\par\bigskip
    		\begin {wrapfigure}[2]{ l }{1.2 cm }
    		\vspace { -7 mm }
    		\includegraphics [ width=0.8 cm ]{/home/francis/Images/information.png}
    		\end {wrapfigure}
    	}
    	%{\par\hrulefill\bigskip\end{minipage}}
    	{\par\end{minipage}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    %%% ex \newenvironment{ficaux}{%  de framalivre pour mettre entrée dans une box
    \newenvironment{item_framebox}
    {%
    	\begin{list}{}{%
    			% largeur de la boîte englobant le label :
    			\setlength{\labelwidth}{1cm}
    			% espace entre paragraphe et l ? étiquette :
    			\setlength{\labelsep}{25pt}
    			% marge de gauche :
    			\setlength{\leftmargin}{\labelwidth+\labelsep+5pt}
    			\renewcommand{\makelabel}[1]{% production de l?étiquette :
    				\framebox[\labelwidth]{\texttt{##1}}}}}
    	{\end{list}}
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %essai de traitement de débordement de marge
    \newcommand\texttthyph[1]{\begingroup\ttfamily\hyphenchar\font`\-\relax#1\endgroup}
     
    %localement faire
    % \texttthyph{NomLongVariable} a pour rôle...
    %	Voici une ligne qui définit le \string\hyphenchar{} et qui ne déborde pas:\par
    %Mêmes règles que dans le cas classique. La encore, chaque variable test \texttthyph{NomLongVariable} a pour rôle...
    %%%%%%%%%%%%%%%%%%% debut du document %%%%%%%%%%%%%%%%%%%
    %% attention au format du fichier source qui doit être en latin1 isov8859-1
    \begin{document}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \frontmatter % tout ce qui est introductif
    % permettent automatiquement d'adopter une numérotation en roman
    %pour les pages introductives et d'autres petites choses accessibles que dans la classe book
     
    % ligne suivante OK
    \renewcommand{\contentsname}{Table des matières} % si tableofcontents au début
    \tableofcontents
     
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \mainmatter % le « corps » du document
    % la numérotation normale commence ici
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    % les listes et les arbres encours
    \chapter{Théorie sur Les listes et les arbres}
     
     
    \section*{objectif}
    \gtkbold[TreeView]{GtkTreeView} est un widget qui affiche des listes et des arbres à une ou plusieurs colonnes. C'est un des widgets les plus difficiles à maîtriser. Toutefois il est très puissant et flexible une fois maîtrisé.
    Le but de ce chapitre n'est pas de tout connaître de manière exhaustive, pour cela consulter le site de référence API \url{https://developer.gnome.org/gtk3/stable/GtkTreeView.html} pour compléter votre approche. L'objectif est d'acquérir une masse critique d'élément pour être autonome sur les sujets les plus couramment utilisés de GtkTreeView et de montrer comment les divers composants et concepts de GtkTreeView fonctionnent ensemble. 
     
     
    Les  \gtk[TreeView]{GtkTreeView} font partie de la famille des objets complexes de Gtk+ comme les \gtk[TextView]{TextView} et les \gtk[GtkSourceview]{GtkSourceview}. Leur points communs est la séparation complète des données et de la façon dont ces données sont affichées à l'écran. Ceci est communément appelé Modèle / Vue / Contrôleur-conception (MVC). Des données de types variés (chaînes, nombres, images, etc.) sont stockées dans un "modèle" ou magasin. La «vue» indique ensuite quelles données afficher, où les afficher et comment les afficher. L'un des avantages de cette approche est que vous pouvez avoir plusieurs vues qui affichent les mêmes données (une arborescence de répertoires, par exemple) de différentes manières ou de la même manière plusieurs fois, avec une seule copie des données sous-jacentes. Les avantages sont : pas de duplication de données ni code redondant pour réutiliser les mêmes données dans différents contextes. En complément, orsque les données du modèle sont mises à jour, toutes les vues sont automatiquement actualisées.
     
    Ils se gèrent via 3 strates.
    \section{les magasins}
    Gtk + est livré avec deux modèles de magasin de données intégrés: GtkListStore et GtkTreeStore.
    La couche contenu ou magasin pour le stockage des données. Il existe 2 modèles les listes et les arbres
    la création s'effectue respectivement par un des 2 prototypes
     
    \begin{lstlisting}
    GtkListStore* gtk_list_store_new(gint n_columns, GType *types...);
    GtkTreeStore* gtk_list_store_new(gint n_columns, GType *types...);
    \end{lstlisting}
     
    Le premier paramètres donne le nombre de colonnes, tandis que les suivants donnent le type de chacune des colonnes.
     
    \index{G\_TYPE\_NONE}
    \index{G\_TYPE\_INTERFACE}
    \index{G\_TYPE\_CHAR}
    \index{G\_TYPE\_UCHAR}
    \index{G\_TYPE\_BOOLEAN}
    \index{G\_TYPE\_INT}
    \index{G\_TYPE\_UINT}
    \index{G\_TYPE\_LONG}
    \index{G\_TYPE\_ULONG}
    \index{G\_TYPE\_INT64}
    \index{G\_TYPE\_UINT64}
    \index{G\_TYPE\_ENUM}
    \index{G\_TYPE\_FLAGS}
    \index{G\_TYPE\_FLOAT}
    \index{G\_TYPE\_DOUBLE}
    \index{G\_TYPE\_STRING}
    \index{G\_TYPE\_POINTER}
    \index{G\_TYPE\_BOXED}
    \index{G\_TYPE\_PARAM}
    \index{G\_TYPE\_OBJECT}
    \begin{tabular}{|p{4cm}|p{4cm}|p{4cm}|}
    	\hline
    	G\_TYPE\_NONE&
    	G\_TYPE\_INTERFACE&
    	G\_TYPE\_CHAR\\ 
    	\hline	
    	G\_TYPE\_UCHAR&
    	G\_TYPE\_BOOLEAN&
    	G\_TYPE\_INT\\ 
    	\hline	
    	G\_TYPE\_UINT&
    	G\_TYPE\_LONG&
    	G\_TYPE\_ULONG\\ 
    	\hline	
    	G\_TYPE\_INT64&
    	G\_TYPE\_UINT64&
    	G\_TYPE\_ENUM\\ 
    	\hline	
    	G\_TYPE\_FLAGS&
    	G\_TYPE\_FLOAT&
    	G\_TYPE\_DOUBLE\\ 
    	\hline	
    	G\_TYPE\_STRING&
    	G\_TYPE\_POINTER&
    	G\_TYPE\_BOXED\\ 
    	\hline	
    	G\_TYPE\_PARAM&
    	G\_TYPE\_OBJECT& \\ 
    	\hline	
    \end{tabular}
    Les noms sont relativement explicites puisque font appels à des types Gtk+. Vous n'avez pas besoin de comprendre le système de types, il suffit généralement de connaître les types ci-dessus pour pouvoir indiquer à un magasin de listes ou à un magasin d'arbres le type de données que vous souhaitez stocker. Les utilisateurs avancés peuvent dériver leurs propres types des types fondamentaux GLib. Pour les structures simples, vous pouvez par exemple enregistrer un nouveau type de boîte, mais ce n'est généralement pas nécessaire. G\_TYPE\_POINTER le fera souvent aussi, vous aurez juste besoin de vous occuper de l'allocation de mémoire et de vous libérer alors. 
     
    Une fois  le magasin créé, il faut le remplir avec les données. Pour cela, il nous faut un petit
    accessoire, un «itérateur» qui s'obtient grâce aux fonctions prototypes suivantes pour ajouter à la fin :
     
    \begin{lstlisting}
    void gtk_list_store_append(GtkListStore *list_store, GtkTreeIter *iter);
    void gtk_tree_store_append(GtkListStore *list_store, GtkTreeIter *iter, GtkTreeIter *iterparent);
    \end{lstlisting}
    ou ajouter au début du magasin
     
    \begin{lstlisting}
    void gtk_list_store_prepend(GtkListStore *list_store, GtkTreeIter *iter);
    void gtk_tree_store_prepend(GtkListStore *list_store, GtkTreeIter *iter, GtkTreeIter *iterparent);
    \end{lstlisting}
     
    Le premier paramètre correspond au magasin à remplir. Le second donne l'emplacement
    à remplir.
     
    Le troisième paramètre pour le cas de l'arbre permet de gérer l'arborescence en indiquant l'itérateur
    du parent auquel est rattaché cet élément.
     
    Ces fonctions créent une ligne vide dans le magasin et affecte l'itérateur qui pointe vers la nouvelle ligne créé. Cet itérateur devra être directement utilisé sans changement dans la phase suivante de chargement des lignes.
    Et pour charger nos données, il suffit d'utiliser les fonctions :
     
    \begin{lstlisting}
    void gtk_list_store_set(GtkListStore *list_store, GtkTreeIter *iter, ...,-1);
    void gtk_tree_store_set(GtkListStore *list_store, GtkTreeIter *iter, ...,-1);
    \end{lstlisting}
     
    Le premier paramètre désigne le magasin, tandis que le second donne l'emplacement, la ligne,
    à remplir.
    Les paramètres suivants marchent par couple : numéro de colonne et valeur de la colonne. Un dernier paramètre, à ne pas oublier, pour terminer la marche  -1 et permet d'indiquer la fin de la liste des couples colonne/valeur.
    Ces fonctions permettent de remplir un nombre quelconque de colonnes en une seule fois, il est donc
    possible de les appeler en plusieurs fois, ou de mettre toutes les valeurs en une seule fois.
    Pour remplir la liste par le début (haut) plutôt que par la fin (bas), il faut utiliser les fonctions 
     
    Pour vider complètement un magasin de données, il faut utiliser les fonctions :
     
    \begin{lstlisting}
    void gtk_list_store_clear(GtkListStore *list_store);
    void gtk_tree_store_clear(GtkTreeStore *tree_store);
    \end{lstlisting}
     
    Tandis que pour supprimer une ligne dont on connaît l'itérateur (par exemple au travers d'une sélection, voir plus
    loin la section  ~\ref{sec-Les-manipulations} Les manipulations page~\pageref{sec-Les-manipulations}), il faut utiliser les fonctions :
     
    \begin{lstlisting}
    gboolean gtk_list_store_remove(GtkListStore *list_store, GtkTreeIter *iter);
    gboolean gtk_tree_store_remove(GtkTreeStore *tree_store, GtkTreeIter *iter);
    \end{lstlisting}
     
    \section{La partie contrôle} 
    Nous allons maintenant aborder les divers moyens de contrôle
    \index{GtkTreeModel}
    A ce niveau il est nécessaire d'évoquer la notion de modèle . Un GtkTreeModel est utilisé pour stocker des données . quel lien entre un magasin et ce modèle ?
     
    Le modèles en principe la structure qui va modéliser les données
    La première étape consiste à créer un afficheur et à l'associer au magasin de données :
    %code standard
    \begin{lstlisting}
    GtkWidget* gtk_tree_view_new_with_model(GtkTreeModel *model);
    \end{lstlisting}
     
    Il est important de comprendre ce qu'est GtkTreeModel et ce que ce n'est pas. GtkTreeModel n'est fondamentalement qu'une «interface» avec le magasin de données, c'est-à-dire qu'il s'agit d'un ensemble normalisé de fonctions permettant à un widget GtkTreeView (et au programmeur d'application) d'interroger certaines caractéristiques d'un magasin de données :
    \begin{itemize}
    	\item le nombre de lignes
    	\item quelles lignes ont des enfants
    	\item combien d'enfants une ligne particulière a
    	\item Il fournit également des fonctions permettant d'extraire des données du magasin de données
    	\item d'indiquer à l'arborescence le type de données stockées dans le modèle
    \end{itemize}
     
    \begin{remarque}{14.5 cm}{}
    	\textbf{Chaque magasin de données doit implémenter l'interface GtkTreeModel et fournir ces fonctions, que vous pouvez utiliser en convertissant un magasin en modèle d'arborescence avec le transtypage suivant \gtk[TREE\_MODEL]{GTK\_TREE\_MODEL} (magasin). GtkTreeModel lui-même ne fournit qu'un moyen d'interroger les caractéristiques d'un magasin de données et de récupérer des données existantes. Il ne permet pas non plus de supprimer ou d'ajouter des lignes au magasin ou de placer des données dans le magasin. Ceci est fait en utilisant les fonctions spécifiques du magasin.
    		% pour souligner 
    		\uline{Oublier cette action provoquera une erreur difficile à corriger}
    	} 
    \end{remarque}
     
    \begin{information}{14.5 cm}{}
    	Finalement interroger le modèle donc l'interface du magasin au lieu du magasin lui-même ne doit pas choquer. Mais attention aux raccourcis.
    \end{information}
     
    Si vous envisagez de stocker beaucoup de données ou si vous avez un grand nombre de lignes, vous devez envisager d'implémenter votre propre modèle personnalisé qui stocke et manipule les données à votre manière et implémente l'interface GtkTreeModel. Cela sera non seulement plus efficace, mais conduira probablement également à un code plus sain à long terme et vous donnera un plus grand contrôle sur vos données. Voir la section  ~\ref{sec-personnalisation} personnalisation des magasins page~\pageref{sec-personnalisation} pour plus de détails sur la manière d'implémenter des modèles personnalisés.
     
    Un exemple vaut mieux qu'un long discours :
    \section{la couche présentation}
     
    Plusieurs possibilités existent soient de représenter en plusieurs endroits la même vue du magasin ou bien d'en présenter qu'une partie selon différents filtres possibles simultanément en plusieurs endroits.
    D'autres composants déterminent quelles données sont affichées dans GtkTreeView et comment elles sont affichées. Ces composants sont GtkTreeViewColumn et GtkCellRenderer. Un GtkTreeView est composé de colonnes en vue arborescente. Ce sont les colonnes que les utilisateurs perçoivent comme des colonnes.
     
     
    En réalité ce que l'utilisateur perçoit comme une seule colonne est un objet complexe qui sera à définir en 2 parties. Une en-tête de colonne cliquable avec un titre de colonne pouvant être masqué, redimensionné et trié. Les colonnes de l'arborescence n'affichent aucune donnée. Elles servent uniquement de périphérique pour représenter vers l'utilisateur de la vue d'arborescence selon divers critère de tri ou de flitrage. L'autre partie c'est à dire la famille d'objets GtkCellRenderer. Ce sont des conteneurs adossés à des moteurs de rendu. Chacun est spécialisé dans le rendu de certaines données telles que des chaînes, des pixbufs ou des boutons bascules ce pour chaque cellule de chaque colonne.
     
    Les rendus de cellules sont regroupés dans les colonnes de la vue arborescente pour afficher les données. Une colonne de vue arborescente doit contenir au moins un rendu de cellule, mais peut contenir plusieurs rendus de cellule. Par exemple, pour justaposer nom de fichier et une petite icône.  on peut regrouper un GtkCellRendererPixbuf et un GtkCellRendererText dans une colonne de la vue arborescente. Le regroupement de rendus dans une colonne d'arborescence est similaire au regroupement de widgets dans une GtkHBox. 
     
    Il est possible de créer un afficheur sans liaison avec un magasin par la fonction :
     
    \begin{lstlisting}
    GtkWidget *gtk_tree_view_new(void);
    \end{lstlisting}
     
    On peut ensuite l'associer à un modèle avec la fonction :
     
    \begin{lstlisting}
    void gtk_tree_view_set_model(GtkTreeView *tree_view, GtkTreeModel *model);
    \end{lstlisting}
     
    \section{configurer un  GtkTreeView}
     
    \subsection*{titre de colonne visible}
    Pour choisir si les titres de colonnes doivent être afficher ou non (ils le sont par défaut), on utilise le prototype :
     
    \begin{lstlisting}
    void gtk_tree_view_set_headers_visible(GtkTreeView *tree_view, gboolean headers_visible);
    \end{lstlisting}
     
    Le statut est obtenu par :
     
    \begin{lstlisting}
    gboolean gtk_tree_view_get_headers_visible(GtkTreeView *tree_view);
    \end{lstlisting}
     
    \subsection*{Grande table}
    Quand votre base a afficher est très grande, je vous conseille de faciliter la lecture des lignes pour l'utilisateur. Ce sera un fond de couleur alterné pour chaque ligne par la fonction :
     
    \begin{lstlisting}
    void gtk_tree_view_set_rules_hint (GtkTreeView *tree_view, gboolean setting);
    \end{lstlisting}
     
     
     
     
     
     
    \addcontentsline{toc}{chapter}{Index}
    \printindex
     
    \end{document}
    je suppose que la coquille doit se trouver ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    \makeatletter
    \def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    \def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
    Mais je ne sais pas faire si quelqu'un peut m'aider ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Il te manque \usepackage[T1]{fontenc}.

    Par contre, attention à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    GtkTreeView,
                    GtkTreeStore,
                    GtkListStore,
    Car ma macro \indexgtk supprime les quatre premiers caractères de la partie gauche, et tu te retrouves donc avec des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \index{reeView@GtkTreeView}
    Autrement dit « GtkTreeView » se retrouve dans les R et non dans les T.
    Ajoute-les dans une catégorie à part.
    Dernière modification par -Nikopol- ; 17/04/2019 à 22h15. Motif: indentation( pffffffff...)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Bonsoir
    Merci Winjerome de m’apporter cet élément. je vais tester cela demain.
    pour ta 2ieme remarque je compte rajouter un test pour savoir si le 2ieme caractère est égal à undercore ou si c’est le 3ieme.je suis en train de chercher comment faire. En fonction j’adapté ta méthode pour trier à partir du 3ieme.je caractere

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    retour sur la suggestion \usepackage[T1]{fontenc}
    sa fonctionne c'est génial

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    bonjour,

    voici ma fonction de test qui semble fonctionner pour ce que je lui demande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % nouvelle fonction de tri avec test
    \makeatletter
    \if #4=_
    	%% indexation du type \index{xxxxxx@Gtk_xxxxxx}
    	%% le tri s'effectue à partir du 5ieme caractere
    	\def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    	\def\indexgtk#1{\@indexgtk@i#1,}
    \else
    	%% indexation du type \index{xxxxxx@Gtk_xxxxxx}
    	%% le tri s'effectue à partir du 3ieme caractere
    	\def\@indexgtk@i#1#2#3#4#5,{\index{#3@#1#2#3#4#5}}
    	\def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
    vous en pensez quoi? En tout cas cela fait bien avancer l'indexation de mon petit "monstre" de document

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    bonsoir,
    Je reviens sur ma prétendue avancée avec le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % nouvelle fonction de tri avec test
    \makeatletter
    \if #4=_
    	%% indexation du type \index{xxxxxx@Gtk_xxxxxx}
    	%% le tri s'effectue à partir du 5ieme caractere
    	\def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    	\def\indexgtk#1{\@indexgtk@i#1,}
    \else
    	%% indexation du type \index{xxxxxx@Gtk_xxxxxx}
    	%% le tri s'effectue à partir du 3ieme caractere
    	\def\@indexgtk@i#1#2#3#4#5,{\index{#3@#1#2#3#4#5}}
    	\def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
    Après analyse ce code est exécuté une seule fois j'en ai obtenu la preuve.

    donc je suis toujours au même point mais avec quelques éléments en plus

    le protocole pour indexer des mots dans du code encadré par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    \begin{lstlisting}
     
    \end{lstlisting}

    fonctionne le voici pour un tri à partir du 5ieme caractere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    \makeatletter
    \def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    \def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
    ensuite j'ai ventilé ma liste de mots clefs dans 3 catégories distintes avec en provisoire 3 couleurs pour les reperer facilement

    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
    \lstset{
    	numbers=left, 
    	numberstyle=\small, 
    	numbersep=8pt, 
    	frame = single, 
    	language=C, 
    	framexleftmargin=5pt,			 % la marge à gauche du code
    	% test pour améliorer la présentation du code
    	upquote=true,
    	columns=flexible,
    	basicstyle=\ttfamily,
    	% provoque une erreur texcsstyle=*\color{blue},
    	commentstyle=\color{mygreen},    % comment style
    	keywordstyle=\color{blue},       % keyword style
    	rulecolor=\color{black},         % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
    	showspaces=false,                % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'		
    	showtabs=false,                  % show tabs within strings adding particular underscores
    	stringstyle=\color{mymauve},     % string literal style
    	numbers=none, 
    	tabsize=4,
    	% pour couper les lignes trop loongues
    	breaklines,
    	breakindent=1.5em, %?indente?de?3?caracteres?vers?la?droite
    	escapechar=µ,% pour escape en latex
    	%}
    	%
    	%
    	%\lstset{
    	morekeywords=[2]{ % nbr total d'entrée % j'ajoute une catégorie de mots-clés 
    		%%% pour tri sur le 5ieme caractere
    		% fichier 104 gtksourceview
    		GTK_TEXT_VIEW,
    		gtk_source_buffer_new,
    		gtk_source_view_new_with_buffer,
    		gtk_source_view_set_show_line_numbers,
    		gtk_widget_set_name,
    		gtk_css_provider_new;
    		gdk_display_get_default,
    		gdk_display_get_default_screen;
    		gtk_style_context_add_provider_for_screen,
    		GTK_STYLE_PROVIDER
    		GTK_STYLE_PROVIDER_PRIORITY_APPLICATION,
    		gtk_source_view_set_auto_indent,
    		gtk_source_view_set_indent_width,
    		gtk_source_view_set_tab_width,
    		gtk_source_view_set_smart_backspace,
    		gtk_source_view_set_right_margin_position,
    		gtk_source_view_get_right_margin_position,
    		gtk_source_view_set_show_right_margin,
    		gtk_source_view_get_show_right_margin,
    		gtk_source_buffer_set_highlight_matching_brackets,
    		gtk_source_view_set_highlight_current_line,
    		gtk_widget_override_font,% pas standard gtk_xxxx
    		gtk_source_language_get_name,
    		gtk_source_buffer_set_language,
    		gtk_source_language_manager_new,
    		gtk_source_view_new,
    		gtk_source_view_new_with_buffer,
    		gtk_source_view_set_show_line_numbers,
    		gtk_source_view_get_show_line_numbers,
    		gtk_source_view_set_show_right_margin,
    		gtk_source_view_get_show_right_margin,
    		gtk_source_view_set_right_margin_position,
    		gtk_source_view_get_right_margin_position,
    		gtk_source_view_set_highlight_current_line,
    		gtk_source_view_get_highlight_current_line,
    		gtk_source_view_set_auto_indent,
    		gtk_source_view_get_auto_indent,
    		gtk_source_view_set_indent_on_tab,
    		gtk_source_view_get_indent_on_tab,
    		gtk_source_view_set_tab_width,
    		gtk_source_view_get_tab_width,
    		gtk_source_view_set_indent_width,
    		gtk_source_view_get_indent_width,
    		gtk_source_view_set_insert_spaces_instead_of_tabs,
    		gtk_source_view_get_insert_spaces_instead_of_tabs,
    		gtk_source_view_indent_lines,
    		gtk_source_view_unindent_lines,
    		gtk_source_view_get_visual_column,
    		gtk_source_view_set_smart_backspace,
    		gtk_source_view_get_smart_backspace,
    		gtk_source_view_set_smart_home_end,
    		gtk_source_view_get_smart_home_end,
    		gtk_source_view_set_mark_attributes,
    		gtk_source_view_get_mark_attributes,
    		gtk_source_view_set_show_line_marks,
    		gtk_source_view_get_show_line_marks,
    		gtk_source_view_set_draw_spaces,
    		gtk_source_view_get_draw_spaces,
    		gtk_source_view_get_completion,
    		gtk_source_view_get_gutter,
    		gtk_source_view_set_background_pattern,
    		gtk_source_view_get_background_pattern,
    		gtk_source_buffer_can_redo,
    		gtk_source_buffer_redo,
    		gtk_source_buffer_can_undo,
    		gtk_source_buffer_undo,
    		%%%%%
    		GTK_SOURCE_COMPLETION_WORDS,
    		gtk_source_completion_words_register,
    		gtk_source_completion_words_new,
    		gtk_source_completion_words_register,
    		gtk_source_completion_words_unregister,
    		GTK_SOURCE_COMPLETION_PROVIDER,
    		GTK_SOURCE_COMPLETION,
    		%% gtk_toolbar_insert, cf plus bas deja present
    		%%%%%
    		%108pratique_menu
    		gtk_application_set_app_menu,
    		gtk_window_set_application,
    		gtk_tool_button_new,
    		gtk_tool_button_set_icon_name,
    		gtk_tool_item_set_tooltip_markup,
    		gtk_toolbar_insert,
    		gtk_widget_set_visible,
    		gtk_widget_get_visible,
    		gtk_application_window_new,
    		gtk_grid_attach,
    		gtk_actionable_set_action_name,
    		gtk_image_menu_item_new_with_mnemonic,
    		gtk_image_new_from_icon_name,
    		gtk_accel_label_new,
    		gtk_widget_add_accelerator,
    		gtk_accel_label_set_accel_widget,
    		%1500awf
    		gtk_menu_shell_append,
    		gtk_menu_item_new_with_mnemonic,
    		%g_signal_connect_swapped,
    		gtk_settings_set_string_property,
    		gtk_settings_get_default,
    		%%%%102arbre-liste
    		gtk_tree_view_insert_column_with_attributes,
    		gtk_list_store_append,
    		gtk_tree_store_append,
    		gtk_list_store_prepend,
    		gtk_tree_store_prepend,
    		gtk_list_store_set,
    		gtk_tree_store_set,
    		gtk_list_store_clear,
    		gtk_tree_store_clear,
    		gtk_list_store_remove,
    		gtk_tree_store_remove,
    		gtk_tree_view_new_with_model,
    		gtk_tree_view_new,
    		gtk_tree_view_set_model,
    		gtk_tree_view_set_headers_visible,
    		gtk_tree_view_get_headers_visible,
    		gtk_tree_view_set_rules_hint,
    		gtk_tree_view_get_rules_hint,
    		gtk_tree_view_set_headers_clickable,
    		GTK_LIST_STORE,
    		%%% 1515 Glib
    		% dernier sans la virgule
    	},
    	morekeywords=[3]{ %% j'ajoute une autre catégorie de mots-clés 
    		%%% pour tri sur le 3ieme caractere
    		g_return_if_fail,
    		g_return_val_if_fail,
    		% fichier 104 gtksourceview
    		g_object_unref,  % pas standard gtk_xxxx
    		g_content_type_guess, % pas standard gtk_xxxx
    		%%%%%
    		%108pratique_menu
    		g_action_map_add_action, % pas standard gtk_xxxx
    		g_menu_new,
    		g_menu_append, % pas standard gtk_xxxx
    		g_simple_action_new, % pas standard gtk_xxxx
    		g_simple_action_group_new,
    		%1500awf
    		g_slist_reverse,
    		g_dir_read_name,
    		g_slist_prepend,
    		g_build_path,g_dir_open,GTK_CHECK_VERSION,
    		g_slist_sort,GCompareFunc,
    		g_strcmp0,
    		g_signal_connect_swapped,
    		%%%%102arbre-liste
    		G_TYPE_NONE,
    		G_TYPE_INTERFACE,
    		G_TYPE_CHAR,
    		G_TYPE_UCHAR,
    		G_TYPE_BOOLEAN,
    		G_TYPE_INT,
    		G_TYPE_UINT,
    		G_TYPE_LONG,
    		G_TYPE_ULONG,
    		G_TYPE_INT64,
    		G_TYPE_UINT64,
    		G_TYPE_ENUM,
    		G_TYPE_FLAGS,
    		G_TYPE_FLOAT,
    		G_TYPE_DOUBLE,
    		G_TYPE_STRING,
    		G_TYPE_POINTER,
    		G_TYPE_BOXED,
    		G_TYPE_PARAM,
    		G_TYPE_OBJECT,
    		%%% 1515 Glib
    		G_Regex
    		% dernier sans la virgule
    	},
    	morekeywords=[4]{ %% j'ajoute une autre catégorie de mots-clés 
    		%%% pour tri sur le 1er caractere
    		% fichier 104 gtksourceview
    		GtkSourceBuffer, % pas standard gtk_xxxx
    		GtkCssProvider,% pas standard gtk_xxxx
    		GdkDisplay, % pas standard gtk_xxxx
    		GdkScreen, % pas standard gtk_xxxx
    		pango_font_description_from_string, % pas standard gtk_xxxx
    		pango_font_description_free, % pas standard gtk_xxxx
    		GtkSourceLanguageManager, % pas standard gtk_xxxx
    		GtkSourceSmartHomeEndType,
    		GtkSourceMarkAttributes,
    		GtkSourceDrawSpacesFlags,
    		GtkSourceCompletion,
    		GtkSourceGutter,
    		GtkSourceBackgroundPatternType,
    		%%%%%
    		GtkSourceSearchContext,
    		%%%%%
    		%108pratique_menu
    		GSimpleAction, % pas standard gtk_xxxx
    		GVariant, % pas standard gtk_xxxx
    		GActionEntry, % pas standard gtk_xxxx
    		GActionGroup, % pas standard gtk_xxxx
    		%1500awf
    		%g_signal_connect_swapped,
    		%%%%102arbre-liste
    		GtkTreeModel,
    		GtkListStore,
    		GtkTreeStore
    		%%% 1515 Glib
    		% dernier sans la virgule
    	},
    	keywordstyle=[2]\color{brown}, % je leur donne une coloration spéciale
    	keywordstyle=[3]\color{blue}, % je leur donne une coloration spéciale
    	keywordstyle=[4]\color{red}, % je leur donne une coloration spéciale
    	moreindex={[1][keywords2]},    % ces mots-clés sont ajoutés à l'index?oui
    	moreindex={[1][keywords3]},    % ces mots-clés sont ajoutés à l'index?oui
    	moreindex={[1][keywords4]},    % ces mots-clés sont ajoutés à l'index?oui
    	indexstyle={[1]\indexgtk}      % par le biais de ma macro
    }
    premiers resultats j'ai bien tout qui est taggué dans le document et apparait bien dans l'index.
    mais la personnalisation de mon index a disparu et bien entendu je n'ai trouvé de solution pour établir une macro de tri dediée à chaque catégorie.
    Voyez vous une piste ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Le test devrait plutôt se situer à l'intérieur de la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    \def\@indexgtk@i#1#2#3#4#5,{
      \if % #4 underscore 
        \index{#5@#1#2#3#4#5}
      \else
        \index{#4#5@#1#2#3#4#5}
      \fi
    }
    Toutefois toutes mes tentatives pour effectuer cette comparaison avec un underscore se sont soldées par des échecs

    Mais à voir ta nouvelle liste qui contient en plus des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		G_XXX,
    		g_XXX,
    		GtkXXX,
    		gtk_XXX,
    		GXXX,
    je reste sur mon conseil précédent de mettre ces différents éléments dans des catégories distinctes, ce qui permettra de leur associer des macros distinctes dont le code restera simple.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Bonjour
    Merci winjerome. Donc la voie raisonnable est donc de creer pour chaque besoin une catégorie avec son traitement dédié qui reste simple sans chercher à faire des tests sur l'underscore.

    Je vais tester. Merci encore de cette aide précise.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Bonjour

    voici mon retour sur mes divers essais

    j'ai établi 3 modes d'indexation pour mes 3 besoins de tris qui sont différents

    le premier mécanisme fonctionne correctement avec mise en couleur marron et apparition dans l'index
    idem pour le 2ieme couleur bleu

    les 2 premiers tris cohabitent ensemble

    Mais pour le 3ieme cela ne fonctionne plus

    j'ai des messages d'erreur qui porte sur le 2ieme style d'indexation, je n'ai plus aucune entrée d'index et des messages bizarres
    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
    premier test ok
    [3]
    indexstyleGTK_TEXT_VIEW
    GTK_TEXT_VIEW[3]
    indexstylegtk_source_buffer_new
    gtk_source_buffer_new[3]
    indexstylegtk_source_view_new_with_buffer
    gtk_source_view_new_with_buffer[3]
    indexstylegtk_source_view_set_show_line_numbers
    gtk_source_view_set_show_line_numbers[3]
    indexstylegtk_widget_set_name
    gtk_widget_set_name[3]
    indexstylegtk_css_provider_new
    gtk_css_provider_new;[3]
    indexstylegdk_display_get_default
    gdk_display_get_default[3]
    indexstylegdk_display_get_default_screen
    gdk_display_get_default_screen;[3]
    indexstylegtk_style_context_add_provider_for_screen
    gtk_style_context_add_provider_for_screen[3]
    indexstyleGTK_STYLE_PROVIDER
    GTK_STYLE_PROVIDER[3]
    indexstyleGTK_STYLE_PROVIDER_PRIORITY_APPLICATION
    GTK_STYLE_PROVIDER_PRIORITY_APPLICATION[3]
    indexstylegtk_source_view_set_auto_indent
    gtk_source_view_set_auto_indent[3]
    indexstylegtk_source_view_set_indent_width
    gtk_source_view_set_indent_width[3]
    indexstylegtk_source_view_set_tab_width
    gtk_source_view_set_tab_width[3]
    indexstylegtk_source_view_set_smart_backspace
    gtk_source_view_set_smart_backspace[3]
    indexstylegtk_source_view_set_right_margin_position
    gtk_source_view_set_right_margin_position[3]
    indexstylegtk_source_view_get_right_margin_position
    gtk_source_view_get_right_margin_position[3]
    indexstylegtk_source_view_set_show_right_margin
    gtk_source_view_set_show_right_margin[3]
    indexstylegtk_source_view_get_show_right_margin
    gtk_source_view_get_show_right_margin


    Voici mon prototype que j'ai gardé proche du fichier de production pour détecter des effets induits par autre chose
    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
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    \documentclass{book}
    \usepackage[latin1]{inputenc}
    %%\usepackage[cyr]{aeguill}
    \usepackage{xspace}
    \usepackage{amsmath}
    \usepackage{geometry}
    \usepackage{fancyhdr}
    \usepackage[frenchb,english]{babel}
    \usepackage{url}
    \usepackage{verbatim}
    \usepackage{fancyvrb} % ESSAI POUR LE LISTINGS AVEC COUPURE PAGE AUTO
    \usepackage{listings}
    \usepackage{hyperref}
    \usepackage{graphicx}
    \usepackage{wrapfig}
    \usepackage{array}
    \usepackage{upquote}
    \usepackage{color}
    \usepackage{xcolor}
    \usepackage{longtable}
    \usepackage[normalem]{ulem} % pour souligner \uline{...}
    \usepackage[T1]{fontenc}
    \usepackage{makeidx}
    \usepackage{morefloats}
    \let\urlorig\url
    \renewcommand{\url}[1]{%
    	\begin{otherlanguage}{english}\urlorig{#1}\end{otherlanguage}%
    }
    %%%%%%%%%%%%%%%%%%%%%%%%%%
    %provisoire
    \usepackage{lipsum}
     
    \definecolor{mygreen}{rgb}{0,0.6,0}
    \definecolor{mygray}{rgb}{0.5,0.5,0.5}
    \definecolor{mymauve}{rgb}{0.58,0,0.82}
    %
    %%%%% tri a partir du 5ieme element MANQUE MISE EN ITALIQUE
    \makeatletter
    \def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    \def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
     
     
    %%%% tri a partir du 3ieme element MANQUE MISE EN ITALIQUE
    \makeatletter
    \def\@indexglib@i#1#2#3#4#5,{\index{#3@#1#2#3#4#5}}
    \def\indexglib#1{\@indexglib@i#1,}
    \makeatother
     
    %%%%%% tri a partir du 1er element MANQUE MISE EN ITALIQUE
    \makeatletter
    \def\@indextype@i#1#2#3#4#5,{\index{#1@#1#2#3#4#5}}
    \def\indextype#1{\@indextype@i#1,}
    \makeatother
     
     
    \lstset{
    	numbers=left, 
    	numberstyle=\small, 
    	numbersep=8pt, 
    	frame = single, 
    	language=C, 
    	framexleftmargin=5pt,			 % la marge à gauche du code
    	% test pour améliorer la présentation du code
    	upquote=true,
    	columns=flexible,
    	basicstyle=\ttfamily,
    	% provoque une erreur texcsstyle=*\color{blue},
    	commentstyle=\color{mygreen},    % comment style
    	keywordstyle=\color{blue},       % keyword style
    	rulecolor=\color{black},         % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
    	showspaces=false,                % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'		
    	showtabs=false,                  % show tabs within strings adding particular underscores
    	stringstyle=\color{mymauve},     % string literal style
    	numbers=none, 
    	tabsize=4,
    	% pour couper les lignes trop loongues
    	breaklines,
    	breakindent=1.5em, %?indente?de?3?caracteres?vers?la?droite
    	escapechar=µ,% pour escape en latex
    	morekeywords=[2]{ % nbr total d'entrée % j'ajoute une catégorie de mots-clés 
    		%%% pour tri sur le 5ieme caractere
    		% fichier 104 gtksourceview
    		GTK_TEXT_VIEW,
    		gtk_source_buffer_new,
    		gtk_source_view_new_with_buffer,
    		gtk_source_view_set_show_line_numbers,
    		gtk_widget_set_name,
    		gtk_css_provider_new;
    		gdk_display_get_default,
    		gdk_display_get_default_screen;
    		gtk_style_context_add_provider_for_screen,
    		GTK_STYLE_PROVIDER
    		GTK_STYLE_PROVIDER_PRIORITY_APPLICATION,
    		gtk_source_view_set_auto_indent,
    		gtk_source_view_set_indent_width,
    		gtk_source_view_set_tab_width,
    		gtk_source_view_set_smart_backspace,
    		gtk_source_view_set_right_margin_position,
    		gtk_source_view_get_right_margin_position,
    		gtk_source_view_set_show_right_margin,
    		gtk_source_view_get_show_right_margin,
    		gtk_source_buffer_set_highlight_matching_brackets,
    		gtk_source_view_set_highlight_current_line,
    		gtk_widget_override_font,
    		gtk_source_language_get_name,
    		gtk_source_buffer_set_language,
    		gtk_source_language_manager_new,
    		gtk_source_view_new,
    		gtk_source_view_new_with_buffer,
    		gtk_source_view_set_show_line_numbers,
    		gtk_source_view_get_show_line_numbers,
    		gtk_source_view_set_show_right_margin,
    		gtk_source_view_get_show_right_margin,
    		gtk_source_view_set_right_margin_position,
    		gtk_source_view_get_right_margin_position,
    		gtk_source_view_set_highlight_current_line,
    		gtk_source_view_get_highlight_current_line,
    		gtk_source_view_set_auto_indent,
    		gtk_source_view_get_auto_indent,
    		gtk_source_view_set_indent_on_tab,
    		gtk_source_view_get_indent_on_tab,
    		gtk_source_view_set_tab_width,
    		gtk_source_view_get_tab_width,
    		gtk_source_view_set_indent_width,
    		gtk_source_view_get_indent_width,
    		gtk_source_view_set_insert_spaces_instead_of_tabs,
    		gtk_source_view_get_insert_spaces_instead_of_tabs,
    		gtk_source_view_indent_lines,
    		gtk_source_view_unindent_lines,
    		gtk_source_view_get_visual_column,
    		gtk_source_view_set_smart_backspace,
    		gtk_source_view_get_smart_backspace,
    		gtk_source_view_set_smart_home_end,
    		gtk_source_view_get_smart_home_end,
    		gtk_source_view_set_mark_attributes,
    		gtk_source_view_get_mark_attributes,
    		gtk_source_view_set_show_line_marks,
    		gtk_source_view_get_show_line_marks,
    		gtk_source_view_set_draw_spaces,
    		gtk_source_view_get_draw_spaces,
    		gtk_source_view_get_completion,
    		gtk_source_view_get_gutter,
    		gtk_source_view_set_background_pattern,
    		gtk_source_view_get_background_pattern,
    		gtk_source_buffer_can_redo,
    		gtk_source_buffer_redo,
    		gtk_source_buffer_can_undo,
    		gtk_source_buffer_undo,
    		%%%%%
    		GTK_SOURCE_COMPLETION_WORDS,
    		gtk_source_completion_words_register,
    		gtk_source_completion_words_new,
    		gtk_source_completion_words_register,
    		gtk_source_completion_words_unregister,
    		GTK_SOURCE_COMPLETION_PROVIDER,
    		GTK_SOURCE_COMPLETION,
    		%% gtk_toolbar_insert, cf plus bas deja present
    		%%%%%
    		%108pratique_menu
    		gtk_application_set_app_menu,
    		gtk_window_set_application,
    		gtk_tool_button_new,
    		gtk_tool_button_set_icon_name,
    		gtk_tool_item_set_tooltip_markup,
    		gtk_toolbar_insert,
    		gtk_widget_set_visible,
    		gtk_widget_get_visible,
    		gtk_application_window_new,
    		gtk_grid_attach,
    		gtk_actionable_set_action_name,
    		gtk_image_menu_item_new_with_mnemonic,
    		gtk_image_menu_item_set_image,
    		gtk_image_new_from_icon_name,
    		gtk_accel_label_new,
    		gtk_widget_add_accelerator,
    		gtk_accel_label_set_accel_widget,
    		gtk_window_unfullscreen,
    		gtk_window_fullscreen,
    		%1500awf
    		gtk_menu_shell_append,
    		gtk_menu_item_new_with_mnemonic,
    		GTK_CHECK_VERSION,
    		%g_signal_connect_swapped,
    		gtk_settings_set_string_property,
    		gtk_settings_get_default,
    		%%%%102arbre-liste
    		gtk_tree_view_insert_column_with_attributes,
    		gtk_list_store_append,
    		gtk_tree_store_append,
    		gtk_list_store_prepend,
    		gtk_tree_store_prepend,
    		gtk_list_store_set,
    		gtk_tree_store_set,
    		gtk_list_store_clear,
    		gtk_tree_store_clear,
    		gtk_list_store_remove,
    		gtk_tree_store_remove,
    		gtk_tree_view_new_with_model,
    		gtk_tree_view_new,
    		gtk_tree_view_set_model,
    		gtk_tree_view_set_headers_visible,
    		gtk_tree_view_get_headers_visible,
    		gtk_tree_view_set_rules_hint,
    		gtk_tree_view_get_rules_hint,
    		gtk_tree_view_set_headers_clickable,
    		GTK_LIST_STORE,
    		%%% 103 editeur
    		gtk_button_new_from_icon_name,
    		GTK_STOCK_QUIT,
    		GTK_ICON_SIZE_BUTTON,
    		gtk_text_view_get_buffer,
    		gtk_text_buffer_get_iter_at_line,
    		gtk_text_buffer_insert,
    		gtk_widget_set_size_request,
    		gtk_file_chooser_dialog_new,
    		gtk_text_buffer_get_bounds,
    		gtk_frame_set_label_align,
    		GTK_BUTTONS_OK,
    		gtk_notebook_remove_page,
    		gtk_notebook_get_current_page,
    		gtk_css_provider_new,
    		gdk_display_get_default_screen,
    		gdk_display_get_default,
    		gtk_style_context_add_provider_for_screen,
    		GTK_STYLE_PROVIDER,
    		GTK_STYLE_PROVIDER_PRIORITY_APPLICATION,
    		gtk_notebook_get_nth_page,
    		gtk_notebook_get_tab_label,
    		gdk_pixbuf_new_from_file,
    		gdk_pixbuf_add_alpha,
    		gtk_notebook_set_tab_reorderable,
    		gtk_menu_bar_new,
    		gtk_file_chooser_set_show_hidden,
    		gtk_file_chooser_unselect_all,
    		gtk_dialog_add_buttons,
    		gtk_file_chooser_get_filenames,
    		gtk_file_chooser_set_select_multiple,
    		gtk_about_dialog_set_authors,
    		gtk_about_dialog_set_comments,
    		gtk_about_dialog_set_website_label,
    		gtk_about_dialog_set_website,
    		gtk_about_dialog_set_program_name,
    		gtk_about_dialog_set_copyright,
    		gtk_about_dialog_set_logo,
    		gtk_about_dialog_set_documenters,
    		gdk_pixbuf_new_from_file,
    		gtk_recent_chooser_dialog_new,
    		gtk_recent_info_unref,
    		gtk_recent_chooser_get_current_item,
    		gtk_recent_chooser_set_select_multiple,
    		gtk_recent_chooser_set_show_tips,
    		gtk_recent_chooser_set_select_multiple,
    		gtk_recent_chooser_set_limit,
    		gtk_recent_chooser_set_show_not_found,
    		gtk_recent_chooser_get_current_item,
    		gtk_recent_manager_get_default,
    		gtk_recent_chooser_menu_new_for_manager,
    		gtk_recent_chooser_get_current_uri,
    		gtk_recent_chooser_menu_set_show_numbers,
    		gtk_recent_chooser_set_local_only,
    		gtk_recent_filter_new,
    		gtk_recent_filter_add_pattern,
    		gtk_recent_filter_add_mime_type,
    		gtk_recent_chooser_set_filter,
    		gtk_recent_chooser_add_filter,
    		gtk_recent_chooser_list_filters,
    		gtk_recent_filter_set_name,
    		gtk_recent_chooser_set_sort_type,
    		gtk_recent_info_get_uri,
    		gtk_widget_set_tooltip_text,
    		gtk_menu_tool_button_new,
    		gtk_menu_tool_button_set_menu,
    		gtk_event_box_new,
    		gtk_recent_manager_remove_item,
    		gtk_recent_filter_add_application,
    		gtk_recent_manager_add_item,
    		gtk_notebook_get_n_pages,
    		GTK_STOCK_CANCEL,
    		GTK_STOCK_OPEN,
    		gtk_message_dialog_new,
    		gtk_dialog_run,
    		GTK_FILE_CHOOSER_ACTION_OPEN,
    		GTK_FILE_CHOOSER_ACTION_SAVE,
    		gtk_file_chooser_get_filename,
    		gtk_dialog_get_content_area
    		%%% 1515 Glib
    		% dernier sans la virgule
    	},
    	morekeywords=[3]{ %% j'ajoute une autre catégorie de mots-clés 
    		%%% pour tri sur le 3ieme caractere
    		%% si c'est dans l'index c'est ok sinon il y a rien
    		g_return_if_fail,   %ok c'est donc accidentel et entre par autre chose µµ page 30
    		g_return_val_if_fail,  %ok
    		% fichier 104 gtksourceview
    		g_object_unref,  
    		g_content_type_guess, 
    		%%%%%
    		%108pratique_menu
    		g_action_map_add_action, 
    		g_menu_new,
    		g_menu_append, 
    		g_simple_action_new, 
    		g_simple_action_group_new,
    		%1500awf
    		g_slist_reverse,
    		g_dir_read_name,
    		g_slist_prepend,
    		g_build_path,
    		g_dir_open,
    		g_slist_sort,
    		g_strcmp0,
    		g_signal_connect_swapped,
    		g_signal_connect,
    		%%%%102arbre-liste
    		G_TYPE_NONE,
    		G_TYPE_INTERFACE,
    		G_TYPE_CHAR,
    		G_TYPE_UCHAR,
    		G_TYPE_BOOLEAN,
    		G_TYPE_INT,
    		G_TYPE_UINT,
    		G_TYPE_LONG,
    		G_TYPE_ULONG,
    		G_TYPE_INT64,
    		G_TYPE_UINT64,
    		G_TYPE_ENUM,
    		G_TYPE_FLAGS,
    		G_TYPE_FLOAT,
    		G_TYPE_DOUBLE,
    		G_TYPE_STRING,
    		G_TYPE_POINTER,
    		G_TYPE_BOXED,
    		G_TYPE_PARAM,
    		G_TYPE_OBJECT,
    		%%% 103 editeur
    		g_file_get_contents,
    		g_free,
    		g_list_nth_data,
    		g_list_remove,
    		g_list_insert,
    		g_slist_free,
    		g_io_channel_new_file,
    		g_io_channel_read_line,
    		g_io_channel_read_to_end,
    		g_io_channel_shutdown,
    		g_io_channel_write_chars,
    		G_IO_STATUS_NORMAL,
    		G_IO_STATUS_ERROR,
    		G_IO_STATUS_EOF,
    		G_IO_STATUS_AGAIN,
    		g_filename_from_uri,
    		g_slice_new,
    		%%% 1515 Glib
    		G_Regex,
    		g_malloc,
    		g_strdup
    		% dernier sans la virgule
    	},
    		morekeywords=[4]{ %% j'ajoute une autre catégorie de mots-clés 
    				%%% pour tri sur le 1er caractere
    				% fichier 104 gtksourceview
    				GtkSourceBuffer, 
    				GtkCssProvider,
    				GdkDisplay, 
    				GdkScreen, 
    				pango_font_description_from_string, 
    				pango_font_description_free, 
    				GtkSourceLanguageManager, 
    				GtkSourceSmartHomeEndType,
    				GtkSourceMarkAttributes,
    				GtkSourceDrawSpacesFlags,
    				GtkSourceCompletion,
    				GtkSourceGutter,
    				GtkSourceBackgroundPatternType,
    				%%%%%
    				GtkSourceSearchContext,
    				%%%%%
    				%108pratique_menu
    				GSimpleAction, 
    				GVariant, 
    				GActionEntry, 
    				GActionGroup, 
    				%1500awf
    				%g_signal_connect_swapped,
    				GCompareFunc
    				%%%%102arbre-liste
    				GtkTreeModel,
    				GtkListStore,
    				GtkTreeStore
    				%%% 103 editeur
    				% idéalement les 4 mots suivants seraient à regrouper sous icone avec \gtka
    				application-exit,
    				document-open,
    				document-open-recent,
    				gtk-copy
    				stdlib,
    				GtkCssProvider,
    				GdkDisplay,
    				GdkScreen,
    				GdkPixbuf,
    				GtkMenuBar,
    				GtkRecentInfo,
    				GtkRecentInfo.display_name, %% point attention sur celui là !!!
    				%%% 150 DIALOG
    				GtkFileChooserAction,
    				%%% 1515 Glib
    				EXIT_SUCCESS,
    				gboolean
    				% dernier sans la virgule
    			},
    	%% la coloration syntaxique différenciée permet de séparer les variables
    	keywordstyle=[2]\color{brown}, % je leur donne une coloration spéciale
    	keywordstyle=[3]\color{blue}, % je leur donne une coloration spéciale
    	keywordstyle=[4]\color{red}, % je leur donne une coloration spéciale
    	%% Intégration dans l'index OK
    	moreindex={[1][keywords2]},    % ces mots-clés sont ajoutés à l'index?oui
    	moreindex={[3][keywords3]},    % ces mots-clés sont ajoutés à l'index?oui
    	moreindex={[4][keywords4]},    % ces mots-clés sont ajoutés à l'index?oui mais pb de style
    	%% Style de classement différencié
    	%% gtk_xxxx trié par xxxx  ca fonctionne sur tout l'index
    	indexstyle={[1]\indexgtk},      % par le biais de macro \indexgtk
    	%%  Nouvelle gestion en DEV pour indexation et tri
    	indexstyle={[3]\indexglib}      % par le biais de ma macro tri 3ieme
    	indexstyle={[4]\indextype}      % par le biais de ma macro tri 1er
    }
    %	
    %% attention au format du fichier source qui doit être en latin1 isov8859-1
     
    % macro pour fabriquer le fichier d'index
    \makeindex
    %\makeindex goprogtk.idx -s perso.ist
    %puis recompiler
     
    \usepackage{minipage-marginpar}
     
    %%%%%%%%%%%%%%% pour mettre un texte entre 2 points carrés
    \newenvironment{king}
    { \rule{1ex}{1ex}\hspace{\stretch{1}} }
    { \hspace{\stretch{1}}\rule{1ex}{1ex} }
     
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % la commande suivante prend en compte 
    %1-un paramètre optionnel Motdeclassement
    %2-le mot à classer  et à afficher
    % usage 1er paramètre entre [] le suivant entre {} \gtk[Widget\_set\_size\_request]{gtk\_widget\_set\_size\_request}
    \newcommand{\gtk}[2][]{%
    	\emph{\textcolor{brown}{#2}}%
    	\marginpar{\scriptsize --------- mot Résa Gtk+}%% provisoire	
    	\index{#1@#2}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %presque la meme mais avec mise en gras de la page dansl'index pour THE SUJET
    \newcommand{\gtkbold}[2][]{%
    	\emph{\textcolor{brown}{#2}}%
    	%\textcolor{brown}{\emph{\textbf{#2}}} % ici le texte serait en plus en grad
    	%	\emph{\textbf{#2}}%
    	\marginpar{\scriptsize --------- mot Résa Gtk+}%% provisoire	
    	\index{#1@#2|textbf}}% |textbf pour mise en gras de la page
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % la commande suivante prend en compte 
    %1-un paramètre optionnel Motdeclassement
    %2 le mot de theme principal
    %3-le mot à classer et à afficher
    % usage 1er paramètre entre [] le suivant entre {}
    \newcommand{\gtka}[3][]{%
    	\emph{\textcolor{brown}{#3}}%
    	\marginpar{\scriptsize --------- mot Résa Gtk+}%% provisoire
    	\index{#1@#2!#3}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newenvironment{remarque}[2]%
    {\begin{minipage}{#1 }
     
    		\hrulefill~\raisebox{-0.4pt}{#2}~\hrulefill\par\smallskip
    		% a défaut je met \par\hrulefill\par
    		% 
    		\begin {wrapfigure}[5]{ l }{2.2 cm }
    		\vspace { -7 mm }
    		\includegraphics [ width=2 cm ]{/home/francis/Images/remarque.png}
    		\end {wrapfigure}
    	}
    	{\par\hrulefill\bigskip\end{minipage}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newenvironment{question}[2]%
    {\begin{minipage}{#1 }
     
    		\hrulefill~\raisebox{-0.4pt}{#2}~\hrulefill\par\smallskip
     
    		\begin {wrapfigure}[5]{ l }{2.2 cm }
    		\vspace { -7 mm }
    		\includegraphics [ width=2 cm ]{/home/francis/Images/question.png}
    		\end {wrapfigure}
    	}
    	{\par\hrulefill\bigskip\end{minipage}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newenvironment{information}[2]%
    {\begin{minipage}{#1 }
     
    		%\hrulefill~\raisebox{-0.4pt}{#2}~\hrulefill\par\smallskip
    		\par\bigskip
    		\begin {wrapfigure}[2]{ l }{1.2 cm }
    		\vspace { -7 mm }
    		\includegraphics [ width=0.8 cm ]{/home/francis/Images/information.png}
    		\end {wrapfigure}
    	}
    	%{\par\hrulefill\bigskip\end{minipage}}
    	{\par\end{minipage}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    %%% ex \newenvironment{ficaux}{%  de framalivre pour mettre entrée dans une box
    \newenvironment{item_framebox}
    {%
    	\begin{list}{}{%
    			% largeur de la boîte englobant le label :
    			\setlength{\labelwidth}{1cm}
    			% espace entre paragraphe et l ? étiquette :
    			\setlength{\labelsep}{25pt}
    			% marge de gauche :
    			\setlength{\leftmargin}{\labelwidth+\labelsep+5pt}
    			\renewcommand{\makelabel}[1]{% production de l?étiquette :
    				\framebox[\labelwidth]{\texttt{##1}}}}}
    	{\end{list}}
     
    \begin{document}
     
    premier test ok
    \begin{lstlisting}
    	GTK_TEXT_VIEW 
    	gtk_source_buffer_new
    	gtk_source_view_new_with_buffer
    	gtk_source_view_set_show_line_numbers
    	gtk_widget_set_name
    	gtk_css_provider_new;
    	gdk_display_get_default
    	gdk_display_get_default_screen;
    	gtk_style_context_add_provider_for_screen
    	GTK_STYLE_PROVIDER
    	GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
    	gtk_source_view_set_auto_indent
    	gtk_source_view_set_indent_width
    	gtk_source_view_set_tab_width
    	gtk_source_view_set_smart_backspace
    	gtk_source_view_set_right_margin_position
    	gtk_source_view_get_right_margin_position
    	gtk_source_view_set_show_right_margin
    	gtk_source_view_get_show_right_margin
    \end{lstlisting}
    2ieme test ok 
     
    \begin{lstlisting}
    	g_return_if_fail
    	g_return_val_if_fail
     
    	g_object_unref  
    	g_content_type_guess 
     
    	g_action_map_add_action 
    	g_menu_new
    	g_menu_append 
    	g_simple_action_new 
    	g_simple_action_group_new
     
    	g_slist_reverse
    	g_dir_read_name
    	g_slist_prepend
    	g_build_pathg_dir_open
    	g_slist_sort
    	g_strcmp0
    	g_signal_connect_swapped
    \end{lstlisting}
     
    3ieme test qui buggue coté indexation
    \begin{lstlisting}
    	GtkSourceBuffer 
    	GtkCssProvider
    	GdkDisplay 
    	GdkScreen 
    	pango_font_description_from_string 
    	pango_font_description_free 
    	GtkSourceLanguageManager 
    	GtkSourceSmartHomeEndType
    	GtkSourceMarkAttributes
    	GtkSourceDrawSpacesFlags
    	GtkSourceCompletion
    	GtkSourceGutter
    	GtkSourceBackgroundPatternType
    	GtkSourceSearchContext
    	GSimpleAction 
    	GVariant 
    	GActionEntry 
    	GActionGroup
    \end{lstlisting}
     
    \footnotesize{\printindex{}}
    %\printindex
     
    \end{document}
    dernier point mon fichier de personnalisation perso.ist est

    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
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % version article framabook-versionenligne_v1_5.pdf  page 166
    % mais probmème le package fancybox est nécessaire mais je n'ai pas les bôites ombrées
    %heading_prefix "{\\large\\sffamily\\bfseries\\shadowbox{"
    %heading_suffix "}\\hfill}\\nopagebreak\n"
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % version article Latex-Index.pdf
    heading_prefix "{\\bfseries\\hfil\\fcolorbox{red}{lightgray}{\\textcolor{blue}{ "
    heading_suffix "}}\\hfil}\\vspace*{3ex}\\nopagebreak\n"
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    headings_flag 1
    symhead_positive "Symboles"
    symhead_negative "symboles"
    numhead_positive "Nombres"
    numhead_negative "nombres"
     
    delim_0 "}\\hspace{6pt}\\dotfill\\hspace{6pt}"
    delim_1 "\\hspace{5pt}\\dotfill\\hspace{5pt}"
    delim_2 "\\hspace{4pt}\\dotfill\\hspace{4pt}"
    item_0 "\n \\item {\\bfseries "
    item_x1 "}\n \\normalfont\\subitem "
    lancé avec makeindex demo_index01.idx -s perso.ist

    sans rejet quand je n'active pas le 3ieme style
    This is makeindex, version 2.15 [TeX Live 2017] (kpathsea + Thai support).
    Scanning style file ./perso.ist............done (12 attributes redefined, 0 ignored).
    Scanning input file demo_index01.idx....done (52 entries accepted, 0 rejected).
    Sorting entries....done (299 comparisons).
    Generating output file demo_index01.ind....done (149 lines written, 0 warnings).
    Output written in demo_index01.ind.
    Transcript written in demo_index01.ilg.

    puis lorsque j'active le 3ieme style plus aucune entrée d'index est produite
    This is makeindex, version 2.15 [TeX Live 2017] (kpathsea + Thai support).
    Scanning style file ./perso.ist............done (12 attributes redefined, 0 ignored).
    Scanning input file demo_index01.idx...done (0 entries accepted, 0 rejected).
    Nothing written in demo_index01.ind.
    Transcript written in demo_index01.ilg.

    Avez-vous une idée de l'erreur?
    de mon point de vue l'erreur se trouve dans le code suivant
    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
    %%%%% tri a partir du 5ieme element MANQUE MISE EN ITALIQUE
    \makeatletter
    \def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    \def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
     
     
    %%%% tri a partir du 3ieme element MANQUE MISE EN ITALIQUE
    \makeatletter
    \def\@indexglib@i#1#2#3#4#5,{\index{#3@#1#2#3#4#5}}
    \def\indexglib#1{\@indexglib@i#1,}
    \makeatother
     
    %%%%%% tri a partir du 1er element MANQUE MISE EN ITALIQUE
    \makeatletter
    \def\@indextype@i#1#2#3#4#5,{\index{#1@#1#2#3#4#5}}
    \def\indextype#1{\@indextype@i#1,}
    \makeatother

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    suite de mes explorations, je viens de tester ma 3ieme fonction de tri seule les 2 autres étant neutralisés. Elle m'a bien produit un index avec 18 entrées d'index.

    soit il y a une incompatibilité entre les 3 présentes simultanément soit le package ne supporte pas 3 modes diffrents

  17. #17
    Invité
    Invité(e)
    Par défaut
    Des petites fautes d'étourderies autour des virgules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	indexstyle={[3]\indexglib}  % <---- il manque la virgule
    	indexstyle={[4]\indextype}
    également manquantes à la fin de plusieurs mot-clés, voire remplacées par des « ; ».

    Par contre, étant donné que tu veux le mot en entier, la macro \index de base suffit : indexstyle={[4]\index}.

    Outre le fait que tu n'as pas à faire \makeatletter ... \makeatother sur chaque, mais juste les englober tous dedans, fais attention à la partie gauche d'\index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    \def\@indexglib@i#1#2#3#4#5,{\index{#3@#1#2#3#4#5}}
                                        ^^
    Si je prends « g_return_if_fail », on aura en entrée :
    #1 = g
    #2 = _
    #3 = r
    #4 = e
    #5 = turn_if_fail
    qui donnera \index{r@g\_return\_if\_fail}, classé seulement selon le caractère « r », ce qui pourra engendrer des soucis d'ordre alphabétique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    \def\@indexglib@i#1#2#3#4#5,{\index{#3#4#5@#1#2#3#4#5}}
                                          ^^^^
    Mais tu peux aussi remarquer que seuls trois paramètres ici suffisent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \def\@indexglib@i#1#2#3,{\index{#3@#1#2#3}}

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Bonsoir,

    Je guettai ta réponse winjerome avec une tension de gamin
    d'abord je ne sais comment te remercier de ton énorme aide. Car tes conseils sont plus que précieux.

    effectivement j'avais des petites erreurs dans mes tables => corrigées plus d'une dizaine

    je n'ai trouvé aucune autre info ailleurs sur ta manière de traiter les caractères et pourtant Qwant a chauffé grave ton explication conforte ce que j'avais deviné.

    Côté indexation cela fait tout ce que je demande c'est parfait. Trop même car il va falloir que je retire certains mots-clef qui apparaissent 40 fois dans mon indexation alors que ce n'est pas important. Mais je sais comment traiter ce problème.

    Avant de mettre résolu avec la publication de la version ultime, il me reste à voir 2 points

    1-- pour des questions de vérification je voudrai que les macros rajoute dans la marge une marque et mettre en mode emph \emph{}

    je l'ai fait pour celle là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    \newcommand{\gtk}[2][]{%
    	\emph{\textcolor{brown}{#2}}%
    	\marginpar{\scriptsize --------- mot Résa Gtk+}%% provisoire	
    	\index{#1@#2}}
    Mais pour les 2 suivantes je n'ai pas trouvé comment faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    \makeatletter
    \def\@indexgtk@i#1#2#3#4#5,{\index{#5@#1#2#3#4#5}}
    \def\indexgtk#1{\@indexgtk@i#1,}
    \makeatother
     
     
    %%%% tri a partir du 3ieme element MANQUE MISE EN ITALIQUE
    \makeatletter
    \def\@indexglib@i#1#2#3#4#5,{\index{#3#4#5@#1#2#3#4#5}}
    \def\indexglib#1{\@indexglib@i#1,}
    \makeatother
    à noter que je vais les fusionner mais je teste par petit pas

    y compris pour les mot en entier, la macro \index de base suffit : indexstyle={[4]\index}. sauf que là aussi je souhaite la même opération de mise en \emph{} et le tag dans la marge

    Et là encore je ne sais pas comment faire.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par turboiii Voir le message
    Je guettai ta réponse winjerome avec une tension de gamin
    d'abord je ne sais comment te remercier de ton énorme aide. Car tes conseils sont plus que précieux.
    Avec plaisir

    Citation Envoyé par turboiii Voir le message
    je n'ai trouvé aucune autre info ailleurs sur ta manière de traiter les caractères et pourtant Qwant a chauffé grave ton explication conforte ce que j'avais deviné.
    Je la tiens de notre responsable de rubrique -Nikopol- ^^ (qui est en train de nous lire )
    Pour en savoir plus, tu as le livre The Texbook par Donald E. Knuth, chapitre 20.

    Citation Envoyé par turboiii Voir le message
    1-- pour des questions de vérification je voudrai que les macros rajoute dans la marge une marque et mettre en mode emph \emph{}
    Tu peux le faire avec keywordstyle=[2]\color{brown}\emph. Ou plus généralement : keywordstyle=[2]\monstyle avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \newcommand{\monstyle}[1]{ . . . }
    où dedans, tu peux appliquer sur l'entrée #1 (le mot-clé) la couleur, l'italique… mais aussi ajouter le texte dans la marge .

  20. #20
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Bon, puisqu'on me sonne, je vais essayer de t'éclairer un petit peu sur la décomposition que Winjerome ( à toi au passage) t'as proposée.
    La macro de Winjerome prend l'argument et l'envoi dans une fonction qui va le décomposer caractère par caractère laissant tout le reste au dernier argument. Le code suivant montre ce qui se passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    \documentclass{minimal}
    \usepackage[utf8]{inputenc}
    \parindent0pt
    \begin{document}
    \makeatletter
    \def\decomposition#1#2#3#4{%
    	#1 puis #2 puis #3 puis tout le reste #4%
    	}
    \def\decomp#1{\decomposition#1}
    \decomp{motadecomposer}
    \end{document}
    De la même façon on peut imaginer une macro récursive qui décomposerait n'importe quel mot. \@nil est une macro vide qui sert ici de condition d’arrêt pour la récursion.
    Dans \wordToLetter@i on définit \next qui va nous permettre de lancer la récursion dans le \else on affiche à chaque tour le caractère. La recursion s'arrete si #2 est identique à \@nil et on dit à \next de se relaxer on a finit. \expandafter\next\fi ca c'est juste de la frime ça rend la récursion terminale.
    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
    \documentclass{minimal}
    \usepackage[utf8]{inputenc}
    \parindent0pt
    \begin{document}
    \def\wordToLetter#1{
    	\wordToLetter@i#1\@nil
    	}
     
    \def\wordToLetter@i#1#2{%
    	\ifx#2\@nil#1\\\let\next\relax%
    	\else#1\\
    	\def\next{\wordToLetter@i#2}
    	\expandafter\next\fi
    	}
    \wordToLetter{motadecomposer}
    \end{document}
    On pourrait même rajouter un compteur pour dénombrer le nombre de caractères d'un mot (ou groupe de mot)

    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
    \documentclass{minimal}
    \usepackage[utf8]{inputenc}
    \parindent0pt
    \begin{document}
    \makeatletter
    \newcount\c@unt
    \def\wordToLetter#1{\c@unt0
    	\wordToLetter@i#1\@nil
    	le mot contient \the\c@unt\ caractères}
     
    \def\wordToLetter@i#1#2{%
    	\advance\c@unt\@ne
    	\ifx#2\@nil#1\\\let\next\relax%
    	\else#1\\
    	\def\next{\wordToLetter@i#2}
    	\expandafter\next\fi
    	}
     
    \wordToLetter{motadecomposer}
    \end{document}
    Mais attention aux accents, TeX a été conçu par un américain, et les américains ne pensent jamais aux autres (je m'égare) donc les accents... bref ça peux faire le sujet d'une autre discussion.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 2.X] Tri avec indexation
    Par nekcorp dans le forum Général Python
    Réponses: 6
    Dernier message: 15/04/2016, 12h01
  2. Indexation de mots en Français avec SOLR
    Par canilunu dans le forum Autres
    Réponses: 1
    Dernier message: 26/06/2013, 11h52
  3. tri avec l'ordre UPDATE et incrementation d'une colonne
    Par Staron dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/02/2004, 08h48
  4. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 13h40
  5. Réponses: 14
    Dernier message: 01/09/2003, 15h54

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