Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/05/2010, à 16:15

Major Grubert

Distorsion dvi/pdf avc Kile (du à la mise à jour) ?

Salut,

J'ai une "légère" distorsion entre le rendu dvi (qui est normal) et le rendu pdf qui ne l'est pas. C'est la première fois que je rencontre ça.

Regardez :

Le dvi :
dvi.jpg

Le pdf :
pdf.jpg


J'utilise Ubuntu Lucid Lynx et Kile, donc. Peut-être est-ce du à la mise à jour ?

Le code LaTeX correspondant est des plus simples, mais si vous voulez je peux le mettre en plus.

Merci d'avance.


Pour en savoir plus sur Gnome Shell.
. HP Pavilion  : Windows / Ubuntu 19.10

Hors ligne

#2 Le 03/05/2010, à 22:15

miniSeb

Re : Distorsion dvi/pdf avc Kile (du à la mise à jour) ?

Sans le code, je ne peux pas aider wink

Pour ce qui est de la màj vers LL, à voir avec d'autres, je ne l'ai pas encore faite, donc pas de problème de ce genre pour moi.

Hors ligne

#3 Le 04/05/2010, à 10:44

Major Grubert

Re : Distorsion dvi/pdf avc Kile (du à la mise à jour) ?

Aux endroits qui posent problème, le code est classique :

