Environnement cases

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: Environnement cases

Messagede pg » Jeudi 07 Janvier 2010, 13:41

Billy the Kid a écrit:J'ai essayé ton exemple mais je ne vois pas la différence. Peux-tu m'en donné un plus convaincant et préciser ce que tu entends par "correction optique".

Je voulais changer l'exemple, mais à cause de problèmes de connexion hier soir, j'ai complètement oublié (j'étais déjà content que mon message soit publié).

Utiliser {P}_1^2 ou P_1^2 donnera le même résultat car il n'y a qu'une seule lettre. Bien sûr, le deuxième étant plus court, ça ne sert à rien d'utiliser le premier. Par contre dès qu'il y a plusieurs lettres, le résultat sera différent : {LP}_1^2 donne ${LP}_1^2$ (le 1 et le 2 sont alignés verticalement, ce qui fait que le 1 est trop loin du P) tandis que LP_1^2 donne $LP_1^2$ (le 1 est plus proche du P que le 2, ce qui est optiquement meilleur). C'est ce que j'avais appelé "correction optique" : TeX applique dans un cas la correction d'italique mais pas dans l'autre.
pg
Modérateur
 
Messages: 1367
Inscription: Vendredi 15 Juin 2007, 00:31

Publicité

Re: Environnement cases

Messagede GMaths » Jeudi 07 Janvier 2010, 14:45

pg a écrit:ça touche un peu aux goûts personnels, mais l'utilisation de bclogo donne vraiment un aspect un peu kitch (et pas très sérieux) à la présentation du document

Merde... moi qui essayais de faire ce que je pensais être sérieux, à savoir faire quelque chose qui ressemble aux manuels scolaires... je serais donc tombé dans le kitch :
http://docs.gmaths.net/tempo/extrait_cours_1stge_2.png
:mrgreen:
GMaths
Téra-utilisateur
 
Messages: 1010
Inscription: Lundi 01 Octobre 2007, 10:20
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede pg » Jeudi 07 Janvier 2010, 15:11

GMaths a écrit:moi qui essayais de faire ce que je pensais être sérieux, à savoir faire quelque chose qui ressemble aux manuels scolaires...

Tous les manuels ne sont pas comme ça. J'avais posté dans ce message un style de présentation que j'aime bien pour les manuels ; c'est coloré et attratif tout en ayant un aspect plus "professionnel". Un autre exemple (qui aurait besoin d'être développé) ici.
pg
Modérateur
 
Messages: 1367
Inscription: Vendredi 15 Juin 2007, 00:31

Re: Environnement cases

Messagede zorba » Jeudi 07 Janvier 2010, 15:20

Bonjour,
je compile sous Texmaker avec Compilation rapide qui crée le fichier dvi, ensuite, quand c'est fait, je passe par dvi->ps et enfin par ps->pdf. C'est à la Compilation que j'ai l'erreur et donc pas de fichier dvi à traiter.
Le problème vient de mon image qui est au format png et je en sais pas comment la convertir en eps. Je suis sous Windows XP SP3.
Merci pour l'aide à la frange des problèmes Latex posés sur ce forum.
Bonne après-midi.
Pierre
Ce qui est affirmé sans preuve peut être nié sans preuve. Alain
zorba
Kilo-utilisateur
 
Messages: 215
Inscription: Lundi 01 Juin 2009, 11:35
Statut actuel: Actif et salarié

Re: Environnement cases

Messagede Billy the Kid » Jeudi 07 Janvier 2010, 22:21

Bonsoir Pierre.
Le problème vient de mon image qui est au format png et je en sais pas comment la convertir en eps.

Je te propose ma réponse, tout en précisant que je débute et donc que je ne prétends pas être le mieux informé.
Voilà comment je fais : Ayant Photoshop, j'ouvre mon image .png et je l'enregistre au format .eps. C'est aussi simple.
Je peux ensuite visualiser cette image avec gsview par exemple. Si tu n'as pas Photoshop, il existe l'équivalent dans le monde du libre : The Gimp qui doit faire la même chose, je pense.
Après j'espère que ta compilation en pdf fonctionnera...
Freddy
Billy the Kid
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Novembre 2009, 19:04
Localisation: Le Loroux Bottereau (44)
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede Billy the Kid » Jeudi 07 Janvier 2010, 22:33

pg a écrit:ça touche un peu aux goûts personnels, mais l'utilisation de bclogo donne vraiment un aspect un peu kitch (et pas très sérieux) à la présentation du document

J'ai consulté ton fichier exemple_trm.pdf et il me semble pas mal (oui peut-être moins kitch). Peux-tu me dire si tu as mis le code en ligne et, si oui, où afin que je le consulte ?
Merci pour le temps que tu as consacré à la relecture de mon code et pour ta collaboration qui m'aide à progresser dans cet univers dense qu'est celui de LaTeX.
Freddy
Billy the Kid
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Novembre 2009, 19:04
Localisation: Le Loroux Bottereau (44)
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede guiguiche » Jeudi 07 Janvier 2010, 22:56

Billy the Kid a écrit:il existe l'équivalent dans le monde du libre : The Gimp qui doit faire la même chose, je pense.

ImageMagick fait la même chose.
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
guiguiche
Modérateur
 
Messages: 7103
Inscription: Vendredi 06 Janvier 2006, 16:32
Localisation: Le Mans
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede zorba » Vendredi 08 Janvier 2010, 07:25

Bonjour,
j'ai installé GIMP 2.2 pour traiter les conversions de format d'image, Avec le fichier.eps, la compilation rapide marche bien, YAP affiche correctement le document, c'est assez long à mettre en forme, mais le résultat est de bonne qualité.
Le fichier pdf est impeccable, seule la taille du fichier .ps est énorme.
Merci à tous pour l'aide efficace.
Bonne journée.
Pierre
Ce qui est affirmé sans preuve peut être nié sans preuve. Alain
zorba
Kilo-utilisateur
 
Messages: 215
Inscription: Lundi 01 Juin 2009, 11:35
Statut actuel: Actif et salarié

Re: Environnement cases

Messagede Billy the Kid » Vendredi 08 Janvier 2010, 20:27

Bonsoir à tous,
J'ai étudié avec attention le code proposé par pg après avoir gentillement corrigé le mien. Mais, j'ai quelques questions sans réponse malgré mes recherches :
1) pg, tu définis la commande \newtitlingelement ainsi :

Code: Tout sélectionner
% la commande \newtitlingelement permet de créer des commandes du type \title, \author ou \date
\newcommand{\newtitlingelement}[1]{%
  \expandafter\newcommand\csname the#1\endcsname{}%
  \expandafter\newcommand\csname #1\endcsname[1]{\expandafter\renewcommand\csname the#1\endcsname{##1}}%
}


J'ai essayé de comprendre ce que faisaient les commandes \expandafter \csname et \endcsname mais je n'y arrive pas, faute de documentation sur le sujet. Peux tu m'expliquer comment fonctionne \newtitlingelement et annoter sa programmation ? Merci.
2) Est ce que j'ai bien compris ceci ?

Code: Tout sélectionner
\newtitlingelement{anneescolaire}


Cela permet de créer la commande anneescolaire et aussi à la commande de mise en forme correspondante theanneescolaire. Est-ce bien cela ?
3)

Code: Tout sélectionner
% pour pouvoir accéder au nom d'auteur
\makeatletter
\def\theauthor{\@author}
\makeatother


Tu n'utilises pas ici \newtitlingelement car author est une commande LaTeX. Mais qu'est-ce que @author par rapport à author ? Pourquoi définir theauthor ?
Au passage, quelle est la différence entre def et newcommand ?
4) Tu définis la commande

Code: Tout sélectionner
\newcommand{\longempty}{}


mais cette commande est égale à {} et lorsque tu écris :
\ifx\thechapterimage\longempty
je ne vois pas d'opérateur binaire( par exemple =) pour tester l'égalité entre thechapterimage et {}. Quelle est la syntaxe ?
Et puis si \longempty est égale à {} pourquoi la créer et ne pas utiliser plutôt {}?
Au passage, quelle est la différence entre ifx et ifthenelse ? Je crois comprendre que la première est une commande TeX et la deuxième une commande LaTeX. Qu'est-ce qui les différencient ?
5) Enfin quand tu écris ceci :

Code: Tout sélectionner
\long\gdef\thechapterimage{}


Peux tu me préciser ce que font les commandes \long et \gdef et au final ce que produit cette commande ?

Voilà les questions que je me pose.
Ce qui m'embête un peu comme je débute, c'est qu'il me semble que les utilisateurs expérimentés que vous êtes utilisez des commandes TeX que je ne connais pas.
Y-a-t il un intérêt à apprendre ces commandes ou y-a-t-il des équivalents en LaTeX ?
Merci de votre collaboration et de votre aide précieuse.
A bientôt.
Freddy :)
Billy the Kid
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Novembre 2009, 19:04
Localisation: Le Loroux Bottereau (44)
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede kojak » Samedi 09 Janvier 2010, 18:43

bonjour,

Billy the Kid a écrit:Au passage, quelle est la différence entre def et newcommand ?


Une réponse ici :wink:
pas d'aide par MP
kojak
Modérateur
 
Messages: 8167
Inscription: Samedi 18 Novembre 2006, 20:50
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede pg » Samedi 09 Janvier 2010, 21:55

Billy the Kid a écrit:J'ai consulté ton fichier exemple_trm.pdf et il me semble pas mal (oui peut-être moins kitch). Peux-tu me dire si tu as mis le code en ligne et, si oui, où afin que je le consulte ?

Il me faut le temps de l'adapter pour être utilisable, mais j'essaierai de le mettre en ligne ici prochainement.

Billy the Kid a écrit:j'ai quelques questions sans réponse malgré mes recherches :

La partie sur la reprogrammation de \chapter nécessite un certain nombre de connaissances sur les commandes TeX (malheureusement, on ne peut pas rester avec LaTeX seul).

Le but de \newtitlingelement est de se simplifier la vie. Au lieu d'écrire

