Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
composition:texte:renvois:underscore_dans_un_label [2017/07/22 09:16] – Mots-clefs OpenGraph. jejust3_composition:texte:renvois:underscore_dans_un_label [2022/07/12 13:57] (Version actuelle) – [Solution simple et généralement suffisante] '\' → ''\'' dbitouze
Ligne 1: Ligne 1:
-====== Comment utiliser un underscore dans un \label ? ======+====== Comment utiliser un tiret bas dans le texte hors du mode mathématique? ======
  
-Usually the underscore with its standard catcode "subscript" (8) +===== Problème =====
-does not cause problems, if used inside ''\label'' or ''\ref'':+
  
 +Par défaut, le tiret bas (''_'') se voit attribué le //catcode// 8, [[2_programmation:syntaxe:catcodes:liste_des_catcodes|qui introduit les indices en mode mathématique]]. Si vous l'utilisez tel quel dans votre document, il est fort probable que vous obteniez une [[2_programmation:erreurs:m:missing_dollar_inserted|erreur “Missing $ inserted”]].
 +
 +===== Comment faire pour le tiret bas soit traité comme un caractère normal =====
 +
 +==== Cas où le tiret bas est considéré comme un caractère normal sans ajout d'extensions ====
 +
 +Le tiret bas est considéré par défaut comme un caractère normal dans les arguments de :
 +  * ''\label''
 +  * ''\ref''
 +  * ''\input''
 +  * ''\include''
 +  * ''\includegraphics''
 +  * ''\begin'' et ''\end''
 +  * compteurs
 +  * paramètres de placement (comme ''[t]'').
 +
 +Par exemple:
 +
 +<WRAP column 40ex>
 <code latex> <code latex>
 \documentclass{article} \documentclass{article}
