Références exercices

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté par le forum via les balises tex.

Modérateur : gdm_tex

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 : 964
Inscription : jeudi 25 novembre 2010, 22:10

[Résolu] Références exercices

Message 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 : 445
Inscription : dimanche 11 février 2007, 11:45

Re: Références exercices

Message par touhami »

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

Re: Références exercices

Message 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 : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message 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 : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message 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 : 51
Inscription : mardi 21 mars 2006, 10:10

Re: Références exercices

Message par conan »

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

Re: Références exercices

Message 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 : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message 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 : 51
Inscription : mardi 21 mars 2006, 10:10

Re: Références exercices

Message 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 : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message 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 : 51
Inscription : mardi 21 mars 2006, 10:10

Re: Références exercices

Message 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 : 445
Inscription : dimanche 11 février 2007, 11:45

Re: Références exercices

Message 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 : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message 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 : 445
Inscription : dimanche 11 février 2007, 11:45

Re: Références exercices

Message 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 : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Références exercices

Message 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. :)