Des crochets gras en tikz pour intervalles

Bonjour,

J'essaye de représenter les intervalles sur l'axe gradué. Je n'arrive pas à mettre les crochets bien en gras. Pour le moment j'obtiens l'image ci-joint et le code correspondant :
\documentclass[11pt,fleqn]{book}

\usepackage{graphicx} % Required for including pictures
\usepackage{tikz} % Required for drawing custom shapes
\usepackage[francais]{babel} % English language/hyphenation
\usepackage{enumitem} % Customize lists
\setlist{nolistsep} % Reduce spacing between bullet points and numbered lists
\usepackage{booktabs} % Required for nicer horizontal rules in tables
\usepackage{xcolor} % Required for specifying colors by name
\usepackage{multicol}
\usepackage{float}
\usepackage{frcursive}
\usepackage{xlop}
\usepackage{ragged2e}
\usepackage{ulem}
\usepackage{cancel}
\usepackage{beton, euler} % Use the Adobe Times Roman as the default text font together with math symbols from the Sym­bol, Chancery and Com­puter Modern fonts
\usepackage{amsmath,amsfonts,amssymb,amsthm} % For math equations, theorems, symbols, etc
\usepackage{microtype} % Slightly tweak font spacing for aesthetics
\usepackage[utf8]{inputenc} % Required for including letters with accents
\usepackage[T1]{fontenc} % Use 8-bit encoding that has 256 glyphs

\begin{document}

\begin{center}
\begin{tikzpicture}[>=latex]
\draw[->] (-3.5,0) --(5.5,0);
\foreach \i in {-3,-2,...,5} % numbers on line
      \draw (\i,0.1) -- + (0,-0.25) node[below] {$\i$}; % tick and their labels
\node[] at (-1,0) {\textcolor{blue}{$\boldsymbol{\big[}$}};
\node[] at (3,0) {\textcolor{blue}{$\mathbf{\big]}$}};
\node[above=8pt] at (5.35,0) {$x$};
\foreach \xp in {-0.8, -0.6,...,2.8}{\node[] at (\xp,0) {\textcolor{blue}{/}};}
\end{tikzpicture}
\end{center}

\end{document}

Des idées comment rendre les choses plus lisible ?108736

