Erreurs restantes dans un document tex — Les-mathematiques.net The most powerful custom community solution in the world

Erreurs restantes dans un document tex

Bonjour à tous,

J'ai quasiment fini de taper un gros document en Tex (merci pour l'aide que vous m'avez déjà apportée dans des posts antérieurs), et il me reste quelques "problèmes". Pour les problèmes pour lesquels il y a déjà un post, j'écrirai sur le post concerné, et je rassemble ici les questions restantes que je n'ai pas encore posées afin d'éviter d'ouvrir trop de nouveaux posts (donc ce post ne tourne pas autour d'un seul sujet comme c'est le cas la plupart du temps).

J'ai pour l'instant compté 5 nouveaux problèmes que j'ai rassemblés dans le code suivant (désolé s'il n'est pas minimal: je suis parti du "gros" document original qui a un énorme préambule, puis j'ai éliminé ce qui me semblait inutile, mais il reste peut-être encore des choses superflues):
\documentclass[a4paper,8pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{colonequals}
\usepackage{textcomp}
\usepackage{amsthm}
\usepackage{float}
\usepackage[francais]{babel}
\usepackage{bm}
\usepackage{xcolor}

\setlength{\parindent}{0pt}

\setcounter{tocdepth}{5}
\setcounter{secnumdepth}{5}
\setcounter{MaxMatrixCols}{20}

\renewcommand{\thesection}{\arabic{chapter}.\arabic{section}.}
\renewcommand{\thesubsection}{\arabic{chapter}.\arabic{section}.\arabic{subsection}.}
\renewcommand{\thesubsubsection}{\arabic{chapter}.\arabic{section}.\arabic{subsection}.\arabic{subsubsection}.}

\allowdisplaybreaks[2]



\begin{document}

\setcounter{chapter}{2}
\chapter{Titre du chapitre}

\section{Trois premiers problèmes: titre de chapitre/section/sous-section volontairement trop long pour tenir sur une seule ligne lorsqu'affiché en haut d'une page, le point en trop après le numéro de section en haut des pages et utilisation du symbole $\%$ pas en gras dans un titre de section}

\newpage

Quatrième problème: façon simple (et visuellement "agréable") de faire  \textit{\textcolor{blue}{\textbf{un texte en bleu, gras et italiques s'il contient un symbole mathématique comme un ensemble } $\bm{F}$ \textbf{ou un truc plus "compliqué" du style } $\bm{f \colonequals s_{//,G}}$}} \textit{\textcolor{blue}{\textbf{ sans changer d'environnement à chaque fois?}}}\\

\newpage




Cinquième problème: comment faire des lettres minuscules calligraphiées comme sur la photo attachée (voilà ci-dessous ce qu'il se passe quand j'essaye avec "mathcal")?
\[ \mathcal{Inv}_d (A) \]

\end{document}

Quelques explications.

Problème 1: si un titre de section est trop long, il n'est pas affiché entièrement en haut des pages. Comment résoudre ce problème?

Problème 2: J'ai voulu rajouter un point à la fin du numéro de chaque section. Je veux garder cette modification, mais en revanche cela crée un point en trop dans le numéro de la section lorsqu'il est rappelé en haut des pages (cf photos). Comment résoudre cela?

Problème 3: si un titre de section contient des symboles mathématiques (comme par exemple "$\%$"), comment faire pour que ces symboles soient aussi affichés en gras dans le titre de section (je me trompe peut-être mais j'ai l'impression qu'il n'est pas en gras)?

Problème(s) 4: je veux mettre en bleu, gras et italiques un texte comprenant des symboles mathématiques et du texte normal. J’alterne dans mon code entre les environnements textbf et bm. Y a-t-il un moyen plus simple (un même environnement qui ferait le texte ET les maths en gras)? De plus, pour les maths, certains symboles n'ont pas l'air d'être en gras... peut-on régler cela (et est-ce une bonne idée)? Enfin, j'ai l'impression que la combinaison "bleu+gras+italiques" donne un rendu "assez moche" sur le pdf (comparé à d'autres logiciels d'écriture mathématique où cette combinaison donne un rendu assez élégant). Est-ce qu'il y a effectivement un problème de rendu (là peut-être subjectif: selon les goûts de chacun), et si effectivement vous trouvez vous aussi le rendu pas génial peut-on l'améliorer?


Problème 5: je cherche à définir l'ensemble des inverses à droite d'une matrice comme sur la photo jointe d'un fichier Mathematica: "$Inv_d (A)$" avec "Inv" en lettres calligraphiées ("I" majuscule suivi de deux minuscules). J'ai essayé de plusieurs façons, mais aucune n'a marché (je vous ai mis dans le document le résultat le plus inattendu que j'ai obtenu). Comment peut-on faire?

