Classes d'équivalence...

[large]Bonsoir,

S'il vous plait, comment concevoir des classes d'équivalence identiques à celles qui apparaissent dans la pièce ci-jointe, extraite du livre d'algèbre de Monsieur Michel Queysanne ? Je vous remercie par avance.

Bien cordialement,

Thierry[/large]123162
Le chat ouvrit les yeux, le soleil y entra. Le chat ferma les yeux, le soleil y resta. Voilà pourquoi le soir, quand le chat se réveille, j'aperçois dans le noir deux morceaux de soleil. (Maurice Carême).

Réponses

  • Bonsoir Thierry,

    Une bonne solution me semble être d'utiliser unicode-math si tu le peux (compiler par exemple avec lualatex) :
    \documentclass{article}
    \usepackage{unicode-math}
    
    \begin{document}
    
    $\dot{\overparen{ab' + ba', e}}$
    
    \end{document}
    
    La commande 'texdoc unimath-symbols' donne un document fort intéressant.

    Autrement, on doit pouvoir mettre \dot par dessus les choses indiquées ici, ... et il y a des commandes \wideparen dans divers packages (fourier, stix, yhmath...). On peut les trouver en faisant 'texdoc symbols-a4'.123166
  • Bonjour Brian

    Je te remercie beaucoup. J'ai essayé quelques codes via tes liens. Ce qui ne me va pas, ce sont les parenthèses qui ne donnent pas le même résultat que dans la copie jointe. As-tu une solution, s'il te plait ? J'ai abandonné le code lié à "unicode-math" ; je préfère compiler directement pour obtenir un pdf. Pourtant, cela donne un beau résultat.

    Amicalement,

    Thierry
    Le chat ouvrit les yeux, le soleil y entra. Le chat ferma les yeux, le soleil y resta. Voilà pourquoi le soir, quand le chat se réveille, j'aperçois dans le noir deux morceaux de soleil. (Maurice Carême).
  • Je ne comprends pas le problème avec unicode-math. La compilation avec lualatex donne directement du PDF. Dans l'éditeur, ça s'appelle peut-être « utiliser le moteur LuaTeX ». Si tu fais 'lualatex machin.tex' dans un terminal, ça donne directement un PDF. Gadget : les caractères dans les formules mathématiques peuvent alors être copiés/collés depuis le PDF.

    Sinon, on pourrait dessiner ça avec TikZ mais c'est plus de boulot (et serait plus long à compiler).

    Je me rends compte que je n'ai peut-être pas bien compris ton dernier message : tu parles des parenthèses ouvrantes et fermantes ? Peut-être avec la bibliothèque TikZ calligraphy que j'avais utilisée ici. Ça n'est pas aussi simple à utiliser qu'un vrai délimiteur mathématique TeX, mais peut-être que mon environnement 'callibraced' de l'époque peut aider (je ne me souviens plus des détails...).
  • [large]Bonjour Brian,

    J'espère que tu vas bien. Voici trois reproductions de ce que je suis parvenu à faire. Je souhaiterais, si cela est possible, rapprocher le symbole $\circ$ de l'arc, ainsi que gérer la taille du symbole choisi. Vois-tu comment procéder. Sinon, je laisse comme ça.

    Il y a une production n'ayant aucun sens, suivie de deux codes sources. Si tu souhaites apporter des modifications aux sources, je suis preneur.

    Je te remercie par avance pour ton investissement.

    Amicalement,

    Thierry[/large]123226
    123228
    123224
    Le chat ouvrit les yeux, le soleil y entra. Le chat ferma les yeux, le soleil y resta. Voilà pourquoi le soir, quand le chat se réveille, j'aperçois dans le noir deux morceaux de soleil. (Maurice Carême).
  • Bonsoir Thierry,

    Pour pouvoir essayer des choses, il faudrait :
    • un exemple complet minimal que je puisse copier-coller ;
    • avoir plus de précisions sur « gérer la taille du symbole choisi », i.e. : s'agit-il du petit cercle ou du petit disque, et faut-il le rendre plus gros ou plus petit ?
    Pour le disque (le plus délicat car \dot appelle \mathaccent), il y a des idées ici. D'autre part, \overset d'amsmath est peut-être préférable au \stackrel du noyau LaTeX car cette dernière impose la classe \mathrel, ce qui a des conséquences sur l'espacement autour.

    Pour changer la position verticale du petit cercle, sans doute \raisebox peut-elle aider.
  • Brian

    Voici le code partiel que je viens de modifier dans la feuille de style :
    \usetikzlibrary{calc}
    \newcommand{\overbow}[1]{
        \overset{\raisebox{-0.25ex}{\scalebox{0.5}{\ensuremath $\circ$}}}{
            \tikz [baseline = (N.base), every node/.style={}] {
              \node [inner sep = 0pt] (N) {$#1$};
              \draw [line width = 0.5pt] plot [smooth, tension=1.3] coordinates {
                 ($(N.north west) + (0,0)$)
                 ($(N.north)      + (0,0.8ex)$)
                 ($(N.north east) + (0,0)$)
              };
            }
        }
    }
    

    L'appel se fait ainsi :
    \varphi\left(\overbow{ax+uy,\,zw+sq}\right)=q\,r
    

    pour offrir le résultat ci-dessous. Peut-être as-tu une meilleure solution. Je te remercie par avance.123234
    Le chat ouvrit les yeux, le soleil y entra. Le chat ferma les yeux, le soleil y resta. Voilà pourquoi le soir, quand le chat se réveille, j'aperçois dans le noir deux morceaux de soleil. (Maurice Carême).
  • Quelques petites améliorations :
    • \ensuremath était mal utilisée ;
    • emploi de \NewDocumentCommand pour que \overbow soit \protected ;
    • utilisation de \mathpalette pour que la taille soit correcte en indices, sous-indices, exposants, sur-exposants, etc. ;
    • utilisation de \mleft et \mright (du package mleftright) pour ne pas avoir l'espacement autour d'un atome Inner produit par \left( .... \right), espacement souvent trop grand (il est inapproprié ici à mon avis) ;
    • suppression du every node/.style={} dont je ne saisis pas bien l'utilité (ou plutôt, pourquoi il serait désirable) ;
    • définition d'un alias \clEq pour un balisage sémantique de ton code.
    \documentclass{article}
    % \usepackage{xparse} % seulement nécessaire si LaTeX plus vieux que 2020-10-01
    \usepackage{amsmath}
    \usepackage{mleftright}
    \usepackage{tikz}
    \usetikzlibrary{calc}
    
    \makeatletter
    
    \NewDocumentCommand{\overbow}{}{%
      \mathpalette\my@overbow
    }
    
    \newcommand*{\my@overbow}[2]{%
      \begingroup
      \m@th
      \overset{\raisebox{-0.25ex}{\scalebox{0.5}{$#1\circ$}}}{
        \tikz [baseline = (N.base)] {
          \node [inner sep = 0pt] (N) {$#1#2$};
          \draw [line width = 0.5pt] plot [smooth, tension=1.3] coordinates {
            ($(N.north west) + (0,0)$)
            ($(N.north)      + (0,0.8ex)$)
            ($(N.north east) + (0,0)$)
          };
        }
      }
      \endgroup
    }
    
    \NewCommandCopy{\clEq}{\overbow}
    % Utilise ça si ton LaTeX est trop vieux pour avoir \NewCommandCopy :
    % \let\clEq\overbow
    \makeatother
    
    \begin{document}
    
    $\varphi \mleft( \clEq{ax+uy, zw+sq} \mright) = qr$
    
    $x_{\clEq{ax+uy, zw+sq}}$
    
    \end{document}
    
    Voici une variante avec un \overbow calligraphié, dont l'épaisseur de base et l'amplitude varient en fonction du style mathématique. C'est plus joli, mais plus lent à compiler.
    \documentclass{article}
    % \usepackage{xparse} % seulement nécessaire si LaTeX plus vieux que 2020-10-01
    \usepackage{amsmath}
    \usepackage{mleftright}
    \usepackage{tikz}
    \usetikzlibrary{decorations.pathreplacing, calligraphy}
    
    \makeatletter
    
    \NewDocumentCommand{\overbow}{}{%
      \mathpalette\my@overbow
    }
    
    \newcommand*{\my@overbow@scaled@length}[2]{%
      \dimexpr (#2)*
        \ifx#1\displaystyle 1
        \else\ifx#1\textstyle 1
        \else\ifx#1\scriptstyle 7/10
        \else 5/10 \fi\fi\fi
      \relax
    }
    
    \newcommand*{\my@overbow}[2]{%
      \begingroup
      \m@th
      \overset{\raisebox{-0.25ex}{\scalebox{0.5}{$#1\circ$}}}{
        \begin{tikzpicture}[baseline = (N.base)]
          \node [inner sep = 0pt] (N) {$#1#2$};
          \draw[line width=\my@overbow@scaled@length{#1}{0.7pt},
                decorate,
                decoration={
                  calligraphic curved parenthesis,
                  amplitude=\my@overbow@scaled@length{#1}{4pt},
                }] (N.north west) -- (N.north east);
        \end{tikzpicture}
      }
      \endgroup
    }
    
    \NewCommandCopy{\clEq}{\overbow}
    % Utilise ça si ton LaTeX est trop vieux pour avoir \NewCommandCopy :
    % \let\clEq\overbow
    \makeatother
    
    \begin{document}
    
    $\varphi \mleft( \clEq{ax+uy, zw+sq} \mright) = qr$
    
    $x_{\clEq{ax+uy, zw+sq}}$
    
    \end{document}
    
    Tu noteras qu'un exemple complet minimal commence par \documentclass, contient les appels \usepackage nécessaires et se termine par \end{document}. :-P123242
    123246
  • D'ailleurs, comme bien souvent, les parenthèses obtenues avec \left et \right (ou \mleft et \mright) sont excessivement grandes du point de vue typographique, bien que remplissant le cahier des charges décrit dans le TeXbook au niveau « hauteur + profondeur ». Voici ce que donnent les deux variantes du code ci-dessus avec \bigl( ... \bigr) et 'line width=\my@overbow@scaled@length{#1}{0.6pt}' au lieu de 'line width=...{0.7pt}' comme largeur de base du trait pour la version calligraphiée :
    $\varphi \bigl( \clEq{ax+uy, zw+sq} \bigr) = qr$
    
    Il me semble que cette taille de parenthèses suffit. D'autre part, l'espacement horizontal est le même qu'avec \mleft ... \mright : un \mathopen à gauche et un \mathclose à droite.123254
    123258
  • [large]Bonjour Brian,

    Je te remercie beaucoup pour ton remarquable investissement. J'aime bien ta seconde solution, mais j'ai une erreur de compilation. Est-ce mon package "Tikz" qui est obsolète ? Je ne vois pas comment le résoudre.

    Sinon, ton travail est spectaculaire, comme d'habitude.

    Amitiés

    Thierry[/large]
    Le chat ouvrit les yeux, le soleil y entra. Le chat ferma les yeux, le soleil y resta. Voilà pourquoi le soir, quand le chat se réveille, j'aperçois dans le noir deux morceaux de soleil. (Maurice Carême).
  • Bonjour Thierry,

    C'est sans doute la bibliothèque 'calligraphy' de TikZ qui est trop ancienne chez toi. L'erreur provient de ce que \tl_case:Nnn est utilisée mais non définie, car cette macro a été retirée du code de l3kernel le 14 juillet 2015. Il faudrait mettre à jour ta distribution TeX.

    Concernant la lenteur de compilation pour la version calligraphiée : en renonçant à la mise à l'échelle automatique en indices, exposants, etc., on peut diviser par 4 le truc qui prend du temps. En effet, le \mathchoice qui est derrière \mathpalette doit construire les 4 listes mathématiques (en display style, text style, script style et scriptscript style) même si in fine, une seule sera utilisée. Ceci est dû à la manière dont fonctionnent la primitive TeX \over et ses copines \atop, \abovewithdelims, etc. : un des choix de conception les plus critiquables de TeX. Si Knuth avait choisi une syntaxe du type \frac{num}{denom}, il n'y aurait pas eu ce désagrément.

    Quatre possibilités :
    1. ou bien on est sûr que \clEq sera toujours utilisée en display style ou en text style (pas en indice, pas en exposant) ;
    2. ou bien on se satisfait du fait que ce n'est pas mis à l'échelle dans ces cas-là ;
    3. ou bien on utilise une version rapide de \clEq pour l'écriture du document et on active la version meilleure-mais-plus-lente lorsqu'un booléen dit « c'est la version finale » ;
    4. ou bien on accepte la lenteur de la variante calligraphiée.
    La solution 3 n'est pas bien compliquée à mettre en œuvre : il faut juste deux variantes, un booléen et un \let ou \NewCommandCopy.

    NB : tu pourrais mettre ton log sous forme textuelle (p. ex., dans un attachement d'extension .tex si le logiciel du forum refuse .txt).
  • Brian

    Je te remercie. J'ai un système Windows XP 32 bits. Donc pas de mise à jour complète de ma distribution pour l'instant. C'est une spécificité informatique que d'améliorer d'un côté et de dégénérer de l'autre ; j'ai connu ça par le passé lorsque je programmais pour une boîte privé.

    Merci pour ton investissement,

    Amitiés,

    Thierry

    PS : je vais essayer de garder le code.
    Le chat ouvrit les yeux, le soleil y entra. Le chat ferma les yeux, le soleil y resta. Voilà pourquoi le soir, quand le chat se réveille, j'aperçois dans le noir deux morceaux de soleil. (Maurice Carême).
Connectez-vous ou Inscrivez-vous pour répondre.