\begin{exo}[10 points]\label{ds7exo3cor}
\emph{Pour \textbf{tous} les \'el\`eves.}\\
Soit $f$ la fonction définie sur $\R$ par $f(x)=x^2-2x-3$. On appelle $\mathcal{C}$ sa courbe représentative.
\begin{enumerate}
	\item
			\begin{enumerate}
				\item Déterminer les coordonnées de $A$, point d'intersection de $\mathcal{C}$ avec l'axe des ordonnées.
				\begin{corrige}
				 On cherche les coordonn\'ees du point de $\mathcal{C}$ d'abscisse 0.\\ Or tout point de la courbe a pour coordonn\'ees $(x\,;\,f(x))$ donc $A\,(0\,;\,f(0))=(0\,;\,-3)$.
				\end{corrige}

				\item Déterminer le coefficient directeur de la tangente à $\mathcal{C}$ en $A$.
				\begin{corrige}
				 \'Etudions le comportement de $\frac{f(0+h)-f(0)}{0+h-0}$ quand $h$ tend vers 0.
				\begin{align*}
				 \frac{f(0+h)-f(0)}{0+h-0}&=\frac{f(h)-f(0)}{h}\\
							&=\frac{h^2-2h-3-(-3)}{h}\\
							&=\frac{h^2-2h}{h}\\
							&=\frac{h(h-2)}{h}\\
							&=h-2
				\end{align*}
				Donc, quand $h$ tend vers 0, $\frac{f(0+h)-f(0)}{0+h-0}=h-2$ tend vers $-2$ donc $f'(0)=-2$.
				\end{corrige}

			\end{enumerate}
	\item D\'eterminer les coordonn\'ees des points d'intersection de $\mathcal{C}$ avec l'axe des abscisses.
	\begin{corrige}
	 On cherche les coordonn\'ees des points de $\mathcal{C}$ d'ordonn\'ee 0.\\ Or tout point de la courbe a pour coordonn\'ees $(x\,;\,f(x))$, donc il faut r\'esoudre $f(x)=0$. \\
	$f$ est un trin\^ome avec $\Delta=(-2)^2-4(1)(-3)=4+12=16>0$ donc il y a deux solutions \`a l'\'equation $f(x)=0$ : $x_1=\frac{-(-2)-4}{2}=-1$ et $x_2=\frac{-(-2)+4}{2}=3$.\\
	On a donc deux points d'intersection avec l'axe des abscisses de coordonn\'ees $(-1\,;\,0)$ et $(3\,;\,0)$.
	\end{corrige}

	\item Déterminer $f(1)$, $f'(1)$ et l'équation de la tangente à $\mathcal{C}$ au point d'abscisse 1.
	\begin{corrige}
	 \begin{itemize}
	  \item $f(1)=1-2-3=-4$
	  \item \'Etudions le comportement de $\frac{f(1+h)-f(1)}{1+h-1}$ quand $h$ tend vers 0.\\
				\begin{align*}
				 \frac{f(1+h)-f(1)}{1+h-1}&=\frac{(1+h)^2-2(1+h)-3-(-4)}{h}\\
							&=\frac{1+2h+h^2-2-2h-3+4}{h}\\
							&=\frac{h^2}{h}\\
							&=\frac{h\times h}{h}\\
							&=h
				\end{align*}
				Or, quand $h$ tend vers 0, $\frac{f(1+h)-f(1)}{1+h-1}=h$ tend vers $0$ donc $f'(1)=0$.
	 \end{itemize}

	\end{corrige}

	\item
				\begin{enumerate}
					\item Placer tous les points qu'on peut déduire des questions précédentes dans le repère de la figure \ref{ds7exo3figcor} \vpageref{ds7exo3figcor}.
					\begin{corrige}
					 Quatre points \`a placer : $A\,(0\,;\,-3)$, $(-1\,;\,0)$, $(3\,;\,0)$ et $(1\,;\,-4)$.
					\end{corrige}

					\item Tracer toutes les tangentes qu'on peut déduire des questions précédentes dans le même repère.
					\begin{corrige}
					 Deux tangentes \`a tracer : celle en 0 et celle en 1.
					\end{corrige}

					\item Tracer $\mathcal{C}$ dans le même repère.
					\begin{corrige}
					 Voir la figure \ref{ds7exo3figcor} \vpageref{ds7exo3figcor}.
					\end{corrige}

				\end{enumerate}
\end{enumerate}
\begin{figure}[!htbp]
\centering
\caption{Figure de l'exercice \ref{ds7exo3cor}}\label{ds7exo3figcor}
\def\xmin{-3.6} \def\xmax{5.6} \def\ymin{-5.1} \def\ymax{6.1}
\psset{xunit=1.5cm,yunit=1cm}
\begin{pspicture*}(\xmin,\ymin)(\xmax,\ymax)
\psset{xunit=0.75cm,yunit=0.5cm}
\psgrid[griddots=7,gridlabels=0pt,gridwidth=.3pt, gridcolor=black, subgridwidth=.3pt, subgridcolor=black, subgriddiv=1](0,0)(-7,-10)(11,12)
\psset{xunit=1.5cm,yunit=1cm}
\psaxes[labels=all,labelsep=1pt, Dx=1,Dy=1]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax)
\uput[dl](0,0){$O$}
%\pcline[linewidth=1pt]{->}(0,0)(1,0) \uput[d](0.5,0){\small $\vec \imath$}
%\pcline[linewidth=1pt]{->}(0,0)(0,1) \uput[l](0,0.5){\small $\vec \jmath$}
\uput[ul](\xmax,0){$x$}
\uput[dr](0,\ymax){$y$}
\psplot[plotpoints=200,algebraic=true]{\xmin}{\xmax}{x^2-2*x-3}
\psdots(0,-3)(-1,0)(3,0)(1,-4)
\psline[linestyle=dashed]{<->}(-1,-1)(1,-5)
\psline[linestyle=dashed]{<->}(0,-4)(2,-4)
\end{pspicture*}
\end{figure}
\end{exo}

Bizarrement quand j'extrais juste ce code pour le mettre dans un document unique, le problème ne se pose pas. Peut-être le problème vient-il de mes packages et autre, mais le pb d'alignement ne se pose qu'à cet endroit du document (qui est un document de 90 pages)


Pour en savoir plus sur Gnome Shell.
. HP Pavilion  : Windows / Ubuntu 19.10

Hors ligne

#4 Le 04/05/2010, à 10:56

Adhémar

Re : Distorsion dvi/pdf avc Kile (du à la mise à jour) ?

Major Grubert a écrit :

J'utilise Ubuntu Lucid Lynx et Kile, donc. Peut-être est-ce du à la mise à jour ?

Sans doute, parce qu'on est passé sous Texlive 2009. Ton code a l'air effectivement assez simple. j'ai essayé de passer un extrait problématique de ton code:

\documentclass[a4paper,10pt]{article}
\begin{document}                 
On cherche les coordonn\'ees du point de $\mathcal{C}$ d'abscisse 0.\\ Or tout point de la courbe a pour coordonn\'ees $(x\,;\,f(x))$ donc $A\,(0\,;\,f(0))=(0\,;\,-3)$.
\end{document}

et je n'ai rien d'anormal.

D'où, plusieurs questions:
- comment tu produit le pdf ? Avec pdflatex ?
- Quelle est la définition de l'environnement 'corrigé' ? De façon plus générale, tu pourrais donner le préambule de ton document tex ?

Hors ligne

#5 Le 04/05/2010, à 11:31

Major Grubert

Re : Distorsion dvi/pdf avc Kile (du à la mise à jour) ?

Le problème c'est qu'il est volumineux :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%% SOMMAIRE %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 1 - Paquets %%%%%%%%%%%%%%
%%%%%%%%%%%%%% 2 - Mise en page %%%%%%%%%
%%%%%%%%%%%%%% 3 - Fonctions %%%%%%%%%%%%
%%%%%%%%%%%%%% 4 - Raccourcis %%%%%%%%%%%
%%%%%%%%%%%%%% 5 - Environnements %%%%%%%
%%%%%%%%%%%%%% 6 - Variables %%%%%%%%%%%%
%%%%%%%%%%%%%% 7 - Fonctions complexes %%
%%%%%%%%%%%%%% 7.1 - Tableaux de variations
%%%%%%%%%%%%%% 7.2 - HermiteDDL %%%%%%%%%
%%%%%%%%%%%%%% 7.3 - HachuresDDL %%%%%%%%
%%%%%%%%%%%%%% 7.4 - SuitesRecV4 %%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 1 - Paquets %%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%% 1.1 Paquets actifs %%%%%%%
\usepackage{fourier}  				% police
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[french]{varioref}	% présente page, page suivante, etc.
\usepackage[french]{babel}
\usepackage{fancyhdr}					% entêtes et pieds de page
\usepackage{amsmath,amssymb,amsfonts,amsthm}
\usepackage{pstricks,pst-plot,pst-text,pst-tree,pst-eps,pst-all,pst-tree,pst-fill,pst-node,pstricks-add,pst-math,pst-blur}
\usepackage{pst-3dplot}				% schéma 3D
\usepackage{color} 						% couleurs
\usepackage{fancybox}					% boite
\usepackage{multicol}					% plusieurs colonnes
\usepackage{multirow}					% multicol dans tableaux
\usepackage{tabularx}					% trucs ds tableaux
\usepackage{colortbl}					% couleurs dans tableaux
\usepackage{slashbox}					% case séparé en deux ds les tabklleaux
\usepackage{graphicx}
\usepackage{ifthen}
\usepackage{placeins} 				% pour \FloatBarrier
\usepackage{lscape} 					% pour passer localement en format paysage : \begin{landscape} blablabla \end{landscape}
\usepackage{textcomp} 				% pour le symbole 'pourmille'
\usepackage{minitoc}					% mini sommaire en début de chapitre
\usepackage{lastpage}
\usepackage{fp}								% pour les calculs notamment dans les multidos
\usepackage{bbding}						% pour des jolis symboles
\usepackage{enumerate}
\usepackage{wrapfig}
%\setcounter{minitocdepth}{1}
 \def\psDEBUG[#1]#2{}

\usepackage{hyperref}
%%%%%%%%%%Paramètres hyperref%%%%%%%%%%%%%%%%%%
	\hypersetup{
	backref=true, %permet d'ajouter des liens dans...
	pagebackref=true,%...les bibliographies
	hyperindex=true, %ajoute des liens dans les index.
	colorlinks=true, %colorise les liens
	breaklinks=true, %permet le retour à la ligne dans les liens trop longs
	urlcolor= blue, %couleur des hyperliens
	linkcolor= blue, %couleur des liens internes
	bookmarks=true, %créé des signets pour Acrobat
	bookmarksopen=true,bookmarksopenlevel=1,%bookmarksopen=true, %si les signets Acrobat sont créés,
	%les afficher complètement.
	pdftitle={Math\'emathiques au Lyc\'ee}, %informations apparaissant dans
	pdfauthor={David ROBERT}, %dans les informations du document
	pdfsubject={2008-2009} %sous Acrobat.
	}

\usepackage{fullpage}
% paramétrage de la page pour fullpage
	\addtolength{\topmargin}{-30pt}
	\addtolength{\evensidemargin}{-35pt}%even+odd+textwitdh = 0
	\addtolength{\oddsidemargin}{-2pt}
	\addtolength{\textwidth}{37pt}
	\addtolength{\textheight}{50pt}
	\addtolength{\footskip}{6pt}
	\renewcommand{\headsep}{18pt}


%%%%%%%% 1.2 Paquets inactifs

%\usepackage{wrapfig} 				% fondre des images dans le texte
%\usepackage{numprint} 				%\numprint{3.25} affiche 3,35
%\usepackage{geometry}
% Paramétrage geometry
%\geometry{hmargin=2cm, vmargin=2cm}
%\usepackage{vmargin}
% Paramétrage vmargin
%\setmargrb{hleftmargini}{htopmargini}{hrightmargini}{hbottommargini}%
%\setmargrb{2cm}{2cm}{2cm}{2cm}%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 2 - Mise en page %%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% 2.1 Pour avoir une page belle pour les titres de chapitres
	\makeatletter
	\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else%
	    \hbox{}%
	    \thispagestyle{empty}%              % Empty header styles
	    \newpage%
	    \if@twocolumn\hbox{}\newpage\fi\fi\fi}
	\makeatother

% 2.2 Puces %%%%%%%%%%%

\renewcommand{\Frlabelitemi}{\small$\bullet$} %puces 1 = boulet
\renewcommand{\Frlabelitemii}{$\cdot$} %puces 2 = point

% 2.3 Interligne et marges %%%%%%%%%%%%%

%\renewcommand{\baselinestretch}{1}%%%% l'interligne :la valeur par défaut est 1


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 3 - Fonctions %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Pour démarrer sur une nouvelle page de droite
\newcommand{\clearemptydoublepage}{%
	\newpage{\pagestyle{empty}\cleardoublepage}}

\newcommand {\sautcol} {\columnbreak}%%% Saut de colonne
\newcommand {\sautpage} {\newpage} %%% Saut de page
\newcommand {\filet} {\hrule\medskip}%%% Filet, sous un titre par ehttp://perpendiculaires.free.fr/xemple avec un saut de ligne

%%%%%%%% Faire de l'air autour d'une fraction (surtout ds un tableau)
\newcommand{\delair}[1]{\ensuremath\displaystyle\psframebox[framesep=0.15em,linestyle=none]{ \displaystyle#1}}

% Vecteur
\newcommand{\V}[1]{\ensuremath{\overrightarrow{#1}}}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 4 - Raccourcis %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\ssi}{\ensuremath{\Leftrightarrow}}					% Double flèche ssi
\renewcommand{\qedsymbol}{$\diamondsuit$} %% symbole de fin de démonstration
\newcommand{\euro}{\eurologo}  % symbole €

\DeclareTextSymbol{\degre}{T1}{6} % degré
\DeclareTextSymbol{\degre}{OT1}{23}

%%%%%%%% Ensembles de nombres %%%%%

\newcommand{\R}{\ensuremath{\mathbb{R}}}    % Réels
\newcommand{\C}{\ensuremath{\mathbb{C}}}		% Complexes
\newcommand{\Z}{\ensuremath{\mathbb{Z}}}		% Relatifs
\newcommand{\N}{\ensuremath{\mathbb{N}}}		% Naturels
\newcommand{\Q}{\ensuremath{\mathbb{Q}}}		% Rationnels
\newcommand{\D}{\ensuremath{\mathbb{D}}}		% Décimaux

\newcommand{\dx}{\ensuremath{\text{d}x}}		% dx
\newcommand{\dt}{\ensuremath{\text{d}t}}		% dt

\newcommand{\E}{\ensuremath{\text{e}}}		% e

%%%%%%%%% Repères %%%%%%%%%%%%%%%%%%

\newcommand{\Oij}{\ensuremath{\left(\text{O}\,;\,\vec{\imath},\vec{\jmath}\right)}~}			% repère oij
\newcommand{\Oijk}{\ensuremath{\left(\text{O}\,;\,\vec{\imath},\vec{\jmath},\vec{k}\right)}~}			% repère oijk

\newcommand{\co}{\mathcal{C}} % C calligraphié


%%%% Pour les tableaux de signes

%%Zero barré
\newlength\longueurdumot
\settowidth{\longueurdumot}{0}
\newcommand{\zero}{\hspace{0.5\longueurdumot}\vline\hspace*{-0.65\longueurdumot}\psframebox*[framesep=0.1ex]{0}} %0 barré dans les tableaux de signes

\newcommand{\doubleB}{\vline\,\vline}% double barre

\newcommand{\vide}{\ensuremath{\varnothing}}						% ensemble vide

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 5 - Environnements %%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Encadrer
\newsavebox{\fmbox}
\newenvironment{encadrer}[1][0.985\columnwidth]
     {\noindent\begin{lrbox}{\fmbox}\begin{minipage}{#1}}
     {\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}\par}

% Pour les cadres de prop, def, theo etc %%%%%%
\definecolor{grisDR}{gray}{0.86}%% ton gris à toi
\newcommand\encadreDR[1]{%
\psframebox[fillstyle=solid,fillcolor=grisDR,linestyle=none,shadow=true,shadowcolor=gray,shadowsize=0.15cm,blur=true]{#1}}
%

% ENVIRONNEMENT EXERCICE DS %%%%%%%%%%
%\definecolor{grisfonce}{gray}{0.40}%% ton gris à toi

%\newenvironment{exoDS}[1][]{%
%\addtocounter{numexo}{1}
%\vspace{0.2em}
%\par\noindent\textcolor{grisfonce}{\textbf{\textsc{Exercice \thenumexo}}}\hfill\textcolor{grisfonce}{\emph{#1}}
%\vspace{0.2em}
%\par\noindent}
%{\vspace{0.5em}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%% ENVIRONNEMENT corrigé %%%%%%%%%%

\newgray{grisclair}{0.88}

\newcommand\encadreclair[1]{%
\psframebox[fillstyle=solid,fillcolor=grisclair,linestyle=none]{#1}} %blur=true,shadow=true,shadowcolor=gray,shadowsize=0.15cm

\newenvironment{corrige}[1][]{%
\begin{Sbox}\begin{minipage}{0.98\linewidth}\small }
  {\normalsize \end{minipage}\end{Sbox} \begin{center}\encadreclair{\TheSbox}\end{center}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ù


%%%%% bareme

\newcommand\compare[5]{\ifthenelse{\lengthtest{#1pt #2 #3pt}}{#4}{#5}}
%\newcommand {\bareme}[1]{%
%\hfill\compare{#1}{<}{2}{\footnotesize(\numprint{#1} point)}{\footnotesize(\numprint{#1} points)}\normalsize}

%%%%%%

\theoremstyle{plain}% default
\newtheorem{thm}{Théorème}[chapter]
\newtheorem*{thm*}{Théorème}
\newtheorem{lem}[thm]{Lemme}
\newtheorem{prp}[thm]{Propriété}
\newtheorem*{prp*}{Propriété}
\newtheorem{rgl}[thm]{Règle}

\theoremstyle{definition}
\newtheorem{defn}{Définition}[chapter]
\newtheorem{defns}[defn]{Définitions}
\newtheorem*{defn*}{Définition}
\newtheorem{exemple}{Exemple}[chapter]
\newtheorem{exemples}[exemple]{Exemples}
\newtheorem*{exemple*}{Exemple}
\newtheorem*{exemples*}{Exemples}

\newgray{darkgray}{0.15}

\newtheoremstyle{note}% hnamei
{0.5em}% hSpace abovei
{0.5em}% hSpace belowi
{}% hBody font
{}% hIndent amounti1
{\scshape\bfseries\darkgray}% hTheorem head font
{.}% hPunctuation after theorem head
{\newline}% hSpace after theorem head
{}% hTheorem head spec (can be left empty, meaning `normal')i

\theoremstyle{note}
\newtheorem{exo}{Exercice}[chapter]
\newtheorem*{exo*}{Exercice}
\newtheorem{exos}[exo]{Exercices}
\newtheorem{exoDS}{Exercice}[chapter]
\newtheorem{act}{Activité}[chapter]
\newtheorem{prob}{Problème}[chapter]
\newtheorem*{prob*}{Problèmes}
\newtheorem{exocommun}{Exercice}

\theoremstyle{remark}
\newtheorem*{rmq}{Remarque}
\newtheorem*{rmqs}{Remarques}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%% ENVIRONNEMENT PROPRIETE %%%%%%%%%%

\newenvironment{regle}[1][]
{%après le begin
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{rgl}[#1]
}
{%après le end
\end{rgl}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}
}

\newenvironment{prop}[1][]
{%après le begin
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{prp}[#1]
}
{%après le end
\end{prp}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}
}

  \newenvironment{prop*}[1][]{%
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{prp*}[#1]}
  {\end{prp*}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}}

%%%%%%%%%%%%%%%%%% Definition %%%%%%%%%%%

 \newenvironment{definition*}[1][]{%
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{defn*}[#1]}
  {\end{defn*}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}}

\newenvironment{definition}[1][]{%
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{defn}[#1]}
  {\end{defn}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}}

  \newenvironment{definitions}[1][]{%
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{defns}[#1]}
  {\end{defns}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}}

%%%%%%%%%%%%%%%%%%%% theorème %%%%%%%%%%%%%

\newenvironment{theo}[1][]{%
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{thm}[#1]}
  {\end{thm}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}}

  \newenvironment{theo*}[1][]{%
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{thm*}[#1]}
  {\end{thm*}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}}

%%%%%%%%%%%%%%%%%%%% lemme %%%%%%%%%%%%%

\newenvironment{lemme}[1][]{%
\begin{Sbox}\begin{minipage}{0.98\linewidth}\begin{lem}[#1]}
  {\end{lem}\end{minipage}\end{Sbox} \begin{center}\encadreDR{\TheSbox}\end{center}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 6 - Variables %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcounter{ds} % Ce compteur et le suivant servent à gérer la numérotation des devoirs
\newcounter{chaptertemp} % surveillés donc ne pas y toucher

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 7 - Fonctions complexes %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 7.1 - Tableaux de variations
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%-- pour griser des cases
\newrgbcolor{gristabvar}{0.7669 0.7669 0.7669}


%-- Dimensions sur lesquelles on peut agir facilement
\newdimen\tabdim%-- taille minimale (horizontale) d'une case
\newdimen\tabblanc%-- blanc ajouté verticalement à chaque case (6 fois en tout !)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
%          MACROS POUR FAIRE UN TABLEAU DE VARIATIONS
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\catcode`\@=11

%-- Les diverses dimensions dont j'ai besoin
\newdimen\tv@mydimen
\newdimen\tv@mydimendeux
\newdimen\tv@dimYHaut%-- taille verticale de la case en haut
\newdimen\tv@dimYMilieu%-- taille verticale de la case du milieu
\newdimen\tv@dimYBas%-- taille verticale de la case du bas
\newdimen\tv@dimX%-- tampon pour les calculs basés sur la largeur de la case courante
\newdimen\tv@Xdim%-- largeur de la case courante pour les calculs
\newdimen\tv@YTotal%-- hauteur totale
\newcount\tv@countLigne%-- Pour savoir le numéro de la ligne actuelle
\newdimen\tv@DX%-- pour savoir où est le trait de milieu de case courant

%-- On fixe les dimensions par défaut
\tabdim=0.8cm
\tabblanc=2pt

%-- Pour savoir si on est en train de calculer les tailles ou de tracer le tableau de variations
\newif\iftv@calcul


%--- Mettre les valeurs par défaut
\def\psdefaut{\psset{xunit=1cm,yunit=1cm,runit=1cm,linewidth=0.4pt,linestyle=solid,linecolor=black}}

%-- quelques abbréviations commodes...
\let\dsp=\displaystyle
\let\spt=\scriptstyle


%------------- MACROS POUR MANIPULER LES DIMENSIONS
%-- Met dans \tv@mydimen la taille Y (depth+height) de #1
\def\initY#1{%
\setbox100=\hbox{#1}%
\global\tv@mydimen=\ht100\global\advance\tv@mydimen by\dp100}


%-- Met dans \tv@mydimen le réel Sup(la taille X (width) de #1 , \tabdim)
\def\initX#1{\setbox100=\hbox{#1}%
\ifdim\wd100>\tabdim
  \global\tv@mydimen=\wd100
\else
  \global\tv@mydimen=\tabdim
\fi}

%-- Met dans \tv@mydimen la taille X (width) de #1
\def\initx#1{\setbox100=\hbox{#1}\global\tv@mydimen=\wd100}

%-- Calcule la hauteur totale = YHaut+YMilieu+YBas
\def\calculeYTotal{%
 \global\tv@YTotal=\tv@dimYHaut\global\advance\tv@YTotal by\tv@dimYMilieu\global\advance\tv@YTotal by\tv@dimYBas}

%-- Fixer les trois dimensions, dans l'ordre : Haut Milieu Bas
\def\setY#1#2#3{\global\tv@dimYHaut=#1\global\tv@dimYMilieu=#2\global\tv@dimYBas=#3\relax}

%-- Mettre le max de #1,#2 dans #1
\def\max#1#2{\ifdim#2>#1\global#1=#2\fi}


%-- macro pour gérer le calcul de \tv@Xdim : #1 est un contenu à afficher
\def\GererX#1{%
\initX{#1}\tv@mydimen=1.1\tv@mydimen%
\max{\tv@Xdim}{\tv@mydimen}}

%-- macro pour gérer le calcul de \tv@Xdim : #1 est une dimension
\def\GererXDimension#1{%
\tv@mydimen=#1%
\tv@mydimen=1.1\tv@mydimen%
\max{\tv@Xdim}{\tv@mydimen}%
\max{\tv@Xdim}{\tabdim}%-- taille minimale d'une case = \tabdim
}


%-- cas simple : dx vaux la moitié de la largeur de #1. On retrouve après ça le bon dx dans \tv@DX
\def\GererDXSimple#1{%
\initX{#1}\tv@mydimen=1.1\tv@mydimen
\tv@mydimen=0.5\tv@mydimen
\max{\tv@DX}{\tv@mydimen}%
}


%-- cas complexe : #1 est une proposition de DX. On retrouve après ça le bon dx dans \tv@DX
\def\GererDXDimension#1{%
\tv@mydimen=#1%
\max{\tv@DX}{\tv@mydimen}%
\max{\tv@DX}{0.5\tabdim}%-- au minimum = 1/2 tabdim
}


%-------------- MACROS POUR POSER UN TEXTE
%--  (elles supposent que \tv@DX contient la bonne valeur au moment de l'appel)
\def\tabvarputhaut#1{%
\iftv@calcul
  \initY{#1}%
  \max{\tv@dimYHaut}{\tv@mydimen}%
\fi
\rput(\tv@DX,-0.5\tv@dimYHaut){#1}}

\def\tabvarputmilieu#1{%
\iftv@calcul
  \initY{#1}%
  \max{\tv@dimYMilieu}{\tv@mydimen}%
\fi%
\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by 0.5\tv@dimYMilieu
\rput(\tv@DX,-\tv@mydimen){#1}}

\def\tabvarputbas#1{%
\iftv@calcul
  \initY{#1}%
  \max{\tv@dimYBas}{\tv@mydimen}%
\fi%
\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by \tv@dimYMilieu\advance\tv@mydimen by 0.5\tv@dimYBas
\rput(\tv@DX,-\tv@mydimen){#1}}

%-------------- MACROS POUR LES TRAITS VERTICAUX
% (elles supposent que \tv@DX contient la bonne valeur au moment de l'appel)
%
%-- traits verticaux simples
\def\traithaut{\psline(\tv@DX,0)(\tv@DX,-\tv@dimYHaut)}

\def\traitmilieu{\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu
\psline(\tv@DX,-\tv@dimYHaut)(\tv@DX,-\tv@mydimen)}

\def\traitbas{\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu
\dimen100=\tv@mydimen\advance\tv@mydimen by\tv@dimYBas
\psline(\tv@DX,-\dimen100)(\tv@DX,-\tv@mydimen)}

%-- doubles traits verticaux
\def\doubletraithaut{\psline[doubleline=true,doublesep=1pt](\tv@DX,0)(\tv@DX,-\tv@dimYHaut)}

\def\doubletraitmilieu{\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu
\psline[doubleline=true,doublesep=1pt](\tv@DX,-\tv@dimYHaut)(\tv@DX,-\tv@mydimen)}

\def\doubletraitbas{\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu
\dimen100=\tv@mydimen\advance\tv@mydimen by\tv@dimYBas
\psline[doubleline=true,doublesep=1pt](\tv@DX,-\dimen100)(\tv@DX,-\tv@mydimen)}

%-- trait simple, occupant toute la hauteur
\def\trait{\traithaut\traitmilieu\traitbas}

%-- trait double, occupant toute la hauteur
\def\dbt{\doubletraithaut\doubletraitmilieu\doubletraitbas}

%-------------- MACROS POUR LES FLÈCHES
%-- flèche montante (au milieu)
\def\fm{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-\tv@mydimen)(0.9\tv@dimX,-\tv@dimYHaut)}\hfil}}

%-- flèche descendante (au milieu)
\def\fd{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-\tv@dimYHaut)(0.9\tv@dimX,-\tv@mydimen)}\hfil}}

%-- flèche horizontale en haut
\def\fhh{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-0.5\tv@dimYHaut)(0.9\tv@dimX,-0.5\tv@dimYHaut)}\hfil}}

%-- flèche horizontale au milieu
\def\fhm{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by 0.5\tv@dimYMilieu
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-\tv@mydimen)(0.9\tv@dimX,-\tv@mydimen)}\hfil}}

%-- flèche horizontale en bas
\def\fhb{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu\advance\tv@mydimen by0.5\tv@dimYBas
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-\tv@mydimen)(0.9\tv@dimX,-\tv@mydimen)}\hfil}}


%-- flèche montante en partie basse
\def\fmb{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu\advance\tv@mydimen by 0.5\tv@dimYBas
\tv@mydimendeux=\tv@dimYHaut\advance\tv@mydimendeux by 0.5\tv@dimYMilieu
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-\tv@mydimen)(0.9\tv@dimX,-\tv@mydimendeux)}\hfil}}

%-- flèche descendante en partie basse
\def\fdb{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu\advance\tv@mydimen by 0.5\tv@dimYBas
\tv@mydimendeux=\tv@dimYHaut\advance\tv@mydimendeux by 0.5\tv@dimYMilieu
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-\tv@mydimendeux)(0.9\tv@dimX,-\tv@mydimen)}\hfil}}

%-- flèche montante en partie haute
\def\fmh{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@mydimen=0.5\tv@dimYHaut\tv@mydimendeux=\tv@dimYHaut\advance\tv@mydimendeux by 0.5\tv@dimYMilieu
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-\tv@mydimendeux)(0.9\tv@dimX,-\tv@mydimen)}\hfil}}

%-- flèche descendante en partie haute
\def\fdh{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi
\tv@mydimen=0.5\tv@dimYHaut\tv@mydimendeux=\tv@dimYHaut\advance\tv@mydimendeux by 0.5\tv@dimYMilieu
\tv@dimX=\tv@Xdim\advance\tv@dimX by -\tv@DX %-- tv@dimX = ce qui reste à droite de DX
\hbox to\tv@Xdim{\rput(\tv@DX,0){\psline{->}(-0.9\tv@DX,-\tv@mydimen)(0.9\tv@dimX,-\tv@mydimendeux)}\hfil}}


%-- MACROS SIMPLIFIÉES POUR LES TEXTES (compatibilité avec mes anciennes macros)
%-- texte au milieu
\def\tx#1{%
\iftv@calcul
  \GererX{$\dsp#1$}%
  \GererDXSimple{$\dsp#1$}%
\fi
\hbox to \tv@Xdim{\tabvarputmilieu{$\dsp #1$}\hfil}%
}

%-- texte en haut
\def\txh#1{%
\iftv@calcul
  \GererX{$\dsp#1$}%
  \GererDXSimple{$\dsp#1$}%
\fi
\hbox to\tv@Xdim{\tabvarputhaut{$\dsp #1$}\hfil}%
}

%-- texte en bas
\def\txb#1{%
\iftv@calcul
  \GererX{$\dsp#1$}%
  \GererDXSimple{$\dsp#1$}%
\fi
\hbox to\tv@Xdim{\tabvarputbas{$\dsp#1$}\hfil}%
}

%-- texte milieu + trait
\def\txt#1{%
\iftv@calcul
  \GererX{$\dsp#1$}%
  \GererDXSimple{$\dsp#1$}%
\fi
\hbox to\tv@Xdim{\traithaut\tabvarputmilieu{$\dsp #1$}\traitbas\hfil}%
}

%-- texte haut + trait
\def\txht#1{%
\iftv@calcul
  \GererX{$\dsp#1$}%
  \GererDXSimple{$\dsp#1$}%
\fi
\hbox to\tv@Xdim{\tabvarputhaut{$\dsp #1$}\traitmilieu\traitbas\hfil}%
}

%--texte bas + trait
\def\txbt#1{%
\iftv@calcul
  \GererX{$\dsp#1$}%
  \GererDXSimple{$\dsp#1$}%
\fi
\hbox to\tv@Xdim{\traithaut\traitmilieu\tabvarputbas{$\dsp #1$}\hfil}%
}

%-- Texte pour la première ligne
\def\xt#1{%
\iftv@calcul
  \GererX{$\dsp#1$}%
  \GererDXSimple{$\dsp#1$}%
\fi
\hbox to\tv@Xdim{\tabvarputmilieu{$\dsp#1$}\traitbas\hfil}%
}

%--Trait double + texte écrit en haut
\def\xdbt#1{%
\iftv@calcul
  \GererX{$\dsp#1$}%
  \GererDXSimple{$\dsp#1$}%
\fi
\hbox to\tv@Xdim{\tabvarputmilieu{$\dsp#1$}\doubletraitbas\hfil}%
}

%-- Trait double + texte à gauche en haut(#1) et texte à droite en bas(#2)
\def\txdbthb#1#2{%
\iftv@calcul
  \initY{$\dsp #1$}\max{\tv@dimYHaut}{\tv@mydimen}%
   \initY{$\dsp #2$}\max{\tv@dimYBas}{\tv@mydimen}%
  %-- calcul et gestion de DX
  \initx{$\dsp#1$}\advance\tv@mydimen by 3 pt\relax
  \GererDXDimension{\tv@mydimen}%
  %-- calcul et gestion de la largeur totale
  \initx{$\dsp#1$}\max{\tv@mydimen}{\tv@DX}%
  \global\advance\tv@mydimen by 3pt\global\tv@dimX=\tv@mydimen
  \initx{$\dsp#2$}\global\advance\tv@mydimen by\tv@dimX
  \GererXDimension{\tv@mydimen}%
\fi%
%-- construction du texte + trait double
\hbox to\tv@Xdim{%
\rput[r](\tv@DX,0){\rput[r](-3pt,-0.5\tv@dimYHaut){$\dsp#1$}}%
%
\dbt
 %
 \tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by \tv@dimYMilieu\advance\tv@mydimen by 0.5\tv@dimYBas
 \rput[l](\tv@DX,0){\rput[l](3pt,-\tv@mydimen){$\dsp #2$}}%
 \hfil}%
}

%-- Trait double + texte à gauche en haut(#1) et texte à droite en haut(#2)
\def\txdbthh#1#2{%
\iftv@calcul
  \initY{$\dsp #1$}\max{\tv@dimYHaut}{\tv@mydimen}%
  \initY{$\dsp #2$}\max{\tv@dimYHaut}{\tv@mydimen}%
  %-- calcul et gestion de DX
  \initx{$\dsp#1$}\advance\tv@mydimen by 3 pt\relax
  \GererDXDimension{\tv@mydimen}%
  %-- calcul et gestion de la largeur totale
  \initx{$\dsp#1$}\max{\tv@mydimen}{\tv@DX}%
  \global\advance\tv@mydimen by 3pt\global\tv@dimX=\tv@mydimen
  \initx{$\dsp#2$}\global\advance\tv@mydimen by\tv@dimX
  \GererXDimension{\tv@mydimen}%
\fi%
\hbox to\tv@Xdim{%
 \rput[r](\tv@DX,0){\rput[r](-3pt,-0.5\tv@dimYHaut){$\dsp#1$}}%
 %
\dbt
 %
 \rput[l](\tv@DX,0){\rput[l](3pt,-0.5\tv@dimYHaut){$\dsp #2$}}
 \hfil}%
}%


%-- Trait double + texte à gauche en bas (#1) et texte à droite en haut(#2)
\def\txdbtbh#1#2{%
\iftv@calcul
  \initY{$\dsp #1$}\max\tv@dimYBas\tv@mydimen%
  \initY{$\dsp #2$}\max\tv@dimYHaut\tv@mydimen%
  %-- calcul et gestion de DX
  \initx{$\dsp#1$}\advance\tv@mydimen by 3 pt\relax
  \GererDXDimension{\tv@mydimen}%
  %-- calcul et gestion de la largeur totale
  \initx{$\dsp#1$}\max{\tv@mydimen}{\tv@DX}%
  \global\advance\tv@mydimen by 3pt\global\tv@dimX=\tv@mydimen
  \initx{$\dsp#2$}\global\advance\tv@mydimen by\tv@dimX
  \GererXDimension{\tv@mydimen}%
\fi%
\hbox to\tv@Xdim{%
 \tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by \tv@dimYMilieu\advance\tv@mydimen by 0.5\tv@dimYBas
 \rput[r](\tv@DX,0){\rput[r](-3pt,-\tv@mydimen){$\dsp#1$}}%
 %
\dbt
 %
 \rput[l](\tv@DX,0){\rput[l](3pt,-0.5\tv@dimYHaut){$\dsp #2$}}
 \hfil}%
}%

%-- Trait double + texte à gauche en bas(#1) et texte à droite en bas(#2)
\def\txdbtbb#1#2{%
\iftv@calcul%
  \initY{$\dsp #1$}\max{\tv@dimYBas}{\tv@mydimen}%
  \initY{$\dsp #2$}\max{\tv@dimYBas}{\tv@mydimen}%
  %-- calcul et gestion de DX
  \initx{$\dsp#1$}\advance\tv@mydimen by 3 pt%
  \GererDXDimension{\tv@mydimen}%
  %-- calcul et gestion de la largeur totale
  \initx{$\dsp#1$}\max{\tv@mydimen}{0.90909\tv@DX}%-- reprendre la bonne valeur de DX qui a été multiplié par 1.1
  \global\advance\tv@mydimen by 3pt\global\tv@dimX=\tv@mydimen%
  \initx{$\dsp#2$}\global\advance\tv@mydimen by\tv@dimX%
  \GererXDimension{\tv@mydimen}%
\fi%
\hbox to\tv@Xdim{%
 \tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu\advance\tv@mydimen by 0.5\tv@dimYBas\relax%
 \rput[r](\tv@DX,0){\rput[r](-3pt,-\tv@mydimen){$\dsp#1$}}%
 %
\dbt
 %
 \tv@mydimen=\tv@dimYHaut\advance\tv@mydimen by\tv@dimYMilieu\advance\tv@mydimen by 0.5\tv@dimYBas\relax
 \rput[l](\tv@DX,0){\rput[l](3pt,-\tv@mydimen){$\dsp #2$}}%
 \hfil}%
}%

%-- Griser une case
\def\grise{%
\iftv@calcul
  \GererXDimension{\tabdim}%
  \GererDXDimension{0.5\tabdim}%
\fi%
\hbox to\tv@Xdim{\psframe[linecolor=gristabvar,fillstyle=solid,fillcolor=gristabvar](0,0)(\tv@Xdim,-\tv@YTotal)\hfil}}


%-- MACROS MANIPULATION DES DONNÉES

%-- Repiqué dans le TeXBook page 378 : list macro, légèrement modifié.
\toksdef\ta=0 \toksdef\tb=2

%-- ajoute un item à droite de la liste : #1 = item, #2 = liste
\long\def\rightappenditem#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}%
 \xdef#2{\the\tb\the\ta}}

%-- ajoute un item à gauche de la liste : #1 = item, #2 = liste
\long\def\leftappenditem#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}%
\xdef#2{\the\ta\the\tb}}

%-- extrait l'item de gauche de la liste et ampute celle-ci. #1 = liste, #2 = macro qui va
%   recevoir l'item extrait.
\def\lop#1\to#2{\expandafter\lopoff#1\lopoff#1#2}
\long\def\lopoff\\#1#2\lopoff#3#4{\gdef#4{#1}\gdef#3{#2}}


%-- On démarre avec une liste vide
%-- \listeY est une macro qui contiendra les dimensions, sous la forme :
%   \\{<YHaut 1>}\\{<YMilieu 1>}\\{<YBas 1>}\\{<YHaut 2>}...\\{<YBas n>}
%
%-- \listeX est une macro qui contiendra les dimensions, sous la forme :
%   \\{<Xgauche 1>}\\{<XMilieu 1>}\\{<XDroite 1>}\\{<XGauche 2>}...\\{<XDroite n>}
\def\clearListes{\gdef\listeY{}\gdef\listeX{}\gdef\listeDX{}}


%-- Sauvegarde des trois hauteurs
\def\savedimsY{%
  \expandafter\rightappenditem\the\tv@dimYHaut\to\listeY
  \expandafter\rightappenditem\the\tv@dimYMilieu\to\listeY
  \expandafter\rightappenditem\the\tv@dimYBas\to\listeY}


%-- Lecture des trois hauteurs + ajout de blanc + initialisation de \tv@YTotal
\def\litY{%
 \lop\listeY\to\a \tv@dimYHaut=\a
 \lop\listeY\to\a \tv@dimYMilieu=\a
 \lop\listeY\to\a \tv@dimYBas=\a
 \global\advance\tv@dimYHaut by 2\tabblanc
 \global\advance\tv@dimYMilieu by 2\tabblanc
 \global\advance\tv@dimYBas by 2\tabblanc
 \calculeYTotal}

%-- Ajout d'une dimension X à listeX
\def\ajouteX#1{%
  \expandafter\rightappenditem\the #1\to\listeX}

%-- Ajout d'une dimension X à listeX (à gauche => initialisation)
\def\ajouteXAGauche#1{%
  \expandafter\leftappenditem\the #1\to\listeX}


%-- Extrait la dimension X de gauche de \listeX et la stocke dans \tv@Xdim
\def\extraitX{\lop\listeX\to\a\tv@Xdim=\a}


%-- Ajout d'une dimension dx à listeDX
\def\ajouteDX#1{%
  \expandafter\rightappenditem\the #1\to\listeDX}

%-- Ajout d'une dimension dx à listeDX (à gauche => initialisation)
\def\ajouteDXAGauche#1{%
  \expandafter\leftappenditem\the #1\to\listeDX}


%-- Extrait la dimension dx de gauche de \listeDX et la stocke dans \tv@DX
\def\extraitDX{\lop\listeDX\to\a\tv@DX=\a}



%-- Macro juste pour initialiser \listeX et \listeDX avec le bon nombre de champs
\def\initListeXListeDX#1{%
\global\tv@countLigne=0
\setbox150=\vbox{\halign{%
\global\advance\tv@countLigne by 1
\ifnum\tv@countLigne=1
  \tv@mydimen=0pt
  \ajouteXAGauche{\tv@mydimen}%
  \ajouteDXAGauche{\tv@mydimen}%
\fi
##\hfil\vrule&&%
\hfil
\ifnum\tv@countLigne=1
  \tv@mydimen=0pt
  \ajouteXAGauche{\tv@mydimen}%
  \ajouteDXAGauche{\tv@mydimen}%
\fi
##\hfil\cr%
#1}}}


%-- MACRO PRINCIPALE : TRACÉ DU TABLEAU OU SIMPLE CALCUL DES HAUTEURS
\def\TABVAR#1{%
\vbox{\vglue\smallskipamount\nobreak%
{\offinterlineskip\everycr{\noalign{\hrule}}%
\iftv@calcul
\else
  \litY
\fi%-- lecture du premier champ (bidon : on le saute)
\hbox{\vrule\vbox{\halign{%
\iftv@calcul
  \savedimsY
  \setY{0pt}{0pt}{0pt}%-- Mode calcul : sauver les dimensions et remettre à zéro
\else
  \litY%-- Mode tracé : récupérer les dimensions et calcul de \tv@YTotal
\fi
\vrule height 0pt depth \tv@YTotal width 0pt\extraitX\extraitDX##\ajouteX{\tv@Xdim}\ajouteDX{\tv@DX}%
\vrule&&%
\extraitX\extraitDX##\ajouteX{\tv@Xdim}\ajouteDX{\tv@DX}\cr%
#1}}\vrule}}
\iftv@calcul
  \savedimsY%-- dernière ligne : on sauve les dimensions
\fi
\medbreak%
}}




%--------------- LA MACRO FINALE POUR FAIRE UN TABLEAU DE VARIATIONS
%
\def\tabvar#1{{\clearListes\initListeXListeDX{#1}\tv@calcultrue%
\psset{linewidth=.4pt}%-- fixer la largeur des lignes...
\setbox150=\hbox{\TABVAR{#1}}\tv@calculfalse\TABVAR{#1}}}


\catcode`\@=12

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%         FIN DES MACROS POUR TABLEAU DE VARIATION
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%% Local Variables:
%%% mode: plain-tex
%%% TeX-master: t
%%% End:


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 7.2 - HermiteDDL %%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{ifthen}
\usepackage{fp}
\usepackage{pstricks-add}
%% macro trace tangente
\def\traceTangente(#1,#2,#3,#4){%
\ifthenelse{\lengthtest{#4pt>0pt}}{\FPeval\DemiTangenteV{(#3)*(#4)}
\FPeval\TangentXa{(#1)-(#4)}
\FPeval\TangentXb{(#1)+(#4)}
\FPeval\TangentYa{(#2)-(\DemiTangenteV)}
\FPround\TangentYa\TangentYa{3}
\FPeval\TangentYb{(#2)+(\DemiTangenteV)}
\FPround\TangentYb\TangentYb{3}
\psline[linestyle=dashed]{<->}(\TangentXa,\TangentYa)(\TangentXb,\TangentYb)}{}}
\makeatletter
%% macro interpolation
\def\Interpolation(#1,#2,#3)(#4,#5,#6){%
\edef\PolyInterp{(x+(-1)*(#4))^2*((1+(-2)*(x+(-1)*(#1))*(#1+(-1)*
(#4))/((#1+(-1)*(#4))^2))*#2+(x+(-1)*(#1))*#3)/((#1+(-1)*(#4))^2)+(x+
(-1)*(#1))^2*((1+(-2)*(x+(-1)*(#4))*(#4+(-1)*(#1))/((#1+(-1)*(#4))^2))
*#5+(x+(-1)*(#4))*#6)/((#1+(-1)*(#4))^2)}%
\psplot[algebraic=true]{#1}{#4}{\PolyInterp}}
%% la	macro principale
\def\HermiteDDL(#1,#2,#3,#4){\def\Hermite@xa{#1}\def\Hermite@ya{#2}\def\Hermite@za{#3}
%\psdot(#1,#2)
\traceTangente(#1,#2,#3,#4)\Hermite@next}

\def\Hermite@next{\@ifnextchar ({\Hermite@job}{\Hermite@end}}

\def\Hermite@job(#1,#2,#3,#4){%
%\psdot[dotstyle=x](#1,#2)
\Interpolation(\Hermite@xa,\Hermite@ya,\Hermite@za)(#1,#2,#3)
\def\Hermite@xa{#1}\def\Hermite@ya{#2}\def\Hermite@za{#3}
\traceTangente(#1,#2,#3,#4)\Hermite@next}
\def\Hermite@end{}

\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 7.3 - HachuresDDL %%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{ifthen}
\usepackage{fp}
\FPmessagesfalse
%% macro récupérant les coordonnées de la fenêtre pstricks
%% (JC Charpentier sur fr.comp.text.tex)
\makeatletter
\makeatletter
\newcommand\getcoor{%
   \expandafter\get@coor\pic@coor
}

\def\get@coor(#1,#2)(#3,#4)(#5,#6){%
   \ifdim#3sp<#5sp
     \def\xmin{#3}%
     \def\xmax{#5}%
   \else
     \def\xmin{#5}%
     \def\xmax{#3}%
   \fi
   \ifdim#4sp<#6sp
     \def\ymin{#4}%
     \def\ymax{#6}%
   \else
     \def\ymin{#6}%
     \def\ymax{#4}%
   \fi

}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\demiplanX}[5][gray]{%
\getcoor
%\ifthenelse{#3=0}{%
\ifthenelse{\lengthtest{#3pt=0pt}}{%
\FPeval\const{((#4)/(#2))}%
\FPround\const\const{2}%
\ifthenelse{\equal{#5}{+}}{%
\psline[linecolor=#1](\const,\ymin)(\const,\ymax)
\begin{psclip}{\pscustom[linestyle=none]{%
\psline[linecolor=#1](\const,\ymin)(\const,\ymax)
\psline(\xmax,\ymax)(\xmax,\ymin)}}
\psframe[fillstyle=vlines,hatchwidth=0.02,hatchsep=0.3,hatchangle=90,linestyle=none,hatchcolor=#1](\xmin,\ymin)(\xmax,\ymax)
\end{psclip}
}
{%
\psline[linecolor=#1](\const,\ymin)(\const,\ymax)
\begin{psclip}{\pscustom[linestyle=none]{%
\psline[linecolor=#1](\const,\ymin)(\const,\ymax)
\psline(\xmin,\ymax)(\xmin,\ymin)}}
\psframe[fillstyle=vlines,hatchwidth=0.02,hatchsep=0.3,hatchangle=90,linestyle=none,hatchcolor=#1](\xmin,\ymin)(\xmax,\ymax)
\end{psclip}
}}
{%
\FPeval\constanteM{((#2)*(-1))/(#3)}% le M
\FPround\constanteM\constanteM{3}%
\FPeval\constanteP{(#4)/(#3)}%  le P
\FPround\constanteP\constanteP{3}%
\FPeval\angleA{arctan(constanteM)*180/\FPpi}% l'angle des hachures
\FPround\angleA\angleA{2}%
\rput(-10,10){}
%\psplot{\xmin}{\xmax}{\constanteM*x+\constanteP}
\ifthenelse{\equal{#5}{+}}{%
\begin{psclip}{\pscustom[linestyle=none]{%
\psplot[linecolor=#1,algebraic=true]{\xmin}{\xmax}{\constanteM*x+\constanteP}
\psline(\xmax,\ymax)(\xmin,\ymax)}}
\psframe[fillstyle=vlines,hatchwidth=0.02,hatchsep=0.3,hatchangle=\angleA,linestyle=none,hatchcolor=#1](\xmin,\ymin)(\xmax,\ymax)
\end{psclip}
}
{%
\begin{psclip}{\pscustom[linestyle=none]{%
\psplot[linecolor=#1]{\xmin}{\xmax}{\constanteM*x+\constanteP}
\psline(\xmax,\ymin)(\xmin,\ymin)}}
\psframe[fillstyle=vlines,hatchwidth=0.02,hatchsep=0.3,hatchangle=\angleA,linestyle=none,hatchcolor=#1](\xmin,\ymin)(\xmax,\ymax)
\end{psclip}}
}
}
\newcommand{\demiplan}[5][gray]{
\getcoor
\demiplanX[#1]{#2}{#3}{#4}{#5}
%\ifthenelse{#3=0}{%
\ifthenelse{\lengthtest{#3pt=0pt}}{%
\FPeval\const{((#4)/(#2))}%
\FPround\const\const{2}%
\psline[linecolor=#1](\const,\ymin)(\const,\ymax)
}
{%
%\ifthenelse{#2=0}{
\ifthenelse{\lengthtest{#2pt=0pt}}{%
\FPeval\const{((#4)/(#3))}%
\FPround\const\const{2}%
\psline[linecolor=#1](\xmin,\const)(\xmax,\const)
}{%
\FPeval\constanteM{((#2)*(-1))/(#3)}% le M
\FPround\constanteM\constanteM{3}%
\FPeval\constanteP{(#4)/(#3)}%  le P
\FPround\constanteP\constanteP{3}%
 %%%% routine pour clipper la droite %%%%%%%%%%%%%
\FPset\XMIN{\xmin}
\FPset\XMAX{\xmax}
\FPset\YMIN{\ymin}
\FPset\YMAX{\ymax}
\FPset\un{#2}
\FPset\deux{#3}
\FPset\trois{#4}
\FPeval\YDgauche{(constanteM*XMIN)+ constanteP}
\FPeval\YDdroite{(constanteM*XMAX)+ constanteP}
\FPmin\YG{\YDgauche}{\YMAX}
\FPmax\Yg{\YG}{\YMIN}
\FPmin\YD{\YDdroite}{\YMAX}
\FPmax\Yd{\YD}{\YMIN}
\FPeval\Xg{((\trois)-(Yg*(\deux)))/\un}
\FPeval\Xd{((\trois)-(Yd*(\deux)))/\un}
\FPround\Xg\Xg{3}
\FPround\Xd\Xd{3}
\FPmin\bonXg{\Xd}{\Xg}
\FPmax\bonXd{\Xd}{\Xg}
\psplot[linecolor=#1,algebraic=true]{\bonXg}{\bonXd}{\constanteM*x+\constanteP}
%\edef\Droite{(\constanteM)*x+(\constanteP)}
%\begin{psclip}{\psline(\xmin,\ymin)(\xmax,\ymin)(\xmax,\ymax)(\xmin,\ymax)(\xmin,\ymin)}
%\psplot[algebraic=true]{\xmin}{\xmax}{\Droite}
%\end{psclip}
}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% 7.4 - SuitesRecV4 %%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{pstricks,pst-plot,pstricks-add}
\usepackage{pst-infixplot}
\usepackage{twoopt}
%#1 lettre désignant la suite, par défaut u
%#2 indice initial, par défaut 0
%#3 valeur du terme initial
%#4 expression de f
%#5 nombre de termes
\newcounter{INDICE}
\newcommandtwoopt{\SuiteRec}[5][u][0]{%
\getcoor % récupère les coordonnées de la fenêtres, merci JCC
\infixtoRPN{#4}
%\psplot{\xmin}{\xmax}{\RPN}
\SpecialCoor
   %\psaxes{->}(0,0)(\xmin,\ymin)(\xmax,\ymax)
   %\psplot[linewidth=1pt,algebraic,VarStep,VarStepEpsilon=0.0001]{\xmin}{\xmax}{#4}
   \psline[linestyle=dashed](\xmin,\xmin)(\xmax,\xmax)
   \pstVerb{ /x #3 def }
   \psline[ArrowInside=->,ArrowInsideNo=1](! x 0 )(! x \RPN )
   \psline[ArrowInside=->,ArrowInsideNo=1](! x \RPN )(! \RPN\space dup)
   \psline{-}(! x 0.015 )(! x 0.015 neg)
   %\rput(!x 0.08 neg ){$#1_{#2}$}
   \uput[d](!x 0){$#1_{#2}$}
   \pstVerb{ /x \RPN\space def}
   \setcounter{INDICE}{#2}
   \addtocounter{INDICE}{1}
   \multido{\I=\theINDICE+1}{#5}{%
     \psline{-}(! x 0.015 )(! x 0.015 neg)
     %\rput(!x 0.08 neg ){$#1_{\I}$}
     \uput[d](!x 0){$#1_{\I}$}
     \psline[linestyle=dotted](! x 0 )(! x x)
     \psline[ArrowInside=->,ArrowInsideNo=1](! x x )(! x \RPN )
     \psline[ArrowInside=->,ArrowInsideNo=1](! x \RPN )(! \RPN\space dup)
     \pstVerb{ /x \RPN\space def}
   }
}

\newcommandtwoopt{\SuiteRecbis}[5][u][0]{%
\getcoor % récupère les coordonnées de la fenêtres, merci JCC
\infixtoRPN{#4}
\SpecialCoor
   \psline[linestyle=dashed](\xmin,\xmin)(\xmax,\xmax)
   \pstVerb{ /x #3 def }
   \psline[ArrowInside=->,ArrowInsideNo=1](! x 0 )(! x \RPN )
   \psline[ArrowInside=->,ArrowInsideNo=1](! x \RPN )(! \RPN\space dup)
   \psline{-}(! x 0.015 )(! x 0.015 neg)
   \uput[d](!x 0){$#1_{#2}$}
   \pstVerb{ /x \RPN\space def}
   \setcounter{INDICE}{#2}
   \addtocounter{INDICE}{1}
   \multido{\I=\theINDICE+1}{#5}{%
     \psline{-}(! x 0.015 )(! x 0.015 neg)
     %\rput(!x 0.08 neg ){$#1_{\I}$}
     \uput[d](!x 0){$#1_{\I}$}
     \psline[linestyle=dotted](! x 0 )(! x x)
     \psline[ArrowInside=->,ArrowInsideNo=1](! x x )(! x \RPN )
     \psline[ArrowInside=->,ArrowInsideNo=1](! x \RPN )(! \RPN\space dup)
     \pstVerb{ /x \RPN\space def}
   }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pour la transformation vers pdf j'utilise les choix par défaut de Kile (Latex, DVItoPS, PStoPDF, ViewPDF)

Dernière modification par Major Grubert (Le 04/05/2010, à 11:32)


Pour en savoir plus sur Gnome Shell.
. HP Pavilion  : Windows / Ubuntu 19.10

Hors ligne

#6 Le 04/05/2010, à 17:34

Major Grubert

Re : Distorsion dvi/pdf avc Kile (du à la mise à jour) ?

Une info en plus : dès le .ps, le document est défectueux donc, s'il s'agît d'un problème de conversion, le problème est dans le DVItoPS et non dans le PStoPDF.


Pour en savoir plus sur Gnome Shell.
. HP Pavilion  : Windows / Ubuntu 19.10

Hors ligne

#7 Le 04/05/2010, à 18:40

Adhémar

Re : Distorsion dvi/pdf avc Kile (du à la mise à jour) ?

Bon:
1. J'ai essayé de copier ton code (j'ai ajouté \documentclass[a4paper,10pt]{book}, mais aucun problème. Bizarre, donc...
2. Si tu veux uniquement un pdf, tu devrais essayer de convertir directement en pdf via dvipdf (au lieu de dvips puis pstopdf)

Hors ligne

#8 Le 04/05/2010, à 21:31

Major Grubert

Re : Distorsion dvi/pdf avc Kile (du à la mise à jour) ?

Oui c'est bizarre, en plus j'utilise l'environnement corrige depuis lgtps sans problème.
Par contre il me faut faire un dvitops pui un pstopdf pour que les figures passent bien.
En attendant j'ai viré les environnements corrige de cette partie du document pour continuer à avancer.
Il n'y a donc plus d'urgence, mais le problème reste ouvert.

Dis-moi, Adhémar, tu utilises quelles versions (ubuntu, Kile) ?


Pour en savoir plus sur Gnome Shell.
. HP Pavilion  : Windows / Ubuntu 19.10

Hors ligne