Retour

Source de sections.tex

Fichier TeX
%% fichier 'sections.tex'
%% Ce fichier contient toutes les macros concernant les sections
%% et leur mise en page

\catcode`\@ = 11

% =============================== les parties =================================

\newskip \partieskip		\partieskip = 5pt plus 2pt minus 1pt
\newskip \partieskipafter	\partieskipafter = 1pt plus 3pt
\newskip \paragrapheskip	\paragrapheskip = 5pt plus 2pt minus 1pt
\newskip \paragrapheskipafter	\paragrapheskipafter = 1pt plus 3pt

%% encadre dans la marge, en gras
\def \llappartie#1{%
   \par \noindent
   \setbox0 = \hbox {\boxit {2pt}{\hbox {\bf \tvi height8pt depth0pt #1}}}%
   \llap {\unhbox0\ }%
   \ignorespaces
   \initexo }

%% centre sur la ligne, en gras
\def \simplecenterpartie#1{%
   \vskip \partieskip
   \centerline {%
      \twelvepoint
      \bf
      #1
      \unhbox \baremebox }
   \vskip \partieskipafter
   \initexo }

%% idem, + elabore
\def \centerpartie#1{%
   \par
%   \vskip 0pt plus 0,3\vsize 
   \penalty -50 
%   \vskip 0pt plus -0,3\vsize
%   \bigbreak
   \vskip \partieskip
   \centerline{%
      \twelvepoint 
      \bf 
      -- Partie #1 --
      \unhbox \baremebox }
   \penalty 10000
   \vskip \partieskipafter
   \initexo }

%% idem, avec 2 arguments
\def \doublecenterpartie#1#2{%
   \par
%   \vskip 0pt plus 0,3\vsize 
   \penalty -50 
%   \vskip 0pt plus -0,3\vsize
%   \bigbreak
   \vskip \partieskip
   \centerline{%
      \twelvepoint 
      \bf 
      -- Partie #1 --
      \unhbox \baremebox 
      {\sl #2}}
   \penalty 10000
   \vskip \partieskipafter
   \initexo }

%% discret
\def \discretpartie#1{%
   \initexo
   \par
   {\bf #1.}}

%% la partie par defaut
\let \partie \discretpartie

% =============================================================================

% =============================== les titres ==================================

%% aussi bizarre que cela puisse paraitre, je laisse la macro '\duree'
%% associee au titre
\newbox \dureebox 		
\def \cleardureebox {%
   \setbox \dureebox = \box \dureebox }
\cleardureebox

\def \duree#1{%
   \setbox \dureebox \hbox {\sevenrm \underbar {durée}~: #1}}

\newskip \titreskip		\titreskip = 10pt plus 10pt minus 10pt
\newskip \titreskipafter	\titreskipafter = 10pt plus 10pt minus 10pt
\newskip \stitreskip		\stitreskip = 5pt plus 5pt minus 5pt
\newskip \stitreskipafter	\stitreskipafter = 5pt plus 5pt minus 5pt
\newtoks \titrestyle 		\titrestyle = {\fourteenpoint \bf }

\def \titre#1{%
   \par
   \ifb@@kstyle
      \vskip \bookstyleskip 
      \penalty -500 
      \vskip -\bookstyleskip 
   \fi
   \bgroup                       % pour limiter la portee de la def de \\
      \def \\{%                  % commande qui est utilisee pour passer a la ligne dans un titre
         \hss
         \egroup                 % ferme la \hbox to \hsize en cours
         \hbox to \hsize \bgroup % et rouvre la suivante
         \the \titrestyle
         \hss} 
      \vskip 0pt plus 0,3\vsize 
      \penalty -250 
      \vskip 0pt plus -0,3\vsize
      \vskip \titreskip
      \hbox to \hsize \bgroup \hss \the \titrestyle #1 \hss \egroup
   \egroup          
   \par
   \nobreak
   \ifvoid \dureebox
      \else \line{\hfill \unhcopy \dureebox }
   \fi 
   \vskip \titreskipafter
   \nobreak }

\def \stitre#1{%
   \vskip \stitreskip
   \centerline {\stitrestyle {#1}}    
   \vskip \stitreskipafter }%

% =============================================================================

% ========================== macros de numerotation ===========================

%%%%% les variables et leurs initialisations %%%%%

\newcount \numno 
\def \clearnumno{%
   \global\numno = 0}
\clearnumno 

\newcount \alphno	
\def \clearalphno{%
   \global\alphno = `\a 
   \global\advance \alphno by -1}
\clearalphno

\newskip \itemnumskip		\itemnumskip = 0pt
\newskip \itemalphskip		\itemalphskip = 0pt
\newskip \itemalphnumskip	\itemalphnumskip = 0pt

%%%%% reglage du style d'affichage %%%%%

