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
3_composition:texte:renvois:underscore_dans_un_label [2017/07/21 06:52]
jejust Créée d'après Stackexchange
3_composition:texte:renvois:underscore_dans_un_label [2021/05/06 23:00] (Version actuelle)
bdumont Correction d'un lien cassé
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 attribuer 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 06:52 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0