Paramètre d'un théorème

Bonsoir à tous,
Je débute dans l'utilisation des environnements de type theorem, proof et autres. Mon souci est un petit détail d'esthétique : quand j'entre la commande
\begin{theorem}[Pythagore]
Dans un triangle rectangle, bla bla bla...
\end{theorem}
l'affichage final commence par "Theorem 1" (en gras) puis "(Pythagore)" (police normale sans effet particulier). J'aimerais changer les deux choses suivantes :
  • Remplacer "(Pythagore)" par "[Pythagore]", en gras
  • Supprimer la numérotation inhérente à l'environnement theorem
Pour le second point, j'ai essayé de bidouiller avec du renewcommand, mais ça n'a donné que des erreurs. Pourriez-vous m'indiquer une manière de résoudre ces deux problèmes ? Je laisse en PS le code LaTeX que j'utilise, allégé des commandes sans rapport ici (en-têtes, pieds de pages). Merci d'avance pour toute aide (:D
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath, amsfonts, amssymb, enumitem, cancel, lmodern, mathtools}
\usepackage[polutonikogreek, french]{babel}
\usepackage{graphicx, stmaryrd, color, dsfont, amsthm}
\usepackage[margin=1in]{geometry}
  
\newtheorem{Demonstration}{Démonstration}                                 % Environnement pour les démonstrations
\renewcommand{\theDemonstration}{}
\newenvironment{demo}{\begin{Demonstration}}{\hfill $\square$\end{Demonstration}}

