Alignement sur le signe "="

Bonjour à tous,

J'écris un texte sur les déterminants, donc je risque d'avoir pas mal de questions (que je posterai au fur et à mesure si je ne trouve pas par moi-même). Pour le moment j'ai un problème avec l'environnement {align*}. Voici ce que j'ai tapé dans cet environnement:

\det \left( A T_{i,j} \right) &= \det_{\mathcal{B}_c} \left( C_1 , \ldots , C_{i-1} , C_j , C_{i+1} , \ldots , C_{j-1} , C_i , C_{j+1} , \ldots , C_n \right)\\
&\underbrace{=}_{\text{car } \det_{\mathcal{B}_c} \text{ est alternée} \text{ donc antisymétrique}} -\det_{\mathcal{B}_c} \left( C_1 , \ldots , C_n \right)\\
&= - \det \left( A \right).

et voici le rendu:


\begin{align*}
\det \left( A T_{i,j} \right) &= \det_{\mathcal{B}_c} \left( C_1 , \ldots , C_{i-1} , C_j , C_{i+1} , \ldots , C_{j-1} , C_i , C_{j+1} , \ldots , C_n \right)\\
&\underbrace{=}_{\text{car } \det_{\mathcal{B}_c} \text{ est alternée} \text{ donc antisymétrique}} -\det_{\mathcal{B}_c} \left( C_1 , \ldots , C_n \right)\\
&= - \det \left( A \right).
\end{align*}

Je souhaiterais que la partie "car... antisymétrique" reste centrée sous le signe "=", mais surtout que le signe "=" soit aligné avec les autres. Quelqu'un peut-il me dire comment faire?

Je vous remercie d'avance!