Ligne 12: Ligne 30:
 \end{document} \end{document}
 </code> </code>
 +</WRAP>
 +<WRAP column 30ex>
 +<latexdoc>
 +\documentclass{article}
 +\pagestyle{empty}
 +\begin{document}
 +\section{Hello World}
 +\label{sec_hello}
 +See section 1.
 +\end{document}
 +</latexdoc>
 +</WRAP>
 +<WRAP clear />
 +
 +Si vous rencontrez quand même le message d'erreur indiqué quand vous utilisez un tiret bas dans un de ces cas,
 +vous utilisez sans doute
 +une extension qui modifie le comportement du tiret bas (autre que [[ctanpkg>babel]], qui ne pose pas de problèmes). 
 +Dans ce cas, vous devez appliquer l'une des solutions suivantes.
 +
 +
 +==== Solution simple et généralement suffisante ====
 +
 +L'extension [[ctanpkg>underscore]] redéfinit le tiret bas comme un caractère actif qui a le comportement suivant :
 +  * En mode mathématique, pas de changement (introduit un caractère  en indice) ;
 +  * Dans le corps du texte, affiche un tiret bas ;
 +  * S'il est précédé du caractère ''\'', affiche un tiret bas après lequel il est possible de faire une coupure de mots.
 +
 +Dans la plupart des cas, cela correspond à l'effet souhaité. Cependant, la redéfinition du tiret bas par [[ctanpkg>underscore]] a pour conséquence
 +qu'il n'est plus considéré comme un caractère normal [[3_composition:texte:renvois:underscore_dans_un_label#cas_ou_le_tiret_bas_est_considere_comme_un_caractere_normal_sans_ajout_d_extensions|dans les cas où il devrait être considéré comme tel]]. Ce problème est résolu en grande partie si vous chargez [[ctanpkg>babel]],
 +ou de manière plus limitée en utilisant l'options ''[strings]'' de [[ctanpkg>underscore]]. Pour plus de détails, veuillez vous référer à la [[texdoc>underscore|documentation]], particulièrement p. 2.
 +
 +<WRAP column 65ex>
 +<code latex>
 +\documentclass{article}
 +
 +\usepackage[french]{babel}
 +\usepackage{underscore}
 +
 +\begin{document}
 +
 +\section{Le fichier test_tiret-bas.pdf}
 +\label{sec_tiret}
 +Nous étudions ici le fichier test_tiret-bas.pdf.
 +
 +\section{Autre section}
 +Voir la section \ref{sec_tiret}.
 +
 +\end{document}
 +</code>
 +</WRAP>
 +<WRAP column 30ex>
 +<latexdoc>
 +\documentclass{article}
 +
 +\usepackage[french]{babel}
 +\usepackage{underscore}
 +
 +\pagestyle{empty}
 +\begin{document}
 +\section{Le fichier test\string_tiret-bas.pdf}
 +\label{sec_hello}
 +Nous étudions ici le fichier test\string_tiret-bas.pdf.
 +
 +\section{Autre section}
 +Voir la section 1.
 +\end{document}
 +</latexdoc>
 +</WRAP>
 +<WRAP clear />
 +
  
-Also shorthands of package [[ctanpkg>babel]] are not a problem, 
-because babel patches the ''\label''/''\ref'' system to add 
-support for shorthands. 
  
-===== Active underscore =====+==== Solution plus souple mais plus complexe ====
  
-Probably you are using a package that makes the underscore active. +Si les effets du tiret bas ont été redéfinis par d'autres extensions avec lesquelles l'extension [[ctanpkg>underscore]] interfère,  
-Then it becomes more complicate. A workaround is ''\string'' +on peut, au lieu de charger l'extension [[ctanpkg>underscore]],  utiliser ponctuellement la commande ''\string'', 
-to make the active underscore behave as normal character:+qui indique que le caractère qui suit immédiatement doit être traité comme un caractère normal 
 +(plus précisément, de la catégorie 12).
  
 <code latex> <code latex>
Ligne 28: Ligne 114:
 </code> </code>
  
-Also the label name is written into the ''.aux'' file and +Comme le nom de l'étiquette est également écrit dans le fichier ''.aux'', 
-read again at the end of document. +il faut assigner au tiret bas la catégorie (//catcode//) 12 lors de la lecture de ce fichier :
-Here the catcode should be restored:+
  
 <code latex> <code latex>
Ligne 37: Ligne 122:
 </code> </code>
  
-If the unknown package makes the catcode of the underscore active +Si l'extension en question rend le tiret bas actif 
-before ''\begin{document}'', then it should be inactive +avant le ''\begin{document}'', alors il faut qu'il soit inactif 
-during the reading of the ''.aux'' file at the end of the preamble.+pendant la lecture du fichier ''.aux'' à la fin du préambule.
  
 <code latex> <code latex>
Ligne 48: Ligne 133:
 </code> </code>
  
-The complete example:+Voici le code complet de l'exemple:
  
 +<WRAP column 45ex>
 <code latex> <code latex>
 \documentclass{article} \documentclass{article}
Ligne 63: Ligne 149:
 \fi \fi
 \begin{document} \begin{document}
-\section{Hello World+\section{Bonjour !
-\label{sec\string_hello+\label{sec\string_bonjour
-See section \ref{sec\string_hello}.+Voir section \ref{sec\string_bonjour}.
 \end{document} \end{document}
 </code> </code>
- +</WRAP> 
-===== Package underscore ===== +<WRAP column 30ex
- +<latexdoc>
-Depending on the package that makes the underscore active, +
-the scope of the activeness and the definition of the underscore, +
-there might be more comfortable ways. +
-For example, package [[ctanpkg>underscore]] makes the underscore active +
-and that breaks the referencing system. But the package supports babel. +
-The underscore behaves as shorthand and is supported, if babel is loaded: +
- +
-<code latex>+
 \documentclass{article} \documentclass{article}
- +\pagestyle{empty}
-\usepackage[english]{babel} +
-\usepackage{underscore} +
 \begin{document} \begin{document}
-\section{Hello World+\section{Bonjour !
-\label{sec_hello+\label{hello
-See section \ref{sec_hello}.+Voir section 1.
 \end{document} \end{document}
-</code>+</latexdoc> 
 +</WRAP> 
 +<WRAP clear /> 
  
 ----- -----
-//Source:// [[https://tex.stackexchange.com/questions/121416/putting-an-underscore-in-a-label]]+//Sources:// 
 +  * [[https://tex.stackexchange.com/questions/121416/putting-an-underscore-in-a-label|Putting an underscore in a “\label”]]
 +  * [[texdoc>underscore|documentation de l'extension underscore]].
  
-{{htmlmetatags>metatag-keywords=(LaTeX,références,underscore,trait de soulignement,underscore dans les étiquettes,caractères actifs dans les étiquettes) +{{htmlmetatags>metatag-keywords=(LaTeX,références,underscore,trait de soulignement, tiret bas, underscore dans les étiquettes,caractères actifs dans les étiquettes, commande \string
-metatag-og:title=(Comment utiliser un underscore dans un \label ?)+metatag-og:title=(Comment utiliser un tiret bas dans le texte hors du mode mathématique)
 metatag-og:site_name=(FAQ LaTeX francophone) metatag-og:site_name=(FAQ LaTeX francophone)
 }} }}
  
3_composition/texte/renvois/underscore_dans_un_label.1500715019.txt.gz · Dernière modification : 2017/07/22 09:16 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0