Réponses

  • Je ne suis pas à mon ordi, mais as-tu regardé l'exemple commençant par
    \newtheoremstyle{bfnote}
    
    dans la documentation d'amsthm?
  • En effet, ça règle tout à fait le problème de la mise en gras. Par contre, je n'ai pas trouvé d'option pour remplacer les parenthèses autour de l'argument par des crochets. Heureusement, il est expliqué (juste après, puisque cela relève aussi de \newtheoremstyle ) comment supprimer les parenthèses : je me contenterai de rajouter les crochets manuellement.

    Merci beaucoup pour ton aide et bonne soirée !
  • Ne peux-tu pas, dans l'exemple, remplacer les parenthèses à l'intérieur de l'argument de \thmnote par des crochets ? Quel est le problème rencontré en procédant ainsi ?
  • Sans retour à la ligne après le “theorem head” :
    \documentclass[french]{article}
    \usepackage{lmodern}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    \usepackage{amsthm}
    
    \newtheoremstyle{SansNumero}%
      {}{}%
      {\itshape}{}%
      {\bfseries}{.}%
      { }%
      {\thmname{#1}\thmnote{ [#3]}}
    
    \theoremstyle{SansNumero}
    \newtheorem{thmSansNum}{Théorème}
    
    \begin{document}
    
    \begin{thmSansNum}
      Théorème bidon.
    \end{thmSansNum}
    
    \begin{thmSansNum}[Pythagore]
      Soit $ABC$...
    \end{thmSansNum}
    \begin{proof}
      C'est ainsi.
    \end{proof}
    
    \end{document}
    
    Avec retour à la ligne automatique après le “theorem head” :
    \documentclass[french]{article}
    \usepackage{lmodern}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    \usepackage{amsthm}
    
    \newtheoremstyle{SansNumero}%
      {}{}%
      {\itshape}{}%
      {\bfseries}{}%
      {\newline}%
      {\thmname{#1}\thmnote{ [#3]}}
    
    \theoremstyle{SansNumero}
    \newtheorem{thmSansNum}{Théorème}
    
    \begin{document}
    
    \begin{thmSansNum}
      Théorème bidon.
    \end{thmSansNum}
    
    \begin{thmSansNum}[Pythagore]
      Soit $ABC$...
    \end{thmSansNum}
    \begin{proof}
      C'est ainsi.
    \end{proof}
    
    \end{document}
    
    107000
    107002
  • Faute d'avoir bien compris le fonctionnement de \newtheoremstyle, je n'avais pas pensé à remplacer les crochets dans l'exemple... Mais ton code m'a fait comprendre comment c'était possible. Je viens de passer un bout de temps à le triturer pour voir comment ça fonctionnait, ce que l'on pouvait modifier, etc. C'était très instructif, finalement je suis arrivé à ceci (si d'autres débutants recherchent un code de ce genre) :
    \theoremstyle{remark}
    \newtheorem*{remark}{Remarque}
    \newtheorem*{Demonstration}{Démonstration}
    
    \newtheoremstyle{SansNum}%
      {10pt}{5pt}                           % Espacement avant/après le théorème. 
      {\itshape}{}                          % Le corps du théorème est en italique.
      {\bfseries}{}%
      {\newline}                            % Retour à la ligne dès le début du théorème.  
      {\thmname{#1}\thmnote{ [#3]}.}        % Ce qui apparaît au début : "Théorème" + note + "."
    
    \theoremstyle{SansNum}
    \newtheorem{thmSansNum}{Théorème}
    
    
    \newcommand{\thm}[2]{\begin{thmSansNum}[#1] #2 \end{thmSansNum}}
    \newcommand{\dem}[1]
    	{\begin{small}\begin{proof}#1
    	\end{proof}\end{small}}
    \newcommand{\rem}[1]{\begin{remark}#1 \end{remark}}
    
    \begin{document}
    
    
    \thm{}{Toute partie infinie de $\mathbb{N}$ est dénombrable.}
    
    \rem{En pratique, on n'utilisera rarement ce théorème.}
    
    \thm{de Cantor}{Soit $E$ un ensemble. Alors $E$ n'est pas équipotent à $\mathcal{P}(E)$.}
    
    \dem{Raisonnant par l'absurde, on fixe $f : E \longrightarrow \mathcal{P}(E)$ bijective. Considérons $A = \lbrace x\in E \mid x\notin f(x)\rbrace$. Puisque $f$ est surjective, on peut fixer un antécédent $y$ de $A$ par $f$. Mais l'on vérifie aussitôt que $y$ n'appartient ni à $A$, ni à $E\backslash A$.}
    
    \rem{\begin{itemize}
    \item Ce théorème est hors-programme, mais il est bon de connaître l'astuce mise en jeu.
    \item Intuitivement, les parties d'un ensemble sont toujours bien plus nombreuses que les éléments de l'ensemble en question. 
    \end{itemize}}
    
    Il y a sans doute pas mal de choses qu'on peut améliorer (le visuel est trop monotone à mon goût 8-) ), mais c'est déjà très efficient. Merci encore pour tes réponses qui m'ont beaucoup appris ! ;-)
  • Content que ça marche, mais j'éviterais les commandes \thm, \rem et \dem ci-dessus. À mon avis, le code source est plus lisible avec les environnements. Un éditeur spécialisé en LaTeX doit permettre d'insérer très rapidement n'importe quel environnement (C-c C-e avec Emacs + AUCTeX, par exemple).

    Pour un look moins austère, tu peux regarder tcolorbox, par exemple ici même.

    Attention aux espaces après tes #1, #2, etc. : en général, ils ne sont pas ignorés (là, ils le seront grâce aux \end{machin} particuliers que tu utilises qui doivent faire un \unskip).

    Autre chose : plutôt que de passer un argument vide {} assez souvent, tu peux utiliser un argument optionnel dont la valeur par défaut est vide :
    \newcommand{\thm}[2][]{%
      \begin{thmSansNum}[#1]#2\end{thmSansNum}%
      \ignorespaces
    }
    
    (avec etoolbox, on peut même tester si l'argument #1 est vide et ne pas mettre du tout les crochets le cas échéant ; dans certains cas, c'est nécessaire).

    Mais ici, comme je l'ai dit, je ne définirais pas de telle commande : un environnement au nom bien choisi me paraît préférable.
Connectez-vous ou Inscrivez-vous pour répondre.