Einsenstein et triphos

Un nombre $a+bj$ peut toujours s'écrire $x+yj+zj^2$ avec $xyz=0$ et $x\geq0;\ y\geq0;\ z\geq0$.

Ainsi : $-2-7j=5+7j^2$; $4-3j=7+3j^2$; $-10+8j=18j+10j^2$.

Comment en $\LaTeX$ écrire le triphos $\frac yz x$ sans le trait de fraction ?
Merci.90426

Réponses

  • Une façon peu robuste : $\newcommand{\triph}[3]{\begin{smallmatrix}\displaystyle#2\\\displaystyle#3\end{smallmatrix}{#1}}\triph{a}{b}{c}$.
  • $\newcommand{\triph}[3]{\begin{smallmatrix}\displaystyle#2\\\displaystyle#3\end{smallmatrix}{#1}}\triph{10^3}{0}{0}$ mercis.
  • Voir aussi la commande "genfrac" dans "amsmath".
  • Comme l'a écrit rakam, le plus simple consiste à utiliser la commande \genfrac d'amsmath (qui correspond à des primitives TeX telles que \atopwithdelims ou plus généralement \abovewithdelims) :
    \documentclass{article}
    \usepackage{amsmath}
    
    \newcommand*{\triphos}[3]{\genfrac{}{}{0pt}{}{#1}{#2}%
                             \begingroup #3 \endgroup
    }
    
    \begin{document}
    
    The \emph{product} of two Triphosian numbers $\triphos{b}{c}{a}$ and
    $\triphos{y}{z}{x}$ is
    \[ \triphos{b}{c}{a} \cdot \triphos{y}{z}{x} =
        \triphos{cz+bx+ay}{by+az+cx}{ax+bz+cy} \]
    
    \end{document}
    
    Les deux premiers arguments de \genfrac sont des délimiteurs utilisés à gauche et à droite, par exemple des parenthèses pour reproduire $\binom{n}{k}$. Le troisième est l'épaisseur du trait de fraction. Quant au quatrième, il permet de choisir explicitement le math style utilisé pour ce qui va au numérateur et au dénominateur (c'est un entier entre 0 et 3 inclus, ou un argument vide pour laisser TeX déterminer le style mathématique de la même façon que pour une fraction). Pour plus de détails, faire 'texdoc amsldoc' qui dit notamment que l'on pourrait utiliser ce qui suit pour définir les commandes \frac, \tfrac et \binom :
    \newcommand{\frac}[2]{\genfrac{}{}{}{}{#1}{#2}}
    \newcommand{\tfrac}[2]{\genfrac{}{}{}{1}{#1}{#2}}
    \newcommand{\binom}[2]{\genfrac{(}{)}{0pt}{}{#1}{#2}}
    
    Si l'on souhaite pouvoir régler l'espace entre le « numérateur » et le « dénominateur » tout en respectant les math styles, c'est un peu plus compliqué mais \mathpalette aide bien. Voici un document montrant la technique \genfrac ci-dessus puis une commande personnalisable (\vartriphos) réalisée avec \mathpalette et la primitive TeX \halign. Avec \vartriphos, tous les espacements peuvent être réglés aux petits oignons, en fonction du style mathématique courant.
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{ltxcmds}            % uniquement pour \vartriphos
    
    \newcommand*{\triphos}[3]{\genfrac{}{}{0pt}{}{#1}{#2}%
                             \begingroup #3 \endgroup
    }
    
    \makeatletter
    \newcommand*{\vartriphos}[3]{\mathord{\mathpalette\@vartriphos{{#1}{#2}{#3}}}}
    
    % Réglage de l'espacement vertical avec \@vartriphos@vspace ci-dessous
    \newcommand*{\@vartriphos}[2]{
      % Mettre un facteur multiplicatif (comme le 0.7 ci-dessous) devant les
      % \fontdimen5 pour ajuster l'espace entre « numérateur » et « dénominateur »
      % dans chacun des styles mathématiques disponibles avec TeX.
      \ifx#1\displaystyle
        \def\@vartriphos@style{\textstyle} % on est en mode maths -> tranquillou
        \def\@vartriphos@vspace{\fontdimen5\textfont1} % avec les espaces :-)
      \else\ifx#1\textstyle
        \def\@vartriphos@style{\scriptstyle}
        \def\@vartriphos@vspace{\fontdimen5\scriptfont1}
      \else\ifx#1\scriptstyle
        \def\@vartriphos@style{\scriptscriptstyle}
        \def\@vartriphos@vspace{\fontdimen5\scriptscriptfont1}
      \else
        \def\@vartriphos@style{\scriptscriptstyle}
        \def\@vartriphos@vspace{0.7\fontdimen5\scriptscriptfont1}
      \fi\fi\fi
      %
      \vcenter{
        \baselineskip=-\maxdimen \lineskiplimit=\z@
        \lineskip=\@vartriphos@vspace\relax
        \everycr={} \tabskip=\z@ \m@th
        \halign{\hfil##\hfil\cr
                $\@vartriphos@style\ltx@firstofthree#2$\cr
                $\@vartriphos@style\ltx@secondofthree#2$\cr}
      }
      % Si un espacement horizontal est souhaité, il peut être mis ici.
      \begingroup \ltx@thirdofthree#2 \endgroup
    }
    \makeatother
    
    % Pour utiliser la même équation pour les divers tests sans la répéter
    \newcommand*{\testequation}[1][]{
      % On est en mode maths, pas de problème avec les espaces
      \begingroup
        #1 \triphos{b}{c}{a} \cdot \triphos{y}{z}{x} =
             \triphos{cz+bx+ay}{by+az+cx}{ax+bz+cy}
      \endgroup
    }
    
    \newcommand*{\testwithtext}[1]{%
      \par\noindent
      En \texttt{\string#1} :
      \[ \testequation[#1] \]
    }
    
    \begin{document}
    
    \section*{Avec \texttt{\string\triphos}}
    
    The \emph{product} of two Triphosian numbers $\triphos{b}{c}{a}$ and
    $\triphos{y}{z}{x}$ is
    \[ \testequation \]
    
    \section*{Avec \texttt{\string\vartriphos}}
    
    \let\triphos\vartriphos
    The \emph{product} of two Triphosian numbers $\triphos{b}{c}{a}$ and
    $\triphos{y}{z}{x}$ is...
    
    \medskip
    \testwithtext{\displaystyle}
    \testwithtext{\textstyle}
    \testwithtext{\scriptstyle}
    \testwithtext{\scriptscriptstyle}
    
    \end{document}
    
    Edit : version légèrement plus rapide de \@vartriphos.90440
  • Grand merci pour les détails.
  • De rien, je viens de modifier la définition de \@vartriphos pour la rendre légèrement plus rapide :
    • il n'est pas utile de tester le style mathématique deux fois ;
    • le \m@th peut être exécuté une seule fois aussi, un peu plus tôt de sorte que les deux expressions en mode maths dans le \halign voient la valeur correspondante (0pt) de \mathsurround.
Connectez-vous ou Inscrivez-vous pour répondre.