J'ai joint des photos ci-dessous avec des indications en rouge (désolé pour ma tentative d'écriture manuelle sur ordi avec la souris...).

Désolé aussi s'il ça fait pas mal de questions. J'ai tout regroupé ici pour éviter d'ouvrir 50 posts différents (si ça aurait été mieux, dîtes-le moi).


Je vous remercie d'avance pour votre aide!126426
126428
126430
126432

Réponses

  • 1) Utiliser l'argument optionnel de \section. Le titre entre crochets va dans la table des matières et les en-têtes. Pour n'affecter que les en-têtes, il est possible de modifier temporairement \sectionmark (voir exemple ci-dessous). Pour un chapitre, il faudrait modifier \chaptermark, etc.

    2) Ne surtout pas mettre le point dans \thesection, car c'est utilisé par \ref donc pourrait se retrouver en plein milieu d'une phrase. Le compteur au début d'un titre est formaté avec \@seccntformat (voir exemple de redéfinition ci-dessous).

    3) et 4) Par défaut, les commandes \bfseries et \textbf ne touchent pas à la graisse dans les formules mathématiques, car la graisse d'un symbole mathématique peut changer son sens. Notamment, il me semble qu'il est courant en physique d'utiliser des lettres grasses pour représenter les « vecteurs ». On peut utiliser \mathversion{bold} et \mathversion{normal}, mais certains symboles ne changeront pas (grands opérateurs pris dans la police mathématique d'extension comme \sum...).

    5) Sauf à utiliser unicode-math ou quelque chose du même genre, \mathcal ne peut produire que 26 lettres différentes, pas 52. Par défaut, ce sont des capitales. Pour comprendre, réaliser que \mathcal écrit sont contenu avec la police de symboles (cmsy, \fam2 en principe) qui a les capitales calligraphiées dans les mêmes positions que les lettres de A à Z dans le codage ASCII. Voir 'texdoc encguide' page 33 (codage OMS, police cmsy10 donnée en exemple). Il n'y a pas de place pour les minuscules calligraphiées dans OMS. Les codes ASCII de 'n' et 'v' étant respectivement 6E et 76 en hexadécimal, cette table permet de comprendre pourquoi \mathcal{Inv} produit $\mathcal{I} \setminus \sqsubseteq$.

    Cela dit, le package unicode-math, qui nécessite un moteur Unicode, semble lever cette limitation ; mais après, tout dépend de la police (ci-dessous, seule \mathscr donne des minuscules différentes des minuscules « normales » du mode math.) :
    % -*- mode: LaTeX; TeX-engine: luatex; -*-
    \documentclass[a4paper,12pt]{article}
    \usepackage{unicode-math}
    
    \setmainfont{TeX Gyre Pagella}  % affecte \operator@font !
    \setmathfont{TeX Gyre Pagella Math}
    
    \makeatletter
    \newcommand*{\Invd}{%
      \mathop{\mathscr{Inv}_d}%
    }
    % Cela me semble plus lisible :
    \newcommand*{\invd}{%
      \mathop{\operator@font {Inv}_{\mkern -2mu d}}%
    }
    \makeatother
    
    \begin{document}
    
    \[
      \begin{array}{l}
        \mathcal{Inv} \; Inv \\
        \Invd(A) \\
        \invd(A)
      \end{array}
    \]
    
    \end{document}
    
    Pourquoi \mathcal utilise-t-il le codage OMS si unicode-math n'est pas activé ? Parce que Knuth a laissé 26 slots pour cela dans ce codage et que procéder ainsi permet de rester en mode maths, ce qui est bien pour garder le style courant (\displaystyle ou \textstyle pour la taille de base, \scriptstyle pour les indices et exposants de niveau 1, \scriptscriptstyle pour ceux de niveau 2)... et autres subtilités. Mais vu l'usage que j'imagine pour cet opérateur (sans doute jamais en indice ni exposant), on pourrait peut-être le définir avec une police texte contenant les lettres souhaitées : \mathop{\mbox{...}}. Il faut seulement mettre la bonne police texte dans le « ... » et ajouter l'indice 'd' dans le \mathop après le \mbox{...} (police à choisir encore...).

    Le document initial modifié :
    \documentclass[a4paper,french]{book}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    \usepackage{amsmath}
    \usepackage{colonequals}
    \usepackage{xcolor}
    
    \setlength{\parindent}{0pt}
    
    \setcounter{tocdepth}{5}
    \setcounter{secnumdepth}{5}
    
    \makeatletter
    \renewcommand*{\@seccntformat}[1]{\csname the#1\endcsname.\quad}
    \makeatother
    
    \newenvironment{GrasBleuIt}
      {%
        \leavevmode\color{blue}%
        \itshape\bfseries
        \mathversion{bold}%
        \ignorespaces
      }
      {\unskip}
    
    \begin{document}
    
    \setcounter{chapter}{2}
    \chapter{Titre du chapitre}
    
    \let\sectionmarkORI\sectionmark
    \renewcommand*{\sectionmark}[1]{%
      \markright{\MakeUppercase{\ifnum\value{secnumdepth}>0 \thesection. \ \fi
                 Titre alternatif pour l'en-tête}}%
    }%
    \section{\mathversion{bold}%
      Trois premiers problèmes: titre de chapitre/section/sous-section
      volontairement trop long pour tenir sur une seule ligne lorsqu'affiché en
      haut d'une page, le point en trop après le numéro de section en haut des
      pages et utilisation du symbole $\%$ pas en gras dans un titre de section}%
    \let\sectionmark\sectionmarkORI
    
    \newpage
    
    Quatrième problème: façon simple (et visuellement “agréable”) de faire
    \begin{GrasBleuIt}
    un texte en bleu, gras et italique s'il contient un symbole mathématique
    comme un ensemble $F$ ou un truc plus “compliqué” du style
    $f \colonequals s_{//,G}$ sans changer d'environnement à chaque fois ?
    \end{GrasBleuIt}
    
    \newpage Bla
    
    \end{document}
    
    P.S. : ne jamais finir un paragraphe avec \\. Préférer \par ou une ligne blanche puis \smallskip, \medskip, \bigskip ou \vspace.126450
  • Après réflexion, j'ai changé de technique pour le 1). En effet, l'argument de \markright (comme le deuxième argument de \markboth) se comporte comme une \firstmark (voir TeXbook) : c'est la première marque de ce type rencontrée au cours d'une page qui est passée à l'\output routine (les autres finissent à la poubelle). On ne peut donc pas écraser une telle marque avec une qui suit sur la même page. L'ECM suivant permet de se rendre compte que la technique proposée marche bien.
    \documentclass{book}
    \begin{document}
    
    \tableofcontents
    
    \chapter{Un chapitre}
    Bla.\newpage
    Re-bla.\newpage
    
    \let\sectionmarkORI\sectionmark
    \renewcommand*{\sectionmark}[1]{%
      \markright{\MakeUppercase{\ifnum\value{secnumdepth}>0 \thesection. \ \fi
                 Titre alternatif pour l'en-tête}}%
    }%
    \section{Une section}
    \let\sectionmark\sectionmarkORI
    
    \section{Une autre section}
    
    \end{document}
    
    Le premier argument de \markboth est différent : il se comporte comme une \botmark. On peut donc l'écraser en recommençant derrière, à condition d'être sûr que l'on reste sur la même page.
  • @Brian merci beaucoup ! Vos solutions ont presque toutes marché !

    Pour les titres de section trop longs pour les en-têtes, je n'ai pas réussi à obtenir ce que je voulais ; je me suis pour l'instant débrouillé en tapant des titres plus courts, mais je souhaiterais que les titres soient complets dans les en-têtes et que si un titre de section/sous-section est trop long, il y ait un passage à la ligne qui se fasse automatiquement dans l'en-tête pour afficher le titre complet.

    De plus j'ai vu une nouvelle erreur que je n'avais pas repérée avant : j'ai un titre qui commence par "Mise en œuvre de...". Le caractère "œ" ne s'affiche pas dans le titre à la compilation (j'utilise LuaLaTeX). Savez-vous d'où vient ce problème (et comment le résoudre).

    Je vous remercie d'avance !
    Adrien
  • L'en-tête a une hauteur fixe, sauf à changer la mise en page en cours de route. Donc pour les deux lignes, il faudrait en tenir compte et vérifier que le contenu de l'en-tête n'est pas composé en mode horizontal restreint (LR mode dans le jargon Lamport).

    Pour le œ, poste un exemple complet minimal.
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!