| J'ai cru comprendre au travers de la définition de la commande  La commande  Mais justement, si l'on souhaite utiliser la boîte  Ouvrir dans l'éditeur \newbox\@@labels \def\sv@labels{\setbox\@@labels\box\@labels} \def\r@labels{\setbox\@labels\box\@@labels} \output\expandafter{\expandafter\sv@labels\the\output\r@labels} 
    
        
            Affichage de 5 parmi 21
        
        Afficher 16 commentaire(s) en plus
    
    
 | 
| Merci pour votre réponse. Je viens de rentrer, je vais regarder plus attentivement mais d'emblée plusieurs choses me dérangent : 
 La placer dans la boîte  À noter que l'on peut contourner le problème par diverses méthodes « simples ». Je me permets de mentionner le lien suivant : http://tex.stackexchange.com/questions/14000/enumerate-after-label Utiliser le package  Comme je le disais plus tôt, je pense avoir une solution autour des seules commandes  Merci pour votre aide. Comme vous avez déjà déclaré redéfinir  De H. O. ? Pourriez-vous être plus clair ? | 
 
			 
  
Tel quel, votre code n'est pas vraiment compréhensible... Sinon, quel est l'objectif réel derrière tout ça ?
Pardon mais les contre-obliques ne sont pas sorties...
L'objectif réel est de bricoler un peu le package hyperref pour les environnements de théorèmes. Je me disais que peut-être les ancres pourraient être placées à l'intérieur de la boîte @labels...
@bcfp Attention ! Les contre-obliques (
\) saisies telles quelles dans les contributions ne sont pas visibles.Pour insérer du
⟨code⟩, notamment des commandes LaTeX, le mieux est de recourir au raccourci Ctrl+k (dans les questions et réponses) et à`⟨code⟩`(dans les commentaires).Cf., au sein de la FAQ, le paragraphe « Comment mettre en forme ma contribution ? »
@bcfp Pourquoi ne pas exposer plus clairement votre besoin réel, plutôt que de poser une question sur ce que vous croyez être la solution ? À mon avis, l'ajout d'ancres hyperref dans l'environnement
theorem(ou autres) ne passe absolument pas par une modification de la routine de sortie...@Pathe Merci, je n'avais pas vu le paragraphe sur le code, je vais essayer de m'améliorer !
@PaulGaborit Je ne comprends pas, je me demandais juste si cette méthode utilisée notamment pour l'option
excludeordu packageeveryhookétait valable (l'auteur de ce package parle d'option plutôt expérimentale) et si elle pouvait être utilisée autour de la boîte\@labels.Dans l'affirmative, les ancres des théorèmes et
itemdehyperrefpourraient y être placées, juste une idée. En particulier, unamsthmqui démarre par une liste ne serait plus un problème. Mais si la boîte\@labelscontient une ancre alors que TeX appelle la routine de sortie...\@labels(box) est utilisé par\itempour stocker l'étiquette (label) et ceci juste pour un petit moment (avant que latex commence la composition de paragraphe), donc si vous voulez sauvegarder son contenue la bonne place est lors ou juste après\itemsinon il sera trop tard.@touhami Je crois que la commande
\@itemest construite de sorte que\@labelsest vide lorsque TeX appelle la routine de sortie. La commande\itempeut donc, sans problème, être appelée pour un pied pied de page.Mais supposons que l'on demande à la commande
\refstepcounterqui intervient dans le texte de remplacement de\@thm(ltthm.dtx) de placer une ancre dans\@labels; comme\refstepcounterintervient avant\item[...]lors d'un\begin{thm}, il est possible que TeX appelle la routine au niveau du\addpenalty\@beginparpenaltyalors que\@labelsn'est pas vide !D'ailleurs, il me semble qu'à cette heure la situation suivante peut se produire :
\begin{thm}entraîne via\refstepcounterle dépôt d'une ancre dans la liste verticale, avant\item[...]; donc si TeX coupe au niveau du\@beginparpenalty, le théorème se trouve sur une page et le lien renvoie à la page précédente.Sauf si l'on utilise
amsthm; en effet,hyperrefplace alors l'ancre viaeveryparjuste avant\unhbox\@labels. Mais c'est alors problématique si l'on souhaite commencer un théorème par une liste (car le\itemde la liste redéfinieveryparet adieu l'ancre...).c'est plus clair maintenant.
J'ai relu hier soir la documentation du package
everyhooket l'auteur précise (je n'avais pas vu) que son optionexcludeorbasée sur la méthode\output\expandafter{\expandafter\save\expandafter\the\output\restore}peut aider à éviter les catastrophes mais peut poser problème avec d'autres packages qui modifient également la routine.Donc à éviter autant que possible, je ne sais pas...
Je pensais à une autre façon en ajoutant un interrupteur dans
\@thmet en revoyant les définitions de\item,\refstepcounteret\hyper@refstepcounterdonnées parhyperref, mais c'est lourd.Voulez-vous utiliser
amsthmou non? Dans les deux cas pas besoin de modifier\output.@bcfp Encore une fois, votre question n'est pas claire car vous n'expliquez toujours pas à quoi tout cela doit servir au final !
@bcfp Je souscris aux remarques de @Paul Gaborit : la demande est obscure et j'ai l'impression que tu cherches midi à 14 heures !
Je cherche une méthode pour pallier le défaut mentionné entre autres sur le site
tex.stackexchange(lien après la réponse de touhami).Des intervenants proposent diverses méthodes de contournements : utiliser
ntheoremplutôt queamsthmou encore utiliser la commande\phantomsection.Puis l'auteur du package
hyperrefrevient sur l'utilisation de\phantomsectionen invoquant la commande\autorefet propose une solution locale.En plus de ce problème lié à l'utilisation de
amsthm(un problème d'ailleurs mentionné dans la notice de ce package), si l'on utilise le packagentheorem, je crois qu'il est possible que TeX appelle la routine de sortie entre le moment oùhyperrefdépose l'ancre et le moment où la boîte\@labelscontenant l'étiquette est posée (au niveau du\addpenalty\@beginparpenaltyqui apparaît dans le texte de remplacement de\@item), donc éventuellement de se retrouver avec un théorème écrit sur une page et un lien qui renvoie à la page précédente. Non ?Je me disais alors que peut-être
hyperrefpourrait déposer les ancres desitemet théorèmes à l'intérieur de la boîte\@labels, ce qui réglerait peut-être tous ces soucis...Mais, en revenant sur l'utilisation du package
ntheorem, si l'on dépose l'ancre du théorème dans la boîte\@labelsau niveau du\refstepcounter, rebelote, TeX peut appeler la routine de sortie au niveau du\addpenalty\@beginparpenaltyde la commande\@itemalors que la boîte\@labelsn'est pas vide, ce qui est gênant car unitemen pied de page par exemple va dire (via\@item) :\global\setbox\@labels\hbox{**\unhbox\@labels**...}!D'où ma question initiale : la méthode autour de
\outputque j'ai mentionnée au tout début, une méthode que je tire du packageeveryhook, vous semble-t-elle acceptable ?Mais finalement je crois que l'on peut faire autrement, s'arranger pour mettre l'ancre dans la boîte
\@labelsaprès le\addpenalty\@beginparpenaltyet éviter un recours à cette manipulation.C'est peut-être chercher midi à 14h effectivement, je ne sais pas...
En tout cas merci pour vos réponses et commentaires.
@bcfp Je vous suggère d'intégrer dans votre question tous les éléments d'information dispersés dans vos commentaires afin que la question soir claire et complète (le contexte, l'objectif, les solutions envisagées, etc.). Ensuite, nous pourrons supprimer tous les commentaires et tenter de répondre...