Code: Tout sélectionner
\newcommand{\theanneescolaire}{}
\newcommand{\anneescolaire}[1]{\renewcommand{\theanneescolaire}{#1}}

puis la même chose pour lycee, classe, etc., il suffira d'écrire

Code: Tout sélectionner
\newtitlingelement{anneescolaire}

et idem pour les autres. C'est juste une facilité d'écriture.

Le fait de définir à la fois \theanneescolaire et \anneescolaire permet d'écrire

Code: Tout sélectionner
\anneescolaire{2009-2010}

au lieu de

Code: Tout sélectionner
\renewcommand{\theanneescolaire}{2009-2010}

ce qui est plus "user-friendly". C'est le même principe que pour \title, \author et \date, sauf que ces commandes définissent \@title, \@author et \@date respectivement. Le @ dans le nom de ces commandes est là pour marquer le fait que l'utilisateur ne devrait pas les utiliser (ce qui est un peu contestable, mais c'est ainsi). Pour pouvoir quand même accéder à \@author, on peut faire

Code: Tout sélectionner
\newcommand*{\theauthor}{\@author}

(Le \def que j'avais utilisé n'était pas nécessaire donc devrait être remplacé par un \newcommand*.) En fait, pour éviter tout problème d'interaction avec \maketitle (qui efface \@author) il vaudrait carrément mieux redéfinir \author :

Code: Tout sélectionner
\makeatletter
\newcommand*{\theauthor}{}
\renewcommand*{\author}[1]{\gdef\@author{#1}\renewcommand*{\theauthor}{#1}}
\makeatother


Les histoires de \long sont un peu ma faute, j'ai fait ça trop vite et j'aurais dû étoiler toutes les définitions pour éviter ce genre de considérations. Voici une version rectifiée du code source donné précédemment :

Code: Tout sélectionner
\documentclass[11pt,a4paper,twoside]{report}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%INDISPENSABLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[cp1252]{inputenc} % pour compiler correctement sous Windows
\usepackage[T1]{fontenc} % pour accéder aux glyphes des fontes
\usepackage[frenchb]{babel} % pour adapter la typographie aux conventions françaises
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{lmodern} % charge la famille de fontes lmodern
\usepackage[headheight=14.05pt,width=173mm,lines=52]{geometry} % réglages format page
\usepackage{amsmath,amssymb} % extensions pour écrire des mathématiques

\usepackage{calc} % pour faire des calculs sur les compteurs

\usepackage{enumitem} % extension pour personnaliser les listes
\frenchbsetup{StandardLists=true} % à charger avec enumitem pour éviter les conflits avec frenchb
\setenumerate[1]{font=\upshape,label=\arabic*)} % fonte normale, chiffre arabe
\setitemize[1]{label=--,noitemsep,topsep=0pt} % tirets pour les listes et même espacement que le standard de frenchb

% pour avoir des boîtes de mêmes largeurs choisies par une étiquette
\usepackage{eqparbox}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                    NON UTILISE ICI
%                       Utilisation de ntheorem pour créer les environnements                 %                                 théorèmes
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\usepackage[thmmarks]{ntheorem} % option thmmarks pour modifier la présentation des théorèmes
%\theoremstyle{break} % pour aller à la ligne après le nom du théorème
%\theoremseparator{~:} % spécifie le séparateur de théorème
%\theorembodyfont{\normalfont} % police du texte du théorème
%\theoremsymbol{$\blacklozenge$}
%\newtheorem{dfn}{Définition}[section]\newtheorem{pro}{Proposition}[section]\newtheorem{theo}{Théorème}[section]\newtheorem{cor}{Corollaire}
%\theoremstyle{nonumberbreak} % pas de numéro de théorème et un saut de ligne après le nom du théorème
%\theoremheaderfont{\itshape} % écrit le nom du théorème en italique
%\newtheorem {rem}{Remarques}\newtheorem {csq}{Conséquence}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                             Numéro de section, Compteurs de "théorèmes"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\renewcommand{\thesection}{\Roman{section}} % change le numéro de section en chiffres romains
\newcounter{cpttheo}[section]\newcounter{cptpro}[section]\newcounter{cptdfn}[section]
% Avec l'option [section], cpttheo est réinitialisé à un à chaque changement de section

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       Utilisation de bclogo pour créer les environnements                 %                                 "théorèmes"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{pstricks,graphicx,pst-grad,xkeyval,pst-coil,ifthen,pst-blur} % extensions nécessaires à bclogo
\usepackage{bclogo}
%\newcommand\bclosange{\centering$\blacklozenge$} % définir un bclogo à partir des caractères existants
\newcommand\bcblanc{{}} % définit un logo vide
% refstepcounter incréménte de un le compteur désigné
\newenvironment{theo}[1][]{\refstepcounter{cpttheo}\begin{bclogo}[logo=\bcspadesuit,ombre=true,arrondi=0.1]{Théorème \thesection -\thecpttheo\ : #1}}{\end{bclogo}}

\newenvironment{pro}[1][]{\refstepcounter{cptpro}\begin{bclogo}[logo=\bcplume,couleurBord=white]{Propriété \thesection -\thecptpro\ : #1}}{\end{bclogo}}

\newenvironment{cor}[1][]{\begin{bclogo}[logo=\bcrosevents,couleurBord=white]{Corollaire \thesection -\thecptpro\ : #1}}{\end{bclogo}}
% Le numéro du corollaire est le même que celui de la proposition qui le précède

\newenvironment{dfn}[1][]{\refstepcounter{cptdfn}\begin{bclogo}[logo=\bcbook,couleurBord=white]{Définition \thesection -\thecptdfn\ : #1}}{\end{bclogo}}

\newenvironment{remar}{%
% le code {% est utilisé dans les environnements personnels ou les commandes perso pour éviter les effets de bord (insertion d'espaces superflus par exemple)
\begin{bclogo}[logo=\bcblanc,couleurBord=white,barre=none,sousTitre=Remarques :]{}\vskip 0.5em}
{\end{bclogo}}
%em est le symbole du cadratin, il est proportionnel au corps de la police

\newenvironment{csq}{%
\begin{bclogo}[logo=\bcblanc,couleurBord=white,barre=none,sousTitre=Conséquence :]{}}
{\end{bclogo}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                Commandes personnelles
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% \mathbin s'assure que son argument est bien un opérateur binaire (le \hat ôte à son argument de ce statut)
\newcommand{\hatplus}{\mathbin{\hat{+}}}
\newcommand{\hattimes}{\mathbin{\hat{\times}}}

\newcommand\zed{\ensuremath{\mathbb{Z}}}
\newcommand{\air}{\ensuremath{\mathbb{R}}}
\newcommand{\ain}{\ensuremath{\mathbb{N}}}
% ensuremath s'assure que son argument est toujours composé en mode mathématique. Si l'on veut utiliser la commande \air par exemple dans du texte, il faut la faire suivre de \espace pour insérer l'espace nécessaire après le symbole R des réels.
\renewcommand{\leq}{\ensuremath{\leqslant}} % redéfinir le signe inférieur ou égal
\renewcommand{\geq}{\ensuremath{\geqslant}} % redéfinir le signe supérieur ou égal

% pour écrire correctement Z/nZ :
\newcommand*{\Sfrac}[2]{%
  \hspace*{.1em}\raisebox{.5ex}{$#1$}\hspace*{-.1em}%
  /\hspace*{-.15em}\raisebox{-.25ex}{$#2$}%
}
%La version étoilée du newcommand permet de circonscrire à un paragraphe les erreurs %dues à un éventuel oubli d'accolade fermante. Ainsi, on retrouve plus facilement %l'emplacement de l'erreur.

% raccourci pour Z/nZ afin de pouvoir changer l'apparence facilement
\newcommand{\ZnZ}{\Sfrac{\zed}{n\zed}}

\newcommand{\modulo}[1]{\ [#1]}% car c'est répété souvent
\newcommand{\congru}[3]{#1\equiv #2 \modulo{#3}}

% les ensembles { ... ; ... } sont souvent répétés et il faut qu'ils soient présentés pareils, donc on fait un raccourci
\newcommand{\enstq}[2]{\{#1\mathrel{;}#2\}}

% il faut utiliser \lvert pour une valeur absolue ouvrante et \rvert pour une valeur absolue fermante
\newcommand{\abs}[1]{\lvert#1\rvert}

% Afin de grouper correctement plusieurs équations les unes au-dessus l'autre avec une accolade ouvrante devant celles-ci :
\newenvironment{regroup}{%
  \left\lbrace\def\arraystretch{1.2}%
  \begin{array}{@{}l@{}}%
}
{\end{array}\right.}

%  \def\arraystretch{1.2} permet d'augmenter la hauteur et la profondeur des lignes du tableau de 20 %
%  @{} remplace l'espace intercolonne par l'argument (vide ici avec {})

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                              Modifier le titre courant et le pied de page
%                                    avec le package fancydr
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{xcolor}
\usepackage{fancyhdr}\pagestyle{fancy} % appeler le style de page fancy afin de l'utiliser et le régler ensuite

% Définir un style de page nommé premierepage dont le titre courant est vide et qui  % ne trace pas de trait horizontal séparant le texte du titre courant.
\fancypagestyle{premierepage}{\fancyhead{}\renewcommand\headrulewidth{0pt}}

% le style de page par défaut est fancy
\pagestyle{fancy}
\fancyhf{}
\fancyhead[RO,LE]{\thepage}
\fancyhead[CO]{\leftmark}
\fancyhead[CE]{\textbf{\rightmark}}
\cfoot{\scriptsize\textit{\theauthor, \theclasse{} -- Lycée \textsc{\thelycee}, \theanneescolaire}}

% on redéfinit \chaptermark pour ne pas avoir "Chapitre 1" devant le titre de chapitre "Arithmétique dans \zed"
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}

%                  fancyhf{} efface tout
%                  \fancyhead[RO,LE]{\thepage}
% RO (à droite, page impaire) et LE (à gauche, page paire) : écrire numéro de page
%                  \fancyhead[CO]{#1}
% CO (au centre,page impaire) : écrire le titre donné comme premier argument de la commande entete
%                  \fancyhead[CE]{\textbf{\rightmark}}
% CE (au centre, page paire) : nom de la section courante (rightmark)
%       \cfoot{\scriptsize\textsl{Freddy Mérit, #2 - Lycée \textsc{La Herdrie}, #3}}}
% pied de page en italique et en petite taille

% arguments de entete :
%\entete{titre courant}{classe}{Année}

% macro de séparation fond/forme
\newcommand{\definir}[1]{\textbf{\mathversion{bold}#1}}
\newcommand{\important}[1]{\textbf{\mathversion{bold}#1}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                   PERSONNALISATION DES SECTIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% la commande \newtitlingelement permet de créer des commandes du type \title, \author ou \date
\newcommand{\newtitlingelement}[1]{%
  \expandafter\newcommand\expandafter*\csname the#1\endcsname{}%
  \expandafter\newcommand\expandafter*\csname #1\endcsname[1]{\expandafter\renewcommand\expandafter*\csname the#1\endcsname{##1}}%
}
% on définit des commandes analogues à \title, \author et \date pour l'image de chapitre, la classe, le lycée et l'année scolaire
\newtitlingelement{chapterimage}
\newtitlingelement{classe}
\newtitlingelement{lycee}
\newtitlingelement{anneescolaire}

% pour pouvoir accéder au nom d'auteur
\makeatletter
\newcommand*{\theauthor}{}
\renewcommand*{\author}[1]{\gdef\@author{#1}\renewcommand*{\theauthor}{#1}}
\makeatother

% commande pour tester si l'image est vide
\newcommand*{\emptyelement}{}

% utilisation de titlesec pour redéfinir les chapitres
\usepackage{titlesec}
\newcommand{\chaptercmd}{}
\titleformat{\chapter}
  {\global\let\chaptercmd\chaptercmdstar}
  {\global\let\chaptercmd\chaptercmdnostar}
  {0pt}
  {\thispagestyle{premierepage}\chaptercmd}
  {}
\titlespacing*{\chapter}{0pt}{0pt}{30pt}

% chapitre non numéroté (table des matières, par exemple)
\newcommand{\chaptercmdstar}[1]{
\ifx\thechapterimage\emptyelement
% si l'image est vide,
\noindent\begin{tabular}{p{\textwidth-2\tabcolsep}}
\begin{center}\color{blue}
{\Huge\bfseries\MakeUppercase{#1}\par}
\end{center}\end{tabular}\par
\else
% si l'image est non vide,
\noindent\begin{tabular}{@{\hspace{2em}}p{.75\textwidth-4em}@{\hspace{2em}}p{.25\textwidth-2\tabcolsep}}
\begin{center}\color{blue}
{\Huge\bfseries\MakeUppercase{#1}\par}
\end{center}
&
\begin{center}
\includegraphics[width=.25\textwidth-2\tabcolsep]{\thechapterimage}
\end{center} \\
\end{tabular}\par
\fi
\gdef\thechapterimage{}% pour ne pas utiliser la même image pour le chapitre suivant
}
% chapitre numéroté
\newcommand{\chaptercmdnostar}[1]{%
\ifx\thechapterimage\emptyelement
% si l'image est vide,
\noindent\begin{tabular}{p{\textwidth-2\tabcolsep}}
\begin{center}\color{blue}
{\large\MakeUppercase{chapitre \thechapter}\par}
\vspace*{2em}
{\Huge\bfseries\MakeUppercase{#1}\par}
\end{center}
\end{tabular}\par
\else
% si l'image est non vide,
\noindent\begin{tabular}{@{\hspace{2em}}p{.75\textwidth-4em}@{\hspace{2em}}p{.25\textwidth-2\tabcolsep}}
\begin{center}\color{blue}
{\large\MakeUppercase{chapitre \thechapter}\par}
\vspace*{2em}
{\Huge\bfseries\MakeUppercase{#1}\par}
\end{center}
&
\begin{center}
\includegraphics[width=.25\textwidth-2\tabcolsep]{\thechapterimage}
\end{center} \\
\end{tabular}\par
\fi
\gdef\thechapterimage{}% pour ne pas utiliser la même image pour le chapitre suivant
}
\newcommand{\setchapternumber}[1]{\setcounter{chapter}{\numexpr#1-1 }}

% n'utiliser l'option dvips que pour une compilation dvi->ps->pdf
% sinon, ne rien mettre (c'est automatique pour pdftex)
\usepackage[dvips]{hyperref}
% pour que le niveau de zoom du PDF ne soit pas changé
\hypersetup{pdfstartview=XYZ}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                         MÉTADONNÉES
% nom d'auteur, nom de la classe, nom du lycée et année scolaire
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\author{Freddy Mérit}
\classe{T\textsuperscript{ale}S1}
\lycee{La Herdrie}
\anneescolaire{2009-2010}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                         CORPS DU DOCUMENT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\chapterimage{bezout}% à mettre avant le chapitre ; si absent ou vide, aucune image n'est imprimée ; l'image d'un chapitre n'est pas réutilisée pour le chapitre suivant
%\setchapternumber{3}% au besoin, pour changer le numéro de chapitre
\chapter{Arithmétique dans~\zed}

\section{Divisibilité}

\begin{pro}
  $(\zed,+,\times)$ est un anneau commutatif unitaire intègre (de caractéristique nulle).
\end{pro}

\begin{dfn}
  Soit $(a,b)\in \zed^2$. On dit que $a$ \definir{divise} $b$, et on note $a\mid b$ si et seulement s'il existe $c\in\zed$ tel que $b=ac$.

  On dit aussi que :
   \begin{itemize}
      \item $a$ est un \definir{diviseur} de $b$ ;
      \item $b$ est un \definir{multiple} de $a$ ;
      \item $b$ est \definir{divisible} par $a$.
   \end{itemize}
\end{dfn}

% iff est préférable à \Longleftrightarrow, il insére un espace avant et un après.
% même chose pour mid au lieu de |.
\begin{remar}
   \begin{enumerate}
     \item \eqparbox{rem1}{$\forall a\in\zed,\quad a\mid a.$}\quad(Tout entier relatif est divisible par lui-même.)
     \item \eqparbox{rem1}{$\forall a\in\zed,\quad 1\mid a \enspace \text{et} \enspace {-1}\mid a.$}\quad(Tout entier relatif est multiple de $1$ ou de $-1$.)
     \item \eqparbox{rem1}{$\forall a\in\zed,\quad a\mid 0.$}\quad(Tout entier relatif divise $0$.)
     \item \eqparbox{rem1}{$\forall a\in\zed,\quad 0\mid a\iff a=0.$}\quad(Le seul multiple de $0$ est $0$.)
   \end{enumerate}
\end{remar}

\begin{pro}
  $\forall (a,b,c) \in \zed^3, \quad
   \begin{regroup}
      a\mid b\\b\mid c
   \end{regroup}
  \implies a\mid c$
\end{pro}

\begin{pro}
\begin{enumerate}
  \item $\forall (a,b,c) \in \zed^3, \quad a\mid b \implies a\mid bc$
  \item $\forall (a,b,c,\alpha,\beta) \in \zed^5, \quad \begin{regroup}
                                              a\mid b\\a\mid c
                                               \end{regroup}
                                     \implies a\mid(\alpha b+\beta c)$
  \item $\forall (a,b,\alpha,\beta) \in \zed^4, \quad \begin{regroup}
                                             a\mid b\\
                                             \alpha\mid \beta
                                          \end{regroup}
                                         \implies  a\alpha\mid b\beta$
  \item $\forall (a,b,n) \in \zed\times\zed\times\mathbb{N}^*, \quad a\mid b\implies                                                          a^n\mid b^n$
\end{enumerate}
\end{pro}

\begin{pro}
\begin{enumerate}
  \item $\forall (a,b) \in \zed^*\times\zed^*, \quad b\mid a\implies \abs{b} \leq \abs{a}$
  \item $\forall (a,b) \in \zed^*\times\zed^*, \quad
   \begin{regroup}
      a\mid b\\b\mid a
   \end{regroup}
    \implies  \abs{a} = \abs{b}$
\end{enumerate}
\end{pro}

\begin{csq}
L'ensemble des diviseurs d'un entier relatif non nul est fini.
\end{csq}

\begin{pro}
\air\  est archimédien, c'est-à-dire,
$\forall x \in \air^+, \forall y\in \air^{*+},\exists n\in \ain,\ ny>x.$
\end{pro}

\begin{csq}
$\ain$, $\zed$, $\mathbb{D}$, $\mathbb{Q}$ sont donc aussi archimédiens.
\end{csq}

\begin{pro}
\begin{enumerate}
\item Toute partie non vide de \ain\  admet un plus petit élément.
\item Toute partie non vide et majorée (resp. minorée) de \zed\  admet un plus grand (resp. plus petit) élément.
\end{enumerate}
\end{pro}

\begin{theo}
Soit $(a,b)\in \zed\times\ain^*$.

Il \important{existe} un \important{unique} couple $(q,r)$ appartenant à $\zed^2$ tel que  $\begin{regroup}
      a=bq+r\\
      0\leq r<b
\end{regroup}$.
On dit que $q$ est le \definir{quotient} et $r$ est le \definir{reste} de la division euclidienne de $a$ par $b$.
\end{theo}

\section{Congruences}

\begin{dfn}
Soit $n\in\ain^*$. Soit $(a,b)\in\zed^2$.

On dit que $a$ est \definir{congru à $b$ modulo $n$} si $n$ divise $b-a$. On note $\congru{a}{b}{n}$ ou $a \equiv b \mod n$. Ainsi,
\[\congru{a}{b}{n}\iff n\mid (b-a).\]
\end{dfn}

\begin{pro}
Soit $n \in \ain^*$. Soit $(a,b) \in \zed^2$.

$a$ est congru à $b$ modulo $n$ équivaut à $a$ et $b$ ont le même reste dans la division euclidienne par $n$.
\end{pro}

\begin{pro}
Pour tout $n$ de $\ain^*$, la relation de congruence $\equiv\modulo{n}$ est une relation d'équivalence sur l'ensemble \zed. On note $\ZnZ$ l'ensemble-quotient de $\zed$ par la relation d'équivalence ($\equiv$) de congruence modulo~$n$.
\end{pro}

\begin{pro}
Il existe un unique entier naturel $r$ tel que $0\leq r<n$ et $\congru{r}{a}{n}$. Ce nombre est le reste de la division euclidienne de $a$ par $n$.
\end{pro}

\begin{dfn}
Pour tout $x$ de \zed, on note $\hat{x}$ (ou $\bar{x}$) la classe de $x$ dans $\ZnZ$ :
\[\hat{x} = \enstq{y\in \zed}{\congru{x}{y}{n}} = \enstq{x+kn}{k\in\zed}.\]
$\ZnZ$ est donc un ensemble fini à $n$ éléments et $\ZnZ = \{\hat{0},\hat{1},\dots,\widehat{n-1}\}$.
\end{dfn}

\begin{pro}
Soit $n \in \ain^*$. Pour tout $(a,b,c,d)$ de $\zed^4$, on a :
\[\left\{\begin{aligned}
      a &\equiv b\modulo{n}\\
      c &\equiv d\modulo{n}
    \end{aligned}
  \right.
\implies
\left\{\begin{aligned}
      a+c &\equiv b+d\modulo{n}\\
      ac &\equiv bd\modulo{n}
     \end{aligned}
  \right.\]
\end{pro}

\begin{cor}
\[\forall (a,b) \in \zed^2,\quad \forall k \in \ain^*, \quad \left(\congru{a}{b}{n}\implies \congru{a^k}{b^k}{n}\right).\]
\end{cor}

Comme la relation d'équivalence $\equiv\modulo{n}$ est compatible avec les lois de composition interne $+$ et $\times$ de \zed, on peut définir deux lois de composition interne dans $\ZnZ$, notées $\hatplus$ et $\hattimes$ par :
\[\forall (x,y) \in \zed^2, \quad \left\{\begin{aligned}
      \hat{x}\hatplus\hat{y} &= \widehat{x+y}\\
      \hat{x}\hattimes\hat{y} &= \widehat{x\times y}.
           \end{aligned}
  \right.\]

\end{document}


Voici maintenant quelques expliciations sur \long, \def, \gdef, \ifx, \csname...\endcsname.

\def est ce qui permet de définir des commandes avec TeX. La différence principale avec le \newcommand de LaTeX est que si une commande du même nom écrit déjà, elle est écrasée ; on peut donc avoir des surprises si on redéfinit des choses existant déjà et qui sont importantes. Pour une utilisation basique, on n'a pas besoin de \def, et on devrait utiliser \newcommand à la place ; si jamais on a vraiment besoin de \def, on aura intérêt à utiliser quelque chose du genre

Code: Tout sélectionner
\newcommand{\macro}{}
\def\macro{...}

pour vérifier que la \macro n'existe pas déjà.

\gdef est une variante de \def qui est globale, autrement dit, elle aura un effet même en dehors du groupe où elle se trouve (les définition avec \def ou \newcommand sont locales donc sont délimitées à un groupe). Voici un exemple :

Code: Tout sélectionner
\begin{center}\renewcommand*{\emph}{\textbf}
Ici, c'est du \emph{gras}.
\end{center}
Ici, c'est de l'\emph{italique}.

Par contre, avec un \gdef :

Code: Tout sélectionner
\begin{center}\gdef\emph{\textbf}
Ici, c'est du \emph{gras}.
\end{center}
Ici, c'est aussi du \emph{gras}.

On est obligé d'utiliser \gdef dans \titleformat pour que la définition soit prise en compte au niveau global du document. La commande \gdef est équivalente à \global\def. Si on a besoin de \let au lieu de \def, on doit utiliser \global\let si on veut que ce soit global (\let capture la définition d'une macro au moment de la définition ; par exemple, si on fait \let\a\b et qu'après on change \b, la valeur de \a restera inchangée ; ce ne serait pas le cas si on avait utilisé \def\a{\b}).

\long est un attribut pour \def, de même que l'est \global. Il permet de rendre les définitions longues, c'est-à-dire pour qu'il soit possible d'avoir des changements de paragraphes à l'intérieur. Par exemple,

Code: Tout sélectionner
\textbf{ligne 1

ligne 2}

renvoie une erreur car \textbf n'est pas longue. Par contre, par de problème avec une variante longue :

Code: Tout sélectionner
\long\def\longtextbf#1{{\bfseries#1}}
\longtextbf{ligne 1

ligne 2}

les deux lignes seront bien en gras. \newcommand définit des macros longue tandis que \newcommand* ne le fait pas (c'est donc l'inverse par rapport à \def : il faut rajouter quelque chose pour que la macro soit courte).

\ifx compare deux macros pour savoir si elles sont "identiques". Si on veut comparer \a et \b et afficher "vrai" si elles sont identiques et "faux" sinon, la syntaxe est

Code: Tout sélectionner
\ifx\a\b
  vrai
\else
  faux
\fi

Le \else est optionnel et il n'y a pas de signe = ou quoi que ce soit d'autre de ce style. Ce qui nous intéresse ici est de savoir si la macro \thechapterimage est vide ou pas pour afficher un titre de chapitre différent selon le cas. Pour tester si une macro est vide, on ne peut comparer à {} car ce n'est pas une macro ; il faut donc définir une macro vide pour pouvoir comparer ; il y a déjà \empty qui le fait, mais il vaut mieux définir sa propre commande, on ne sait jamais ce que certains packages peuvent faire à certaines macros. Pour tester si \macro est vide, on peut donc faire

Code: Tout sélectionner
\newcommand{\macro}{}
\newcommand{\macrovide}{}
\ifx\macro\macrovide
  vrai
\else
  faux
\fi

Il faut faire attention, \ifx est sensible au fait que les macros soient longues ou pas, donc si \macro est définie par une \newcommand étoilée, il faut aussi que \macrovide le soit sinon le teste échoue ; c'est pourquoi dans le code de l'autre fois j'avais défini un \longempty pour tester si \thechapterimage était vide : il fallait que les deux soient longues en même temps.

Concernant le couple \csname et \endcsname, ils servent à fabriquer des noms de macros à partir d'un texte à peu près arbitraire. C'est très utile pour définir des commandes définissant des commandes (comme \titlingelement). Le principe est que

Code: Tout sélectionner
\csname thechapterimage\endcsname

est la même chose que \thechapterimage. Donc si #1 est l'argument d'une macro (égal par exemple à"thechapter"), \csname#1\endcsname convertira cet argument en macro ("\thechapterimage" dans l'exemple précédent). Le problème quand on écrit

Code: Tout sélectionner
\newcommand\csname thechapterimage\endcsname{...}

est que TeX croit qu'on veut définir \csname, alors qu'on veut définir \csname thechapterimage\endcsname. Pour éviter ces problèmes, on utilise \expandafter qui permet de lui dire de construire d'abord \csname thechapterimage\endcsname puis d'appliquer \newcommand. Ici, cela donnerait :

Code: Tout sélectionner
\expandafter\newcommand\csname thechapterimage\endcsname{...}

C'est ce principe qui est utilisé dans

Code: Tout sélectionner
\newcommand{\newtitlingelement}[1]{%
  \expandafter\newcommand\csname the#1\endcsname{}%
  \expandafter\newcommand\csname #1\endcsname[1]{\expandafter\renewcommand\csname the#1\endcsname{##1}}%
}

pour s'assurer que TeX voit la chose suivante :

Code: Tout sélectionner
\newcommand{\newtitlingelement}[1]{%
  \newcommand\the#1{}%
  \newcommand\#1[1]{\renewcommand\the#1{##1}}%
}

(Ici, si #1 désigne chapterimage, \#1 désigne \chapterimage est \the#1 désigne \thechapterimage.) Il y a une dernière subtilité : quand on définit une commande à argument dans une autre, il faut doubler les # pour que TeX puisse faire la différence entre le #1 de la commande et celui de la sous-commande (##1).
pg
Modérateur
 
Messages: 1367
Inscription: Vendredi 15 Juin 2007, 00:31

Re: Environnement cases

Messagede Billy the Kid » Mardi 12 Janvier 2010, 16:35

Merci pg pour toutes ces réponses très précises et détaillées. Elles m'ont permis d'en comprendre un peu plus.
Malgré celles-ci, il y a un truc que je n'arrive pas à comprendre dans le titleformat :

Code: Tout sélectionner
\titleformat{\chapter}
  {\global\let\chaptercmd\chaptercmdstar}
  {\global\let\chaptercmd\chaptercmdnostar}
  {0pt} 
  {\thispagestyle{premierepage}\chaptercmd}
  {}


chaptercmd devient sucessivement chaptercmdstar, puis chaptercmdnostar pour enfin être exécuter dans le titleformat.
Si j'ai bien compris, les commandes chaptercmdstar et chaptercmdnostar mettent en forme le titre et l'image (le cas échéant) mais la seconde commande écrit "CHAPITRE n°X" contrairement à la première.
Ainsi chaptercmdstar peut être utilisée pour la table des matières, dis-tu ?
MAIS, voilà ce que je ne comprends pas et que je ne vois pas :
Où est effectué le test pour savoir laquelle de ces deux commandes effectuer?
Comment et quand est exécuter la commande chaptercmdstar ?

En fait, je crois que je ne comprends pas bien comment fonctionne titleformat et plus précisément les rôles joués par <format> et <label> dans
Code: Tout sélectionner
\titleformat{<niveau de sectionnement>}[<forme>]{<format>}{<label>}{<sep>}{<avant>}{<après>}

J'espère que tu vas pouvoir m'éclairer...

Par ailleurs, j'ai eu envie (ou sans doute besoin) de programmer uniquement avec les commandes LaTeX. Je trouve celà plus rassurant pour moi qui débute, même si tes explications sur les commandes TeX utilisées m'ont permis de comprendre le rôle qu'elles jouaient.
Ainsi, dans le code posté ci-dessous :

1) Je me passe de newtitlingelement en définissant :
Code: Tout sélectionner
\newcommand*{\thechapterimage}{}
\newcommand*{\theanneescolaire}{2009-2010}
\newcommand*{\theclasse}{T\textsuperscript{ale}S1}
\newcommand*{\thelycee}{La Herdrie}
\author{Freddy Mérit}
\makeatletter \newcommand*{\theauthor}{\@author}\makeatother

Puis à chaque changement de chapitre, j'initialise thechapterimage avec un \renewcommand, avant d'écrire \chapter{Chapitre suivant :}

2) J'ai remplacé
\ifx\thechapterimage\emptyelement
par
Code: Tout sélectionner
\ifthenelse{\equal{\thechapterimage}{\emptyelement}}


3) Comme je redéfinis thechapterimage à chaque chapitre, j'ai enlevé
\gdef\thechapterimage{}
dans les définitions de chaptercmdstar et chaptercmdnostar.

4) Enfin, j'ai remplacé
\newcommand{\setchapternumber}[1]{\setcounter{chapter}{\numexpr#1-1 }}
par
Code: Tout sélectionner
\newcommand{\setchapternumber}[1]{\setcounter{chapter}{#1-1}}


Peux-tu me dire si j'ai commis des erreurs avec toutes ces modifications ?

J'ai passé un temps relativement important à comprendre les commandes que tu as employées, c'est pourquoi j'ai mis pas mal de commentaires dans mon source (ce qui pourra aider un débutant à comprendre le code).
Enfin, j'ai fait le ménage dans mon préambule pour éliminer ce qui ne servait à rien. Qu'en penses-tu ?
Merci pour ton aide précieuse. Je te suis très reconnaissant pour l'aide que tu me fournis. :lol: :lol:
A très Bientôt.
Freddy
Voici mon code :
Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%  VERSION DEFINITIVE  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[11pt,a4paper,twoside]{report}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%INDISPENSABLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[cp1252]{inputenc} % pour compiler correctement sous Windows
\usepackage[T1]{fontenc} % pour accéder aux glyphes des fontes
\usepackage[frenchb]{babel} % pour adapter la typographie aux conventions françaises
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{lmodern} % charge la famille de fontes lmodern
\usepackage[tmargin=31pt,headsep=0pt,headheight=14.05pt,width=173mm,lines=54]{geometry} % réglages format page
% tmargin : marge de tête, headsep : sépararation en-tête/corps de texte
% headheight : hauteur de l'en-tête , width : largeur du corps de texte
% lines : nombre de lignes

\usepackage{amsmath,amssymb} % extensions pour écrire des mathématiques

\usepackage{calc} % pour faire des calculs sur les compteurs (pour la commande chaptercmd, par exemple)

\usepackage{enumitem} % extension pour personnaliser les listes
\frenchbsetup{StandardLists=true} % à charger avec enumitem pour éviter les conflits avec frenchb
\setenumerate[1]{font=\upshape,label=\arabic*)} % fonte normale, chiffre arabe , *) pour préciser que le nombre est suivi d'une parenthèse fermante ).
\setitemize[1]{label=--,noitemsep,topsep=0pt} % tirets pour les listes
% noitemsep: pas d'espace supplémentaire entre deux items successifs, topsep=0pt pas d'espace supplémentaire entre le paragraphe précédent et le premier item (c'est-à-dire même espacement que le standard de frenchb).
\usepackage{eqparbox} % pour avoir des boîtes de mêmes largeurs choisies par une étiquette (pour la première remarque du document)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                             Numéro de section, Compteurs de "théorèmes"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\renewcommand{\thesection}{\Roman{section}} % change le numéro de section en chiffres romains
\newcounter{cpttheo}[section]\newcounter{cptpro}[section]\newcounter{cptdfn}[section]
% Avec l'option [section], cpttheo est réinitialisé à un à chaque changement de section
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
% on redéfinit \chaptermark pour ne pas avoir "Chapitre 1" devant le titre de chapitre "Arithmétique dans \zed"
% markboth : voir LC page 222

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       Utilisation de bclogo pour créer les environnements   
%                                 "théorèmes"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{pstricks,graphicx,pst-grad,pst-coil,pst-blur,ifthen,xkeyval} % extensions nécessaires à bclogo
\usepackage{bclogo}
%\newcommand\bclosange{\centering$\blacklozenge$} % définir un bclogo à partir des caractères existants

\newcommand\bcblanc{{}} % définit un logo vide
% refstepcounter incréménte de un le compteur désigné
\newenvironment{theo}[1][]{\refstepcounter{cpttheo}\begin{bclogo}[logo=\bcspadesuit,ombre=true,arrondi=0.1]{Théorème \thesection -\thecpttheo\ : #1}}{\end{bclogo}}

\newenvironment{pro}[1][]{\refstepcounter{cptpro}\begin{bclogo}[logo=\bcplume,couleurBord=white]{Propriété \thesection -\thecptpro\ : #1}}{\end{bclogo}}

\newenvironment{dfn}[1][]{\refstepcounter{cptdfn}\begin{bclogo}[logo=\bcbook,couleurBord=white]{Définition \thesection -\thecptdfn\ : #1}}{\end{bclogo}}

\newenvironment{cor}[1][]{\begin{bclogo}[logo=\bcrosevents,couleurBord=white]{Corollaire \thesection -\thecptpro\ : #1}}{\end{bclogo}}
% Le numéro du corollaire est le même que celui de la proposition qui le précède

\newenvironment{remar}{%
% le code {% est utilisé dans les environnements personnels ou les commandes perso pour éviter les effets de bord (insertion d'espaces superflus par exemple)
\begin{bclogo}[logo=\bcblanc,couleurBord=white,barre=none,sousTitre=Remarques :]{}\vskip 0.5em}
{\end{bclogo}}

\newenvironment{csq}{%
\begin{bclogo}[logo=\bcblanc,couleurBord=white,barre=none,sousTitre=Conséquence :]{}}
{\end{bclogo}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                Commandes personnelles
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\hatplus}{\mathbin{\hat{+}}}
\newcommand{\hattimes}{\mathbin{\hat{\times}}}
% \mathbin définit son argument comme un opérateur binaire (le \hat ôte à son argument (+ ici) le statut de binaire)

\newcommand{\zed}{\ensuremath{\mathbb{Z}}}
\newcommand{\air}{\ensuremath{\mathbb{R}}}
\newcommand{\ain}{\ensuremath{\mathbb{N}}}
% ensuremath s'assure que son argument est toujours composé en mode mathématique. Si l'on veut utiliser la commande \air par exemple dans du texte, il faut la faire suivre de \espace pour insérer l'espace nécessaire après le symbole R des réels.

\renewcommand{\leq}{\ensuremath{\leqslant}} % redéfinir le signe inférieur ou égal
\renewcommand{\geq}{\ensuremath{\geqslant}} % redéfinir le signe supérieur ou égal

% pour écrire correctement Z/nZ :
\newcommand*{\Sfrac}[2]{%
  \hspace*{.1em}\raisebox{.5ex}{$#1$}\hspace*{-.1em}%
  /\hspace*{-.15em}\raisebox{-.25ex}{$#2$}%
}
% La version étoilée du newcommand permet de circonscrire à un paragraphe les erreurs % dues à un éventuel oubli d'accolade fermante. Ainsi, on retrouve plus facilement
% l'emplacement de l'erreur.
% \hspace*{.1em} force un espace horizontal, quel que soit le contexte(même aux frontières de l'empagement), d'une hauteur égale à 1 dixième de cadratin.
% \raisebox permet de décaler verticalement une boîte horizontale
% \raisebox{<décalage>}[<hauteur>][<profondeur>]{<matériel>}

\newcommand{\ZnZ}{\Sfrac{\zed}{n\zed}}
% raccourci pour Z/nZ afin de pouvoir changer l'apparence facilement.

\newcommand{\modulo}[1]{\ [#1]}% car c'est répété souvent et pour pouvoir changer d'avis sur la présentation
\newcommand{\congru}[3]{#1\equiv #2\modulo{#3}}

\newcommand{\abs}[1]{\lvert#1\rvert}
% il faut utiliser \lvert pour une valeur absolue ouvrante et \rvert pour une valeur absolue fermante

% Afin de grouper correctement plusieurs équations l'une au-dessus de l'autre avec une accolade ouvrante devant celles-ci :
\newenvironment{regroup}{%
  \left\lbrace\renewcommand{\arraystretch}{1.2}%
  \begin{array}{@{}l@{}}%
}
{\end{array}\right.}
% \def\arraystretch{1.2} permet d'augmenter la hauteur et la profondeur des lignes du tableau de 20 % pour voir correctement (classe de 1), etc ..
% on peut aussi écrire \renewcommand{\arraystretch}{1.2}
% @{} remplace l'espace intercolonne par l'argument (vide ici avec {})

% macro de séparation fond/forme : L'intérêt est de choisir la mise en forme pour tout le document.
\newcommand{\definir}[1]{\textbf{\mathversion{bold}#1}} % pour mettre en évidence le texte ayant trait à une définition. Ici,on choisit de mettre en gras le texte et les caractères mathématiques. La commande \mathbf{} ne suffit pas pour mettre en gras les indices et exposants, c'est pourquoi on utilise \mathversion{bold}).
\newcommand{\important}[1]{\textbf{\mathversion{bold}#1}} % même chose pour ce qui est important

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                              Modifier le titre courant et le pied de page
%                                    avec le package fancyhdr
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{xcolor}
\usepackage{fancyhdr}\pagestyle{fancy} % appeler le style de page fancy afin de l'utiliser et le régler ensuite. Le style de page par défaut est fancy.

\fancypagestyle{premierepage}{\fancyhead{}\renewcommand\headrulewidth{0pt}}
% Définir un style de page nommé premierepage dont le titre courant est vide et qui  % ne trace pas de trait horizontal séparant le texte du titre courant.

\fancyhf{}
\fancyhead[RO,LE]{\thepage}
\fancyhead[CO]{\leftmark}
\fancyhead[CE]{\textbf{\rightmark}}
\cfoot{\scriptsize\textit{\theauthor, \theclasse{} -- Lycée \textsc{\thelycee}, \theanneescolaire}}

% theclass, thelycee et theanneescolaire ne sont pas encore définis. Ils sont définis en-dessous.
%                  \fancyhf{} efface tout
%                  \fancyhead[RO,LE]{\thepage}
% RO (à droite, page impaire) et LE (à gauche, page paire) : écrire numéro de page
%                  \fancyhead[CO]{\leftmark}
% CO (au centre,page impaire) : écrire le nom du chapitre courant (leftmark)
%                  \fancyhead[CE]{\textbf{\rightmark}}
% CE (au centre, page paire) : écrire le nom de la section courante (rightmark)
%       \cfoot{\scriptsize\textsl{\theauthor, \theclasse{} -- Lycée \textsc{\thelycee}, \theanneescolaire}}
% pied de page en italique et en petite taille

\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
% on redéfinit \chaptermark pour ne pas avoir "Chapitre 1" devant le titre de chapitre "Arithmétique dans \zed" dans l'en-tête des pages impaires
% voir pages 222 et 223 du LaTeX Companion

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                   PERSONNALISATION DES SECTIONS
%                                         (ICI CHAPTER)
%                                         AVEC TITLESEC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand*{\emptyelement}{}
% commande pour tester si un élément (ici l'image de chapitre) est vide
% \emptyelement est la macro vide
% Pour tester si une macro est vide, on ne peut pas la comparer à {} car ce n'est pas une macro ; il faut donc définir une macro vide pour pouvoir effectuer la comparaison.

% utilisation de titlesec pour redéfinir les chapitres
\usepackage{titlesec}
\newcommand{\chaptercmd}{} % chaptercmd est initialisée à {}

% L'idée est de modifier la présentation des titres de la commande \chapter à l'aide de la commande \titleformat du package titlesec.
% titleformat sert à modifier la présentation des titres de sections
% syntaxe : \titleformat{<niveau de sectionnement>}[<forme>]{<format>}{<label>}{<sep>}{<avant>}{<après>} (p 118 LaTeX pour l'impatient ou p 40 du LC)
% sep est l'espace entre le numéro et le titre
% avant est le code à exécuter avant le titre de la section (numéro exclus)
% après est le code à exécuter après le titre de la section
\titleformat{\chapter}
  {\global\let\chaptercmd\chaptercmdstar} % chaptercmd devient chaptercmdstar
  {\global\let\chaptercmd\chaptercmdnostar} % chaptercmd devient chaptercmdnostar
  {0pt}   % ici le 0 n'a pas d'incidence vue la définition de chaptercmd
  {\thispagestyle{premierepage}\chaptercmd} % afficher le style 1ere page et chaptercmd
  {}
       
\titlespacing*{\chapter}{0pt}{0pt}{-30pt}
% La commande titlespacing gère l'espacement autour des titres de sectionnement
% syntaxe : \titlespacing{commande}{gauche}{avantsep}{aprèssep}[droite]
% <gauche> modifie la taille de la marge de gauche
% <avantsep> modifie l'espace vertical avant le titre
% <aprèssep> modifie l'espace vertical après le titre
% <droite> modifie la taille de la marge de droite
% la forme étoilée de titlespacing supprime le retrait du paragraphe suivant le titre (cf p 41 du LC)
% Ici, on diminue l'espace vertical entre le titre du chapitre et le corps de texte

% La commande \chaptercmdstar{titre} effectue la tâche suivante :
% Si l'image est absente, elle écrit <titre> en capitales, en gras et en bleu
% Sinon elle écrit <titre> en capitales, en gras et en bleu, avec l'image à côté.
% Avec \chaptercmdstar, le chapitre n'est pas numéroté. (Ainsi elle peut être utilisée pour la table des matières, par exemple.)
%                  COMMENTAIRES SUR LA DEFINITION DE LA MACRO
% syntaxe \ifthenelse{condition}{Vrai}{Faux}
% \equal{chaîne1}{chaîne2} : teste si les deux chaînes sont identiques
% \noindent : pas de retrait pour la 1ère ligne d'un paragraphe
% \begin{tabular}{p{\textwidth-2\tabcolsep}}:
                % Le spécificateur p permet de composer une colonne en précisant sa
                % largeur. Le texte est alors justifié.
                % textwidth désigne la largeur du texte et tabcolsep est la demi-
                % distance entre deux colonnes du tableau.
                % Le calcul \textwidth-2\tabcolsep nécessite l'utilisation du package
                % calc.
                % On compose ainsi une colonne de largeur égale à la largeur du texte
                % diminuée de la distance entre deux colonnes du tableau.
%\begin{center}\color{blue}
                % centre le paragraphe dans le tableau
                % \color{blue} est une bascule écrivant toute la suite du texte en
                % bleu. Pour revenir à la normale, on écrit \color{black} si l'on
                % veut un changement dans l'environnement en cours. Attention, les
                % actions décrites dans l'environnement (center ici) sont limitées à
                % cet environnement.
%{\Huge\bfseries\MakeUppercase{#1}\par}
                % \Huge est aussi une bascule pour effectuer un changement de taille
                % de fonte et obtenir la taille "énorme". Ici, comme elle est
                % précédée de { et suivie de <materiel>}, elle n'agit que sur
                % <materiel>.
                % \bfseries : bascule pour écrire en gras
                % \MakeUppercase{materiel} met les caractères de <materiel> en
                % capitales. Attention si materiel contient des maths (p.87 LC)
                % \par indique une fin de paragraphe
%{@{\hspace{2em}}p{.75\textwidth-4em}@{\hspace{2em}}p{.25\textwidth-2\tabcolsep}}
                % Dans un tableau, @{<materiel>} indique le materiel qui sera
                % placé entre deux colonnes. Ici, avec \hspace{2em} on indique un
                % espace horizontal de largeur égale à 2 cadratins.
                % p pour fixer la largeur de la colonne à 75 % de la largeur du
                % texte diminuée de 4 cadratins         
%\includegraphics[width=.25\textwidth-2\tabcolsep]{\thechapterimage}
                 % nécessite d'utiliser le package graphicx
                 % inclut l'image avec une largeur de 25 % de la largeur du texte
                 % diminuée de la distance entre deux colonnes du tableau.                         
%\gdef\thechapterimage{}
                 % pour ne pas utiliser la même image pour le chapitre suivant
%
\newcommand{\chaptercmdstar}[1]{
\ifthenelse{\equal{\thechapterimage}{\emptyelement}}
{\noindent\begin{tabular}{p{\textwidth-2\tabcolsep}}
  \begin{center}\color{blue}
  {\Huge\bfseries\MakeUppercase{#1}\par}
  \end{center}\end{tabular}\par}
{\noindent\begin{tabular}{@{\hspace{2em}}p{.75\textwidth-4em}@{\hspace{2em}}p{.25\textwidth-2\tabcolsep}}
\begin{center}\color{blue}
{\Huge\bfseries\MakeUppercase{#1}\par}
\end{center}
&
\begin{center}
\includegraphics[width=.25\textwidth-2\tabcolsep]{\thechapterimage}
\end{center} \\
\end{tabular}\par}}

% La commande \chaptercmdnostar{titre} effectue la tâche suivante :
% Si l'image est absente, elle écrit en bleu, chapitre n°X puis, en-dessous, <titre> en capitales et en gras.
% Sinon elle écrit en bleu, chapitre n°X puis, en-dessous, <titre> en capitales et en gras, avec l'image à côté.
% Avec \chaptercmdnostar,le chapitre est numéroté.
%                  COMMENTAIRES SUR LA DEFINITION DE LA MACRO
%\vspace*{2em}
                % \vspace*{2em} force un espace vertical, quel que soit le contexte
                % (même en début de page), d'une hauteur égale à 2 cadratins.
                % \vspace* doit obligatoirement être précédée ou suivie d'une ligne
                % blanche
%
\newcommand{\chaptercmdnostar}[1]{
\ifthenelse{\equal{\thechapterimage}{\emptyelement}}
{\noindent\begin{tabular}{p{\textwidth-2\tabcolsep}}
  \begin{center}\color{blue}
  {\large\MakeUppercase{chapitre \thechapter}\par}
  \vspace*{2em}
  {\Huge\bfseries\MakeUppercase{#1}\par}
  \end{center}
  \end{tabular}\par}
{\noindent\begin{tabular}{@{\hspace{2em}}p{.75\textwidth-4em}@{\hspace{2em}}p{.25\textwidth-2\tabcolsep}}
\begin{center}\color{blue}
{\large\MakeUppercase{chapitre \thechapter}\par}
\vspace*{2em}
{\Huge\bfseries\MakeUppercase{#1}\par}
\end{center}
&
\begin{center}
\includegraphics[width=.25\textwidth-2\tabcolsep]{\thechapterimage}
\end{center} \\
\end{tabular}\par}}

\newcommand{\setchapternumber}[1]{\setcounter{chapter}{#1-1}}
% Cette commande permet de préciser le n° de chapitre, si besoin. Elle diminue la valeur de thechapter de un.
% En effet, lorsqu'un compteur est créé, il est automatiquement initialisé à une valeur nulle.
% Ainsi, initialement thechapter est égal à 0. Puis, à chaque appel de la commande \chapter, le compteur thechapter est incrémenté de 1. Ainsi, si on écrit \setcounter{chapter}{5}, au premier appel de \chapter le compteur thechapter passe à six. C'est la raison de la commande ci-dessus.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                        Pour un document électronique afin d'obtenir
%                                   un fichier PDF interactif
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[dvips]{hyperref}
% n'utiliser l'option dvips que pour une compilation dvi->ps->pdf
% sinon, ne rien mettre (c'est automatique pour pdftex)

\hypersetup{pdfstartview=XYZ}
% pour que le niveau de zoom du PDF ne soit pas changé

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                         PERSONNALISATION DES DONNEES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*{\thechapterimage}{}
\newcommand*{\theanneescolaire}{2009-2010}
\newcommand*{\theclasse}{T\textsuperscript{ale}S1}
\newcommand*{\thelycee}{La Herdrie}
\author{Freddy Mérit}
\makeatletter \newcommand*{\theauthor}{\@author}\makeatother
% Pour redéfinir ou utiliser des commandes contenant un @ (ici @author), on doit prendre une précaution supplémentaire afin d'éviter que ce caractère soit interprété. On entoure la définition de la commande de \makeatletter et de \makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                         CORPS DU DOCUMENT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\renewcommand*{\thechapterimage}{bezout}% à mettre avant le chapitre ; si absent ou vide, aucune image n'est imprimée ; l'image d'un chapitre n'est pas réutilisée pour le chapitre suivant
% \setchapternumber{3}% au besoin, pour changer le numéro de chapitre
\chapter{Arithmétique dans~\zed}

\section{Divisibilité}

\begin{pro}
  $(\zed,+,\times)$ est un anneau commutatif unitaire intègre (de caractéristique nulle).
\end{pro}

\begin{dfn}
  Soit $(a,b)\in\zed^2$. On dit que $a$ \definir{divise} $b$, et on note $a\mid b$ si et seulement s'il existe $c\in\zed$ tel que $b=ac$.
 
On dit aussi que :
     \begin{itemize}
      \item $a$ est un \definir{diviseur} de $b$ ;
      \item $b$ est un \definir{multiple} de $a$ ;
      \item $b$ est \definir{divisible} par $a$.
   \end{itemize}
\end{dfn}

% iff est préférable à \Longleftrightarrow, il insére un espace avant et un après.
% même chose pour mid au lieu de |.

\begin{remar}
  \begin{enumerate}
     \item \eqparbox{rem}{$\forall a\in\zed,\quad a\mid a.$}\quad(\textit{Tout entier relatif est divisible par lui-même.})
     \item \eqparbox{rem}{$\forall a\in\zed,\quad 1\mid a \enspace \text{et}          \enspace{-1}\mid a.$}\quad(\textit{Tout entier relatif est multiple de $1$ ou de $-1$.})
     \item \eqparbox{rem}{$\forall a\in\zed,\quad a\mid 0.$}\quad(\textit{Tout entier relatif divise $0$.})
     \item \eqparbox{rem}{$\forall a\in\zed,\quad 0\mid a\iff a=0.$}\quad(\textit{Le seul multiple de $0$ est $0$.})
     \end{enumerate}
\end{remar}   

% syntaxe eqparbox : \eqparbox{étiquette}{materiel de la boite}
% crée des boites verticales de même largeur. Cette largeur est égale à la largeur maximale du matériel disposé dans les boîtes ayant la même étiquette.
% \enspace produit un espace d'un demi-cadratin (0.5 em), \quad produit un espace d'un cadratin (1 em). Le cadratin est proportionnel au corps de la police
% Dans un texte tapé en corps 11, un cadratin mesure 11 points.
% 1 cadratin (1 em) est la largeur de la lettre M dans la police courante.
% 1 hauteur d'x (1 ex) est la hauteur de la lettre x dans la police courante.
% 1 pt est égal à 0.3515 mm
% En  mode maths, le -1 doit être écrit entre accolades {-1} pour avoir un espacement correct entre le signe moins et le nombre 1.
% En mode texte, écrire les nombres entre dollars (ce sont des maths).

\begin{pro}
  $\forall (a,b,c) \in \zed^3, \quad
   \begin{regroup}
      a\mid b\\b\mid c
   \end{regroup}
  \implies a\mid c$
\end{pro}
% \implies est préférable à \Longrightarrow, il produit des espacements corrects

\begin{pro}
\begin{enumerate}
  \item $\forall (a,b,c) \in \zed^3, \quad a\mid b \implies a\mid bc$
  \item $\forall (a,b,c,\alpha,\beta) \in \zed^5, \quad \begin{regroup}
                                              a\mid b\\a\mid c
                                               \end{regroup}
                                     \implies a\mid(\alpha b+\beta c)$
  \item $\forall (a,b,\alpha,\beta) \in \zed^4, \quad \begin{regroup}
                                             a\mid b\\
                                             \alpha\mid \beta
                                          \end{regroup}
                                         \implies  a\alpha\mid b\beta$
  \item $\forall (a,b,n) \in \zed\times\zed\times\mathbb{N}^*, \quad a\mid b\implies                                                          a^n\mid b^n$
\end{enumerate}
\end{pro}

\begin{pro}
\begin{enumerate}
  \item $\forall (a,b) \in \zed^*\times\zed^*, \quad b\mid a\implies \abs{b} \leq \abs{a}$
  \item $\forall (a,b) \in \zed^*\times\zed^*, \quad
   \begin{regroup}
      a\mid b\\b\mid a
   \end{regroup}
    \implies  \abs{a}=\abs{b}$
\end{enumerate}
\end{pro} 

\begin{csq}
L'ensemble des diviseurs d'un entier relatif non nul est fini.
\end{csq}

\begin{pro}
\air\  est archimédien, c'est-à-dire,
$\forall x \in \air^+, \forall y\in \air^{*+},\exists n\in \ain,\ ny>x.$
\end{pro}

\begin{csq}
$\ain$, $\zed$, $\mathbb{D}$, $\mathbb{Q}$ sont donc aussi archimédiens.
\end{csq}

\begin{pro}
\begin{enumerate}
\item Toute partie non vide de \ain\  admet un plus petit élément.
\item Toute partie non vide et majorée (resp. minorée) de \zed\  admet un plus grand (resp. plus petit) élément.
\end{enumerate}
\end{pro}

\begin{theo}
Soit $(a,b)\in \zed\times\ain^*$.

Il \important{existe} un \important{unique} couple $(q,r)$ appartenant à $\zed^2$ tel que  $\begin{regroup}
      a=bq+r\\
      0\leq r<b
   \end{regroup}$.
On dit que $q$ est le \definir{quotient} et $r$ est le \definir{reste} de la division euclidienne de $a$ par $b$.
\end{theo}

\section{Congruences}

\begin{dfn}
Soit $n\in\ain^*$. Soit $(a,b)\in\zed^2$.

On dit que $a$ est \definir{congru à} $b$ \definir{modulo} $n$ si $n$ divise $b-a$. On note $\congru{a}{b}{n}$ ou $a\equiv b$ mod $n$. Ainsi,
\[\congru{a}{b}{n}\iff n\mid (b-a).\]
\end{dfn}

\begin{pro}
Soit $n \in \ain^*$. Soit $(a,b) \in \zed^2$.

$a$ est congru à $b$ modulo $n$ équivaut à $a$ et $b$ ont le même reste dans la division euclidienne par $n$.
\end{pro}

\begin{pro}
Pour tout $n$ de $\ain^*$, la relation de congruence $\equiv\modulo{n}$ est une relation d'équivalence sur l'ensemble \zed. On note $\ZnZ$ l'ensemble-quotient de $\zed$ par la relation d'équivalence ($\equiv$) de congruence modulo~$n$.
\end{pro}

\begin{pro}
Soit $n \in \ain^*$. Soit $a\in \zed$.

Il existe un unique entier naturel $r$ tel que $0\leq r<n$ et $\congru{r}{a}{n}$. Ce nombre est le reste de la division euclidienne de $a$ par $n$.
\end{pro}

\begin{dfn}
Pour tout $x$ de \zed, on note $\hat{x}$ (ou $\bar{x}$) la classe de $x$ dans $\ZnZ$ :
\[\hat{x}=\{y\in \zed; \congru{x}{y}{n}\}=\{x+kn;k\in\zed\}.\]
$\ZnZ$ est donc un ensemble fini à $n$ éléments et $\ZnZ=\{\hat{0},\hat{1},\dots,\widehat{n-1}\}$.
\end{dfn}

\begin{pro}
Soit $n \in \ain^*$. Pour tout $(a,b,c,d)$ de $\zed^4$, on a :
\[\left\{\begin{aligned}
      a &\equiv b\modulo{n}\\
      c &\equiv d\modulo{n}
    \end{aligned}
  \right.
\implies
\left\{\begin{aligned}
      a+c &\equiv b+d\modulo{n}\\
      ac &\equiv bd\modulo{n}
     \end{aligned}
  \right.\]
\end{pro}

\begin{cor}
\[\forall (a,b) \in \zed^2,\quad \forall k \in \ain^*, \quad \left(\congru{a}{b}{n}\implies \congru{a^k}{b^k}{n}\right).\]
\end{cor}

Comme la relation d'équivalence $\equiv\modulo{n}$ est compatible avec les lois de composition interne $+$ et $\times$ de \zed, on peut définir deux lois de composition interne dans $\ZnZ$, notées $\hatplus$ et $\hattimes$ par :
\[\forall (x,y) \in \zed^2, \quad \left\{\begin{aligned}
      \hat{x}\hatplus\hat{y} &= \widehat{x+y}\\
      \hat{x}\hattimes\hat{y} &= \widehat{x\times y}.
           \end{aligned}
  \right.\]
\renewcommand*\arraystretch{1.3} % pour augmenter la hauteur de ligne dans le tableau afin de bien visualiser les caractères accentués.
\begin{tabular}{|c|c|c|c|c|}
\hline
% \psset{unit=0.9cm} permet d'affecter un facteur d'agrandissement-réduction ici de 90 % à la figure.
% \rput (x,y){materiel} permet de mettre le materiel (figures ou caractères)au point de coordonnées (x,y)
% on peut aussi écrire \psset{unit=0.4cm}\rput(-1ex,-0.7ex){\psarc{<-}(1,0){1}{90}{180} \rput(0,0.8){\footnotesize +}} où 1 ex correspond à la hauteur du x bas-de-casse, c'est une unité relative
%
\psset{unit=0.9cm}\rput(0.25,-0.15){\psarc{<-}(0,0){0.5}{90}{180}} \rput(0.1,0.1){$\hat{+}$}  & $\hat{0}$ & $\hat{1}$ & $\hat{2}$ & $\hat{3}$ \\
\hline $\hat{0}$ & $\hat{0}$ & $\hat{1}$ & $\hat{2}$ & $\hat{3}$ \\
\hline $\hat{1}$ & $\hat{1}$ & $\hat{2}$ & $\hat{3}$ & $\hat{0}$ \\
\hline $\hat{2}$ & $\hat{2}$ & $\hat{3}$ & $\hat{0}$ & $\hat{1}$ \\
\hline $\hat{3}$ & $\hat{3}$ & $\hat{0}$ & $\hat{1}$ & $\hat{2}$ \\
\hline
\end{tabular}
\end{document}
Billy the Kid
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Novembre 2009, 19:04
Localisation: Le Loroux Bottereau (44)
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede pg » Jeudi 14 Janvier 2010, 23:40

Billy the Kid a écrit:Où est effectué le test pour savoir laquelle de ces deux commandes effectuer?
Comment et quand est exécuter la commande chaptercmdstar ?

Le test est effectué par \titleformat ; l'utilisation de titlesec permet d'éviter d'avoir à faire ce test à la main (et simplifie beaucoup la longueur du code nécessaire). La syntaxe de \titleformat est

Code: Tout sélectionner
\titleformat{\chapter}[<forme>]% forme = display, hang, ...
  {<format>}% commandes pour le titre + le numéro
  {<label>}% commandes spécifiques à la version numérotée
  {<sep>}% longueur entre le numéro et le titre
  {<avant>}% commandes spécifiques au titre
  [<après>]

(Attention, le <après> est entre crochet) Quelque chose qui est mis dans le <label> ne sera pris en compte que si on utilise \chapter, pas si on utilise \chapter*. C'est là tout le principe du code utilisé précédemment : si on utilise \chapter*, la seule chose qui est exécutée est \global\let\chaptercmd\chaptercmdstar, donc \chaptercmd est \chaptercmdstar ; si on utilise \chapter, la première chose exécutée est \global\let\chaptercmd\chaptercmdstar puis, ensuite, \global\let\chaptercmd\chaptercmdnostar est exécutée, et donc au final \chaptercmd est égale à \chaptercmdnostar.

Par ailleurs, j'ai eu envie (ou sans doute besoin) de programmer uniquement avec les commandes LaTeX. Je trouve celà plus rassurant pour moi qui débute, même si tes explications sur les commandes TeX utilisées m'ont permis de comprendre le rôle qu'elles jouaient.

Ça peut être tentant au début de vouloir uniquement programmer avec laTeX, mais dès qu'on fait des choses un peu poussées, ce n'est pas possible (LaTeX 3 devrait changer cela, mais ce n'est pas pour demain).

Peux-tu me dire si j'ai commis des erreurs avec toutes ces modifications ?

J'ai passé un temps relativement important à comprendre les commandes que tu as employées, c'est pourquoi j'ai mis pas mal de commentaires dans mon source (ce qui pourra aider un débutant à comprendre le code).
Enfin, j'ai fait le ménage dans mon préambule pour éliminer ce qui ne servait à rien.
Qu'en penses-tu ?

Ça m'a l'air bien, à quelques remarques mineures près.

  • Il y a un problème avec le plus fléché dans le tableau : la flèche et le chapeau du + entrent en collision, ce qui n'est pas très joli (il faudrait monter un peu la flèche) ; il y a aussi le problème du style de la flèche que j'avais mentionné dans l'autre sujet, mais avec pstricks, je ne sais pas si on peut la changer.
  • Faire attention au \renewcommand*\arraystretch{1.3} en liberté : il faudrait mieux le mettre à l'intérieur d'accolades pour ne pas affecter tous les tableaux qui suivent (à moins que ce ne soit vraiment ce qui est souhaité).
  • Concernant \mathversion{bold}, dans les commentaires il est écrit
    La commande \mathbf{} ne suffit pas pour mettre en gras les indices et exposants, c'est pourquoi on utilise \mathversion{bold}).

    Ce n'est pas un problème d'indice ou d'exposant, mais de type de symbole ; par exemple \mathbf{\alpha} n'est pas gras : $\mathbf{\alpha}$, mais avec \mathversion{bold}, il le sera : $\boldsymbol{\alpha}$.
  • Le \newcommand*{\emptyelement}{} ne sert plus à rien avec ifthenelse, il suffit de faire

    Code: Tout sélectionner
    \ifthenelse{\equal{\thechapterimage}{}}{...}{...}
  • Pour revenir à la normale lorsqu'on a changé de couleur, on utilise plutôt \normalcolor que \color{black} (certains documents utilisent une autre couleur par défaut que le noir).
  • Dans le commentaire sur le

    Code: Tout sélectionner
    {\Huge\bfseries\MakeUppercase{#1}\par}

    il me semble important de préciser la raison d'être du \par à l'intérieur des accolades : s'il était en dehors, le \Huge changerait uniquement la taille de la police, pas l'interligne.


En tout, cela donne :

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%  VERSION DEFINITIVE  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[11pt,a4paper,twoside]{report}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%INDISPENSABLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[cp1252]{inputenc} % pour compiler correctement sous Windows
\usepackage[T1]{fontenc} % pour accéder aux glyphes des fontes
\usepackage[frenchb]{babel} % pour adapter la typographie aux conventions françaises
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{lmodern} % charge la famille de fontes lmodern
\usepackage[tmargin=31pt,headsep=0pt,headheight=14.05pt,width=173mm,lines=54]{geometry} % réglages format page
% tmargin : marge de tête, headsep : sépararation en-tête/corps de texte
% headheight : hauteur de l'en-tête , width : largeur du corps de texte
% lines : nombre de lignes

\usepackage{amsmath,amssymb} % extensions pour écrire des mathématiques

\usepackage{calc} % pour faire des calculs sur les compteurs (pour la commande chaptercmd, par exemple)

\usepackage{enumitem} % extension pour personnaliser les listes
\frenchbsetup{StandardLists=true} % à charger avec enumitem pour éviter les conflits avec frenchb
\setenumerate[1]{font=\upshape,label=\arabic*)} % fonte normale, chiffre arabe , *) pour préciser que le nombre est suivi d'une parenthèse fermante ).
\setitemize[1]{label=--,noitemsep,topsep=0pt} % tirets pour les listes
% noitemsep: pas d'espace supplémentaire entre deux items successifs, topsep=0pt pas d'espace supplémentaire entre le paragraphe précédent et le premier item (c'est-à-dire même espacement que le standard de frenchb).
\usepackage{eqparbox} % pour avoir des boîtes de mêmes largeurs choisies par une étiquette (pour la première remarque du document)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                             Numéro de section, Compteurs de "théorèmes"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\renewcommand{\thesection}{\Roman{section}} % change le numéro de section en chiffres romains
\newcounter{cpttheo}[section]\newcounter{cptpro}[section]\newcounter{cptdfn}[section]
% Avec l'option [section], cpttheo est réinitialisé à un à chaque changement de section
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
% on redéfinit \chaptermark pour ne pas avoir "Chapitre 1" devant le titre de chapitre "Arithmétique dans \zed"
% markboth : voir LC page 222

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       Utilisation de bclogo pour créer les environnements   
%                                 "théorèmes"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{pstricks,graphicx,pst-grad,pst-coil,pst-blur,ifthen,xkeyval} % extensions nécessaires à bclogo
\usepackage{bclogo}
%\newcommand\bclosange{\centering$\blacklozenge$} % définir un bclogo à partir des caractères existants

\newcommand\bcblanc{{}} % définit un logo vide
% refstepcounter incréménte de un le compteur désigné
\newenvironment{theo}[1][]{\refstepcounter{cpttheo}\begin{bclogo}[logo=\bcspadesuit,ombre=true,arrondi=0.1]{Théorème \thesection -\thecpttheo\ : #1}}{\end{bclogo}}

\newenvironment{pro}[1][]{\refstepcounter{cptpro}\begin{bclogo}[logo=\bcplume,couleurBord=white]{Propriété \thesection -\thecptpro\ : #1}}{\end{bclogo}}

\newenvironment{dfn}[1][]{\refstepcounter{cptdfn}\begin{bclogo}[logo=\bcbook,couleurBord=white]{Définition \thesection -\thecptdfn\ : #1}}{\end{bclogo}}

\newenvironment{cor}[1][]{\begin{bclogo}[logo=\bcrosevents,couleurBord=white]{Corollaire \thesection -\thecptpro\ : #1}}{\end{bclogo}}
% Le numéro du corollaire est le même que celui de la proposition qui le précède

\newenvironment{remar}{%
% le code {% est utilisé dans les environnements personnels ou les commandes perso pour éviter les effets de bord (insertion d'espaces superflus par exemple)
\begin{bclogo}[logo=\bcblanc,couleurBord=white,barre=none,sousTitre=Remarques :]{}\vskip 0.5em}
{\end{bclogo}}

\newenvironment{csq}{%
\begin{bclogo}[logo=\bcblanc,couleurBord=white,barre=none,sousTitre=Conséquence :]{}}
{\end{bclogo}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                Commandes personnelles
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\hatplus}{\mathbin{\hat{+}}}
\newcommand{\hattimes}{\mathbin{\hat{\times}}}
% \mathbin définit son argument comme un opérateur binaire (le \hat ôte à son argument (+ ici) le statut de binaire)

\newcommand{\zed}{\ensuremath{\mathbb{Z}}}
\newcommand{\air}{\ensuremath{\mathbb{R}}}
\newcommand{\ain}{\ensuremath{\mathbb{N}}}
% ensuremath s'assure que son argument est toujours composé en mode mathématique. Si l'on veut utiliser la commande \air par exemple dans du texte, il faut la faire suivre de \espace pour insérer l'espace nécessaire après le symbole R des réels.

\renewcommand{\leq}{\ensuremath{\leqslant}} % redéfinir le signe inférieur ou égal
\renewcommand{\geq}{\ensuremath{\geqslant}} % redéfinir le signe supérieur ou égal

% pour écrire correctement Z/nZ :
\newcommand*{\Sfrac}[2]{%
  \hspace*{.1em}\raisebox{.5ex}{$#1$}\hspace*{-.1em}%
  /\hspace*{-.15em}\raisebox{-.25ex}{$#2$}%
}
% La version étoilée du newcommand permet de circonscrire à un paragraphe les erreurs % dues à un éventuel oubli d'accolade fermante. Ainsi, on retrouve plus facilement
% l'emplacement de l'erreur.
% \hspace*{.1em} force un espace horizontal, quel que soit le contexte(même aux frontières de l'empagement), d'une hauteur égale à 1 dixième de cadratin.
% \raisebox permet de décaler verticalement une boîte horizontale
% \raisebox{<décalage>}[<hauteur>][<profondeur>]{<matériel>}

\newcommand{\ZnZ}{\Sfrac{\zed}{n\zed}}
% raccourci pour Z/nZ afin de pouvoir changer l'apparence facilement.

\newcommand{\modulo}[1]{\ [#1]}% car c'est répété souvent et pour pouvoir changer d'avis sur la présentation
\newcommand{\congru}[3]{#1\equiv #2\modulo{#3}}

\newcommand{\abs}[1]{\lvert#1\rvert}
% il faut utiliser \lvert pour une valeur absolue ouvrante et \rvert pour une valeur absolue fermante

% Afin de grouper correctement plusieurs équations l'une au-dessus de l'autre avec une accolade ouvrante devant celles-ci :
\newenvironment{regroup}{%
  \left\lbrace\renewcommand{\arraystretch}{1.2}%
  \begin{array}{@{}l@{}}%
}
{\end{array}\right.}
% \def\arraystretch{1.2} permet d'augmenter la hauteur et la profondeur des lignes du tableau de 20 % pour voir correctement (classe de 1), etc ..
% on peut aussi écrire \renewcommand{\arraystretch}{1.2}
% @{} remplace l'espace intercolonne par l'argument (vide ici avec {})

% macro de séparation fond/forme : L'intérêt est de choisir la mise en forme pour tout le document.
\newcommand{\definir}[1]{\textbf{\mathversion{bold}#1}} % pour mettre en évidence le texte ayant trait à une définition. Ici,on choisit de mettre en gras le texte et les caractères mathématiques. La commande \mathversion{bold} (qui doit être placée en dehors des maths) permet de mettre toutes les maths en gras (si la police a une variante grasse complète).
\newcommand{\important}[1]{\textbf{\mathversion{bold}#1}} % même chose pour ce qui est important

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                              Modifier le titre courant et le pied de page
%                                    avec le package fancyhdr
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{xcolor}
\usepackage{fancyhdr}\pagestyle{fancy} % appeler le style de page fancy afin de l'utiliser et le régler ensuite. Le style de page par défaut est fancy.

\fancypagestyle{premierepage}{\fancyhead{}\renewcommand\headrulewidth{0pt}}
% Définir un style de page nommé premierepage dont le titre courant est vide et qui  % ne trace pas de trait horizontal séparant le texte du titre courant.

\fancyhf{}
\fancyhead[RO,LE]{\thepage}
\fancyhead[CO]{\leftmark}
\fancyhead[CE]{\textbf{\rightmark}}
\cfoot{\scriptsize\textit{\theauthor, \theclasse{} -- Lycée \textsc{\thelycee}, \theanneescolaire}}

% theclass, thelycee et theanneescolaire ne sont pas encore définis. Ils sont définis en-dessous.
%                  \fancyhf{} efface tout
%                  \fancyhead[RO,LE]{\thepage}
% RO (à droite, page impaire) et LE (à gauche, page paire) : écrire numéro de page
%                  \fancyhead[CO]{\leftmark}
% CO (au centre,page impaire) : écrire le nom du chapitre courant (leftmark)
%                  \fancyhead[CE]{\textbf{\rightmark}}
% CE (au centre, page paire) : écrire le nom de la section courante (rightmark)
%       \cfoot{\scriptsize\textsl{\theauthor, \theclasse{} -- Lycée \textsc{\thelycee}, \theanneescolaire}}
% pied de page en italique et en petite taille

\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
% on redéfinit \chaptermark pour ne pas avoir "Chapitre 1" devant le titre de chapitre "Arithmétique dans \zed" dans l'en-tête des pages impaires
% voir pages 222 et 223 du LaTeX Companion

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                   PERSONNALISATION DES SECTIONS
%                                         (ICI CHAPTER)
%                                         AVEC TITLESEC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% utilisation de titlesec pour redéfinir les chapitres
\usepackage{titlesec}
\newcommand{\chaptercmd}{} % chaptercmd est initialisée à {}

% L'idée est de modifier la présentation des titres de la commande \chapter à l'aide de la commande \titleformat du package titlesec.
% titleformat sert à modifier la présentation des titres de sections
% syntaxe : \titleformat{<niveau de sectionnement>}[<forme>]{<format>}{<label>}{<sep>}{<avant>}{<après>} (p 118 LaTeX pour l'impatient ou p 40 du LC)
% sep est l'espace entre le numéro et le titre
% avant est le code à exécuter avant le titre de la section (numéro exclus)
% après est le code à exécuter après le titre de la section
\titleformat{\chapter}
  {\global\let\chaptercmd\chaptercmdstar} % chaptercmd devient chaptercmdstar ; si l'utilisateur a utilisé \chapter*, c'est la valeur finale de \chaptercmd
  {\global\let\chaptercmd\chaptercmdnostar} % chaptercmd devient chaptercmdnostar si l'utilisateur utilise \chapter
  {0pt}   % ici le 0 n'a pas d'incidence vue la définition de chaptercmd
  {\thispagestyle{premierepage}\chaptercmd} % afficher le style 1ere page et chaptercmd
  {}
       
\titlespacing*{\chapter}{0pt}{0pt}{-30pt}
% La commande titlespacing gère l'espacement autour des titres de sectionnement
% syntaxe : \titlespacing{commande}{gauche}{avantsep}{aprèssep}[droite]
% <gauche> modifie la taille de la marge de gauche
% <avantsep> modifie l'espace vertical avant le titre
% <aprèssep> modifie l'espace vertical après le titre
% <droite> modifie la taille de la marge de droite
% la forme étoilée de titlespacing supprime le retrait du paragraphe suivant le titre (cf p 41 du LC)
% Ici, on diminue l'espace vertical entre le titre du chapitre et le corps de texte

% La commande \chaptercmdstar{titre} effectue la tâche suivante :
% Si l'image est absente, elle écrit <titre> en capitales, en gras et en bleu
% Sinon elle écrit <titre> en capitales, en gras et en bleu, avec l'image à côté.
% Avec \chaptercmdstar, le chapitre n'est pas numéroté. (Ainsi elle peut être utilisée pour la table des matières, par exemple.)
%                  COMMENTAIRES SUR LA DEFINITION DE LA MACRO
% syntaxe \ifthenelse{condition}{Vrai}{Faux}
% \equal{chaîne1}{chaîne2} : teste si les deux chaînes sont identiques
% \noindent : pas de retrait pour la 1ère ligne d'un paragraphe
% \begin{tabular}{p{\textwidth-2\tabcolsep}}:
                % Le spécificateur p permet de composer une colonne en précisant sa
                % largeur. Le texte est alors justifié.
                % textwidth désigne la largeur du texte et tabcolsep est la demi-
                % distance entre deux colonnes du tableau.
                % Le calcul \textwidth-2\tabcolsep nécessite l'utilisation du package
                % calc.
                % On compose ainsi une colonne de largeur égale à la largeur du texte
                % diminuée de la distance entre deux colonnes du tableau.
%\begin{center}\color{blue}
                % centre le paragraphe dans le tableau
                % \color{blue} est une bascule écrivant toute la suite du texte en
                % bleu. Pour revenir à la normale, on écrit \normalcolor si l'on
                % veut un changement dans l'environnement en cours. Attention, les
                % actions décrites dans l'environnement (center ici) sont limitées à
                % cet environnement.
%{\Huge\bfseries\MakeUppercase{#1}\par}
                % \Huge est aussi une bascule pour effectuer un changement de taille
                % de fonte et obtenir la taille "énorme". Ici, comme elle est
                % précédée de { et suivie de <materiel>}, elle n'agit que sur
                % <materiel>.
                % \bfseries : bascule pour écrire en gras
                % \MakeUppercase{materiel} met les caractères de <materiel> en
                % capitales. Attention si materiel contient des maths (p.87 LC)
                % \par indique une fin de paragraphe ; nécessaire pour avoir un
                % interligne correct à cause du \Huge
%{@{\hspace{2em}}p{.75\textwidth-4em}@{\hspace{2em}}p{.25\textwidth-2\tabcolsep}}
                % Dans un tableau, @{<materiel>} indique le materiel qui sera
                % placé entre deux colonnes. Ici, avec \hspace{2em} on indique un
                % espace horizontal de largeur égale à 2 cadratins.
                % p pour fixer la largeur de la colonne à 75 % de la largeur du
                % texte diminuée de 4 cadratins         
%\includegraphics[width=.25\textwidth-2\tabcolsep]{\thechapterimage}
                 % nécessite d'utiliser le package graphicx
                 % inclut l'image avec une largeur de 25 % de la largeur du texte
                 % diminuée de la distance entre deux colonnes du tableau.                         
%
\newcommand{\chaptercmdstar}[1]{
\ifthenelse{\equal{\thechapterimage}{}}
{\noindent\begin{tabular}{p{\textwidth-2\tabcolsep}}
  \begin{center}\color{blue}
  {\Huge\bfseries\MakeUppercase{#1}\par}
  \end{center}\end{tabular}\par}
{\noindent\begin{tabular}{@{\hspace{2em}}p{.75\textwidth-4em}@{\hspace{2em}}p{.25\textwidth-2\tabcolsep}}
\begin{center}\color{blue}
{\Huge\bfseries\MakeUppercase{#1}\par}
\end{center}
&
\begin{center}
\includegraphics[width=.25\textwidth-2\tabcolsep]{\thechapterimage}
\end{center} \\
\end{tabular}\par}}

% La commande \chaptercmdnostar{titre} effectue la tâche suivante :
% Si l'image est absente, elle écrit en bleu, chapitre n°X puis, en-dessous, <titre> en capitales et en gras.
% Sinon elle écrit en bleu, chapitre n°X puis, en-dessous, <titre> en capitales et en gras, avec l'image à côté.
% Avec \chaptercmdnostar,le chapitre est numéroté.
%                  COMMENTAIRES SUR LA DEFINITION DE LA MACRO
%\vspace*{2em}
                % \vspace*{2em} force un espace vertical, quel que soit le contexte
                % (même en début de page), d'une hauteur égale à 2 cadratins.
                % \vspace* doit obligatoirement être précédée ou suivie d'une ligne
                % blanche
%
\newcommand{\chaptercmdnostar}[1]{
\ifthenelse{\equal{\thechapterimage}{}}
{\noindent\begin{tabular}{p{\textwidth-2\tabcolsep}}
  \begin{center}\color{blue}
  {\large\MakeUppercase{chapitre \thechapter}\par}
  \vspace*{2em}
  {\Huge\bfseries\MakeUppercase{#1}\par}
  \end{center}
  \end{tabular}\par}
{\noindent\begin{tabular}{@{\hspace{2em}}p{.75\textwidth-4em}@{\hspace{2em}}p{.25\textwidth-2\tabcolsep}}
\begin{center}\color{blue}
{\large\MakeUppercase{chapitre \thechapter}\par}
\vspace*{2em}
{\Huge\bfseries\MakeUppercase{#1}\par}
\end{center}
&
\begin{center}
\includegraphics[width=.25\textwidth-2\tabcolsep]{\thechapterimage}
\end{center} \\
\end{tabular}\par}}

\newcommand{\setchapternumber}[1]{\setcounter{chapter}{#1-1}}
% Cette commande permet de préciser le n° de chapitre, si besoin. Elle diminue la valeur de thechapter de un.
% En effet, lorsqu'un compteur est créé, il est automatiquement initialisé à une valeur nulle.
% Ainsi, initialement thechapter est égal à 0. Puis, à chaque appel de la commande \chapter, le compteur thechapter est incrémenté de 1. Ainsi, si on écrit \setcounter{chapter}{5}, au premier appel de \chapter le compteur thechapter passe à six. C'est la raison de la commande ci-dessus.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                        Pour un document électronique afin d'obtenir
%                                   un fichier PDF interactif
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[dvips]{hyperref}
% n'utiliser l'option dvips que pour une compilation dvi->ps->pdf
% sinon, ne rien mettre (c'est automatique pour pdftex)

\hypersetup{pdfstartview=XYZ}
% pour que le niveau de zoom du PDF ne soit pas changé

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                         PERSONNALISATION DES DONNEES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*{\thechapterimage}{}
\newcommand*{\theanneescolaire}{2009-2010}
\newcommand*{\theclasse}{T\textsuperscript{ale}S1}
\newcommand*{\thelycee}{La Herdrie}
\author{Freddy Mérit}
\makeatletter \newcommand*{\theauthor}{\@author}\makeatother
% Pour redéfinir ou utiliser des commandes contenant un @ (ici @author), on doit prendre une précaution supplémentaire afin d'éviter que ce caractère soit interprété. On entoure la définition de la commande de \makeatletter et de \makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                         CORPS DU DOCUMENT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\renewcommand*{\thechapterimage}{bezout}% à mettre avant le chapitre ; si absent ou vide, aucune image n'est imprimée ; l'image d'un chapitre n'est pas réutilisée pour le chapitre suivant
% \setchapternumber{3}% au besoin, pour changer le numéro de chapitre
\chapter{Arithmétique dans~\zed}

\section{Divisibilité}

\begin{pro}
  $(\zed,+,\times)$ est un anneau commutatif unitaire intègre (de caractéristique nulle).
\end{pro}

\begin{dfn}
  Soit $(a,b)\in\zed^2$. On dit que $a$ \definir{divise} $b$, et on note $a\mid b$ si et seulement s'il existe $c\in\zed$ tel que $b=ac$.
 
On dit aussi que :
     \begin{itemize}
      \item $a$ est un \definir{diviseur} de $b$ ;
      \item $b$ est un \definir{multiple} de $a$ ;
      \item $b$ est \definir{divisible} par $a$.
   \end{itemize}
\end{dfn}

% iff est préférable à \Longleftrightarrow, il insére un espace avant et un après.
% même chose pour mid au lieu de |.

\begin{remar}
  \begin{enumerate}
     \item \eqparbox{rem}{$\forall a\in\zed,\quad a\mid a.$}\quad(\textit{Tout entier relatif est divisible par lui-même.})
     \item \eqparbox{rem}{$\forall a\in\zed,\quad 1\mid a \enspace \text{et}          \enspace{-1}\mid a.$}\quad(\textit{Tout entier relatif est multiple de $1$ ou de $-1$.})
     \item \eqparbox{rem}{$\forall a\in\zed,\quad a\mid 0.$}\quad(\textit{Tout entier relatif divise $0$.})
     \item \eqparbox{rem}{$\forall a\in\zed,\quad 0\mid a\iff a=0.$}\quad(\textit{Le seul multiple de $0$ est $0$.})
     \end{enumerate}
\end{remar}   

% syntaxe eqparbox : \eqparbox{étiquette}{materiel de la boite}
% crée des boites verticales de même largeur. Cette largeur est égale à la largeur maximale du matériel disposé dans les boîtes ayant la même étiquette.
% \enspace produit un espace d'un demi-cadratin (0.5 em), \quad produit un espace d'un cadratin (1 em). Le cadratin est proportionnel au corps de la police
% Dans un texte tapé en corps 11, un cadratin mesure 11 points.
% 1 cadratin (1 em) est la largeur de la lettre M dans la police courante.
% 1 hauteur d'x (1 ex) est la hauteur de la lettre x dans la police courante.
% 1 pt est égal à 0.3515 mm
% En  mode maths, le -1 doit être écrit entre accolades {-1} pour avoir un espacement correct entre le signe moins et le nombre 1.
% En mode texte, écrire les nombres entre dollars (ce sont des maths).

\begin{pro}
  $\forall (a,b,c) \in \zed^3, \quad
   \begin{regroup}
      a\mid b\\b\mid c
   \end{regroup}
  \implies a\mid c$
\end{pro}
% \implies est préférable à \Longrightarrow, il produit des espacements corrects

\begin{pro}
\begin{enumerate}
  \item $\forall (a,b,c) \in \zed^3, \quad a\mid b \implies a\mid bc$
  \item $\forall (a,b,c,\alpha,\beta) \in \zed^5, \quad \begin{regroup}
                                              a\mid b\\a\mid c
                                               \end{regroup}
                                     \implies a\mid(\alpha b+\beta c)$
  \item $\forall (a,b,\alpha,\beta) \in \zed^4, \quad \begin{regroup}
                                             a\mid b\\
                                             \alpha\mid \beta
                                          \end{regroup}
                                         \implies  a\alpha\mid b\beta$
  \item $\forall (a,b,n) \in \zed\times\zed\times\mathbb{N}^*, \quad a\mid b\implies                                                          a^n\mid b^n$
\end{enumerate}
\end{pro}

\begin{pro}
\begin{enumerate}
  \item $\forall (a,b) \in \zed^*\times\zed^*, \quad b\mid a\implies \abs{b} \leq \abs{a}$
  \item $\forall (a,b) \in \zed^*\times\zed^*, \quad
   \begin{regroup}
      a\mid b\\b\mid a
   \end{regroup}
    \implies  \abs{a}=\abs{b}$
\end{enumerate}
\end{pro} 

\begin{csq}
L'ensemble des diviseurs d'un entier relatif non nul est fini.
\end{csq}

\begin{pro}
\air\  est archimédien, c'est-à-dire,
$\forall x \in \air^+, \forall y\in \air^{*+},\exists n\in \ain,\ ny>x.$
\end{pro}

\begin{csq}
$\ain$, $\zed$, $\mathbb{D}$, $\mathbb{Q}$ sont donc aussi archimédiens.
\end{csq}

\begin{pro}
\begin{enumerate}
\item Toute partie non vide de \ain\  admet un plus petit élément.
\item Toute partie non vide et majorée (resp. minorée) de \zed\  admet un plus grand (resp. plus petit) élément.
\end{enumerate}
\end{pro}

\begin{theo}
Soit $(a,b)\in \zed\times\ain^*$.

Il \important{existe} un \important{unique} couple $(q,r)$ appartenant à $\zed^2$ tel que  $\begin{regroup}
      a=bq+r\\
      0\leq r<b
   \end{regroup}$.
On dit que $q$ est le \definir{quotient} et $r$ est le \definir{reste} de la division euclidienne de $a$ par $b$.
\end{theo}

\section{Congruences}

\begin{dfn}
Soit $n\in\ain^*$. Soit $(a,b)\in\zed^2$.

On dit que $a$ est \definir{congru à} $b$ \definir{modulo} $n$ si $n$ divise $b-a$. On note $\congru{a}{b}{n}$ ou $a\equiv b$ mod $n$. Ainsi,
\[\congru{a}{b}{n}\iff n\mid (b-a).\]
\end{dfn}

\begin{pro}
Soit $n \in \ain^*$. Soit $(a,b) \in \zed^2$.

$a$ est congru à $b$ modulo $n$ équivaut à $a$ et $b$ ont le même reste dans la division euclidienne par $n$.
\end{pro}

\begin{pro}
Pour tout $n$ de $\ain^*$, la relation de congruence $\equiv\modulo{n}$ est une relation d'équivalence sur l'ensemble \zed. On note $\ZnZ$ l'ensemble-quotient de $\zed$ par la relation d'équivalence ($\equiv$) de congruence modulo~$n$.
\end{pro}

\begin{pro}
Soit $n \in \ain^*$. Soit $a\in \zed$.

Il existe un unique entier naturel $r$ tel que $0\leq r<n$ et $\congru{r}{a}{n}$. Ce nombre est le reste de la division euclidienne de $a$ par $n$.
\end{pro}

\begin{dfn}
Pour tout $x$ de \zed, on note $\hat{x}$ (ou $\bar{x}$) la classe de $x$ dans $\ZnZ$ :
\[\hat{x}=\{y\in \zed; \congru{x}{y}{n}\}=\{x+kn;k\in\zed\}.\]
$\ZnZ$ est donc un ensemble fini à $n$ éléments et $\ZnZ=\{\hat{0},\hat{1},\dots,\widehat{n-1}\}$.
\end{dfn}

\begin{pro}
Soit $n \in \ain^*$. Pour tout $(a,b,c,d)$ de $\zed^4$, on a :
\[\left\{\begin{aligned}
      a &\equiv b\modulo{n}\\
      c &\equiv d\modulo{n}
    \end{aligned}
  \right.
\implies
\left\{\begin{aligned}
      a+c &\equiv b+d\modulo{n}\\
      ac &\equiv bd\modulo{n}
     \end{aligned}
  \right.\]
\end{pro}

\begin{cor}
\[\forall (a,b) \in \zed^2,\quad \forall k \in \ain^*, \quad \left(\congru{a}{b}{n}\implies \congru{a^k}{b^k}{n}\right).\]
\end{cor}

Comme la relation d'équivalence $\equiv\modulo{n}$ est compatible avec les lois de composition interne $+$ et $\times$ de \zed, on peut définir deux lois de composition interne dans $\ZnZ$, notées $\hatplus$ et $\hattimes$ par :
\[\forall (x,y) \in \zed^2, \quad \left\{\begin{aligned}
      \hat{x}\hatplus\hat{y} &= \widehat{x+y}\\
      \hat{x}\hattimes\hat{y} &= \widehat{x\times y}.
           \end{aligned}
  \right.\]
{\renewcommand*\arraystretch{1.3} % pour augmenter la hauteur de ligne dans le tableau afin de bien visualiser les caractères accentués.
\begin{tabular}{|c|c|c|c|c|}
\hline
% \psset{unit=0.9cm} permet d'affecter un facteur d'agrandissement-réduction ici de 90 % à la figure.
% \rput (x,y){materiel} permet de mettre le materiel (figures ou caractères)au point de coordonnées (x,y)
% on peut aussi écrire \psset{unit=0.4cm}\rput(-1ex,-0.7ex){\psarc{<-}(1,0){1}{90}{180} \rput(0,0.8){\footnotesize +}} où 1 ex correspond à la hauteur du x bas-de-casse, c'est une unité relative
%
\psset{unit=0.9cm}\rput(0.25,-0.15){\psarc{<-}(0,0){0.5}{90}{180}} \rput(0.1,0.1){$\hat{+}$}  & $\hat{0}$ & $\hat{1}$ & $\hat{2}$ & $\hat{3}$ \\
\hline $\hat{0}$ & $\hat{0}$ & $\hat{1}$ & $\hat{2}$ & $\hat{3}$ \\
\hline $\hat{1}$ & $\hat{1}$ & $\hat{2}$ & $\hat{3}$ & $\hat{0}$ \\
\hline $\hat{2}$ & $\hat{2}$ & $\hat{3}$ & $\hat{0}$ & $\hat{1}$ \\
\hline $\hat{3}$ & $\hat{3}$ & $\hat{0}$ & $\hat{1}$ & $\hat{2}$ \\
\hline
\end{tabular}}

\end{document}

Je n'ai pas encore fini de coder proprement le code de exemple_trm.pdf, ça suivra dans les prochaines jours.
pg
Modérateur
 
Messages: 1367
Inscription: Vendredi 15 Juin 2007, 00:31

Re: Environnement cases

Messagede Billy the Kid » Vendredi 15 Janvier 2010, 15:05

Merci mille fois pg (et les autres) pour tous tes conseils et remarques et pour le temps que tu m'a consacré.
L'info que tu me donnes me permet de comprendre comment fonctionne titleformat. Dans le souci de vouloir programmer avec les commandes LaTeX, j'ai essayé cela :
Code: Tout sélectionner
\titleformat{\chapter}
  {\renewcommand{\chaptercmd}{\chaptercmdstar}} % chaptercmd devient chaptercmdstar
  {\renewcommand{\chaptercmd}{\chaptercmdnostar}} % chaptercmd devient chaptercmdnostar
  {0pt}   % ici le 0 n'a pas d'incidence vue la définition de chaptercmd
  {\thispagestyle{premierepage}\chaptercmd} % afficher le style 1ere page et chaptercmd
  {}

mais cela ne marche pas.
J'ai essayé cela aussi :
Code: Tout sélectionner
\titleformat{\chapter}
  {\global\renewcommand{\chaptercmd}{\chaptercmdstar}} % chaptercmd devient chaptercmdstar
  {\global\renewcommand{\chaptercmd}{\chaptercmdnostar}} % chaptercmd devient chaptercmdnostar
  {0pt}   % ici le 0 n'a pas d'incidence vue la définition de chaptercmd
  {\thispagestyle{premierepage}\chaptercmd} % afficher le style 1ere page et chaptercmd
  {}

Mais, cela ne fonctionne pas non plus.
Suis-je en train de toucher les limites des commandes LaTeX ?
Une question que je me pose :
Est-ce que à chaque commande \chapter{Le Chapitre} la commande titleformat est évaluée ? (Je pense que oui, j'attends confirmation)
Peux tu m'expliquer avec, par exemple :
Code: Tout sélectionner
\chapter{Premier chapitre} blablabla \chapter*{Second Chapitre} blabla
pourquoi il est nécessaire de définir chaptercmd de façon globale et pourquoi tu es obligé d'utiliser \let à la place de \renewcommand.
L'idéal pour que je comprenne serait que tu me donnes les valeurs successives prises par chaptercmd avec mon premier essai (avec \renewcommand), avec mon second essai (avec \global\renewcommand) puis avec ton code (\global\let...)
Merci pour ta collaboration précieuse.
Freddy
Billy the Kid
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Novembre 2009, 19:04
Localisation: Le Loroux Bottereau (44)
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede pg » Samedi 16 Janvier 2010, 03:52

Billy the Kid a écrit:Suis-je en train de toucher les limites des commandes LaTeX ?

Oui, les \renewcommand ne sont pas globales et \global n'a aucun effet sur elles. Si tu veux absolument rester dans le monde LaTeX, tu peux t'orienter vers le package xargs qui étend les possibilités de \newcommand avec \newcommandx ; la documentation est en français et très bien faite. Pour rendre une renewcommand globale, on peut utiliser l'argument optionnel addprefix=\global (voir § 2.3 de la doc) :

Code: Tout sélectionner
\renewcommandx*\chaptercmd[0][addprefix=\global]{\chaptercmdstar}

Pour \titleformat, cela donnerait :

Code: Tout sélectionner
\titleformat{\chapter}
  {\renewcommandx*\chaptercmd[0][addprefix=\global]{\chaptercmdstar}}
  {\renewcommandx*\chaptercmd[0][addprefix=\global]{\chaptercmdnostar}}
  {0pt}
  {\thispagestyle{premierepage}\chaptercmd}

Est-ce que à chaque commande \chapter{Le Chapitre} la commande titleformat est évaluée ? (Je pense que oui, j'attends confirmation)

Non, \titleformat{\chapter}{...} n'est évaluée qu'une fois, mais elle définit des choses qui, elles, seront évaluées à chaque fois. L'effet de \titleformat{\chapter}[<forme>]{<format>}{<label>}{<sep>}{<avant>} est de définir une commande \ttlf@chapter qui appelle \ttlh@<shape> (par exemple, dans notre cas, \ttlh@hang) avec comme arguments {<format>}{<label>}{<sep>}...{<avant>}... .

La commande \chapter appellera \ttlf@chapter qui appellera elle-même \ttlh@<shape> avec les bons arguments pour donner ce qu'il faut. Par exemple si tu remplace ton \chapter{Arithmétique dans \zed} par
Code: Tout sélectionner
\ttlh@hang
  {\renewcommandx*\chaptercmd[0][addprefix=\global]{\chaptercmdstar}}
  {\renewcommandx*\chaptercmd[0][addprefix=\global]\chaptercmdnostar}
  {0pt}
  {\thispagestyle{premierepage}\chaptercmd}
  {}
  {0pt}
  {0pt}
  {Arithmétique dans \zed}

tu retrouvera ta présentation (avec des choses qui ne vont pas car on a court-circuité la plupart des mécanismes de titlesec pour qu'il fasse bien son travail).

La raison pour laquelle on est obligé de mettre des redéfinitions globales de \chaptercmd est que la commande \ttlh@hang a mis son deuxième argument dans une boite, donc dans groupe (donc toute redéfinition n'a aucun effet en dehors de cette boîte). D'ailleurs, je me rends compte en regardant le code de titlesec que la première redéfinition n'as pas besoin d'être globale :
Code: Tout sélectionner
\titleformat{\chapter}
  {\renewcommand*\chaptercmd{\chaptercmdstar}}
  {\renewcommandx*\chaptercmd[0][addprefix=\global]{\chaptercmdnostar}}
  {0pt}
  {\thispagestyle{premierepage}\chaptercmd}

marche tout aussi bien.

les valeurs successives prises par chaptercmd avec mon premier essai (avec \renewcommand), avec mon second essai (avec \global\renewcommand) puis avec ton code (\global\let...)


\global\renewcommand et \renewcommand, c'est la même chose, ça ne change jamais la valeur de \chaptercmd en \chaptercmdnostar ; \chaptercmd sera donc toujours \chaptercmdstar, quoi que ce soit qui se passe.

Avec le \global\let (ou le \renewcommandx...[addprefix=\global]), l'appel de \chapter{Premier chapitre} se fait en deux étapes :
  • étape 1 : on exécute le premier argument de \ttlh@<shape> (donc de \titleformat) donc \chaptercmd devient égale à \chaptercmdstar
  • étape 2 : puisque le chapitre est non étoilé, on exécute le second argument de \ttlh@<shape>, donc \chaptercmd devient égale à \chaptercmdnostar.
Lors de l'appel de \chapter*{Second chapitre}, la première étape a toujours lieu, mais pas la seconde car le chapitre est étoilé ; par suite, \chaptercmd est égal à \chaptercmdstar.

Pour résumer :
  • Si le chapitre est étoilé, seule la première étape a lieu donc \chaptercmd vaut \chaptercmdstar
  • si le chapitre n'est pas étoilé, les deux étapes ont lieu donc \chaptercmd vaut \chaptercmdnostar
pg
Modérateur
 
Messages: 1367
Inscription: Vendredi 15 Juin 2007, 00:31

Re: Environnement cases

Messagede Billy the Kid » Samedi 16 Janvier 2010, 17:55

OK, avec toutes ces informations précises et détaillées, j'ai enfin compris l'ensemble du code que tu m'as proposé. Tu m'as fait découvrir des extensions que je ne connaissais pas (dont titleformat) et tu m'as fait touché du doigt les limites de LaTeX. Au passage, je me suis plongé dans la doc de titleformat dans le LaTeX Companion et j'ai vu en haut de la page 41 la subtilité que tu as exploitée à propos de la forme étoilée ou non.
Peux-tu me préciser ce qu'ils entendent comme matériel vertical et matériel horizontal ?
Bon, ceci étant, je crois que je vais continuer mon apprentissage en LaTeX en ayant cependant conscience que TeX permet de résoudre des problèmes comme ceux précédemment rencontrés. J'ai déjà pas mal à faire uniquement avec LaTeX je crois ...
Mais ce monde est si vaste, si dense.... Heureusement que les plus grands donnent la main aux petits !...
Comment as-tu fait pour construire tes compétences ? Me conseilles-tu d'annoter mon code au départ comme je l'ai déjà fait ?
Est-il préférable de faire des fiches sur les commandes utilisées ? Quel aide-mémoire me conseilles-tu ?
Merci beaucoup et à bientôt pour ton code de exemple_trm.pdf. :thumbsup: :bye1:
Freddy
Billy the Kid
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Novembre 2009, 19:04
Localisation: Le Loroux Bottereau (44)
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede pg » Samedi 23 Janvier 2010, 23:48

Billy the Kid a écrit:Peux-tu me préciser ce qu'ils entendent comme matériel vertical et matériel horizontal ?

Je n'ai pas le LaTeX Companion sous les yeux, donc je ne peux pas dire avec précision ce qu'ils voulaient dire, mais TeX a un mode vertical (pour construire le contenu des pages, il empile des boîtes verticales) et un mode horizontal (pour construire le contenu des lignes, il empile des boîtes horizontales) [c'est très simplifié, mais l'idée est là]. Certaines commandes ne fonctionnent que dans un mode et pas dans l'autre. Il faut donc faire attention où on les place.
Billy the Kid a écrit:Me conseilles-tu d'annoter mon code au départ comme je l'ai déjà fait ?

Au début, oui, c'est une bonne idée d'annoter. Le but étant à terme de ne plus avoir besoin de ces annotations parce que les concepts et commandes sont devenus naturels.
Billy the Kid a écrit:Est-il préférable de faire des fiches sur les commandes utilisées ? Quel aide-mémoire me conseilles-tu ?

Je ne pense pas qu'il existe actuellement d'aide-mémoire complet pour les commandes latex ou tex. Un truc qui s'en approche est le Hypertext Help with LaTeX, mais il donne très peu de détails et n'offre aucun commentaire sur la pertinence des commandes. Faire des fiches (ou plutôt un fichier tex regroupant ses connaissances sur les commandes) reste la meilleure solution.
Billy the Kid a écrit:à bientôt pour ton code de exemple_trm.pdf

Voici le code en question. J'ai séparé la chose en deux : un fichier .tex et un fichier .cls où il y a toutes les commandes de redéfinition. Pour les théorèmes, j'ai utilisé mon package customtheorem (inclus dans le zip ci-dessous).

Il y aura un effort d'adaptation à faire si tu veux utiliser certaines des commandes pour tes documents, d'autant plus que j'ai utilisé tikz avec des fonctionnalité propres à pdflatex (pour la page de garde et les pages de chapitres), donc ça ne fonctionnera pas avec pstricks, mais il est possible de faire autrement pour obtenir le même résultat au besoin.

Quelques autres remarques :

(voir ici pour la dernière version de la classe)


Quelques mots sur les fonctionnalités :
  • la page de garde peut prendre une illustration (image ou dessin fait avec tikz ou tout autre moyen) ; c'est la commande \coverillustration qui s'en occupe ;
  • chaque chapitre (non étoilé) peut prendre une image et un petit texte (une biographie, un commentaire sur le chapitre) ; ce sont les commandes \chapterimage et \chaptertext qui s'en occupent ;
  • il y a deux modes dans le document : le mode normal (pour le cours) et le mode exercice (pour les exercices) ; cela permet d'utiliser \section et \subsection pour la présentation des exercices, ce qui est plus agréable (et pose probablement moins de problèmes de compatibilité avec d'autres documents) ; on passe en mode exercice avec \modeexercice et mode normal avec \modenormal ;
  • les exercices sont sur deux colonnes grâce à l'environnement {listeexercices} ;
  • on peut personnaliser les couleurs en redéfinissant les commandes de la fin du fichier .cls, comme \coverbackcolor, \covercolor, etc. (à modifier avec modération).
Il y aurait plein de choses à améliorer ou à rendre personnalisable, mais je pense que c'est à peu près utilisable tel quel.
Fichiers joints
exemple_trm.zip
(23.15 Kio) Téléchargé 44 fois
pg
Modérateur
 
Messages: 1367
Inscription: Vendredi 15 Juin 2007, 00:31

Re: Environnement cases

Messagede GMaths » Dimanche 24 Janvier 2010, 15:05

pg a écrit:
exemple_trm.zip

La première page impressionne !

Je vais étudier la classe de près, prochainement, quand j'aurai un peu de temps... : je suis sûr qu'il y aura des bons trucs à découvrir.
Merci pg !
GMaths
Téra-utilisateur
 
Messages: 1010
Inscription: Lundi 01 Octobre 2007, 10:20
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede projetmbc » Dimanche 24 Janvier 2010, 16:06

Sur mon Mac, cela ne fonctionne pas avec TeXshop.
GMaths a écrit:
pg a écrit:La première page impressionne !

A quoi cela ressemble-t-il ?
projetmbc
Téra-utilisateur
 
Messages: 1030
Inscription: Samedi 29 Décembre 2007, 01:58
Statut actuel: Actif et salarié | Enseignant

Re: Environnement cases

Messagede GMaths » Dimanche 24 Janvier 2010, 16:12

projetmbc a écrit:Sur mon Mac, cela ne fonctionne pas avec TeXshop.
GMaths a écrit:
pg a écrit:La première page impressionne !

A quoi cela ressemble-t-il ?

A cela :

2010-01-24_151019.png
2010-01-24_151019.png (10.7 Kio) Vu 271 fois


2010-01-24_151053.png
GMaths
Téra-utilisateur
 
Messages: 1010
Inscription: Lundi 01 Octobre 2007, 10:20
Statut actuel: Actif et salarié | Enseignant

PrécédenteSuivante

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: MSNbot Media et 3 invités