Problème de deux index dans avec style nexus

Bonjour à tous. En suivant les conseils de Brian du forum, j'ai essayé de résoudre certains problèmes liés aux mini tables de matières avec mes connaissances élémentaires et une lecture intensive cette semaine sur les forums dédiés à Latex. À présent, je cherche à mettre deux index dans un document basé sur nexus.sty. Pour celà, j'ai ajouté le package imakeidx et index, au préambule du fichier de nexus.sty (Fichier nexusStyle.tex dont les lignes 58 à 246 ne constituent qu'une variantes de palette des couleurs à choisir), ainsi qu'une adaptation de l'appendice à l'index par
\AtBeginEnvironment{indexes}{%
  \addtocontents{toc}{\protect\gdef\protect\@chapapp{\protect\indexname}}%\Indexname modifié par moi-même en substituant appendeces par indexes dans le fichier style

Ceci me permettrait de le mettre dans la table de matière. Par ailleurs, dans le fichier maître docu.tex, j'ai mis les deux commandes faisant appel à makeindex comme suit
\makeindex[name=one,title=Index des mots, intoc, options= -s docuone.ist]
\makeindex[name=two,title=Index des auteurs, intoc, options= -s docutwo.ist]
Où docuone.ist (Fichier attaché docuoneIst.tex) et docutwo.ist sont les fichiers styles des deux index (même syle pour les deux).

En voici un ECM de mon fichier maître docu.tex, où une partie m'a été donnée par Brian que je salue au passage.
\documentclass[11pt,french,twoside]{book}
%%%%%%%%%%%%% Geometry
\usepackage[a4paper,left=2.5cm,right=2.5cm, bottom=2cm,top=2cm]{geometry}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}  % non nécessaire depuis environ 2 ans (par défaut)
\usepackage{babel}
%\usepackage{index}
\usepackage{tikz}
\usetikzlibrary{babel}
\usepackage[tikz]{bclogo}
\usepackage{etoolbox}        % pour \newtoggle, \toggletrue...
\usepackage{xparse}          % non nécessaire à partir de LaTeX 2020-10-01
\usepackage{refcount}        % pour \IfRefUndefinedBabel
\usepackage[xparse]{tcolorbox}
% Code suggéré par Brian et a pu résoudre la gestion de la table de matière
\usepackage[user]{zref}
% 'expand' est nécessaire pour utiliser \GetTitleStringDisableCommands
\usepackage[expand]{gettitlestring}
\usepackage[palette=e]{nexus}
%%%%%%%%%%%%Gère la table de matière%%%%%%%%%%%%%%%%
\titlecontents{subsection}[1.5pc]% indentation à gauche
  {\addvspace{5pt}}%
  {\contentslabel[\thecontentslabel]{2pc}\color{green}}%
  {}%
  {\normalsize\dotfill\small\thecontentspage\color{red}}%
  [\addvspace{3pt}]
  

% Section style in the TOC
\titlecontents{section}[0pc]
{\addvspace{5pt}}
{
\contentslabel[\thecontentslabel]{2pc}\color{red}}
{}
{\normalsize\dotfill\small\thecontentspage\color{red}}
[\addvspace{3pt}]


  

%\setcounter{secnumdepth}{3}
%\setcounter{tocdepth}{1}
\setcounter{minitocdepth}{2}

% Si décommenté, sous-sections non numérotées dans la TOC
% \setcounter{secnumdepth}{1}


\makeindex[name=one,title=Index des mots, intoc, options= -s docuone.ist]
\makeindex[name=two,title=Index des auteurs, intoc, options= -s docutwo.ist]
%\makeindex[program=makeindex,options=-s docu,intoc=true]
\begin{document}

\dominitoc
\tableofcontents
\chapter{Techniques d'intégration}\label{chap-limites-et-continuite}
\minitoc
\section*{Total} On a deux cas
\section{Première section}\labelSectionCours{sec1}
La \index[one]{structure} du  \index[one]{module} est donnée par ..... 
\newpage
\subsection{Sous section}
Le \index[two]{mathématicien} \index[two]{Henri Poincaré} est connu pour....
\newpage
\section{Deuxième section}\labelSectionCours{sec2}
On a...........

\printindex[one]
\printindex[two]
\end{document}

Enfin dans le fichier nexus.sty, (ligne 519 à 545), j'ai ajouté le code suivant que j'ai pris du manuel de Vincent Lozano ``Tout ce que vous avez voulu savoir sur Latex sans jamais oser le demander`` que je suggè de lire pour les curieux et les débutants comme moi

\renewcommand\indexspace{\par \vskip 20pt plus5pt minus3pt\relax}
%-----------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%%%
%-----------------------------------------------------------------------
%
% pour avoir un lien correct dans les bookmark du pdf, sur l'index
%
%-----------------------------------------------------------------------

%%%%%%%%%%%%%%%%%%%%Ajouté par moi-même tirée d'un code de Vincent Lozano%%%%%%%%%%%
\renewenvironment{theindex}
{
  \setlength{\parskip}{0pt plus 1.0pt}
  \if@twocolumn
  \@restonecolfalse
  \else
  \@restonecoltrue
  \fi
  \columnseprule \z@
  \columnsep 35\p@
  \twocolumn[\@makeschapterhead{\indexname}]%
  \@mkboth{\indexname}{\indexname}%suppression de \MakeUppercase
  \thispagestyle{plain}\parindent\z@
  \parskip\z@ \@plus .3\p@\relax
  \let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}
%%%%%%%%%%%%%%%%


Malheureusement lorsque je compile, j'obtiens des messages d'erreurs (j'ai attaché les fichiers log et aux dénommés respectivement par docuLOG.tex et docuAUX.tex). De plus, dans mon pdf quelque chose ne vas pas à la première page, l'indexe n'apparaît ni dans la table de matières ni dans le document et les mots indexés n'apparaissent même pas dans le texte (voir le fichier pdf). Enfin, le fichier auxilliaire one.idx est vide, tandis que celui du deuxième index il n'apparaît même pas.

Je vous remercie à l'avance pour toute aide ou commentaire.

zenon

Réponses

  • Bonsoir,

    1) Tu ne devrais pas modifier nexus.sty. Déjà, je ne sais pas si tu en a le droit (quelle est la licence ? Je ne la vois pas...). D'autre part, en procédant ainsi, il va devenir difficile de s'y retrouver (pour demander de l'aide ou mettre à jour nexus.sty). Tes modifs doivent être soit dans le préambule de ton document, soit dans un .sty à toi. Pour créer un .sty à toi, il n'y a presque rien à faire :
    \NeedsTeXFormat{LaTeX2e}[1995/12/01]
    \ProvidesPackage{nom-du-paquet}[2020/11/30 v0.1
                               Description courte]
    % Le code ici.
    

    2) Ton \renewenvironment{theindex} a de fortes chances d'entrer en conflit avec imakeidx, que tu dis utiliser.

    3) Justement, la première erreur de ton fichier .log :
    Package index Info: Writing index file docu.idx on input line 51.
    
    
    ! LaTeX Error: Missing \begin{document}.
    
    See the LaTeX manual or LaTeX Companion for explanation.
    Type  H <return>  for immediate help.
     ...                                              
                                                      
    l.51 \makeindex[
                    name=one,title=Index des mots, intoc, options= -s docuone.ist]
    You're in trouble here.  Try typing  <return>  to proceed.
    
    Il faut voir d'où ça vient en commençant par faire le plus simple possible. Pas de nexus.sty, pas de fichiers .ist, pas d'option -s (et pas d'espace avant le -s). Regarder les dates de dernière modification et les fichiers .ilg comme indiqué dans la section If something goes wrong du manuel d'imakeidx. Et il serait peut-être judicieux d'utiliser xindy plutôt que makeindex, car je suppose que le document préparé est en français (voir la doc. d'imakeidx, il y a des options pour ça). Mais attention, les styles pour l'un ne marchent sans doute pas pour l'autre.

    4) La bonne stratégie n'est pas de grapiller des trucs à droite et à gauche pendant une semaine (j'exagère peut-être), puis compiler, trouver que ça ne marche pas et ensuite essayer de débugger. Trop difficile. Il faut toujours commencer très simple et sans aucune erreur. Dès que tu rajoutes un truc, tu testes. Tu ne passes pas à autre chose avant d'avoir corrigé les erreurs. Par exemple, je ne suis pas sûr que ton
    \AtBeginEnvironment{indexes}{%
      \addtocontents{toc}{\protect\gdef\protect\@chapapp{\protect\indexname}}
    
    soit utile vu les possibilités d'imakeidx. Mais c'est une cause de problèmes potentiels, donc à n'ajouter qu'une fois que tu es sûr(e) d'en avoir besoin.

    5) Ton nexus.sty modifié utilise minitoc... et il y a ça dans ton log :
    Package minitoc(hints) Warning: W0040
    (minitoc(hints))                --- The titletoc package is loaded. 
    (minitoc(hints))                It is incompatible 
    (minitoc(hints))                with the minitoc package.
    
    titletoc est utilisé par nexus, comme tu le sais. Il faut choisir. De plus, minitoc n'a pas de mainteneur depuis 2009 (décès de son auteur Jean-Pierre Drucbert). De toute façon, il vaut mieux régler les problèmes les uns après les autres, pas tous en même temps.

    Je suggérerais donc de commencer par préparer un mini document qui sort les $n$ index sans erreur. Ensuite on rajoute nexus non modifié. Ensuite, on applique les modifications souhaitées, mais pas dans nexus.sty (voir 1) ci-dessus). Ensuite, on verra. ;-)
  • Merci beaucoup beaucoup Brian. Je vais essayer d'appliquer ta stratégie. En fait, ce que je voulais au départ c'est d'avoir la mise en page (chapitre, table de matière, bas et haut de page avec toutes les couleurs exotiques) que le style nexus réalise (comme tu le vois sur le pdf). Or, j'avais besoin de réaliser des index et glossaire qui ne sont pas gérés par le fichier nexus, puisque ce fichier gère seulement les appendices (annexes). D'où, j'ai utilisé le code de nexus
    \AtBeginEnvironment{appendeces}{%
      \addtocontents{toc}{\protect\gdef\protect\@chapapp{\protect\indexname}}
    
    en substituant indexes a appendeces. J'ai pensé que ceci marcherait, mais il semblerait que le problème est beaucoup plus délicat.

    Donc j'ai décidé de régler le problèmes de mes mini tables de matières avant les indexes. Or, Brian tu disais qu'il faudrait choisir entre titletoc et minitoc. Est-ce que tiltletoc permet de réaliser des minitables par chapitre comme le package minitoc?

    Un grand merci pour tes réponses Brian et bonne fin de journée.

    zenon
  • À première vue, les deux lignes que tu as recopiées servent juste à mettre l'intitulé “Appendix” (ou Annexe) plutôt que « Chapitre » dans la table des matières, lorsque l'environnement en question est commencé.

    Concernant les mini tables des matières via titletoc, cela semble possible d'après sa documentation : voir § 6.3. Partial TOC's. Je n'ai jamais essayé cela, mais il n'y a pas de raison que ça ne marche pas. titletoc est un package assez utilisé et maintenu, pour autant que je sache.
  • Merci Brian pour ta suggestion. Je suis arrivé enfin à avoir mes minis tables avec titletoc et même avec minitoc. De même, j'ai pu avoir mes index après une certaine triche, en ajoutant une page titre pour les index où je pense mettre une image ou figure inspirante et lié au concept d'index (si quelqu'un a une idée je suis prenant). Je voudrai savoir si c'est possible de corriger le petit retrait des sections Exercices, Indications et Corrigés dans les tables de matières de telle façon que ces titres soient alignés sur les titres des sections (par exemple Exercices, Indications et Corrigés en dessous de Troisième section: voir le pdf ) . Merci à l'avance pour toute suggestion.

    Zenon
    docu.pdf 232.2K
  • Bonjour zenon,

    Dans le code que j'ai posté ici, l'alignement dans la table des matières était bon. Sans exemple minimal reproduisant le problème, il m'est difficile de dire pourquoi ça ne va pas dans ton PDF. Peut-être y a-t-il un espace indésirable juste avant tes titres de sections. Ou peut-être faut-il adapter le \titlecontents{section}... que fait nexus à la taille des polices, peut-être en augmentant le 2pc de \contentslabel[\thecontentslabel]{2pc} ? L'examen du fichier .toc peut éventuellement aider : c'est lui qui contient le code (autogénéré) qui produit la table des matières après la première compilation.
  • Un grand merci Brian. Je verrai tout cela dès que possible.

    Bonne journée.

    zenon
  • Peut-être ceci fonctionnerait-il. Dans la définition de \sectionSpeciale, tu peux essayer de remplacer :
    \addcontentsline { toc } { section } {#3}
    
    par
    \addcontentsline { toc } { section } { \protect \numberline {} #3 }
    
    Les sections numérotées dans la table des matières utilisent normalement \numberline avec le numéro en argument (voir fichier .toc). En passant un argument vide à \numberline, on se rapproche un peu plus de leur formatage.

    Note que je peux mettre des espaces comme je veux ici parce que cette définition est entre \ExplSyntaxOn et \ExplSyntaxOff. Ailleurs, les espaces ne seraient pas ignorés !

    Pour ton illustration en début d'index... peut-être un truc comme ça. Ah, zut, ce n'est pas le bon doigt. :-D
  • Merci Brian pour cette illustration Ah Ah!(tu)

    zenon
Connectez-vous ou Inscrivez-vous pour répondre.