Belle mise en page de théorème

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Re: Belle mise en page de théorème

Messagepar pg » Lundi 17 Novembre 2008, 08:55

(1) Argument optionnel. Ça ne pose pas de problèmes : il suffit de rediriger \csname #1\endcsname, selon qu'il est suivit ou non d'une argument optionnel, vers \csname #1@opt\endcsname et \csname #1@nopt\endcsname. Le seul petit détail technique est que pour définir une commande avec argument dans une commande qui en a déjà, il faut doubler les #, c'est-à-dire écrire \csname #1@opt\endcsname[##1] et non \csname #1@opt\endcsname[#1] pour que TeX puisse faire la différence entre #1, qui est l'argument de \new@theorem, et le nouvel argument ##1 de \csname #1@opt\endcsname.

La nouvelle définition de \new@theorem est donc :
Code: Tout sélectionner
\def\new@theorem#1#2#3{
\expandafter\gdef\csname #1\endcsname{%
  \@ifnextchar[{\csname #1@opt\endcsname}{\csname #1@nopt\endcsname}}
\expandafter\gdef\csname #1@opt\endcsname[##1]{%
   \@ifnotempty{#3}{\refstepcounter{#3}}%
   {\bfseries#2\@ifnotempty{#3}{~\csname the#3\endcsname}~(##1).~}\ignorespaces}
\expandafter\gdef\csname #1@nopt\endcsname{%
   \@ifnotempty{#3}{\refstepcounter{#3}}%
   {\bfseries#2\@ifnotempty{#3}{~\csname the#3\endcsname}.~}\ignorespaces}
\expandafter\gdef\csname end#1\endcsname{}
}


(2) Commandes de changement de style. Les \theoremheadfont et autres \thmnote sont des commandes définissant des commandes. Les exemples de base de telles commandes sont les \author, \title et \date de LaTeX. Par exemple, LaTeX définit \author de la façon suivante
Code: Tout sélectionner
\documentclass{article}
\def\author#1{\def\theauthor{#1}}
\author{Moi}
\begin{document}
Auteur~: \theauthor
\end{document}

(En fait, c'est plutôt \def\author#1{\gdef\@author{#1}} car LaTeX considère \@author comme une commande interne dont l'utilisateur n'aura pas besoin, mais le principe est le même.) La commande \author{Moi} définit donc \theauthor comme étant égal à Moi et ensuite, on peut utiliser \theauthor pour imprimer Moi où on veut dans le document.

En adaptant à \theoremheadfont, cela donne :
Code: Tout sélectionner
\def\theoremheadfont#1{\def\theorem@headfont{#1}}

Si on veut pouvoir utiliser \theorem@headfont quelque part, il ne faut surtout pas oublier d'utiliser au moins une fois \theoremheadfont (sinon, on obtiendra une erreur undefined control sequence).

L'utilisateur va typiquement taper quelque chose du type :
Code: Tout sélectionner
\theoremheadfont{\scshape}
\newtheorem*{axiome}{Axiome}
\theoremheadfont{\itshape}
\newtheorem*{note}{Note}
et il faut alors que le mot Axiome soit en \scshape et Note en \itshape. À la place du \bfseries (ou plutôt du \textbf) qu'on avait utilisé jusqu'à présent, on peut penser à simplement utiliser \theorem@headfont :
Code: Tout sélectionner
\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\makeatletter
\def\theoremheadfont#1{\def\theorem@headfont{#1}}

\def\newtheorem#1#2{%
\newcounter{#1}
\expandafter\gdef\csname #1\endcsname{\refstepcounter{#1}{\theorem@headfont#2~\csname the#1\endcsname.}}
\expandafter\gdef\csname end#1\endcsname{}
}
\makeatother

\theoremheadfont{\bfseries}
\newtheorem{theoreme}{Théorème}

\theoremheadfont{\scshape}
\newtheorem{corollaire}{Corollaire}

\begin{document}

\begin{theoreme}
Bla bla
\end{theoreme}

\begin{corollaire}
Bla bla
\end{corollaire}

\begin{theoreme}
Bla bla
\end{theoreme}

\end{document}

Malheureusement, comme on le voit en compilant cet exemple, tous les théorèmes sont en \scshape car le dernier appel de \theoremheadfont redéfinit \theorem@headfont comme étant \scshape et donc la valeur du premier \theoremheadfont{\bfseries} est perdue.

Le problème est qu'il faut capturer la valeur qu'a \theorem@headfont au moment de la définition du théorème, pas au moment où le théorème va être appelé. \def ne permet pas de faire cela, mais \let oui. Voici un exemple illustrant la différence entre \let et \def :
Code: Tout sélectionner
\documentclass{article}
\def\a{1}
\def\b{\a}
\let\c\a
\def\a{2}
\begin{document}
\verb"\b" vaut \b

\verb"\c" vaut \c
\end{document}

Dans cet exemple, \b vaut 2 tandis que \c vaut 1. La raison est que \b est défini comme étant ce qu'est actuellement \a tandis que \c est défini comme ce qu'était \a lors de la définition de \c (c'est-à-dire 1 ici).

On va donc stocker, grâce à \let, la valeur de \theorem@headfont dans une variable dont le nom dépend du théorème qu'on est en train de définir (très important, sinon, lorsqu'on définira un autre théorème, le \let détruirai la valeur stockée pour y mettre la nouvelle et donc ça ne serait pas mieux qu'avant). Cela se fait bien sûr avec quelque chose du genre \csname theorem@headfont@#1\endcsname. Plus précisément, on rajoute au début de \new@theorem la ligne suivante :
Code: Tout sélectionner
\global\expandafter\let\csname theorem@headfont@#1\endcsname=%
   \theorem@headfont

puis on remplace \textbf par \csname theorem@headfont ; on obtient :
Code: Tout sélectionner
\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\makeatletter
\def\theoremheadfont#1{\def\theorem@headfont{#1}}

\def\newtheorem#1#2{%
\global\expandafter\let\csname theorem@headfont@#1\endcsname=%
   \theorem@headfont
\newcounter{#1}
\expandafter\gdef\csname #1\endcsname{\refstepcounter{#1}{\csname theorem@headfont@#1\endcsname#2~\csname the#1\endcsname.}}
\expandafter\gdef\csname end#1\endcsname{}
}
\makeatother

\theoremheadfont{\bfseries}
\newtheorem{theoreme}{Théorème}

\theoremheadfont{\scshape}
\newtheorem{corollaire}{Corollaire}

\begin{document}

\begin{theoreme}
Bla bla
\end{theoreme}

\begin{corollaire}
Bla bla
\end{corollaire}

\begin{theoreme}
Bla bla
\end{theoreme}

\end{document}


(3) Changer le format de l'argument optionnel. On peut vouloir que l'argument optionnel soit mis entre parenthèses ou pas ; on peut vouloir qu'il soit en italique ou pas ; ou qu'il soit précédé d'un signe de ponctuation quelconque. Une syntaxe agréable pour cela serait quelque chose du genre :
Code: Tout sélectionner
\thmnote{~(#1)}
\thmnote{~#1}
\thmnote{~\textit{#1}}
\thmnote{~---~\textit{#1}}
etc.

Pour permettre cette syntaxe, il faut définir une commande qui définit une commande dont l'argument est celui de la commande originelle. Cela ne pose pas de problème particulier :
Code: Tout sélectionner
\long\def\thmnote#1{\long\def\theorem@note##1{#1}}


Remarque : concernant, \@iden, c'est une commande qui est définie de la façon suivante~:
Code: Tout sélectionner
\long\def\@firstofone#1{#1}
\let\@iden\@firstofone
C'est donc l'identité. Elle est utile en certains circonstances pour raccourcir les écritures. Ici, elle ne sert à rien (le fait qu'elle soit présente dans la définition de \thmnote est un reliquat d'anciens essais de ma part ; on peut la supprimer).

Intégrons maintenant \thmnote à \newtheorem via un \global\expandafter\let\csname theorem@note@#1\endcsname=\theorem@note comme on l'a fait pour \thmheadfont :
Code: Tout sélectionner
\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\makeatletter

% macros for checking if (not) empty (from amsthm.sty)

\long\def\@ifempty#1{\@xifempty#1@@..\@nil}
\long\def\@xifempty#1#2@#3#4#5\@nil{%
  \ifx#3#4\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
\long\def\@ifnotempty#1{\@ifempty{#1}{}}

% macros pour \newtheorem

\def\theoremheadfont#1{\def\theorem@headfont{#1}}
\long\def\thmnote#1{\long\def\theorem@note##1{#1}}

\def\newtheorem{%
  \@ifstar{\newtheorem@star}{\newtheorem@nostar}}
\def\newtheorem@star#1#2{\new@theorem{#1}{#2}{}}
\def\newtheorem@nostar#1{%
  \@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}
\def\@othm#1[#2]#3{\new@theorem{#1}{#3}{#2}}
\def\@nthm#1#2{%
  \@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
\def\@xnthm#1#2[#3]{\newcounter{#1}[#3]%
  \expandafter\gdef\csname the#1\endcsname{\csname the#3\endcsname.\arabic{#1}}
  \new@theorem{#1}{#2}{#1}}
\def\@ynthm#1#2{\newcounter{#1}\new@theorem{#1}{#2}{#1}}

\def\new@theorem#1#2#3{
\global\expandafter\let\csname theorem@headfont@#1\endcsname=%
   \theorem@headfont
\global\expandafter\let\csname theorem@note@#1\endcsname=%
   \theorem@note
\expandafter\gdef\csname #1\endcsname{%
  \@ifnextchar[{\csname #1@opt\endcsname}{\csname #1@nopt\endcsname}}
\expandafter\gdef\csname #1@opt\endcsname[##1]{%
   \@ifnotempty{#3}{\refstepcounter{#3}}%
   {\csname theorem@headfont@#1\endcsname #2\@ifnotempty{#3}{~\csname the#3\endcsname}\csname theorem@note@#1\endcsname{##1}.~}\ignorespaces}
\expandafter\gdef\csname #1@nopt\endcsname{%
   \@ifnotempty{#3}{\refstepcounter{#3}}%
   {\csname theorem@headfont@#1\endcsname #2\@ifnotempty{#3}{~\csname the#3\endcsname}.~}\ignorespaces}
\expandafter\gdef\csname end#1\endcsname{}
}
\theoremheadfont{\bfseries}
\thmnote{~(#1)}
\makeatother

\newtheorem{theoreme}{Théorème}[section]
\newtheorem{corollaire}[theoreme]{Corollaire}
\newtheorem*{remarque}{Remarque}
\theoremheadfont{\scshape}
\thmnote{~#1}
\newtheorem{axiome}{Axiome}

\begin{document}

\section{Titre}

\begin{axiome}[du choix]
Bla bla
\end{axiome}

\begin{theoreme}[important]
Bla bla
\end{theoreme}

\begin{corollaire}
Bla bla
\end{corollaire}

\begin{theoreme}Bla bla\end{theoreme}

\begin{remarque}
Bla bla
\end{remarque}

\end{document}

On peut bien sûr de même incorporer successivement les commandes \thmtitle, \thmnumber (qui formatent le titre et le numéro respectivement, à la manière de \thmnote qui formate le commentaire du théorème). De même pour \theorembodyfont (qui change la fonte du corps du théorème~; à mettre juste avant les deux \ignorespaces), \theoremheadpunct (qui change la ponctuation utilisée après le théorème, par exemple . --- au lieu de .), etc.

Dans customtheorem, j'en ai défini tout un paquet et il y en aura sûrement d'autres. Le but est d'avoir suffisamment de commandes pour pouvoir tout personnaliser simplement. à chaque fois qu'on rajoute un format, on peut devoir rajouter des commandes du type \theorembodyfont ; par exemple, lorsque j'ai rajouté le format sidebar pour toi, j'ai défini \theoremsidebarsymbol, \theoremsidebarbefore, \theoremsidebarafter et \theoremsidebarcolor pour en permettre la personnalisation.

(4) Ce qu'il reste à faire.
  • Mettre en place un \theoremstyle qui permet de changer arbitrairement la présentation des théorèmes, que ce soit pour avoir un saut de ligne après le titre du théorème ou pour obtenir des exemples plus évolués comme celui-ci en deux juste deux lignes de code :
    fancy_tikz_theorem.png
  • Faire une interface relativement conviviale pour permettre à l'utilisateur averti de définir facilement un nouveau style de théorème (cela obligera à encore modifier un peu \new@theorem pour l'amener à ce qu'il est dans customtheorem.sty)
  • Définir un à un les styles courants pour faire en sorte que l'utilisateur standard puisse en trouver un qui satisfait à ces besoins. D'un point de vue interne, les techniques/environnements à maîtriser sont :
    • les listes générales \begin{list} \end{list} que LaTeX utilise pour les théorèmes standards qu'on trouve normalement dans les articles ;
    • le package boites (ou un équivalent) pour faire des choses plus évoluées comme des encadrements ou des choses comme le format sidebar et permettre un changement de page ;
    • comment transformer une commande en environnement avec lrbox (alternativement, on peut utiliser \collect@body ou le package verbatim) ;
    • savoir utiliser un package graphique (comme TikZ) pour faire les théorèmes les plus évolués graphiquement.
Suite la prochaine fois.
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Publicité

Re: Belle mise en page de théorème

Messagepar Benjamin » Lundi 17 Novembre 2008, 19:46

Merci encore pour toutes ces explications.

Concernant le package boites, j'ai étudié un peu comment il est écrit, j'aimerais que tu me confirmes si j'ai bien compris son principe de fonctionnement : il place chaque ligne dans une boite et ensuite il met les boîtes les unes à la suite des autres en ajustant les espaces entre chaque boîte et en veillant à conserver les encadrements?

Dans les format les plus simples de customtheorem comme standard tu as tout placé dans une liste afin de pouvoir utiliser les arguments de mise en page de ces dernières c'est bien ça ?
Benjamin
Hecto-utilisateur
 
Messages: 58
Inscription: Mardi 17 Avril 2007, 17:02
Statut actuel: Post-bac | CPGE

Re: Belle mise en page de théorème

Messagepar pg » Mardi 18 Novembre 2008, 00:52

Benjamin a écrit:Concernant le package boites, j'ai étudié un peu comment il est écrit, j'aimerais que tu me confirmes si j'ai bien compris son principe de fonctionnement : il place chaque ligne dans une boite et ensuite il met les boîtes les unes à la suite des autres en ajustant les espaces entre chaque boîte et en veillant à conserver les encadrements?

Le principe est à peu près celui-là, sauf que pour encadrer, le package met une barre horizontale au début et à la fin de l'environnement et une barre verticale au début et à la fin de chaque ligne. Plus précisément, pour encadrer avec un fond coloré, on peut faire ceci.
  • \bkvz@top: ce qui est mis avant la première ligne ; par exemple \def\bkvz@top{\hrule}
  • \bkvz@bottom: ce qui est mis après la dernière ligne ; par exemple \def\bkvz@bottom{\hrule}
  • \bkvz@left: ce qui est mis à droite de chaque ligne ; par exemple \def\bkvz@left{\vrule\hskip3pt}
  • \bkvz@right: ce qui est mis à droite de chaque ligne ; par exemple \def\bkvz@right{\hskip3pt\vrule}
  • \bk@line: ce qui est appliqué à chaque ligne ; par exemple \def\bk@line{\hbox to \linewidth{\bkvz@left\colorbox{blue!20}{\box\bk@bxa}\bkvz@right}}

Benjamin a écrit:Dans les format les plus simples de customtheorem comme standard tu as tout placé dans une liste afin de pouvoir utiliser les arguments de mise en page de ces dernières c'est bien ça ?

L'idée d'utiliser des listes remonte aux premiers temps de LaTeX (d'ailleurs, tous les packages mettant en forme les théorèmes les utilisent), mais l'avantage des listes est effectivement qu'elles sont très personnalisables.
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Belle mise en page de théorème

Messagepar Benjamin » Mardi 18 Novembre 2008, 17:11

Ouki merci!!
Benjamin
Hecto-utilisateur
 
Messages: 58
Inscription: Mardi 17 Avril 2007, 17:02
Statut actuel: Post-bac | CPGE

Re: Belle mise en page de théorème

Messagepar flo.baet » Mercredi 19 Novembre 2008, 00:02

Bonjour,

@pg : J'ai trouvé votre code latex pour faire des encadrés de théorèmes plus evolués.
voir : http://les-mathematiques.u-strasbg.fr/p ... ?10,457507

j'aimerai utiliser votre code latex pour mes théorèmes. Malheureusement, j'ai un petit problème.

J'aimerai avoir le titre de mon théorème a coté de Théorème

Exemple : Théorème 2.2 Internement exponentiellement stable

Pourriez-vous me dire ce que je dois modifier d'avance merci.

Code: Tout sélectionner
\def\tikztitlebox#1#2{
      \tikzstyle{titlebox} = [fill=red!5, rectangle, inner sep=5pt, inner ysep=5pt]
      \tikzstyle{title}=[text=black,above right,ellipse]
      \bigskip\noindent\begin{tikzpicture}
      \node[titlebox] (box){#1};
      \useasboundingbox (box);
      \draw[color=red,very thick] (box.north west)--(box.south west);
      \node[title] at ($ (box.north west) + (-1cm,0.15cm)$) {#2};
      \end{tikzpicture}
}

%
\begin{theoreme}{\textcolor{red}{\textbf{Internement exponentiellement stable.}}}\\
Blabla blabla blabla blabla blabla blabla blabla blabla blabla
\end{theoreme}
flo.baet
Utilisateur
 
Messages: 3
Inscription: Mardi 18 Novembre 2008, 23:53
Statut actuel: Post-bac | Master

Re: Belle mise en page de théorème

Messagepar Tonn83 » Mercredi 19 Novembre 2008, 00:13

Bonjour,

Toute cette discussion m'a réellement intéressé ! Je remercie pg pour toutes les explications qu'il a apportées. Mais peut-on aller plus loin ? :) Ne pourrait-on pas inclure à \newtheorem un quatrième argument optionnel, qui définit la mise en page du "théorème" ? Je commence seulement à comprendre ces aspects. Je n'ai pas réussi à adapter la solution proposée par pg.

Par exemple, on pourrait vouloir taper un code du genre :

Code: Tout sélectionner
\newtheorem{theoreme}{Th\'eor\`eme}{%
  \define{style}{\textsc}%
  ...}


L'option style définirait le style dans lequel est écrit Théorème. Si rien n'est précisé, par défaut il est écrit en gras.
Pour définir la macro \define, je pense passer par la macro auxiliaire :

Code: Tout sélectionner
\def\precise@A[#1]#2#3{%
  \ifthenelse{\equal{#2}{style}}{%
       \expandafter\def\csname result@#1@name\endcsname{%
          #3}}{%
          }%
  ...}


Je voudrais defénir \precise comme \precise@A[#1] à l'intérieur de \newtheorem. Par défaut, on affecte différents paramètres dont result@#1@name des valeurs par défaut qu'on souhaite, puis, éventuellement s'il a été appelé dans les options, on le redéfinit. Malheureusement, j'ai un problème avec le code suivant. Peut-on m'expliquer les erreurs que j'ai commises ? :roll:

Code: Tout sélectionner
%Définition de \newresult
\def\newresult{%
    %Valeurs par défaut des paramètre
    \expandafter\def\csname result@#1@name\endcsname{\bfseries}%
    \expandafter\def\csname result@#1@number\endcsname{\numeric}%
    \expandafter\def\csname result@#1@body\endcsname{\itshape}%
    \expandafter\def\csname result@#1@width\endcsname{\textwidth}%
    %Définition locale de la macro \precise
    {\def\precise##1##2{\precise@A[#1]{##1}{##2}}
    \@ifstar{}{}}}

%Définition de la commande \newresult*{Nom env}{Nom affiché}{conditions}
\def\newresult@star#1#2#3{%
    %Redéfinitions des paramètres qui ont été appelés
    \csname #3\endcsname%
    \new@result{#1}{#2}{}{#3}}

%Définition de la commande \newresult{Nom env}[Cpteur]{Nom affiché}{conditions}
\def\newresult@nostar#1{%
  \@ifnextchar[{\@onwresult{#1}}{\@nnwresult{#1}}}
\def\@onresult#1[#2]#3#4{%
    %Redéfinitions des paramètres qui ont été appelés
   \csname #4\endcsname%
   \new@result{#1}{#3}{#2}{#4}}

%Définition de la commande \newresult{Nom env}{Nom affiché}[section]{conditions}
\def\@nnwresult#1#2{%
  \@ifnextchar[{\@xnnwresult{#1}{#2}}{\@ynnwresult{#1}{#2}}}
\def\@xnnwresult#1#2[#3]#4{\newcounter{#1}[#3]%
    %Redéfinitions des paramètres qui ont été appelés
   \csname #4\endcsname%
  \expandafter\gdef\csname the#1\endcsname{\csname the#3\endcsname.\arabic{#1}}%
  \new@result{#1}{#2}{#1}{#4}}

%Définition de la commande \newresult{Nom env}{Nom affiché}{conditions}
\def\@ynnwresult#1#2#3{%
   %Redéfinitions des paramètres qui ont été appelés
  \csname #3\endcsname%
  \newcounter{#1}\new@theorem{#1}{#2}{#1}{#3}}

%Définition des conditions qui sont optionnelles
\def\precise@A[#1]#2#3{%
  \ifthenelse{\equal{#2}{style}}{%
       \expandafter\def\csname result@#1@name\endcsname{%
          #3}}{%
          }%
  \ifthenelse{\equal{#2}{number}}{%
       \expandafter\def\csname result@#1@number\endcsname{%
          #3}}{%
          }%
  \ifthenelse{\equal{#2}{body}}{%
       \expandafter\def\csname result@#1@body\endcsname{%
          #3}}{%
          }%
  \ifthenelse{\equal{#2}{width}}{%
       \expandafter\def\csname result@#1@width\endcsname{%
          #3}}{%
          }%
  }

%Définition de \new@result :
\def\new@result#1#2#3#4{%
%Génère le début de l'environnement
\expandafter\gdef\csname #1\endcsname{%
  \@ifempty{#4}{\csname #1@opt\endcsname}{%
                \csname #1@nopt\endcsname}%
  \csname result@#1@body\endcsname}
%Si option précisée
\expandafter\gdef\csname #1@opt\endcsname[##1]{%
   \@ifnotempty{#3}{\refstepcounter{#3}}%
   {\csname result@#1@name\endcsname #2%
      \@ifnotempty{#3}{~\csname the#3\endcsname}%
      \csname result@#1@name\endcsname{##1}.~}\ignorespaces}
\expandafter\gdef\csname #1@nopt\endcsname{%
   \@ifnotempty{#3}{\refstepcounter{#3}}%
   {\bfseries#2\@ifnotempty{#3}{~\csname the#3\endcsname}.~}\ignorespaces}
\expandafter\gdef\csname end#1\endcsname{%
  \normalsize}
}


J'imagine facilement que j'ai commis plusieurs erreurs d'affilée. :shock: Merci si vous pouvez les repérer et les corriger. Par ailleurs, je n'ai pas encore essayer d'utiliser le paramètre result@#1@width, qui permettra de redéfinir les marges gauche et droite.
----------------------------
Tonn83
Tonn83
Giga-utilisateur
 
Messages: 889
Inscription: Mercredi 05 Novembre 2008, 01:19
Localisation: Paris, France
Statut actuel: Actif et salarié | Enseignant

Re: Belle mise en page de théorème

Messagepar pg » Mercredi 19 Novembre 2008, 00:34

flo.baet a écrit:j'aimerai utiliser votre code latex pour mes théorèmes. Malheureusement, j'ai un petit problème.

J'aimerai avoir le titre de mon théorème a coté de Théorème

Exemple : Théorème 2.2 Internement exponentiellement stable


C'est ça que tu veux?

lefthanged_thm.png
lefthanged_thm.png (7.09 Kio) Vu 2419 fois


Dans ce cas, télécharge le fichier .zip que j'ai donné dans ce message, mets le contenu dans le même répertoire que ton fichier .tex et utilise le code suivant :

Code: Tout sélectionner
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage{customtheorem}
\theoremformat{lefthanged}
\theorempreskip{12pt}
\theoremnonfilledcolor{red}
\thmnote{~: \color{black}#1}
\newtheorem{theoreme}{Théorème}[section]

\begin{document}

\section{Théorèmes de stabilité}

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

\begin{theoreme}[Internement exponentiellement stable]
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
\end{theoreme}

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

\end{document}
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Belle mise en page de théorème

Messagepar pg » Mercredi 19 Novembre 2008, 00:38

Tonn83 a écrit:Mais peut-on aller plus loin ? :) Ne pourrait-on pas inclure à \newtheorem un quatrième argument optionnel, qui définit la mise en page du "théorème" ?

Je ne considérerai pas ça comme "aller plus loin". Si on doit définir plusieurs théorèmes de suite avec beaucoup de changements par rapport à la normale (chose qui est assez courante), on devra alors répéter à chaque fois toutes les lignes de codes, ce qui n'est pas très pratique.

Maintenant, la syntaxe que tu propose est certainement possible. J'essaierai de regarder ça plus tard, là je n'ai pas le temps.
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Belle mise en page de théorème

Messagepar flo.baet » Mercredi 19 Novembre 2008, 00:45

Oui exactement cela, mais juste avec une barre verticale a gauche
Autre petit problème, aucun problème lorsque je compile.
Mais quand je le lance en pdf tout plante aucun cadre aucune box texte qui se superpose ...
En YAP ou PS aucun problème.
Une idée ???
flo.baet
Utilisateur
 
Messages: 3
Inscription: Mardi 18 Novembre 2008, 23:53
Statut actuel: Post-bac | Master

Re: Belle mise en page de théorème

Messagepar pg » Mercredi 19 Novembre 2008, 09:55

flo.baet a écrit:Oui exactement cela, mais juste avec une barre verticale a gauche


Dans ce cas, il faut modifier un peu le code :

Code: Tout sélectionner
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage{customtheorem}

\makeatletter
\def\lefthangedtheorembegin{%
  \pretheoremwork\addvspace{\thetheorempreskip}%
  \noindent\hspace{\thetheoremleftmargin}%
  \setlength{\temptheoremlength}%
        {\columnwidth-\thetheoremleftmargin-\thetheoremrightmargin}%
  \noindent\begin{minipage}{\temptheoremlength}%
  \begin{lrbox}{\temptheoremtextbox}%
     \begin{minipage}{\columnwidth-10pt-10pt}%
     \parindent=\saveparindent\color{\thetheorembodycolor}\formattheorembody}
\def\lefthangedtheoremend{%
   \end{minipage}\end{lrbox}%
   \begin{tikzpicture}
     \tikzstyle{titlebox} = [color=\thetheorembodyfill, fill=\thetheorembodyfill, rectangle, draw, inner sep=10pt, inner ysep=10pt, text=\thetheorembodycolor]
     \tikzstyle{title}=[text=\thetheoremheadcolor, above right]
     \node[titlebox] (box){\usebox{\temptheoremtextbox}};
     \useasboundingbox (box.south west) rectangle ($ (box.north east) + (0cm,10pt+0.15cm)$);
     \node[title] (titlebox) at ($ (box.north west) + (-1cm,0.15cm)$) {\formattheoremhead\thetheoremname\thetheoremnumber\thetheoremnote};
     \draw[color=\thetheorembodyborder, thick] (box.north west)--(box.south west);
  \end{tikzpicture}\end{minipage}\par
   \addvspace{\thetheorempostskip}%
}
\makeatother

\theoremformat{lefthanged}
\theorempreskip{12pt}
\theoremnonfilledcolor{red}
\thmnote{~: \color{black}#1}
\newtheorem{theoreme}{Théorème}[section]

\begin{document}

\section{Théorèmes de stabilité}

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

\begin{theoreme}[Internement exponentiellement stable]
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
\end{theoreme}

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

\end{document}


lefthanged_thm_sidebar.png
lefthanged_thm_sidebar.png (7.06 Kio) Vu 2397 fois


Dans des prochaines version du package, j'essayerai de faire en sorte que ce genre de petites modifications soient plus simples (ici, en fait, l'emploi de tikz n'est pas nécessaire, le package boites pourrait très bien faire la même chose).

flo.baet a écrit:Autre petit problème, aucun problème lorsque je compile.
Mais quand je le lance en pdf tout plante aucun cadre aucune box texte qui se superpose ...
En YAP ou PS aucun problème.


Peut-être un problème avec TikZ ? Essaie aussi de compiler le document suivant avec pdflatex pour voir si ça marche.

Code: Tout sélectionner
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[fill=blue!10] (0,0) circle (1cm);
\end{tikzpicture}
\end{document}


Si ça ne fonctionne pas, le problème vient de TikZ. Mets alors ici le contenu du fichier .log correspondant.
Si ça fonctionne, compile avec pdflatex le document de tout à l'heure avec le théorème et mets le contenu du fichier .log ici.
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Belle mise en page de théorème

Messagepar flo.baet » Mercredi 19 Novembre 2008, 18:20

Re,

D'abord un tout grand merci pour votre aide !!!
Vous maitrisez vraiment bien latex.

Merci pour le théorème c'est super gentil !

En effet le cercle ne s'affiche pas en pdf, mais j ai trouver une solution de secours je transforme le dvi en ps puis j'ouvre avec gsvieuw.
Le problème est que celui-ci ne sait pas imprimer en couleur (bizarre et j ai toujours pas trouve pourquoi) je reconvertit alors le ps en pdf grace a gsvieuw et la je sais l ouvrire en pdf ...
:D
flo.baet
Utilisateur
 
Messages: 3
Inscription: Mardi 18 Novembre 2008, 23:53
Statut actuel: Post-bac | Master

Re: Belle mise en page de théorème

Messagepar pg » Mercredi 19 Novembre 2008, 23:01

Tonn83 a écrit:J'imagine facilement que j'ai commis plusieurs erreurs d'affilée. :shock: Merci si vous pouvez les repérer et les corriger. Par ailleurs, je n'ai pas encore essayer d'utiliser le paramètre result@#1@width, qui permettra de redéfinir les marges gauche et droite.


Effectivement, il a pas mal d'erreurs qui font que le code ne pouvait pas compiler. Entre autres :

  • tu faisais référence à un #1 dans \def\newresult{} alors qu'il n'y avait pas d'argument dans ta définition
  • ton test \@ifstar ne renvoyait \newresult sur rien du tout
  • il y avait un \new@theorem qui trainait au lieu de \new@result
  • ta redirection de \csname #1\endcsname vers \csname #1@opt\endcsname et \csname #1@nopt\endcsname ne pouvait pas fonctionner

Concernant ta syntaxe, je ne suis pas sûr d'avoir bien compris ce que tu veux, mais voici un exemple :

Code: Tout sélectionner
\documentclass{article}

\makeatletter
%definition de \@ifempty et \@ifnotempty
\long\def\@ifempty#1{\@xifempty#1@@..\@nil}
\long\def\@xifempty#1#2@#3#4#5\@nil{%
  \ifx#3#4\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
\long\def\@ifnotempty#1{\@ifempty{#1}{}}

%definitiond de define
\def\define#1#2{%
% #1 = style name
% #2 = value of style
\expandafter\def\csname result@thm@#1\endcsname{#2}}

%Définition de \newresult
\def\newresult{\@ifstar\newresult@star\newresult@nostar}

%Définition de la commande \newresult*{Nom env}{Nom affiché}{conditions}
\def\newresult@star#1#2#3{\new@result{#1}{#2}{}{#3}}

%Définition de la commande \newresult{Nom env}[Cpteur]{Nom affiché}{conditions}
\def\newresult@nostar#1{%
  \@ifnextchar[{\@onwresult{#1}}{\@nnwresult{#1}}}
\def\@onwresult#1[#2]#3#4{\new@result{#1}{#3}{#2}{#4}}

%Définition de la commande \newresult{Nom env}{Nom affiché}[section]{conditions}
\def\@nnwresult#1#2{%
  \@ifnextchar[{\@xnnwresult{#1}{#2}}{\@ynnwresult{#1}{#2}}}
\def\@xnnwresult#1#2[#3]#4{\newcounter{#1}[#3]%
  \expandafter\gdef\csname the#1\endcsname{\csname the#3\endcsname.\arabic{#1}}%
  \new@result{#1}{#2}{#1}{#4}}

%Définition de la commande \newresult{Nom env}{Nom affiché}{conditions}
\def\@ynnwresult#1#2#3{%
  \newcounter{#1}\new@result{#1}{#2}{#1}{#3}}

%Définition de \new@result :
\def\new@result#1#2#3#4{%
% #1 = nom de l'environment à définir
% #2 = titre de l'environement
% #3 = compteur à utiliser
% #4 = options de formatage
\@ifempty{#4}{\def\result@thm@bodyfont{\itshape}%
              \def\result@thm@headfont{\bfseries}}%
             {#4}
\global\expandafter\let\csname result@#1@bodyfont\endcsname=%
    \result@thm@bodyfont
\global\expandafter\let\csname result@#1@headfont\endcsname=%
    \result@thm@headfont
\expandafter\gdef\csname #1\endcsname{%
  \@ifnextchar[{\csname #1@opt\endcsname}{\csname #1@nopt\endcsname}}
\expandafter\gdef\csname #1@opt\endcsname[##1]{%
   \@ifnotempty{#3}{\refstepcounter{#3}}%
   {\csname result@#1@headfont\endcsname #2%
    \@ifnotempty{#3}{~\csname the#3\endcsname}~(##1).~}%
   \csname result@#1@bodyfont\endcsname\ignorespaces}
\expandafter\gdef\csname #1@nopt\endcsname{%
   \@ifnotempty{#3}{\refstepcounter{#3}}%
   {\csname result@#1@headfont\endcsname #2%
    \@ifnotempty{#3}{~\csname the#3\endcsname}.~}%
   \csname result@#1@bodyfont\endcsname\ignorespaces}
\expandafter\gdef\csname end#1\endcsname{}
}
\makeatother

\newresult{theorem}{Theorem}{\define{bodyfont}{\itshape}%
                             \define{headfont}{\bfseries}}

\begin{document}

\begin{theorem}
Bla bla
\end{theorem}

\begin{theorem}[important]
Bla bla
\end{theorem}

\end{document}
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Belle mise en page de théorème

Messagepar Djorgeo » Lundi 24 Août 2009, 11:14

Bonjour,

Je viens quémander de l'aide. J'utilise ce style de théorème avec le package amsmath :

Code: Tout sélectionner
\newtheorem{thm}{\textsc{\textbf{Théorème}}}[section]
\newcommand{\Thm}[2][]{%
  \noindent \fbox{\parbox{13.99cm}{%   
   \begin{thm}[#1] \quad \par \vspace{.05cm}
  \noindent\textsl{#2}
   \end{thm} }}}


et j'aurais souhaité y apporter des modifications.
Je voudrais que le mot Théorème soit légèrement décalé sur la droite droite, écrit sur le filet qui encadre la boîte tout en gardant la numérotation.

Merci
Djorgeo
Djorgeo
Hecto-utilisateur
 
Messages: 82
Inscription: Lundi 11 Juin 2007, 13:35
Localisation: Vichy

Re: Belle mise en page de théorème

Messagepar Djorgeo » Mardi 25 Août 2009, 10:28

Bonjour suite du message précédent.

J'ai essayé de construire une boite dans laquelle j'y ai place "theoreme" puis j'ai essayé de bouger cette boite, mais ça ne marche pas, si quelqu'un a une idée....

Merci
Djorgeo
Djorgeo
Hecto-utilisateur
 
Messages: 82
Inscription: Lundi 11 Juin 2007, 13:35
Localisation: Vichy

Re: Belle mise en page de théorème

Messagepar Djorgeo » Mercredi 26 Août 2009, 12:32

Bonjour,
J'ai trouvé ce bout de code toujours pour redéfinir mes encadrements de theoremes mais je ne comprends pas pourquoi ca bug :
Code: Tout sélectionner
\documentclass{article}


\usepackage[latin1]{inputenc}
\usepackage{amsmath,amsthm}
\usepackage[frenchb]{babel}


   
\setlength{\oddsidemargin}{24pt}
\setlength{\marginparwidth}{72pt}
\setlength{\textwidth}{405pt}
\setlength{\marginparsep}{24pt}
\setlength{\headheight}{13pt}    
\setlength{\headsep}{10pt}
\setlength{\footskip}{27pt}
\setlength{\textheight}{630pt}

%\newtheorem{thm}{\textsc{\textbf{Théorème}}}[section]
%    \newcommand{\Thm}[2][]{%
%      \noindent \fbox{\parbox{13.99cm}{%   
%       \begin{thm}[#1] \quad \par \vspace{.05cm}
%       \noindent\textsl{#2}
%       \end{thm} }}}

\newsavebox{\boitetitre}
\newlength{\largeurboitetitre}
\newlength{\hauteurboitetitre}

\newcommand{\titlebox}[2]{%
    \begin{lrbox}{\boitetitre}% stockage du contenu
        \kern\fboxsep#2\kern\fboxsep
    \end{lrbox}
    % mesure de la largeur de la parbox centrale
      \settowidth{\largeurboitetitre}{\usebox{\boitetitre}}%
      % mesure de la hauteur de la parbox centrale
      \settoheight{\hauteurboitetitre}{\usebox{\boitetitre}}%
      \settodepth{\dim}{\usebox{\boitetitre}}%
      \addtolength{\hauteurboitetitre}{\dim+2\fboxrule+2\fboxsep}%
      \parbox{\fboxrule}{% le trait de gauche
    \rule{\fboxrule}{\hauteurboitetitre}}%
    \parbox{\largeurboitetitre}{% la boîte centrale
        \begin{flushleft}
           \usebox{\boitetitre}
        \end{flushleft}}%
    \parbox{\fboxrule}{% le trait de droite
        \rule{\fboxrule}{\hauteurboitetitre}}
}
 

\begin{document}

\titlebox{encore}{%
\parbox{4cm}{truc\\bidule\\machin}}

\end{document}


Merci
Djorgeo
Hecto-utilisateur
 
Messages: 82
Inscription: Lundi 11 Juin 2007, 13:35
Localisation: Vichy

Re: Belle mise en page de théorème

Messagepar zorba » Jeudi 27 Août 2009, 05:09

Bonjour,
j'essaie de reprendre à mon compte l'exemple, après avoir installé mathabx, fait le refresh et FNDB, je me retrouve avec l'erreur de compilation suivante que je ne vous pas comment corriger :
! Font U/matha/m/n/12=matha12 at 12.0pt not loadable: Metric (TFM) file not fou
nd.

Le source tex est le suivant :
Code: Tout sélectionner
    \documentclass[12pt]{article}

    \usepackage[latin1]{inputenc}
    \usepackage[francais]{babel}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}

    \usepackage[a4paper]{geometry}

    \usepackage{amsmath}
    \usepackage{calc}

    \usepackage{mathabx}

    \makeatletter
    \newsavebox{\thm@box}
    \newcounter{theoreme}[section]
    \renewcommand{\thetheoreme}{\thesection.\arabic{theoreme}}
    \def\theoreme{\@ifnextchar[\theoreme@opt\theoreme@nopt}
    \def\theoreme@opt[#1]{\def\theoreme@title{~(#1)}\theoreme@allcases}
    \def\theoreme@nopt{\def\theoreme@title{}\theoreme@allcases}
    \def\theoreme@allcases{\begin{lrbox}{\thm@box}%
       \begin{minipage}{\columnwidth-2.5cm}\itshape}
    \def\endtheoreme{\end{minipage}\end{lrbox}%
       \vspace{6pt}\noindent\refstepcounter{theoreme}%
       \textbf{Théorème~\thetheoreme\theoreme@title.}\par\nobreak
       \vspace{6pt}\noindent\hspace{0.75cm}%
       $\delimitershortfall=0pt\left\lfilet\hspace{0.75cm} \usebox{\thm@box}\right.$
    \vspace{12pt}}
    \makeatother

    \begin{document}

    \section{Théorème de Lax-Milgram}

    Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

    \begin{theoreme}[Théorème de Lax-Milgram]
    Soit a une forme bilinéaire continue et coercive définie sur $\mathbf{H}$. On a alors la propriété suivante :
    \[\forall f \in \mathbf{H}\mathclose{,} \quad \exists! u \in \mathbf{H}\mathclose{,} \quad a(u,v) = (f \mid v).\]
    De plus, si $a$ est symétrique, alors le vecteur $u$ défini en vertu du résultat ci-dessus pour une forme linéaire $\theta$ donnée est caractérisé par :
    \[u \in \mathbf{H} \quad \text{et} \quad \frac{1}{2} a(u,u) - (f \mid u) = \min_{v \in \mathbf{H}}\left\{\frac{1}{2} a(v,v) - (f \mid v)\right\}\mathclose{.}\]
    \end{theoreme}

    Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

    \end{document}

Le fichier log est en pièce jointe, pour suivi de la compilation Tex.

Espérant une réponse, bonne journée à tous.
Pierre

[Edit kojak : le code $\LaTeX$ se met entre les balises code, comme déjà signalé ici :!: ]
Fichiers joints
Rédaction-avec-calc-et-geometry-1.log
(37.44 Kio) Téléchargé 58 fois
On se lasse de tout, excepté d'apprendre. Virgile
zorba
Giga-utilisateur
 
Messages: 522
Inscription: Lundi 01 Juin 2009, 10:35
Statut actuel: Actif et salarié

Re: Belle mise en page de théorème

Messagepar rebouxo » Jeudi 27 Août 2009, 08:51

Mauvaise installation des fontes. Comment les as-tu installées ?

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6915
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Belle mise en page de théorème

Messagepar zorba » Jeudi 27 Août 2009, 10:16

Bonjour,
Je n'ai rien fait de particulier concernant des fontes, j'ai juste téléchargé mathabx dans le répertoire Local Tex Files et relancé la compilation qui bloque ensuite. Quelles seraient les fontes en cause, pour que je vois comment elles sont installées et ce qu'il faut faire pour arranger le problème? Je manque un peu de visibilité sur ce genre de problème.
Merci d'avance de l'aide apportée.
Pierre
On se lasse de tout, excepté d'apprendre. Virgile
zorba
Giga-utilisateur
 
Messages: 522
Inscription: Lundi 01 Juin 2009, 10:35
Statut actuel: Actif et salarié

Re: Belle mise en page de théorème

Messagepar pg » Jeudi 27 Août 2009, 11:16

Code: Tout sélectionner
! Font U/matha/m/n/12=matha12 at 12.0pt not loadable: Metric (TFM) file not found.

Cette erreur signifie qu'il n'arrive pas à trouver le fichier TFM. Cela veut dire que les fichiers .mf n'ont pas étés mis au bon endroit.
zorba a écrit:Je n'ai rien fait de particulier concernant des fontes, j'ai juste téléchargé mathabx dans le répertoire Local Tex Files et relancé la compilation qui bloque ensuite.

Tous les fichiers .mf doivent être dans le sous-répertoire "[localtexmf]\fonts\source\public\mathabx\" et les fichiers mathabx.dcl et mathabx.sty doivent être dans "[localtexmf]\tex\latex\mathabx\". Ensuite, après avoir fait "Refresh FNDB", ça devrait être bon.
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Belle mise en page de théorème

Messagepar pg » Jeudi 27 Août 2009, 11:30

Djorgeo a écrit:J'ai trouvé ce bout de code toujours pour redéfinir mes encadrements de theoremes mais je ne comprends pas pourquoi ca bug

Il manque le package calc et tu as utilisé \dim pour une dimension, ce qui cause un conflit vu que \dim est déjà défini comme opérateur mathématique (comme l'abréviation "dim", dans le même genre que "sin", "cos", etc.)

En changeant ces deux points, ça compile :

Code: Tout sélectionner
\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage{amsmath,amsthm}
\usepackage[frenchb]{babel}

\usepackage[a4paper,margin=2.5cm]{geometry}

\usepackage{calc}

%\newtheorem{thm}{\textsc{\textbf{Théorème}}}[section]
%    \newcommand{\Thm}[2][]{%
%      \noindent \fbox{\parbox{13.99cm}{%   
%       \begin{thm}[#1] \quad \par \vspace{.05cm}
%       \noindent\textsl{#2}
%       \end{thm} }}}

\newsavebox{\boitetitre}
\newlength{\largeurboitetitre}
\newlength{\hauteurboitetitre}
\newlength{\dimension}

\newcommand{\titlebox}[2]{%
    \begin{lrbox}{\boitetitre}% stockage du contenu
        \kern\fboxsep#2\kern\fboxsep
    \end{lrbox}
    % mesure de la largeur de la parbox centrale
      \settowidth{\largeurboitetitre}{\usebox{\boitetitre}}%
      % mesure de la hauteur de la parbox centrale
      \settoheight{\hauteurboitetitre}{\usebox{\boitetitre}}%
      \settodepth{\dimension}{\usebox{\boitetitre}}%
      \addtolength{\hauteurboitetitre}{\dimension+2\fboxrule+2\fboxsep}%
      \parbox{\fboxrule}{% le trait de gauche
    \rule{\fboxrule}{\hauteurboitetitre}}%
    \parbox{\largeurboitetitre}{% la boîte centrale
        \begin{flushleft}
           \usebox{\boitetitre}
        \end{flushleft}}%
    \parbox{\fboxrule}{% le trait de droite
        \rule{\fboxrule}{\hauteurboitetitre}}
}


\begin{document}

\titlebox{encore}{%
\parbox{4cm}{truc\\bidule\\machin}}

\end{document}


Je dois dire que je n'ai pas compris ce que tu voulais faire. Quelque chose comme ça ?

presentation_theoreme.png
presentation_theoreme.png (4.13 Kio) Vu 1655 fois
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

PrécédenteSuivante

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Exabot [Bot], Google [Bot], Google Feedfetcher, Grapeshot [Crawler], Magpie [Crawler] et 26 invités