Références exercices

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

[Résolu] Références exercices

Message non lu par marco56 »

Bonsoir,
Depuis que je suis passé à TeXLive 2020, mes références d'exercices passent difficilement : environ 1 exercice sur 2 est référencé pour cliquer sur la solution ou l'énoncé. Voici un extrait de la méthode que j'emploie :

Code : Tout sélectionner

\newcommand\exercicenew[1]{%
   \par\medskip%
   \stepcounter{NumeroExerciceNew}%
   \setlength{\parindent}{0cm}%
   \setlength{\hangindent}{0cm}%
   \psshadowbox[linewidth=1.5pt,fillcolor=yellow!30,shadowsize=5pt,shadow=true,shadowcolor=orange!20,linecolor=orange,framearc=0.5]{$ \blacktriangleright $ \textbf{Exercice \thechapter .\,\arabic{NumeroExerciceNew}~: #1\ifeleve\else\label{#1-solu} \hyperref[#1-enon]{$\Rightarrow$ Corrigé}\fi}}%
   \addcontentsline{exonew}{exercicenew}{\protect\numberline{\theNumeroExerciceNew}#1}%
   \par
}
\newcommand*\seteleve[1]{%
   \elevefalse\ifcsname eleve#1\endcsname\csname eleve#1\endcsname\fi
}

\newcommand{\solutionnew}[1]% 
{% 
%\hypertarget{#1-enon}{
\par% 
\stepcounter{NumeroSolutionNew}% 
\medskip% 
\setlength{\parindent}{0cm}% 
\setlength{\hangindent}{0cm}% 
\par%
\psshadowbox[linewidth=1.5pt,fillcolor=blue!10,shadowsize=5pt,shadow=true,shadowcolor=violet!10,
linecolor=violet,framearc=0.5]{$ \blacktriangleright $ \textbf{Solution de l'exercice \thechapter .\,\arabic{NumeroSolutionNew}~: #1 %\begin{Prof} 
\label{#1-enon} \hyperref[#1-solu]{$\Rightarrow$ \'Enoncé}
%\end{Prof}
}
}
\addcontentsline{solnew}{solutionnew}{\protect\numberline{\theNumeroSolutionNew}#1}
\par%}
}
J'ai recompilé mais sans succès et je ne comprends pas pourquoi cela fonctionne pour certains exos et pas pour d'autres...
Dernière modification par marco56 le mardi 06 avril 2021, 00:48, modifié 1 fois.
touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : dimanche 11 février 2007, 11:45

Re: Références exercices

Message non lu par touhami »

Bonjour.
Essayer de remplacer \stepcounter par \refstepcounter.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Merci, mais le résultat est identique.
Ce que je ne comprends vraiment pas, c'est que pour certains exos, c'est bon et pas pour les autres...
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Rien à voir et je ne vais pas créer un autre fil mais depuis la mise à jour vers TL 2020, j'ai un fichier constitué d'un longtable (mon cahier de texte). Sur mes 2 PC sur lesquels j'ai fait une maj, les pages sont affichées à l'envers mais dans le bon ordre !!!
Si je mets l'option d'autorotate à NON, le fichier est affiché sur le côté. C'est préférable mais ce n'est pas ce que j'avais auparavant.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Bonsoir,
pour mon pb de références, j'ai réalisé un ECM : si vous pouvez le tester et résoudre cette incohérence (selon moi), je suis intéressé.

Code : Tout sélectionner

\documentclass [fleqn,a4paper,openany]{book}
\usepackage [T1]{fontenc}
\usepackage{amssymb}
\usepackage[usenames,dvipsnames]{pstricks}
\usepackage[bookmarks=true,bookmarksnumbered=true,breaklinks=true,
hypertexnames=false,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref}

\makeatletter
\def\contentsline#1#2#3#4{%
	\ifx\\#4\\%
	\csname l@#1\endcsname{#2}{#3}%
	\else
	\csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{%
		\hyper@linkstart{link}{#4}{#3}\hyper@linkend
	}%
	\fi
}
\makeatother

\begin{document}


\newcounter{NumeroExerciceNew}
\renewcommand{\theNumeroExerciceNew}{\thechapter .\,\arabic{NumeroExerciceNew}}

\newcounter{NumeroSolutionNew}
\renewcommand{\theNumeroSolutionNew}{\thechapter .\,\arabic{NumeroSolutionNew}}

\newif\ifeleve
%\newcounter{NumeroExerciceNew}

\newcommand\exercicenew[1]{%
	\par\medskip%
	\stepcounter{NumeroExerciceNew}%
	\setlength{\parindent}{0cm}%
	\setlength{\hangindent}{0cm}%
	\psshadowbox[linewidth=1.5pt,fillcolor=yellow!30,shadowsize=5pt,shadow=true,shadowcolor=red!20,linecolor=red,framearc=0.5]{$ \blacktriangleright $ \textbf{Exercice \thechapter .\,\arabic{NumeroExerciceNew}~: #1\ifeleve\else\label{#1-solu} \hyperref[#1-enon]{$\Rightarrow$ Corrigé}\fi}}%
	\addcontentsline{exonew}{exercicenew}{\protect\numberline{\theNumeroExerciceNew}#1}%
	\par
}
\newcommand*\seteleve[1]{%
	\elevefalse\ifcsname eleve#1\endcsname\csname eleve#1\endcsname\fi
}



\newcommand{\solutionnew}[1]% 
{% 
	%\hypertarget{#1-enon}{
	\par% 
	\stepcounter{NumeroSolutionNew}% 
	\medskip% 
	\setlength{\parindent}{0cm}% 
	\setlength{\hangindent}{0cm}% 
	\par%
	\psshadowbox[linewidth=1.5pt,fillcolor=blue!10,shadowsize=5pt,shadow=true,shadowcolor=blue!10,
	linecolor=blue,framearc=0.5]{$ \blacktriangleright $ \textbf{Solution de l'exercice \thechapter .\,\arabic{NumeroSolutionNew}~: #1 %\begin{Prof} 
			\label{#1-enon} \hyperref[#1-solu]{$\Rightarrow$ \'Enoncé}
			%\end{Prof}
		}
	}
	\addcontentsline{solnew}{solutionnew}{\protect\numberline{\theNumeroSolutionNew}#1}
	\par%}
}


\section{Exercices~: Réseaux}
\subsection{\'Enoncés}

\exercicenew{Spectromètre à réseau}


\exercicenew{Séparation angulaire}


\exercicenew{Doublet du sodium}


\exercicenew{\'Ecart de longueur d'onde}



\exercicenew{Monochromateur à réseau}


\subsection{Corrigés}

\solutionnew{Spectromètre à réseau}


\solutionnew{Séparation angulaire}

\solutionnew{Doublet du sodium}

\solutionnew{\'Ecart de longueur d'onde}


\solutionnew{Monochromateur à réseau}


\end{document}
Chez moi, seuls les références des exercices 3 et 4 sont cliquables. Bon week-end.
conan
Utilisateur confirmé
Utilisateur confirmé
Messages : 52
Inscription : mardi 21 mars 2006, 10:10

Re: Références exercices

Message non lu par conan »

les accents ne passent pas avec hyperref, d'après le log.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Bien vu ! Je n'avais même pas regardé le log. Du coup, j'ai modifié avec l'ancienne méthode :

Code : Tout sélectionner

\documentclass [fleqn,a4paper,openany]{book}
\usepackage [T1]{fontenc}
\usepackage{amssymb}
\usepackage[usenames,dvipsnames]{pstricks}
\usepackage[bookmarks=true,bookmarksnumbered=true,breaklinks=true,
hypertexnames=false,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref}

\makeatletter
\def\contentsline#1#2#3#4{%
	\ifx\\#4\\%
	\csname l@#1\endcsname{#2}{#3}%
	\else
	\csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{%
		\hyper@linkstart{link}{#4}{#3}\hyper@linkend
	}%
	\fi
}
\makeatother

\begin{document}


\newcounter{NumeroExerciceNew}
\renewcommand{\theNumeroExerciceNew}{\thechapter .\,\arabic{NumeroExerciceNew}}

\newcounter{NumeroSolutionNew}
\renewcommand{\theNumeroSolutionNew}{\thechapter .\,\arabic{NumeroSolutionNew}}

\newif\ifeleve
%\newcounter{NumeroExerciceNew}

\newcommand\exercicenew[1]{%
	\par\medskip%
	\stepcounter{NumeroExerciceNew}%
	\setlength{\parindent}{0cm}%
	\setlength{\hangindent}{0cm}%
	\psshadowbox[linewidth=1.5pt,fillcolor=yellow!30,shadowsize=5pt,shadow=true,shadowcolor=red!20,linecolor=red,framearc=0.5]{$ \blacktriangleright $ \textbf{Exercice \thechapter .\,\arabic{NumeroExerciceNew}~: #1\ifeleve\else\label{#1-solu} \hyperref[#1-enon]{$\Rightarrow$ Corrigé}\fi}}%
	\addcontentsline{exonew}{exercicenew}{\protect\numberline{\theNumeroExerciceNew}#1}%
	\par
}
\newcommand*\seteleve[1]{%
	\elevefalse\ifcsname eleve#1\endcsname\csname eleve#1\endcsname\fi
}



\newcommand{\solutionnew}[1]% 
{% 
	%\hypertarget{#1-enon}{
	\par% 
	\stepcounter{NumeroSolutionNew}% 
	\medskip% 
	\setlength{\parindent}{0cm}% 
	\setlength{\hangindent}{0cm}% 
	\par%
	\psshadowbox[linewidth=1.5pt,fillcolor=blue!10,shadowsize=5pt,shadow=true,shadowcolor=blue!10,
	linecolor=blue,framearc=0.5]{$ \blacktriangleright $ \textbf{Solution de l'exercice \thechapter .\,\arabic{NumeroSolutionNew}~: #1 %\begin{Prof} 
			\label{#1-enon} \hyperref[#1-solu]{$\Rightarrow$ \'Enoncé}
			%\end{Prof}
		}
	}
	\addcontentsline{solnew}{solutionnew}{\protect\numberline{\theNumeroSolutionNew}#1}
	\par%}
}


\section{Exercices~: Réseaux}
\subsection{\'Enoncés}

\exercicenew{Spectrom\`etre \`a r\'eseau}


\exercicenew{S\'eparation angulaire}


\exercicenew{Doublet du sodium}


\exercicenew{\'Ecart de longueur d'onde}



\exercicenew{Monochromateur \`a r\'eseau}


\subsection{Corrigés}

\solutionnew{Spectrom\`etre \`a r\'eseau}


\solutionnew{S\'eparation angulaire}

\solutionnew{Doublet du sodium}

\solutionnew{\'Ecart de longueur d'onde}


\solutionnew{Monochromateur \`a r\'eseau}


\end{document}
Cela fonctionne mais je ne pige pas pourquoi c'était fonctionnel avant et plus maintenant.
Encore plein de trucs à modifier, je vais tenter de faire cela avec un programme python, je pense.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Bon, ben à défaut d'explication et de solution sur ce changement de comportement étrange, je vais lancer mon programme python pour transformer tous les signes accentués de mes titres d’exercices.
conan
Utilisateur confirmé
Utilisateur confirmé
Messages : 52
Inscription : mardi 21 mars 2006, 10:10

Re: Références exercices

Message non lu par conan »

Ce code fonctionne.

Code : Tout sélectionner

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\hyperlink{titi}{tété}
\clearpage
\hypertarget{titi}{titi}
\clearpage
\hyperlink{cote}{côté}
\clearpage
\hypertarget{cote}{cote}
\end{document}
Problème de conflit de package ? D'installation ?
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Désolé, je ne comprends pas le sens de ce dernier message. Le programme précédent fonctionne mais quel intérêt ?
Grâce à un programme python, j'ai remplacé tous les caractères accentués par leur homologue avec "\" et c'est OK.
conan
Utilisateur confirmé
Utilisateur confirmé
Messages : 52
Inscription : mardi 21 mars 2006, 10:10

Re: Références exercices

Message non lu par conan »

c'est que visiblement les accents ne posent pas de soucis avec hyperref. Le problème est à chercher ailleurs, visiblement.
touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : dimanche 11 février 2007, 11:45

Re: Références exercices

Message non lu par touhami »

Bonjour.
C'est un bug de l'extension hyperref qui devra être corrigé par la prochaine version. Il y avait un conflit avec le module utf8.def de l'extension inputenc. (utf8.def fait partie du noyau maintenant).
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Merci, je suis rassuré car je ne comprenais pourquoi tout fonctionnait il y a quelques mois et plus maintenant.
Question subsidiaire : comment sait-on à quel moment le bug est corrigé ?
touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : dimanche 11 février 2007, 11:45

Re: Références exercices

Message non lu par touhami »

Bonjour.
Le problème est déjà réglé sur le dépôt officiel sur GitHub. Mais je ne sais pas quand la nouvelle version sera disponible sur CTAN.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

J'ai la version de CTAN du 27/02/2021 mais en allant sur github, je ne parvins pas à mettre à jour mon hyperref.dtx. Tant pis, je vais attendre puis remettre mes fichiers à l'endroit ensuite. :)
touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : dimanche 11 février 2007, 11:45

Re: Références exercices

Message non lu par touhami »

Bonjour.
Le problème est réglé. Il suffit de mettre à jour le texlive.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Merci, j'ai fait une mise à jour et bingo, de nouvelles erreurs ! Plus rien ne tourne à nouveau chez moi.
Premier problème avec index.sty :

Code : Tout sélectionner

(/usr/local/texlive/2021/texmf-dist/tex/latex/index/index.sty
Package: index 2004/01/20 v4.2beta Improved index support (dmj)

! No room for a new \count .
\ch@ck ...\else \errmessage {No room for a new #3}
                                                  \fi 
l.322 \newinsert\@indexbo
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 983
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message non lu par marco56 »

Bon, c'est confirmé, c'est la mise à jour du package index.sty qui met sa zone.
Je l'utilisais pour :

Code : Tout sélectionner

\makeindex % index général
%\newindex{def}{dex}{ded}{Définitions}
%\newindex{loi}{lox}{lod}{Théorèmes, lois et relations}
%\newindex{pro}{prx}{prd}{Noms propres}
%\newindex{sym}{syx}{syd}{Symboles utilisés}
%\newindex{pyt}{pyx}{pyd}{Index Python}
%\newindex{cpy}{cpx}{cpd}{Commandes Python}
%\newindex{sci}{scx}{scd}{Index Scilab}
%\newindex{cmm}{cmx}{cmd}{Commandes Scilab}
En commentant les newindex et en enlevant bien sûr le \usepackage{index}, tout fonctionne normalement.
On se croirait sous Windows avec des mises à jour qui empêchent le fonctionnement d'anciennes versions. :)