Réduire une matrice

Bonjour
Non, je ne cherche pas à Jordaniser une matrice, mais à réduire sa taille dans un texte...
Il semble que chez moi il y ait une incompatibilité entre scalebox et pmatrix.

Pour réduire un tableau, je fais ça :
$
{\scalebox{0.7}{
\begin{array}[t]{cccc} 
a  & b & c  & d\\
a  & b & c  & d\\
a  & b & c  & d\\
a  & b & c  & d\\
\end{array}
}}
$
Ça marche très bien.

Mais quand je veux réduire une matrice
$
{\scalebox{0.7}{
\begin{pmatrix}
a  & b & c  & d\\
a  & b & c  & d\\
a  & b & c  & d\\
a  & b & c  & d\\
\end{pmatrix}
}}
$
ça ne compile plus et le message d'erreur est le suivant :
! Missing $ inserted.<inserted text>& \end{frame}
Quelqu'un saurait comment réduire la taille d'une matrice écrite avec pmatrix ?
Bonne soirée
Omega

Réponses

  • Bonsoir,

    Merci de fournir un exemple complet minimal la prochaine fois, ça fait gagner du temps (il n'y a alors qu'à copier, coller, observer, corriger et tester).

    1) Quand tu écris ceci :
    $
    {\scalebox{0.7}{
    \begin{array}[t]{cccc} 
    a  & b & c  & d\\
    a  & b & c  & d\\
    a  & b & c  & d\\
    a  & b & c  & d\\
    \end{array}
    }}
    $
    
    les accolades extérieures sont superflues (les dollars aussi, en l'absence d'autres éléments) et tu introduis des espaces qui prennent vraiment de la place dans le \scalebox. Écris plutôt :
    \scalebox{0.7}{%
    \begin{array}[t]{cccc}
      a & b & c & d\\
      a & b & c & d\\
      a & b & c & d\\
      a & b & c & d
    \end{array}%
    }
    
    ou quelque chose d'équivalent.

    2) \scalebox est asez violent, ça change la graisse de la police... Tu peux essayer ceci avec le package mathtools :
    $\begin{psmallmatrix}
      a & b & c & d\\
      a & b & c & d\\
      a & b & c & d\\
      a & b & c & d
    \end{psmallmatrix}$
    

    3) Ton truc qui ne marche pas, c'est parce que \scalebox traite son contenu en LR-mode (restricted horizontal mode en terminologie TeXbook), c'est-à-dire en mode texte-tout-sur-une-seule-ligne. Notamment, ce n'est pas le mode mathématique, or l'environnement pmatrix ne fonctionne qu'en mode maths (array est plus permissif, il doit faire un \ensuremath). Tu peux donc faire fonctionner ça en passant en mode maths à l'interieur du \scalebox :
    \scalebox{0.7}{$
    \begin{pmatrix}
      a & b & c & d\\
      a & b & c & d\\
      a & b & c & d\\
      a & b & c & d
    \end{pmatrix}$}
    
    La plupart des commandes pour travailler les boîtes fonctionnent de manière similaire en ce qui concerne le mode : elles ne connaissent rien des modes mathématiques, mais on peut passer en mode maths dedans et on peut les mettre directement à l'intérieur d'une expression mathématique (je parle de \hbox, \vbox, \makebox, \raisebox, \mbox, \rotatebox, \adjustbox, etc. ; \vcenter est une exception [mais c'est une primitive TeX à l'instar de \hbox et \vbox, pas une commande LaTeX] : elle ne fonctionne qu'en mode maths).

    4) J'oubliais. Tu peux aussi essayer ceci :
    {\scriptsize % plus petit que \small et plus grand que \tiny
    $\begin{pmatrix}
      a & b & c & d\\
      a & b & c & d\\
      a & b & c & d\\
      a & b & c & d
    \end{pmatrix}$}
    
  • Un grand merci Brian pour ta réponse avec plusieurs suggestions et aussi des explications très utiles !

    J'ai opté pour la deuxième solution (passer le mode math à l'intérieur du \scalebox).

    Encore merci !
    Omega.
Connectez-vous ou Inscrivez-vous pour répondre.