Comment ajouter un carré en fin de démonstration ?#

Ce symbole est utilisé pour remplacer l’expression latine quod erat demonstrandum (QED), autrement dit notre CQFD. Il est parfois appelé « halmos », du nom du mathématicien Paul Halmos.

L’obtention de ce symbole n’est pas compliquée, il s’agit du symbole mathématique \square. La problématique tient plus à son positionnement sur la ligne du document où elle vient conclure la démonstration.

1.  Avec l’extension amsthm#

L’extension amsthm fournit un environnement proof qui ajoute automatiquement ce symbole en fin de démonstration :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{amsthm}

\begin{document}
\begin{proof}
  (...) Et, par récurrence :
  \[  (X+Y)^{n} = \sum_{{k=0}}^{n} {n \choose k} X^{{n-k}} Y^{k}  \]
  Ce qui généralise l'\emph{identité polynomiale}.
\end{proof}
\end{document}

Notez bien que amsthm propose par des défauts des dénominations anglaises (comme Proof). Vous devez donc charger babel et passer l’option french pour retrouver une terminologie francisée.

Cependant, si la démonstration se termine par une formule en exergue, le symbole CQFD risque d’apparaître trop bas. Son placement pourra être corrigé en utilisant la commande \qedhere comme étiquette de formule, avec la commande \tag. En voici un exemple :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{amsthm,mathtools}

\begin{document}
Sans correction :
\begin{proof}
  Texte...
  \begin{equation*}
    maths...
  \end{equation*}
\end{proof}

Avec correction :
\begin{proof}
  Texte...
  \begin{equation*}
    maths... \tag*{\qedhere}
  \end{equation*}
\end{proof}
\end{document}

1.1.  Changer le symbole de fin de démonstration#

Il est très simple de changer le symbole de fin de démonstration, en redéfinissant la commande \qedsymbol :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{amsthm,amssymb}

  \renewcommand{\qedsymbol}{$\blacksquare$}

\begin{document}
\begin{proof}
  Et nous y voilà.
\end{proof}
\end{document}

De la même façon, il est très simple de faire disparaître le carré, en redéfinissant \qedsymbol pour qu’elle ne fasse rien :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)  
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{amsthm}

  \renewcommand{\qedsymbol}{}

\begin{document}
\begin{proof}
  Et nous y voilà.
\end{proof}
\end{document}

2.  Avec l’extension ntheorem#

L’extension ntheorem vous permet de définir de nouveaux styles de théorèmes, de lemme, de démonstration, etc.

Avec l’option standard, elle vous fournit un ensemble d’environnements prédéfinis, dont Proof pour les démonstrations. En ajoutant l’option thmmarks, vous ferez apparaître des marques de fin de démonstration :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage[standard,thmmarks]{ntheorem}

\begin{document}
\begin{Proof}
  (...) Et, par récurrence :
  \[  (X+Y)^{n} = \sum_{{k=0}}^{n} {n \choose k} X^{{n-k}} Y^{k}  \]
  Ce qui généralise l'\emph{identité polynomiale}.
\end{Proof}
\end{document}

Malgré l’usage de l’extension babel et de l’option french, le terme anglais Proof reste utilisé. L’extension ne propose en effet pas d’options de localisation en français et babel ne permet pas non plus de résoudre ce point. Cependant, l’extension dispose de commandes pour créer (\newtheorem) et paramétrer de nouveaux environnements mathématiques. Dès lors, il est possible de dupliquer les environnements comme Proof et de les franciser, comme dans l’exemple suivant.

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage[standard,thmmarks]{ntheorem}

  \theoremheaderfont{\scshape}    % Police du titre du "théorème"
  \theorembodyfont{\normalfont}   % Police du texte du "théorème"
  \theoremstyle{nonumberplain}    % Style du "théorème" (ici, sans numéro)
  \theoremseparator{}             % Séparateur en cas numérotation
  \theoremsymbol{%                % Symbole de fin de "théorème" 
    \ensuremath{_\blacksquare}}  
  \newtheorem{dem}{Démonstration} % Définition de notre nouvel environnement
                                  % avec les paramètres qui précèdent

\begin{document}
\begin{dem}
  (...) Et, par récurrence :
  \[  (X+Y)^{n} = \sum_{{k=0}}^{n} {n \choose k} X^{{n-k}} Y^{k}  \]
  Ce qui généralise l'\emph{identité polynomiale}.
\end{dem}
\end{document}

Les définitions par défaut des environnements de l’extension ntheorem sont données dans sa documentation à la section 4 Examples (dans notre exemple, nous avons également modifié le symbole de fin).

Par ailleurs, si la documentation de cette extension reste un peu théorique, vous trouverez sur le site du Zeste de Savoir des exemples bien plus pédagogiques en français.

3.  Avec l’extension QED#

L’extension QED, de Paul Taylor, définit un environnement de preuve, Proof, et une commande \qed. Vous devrez charger manuellement l’extension amssymb pour disposer du symbole carré.

Vous aurez également à disposition ces variantes :

Commande

Rendu

Signification

\qed

\(\square\)

Quod erat demonstrandum / Ce qu’il fallait démontrer

\QED

Q.E.D.

Quod erat demonstrandum / Ce qu’il fallait démontrer

\QEI

Q.E.I.

Quod erat inveniendum / Ce qu’il fallait trouver

\QEF

Q.E.F.

Quod erat faciendum / Ce qu’il fallait faire

Notez que ces commandes (\qed, \QED, etc) n’ont pas d’effet si elles ne suivent pas une commande qui démarre une preuve (\begin{Proof} ou \Proof).

Avertissement

L’extension QED a été développée en 1993-1995. Avec elle, Paul Taylor a apporté une solution automatique à un problème délicat : en effet, certaines preuves se terminent par une équation en exergue, d’autres non. Si le fichier d’entrée contient ...\] \end{proof}, achève la composition des mathématiques, puis se prépare immédiatement pour une nouvelle ligne, avant même de lire le code de la fin de démonstration.

Cette extention a donc un intérêt historique et son code reste intéressant. Mais les autres solutions proposées sont préférables si vous travaillez sur un document récent.

4.  Avec des modifications manuelles#

Si vos besoins sont simples, une commande \qed peut être définie manuellement (pour du texte) :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{mathtools, amssymb}

  % Définition d'un symbole \qed
  \newcommand{\monhfill}{
    \parfillskip=0pt
    \widowpenalty=10000
    \displaywidowpenalty=10000
    \finalhyphendemerits=0
    \unskip\nobreak\null\hfil\penalty50
    \hskip2em\null\hfill
  }
  \newcommand{\symboleqed}{\ensuremath{\square}}
  \newcommand{\qed}{\monhfill\symboleqed\par}

\begin{document}
(...) Et, par récurrence :
\[  (X+Y)^{n} = \sum_{{k=0}}^{n} {n \choose k} X^{{n-k}} Y^{k} \]
Ce qui généralise l'\emph{identité polynomiale}.\qed
\end{document}

Le symbole de fin de démonstration sera placé à droite, sur la ligne s’il reste de la place, sur la ligne d’en-dessous dans le cas contraire.