Avec Cependant celle-ci perturbe la rupture de ligne. Voir l'exemple ci-dessous (compilé avec XeLaTeX). Ouvrir dans l'éditeur
\documentclass[a4paper]{book} \usepackage[a4paper]{geometry} \usepackage{polyglossia,fontspec,hyperref} \setmainfont{Linux Libertine O} \setmainlanguage{greek} \makeatletter \newcommand\test{6. Καὶ δὴ τῷ κράτει \edtext{τοῦ} \edtext{συγγενέος} \edtext{ἐπιθαρσήσας}, \edtext{οὐμενοῦν} \edtext{εἴ τι} καὶ \edtext{δέοι} παθεῖν δείσας καλὴν ἑαυτῷ τῆς εἰς Χριστὸν πίστεως, τὴν ἐν \edtext{Γράμματι} νομοθεσίαν, ὑποβάθραν \edtext{προύθηκεν}. \edtext{Περιτυχὼν} γὰρ \edtext{τῶν}, \edtext{Μωσαικῶν} \edtext{βιβλίων}, καὶ \edtext{τῆς Ἐβραίων ἁπάσης Γραφῆς}, καὶ τούτοις ὡς μάλιστα φιλομαθῶς \edtext{ἐναπασχολήσας}τὸν νοῦν, καὶ \edtext{ὅλος} \edtext{ὅλῳ} στοιχειωθεὶς,} \begin{document} \section{Good} \def\edtext#1{#1} \test \section{Bad} \def\edtext#1{\Hy@raisedlink{}#1\Hy@raisedlink{}} \test \section{Better} \def\edtext#1{\Hy@raisedlink{}\hspace{0pt}#1\Hy@raisedlink{}\hspace{0pt}} \test \section{Ok?} \def\edtext#1{\Hy@raisedlink{}\hspace{0pt}#1\Hy@raisedlink{}} \test \end{document} Y a-t-il une manière d'avoir l'équivalent de
Affichage de 5 parmi 9
Afficher 4 commentaire(s) en plus
|
J'essaie encore une dernière fois, en espérant que cela convienne ! Sauf erreur de ma part, incompétence ou truc qui est évident et qui m'échappe, je crois qu'il n'est pas possible d'utiliser la même macro pour l'ancre de gauche et l'ancre de droite si l'on veut préserver les espacements et coupures par rapport à un texte sans ancres. L'ECM fourni par le PO ne contient que des ancres vides, c'est-à-dire ne prenant aucun place horizontale. Dans la vraie vie, il en serait autrement, bien sûr. Je propose donc une macro Ouvrir dans l'éditeur
\documentclass[a4paper]{book} \usepackage[a4paper]{geometry} \usepackage{polyglossia,fontspec,hyperref,xcolor} \setmainfont{Linux Libertine O} \setmainlanguage{greek} \makeatletter \def\Hy@raisedlink@left#1{% \ifvmode #1% \else \Hy@SaveSpaceFactor \llap{\smash{% <-- "\llap{" a été ajouté \begingroup \let\HyperRaiseLinkLength\@tempdima \setlength\HyperRaiseLinkLength\HyperRaiseLinkDefault \HyperRaiseLinkHook \expandafter\endgroup \expandafter\raise\the\HyperRaiseLinkLength\hbox{% \Hy@RestoreSpaceFactor #1% \Hy@SaveSpaceFactor }% }}% une "}" a été ajoutée pour fermer la \llap \Hy@RestoreSpaceFactor \penalty\@M\hskip0pt \fi } \newcommand\test{6. Καὶ δὴ τῷ κράτει \edtext{τοῦ} \edtext{συγγενέος} \edtext{ἐπιθαρσήσας}, \edtext{οὐμενοῦν} \edtext{εἴ τι} καὶ \edtext{δέοι} παθεῖν δείσας καλὴν ἑαυτῷ τῆς εἰς Χριστὸν πίστεως, τὴν ἐν \edtext{Γράμματι} νομοθεσίαν, ὑποβάθραν \edtext{προύθηκεν}. \edtext{Περιτυχὼν} γὰρ \edtext{τῶν}, \edtext{Μωσαικῶν} \edtext{βιβλίων}, καὶ \edtext{τῆς Ἐβραίων ἁπάσης Γραφῆς}, καὶ τούτοις ὡς μάλιστα φιλομαθῶς \edtext{ἐναπασχολήσας}τὸν νοῦν, καὶ \edtext{ὅλος} \edtext{ὅλῳ} στοιχειωθεὶς,} \begin{document} \HyperRaiseLinkDefault=1ex % <-- à supprimer dans la vraie vie \section{Good} \def\edtext#1{#1} \test \section{Bad} \def\edtext#1{\Hy@raisedlink@left{\color{red}\tiny1}#1\Hy@raisedlink{}} \test \end{document} Voici le résultat : Publiée 10 Déc '15, 14:13 unbonpetit ♦♦ « L'ECM fourni par le PO » : ECM signifie exemple complet minimal, soit. Mais PO ?
(10 Déc '15, 14:46)
Pathe ♦♦
« c'est-à-dire ne prenant aucun place horizontale. Dans la vraie vie, il en serait autrement, bien sûr » : non, justement, cela sera aussi des ancres vides ;-). En fait je veux pointer sur « le début d'un passage ».
(10 Déc '15, 14:50)
Maïeul
En tout cas le test sur le MWE est positif et correspond à mes besoins. Reste à voir « dans la vraie vie » si l'on pointe au bon endroit. Je ferai des tests dans les jours qui viennent.
(10 Déc '15, 14:54)
Maïeul
MWE ? Diantre ! Qu'est-ce donc ?
(10 Déc '15, 15:26)
Pathe ♦♦
2
@Pathe « PO » = « Post Original » venant de l'anglo-saxon « OP » = « Original Post » à moitié francisé : on devrait dire « AO » pour « Article Original » mais personne n'y comprendrait rien :)
(10 Déc '15, 18:24)
denis ♦♦
1
@Pathe je pense que
(10 Déc '15, 18:56)
touhami
Bon, mon test en pratique a l'air bon ;-) J'attends encore le retour d'un utilisateur sur ses propres fichiers.
(12 Déc '15, 21:40)
Maïeul
@Maïeul : merci pour le retour, j'ai donc eu raison de persévérer. La prochaine fois, je traduirai les acronymes anglais, c'est plus facile, plus rapide et cela rapporte plus de votes positifs !
(12 Déc '15, 21:45)
unbonpetit ♦♦
Et donc les tests en réel s'avèrent réussis ;-). Merci encore.
(13 Déc '15, 12:52)
Maïeul
Affichage de 5 parmi 10
Afficher 5 commentaire(s) en plus
|
Voici une solution possible, qui insère des Ouvrir dans l'éditeur
\documentclass[a4paper]{book} \usepackage[a4paper]{geometry} \usepackage{polyglossia,fontspec,hyperref} \setmainfont{Linux Libertine O} \setmainlanguage{greek} \makeatletter \def\Hy@raisedlink#1{% \ifvmode #1% \else \Hy@SaveSpaceFactor \hskip\z@ \smash{% \begingroup \let\HyperRaiseLinkLength\@tempdima \setlength\HyperRaiseLinkLength\HyperRaiseLinkDefault \HyperRaiseLinkHook \expandafter\endgroup \expandafter\raise\the\HyperRaiseLinkLength\hbox{% \Hy@RestoreSpaceFactor #1% \Hy@SaveSpaceFactor }% }% \Hy@RestoreSpaceFactor \hskip\z@ \fi } \newcommand\test{6. Καὶ δὴ τῷ κράτει \edtext{τοῦ} \edtext{συγγενέος} \edtext{ἐπιθαρσήσας}, \edtext{οὐμενοῦν} \edtext{εἴ τι} καὶ \edtext{δέοι} παθεῖν δείσας καλὴν ἑαυτῷ τῆς εἰς Χριστὸν πίστεως, τὴν ἐν \edtext{Γράμματι} νομοθεσίαν, ὑποβάθραν \edtext{προύθηκεν}. \edtext{Περιτυχὼν} γὰρ \edtext{τῶν}, \edtext{Μωσαικῶν} \edtext{βιβλίων}, καὶ \edtext{τῆς Ἐβραίων ἁπάσης Γραφῆς}, καὶ τούτοις ὡς μάλιστα φιλομαθῶς \edtext{ἐναπασχολήσας}τὸν νοῦν, καὶ \edtext{ὅλος} \edtext{ὅλῳ} στοιχειωθεὶς,} \begin{document} \section{Good} \def\edtext#1{#1} \test \section{Bad} \def\edtext#1{\Hy@raisedlink{}#1\Hy@raisedlink{}} \test \end{document} Voici comment sont modifiées les coupures : Publiée 09 Déc '15, 22:56 unbonpetit ♦♦ Pathe ♦♦ |
Lorsque
\Hy@raisedlink{}
précède un mot, la pénalité maximale de 10000 qu'elle insère (voir ligne 2523 du packagehyperref
) décourage toute coupure du mot, c'est ce qui crée des dépassements dans la marge de droite. Sauf erreur de ma part, cela est voulu puisque cette macro a vocation à agir après un mot et non pas avant.Pour quelle raison vouloir mettre un ancre avant un mot ? En définissant
\def\edtext#1{#1\Hy@raisedlink{}}
, aucun problème n’apparaît.Je désire insérer une ancre avant un mot pour renvoyer vers le début d'un passage, et non vers la fin d'un passage. C'est tout à fait logique.
Dans ce cas, il faut redéfinir
\Hy@raisedlink{}
en mettant des\hskip
nuls avant et après le\smash
et il faut enlever la pénalité.OK. Je vais faire des tests. J'avais bien pensé au
\penalty\@M
mais pas au\hskip
nul. Mais cela ne sera pas une redéfinition, mais une nouvelle commande, car j'ai aussi parfois besoin de mettre le\Hy@raisedlink{}
en fin de mot.Je mets une réponse en attendant tes tests. Je l'effacerai si besoin.
Je dis peut être une bêtise, mais n'y a-t-il pas moyen de tester la présence d'un espace avant ? Si oui on met un unskip suivi d'un
\
?Quelque chose comme
\newskip\toto s \toto=\lastskip\unskip\hskip\toto a\bye
J'ai découvert que cette question a déjà été posée 2 jours auparavant sur stackexchange et me permets de le signaler.
Comme sévissent là-bas des gens beaucoup plus compétents que moi, je retire mes piètres contributions ici.
En même temps tu es le seul à avoir réagi ;-)