Réponses

  • Bonjour,
    Tu peux essayer de remplacer
    \node[] at (-1,0) {\textcolor{blue}{$\boldsymbol{\big[}$}};
    \node[] at (3,0) {\textcolor{blue}{$\mathbf{\big]}$}};
    

    par quelque chose comme
    \draw[thick, blue] (-0.9,0.3) -- (-1,0.3) -- (-1,-0.3) -- (-0.9,-0.3) ;
    \draw[thick, blue] (2.9,0.3) -- (3,0.3) -- (3,-0.3) -- (2.9,-0.3) ;
    

    Ça revient à dessiner soi-même les crochets par une suite de traits. Si ça n'est pas assez large, mets "very thick".
  • Merci @Calli, c'est plus lisible. Cela fonctionne!
  • Il faut regarder les warnings de LaTeX : il est rare que la police mathématique d'extension soit disponible en gras (sauf peut-être avec les polices Unicode). Pour y remédier, on peut utiliser \pmb, mais c'est laid. Ma suggestion ici serait de composer les crochets en mode texte.

    Il vaudrait mieux, à l'avenir, fournir des exemples comportant une quantité minimale de code permettant de reproduire le problème (voir ci-dessous). Heureusement, le code fourni compile après copier/coller, ce qui est déjà pas trop mal. Il y a des moyens plus simples — et mieux intégrés à TikZ — de changer la couleur du texte d'un nœud (voir ci-dessous).
    \documentclass{article}
    \usepackage{beton, euler}
    \usepackage{tikz}
    \usepackage{amsmath}
    
    \begin{document}
    
    \begin{tikzpicture}[>=latex]
    \draw[->] (-3.5,0) --(5.5,0);
    \foreach \i in {-3,-2,...,5} {
      \draw (\i,0.1) -- +(0,-0.25) node[below] {$\i$}; % tick and their labels
    }
    
    \begin{scope}[nodes={blue, font=\usefont{OT1}{cmr}{bx}{n}\Large}]
    \node at (-1,0) {[};
    \node at (3,0) {]};
    \end{scope}
    
    \node[above=8pt] at (5.35,0) {$x$};
    \foreach \xp in {-0.8, -0.6,...,2.8} {
      \node[blue] at (\xp, 0) {/};
    }
    \end{tikzpicture}
    
    \end{document}
    
    108740
  • @brian, merci. J'ai déjà mis en place ce que a proposé @Calli, mais je garde ton code sous la main. ;-)
    Il vaudrait mieux, à l'avenir, fournir des exemples comportant une quantité minimale de code permettant de reproduire le problème (voir ci-dessous).
    C'est la deuxième fois que tu m'écris ce genre de chose. Si tu copies le code dans mon texte, cela tourne. Où est le problème? Et il faut que cela tourne avec tout ce "bagage". J'ai copié tous les packages parce qu'il était possible que deux packages empêchaient d'avoir les crochets gras (qui sait ?! en tout cas pas moi :-D).
  • Le fait de mettre toute une page de commandes \usepackage obscurcit le problème et fait perdre un peu de temps à tout le monde. C'est ton boulot de préparer un exemple complet minimal (ECM). D'une, ça donne beaucoup plus envie de lire le code et de répondre ; de deux, ça peut grandement t'aider à comprendre le problème toi-même. Oui, les packages peuvent compter, c'est pourquoi il ne faut garder pour l'ECM que ceux qui sont vraiment pertinents pour le problème. Ici, par exemple, j'ai gardé ton \usepackage{beton, euler}, même si l'on pourrait s'en passer (tu as d'ailleurs des polices bitmap dans ton PDF pour les hachures par /, bof bof ; tu peux éviter cela en enlevant 'beton' ou en faisant les hachures autrement, par exemple dans la même police que les crochets avec ma technique). De plus, le fait de minimaliser l'exemple fait que Google ou autres moteurs de recherche n'indexent pas des tas de mot-clés qui n'ont rien à voir avec le problème ; par conséquent, on a plus de chances de retrouver le fil plus tard en faisant une recherche.

    Dit autrement, si je te poste 50 pages de code avec plein de couches d'abstraction personnelles que tu n'utilises et ne connais pas, et que je te dis « dans ce document, j'ai résolu le problème dont tu as parlé », est-ce que tu vas être contente ? :-P

    Enfin, si tu obtiens une solution minimale qui s'avère ne pas marcher avec tous les packages de ton document, il est toujours possible de répondre dans le fil avec un nouvel ECM pour qu'on regarde ce qui ne va pas et comment résoudre le problème.
  • Pardon, j'ai parlé un peu trop vite au sujet des polices bitmap pour les hachures : le document d'origine utilise \usepackage[T1]{fontenc}. Avec ça, les polices fournies par cm-super sont utilisées et donnent des glyphes '/' vectoriels (i.e., pas bitmap). Cela dit, on pourrait simplement remplacer la commande \node qui affiche un '/' par une commande \draw traçant un segment. Une autre manière de faire, cette fois-ci sans boucle, consiste à remplir un rectangle à l'aide d'un motif contenant des hachures :
    \documentclass{article}
    \usepackage{euler}
    \usepackage{tikz}
    \usetikzlibrary{patterns}
    
    \begin{document}
    
    \begin{tikzpicture}[>=latex]
    \draw[->] (-3.5,0) -- (5.5,0);
    \foreach \i in {-3,-2,...,5} {
      \draw (\i,0.1) -- +(0,-0.25) node[below] {$\i$}; % ticks and their labels
    }
    
    \begin{scope}[nodes={blue, font=\usefont{OT1}{cmr}{bx}{n}\Large}]
      \node at (-1,0) {[};
      \node at (3,0) {]};
    \end{scope}
    
    \node[above=8pt] at (5.35,0) {$x$};
    \fill[pattern=north east lines, pattern color=blue] (-1, -0.2) rectangle (3, 0.2);
    \end{tikzpicture}
    
    \end{document}
    
    108744
Connectez-vous ou Inscrivez-vous pour répondre.