Réduire la taille d'un symbole

Bonjour,
Dans un document je note deux opérations $\oplus$ et $\odot$ pour les différencier des opérations classiques, mais je souhaiterais diminuer la taille du $\odot$ pour rendre plus lisible les expressions du type $ (2\odot x)\oplus (2\odot y)\oplus (3\odot x\odot y)\oplus x^{\odot 2}$. J'ai essayé le code suivant dans le préambule.
\let\ancienodot\odot
\renewcommand{\odot}{\text{\footnotesize$\ancienodot$}}

Mais ça ne convient pas car, comme vous le voyez sur l'image, le symbole est encore plus gros qu'avant lorsqu'il est en exposant (et il n'y a plus d'espace avec les symboles voisins, mais ça c'est moins grave car je pourrais rajouter des \,). Connaissez-vous une solution ?
Merci d'avance99690

Réponses

  • Peut-être ceci est-il convenable...
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{etoolbox}
    
    \makeatletter
    % Commande d'egreg (https://tex.stackexchange.com/a/499972/73317)
    \newcommand*{\math@param}[3]{%
      \fontdimen#3
      \ifx#1\displaystyle\textfont#2
      \else\ifx#1\textstyle\textfont#2
      \else\ifx#1\scriptstyle\scriptfont#2
      \else\scriptscriptfont#2 \fi\fi\fi
    }
    
    \newcommand*{\my@smaller@style}[1]{%
      \ifx#1\displaystyle\scriptstyle
      \else\ifx#1\textstyle\scriptstyle
      \else\scriptscriptstyle \fi\fi
    }
    
    \newcommand*{\makeSmaller}[3]{%
      \let#2#1%
      \newcommand*{#3}{%
        \mathrel{\expandafter\mathpalette
                 \csname my@\expandafter\@gobble\string#3\endcsname
                 \relax}%
      }%
      %
      \csdef{my@\expandafter\@gobble\string#3}##1##2{%
        \begingroup
          \edef\my@smaller{\my@smaller@style{##1}}%
          \raisebox{\dimexpr \math@param{##1}{2}{22} -
                    \expandafter\math@param\expandafter{\my@smaller}{2}{22}}{%
            $\m@th\my@smaller@style{##1} #2$}%
        \endgroup
      }%
    }
    
    \makeSmaller{\odot}{\odotORIG}{\smallodot}
    \makeSmaller{\oplus}{\oplusORIG}{\smalloplus}
    \makeatother
    
    \begin{document}
    
    \[ (2\odot x)\oplus (2\odot y)\oplus (3\odot x\odot y)\oplus x^{\odot 2} \]
    \let\odot\smallodot
    \let\oplus\smalloplus
    \vspace*{-1.5\baselineskip}%
    \[ (2\odot x)\oplus (2\odot y)\oplus (3\odot x\odot y)\oplus x^{\odot 2} \]
    
    \end{document}
    
    Edit : remplacement de \csgdef par \csdef, code un peu plus joli.99704
  • Merci beaucoup brian ! Ça donne ce que je souhaitais.
Connectez-vous ou Inscrivez-vous pour répondre.