Réponses

  • Bonjour,
    Tu peux essayer :
    \usepackage{amsmath}
    \usepackage{mathtools}
    
    [...]
    
    \begin{align*}
    \det \left( A T_{i,j} \right) &= \det_{\mathcal{B}_c} \left( C_1 , \ldots , C_{i-1} , C_j , C_{i+1} , \ldots , C_{j-1} , C_i , C_{j+1} , \ldots , C_n \right)\\
    &\underbrace{=}_{\mathclap{\substack{\text{car } \det_{\mathcal{B}_c} \text{ est alternée}\\ \text{ donc antisymétrique}}}} -\det_{\mathcal{B}_c} \left( C_1 , \ldots , C_n \right)\\
    &= - \det \left( A \right).
    \end{align*}
    

    PS: Merci brian. :-P
  • Je n'ai pas l'impression d'y être pour grand-chose, mais si tu veux me reverser quelque droit d'auteur, why not? (:D
  • Tu n'as pas vu le lien hypertexte ?
  • Si, si, je l'ai vu... ce n'était pas grand-chose, mais au moins je sais que mon message a servi à quelqu'un. :-)

    Afin de respecter l'alignement des signes $=$, je propose ces deux solutions (je préfère la seconde) :
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{aligned-overset}
    
    \begin{document}
    
    % Cette solution nécessite le \usepackage{aligned-overset}
    \begin{align*}
    \det(A T_{i,j})
      &= \det_{\mathcal{B}_c} (C_1 , \dotsc , C_{i-1}, C_j, C_{i+1}, \dotsc, C_{j-1}, C_i, C_{j+1}, \dotsc, C_n) \\
      \underset{\mathclap{\substack{\noalign{\kern 2ex}\text{car } \det_{\mathcal{B}_c} \text{ est alternée}\\ \text{ donc antisymétrique}}}}
      &= -\det_{\mathcal{B}_c} (C_1, \dotsc, C_n) \\
      &= -\det(A).
    \end{align*}
    
    % Celle-là non.
    \begin{align*}
    \det(A T_{i,j})
      &= \det_{\mathcal{B}_c} (C_1 , \dotsc , C_{i-1}, C_j, C_{i+1}, \dotsc, C_{j-1}, C_i, C_{j+1}, \dotsc, C_n) \\
      &= -\det_{\mathcal{B}_c} (C_1, \dotsc, C_n) \tag*{%
        \raisebox{0pt}[0pt][0pt]{%
          \begin{tabular}[t]{@{}r@{}}
            car $\det_{\mathcal{B}_c}$ est alternée\\
            donc antisymétrique
          \end{tabular}}}\\
      &= -\det(A).
    \end{align*}
    
    \end{document}
    
    Notez que :
    • j'ai remplacé les \ldots par des \dotsc ('c' pour commas ; voir 'texdoc amsldoc' pour les différents types de \dots*) ;
    • j'ai enlevé tous les \left et \right.
    Les \left et \right ajoutent de l'espace horizontal (avant le délimiteur pour \left, après pour \right) et figent tous les espaces élastiques à l'intérieur de la sous-formule, ce qui nuit évidemment à la typographie. ll ne faut donc pas en abuser. Réservez-les aux grosses expressions que l'on veut faire ressortir par rapport à ce qu'il y a autour. Ici, on pourrait éventuellement les laisser pour le membre de droite de la première ligne — tout ce qui suit le det étant un système de vecteurs. La dernière capture d'écran (une seule ligne) montre l'espace ajouté lorsqu'on utilise \left avant la parenthèse ouvrante dans le second membre.

    Edit : suppression du package mathtools qui n'est pas utilisé par mon code.113252
    113254
  • Merci pour vos réponses!

    @Brian est-ce que "tag" est approprié pour les justifications d'égalités? Un truc que j'aurais voulu faire aurait été d'avoir, comme sur la photo ci-jointe (où j'ai écrit n'importe quoi), une environnement de type {align*} où j'aurais les égalités et inégalités alignées entre elles, et les justifications toutes alignées entre elles (cf traits au crayon) mais assez "proches" des équations (pas tout à droite comme avec tag). Les équations seraient assez centrées (peut-être légèrement décalées sur la gauche à cause des justifications, mais pas trop si possible). Et le qed serait sur la ligne de la dernière égalité (le tout était à la base dans un environnement {enumerate}, lui-même dans un environnement {proof}).

    J'envisageais ça au début mais comme je n'y arrivais pas je suis passé à la solution "sous le signe égal". Cependant, si ce que je décris est possible je préfèrerais faire ça. Quelqu'un a-t-il une solution? (Si ma description n'est pas claire n'hésitez pas à demander j'essayerai de mieux expliquer).113256
  • Tu peux faire un tableau (avec array), et mettre autant que colonnes que tu veux, alignées comme tu veux.
  • On peut aussi mettre le nombre de colonnes que l'on souhaite dans align, align*, etc. Voici un exemple avec align* et \qedhere pour placer le carré de fin de preuve comme demandé. Pour contrôler précisément l'espace entre les colonnes, il y a alignat et alignat* (faire 'texdoc amsldoc' pour la documentation).
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    \usepackage{lipsum}
    
    \newcommand{\justif}[1]{\text{(#1)}}
    
    \begin{document}
    
    \begin{proof}
    \lipsum[1][1-3]
    \begin{align*}
      x &= y + z \\
        &= y + a         && \justif{car $z = a$} \\
        &\leq y + t +1   && \justif{par hypothèse} \\
        &= 3.            && \qedhere
    \end{align*}
    \end{proof}
    
    \end{document}
    
    Voici une autre technique avec le paquet witharrows de François Pantigny :
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{lipsum}
    \usepackage{witharrows}
    
    \begin{document}
    
    \lipsum[1][1-3] Avec le paquet \texttt{witharrows} :
    \begin{DispWithArrows*}
    \det(A T_{i,j})
      &= \det_{\mathcal{B}_c} (C_1 , \dotsc , C_{i-1}, C_j, C_{i+1}, \dotsc,
                               C_{j-1}, C_i, C_{j+1}, \dotsc, C_n)
     \Arrow[tikz={text width=3cm}]{car $\det_{\mathcal{B}_c}$ est alternée donc antisymétrique}\\
      &= -\det_{\mathcal{B}_c} (C_1, \dotsc, C_n)\\
      &= -\det(A).
    \end{DispWithArrows*}
    
    \end{document}
    
    113262
    113264
  • Bonsoir
    L'environnement marche pas mal, mais j'aurais deux questions. La première, peut-on "décaler" vers le bas ce qu'il y a sous le signe "="? Voici un code
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    
    \begin{document}
    
    \begin{proof}
    On a 
    \begin{align*}
    \det (A) &\underset{\mathclap{\text{Dvt/}L3}}{=} (-1)^{3+1} g \begin{vmatrix}
    b & c \\ 
    e & f
    \end{vmatrix} + (-1)^{3+2} h \begin{vmatrix}
    a & c \\ 
    d & f
    \end{vmatrix} + (-1)^{3+3} i \begin{vmatrix}
    a & b \\ 
    d & e
    \end{vmatrix} \\
    &= g(bf-ce)-h(af-cd)+i(ae-bd) \\
    &= aei+cdh+bfg-ceg-afh-bdi. \qedhere
    \end{align*}
    \end{proof}
    
    \end{document}
    
    J'aimerais que le "$\text{Dvt/}L3$" soit un peu plus bas (le "3" touche la parenthèse). Comment puis-je gérer ça?

    Voici également un second code
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    
    \newcommand{\justif}[1]{\text{(#1)}}
    
    \begin{proof}
    \noindent d'où 
    \begin{alignat*}{2}
    P(x_n) &= V(x_1 , \ldots , x_n ) &\quad\quad &\\
           & = V(x_1 , \ldots , x_{n-1} ) \prod_{i=1}^{n-1} (X-x_i) &&\\
           &= \prod_{1 \leqslant i<j \leqslant n-2} (x_j - x_i) \prod_{i=1}^{n-1} (x_n-x_i) &&\justif{par hypothèse de récurrence}\\
           &=\prod_{1 \leqslant i<j \leqslant n-1} (x_j - x_i),
    \end{alignat*}
    \noindent ce qui achève la récurrence, et donc la démonstration.
    \end{proof}
    
    \end{document}
    
    Est-il possible de décaler le tout vers la droite, pour que les formules soient plus centrées (éventuellement un peu sur la gauche mais pas autant que là) tout en gardant le même espace entre les formules et la justification ?113604
    113606
  • Hum, tes exemples ne compilent pas. Il faudrait les tester avant de poster !

    Une possibilité pour le premier (remplace \smash par \smash$\lbrack b \rbrack$ ; je ne peux pas mettre \smash$\lbrack$b$\rbrack$ dans le code ci-dessous car le logiciel du forum interprète le $\lbrack$b$\rbrack$ comme une balise pour mettre du gras, et l'astuce consistant à ajouter un espace à gauche ou à droite du 'b' casse tout dans ce cas) :
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    \usepackage{mathtools}
    
    \begin{document}
    
    \begin{proof}
    On a
    \begin{align*}
      \det (A) &
                \underset{\smash{\mathclap{\text{\strut Dvt/}L3}}}{=}
                (-1)^{3+1} g \begin{vmatrix}
    b & c \\
    e & f
    \end{vmatrix} + (-1)^{3+2} h \begin{vmatrix}
    a & c \\
    d & f
    \end{vmatrix} + (-1)^{3+3} i \begin{vmatrix}
    a & b \\
    d & e
    \end{vmatrix} \\
    &= g(bf-ce)-h(af-cd)+i(ae-bd) \\
    &= aei+cdh+bfg-ceg-afh-bdi. \qedhere
    \end{align*}
    \end{proof}
    
    \end{document}
    
    Pour le second (attention, la justification déborde dans la marge droite !) :
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    \usepackage{amssymb}
    
    \newcommand{\justif}[1]{\text{(#1)}}
    
    \begin{document}
    
    \begin{proof}
    (...) d'où
    \[ \hspace{4em} \begin{alignedat}{2}
    P(x_n) &= V(x_1 , \ldots , x_n ) &\quad\quad &\\
           & = V(x_1 , \ldots , x_{n-1} ) \prod_{i=1}^{n-1} (X-x_i) &&\\
           &= \prod_{1 \leqslant i<j \leqslant n-2} (x_j - x_i) \prod_{i=1}^{n-1} (x_n-x_i) &&\justif{par hypothèse de récurrence}\\
           &=\prod_{1 \leqslant i<j \leqslant n-1} (x_j - x_i),
    \end{alignedat} \]
    ce qui achève la récurrence, et donc la démonstration.
    \end{proof}
    
    \end{document}
    
    Note : pas besoin de \noindent après les environnements align et Cie, car ils ne terminent pas un paragraphe. Ils ne font qu'interrompre temporairement le paragraphe courant.113640
    113642
  • @brian Merci pour votre réponse!

    Je pense avoir trouvé un moyen pour décaler le tout sur la droite sans que ça sorte: avec un \hspace de quelques cencimètres et en réglant les marges, comme dans le code suivant:
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    \usepackage{amssymb}
    
    \usepackage[left=2.8cm,right=2.9cm,margin=2cm]{geometry}
    
    \newcommand{\justif}[1]{\text{(#1)}}
    
    \begin{document}
    
    (...) d'où
    \begin{alignat*}{2}
    \hspace{3cm} P(x_n) &= V(x_1 , \ldots , x_n ) &\quad\quad &\\
           & = V(x_1 , \ldots , x_{n-1} ) \prod_{i=1}^{n-1} (X-x_i) &&\\
           &= \prod_{1 \leqslant i<j \leqslant n-2} (x_j - x_i) \prod_{i=1}^{n-1} (x_n-x_i) &&\justif{par hypothèse de récurrence}\\
           &=\prod_{1 \leqslant i<j \leqslant n-1} (x_j - x_i),
    \end{alignat*}
    ce qui achève la récurrence, et donc la démonstration.
    
    \end{document}
    



    Idem pour l'exemple suivant:
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    \usepackage{amssymb}
    \usepackage{tikz}
    \usepackage{nicematrix}
    \usepackage[left=2.8cm,right=2.9cm,margin=2cm]{geometry}
    
    \newcommand{\justif}[1]{\text{(#1)}}
    
    \begin{document}
    \begin{proof}
    \noindent On développe par rapport à la dernière ligne: 
    \begin{alignat*}{2}
    \hspace{3cm} \det (T) &= (-1)^{n+n} \lambda_n \begin{vNiceMatrix}[margin]
         \lambda_1 &             & \Block{2-2}<\Large>{(*)}               \\
                                   & \Ddots                                 \\
         \Block{2-2}<\Large>{(0)}                                           \\
                                   &   &                      & \lambda_{n-1}
       \end{vNiceMatrix} &\quad\quad &\\
                     &= (-1)^{2n} \lambda_n \prod_{k=1}^{n-1} \lambda_k &&\justif{par hypothèse de récurrence} \\
                     &=\prod_{k=1}^n \lambda_k &
    \end{alignat*}
    ce qui achève la récurrence.\\
    \noindent Le résultat est donc bien démontré.
    \end{proof}
    \end{document}
    


    Et voici un troisième exemple adapté d'un de vos codes (cette fois je mets la justification sur plusieurs lignes):
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    \usepackage{amssymb}
    
    \usepackage[left=2.8cm,right=2.9cm,margin=2cm]{geometry}
    
    \begin{document}
    
    \noindent De plus, comme $\left| q \right| = \frac{1}{2} < 1$, on a $q^{N+1} \xrightarrow[N \to +\infty]{} 0$, d'où 
    
    \begin{alignat*}{2}
    \hspace{2cm} \frac{1-q^{N+1}}{1-q} \xrightarrow[N \to +\infty]{} &\frac{1}{1-q} &\quad\quad &\\
    &= \frac{1}{1-\frac{\mathrm{e}^{i \alpha}}{2}} &\quad\quad &\\
    &= \frac{1 - \frac{\mathrm{e}^{-i \alpha}}{2}}{\left( 1-\frac{\mathrm{e}^{i \alpha}}{2} \right) \left( 1- \frac{\mathrm{e}^{-i \alpha}}{2} \right)} && \raisebox{0pt}[0pt][0pt]{%
          \begin{tabular}[t]{c@{}@{}}
            (car $1- \frac{\mathrm{e}^{-i \alpha}}{2} \neq 0$ puisque\\[0.7ex]
            $\left| \frac{\mathrm{e}^{-i \alpha}}{2} \right| = \frac{1}{2} \neq 1$)
          \end{tabular}} \\[3.2ex]
    &= \frac{1 - \frac{\mathrm{e}^{-i \alpha}}{2}}{1 - \underbrace{\left( \frac{\mathrm{e}^{i \alpha}}{2} + \frac{\mathrm{e}^{-i \alpha}}{2} \right)}_{=\cos ( \alpha )} + \frac{1}{4}} &\quad\quad &\\
    &=\frac{4-2 \mathrm{e}^{-i \alpha}}{5 - 4 \cos ( \alpha)} &&\\
    &=\frac{4-2 \cos ( \alpha)}{5 - 4 \cos ( \alpha)} + i \frac{2 \sin ( \alpha)}{5 - 4 \cos ( \alpha)}. &&
    \end{alignat*}
    
    
    \noindent Comme $\sum\limits_{n \geqslant 0} q^n$ converge, la suite de ses parties imaginaires converge vers la partie imaginaire de la somme de $\sum\limits_{n \geqslant 0} q^n$.
    
    \end{document}
    


    Quelques questions:

    1) Je remarque que vous avez mis le \hspace avant le \begin{aligned}. Est-il mieux de le mettre avant comme vous l'avez fait ou sur la première ligne comme je l'ai fait (ou est-ce équivalent)?

    2) Existe-t-il un moyen de régler plus précisément la position des colonnes plutôt que de les décaler "à la main" en rajoutant des espaces? Par exemple, y a-t-il une commande du style "\begin{colonnes}{5}{2cm, 7cm, #1 start+6cm, #2 end+8.2cm, #right margin -1.7cm}{l,l,c,r,l}" (traduction de ce truc juste après)? En gros l'idée serait de pouvoir jouer sur la position exacte des colonnes, mais aussi sur leur position relative ainsi que par rapport aux marges. Le "code" que j'ai tappé se traduirait en gros par:

    "{5}": 5 colonnes

    "2cm": la première colonne à deux centimètres du bord gauche de la feuille (sans compter la marge; pour compter la marge ça serait "#left margin + 2cm")

    "7cm": la deuxième colonne à 7cm du bord gauche de la feuille (toujours sans compter la marge)

    "#1 start+6cm": la troisième colonne commence 6cm après le début de la première colonne (#1 start = début de la première colonne)

    "#2 end+8.2cm": la quatrième colonne commence 8.2 cm après la fin ("end") de la deuxième colonne ("#2"); la "fin" = la fin de le plus longue ligne écrite sur la deuxième colonne

    "#right margin -1.7cm": la dernière colonne commence 1.7 cm AVANT (d'où le signe "-") la marge de droite (en écrivant juste "-1.7cm" ça donnerait 1.7cm avant la fin de la feuille)

    Les l,c,r correspondent à l'alignement du texte dans chaque colonne.

    L'idée que je propose est sans doute vouée à l'échec ou donnera des bugs si je fais par exemple partir la première colonne après la troisième, mais en gros l'idée serait d'avoir un contrôle beaucoup plus "important" sur chacune des colonnes (position exacte dans la feuille + par rapport aux autres colonnes + alignement dans chaque colonne). Un tel contrôle est-il possible (et est-il déjà programmé en tex sans avoir à définir un nouvel environnement)?


    3) Vous utilisez l'environnement alignedat. Quelle(s) différence(s) avec alignat (sans le "ed")? Je vois que visiblement votre environnement nécessite d'être inséré "à la main" dans un environnement équation mais sinon y a-t-il d'autres différences et lequel est le plus adapté?


    4) J'ai réutilisé vos environnements raisebox et tabular pour la justification sur plusieurs lignes. Je n'ai cependant pas compris les différents arguments: [t], c, @, {}, etc... j'ai cherché sur internet et ça n'est pas très clair. Ce que j'ai obtenu compile et me donne à peu près ce que je voudrais, donc je l'ai laissé comme ça mais sans vraiment comprendre les arguments utilisés dans le code. Pourriez-vous éclaircir ces points?


    Je vous remercie d'avance!114162
    114164
    114166
  • Tes exemples ont des lignes très longues. Ça se voit tout de suite avec un \lipsum[1]. Évidemment, la mise en page est très facile dans ce cas, mais c'est difficile à lire. Les marges par défaut de LaTeX sont assez grandes, c'est fait exprès (bien qu'elles aient sans doute été faites pour le format “letter”).

    1) Pas vraiment d'opinion, les deux sont laids. J'ai donné ça pour répondre à ta question « comment décaler vers la droite... ? ». Cela ne veut pas dire que je considère ça comme une bonne idée. Tu devrais peut-être essayer l'option fleqn, où trouver une autre manière d'écrire tes justifications.

    2) Tout prêt comme ça, je ne crois pas. Le package tabto propose quelque chose qui s'en rapproche un peu pour du texte.

    Les alignements de TeX déterminent la largeur d'une colonne en prenant le truc le plus large dans cette colonne sur l'ensemble des lignes (c'est un peu plus compliqué que ça lorsqu'il y a des cellules fusionnées...). Les tableaux de LaTeX s'appuient là-dessus. Pour faire ce dont tu parles, il « suffit » de calculer les bonnes largeurs de colonnes à partir de la spécification et de faire en sorte que chaque cellule se termine par \hfil ou \hss, par exemple (ce qui peut se faire avec les alignment templates en TeX et avec la syntaxe <{} du package array en LaTeX). Il faut juste mettre quelque part une ligne qui détermine la largeur imposée pour chaque colonne. Les cellules des autres lignes s'adapteront avec le \hfil ou le \hss (ce dernier permettant de « revenir vers la gauche » même si on a dépassé...). Il faut lire le chapitre du TeXbook sur les alignements (c'est vers la fin).

    3) alignedat forme une boîte, alors que align, align*, alignat et alignat* sont des alignment displays, sauf erreur. Tu ne peux pas vraiment obtenir une boîte pour ces derniers : il y a une (sorte de) boîte par cellule, mais pas une boîte pour le tout. Les règles précises de formatage des formules display sont assez compliquées (cf. TeXbook chapitre 19, Displayed Equations). Un alignment display, c'est une display formula constituée de plusieurs lignes avec respect des règles d'alignement comme pour un \halign, qui est la primitive TeX derrière tabular. Pas facile à expliquer. Contente-toi de ça : les environnements du package amsmath avec 'ed' forment chacun une boîte et doivent être utilisés à l'intérieur d'une formule. Les autres (align, align*, alignat et alignat*) sont comparables à une display formula :
    \[ ... \]
    

    4) Il y a plein de docs sur les tableaux et je ne peux pas expliquer ici, trop de choses :
    - le livre de Lamport connu sous le nom de LaTeX book: LaTeX: A document preparation system, par exemple ici ;
    - la doc. du package array (qui est « hyper standard » et améliore les environnements tabular et array du noyau LaTeX) ;
    - sur Wikibooks ;
    - sur learnlatex.org.

    \raisebox est assez simple quand on a lu le b.a.-ba sur les boîtes, et expliquée au moins un peu en français ici (tout cela est expliqué de manière simple dans le LaTeX book — presque un peu trop simple, d'ailleurs, i.e. : OK pour comprendre les principes mais assez faiblard pour programmer).
  • @brian merci pour ces informations, je vais regarder tout ça (enfin pour l'instant j'essaye d'abord de m'en sortir avec tikz, mais je mets le reste dans la file d'attente ;-) )

    J'ai regardé le package witharrows que vous m'avez indiqué. Il semble qu'il y ait à la fin une idée que je cherchais à faire depuis un bout de temps mais que je ne savais pas réaliser. Je m'explique: j'ai tenté (à partir de la documentation) le code suivant:
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amsthm}
    \usepackage{amssymb}
    \usepackage{witharrows}
    \usepackage{calc}
    
    \usepackage[left=2.8cm,right=2.9cm,margin=2cm]{geometry}
    
    \begin{document}
    
    \noindent Ainsi, pour tout entier $N \geqslant 2$, on a par télescopage 
    
    \[ \begin{WithArrows}[displaystyle,ygap = 2mm,ystart = 0mm,tikz-code = {\draw (#1) -- ++(4cm,0) |- (#2) ;\path (#1) -- (#2)node[midway] {#3} ;}]
    \sum_{n=1}^N \sin \left(\frac{1}{2^{n+1}}\right)\cos \left(\frac{3}{2^{n+1}}\right) &= \sum_{n=1}^N f (n) - f (n+1)\Arrow[ll,jump=4]{On peut passer de \\ là à là directement} \\
    &= \sum_{n=1}^N f (n) - \sum_{n=1}^N f (n+1) \\
    &= \sum_{n=1}^N f (n) - \sum_{n=2}^{N+1} f (n) \\
    &= f(1) + \left( \sum_{n=2}^N f (n) - \sum_{n=2}^{N} f (n) \right) - f(N+1) \\
    &= f(1) - f(N+1) \\
    &= \frac{1}{2}\left( \sin(1)-\sin \left( \frac{1}{2^{N}} \right) \right).
    \end{WithArrows}\]
    
    \noindent En outre, $\sin \left( \frac{1}{2^{N}} \right) \xrightarrow[N \to +\infty]{} 0$.\\
    
    \noindent Essai \hspace{\widthof{$\displaystyle f(1) + \left( \sum_{n=2}^N f (n) - \sum_{n=2}^{N} f (n) \right) - f(N+1)$} - \widthof{$\displaystyle \sum_{n=1}^N f (n) - f (n+1)$} + 1cm} d'espacement.
    
    \end{document}
    

    Je mets la photo à la fin de ce message. L'idée est de faire une flèche horizontale vers la droite, puis verticale vers le bas, puis horizontale vers la gauche pour passer d'une ligne à une autre, et que cette flèche contourne évidemment les longues formules intermédiaires s'il y en a. En outre, on mettrait un texte explicatif à droite de la partie "verticale" de la flèche. J'ai trois problèmes (et demi).

    1) Comment mettre le texte à droite de cette flèche (là il est à gauche et je n'arrive pas à modifier ça)?

    2) Plutôt que de régler les distances à la main, j'aimerais lui dire "1cm après la plus longue ligne à sauter" (ou "1 cm après la plus longue ligne de l'équation", je ne sais pas encore ce qui sera le mieux au final). J'ai trouvé comment obtenir cette longueur (c'est la partie "essai d'espacement"): on rentre à la main la formule la plus longue à sauter (ou la formule la plus longue dans la suite d'égalité selon le choix qu'on fait), on prend sa longueur, on ajoute 1cm et on retranche la longueur de la formule de la ligne de départ. Cependant, quand je remplace "4cm" par le ça il me renvoie un message d'erreur (j'ai essayé avec et sans le hspace, rien à faire). Comment puis-je lui demander ça?

    3) Est-il possible de rendre ce processus automatique? C'est-à-dire qu'au lieu de trouver moi-même la formule la plus longue à contourner et de la rentrer à la main, le logiciel le ferait à ma place et j'aurais juste à rentrer, à la ligne de départ, le nombre de lignes à sauter ainsi que le texte...?

    3 + 1/2) Je voudrais mettre la flèche et le texte qui va avec dans une autre couleur (j'appelle ça un demi problème car je n'ai pas essayé de le faire et je ne pense pas que ça soit le plus difficile à réaliser dans ce que je voudrais faire).

    Merci d'avance pour vos explications!114224
  • -1) Tu utilises trop \left et \right. Cela ajoute des espaces horizontales non souhaitées ici et détruit l'élasticité des espaces à l'intérieur. J'en ai parlé récemment dans ce sous-forum.

    0) Ne jamais utiliser \\ en fin de paragraphe.

    0,5) Si tu ne veux jamais d'alinéa en début de paragraphe, mets \parindent à 0pt.

    1) Tu peux placer un nœud le long du |- et choisir sa position avec la clé 'pos' :
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amssymb}
    \usepackage{witharrows}
    
    \begin{document}
    
    \[ \begin{WithArrows}[displaystyle, ygap = 2mm, ystart = 0mm,
                          tikz-code = {
                            \draw (#1) -- ++(4cm,0) |- node[pos=0.25] {#3} (#2) ; }]
    \sum_{n=1}^N \sin\Bigl( \frac{1}{2^{n+1}} \Bigr)
                 \cos\Bigl( \frac{3}{2^{n+1}} \Bigr) &= \sum_{n=1}^N f(n) - f (n+1)\Arrow[ll,jump=4]{On peut passer de \\ là à là directement} \\
    &= \sum_{n=1}^N f(n) - \sum_{n=1}^N f (n+1) \\
    &= \sum_{n=1}^N f(n) - \sum_{n=2}^{N+1} f (n) \\
    &= f(1) + \left( \sum_{n=2}^N f(n) - \sum_{n=2}^{N} f(n) \right) - f(N+1) \\
    &= f(1) - f(N+1) \\
    &= \frac{1}{2}\Bigl( \sin(1) - \sin \Bigl ( \frac{1}{2^{N}} \Bigr) \Bigr).
    \end{WithArrows} \]
    
    \end{document}
    
    2-4) Pour que la détermination de l'abscisse la plus grande soit automatique, le plus propre à mon avis consiste à utiliser un alignment de TeX (ici, un environnement alignat*). De cette façon, on n'a pas besoin de mettre les formules dans des boîtes. Il suffit de placer une marque avec \tikzmark dans la première colonne suivant celles contenant les formules mathématiques ; ensuite, on peut extraire l'abscisse de la marque et en faire ce que l'on veut.

    Pour la fin de ton 2), tu aurais pu mettre ce que tu souhaites mesurer dans une boîte puis utiliser \settowidth pour affecter la largeur de cette boîte à une longueur de ton choix définie avec \newlength :
    \newlength{\machin}%
    \settowidth{\machin}{truc à mesurer en mode horizontal}%
    % Tu peux maintenant utiliser \machin partout où une longueur est attendue.
    
    Code pour 2, 3, 4) :
    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amssymb}
    \usepackage{tikz}
    \usetikzlibrary{calc, tikzmark}
    
    \colorlet{fleche justification}{blue!30!green!30!white}
    \colorlet{texte justification}{blue!60!white}
    
    \tikzset{
      fleche justification/.style={
        ->, draw=fleche justification, rounded corners=5pt,
      },
      texte justification/.style={align=left, color=texte justification},
    }
    
    \newcommand*{\myarrow}[4]{%
      \begin{tikzpicture}[remember picture, overlay]
        \path[fleche justification] let \p1=(pic cs:#1),
                                    \p2=(pic cs:#2),
                                    \p3=(pic cs:#3),
                                    \n1={max(\x1, \x3)} in
          (\n1, \y1) -| node[right, pos=0.75, texte justification] {#4}
          (\x2, \y3) -- (\n1, \y3);
      \end{tikzpicture}%
    }
    
    \newcommand*{\mymark}[1]{%
      % On se décale d'un em vers la droite et se place à la hauteur de l'axe
      % mathématique.
      \quad\raisebox{\fontdimen22\textfont2}{\tikzmark{#1}}%
    }
    
    \begin{document}
    
    \begin{alignat*}{2}
    \sum_{n=1}^N \sin\Bigl( \frac{1}{2^{n+1}} \Bigr)
                 \cos\Bigl( \frac{3}{2^{n+1}} \Bigr)
      &= \sum_{n=1}^N f(n) - f(n+1) \mymark{debut}
      &&\hspace{1cm}% espace demandé
        \tikzmark{droite}\\
      &= \sum_{n=1}^N f(n) - \sum_{n=1}^N f (n+1) \\
      &= \sum_{n=1}^N f(n) - \sum_{n=2}^{N+1} f(n) \\
      &= f(1) + \left( \sum_{n=2}^N f(n) - \sum_{n=2}^{N} f(n) \right) - f(N+1) \\
      &= f(1) - f(N+1) \mymark{fin}\\
      &= \frac{1}{2}\Bigl( \sin(1) - \sin \Bigl ( \frac{1}{2^{N}} \Bigr) \Bigr).
    \myarrow{debut}{droite}{fin}{On peut directement\\passer d'ici à là.}
    \end{alignat*}
    
    \end{document}
    
    114240
Connectez-vous ou Inscrivez-vous pour répondre.