Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
composition:texte:renvois:underscore_dans_un_label [2017/07/21 04:52] – Créée d'après Stackexchange 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) does not cause problems, if used inside ''\label'' or ''\ref'':+===== Problème =====
  
 +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 11: 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 />
  
-Also shorthands of package [[ctanpkg>babel]] are not a problembecause babel patches the ''\label''/''\ref'system to add support for shorthands.+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.
  
-===== Active underscore ===== 
  
-Probably you are using package that makes the underscore activeThen it becomes more complicateA workaround is ''\string'' to make the active underscore behave as normal character:+==== Solution simple et généralement suffisante ==== 
 + 
 +L'extension [[ctanpkg>underscore]] redéfinit le tiret bas comme un caractère actif qui 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 /> 
 + 
 + 
 + 
 +==== Solution plus souple mais plus complexe ==== 
 + 
 +Si les effets du tiret bas ont été redéfinis par d'autres extensions avec lesquelles l'extension [[ctanpkg>underscore]] interfère,  
 +on peut, au lieu de charger l'extension [[ctanpkg>underscore]],  utiliser ponctuellement la commande ''\string''
 +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 23: Ligne 114:
 </code> </code>
  
-Also the label name is written into the ''.aux'' file and read again at the end of document. Here the catcode should be restored:+Comme le nom de l'étiquette est également écrit dans le fichier ''.aux''
 +il faut assigner au tiret bas la catégorie (//catcode//) 12 lors de la lecture de ce fichier :
  
 <code latex> <code latex>
Ligne 30: Ligne 122:
 </code> </code>
  
-If the unknown package makes the catcode of the underscore active before ''\begin{document}'', then it should be inactive during the reading of the ''.aux'' file at the end of the preamble.+Si l'extension en question rend le tiret bas actif 
 +avant le ''\begin{document}'', alors il faut qu'il soit inactif 
 +pendant la lecture du fichier ''.aux'' à la fin du préambule.
  
 <code latex> <code latex>
Ligne 39: 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 54: 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, tiret bas, underscore dans les étiquettes,caractères actifs dans les étiquettes, commande \string) 
 +metatag-og:title=(Comment utiliser un tiret bas dans le texte hors du mode mathématique) 
 +metatag-og:site_name=(FAQ LaTeX francophone) 
 +}}
  
3_composition/texte/renvois/underscore_dans_un_label.1500612743.txt.gz · Dernière modification : 2017/07/21 04:52 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0