\def \numstyle#1{%
   {\bf #1.}}
\def \alphstyle#1{%
   {\sl \char #1\/})}

%%%%%  les macros de numerotation %%%%%
%% \def \initalphnum {%
%%    }
\def \initalph {%
   }
\def \initnum {%
   \clearalphno }

\def \num {%
   \initnum 
   \global \advance \numno by 1 
   \numstyle {\the \numno }}%
	%% \alph est en prévision du remaniement, ce n'est qu'une
	%% copie de \alphnum, mais elle permet de commencer à 
	%% essayer de coder de facon plus cohérente ...
	%%                             jp 31-05-96
\def \alph {%
   \initalph
   \global \advance \alphno by 1 
   \alphstyle {\alphno }}
\def \alphnum {%
   \num \ 
   \alph }
\def \itemnum {%
   \vskip \itemnumskip 
   \item {\num }}
\def \itemitemnum {%
   \vskip \itemnumskip 
   \itemitem {\num }}
\def \itemalph {%
   \vskip \itemalphskip 
   \item {\alph }}
\def \itemitemalph {%
   \vskip \itemalphskip 
   \itemitem {\alph }}
\def \itemalphnum {%
   \vskip \itemnumskip 
   \item {\num } \alph \ }
\def \itemitemalphnum {%
   \vskip \itemnumskip 
   \itemitem {\num \quad \alph }}
% =============================================================================


% =============================== les exercices ===============================
%
% ========= macros de section ==============
%% % =============== exo ===============
%% 
%% \exoskipafter=\medskipamount

\newskip \exoskip		\exoskip = 5pt plus 5pt minus 5pt
\newskip \exoskipafter          \exoskipafter = \medskipamount

\newbox \exobox

\newbox \titleexobox
\def \exotitle#1{%
   \setbox \titleexobox \hbox{#1}}

\newbox \baremebox
\def \clearbaremebox {%
   \setbox \baremebox = \box \baremebox }
\clearbaremebox
\def \bareme#1{%
   \setbox \baremebox = \hbox {({\sl #1 points\/ }) }}

\newcount \exono	
\def \clearexono {%
   \global \exono = 0} 		
\clearexono 

\def \initexo {%
   \clearnumno 
   \clearalphno }

\newif \ifwithexon@ % numérotation des exercices~?
\withexon@true      % oui, par défaut
\def \withexono {\withexon@true }
\def \withoutexono {\withexon@false }
%
\newif \ifwithexohe@d   % en-tete pour l'exercice~?
\withexohe@dtrue        % oui, par défaut
\def \withexohead {\withexohe@dtrue }
\def \withoutexohead {\withexohe@dfalse }
%
\newif \ifwithexob@dy   % corps de l'exercice~?
\withexob@dytrue        % oui, par défaut
\def \withexobody {\withexob@dytrue }
\def \withoutexobody {\withexob@dyfalse }

\def \exo#1{%
   \initexo 
   \ifwithexon@
      \advance \exono by 1 
   \fi
   \penalty -250
   \vskip \exoskip 
   \noindent 
   \ifwithexohe@d
      {\bf Exercice%
      \ifwithexon@
         \ \the\exono
      \fi
      ~: } 
      \ifvoid \baremebox
         \else \box \baremebox
      \fi 
      \ifvoid \titleexobox
         {\bf #1}
      \else 
         {\bf \box \titleexobox}
      \fi 
      \penalty 10000
      \vskip \exoskipafter
   \fi
   \setbox \exobox \vbox\bgroup}%
\def \finexo{%
   \par
   \egroup
   \ifwithexob@dy
      \unvbox \exobox
   \fi
   \penalty -250}

\def \Exo#1{%
   \initexo 
   \ifwithexon@
      \advance \exono by 1 
   \fi
   \penalty -250
   \vskip \exoskip 
   \noindent 
   \ifwithexohe@d
      \boxit {3pt}{{\bf Exercice%
      \ifwithexon@
         \ \the\exono
      \fi
      ~: } 
      \ifvoid \baremebox
         \else \box \baremebox
      \fi 
      \ifvoid \titleexobox
         {\bf #1}
      \else 
         {\bf \box \titleexobox}
      \fi }
      \penalty 10000
      \vskip \exoskipafter
   \fi
   \setbox \exobox \vbox\bgroup}%

% =============================================================================

% ============================= corrige des exos ==============================

%% \catcode`\@ = 11

\newif \ifwithcorrigb@dy   % corps de l'exercice~?
\withcorrigb@dytrue        % oui, par défaut
\def \withcorrigbody {\withcorrigb@dytrue }
\def \withoutcorrigbody {\withcorrigb@dyfalse }

%% ===== modif (30/11/98) ========
%% \def \withoutcorrigbody {\let \corrige \endinput }


\newskip \corrigskipafter \corrigskipafter = 3pt plus 3pt minus 1pt

\def \corrige{%
   \initexo
   \ifwithcorrigb@dy
	 \ifwithexob@dy
	    \centerline{\hbox to 50mm{\hrulefill}}
	    \vskip \corrigskipafter
	 \fi
   \else
	 \setbox0=\vbox
   \fi
   \bgroup}
\def \fincorrige{%
	 \centerline{\hbox to 50mm{\hrulefill}}
   \egroup}
% =============================================================================

% ========================= les exemples ======================================

\newcount \exempleno	
\def \clearexempleno{%
   \global\exempleno = 0}
\clearexempleno

\def \exemple#1{%
   \medbreak 
   \advance \exempleno by 1 
   \noindent 
   {\bf Exemple ({\oldstyle \the \exempleno }) . \sl #1} 
   \par 
   \nobreak 
   \smallskip 
   \begingroup 
   \parskip = 4 pt }

\def \finexemple {%
   \removelastskip 
   \par 
   \removelastskip 
   \hfill 
   \bull 
   \endgroup 
   \smallbreak }

% =============================================================================

% ============================ le bookstyle ===================================
%
\newif \ifb@@kstyle	% flag indiquant si on accepte les paragraphes
   			% en bas de page
\b@@kstylefalse		% oui par defaut
\newskip \bookstyleskip % le mini de bas de page autorise pour un
			% paragraphe
\bookstyleskip = 0.3\vsize
\def \bookstyle {%
   \footline = {\hss \tenrm \folio \hss }
   \b@@kstyletrue }
\def \onepagestyle {\b@@kstylefalse }

% =============================================================================

% ============================== les paragraphes ==============================

%%%%% les variables et leurs initialisations %%%%%

\newcount \parno 	
\def \clearparno {%
   \clearsparno 
   \parno = 0}

\newcount \sparno 	
\def \clearsparno {%
   \clearssparno 
   \sparno = 0}

\newcount \ssparno 	
\def \clearssparno{%
   \ssparno = 0}

%%%%% reglage du style d'affichage %%%%%

\def \paragraphestyle#1#2{%
   \noindent
   {\fourteenpoint 
   \bf #1.
   #2}}%
\def \sparagraphestyle#1#2#3{%
   \noindent
   {\twelvepoint 
   \bf #1.#2 -
   #3}}%
\def \ssparagraphestyle#1#2#3#4{%
   \noindent
   {\bf #1.#2.#3 -
   #4}}%

%%%%% les macro de paragraphe %%%%% 

\def \paragraphe#1{%
   \par
   \ifb@@kstyle
      \vskip \bookstyleskip 
      \penalty -500 
      \vskip -\bookstyleskip 
   \fi
   \vskip \paragrapheskip
   \clearsparno 
   \advance \parno by 1 
   \paragraphestyle {\the \parno }{#1}
   \par 
   \nobreak 
   \vskip \paragrapheskipafter }

\def \finparagraphe{%
   }%

\def \sparagraphe#1{%
   \par 
   \penalty -50
   \medskip
   \clearssparno 
   \advance \sparno by 1 
   \noindent 
   \sparagraphestyle {\the \parno }{\the \sparno }{#1}
   \par 
   \nobreak 
   \medskip }
\def \finsparagraphe {%
   }%
\def \ssparagraphe#1{%
   \par 
   \penalty -50
   \smallskip
   \advance \ssparno by 1 
   \noindent 
   \ssparagraphestyle {\the \parno }{\the \sparno }{\the \ssparno }{#1}
   \par 
   \nobreak 
   \medskip }
\def \ssfinparagraphe {%
   }%

% =============== les styles =================
%% \def \numstyle#1{%
%%    {\bf #1.}}%
%% \def \alphstyle#1{%
%%    {\sl \char #1\/})}%
%% \newtoks \titrestyle \titrestyle = {\fourteenpoint \bf}
%% \def \paragraphestyle#1#2{%
%%    \noindent
%%    {\fourteenpoint 
%%    \bf #1.
%%    #2}}%
%% \def \sparagraphestyle#1#2#3{%
%%    \noindent
%%    {\twelvepoint 
%%    \bf #1.#2 -
%%    #3}}%
%% \def \ssparagraphestyle#1#2#3#4{%
%%    \noindent
%%    {\bf #1.#2.#3 -
%%    #4}}%
%
% =============================================================================

% ============================== les remarques ================================

\def \remarque {%
   \medskip
   \item {}
   \begingroup 
   \narrower
   \narrower
   \eightpoint \rm
   {\bf Remarque}
   -- }
\def \finremarque {%
   \par
   \endgroup
   \medskip }

\catcode`\@ = 12