Je cherche comment écrire des fractions avec la commande \dfrac{n}{d} telles que pour toutes les fractions les numérateurs (n) et dénominateurs (d) sont centrés avec une barre de fraction de même longueur.

Cette disposition m'est utile pour présenter des suites d'inégalités comportant des fractions, en évitant de bricoler la présentation avec des environnements align peu lisibles.

La longueur de la barre de fraction la plus longue étant définie par son expression mathématique, celle de la fraction comportant le numérateur ou le dénominateur le plus long est choisie à priori.

Est-ce possible simplement sans monter une usine à gaz?

Posée 01 Jan '17, 20:06

pzorba75's gravatar image

pzorba75
15761523
Taux d'acceptation : 18%

Modifiée 08 Aoû '17, 00:06

Pathe's gravatar image

Pathe ♦♦
7.5k42204251

@pzorba75 Attention ! Les contre-obliques (\) saisies telles quelles dans les contributions ne sont visibles que si elles sont insérées en tant que ⟨code⟩. Pour insérer du ⟨code⟩, notamment des commandes LaTeX, cf. la FAQ Comment mettre en forme ma contribution ?. Votre contribution a été modifiée pour faire apparaître ces contre-obliques.

(02 Jan '17, 13:13) Pathe ♦♦ Pathe's gravatar image

On peut faire ça avec la commande \genfrac d'amsmath et l'extension eqparbox qui permet de donner à des boîtes (repérées par une même clef) la largeur de la plus grande. Cela nécessite deux compilations. J'ai donc défini deux commandes: \mydfrac et \mytfrac, utilisant deux arguments obligatoires (numérateur et dénominateur) et un argument optionnel (la clef - par défaut dFet tF).

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{mathtools, eqparbox}
\newcommand\mydfrac[3][dF]{\genfrac{}{}{}{0}{\eqmakebox[#1]{$ \displaystyle#2 $}}{\eqmakebox[dF]{$ \displaystyle#3 $}}}
\newcommand\mytfrac[3][tF]{\genfrac{}{}{}{1}{\eqmakebox[#1]{$ \textstyle#2 $}}{\eqmakebox[Fr]{$ \textstyle#3 $}}}

\begin{document}

   \[ \renewcommand\arraystretch{2}
   \begin{matrix}
     \mydfrac{7}{2}\\ \mydfrac{22}{7}\\ \mydfrac{335}{113}%
   \end{matrix} \]%

\end{document}

Résultat : alt text

Lien permanent

Publiée 02 Jan '17, 00:09

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 02 Jan '17, 14:25

Cette solution élégante reste très mystérieuse pour moi ; je ne comprends pas comment dF, tF et Fr agissent, la documentation de eqparbox n'est pas claire au regard de l'utilisation ci-dessus (document daté du 15 mars 2013, page 4).

(02 Jan '17, 07:22) pzorba75 pzorba75's gravatar image
1

@pzorba75 : Je comprends que vous ne compreniez pas, j'avais inséré le code d'une version initiale, et ai modifié directement ce qui me paraissait nécessaire, mais ai oublié une partie. C'est maintenant rectifié. Attention : dF et tF ne sont pas des commandes, mais les valeurs par défaut des clefs (tags dans la documentation de eqparbox) qui déterminent quelles sont les fractions qui doivent avoir une barre de même largeur. J'espère que le code est plus clair… Cela dit, très bonne année 2017 !

(02 Jan '17, 14:32) Bernard Bernard's gravatar image

Voici une solution. On utilise \settowidth{\mt}{$Expression$} pour sauvegarder la longueur du numérateur ou dénominateur le plus long.

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{amsmath}

\newlength\mt
\newcommand{\mtfrac}[2]{\dfrac{\makebox[\mt]{$#1$}}{#2}}

\begin{document}
On a

\settowidth{\mt}{$123ABC$}
$\mtfrac{cc}{x}=\mtfrac{cc}{xyz}$

$\mtfrac{cc}{x}=\mtfrac{cc}{123ABC}$

Puis

\settowidth{\mt}{$xyz123ABC$}% 
$\mtfrac{cc}{x}=\mtfrac{cc}{abcd}$

$\mtfrac{xyz123ABC}{x}=\mtfrac{cc}{abcd}$

\end{document}
Lien permanent

Publiée 01 Jan '17, 23:37

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 01 Jan '17, 23:48

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.